Sindbad~EG File Manager
{"version":3,"file":"sharing_cart.min.js","sources":["../src/sharing_cart.js"],"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 * Sharing Cart\n *\n * @package\n * @copyright Copyright (c) 2020 Open LMS (https://www.openlms.net)\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\n\nexport default class SharingCartForSnap {\n constructor(courseSections) {\n this.snapSpinner = '';\n this.courseSections = courseSections;\n }\n\n /**\n * Get a string from moodle\n * @param {String} identifier\n * @returns {String}\n */\n str = (identifier) => {\n return M.str.block_sharing_cart[identifier] || M.str.moodle[identifier];\n };\n /**\n * Sets a create command pointer\n * @param {string} create_command\n */\n setCreateCommand = (create_command) => {\n this.create_command = create_command;\n };\n /**\n * Create a custom command icon\n * @param {String} cssClass The css class for the icon\n * @param {String} title The title and tooltip for the icon\n * @param {String} imageUrl Image URL for the icon\n */\n create_special_activity_command = (cssClass, title, imageUrl) => {\n return $('<a href=\"javascript:void(0)\"/>')\n .addClass(cssClass)\n .addClass('dropdown-item menu-action cm-edit-action')\n .attr('title', title)\n .append(\n $('<img class=\"icon\"/>')\n .attr('alt', title)\n .attr('src', imageUrl)\n );\n };\n /**\n * Adds a spinner when necessary\n * @param {function} spinner\n */\n addSpinner = (spinner) => {\n if (this.snapSpinner) {\n this.snapSpinner.show();\n } else {\n this.snapSpinner = spinner;\n }\n };\n /**\n * Hides the spinner if exist\n */\n hideSpinner = () => {\n if (this.snapSpinner) {\n this.snapSpinner.hide();\n }\n };\n /**\n * Creates a custom modal when restoring a sharing cart activity/module\n * @param {Object} input\n */\n onRestore = (input) => {\n const restore_targets = input.restore_targets;\n const course = input.course;\n const param = input.param;\n const get_action_url = input.get_action_url;\n const ModalFactory = input.ModalFactory;\n const ModalEvents = input.ModalEvents;\n const id = input.id;\n\n var sectionsURLs = [];\n this.courseSections.forEach(function(section) {\n var urlArray = {\n 'directory': restore_targets.is_directory,\n 'course' : course.id,\n 'section' : section.num,\n 'sesskey' : M.cfg.sesskey\n };\n urlArray[param] = id;\n var url = get_action_url('restore', urlArray);\n\n var sectionName = null;\n if (section.name === null) {\n $('#chapters').find('.chapter-title').each(function() {\n var currSection = $(this).attr('href');\n if (currSection == '#section-'+section.num) {\n sectionName = $(this).text();\n }\n });\n } else {\n sectionName = section.name;\n }\n var sectionURL = {\n name : sectionName,\n url : url\n };\n sectionsURLs.push(sectionURL);\n });\n\n ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL,\n title: M.str.block_sharing_cart['restore'],\n body: ((sections) => {\n var s = M.str.block_sharing_cart['snap_dialog_restore'];\n // Create Select element.\n s += '<select id=\"select-dialog\" class=\"custom-select\">';\n for(var i = 0; i < sections.length; i++) {\n s += '<option value=\"' + sections[i].url + '\">' + sections[i].name + '</option>';\n }\n s += '</select> <br> <br>';\n return s;\n })(sectionsURLs)\n })\n .done(function(modal) {\n modal.show();\n modal.getRoot().on(ModalEvents.save, function() {\n window.location.href = $('#select-dialog').val();\n });\n modal.getRoot().on(ModalEvents.cancel, function() {\n modal.destroy();\n });\n });\n };\n\n /**\n *\n * @param {node} $activity\n * @param {object} iconBackup\n * @param {function} on_backup\n */\n add_backup_command = ($activity, iconBackup, on_backup) => {\n var $menu = $activity.find(\"ul[role='menu']\");\n\n if($menu.length)\n {\n var li = $menu.find('li').first().clone();\n var $backup = li.find('a').attr('title', this.str('backup'))\n .attr('href', 'javascript:void(0)'); //eslint-disable-line no-script-url\n var img = li.find('img');\n\n if (img.length) {\n li.find('img')\n .attr('alt', this.str('backup'))\n .attr('title', this.str('backup'))\n .attr('src', M.util.image_url(iconBackup.pix));\n } else {\n li.find('i')\n .attr('class', 'icon fa fa-upload')\n .attr('title', this.str('backup'))\n .attr('aria-label', this.str('backup'));\n }\n\n li.find('span').html(this.str('backup'));\n $menu.append(li);\n }\n else\n {\n var $backup = this.create_command(\"backup\");\n if ($('#page-course-view-tiles').length) {\n $menu = $activity.find('div[role=\"menu\"]');\n } else {\n $menu = $activity.find('div.snap-edit-more-dropdown ul.dropdown-menu');\n }\n if($menu.length)\n {\n const cssClass = iconBackup.css;\n const title = this.str('backup');\n const imageUrl = M.util.image_url(iconBackup.pix);\n $backup = this.create_special_activity_command(cssClass, title, imageUrl);\n\n if($menu.css(\"display\") === \"none\")\n {\n var $button = $menu.find('.editing_backup');\n if ($button.length == 0) {\n $menu.append($backup);\n $backup.append($(\"<span class='menu-action-text'/>\").append($backup.attr('title')));\n }\n }\n }\n else\n {\n $activity.find(\".commands\").append($backup);\n }\n }\n // Get activity name\n var activityClass = $activity[0].className;\n var modtype = activityClass.substr(activityClass.indexOf('modtype_') + 8);\n var activityName = this.str('activity_string');\n if (modtype !== 'label') {\n activityName = $('.activity#' + $activity[0].id)\n .find('.activityinstance p.instancename')\n .html();\n }\n\n $backup.click(function(e)\n {\n on_backup(e, activityName);\n });\n };\n\n snapFix = (input) => {\n const course = input.course;\n const iconBackup = input.iconBackup;\n const on_section_backup = input.on_section_backup;\n const on_backup = input.on_backup;\n const _this = this;\n\n if(course.is_frontpage)\n {\n if($('.sitetopic li.activity').length > 0)\n {\n var valid = $('.sitetopic li.activity').data('block-sharing-cart');\n if(valid !== 'done')\n {\n $('.sitetopic li.activity').each(function()\n {\n _this.add_backup_command($(this), iconBackup, on_backup);\n });\n $('.sitetopic li.activity').data(\"block-sharing-cart\", \"done\");\n }\n }\n if($('.block_site_main_menu').length > 0)\n {\n var valid = $('.block_site_main_menu .content > ul > li').data('block-sharing-cart');\n if(valid !== 'done')\n {\n $('.block_site_main_menu .content > ul > li').each(function()\n {\n _this.add_backup_command($(this), iconBackup, on_backup);\n });\n $('.block_site_main_menu .content > ul > li').data(\"block-sharing-cart\", \"done\");\n }\n }\n }\n else\n {\n if($('.course-content li.activity').length > 0)\n {\n var valid = $('.course-content li.activity').data('block-sharing-cart');\n if(valid !== 'done' || this.courseSections.length == 1)\n {\n $('.course-content li.activity').each(function()\n {\n _this.add_backup_command($(this), iconBackup, on_backup);\n });\n $('.course-content li.activity').data(\"block-sharing-cart\", \"done\");\n }\n }\n }\n\n if (M.cfg.theme !== 'snap') {\n let _this = this;\n $(\"li.section\").each(function () {\n var sectionID = $(this).find(\"div.content h3.sectionname span.inplaceeditable\").attr(\"data-itemid\");\n\n var $menu = $(this).find(\"ul[role='menu']\").first();\n\n if ($menu.length){\n var li = $menu.find('li').first().clone();\n var img = li.find('img');\n\n if (img.length) {\n img.attr('alt', _this.str('backup'))\n .attr('title', _this.str('backup'))\n .attr('src', M.util.image_url(iconBackup.pix, null));\n } else {\n li.find('i')\n .attr('class', 'icon fa fa-upload')\n .attr('title', _this.str('backup'))\n .attr('aria-label', _this.str('backup'));\n }\n\n li.find('span').html(_this.str('backup'));\n li.find('a').attr('href', 'javascript:void(0)'); //eslint-disable-line no-script-url\n\n $menu.append(li);\n\n li.find('a').click(function () {\n on_section_backup(sectionID);\n });\n }\n else {\n $menu = $(this).find(\"div[role='menu']\").first();\n\n var $backup = null;\n\n if ($menu.length) {\n const cssClass = iconBackup.css;\n const title = _this.str('backup');\n const imageUrl = M.util.image_url(iconBackup.pix);\n $backup = _this.create_special_activity_command(cssClass, title, imageUrl);\n $menu.append($backup.attr(\"role\", \"menuitem\"));\n\n if ($menu.css(\"display\") === \"none\") {\n $backup.append($(\"<span class='menu-action-text'/>\").append($backup.attr('title')));\n }\n }\n else {\n $backup = _this.create_command(\"backup\");\n $(this).find(\".commands\").append($backup);\n }\n\n $backup.click(function () {\n on_section_backup(sectionID);\n });\n }\n });\n } else {\n $.each($(\"a.snap-delete\"), function(i, val)\n {\n var sectionID = $(val).attr(\"href\").split('?')[1].split('&')[0].split('=')[1];\n var $link = $('<a/>').attr('class', 'snap-sharing-cart').attr('role', 'button').attr('id', sectionID);\n $link.attr('tabindex', '0').attr('title', 'Backup Section');\n var $button = $(val).parent().find('a.snap-sharing-cart');\n if ($button.length == 0) {\n $(val).parent().append($link);\n }\n });\n\n $('a.snap-sharing-cart').unbind().click(function () {\n const sectionId = $(this).attr('id');\n const section = _this.courseSections ? _this.courseSections.find(section => section['id'] === sectionId)\n : {num: 0, name: undefined};\n const sectionNumber = section['num'];\n const courseId = course.id;\n const sectionName = section['name'] === null ? undefined : section['name'];\n on_section_backup(sectionId, sectionNumber, courseId, sectionName);\n });\n }\n };\n}"],"names":["constructor","courseSections","identifier","M","str","block_sharing_cart","moodle","create_command","cssClass","title","imageUrl","addClass","attr","append","spinner","this","snapSpinner","show","hide","input","restore_targets","course","param","get_action_url","ModalFactory","ModalEvents","id","sectionsURLs","forEach","section","urlArray","is_directory","num","cfg","sesskey","url","sectionName","name","find","each","text","sectionURL","push","create","type","types","SAVE_CANCEL","body","sections","s","i","length","done","modal","getRoot","on","save","window","location","href","val","cancel","destroy","$activity","iconBackup","on_backup","$menu","li","first","clone","$backup","util","image_url","pix","html","css","create_special_activity_command","activityClass","className","modtype","substr","indexOf","activityName","click","e","on_section_backup","_this","is_frontpage","data","add_backup_command","theme","sectionID","img","split","$link","parent","unbind","sectionId","undefined","sectionNumber","courseId"],"mappings":"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"}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists