Sindbad~EG File Manager
{"version":3,"file":"course_modules.min.js","sources":["../src/course_modules.js"],"sourcesContent":["/**\n * 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 * @package\n * @author Guy Thomas\n * @copyright Copyright (c) 2016 Open LMS\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * Course main functions.\n */\ndefine(\n [\n 'jquery',\n 'core/ajax',\n 'theme_snap/util',\n 'theme_snap/ajax_notification',\n 'core/str',\n 'core/event'\n ],\n function($, ajax, util, ajaxNotify, str, Event) {\n\n /**\n * Module has been completed.\n * @param {jQuery} module\n * @param {string} completionhtml\n */\n var updateModCompletion = function(module, completionhtml) {\n // Update completion tracking icon.\n module.find('.snap-asset-completion-tracking').html(completionhtml);\n module.find('.btn-link').focus();\n $(document).trigger('snapModuleCompletionChange', module);\n };\n\n /**\n * Listen for manual completion toggle.\n */\n var listenManualCompletion = function() {\n $('.course-content').on('submit', 'form.togglecompletion', function(e) {\n e.preventDefault();\n var form = $(this);\n\n if (form.hasClass('ajaxing')) {\n // Request already in progress.\n return;\n }\n\n var id = $(form).find('input[name=\"id\"]').val();\n var completionState = $(form).find('input[name=\"completionstate\"]').val();\n var module = $(form).parents('li.snap-asset').first();\n form.addClass('ajaxing');\n\n ajax.call([\n {\n methodname: 'theme_snap_course_module_completion',\n args: {id: id, completionstate: completionState},\n done: function(response) {\n\n ajaxNotify.ifErrorShowBestMsg(response).done(function(errorShown) {\n form.removeClass('ajaxing');\n if (errorShown) {\n return;\n } else {\n // No errors, update completion html for this module instance.\n updateModCompletion(module, response.completionhtml);\n }\n });\n },\n fail: function(response) {\n ajaxNotify.ifErrorShowBestMsg(response).then(function() {\n form.removeClass('ajaxing');\n });\n }\n }\n ], true, true);\n\n });\n };\n\n /**\n * Reveal page module content.\n *\n * @param {jQuery} pageMod\n * @param {string} completionHTML - updated completionHTML\n */\n var revealPageMod = function(pageMod, completionHTML) {\n pageMod.find('.pagemod-content').slideToggle(\"fast\", function() {\n // Animation complete.\n if (pageMod.is('.state-expanded')) {\n pageMod.attr('aria-expanded', 'true');\n pageMod.find('.pagemod-content').focus();\n\n } else {\n pageMod.attr('aria-expanded', 'false');\n pageMod.focus();\n }\n\n });\n\n if (completionHTML) {\n updateModCompletion(pageMod, completionHTML);\n }\n };\n\n /**\n * Page mod toggle content.\n */\n var listenPageModuleReadMore = function() {\n var pageToggleSelector = \".pagemod-readmore,.pagemod-content .snap-action-icon\";\n $(document).on(\"click\", pageToggleSelector, function(e) {\n var pageMod = $(this).closest('.modtype_page');\n util.scrollToElement(pageMod);\n var isexpanded = pageMod.hasClass('state-expanded');\n pageMod.toggleClass('state-expanded');\n\n var readmore = pageMod.find('.pagemod-readmore');\n\n var pageModContent = pageMod.find('.pagemod-content');\n if (pageModContent.data('content-loaded') == 1) {\n // Content is already available so reveal it immediately.\n revealPageMod(pageMod);\n var readPageUrl = M.cfg.wwwroot + '/theme/snap/rest.php?action=read_page&contextid=' +\n readmore.data('pagemodcontext');\n if (!isexpanded) {\n $.ajax({\n type: \"GET\",\n async: true,\n url: readPageUrl,\n success: function(data) {\n ajaxNotify.ifErrorShowBestMsg(data).done(function(errorShown) {\n if (errorShown) {\n return;\n } else {\n // No errors, update completion html for this page mod instance.\n updateModCompletion(pageMod, data.completionhtml);\n }\n });\n }\n });\n }\n } else {\n if (!isexpanded) {\n // Content is not available so request it.\n var loadingStrPromise = str.get_string('loading', 'theme_snap');\n $.when(loadingStrPromise).done(function(loadingStr) {\n pageMod.find('.contentafterlink').prepend(\n '<div class=\"ajaxstatus alert alert-info\">' + loadingStr + '</div>'\n );\n });\n var getPageUrl = M.cfg.wwwroot + '/theme/snap/rest.php?action=get_page&contextid=' +\n readmore.data('pagemodcontext');\n $.ajax({\n type: \"GET\",\n async: true,\n url: getPageUrl,\n success: function(data) {\n ajaxNotify.ifErrorShowBestMsg(data).done(function(errorShown) {\n if (errorShown) {\n return;\n } else {\n // No errors, reveal page mod.\n pageModContent.find('#pagemod-content-container').prepend(data.html);\n pageModContent.data('content-loaded', 1);\n pageMod.find('.contentafterlink .ajaxstatus').remove();\n revealPageMod(pageMod, data.completionhtml);\n Event.notifyFilterContentUpdated('.pagemod-content');\n }\n });\n }\n }).then(\n ()=>{\n $(document).trigger('snap-course-content-loaded');\n }\n );\n } else {\n revealPageMod(pageMod);\n }\n }\n\n e.preventDefault();\n });\n };\n\n /**\n * Light box media.\n * @param {str|jQuery} resourcemod\n */\n var lightboxMedia = function(resourcemod) {\n /**\n * Ensure lightbox container exists.\n *\n * @param {string} appendto\n * @param {function} onclose\n * @returns {*|jQuery|HTMLElement}\n */\n var lightbox = function(appendto, onclose) {\n var lbox = $('#snap-light-box');\n if (lbox.length === 0) {\n $(appendto).append('<div id=\"snap-light-box\" tabindex=\"-1\">' +\n '<div id=\"snap-light-box-content\"></div>' +\n '<a id=\"snap-light-box-close\" class=\"float-right snap-action-icon snap-icon-close\" href=\"#\">' +\n '<small>Close</small>' +\n '</a>' +\n '</div>');\n $('#snap-light-box-close').click(function(e) {\n e.preventDefault();\n e.stopPropagation();\n lightboxclose();\n if (typeof (onclose) === 'function') {\n onclose();\n }\n });\n lbox = $('#snap-light-box');\n }\n return lbox;\n };\n\n /**\n * Close lightbox.\n */\n var lightboxclose = function() {\n var lbox = lightbox();\n lbox.remove();\n };\n\n /**\n * Open lightbox and set content if necessary.\n *\n * @param {string} content\n * @param {*} appendto\n * @param {function} onclose\n */\n var lightboxopen = function(content, appendto, onclose) {\n appendto = appendto ? appendto : $('body');\n var lbox = lightbox(appendto, onclose);\n if (content) {\n var contentdiv = $('#snap-light-box-content');\n contentdiv.html('');\n contentdiv.append(content);\n }\n lbox.addClass('state-visible');\n };\n\n var appendto = $('body');\n var spinner = '<div class=\"loadingstat three-quarters\">' +\n Y.Escape.html(M.util.get_string('loading', 'theme_snap')) +\n '</div>';\n lightboxopen(spinner, appendto, function() {\n $(resourcemod).attr('tabindex', '-1').focus();\n $(resourcemod).removeAttr('tabindex');\n });\n\n $.ajax({\n type: \"GET\",\n async: true,\n url: M.cfg.wwwroot + '/theme/snap/rest.php?action=get_media&contextid=' + $(resourcemod).data('modcontext'),\n success: function(data) {\n ajaxNotify.ifErrorShowBestMsg(data).done(function(errorShown) {\n if (errorShown) {\n return;\n } else {\n // No errors, open lightbox and update module completion.\n lightboxopen(data.html, appendto);\n updateModCompletion($(resourcemod), data.completionhtml);\n $(document).trigger('snapContentRevealed');\n $('#snap-light-box').focus();\n }\n });\n }\n });\n\n };\n\n return {\n\n init: function() {\n\n // Listeners.\n listenPageModuleReadMore();\n listenManualCompletion();\n\n // Add toggle class for hide/show activities/resources - additional to moodle adding dim.\n $(document).on(\"click\", '[data-action=hide],[data-action=show],[data-action=stealth]', function() {\n if ($(this).attr('data-action') === 'hide' ) {\n $(this).closest('li.activity').addClass('draft');\n $(this).closest('li.activity').removeClass('stealth');\n } else if ($(this).attr('data-action') === 'stealth') {\n $(this).closest('li.activity').removeClass('draft');\n $(this).closest('li.activity').addClass('stealth');\n } else if ($(this).attr('data-action') === 'show') {\n $(this).closest('li.activity').removeClass('draft');\n $(this).closest('li.activity').removeClass('stealth');\n }\n });\n\n // Make lightbox for list display of resources.\n $(document).on('click', '.js-snap-media .snap-asset-link [href*=\"/mod/resource/view.php?id=\"]', function(e) {\n lightboxMedia($(this).closest('.snap-resource, .snap-extended-resource'));\n e.preventDefault();\n });\n }\n };\n }\n);\n"],"names":["define","$","ajax","util","ajaxNotify","str","Event","updateModCompletion","module","completionhtml","find","html","focus","document","trigger","revealPageMod","pageMod","completionHTML","slideToggle","is","attr","init","on","e","this","closest","scrollToElement","isexpanded","hasClass","toggleClass","readmore","pageModContent","data","readPageUrl","M","cfg","wwwroot","type","async","url","success","ifErrorShowBestMsg","done","errorShown","loadingStrPromise","get_string","when","loadingStr","prepend","getPageUrl","remove","notifyFilterContentUpdated","then","preventDefault","form","id","val","completionState","parents","first","addClass","call","methodname","args","completionstate","response","removeClass","fail","resourcemod","lightbox","lightboxclose","lightboxopen","appendto","spinner","onclose","lbox","length","append","click","stopPropagation","content","contentdiv","Y","Escape","removeAttr"],"mappings":"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"}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists