{"version":3,"sources":["obj.js","main.js","categories_admin.js","client_form.js","clients_accounts_requests.js","dashboard.js","email_templates.js","file_editor.js","group_form.js","import_orphans.js","install.js","login.js","login_ldap.js","options.js","reset_password_enter_email.js","reset_password_enter_new.js","upload_form.js","user_form.js","bulk_actions.js","download_cookie_handler.js","file_preview_modal.js","jquery_psendmodal.js","jquery_validation_custom_methods.js","load_ckeditor.js","password_visibility_toggle.js","widget_action_log.js","widget_news.js","widget_statistics.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AtBtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AuB9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["(function () {\n 'use strict';\n \n window.admin = {\n parts: {},\n pages: {}\n };\n})();","(function () {\n 'use strict';\n\n admin.parts.main = function () {\n\n $(document).ready(function() {\n $(document).ready(function() {\n $('input:first').focus();\n });\n\n $('.confirm_generic').on('click', function(e) {\n if (!confirm(json_strings.translations.confirm_generic)) {\n e.preventDefault();\n }\n });\n \n // Dismiss messages\n $('.message .close').on('click', function () {\n $(this).closest('.message').transition('fade');\n });\n \n window.resizeChosen = function() {\n $(\".chosen-container\").each(function() {\n $(this).attr('style', 'width: 100%');\n });\n }\n \n window.prepare_sidebar = function() {\n var window_width = jQuery(window).width();\n if ( window_width < 769 ) {\n $('.main_menu .active .dropdown_content').hide();\n $('.main_menu li').removeClass('active');\n \n if ( !$('body').hasClass('menu_contracted') ) {\n $('body').addClass('menu_contracted');\n }\n }\n }\n\n /** Main side menu */\n prepare_sidebar();\n\n resizeChosen();\n\n $('.main_menu > li.has_dropdown .nav_top_level').click(function(e) {\n e.preventDefault();\n\n var parent = $(this).parents('.has_dropdown');\n if ( $(parent).hasClass('active') ) {\n $(parent).removeClass('active');\n $(parent).find('.dropdown_content').stop().slideUp();\n }\n else {\n if ( $('body').hasClass('menu_contracted') ) {\n $('.main_menu li').removeClass('active');\n $('.main_menu').find('.dropdown_content').stop().slideUp(100);\n }\n $(parent).addClass('active');\n $(parent).find('.dropdown_content').stop().slideDown();\n }\n });\n\n $('.toggle_main_menu').click(function(e) {\n e.preventDefault();\n\n var window_width = jQuery(window).width();\n if ( window_width > 768 ) {\n $('body').toggleClass('menu_contracted');\n if ( $('body').hasClass('menu_contracted') ) {\n Cookies.set(\"menu_contracted\", 'true', { expires: 365 } );\n $('.main_menu li').removeClass('active');\n $('.main_menu').find('.dropdown_content').stop().hide();\n }\n else {\n Cookies.set(\"menu_contracted\", 'false', { expires: 365 } );\n $('.current_nav').addClass('active');\n $('.current_nav').find('.dropdown_content').stop().show();\n }\n }\n else {\n $('body').toggleClass('menu_hidden');\n $('.main_menu li').removeClass('active');\n\n if ( $('body').hasClass('menu_hidden') ) {\n //Cookies.set(\"menu_hidden\", 'true', { expires: 365 } );\n $('.main_menu').find('.dropdown_content').stop().hide();\n }\n else {\n //Cookies.set(\"menu_hidden\", 'false', { expires: 365 } );\n }\n }\n });\n\n /** Used on the public link modal on both manage files and the upload results */\n $(document).on('click', '.public_link_copy', function(e) {\n $(this).select();\n if ( document.execCommand(\"copy\") ) {\n var copied = '.copied';\n }\n else {\n var copied = '.copied_not';\n }\n $(this).parents('.public_link_modal').find(copied).stop().fadeIn().delay(2000).fadeOut();\n $(this).mouseup(function() {\n $(this).unbind(\"mouseup\");\n return false;\n });\n });\n\n\n /** Common for all tables */\n $(\"#select_all\").click(function(){\n var status = $(this).prop(\"checked\");\n /** Uncheck all first in case you used pagination */\n $(\"tr td input[type=checkbox].batch_checkbox\").prop(\"checked\",false);\n $(\"tr:visible td input[type=checkbox].batch_checkbox\").prop(\"checked\",status);\n });\n\n if ( $.isFunction($.fn.footable) ) {\n $('.footable').footable().find('> tbody > tr:not(.footable-row-detail):nth-child(even)').addClass('odd');\n }\n \n /** Pagination */\n $(\".go_to_page\").on(\"click\", \"button\", function() {\n var _page = $('.go_to_page #page_number').data('link');\n var _page_no = parseInt($('.go_to_page #page_number').val());\n if (typeof _page_no == 'number'){\n _page = _page.replace('_pgn_', _page_no);\n }\n window.location.href = _page;\n });\n\n /** Password generator */\n var hdl = new Jen(true);\n hdl.hardening(true);\n\n $('.btn_generate_password').click(function(e) {\n var target = $(this).parents('.form-group').find('.password_toggle');\n var min_chars = $(this).data('min');\n var max_chars = $(this).data('max');\n $(target).val( hdl.password( min_chars, max_chars ) );\n });\n\n\n /** File editor */\n if ( $.isFunction($.fn.datepicker) ) {\n $('.date-container .date-field').datepicker({\n format\t\t\t: 'dd-mm-yyyy',\n autoclose\t\t: true,\n todayHighlight\t: true\n });\n }\n\n $('.add-all').on('click', function() {\n var target = $(this).data('target');\n var selector = $('#'+target);\n $(selector).hide();\n //var selector = $(this).previous('.select_' + type);\n $(selector).find('option').each(function() {\n $(this).prop('selected', true);\n });\n $(selector).trigger('chosen:updated');\n return false;\n });\n\n $('.remove-all').on('click', function() {\n var target = $(this).data('target');\n var selector = $('#'+target);\n //var selector = $(this).previous('.select_' + type);\n $(selector).find('option').each(function() {\n $(this).prop('selected', false);\n });\n $(selector).trigger('chosen:updated');\n return false;\n });\n\n\n /** Misc */\n $('button').on('click', function() {\n $(this).blur();\n });\n\n /**\n * Modal: show a public file's URL\n */\n $('body').on('click', '.public_link', function(e) {\n $(document).psendmodal();\n var type = $(this).data('type');\n var public_url = $(this).data('public-url');\n\n if ( type == 'group' ) {\n var link_base = json_strings.uri.public_group + '?';\n var note_text = json_strings.translations.public_group_note;\n }\n else if ( type == 'file' ) {\n var link_base = json_strings.uri.public_download + '?';\n var note_text = json_strings.translations.public_file_note;\n }\n\n var content = '';\n var title \t= json_strings.translations.public_url;\n $('.modal_title span').html(title);\n $('.modal_content').html(content);\n });\n \n // Edit file + upload form\n if ( $.isFunction($.fn.chosen) ) {\n $('.chosen-select').chosen({\n no_results_text\t: json_strings.translations.no_results,\n width\t\t\t: \"100%\",\n search_contains\t: true\n });\n }\n });\n\n /**\n * Event: Scroll\n */\n jQuery(window).scroll(function(event) {\n });\n\n /**\n * Event: Resize\n */\n jQuery(window).resize(function($) {\n prepare_sidebar();\n\n resizeChosen();\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.categoriesAdmin = function () {\n\n $(document).ready(function(){\n var validator = $(\"#process_category\").validate({\n rules: {\n category_name: {\n required: true,\n }\n },\n messages: {\n category_name: {\n required: json_strings.validation.no_name,\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n },\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.clientForm = function () {\n\n $(document).ready(function(){\n var form_type = $(\"#client_form\").data('form-type');\n\n var validator = $(\"#client_form\").validate({\n rules: {\n name: {\n required: true\n },\n username: {\n required: true,\n minlength: json_strings.character_limits.user_min,\n maxlength: json_strings.character_limits.user_max,\n alphanumericUsername: true\n },\n email: {\n required: true,\n email: true\n },\n max_file_size: {\n required: {\n param: true,\n depends: function(element) {\n return form_type != 'new_client_self';\n }\n },\n digits: true\n },\n password: {\n required: {\n param: true,\n depends: function(element) {\n if (form_type == 'new_client' || form_type == 'new_client_self') {\n return true;\n }\n if (form_type == 'edit_client' || form_type == 'edit_client_self') {\n if ($.trim($(\"#password\").val()).length > 0) {\n return true;\n }\n }\n return false;\n }\n },\n minlength: json_strings.character_limits.password_min,\n maxlength: json_strings.character_limits.password_max,\n passwordValidCharacters: true\n }\n },\n messages: {\n name: {\n required: json_strings.validation.no_name\n },\n username: {\n required: json_strings.validation.no_user,\n minlength: json_strings.validation.length_user,\n maxlength: json_strings.validation.length_user,\n alphanumericUsername: json_strings.validation.alpha_user\n },\n email: {\n required: json_strings.validation.no_email,\n email: json_strings.validation.invalid_email\n },\n max_file_size: {\n digits: json_strings.validation.file_size\n },\n password: {\n required: json_strings.validation.no_pass,\n minlength: json_strings.validation.length_pass,\n maxlength: json_strings.validation.length_pass,\n passwordValidCharacters: json_strings.validation.alpha_pass\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.clientsAccountsRequests = function () {\n\n $(document).ready(function(){\n $('.change_all').click(function(e) {\n e.preventDefault();\n var target = $(this).data('target');\n var check = $(this).data('check');\n $(\"input[data-client='\"+target+\"']\").prop(\"checked\",check).change();\n check_client(target);\n });\n \n $('.account_action').on(\"change\", function() {\n if ( $(this).prop('checked') == false ) {\n var target = $(this).data('client');\n $(\".membership_action[data-client='\"+target+\"']\").prop(\"checked\",false).change();\n }\n });\n \n $('.checkbox_toggle').change(function() {\n var target = $(this).data('client');\n check_client(target);\n });\n \n function check_client(client_id) {\n $(\"input[data-clientid='\"+client_id+\"']\").prop(\"checked\",true);\n }\n });\n };\n})();","(function () {\n 'use strict';\n \n admin.pages.dashboard = function () {\n \n $(document).ready(function(){\n // Nothing here yet\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.emailTemplates = function () {\n\n $(document).ready(function(){\n $('.load_default').click(function(e) {\n e.preventDefault();\n\n var file = jQuery(this).data('file');\n var textarea = jQuery(this).data('textarea');\n var accept = confirm(json_strings.translations.email_templates.confirm_replace);\n \n if ( accept ) {\n $.ajax({\n url: \"emails/\"+file,\n cache: false,\n success: function (data){\n $('#'+textarea).val(data);\n },\n error: function() {\n alert(json_strings.translations.email_templates.loading_error);\n }\n });\n }\n });\n \n $('.preview').click(function(e) {\n e.preventDefault();\n var type\t= jQuery(this).data('preview');\n var url\t\t= json_strings.uri.base+ 'email-preview.php?t=' + type;\n window.open(url, \"previewWindow\", \"width=800,height=600,scrollbars=yes\");\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.fileEditor = function () {\n\n $(document).ready(function(){\n var validator = $(\"#files\").validate({\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n\n var file = $('input[name^=\"file\"]');\n\n file.filter('input[name$=\"[name]\"]').each(function() {\n $(this).rules(\"add\", {\n required: true,\n messages: {\n required: json_strings.validation.no_name\n }\n });\n });\n\n\n $('.copy-all').on('click', function() {\n if ( confirm( json_strings.translations.upload_form.copy_selection ) ) {\n var target = $(this).data('target');\n var type = $(this).data('type');\n var selector = $('#'+target);\n var val;\n \n var selected = new Array();\n $(selector).find('option:selected').each(function() {\n selected.push($(this).val().toString());\n });\n\n $('.chosen-select[data-type=\"'+type+'\"]').not(selector).each(function() {\n $(this).find('option').each(function() {\n val = $(this).val().toString();\n if (selected.includes(val)) {\n $(this).prop('selected', 'selected');\n } else {\n $(this).removeAttr('selected');\n }\n });\n $(this).trigger('chosen:updated');\n });\n }\n\n return false;\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.groupForm = function () {\n\n $(document).ready(function(){\n var validator = $(\"#group_form\").validate({\n rules: {\n name: {\n required: true\n },\n },\n messages: {\n name: {\n required: json_strings.validation.no_name\n },\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.importOrphans = function () {\n\n $(document).ready(function(){\n $(\"#import_orphans\").submit(function() {\n\t\t\t\tvar checks = $(\"td>input:checkbox\").serializeArray(); \n\t\t\t\t\n\t\t\t\tif (checks.length == 0) { \n\t\t\t\t\talert(json_strings.translations.select_one_or_more);\n\t\t\t\t\treturn false; \n\t\t\t\t} \n\t\t\t});\n\t\t\t\n\t\t\t/**\n\t\t\t * Only select the current file when clicking an \"edit\" button\n\t\t\t */\n\t\t\t$('.btn-edit-file').click(function(e) {\n\t\t\t\t$('#select_all').prop('checked', false);\n\t\t\t\t$('td .select_file_checkbox').prop('checked', false);\n\t\t\t\t$(this).parents('tr').find('td .select_file_checkbox').prop('checked', true);\n\t\t\t\t$(\"#import_orphans\").submit();\n\t\t\t});\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.install = function () {\n\n $(document).ready(function(){\n var validator = $(\"#install_form\").validate({\n rules: {\n install_title: {\n required: true,\n },\n base_uri: {\n required: true\n // url: true // Does not work on localhost\n },\n admin_name: {\n required: true,\n },\n admin_email: {\n required: true,\n email: true\n },\n admin_username: {\n required: true,\n minlength: json_strings.character_limits.user_min,\n maxlength: json_strings.character_limits.user_max,\n alphanumericUsername: true\n },\n admin_pass: {\n required: true,\n minlength: json_strings.character_limits.password_min,\n maxlength: json_strings.character_limits.password_max,\n passwordValidCharacters: true\n },\n },\n messages: {\n category_name: {\n required: json_strings.validation.no_name,\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n },\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.loginForm = function () {\n\n $(document).ready(function(){\n var validator = $(\"#login_form\").validate({\n rules: {\n username: {\n required: true,\n },\n password: {\n required: true,\n },\n },\n messages: {\n username: {\n required: json_strings.validation.no_user,\n },\n password: {\n required: json_strings.validation.no_pass,\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n },\n submitHandler: function(form) {\n form.submit();\n\n var button_loading_text = json_strings.login.logging_in;\n $('#btn_submit').html(' '+button_loading_text+'...').attr('disabled', 'disabled');\n /*\n \n var button_text = json_strings.login.button_text;\n var button_redirecting_text = json_strings.login.redirecting;\n var url = $(form).attr('action');\n $('.ajax_response').html('').removeClass('alert alert-danger alert-success').slideUp();\n \n\n $.ajax({\n cache: false,\n method: 'POST',\n url: url,\n data: $(form).serialize(),\n }).done( function(data) {\n var obj = JSON.parse(data);\n if ( obj.status == 'success' ) {\n $('#submit').html(' '+button_redirecting_text+'...');\n $('#submit').removeClass('btn-primary').addClass('btn-success');\n setTimeout('window.location.href = \"'+obj.location+'\"', 1000);\n } else {\n $('.ajax_response').addClass('alert alert-danger').slideDown().html(obj.message);\n $('#submit').html(button_text).removeAttr('disabled');\n }\n }).fail( function(data) {\n $('.ajax_response').addClass('alert alert-danger').slideDown().html('Uncaught error');\n $('#submit').html(button_text).removeAttr('disabled');\n }).always( function() {\n });\n\n return false;\n */\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.loginLdapForm = function () {\n\n $(document).ready(function(){\n var validator = $(\"#login_ldap_form\").validate({\n rules: {\n ldap_email: {\n required: true,\n },\n ldap_password: {\n required: true,\n },\n },\n messages: {\n ldap_email: {\n required: json_strings.validation.no_email,\n },\n ldap_password: {\n required: json_strings.validation.no_pass,\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n },\n submitHandler: function(form) {\n var button_text = json_strings.login.button_text;\n var button_loading_text = json_strings.login.logging_in;\n var button_redirecting_text = json_strings.login.redirecting;\n\n var url = $(form).attr('action');\n $('.ajax_response').html('').removeClass('alert-danger alert-success').slideUp();\n $('#ldap_submit').html(' '+button_loading_text+'...');\n $.ajax({\n cache: false,\n type: \"post\",\n url: url,\n data: $(form).serialize(),\n success: function(response)\n {\n var json = jQuery.parseJSON(response);\n if ( json.status == 'success' ) {\n $('#ldap_submit').html(' '+button_redirecting_text+'...');\n $('#ldap_submit').removeClass('btn-primary').addClass('btn-success');\n setTimeout('window.location.href = \"'+json.location+'\"', 1000);\n }\n else {\n $('.ajax_response').addClass('alert-danger').slideDown().html(json.message);\n $('#ldap_submit').html(\"'\"+button_text+\"'\");\n }\n }\n });\n\n return false;\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.options = function () {\n\n $(document).ready(function(){\n $('#allowed_file_types')\n .tagify()\n .on('add', function(e, tagName){\n console.log('added', tagName)\n });\n\n var validator = $(\"#options\").validate({\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n },\n });\n\n $('#download_method').on('change', function(e) {\n var method = $(this).find('option:selected').val();\n $('.method_note').hide();\n $('.method_note[data-method=\"'+method+'\"]').show();\n });\n\n $('#download_method').trigger('change');\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.resetPasswordEnterEmail = function () {\n\n $(document).ready(function(){\n var validator = $(\"#reset_password_enter_email\").validate({\n rules: {\n email: {\n required: true,\n email: true,\n },\n },\n messages: {\n email: {\n required: json_strings.validation.no_email,\n email: json_strings.validation.invalid_email\n },\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.resetPasswordEnterNew = function () {\n\n $(document).ready(function(){\n var validator = $(\"#reset_password_enter_new\").validate({\n rules: {\n password: {\n required: true,\n minlength: json_strings.character_limits.password_min,\n maxlength: json_strings.character_limits.password_max,\n passwordValidCharacters: true\n }\n },\n messages: {\n password: {\n required: json_strings.validation.no_pass,\n minlength: json_strings.validation.length_pass,\n maxlength: json_strings.validation.length_pass,\n passwordValidCharacters: json_strings.validation.alpha_pass\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.uploadForm = function () {\n\n $(document).ready(function(){\n var file_ids = [];\n var errors = 0;\n var successful = 0;\n\n // Send a keep alive action every 1 minute\n setInterval(function(){\n var timestamp = new Date().getTime()\n $.ajax({\n type:\t'GET',\n cache:\tfalse,\n url:\t'includes/ajax-keep-alive.php',\n data:\t'timestamp='+timestamp,\n success: function(result) {\n var dummy = result;\n }\n });\n },1000*60);\n\n var uploader = $('#uploader').pluploadQueue();\n\n $('#upload_form').on('submit', function(e) {\n if (uploader.files.length > 0) {\n uploader.bind('StateChanged', function() {\n if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {\n var action = $('#upload_form').attr('action') + '?ids=' + file_ids.toString() + '&type=new';\n $('#upload_form').attr('action', action);\n if (successful > 0) {\n if (errors == 0) {\n window.location = action;\n } else {\n $(`\n
`+json_strings.translations.upload_form.some_files_had_errors+`
\n `+json_strings.translations.upload_form.continue_to_editor+`\n `).insertBefore( \"#upload_form\" );\n }\n return;\n }\n // $('#upload_form')[0].submit();\n }\n });\n\n uploader.start();\n\n $(\"#btn-submit\").hide();\n $(\".message_uploading\").fadeIn();\n\n uploader.bind('Error', function(uploader, error) {\n var obj = JSON.parse(error.response);\n $(\n `
`+obj.error.filename+`: `+obj.error.message+`
`\n ).insertBefore( \"#upload_form\" );\n //console.log(obj);\n });\n \n uploader.bind('FileUploaded', function (uploader, file, info) {\n var obj = JSON.parse(info.response);\n file_ids.push(obj.info.id);\n successful++;\n });\n\n return false;\n } else {\n alert(json_strings.translations.upload_form.no_files);\n }\n\n return false;\n });\n\n window.onbeforeunload = function (e) {\n var e = e || window.event;\n\n console.log('state? ' + uploader.state);\n\n // if uploading\n if(uploader.state === 2) {\n //IE & Firefox\n if (e) {\n e.returnValue = json_strings.translations.upload_form.leave_confirm;\n }\n\n // For Safari\n return json_strings.translations.upload_form.leave_confirm;\n }\n\n };\n\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.userForm = function () {\n\n $(document).ready(function(){\n var form_type = $(\"#user_form\").data('form-type');\n\n var validator = $(\"#user_form\").validate({\n rules: {\n name: {\n required: true\n },\n username: {\n required: true,\n minlength: json_strings.character_limits.user_min,\n maxlength: json_strings.character_limits.user_max,\n alphanumericUsername: true\n },\n email: {\n required: true,\n email: true\n },\n level: {\n required: true\n },\n max_file_size: {\n required: true,\n digits: true\n },\n password: {\n required: {\n param: true,\n depends: function(element) {\n if (form_type == 'new_user') {\n return true;\n }\n if (form_type == 'edit_user' || form_type == 'edit_user_self') {\n if ($.trim($(\"#password\").val()).length > 0) {\n return true;\n }\n }\n return false;\n }\n },\n minlength: json_strings.character_limits.password_min,\n maxlength: json_strings.character_limits.password_max,\n passwordValidCharacters: true\n }\n },\n messages: {\n name: {\n required: json_strings.validation.no_name\n },\n username: {\n required: json_strings.validation.no_user,\n minlength: json_strings.validation.length_user,\n maxlength: json_strings.validation.length_user,\n alphanumericUsername: json_strings.validation.alpha_user\n },\n email: {\n required: json_strings.validation.no_email,\n email: json_strings.validation.invalid_email\n },\n level: {\n required: json_strings.validation.no_role\n },\n max_file_size: {\n digits: json_strings.validation.file_size\n },\n password: {\n required: json_strings.validation.no_pass,\n minlength: json_strings.validation.length_pass,\n maxlength: json_strings.validation.length_pass,\n passwordValidCharacters: json_strings.validation.alpha_pass\n }\n },\n errorPlacement: function(error, element) {\n error.appendTo(element.parent('div'));\n }\n });\n });\n };\n})();","/**\n * Apply bulk actions\n */\n(function () {\n 'use strict';\n\n admin.parts.bulkActions = function () {\n\n $(document).ready(function(e) {\n $(\".batch_actions\").on('submit', function(e) {\n var checks = $(\"td>input:checkbox\").serializeArray();\n var action = $('#action').val();\n if (action != 'none') {\n // Generic actions\n if (action == 'delete') {\n if (checks.length == 0) {\n alert(json_strings.translations.select_one_or_more);\n return false;\n }\n else {\n var _formatted = sprintf(json_strings.translations.confirm_delete, checks.length);\n if (!confirm(_formatted)) {\n e.preventDefault();\n }\n }\n }\n\n // Activities log actions\n if (action == 'log_clear') {\n var msg = json_strings.translations.confirm_delete_log;\n if (!confirm(msg)) {\n e.preventDefault();\n }\n }\n\n if (action == 'log_download') {\n e.preventDefault();\n $(document).psendmodal();\n Cookies.set('log_download_started', 0, { expires: 100 });\n setTimeout(check_log_download_cookie, 1000);\n\n $('.modal_content').html(`

\n \"Loading\"

\n

`+json_strings.translations.download_wait+`

\n `);\n $('.modal_content').append('');\n\n return false;\n }\n\n // Manage files actions\n if (action == 'unassign') {\n var _formatted = sprintf(json_strings.translations.confirm_unassign, checks.length);\n if (!confirm(_formatted)) {\n e.preventDefault();\n }\n }\n\n // Templates\n if (action == 'zip') {\n e.preventDefault();\n var checkboxes = $(\"td>input:checkbox:checked\").serializeArray();\n if (checkboxes.length > 0) {\n $(document).psendmodal();\n \n Cookies.set('download_started', 0, { expires: 100 });\n setTimeout(check_download_cookie, 1000);\n $('.modal_content').html(`

\"Loading\"

\n

`+json_strings.translations.download_wait+`

\n

`+json_strings.translations.download_long_wait+`

\n `);\n $.ajax({\n method: 'GET',\n url: json_strings.uri.base + 'process.php',\n data: { do:\"return_files_ids\", files:checkboxes }\n }).done( function(rsp) {\n var url = json_strings.uri.base + 'process.php?do=download_zip&files=' + rsp;\n $('.modal_content').append(\"\");\n $('#modal_zip').attr('src', url);\n });\n return false;\n }\n }\n }\n else {\n return false;\n }\n });\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.parts.downloadCookieHandler = function () {\n $(document).ready(function() {\n /**\n * CLOSE THE ZIP DOWNLOAD MODAL\n * Solution to close the modal. Suggested by remez, based on\n * https://stackoverflow.com/questions/29532788/how-to-display-a-loading-animation-while-file-is-generated-for-download\n */\n var downloadTimeout;\n window.check_download_cookie = function() {\n if (Cookies.get(\"download_started\") == 1) {\n Cookies.set(\"download_started\", \"false\", { expires: 100 });\n remove_modal();\n } else {\n downloadTimeout = setTimeout(check_download_cookie, 1000);\n }\n };\n\n // Close the log CSV download modal\n var logdownloadTimeout;\n window.check_log_download_cookie = function() {\n if (Cookies.get(\"log_download_started\") == 1) {\n Cookies.set(\"log_download_started\", \"false\", { expires: 100 });\n remove_modal();\n } else {\n logdownloadTimeout = setTimeout(check_log_download_cookie, 1000);\n }\n };\n });\n }\n})();","(function () {\n 'use strict';\n\n admin.parts.filePreviewModal = function () {\n\n $(document).ready(function(e) {\n // Append modal\n var modal_layout = `
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
`;\n $('body').append(modal_layout);\n\n // Button trigger\n $('.get-preview').on('click', function(e) {\n e.preventDefault();\n var url = $(this).data(\"url\"); \n var content = '';\n\n $.ajax({\n method: \"GET\",\n url: url,\n cache: false,\n }).done(function(response) {\n var obj = JSON.parse(response);\n switch (obj.type) {\n case 'video':\n content = `\n
\n \n
`;\n break;\n case 'audio':\n content = `\n `;\n break;\n case 'pdf':\n content = `\n
\n \n
\n `;\n break;\n case 'image':\n content = ``\n break;\n }\n $('.modal-header h5').html(obj.name);\n $('.modal-body').html(content);\n // show modal\n $('#previewModal').modal('show');\n }).fail(function(response) {\n alert(json_strings.translations.preview_failed);\n }).always(function() {\n }); \n });\n\n // Remove content when closing modal\n $('#previewModal').on('hidden.bs.modal', function (e) {\n $('.modal-body').html('');\n })\n });\n };\n})();","/**\n * Very simple custom modal dialog\n */\n$.fn.psendmodal = function() {\n\tvar modal_structure = `
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
`;\n\n\t$('body').append(modal_structure);\n\tshow_modal();\n\n\tfunction show_modal() {\n\t\t$('.modal_overlay').stop(true, true).fadeIn();\n\t\t$('.modal_psend').stop(true, true).fadeIn();\n\t}\n\n\twindow.remove_modal = function() {\n\t\t$('.modal_overlay').stop(true, true).fadeOut(500, function() { $(this).remove(); });\n\t\t$('.modal_psend').stop(true, true).fadeOut(500, function() { $(this).remove(); });\n\t\treturn false;\n\t}\n\n\t$(\".modal_close\").click(function(e) {\n\t\te.preventDefault();\n\t\tremove_modal();\n\t});\n\n\t$(\".modal_overlay\").click(function(e) {\n\t\te.preventDefault();\n\t\tremove_modal();\n\t});\n\n\t$(document).keyup(function(e) {\n\t\tif (e.keyCode == 27) { // Esc\n\t\t\tremove_modal();\n\t\t}\n\t});\n};\n","(function () {\n 'use strict';\n\n admin.parts.jqueryValidationCustomMethods = function () {\n\n $(document).ready(function(){\n jQuery.validator.addMethod(\"alphanumericUsername\", function(value, element) {\n return this.optional(element) || /^[\\w.]+$/i.test(value);\n }, json_strings.validation.alpha_user);\n\n jQuery.validator.addMethod(\"passwordValidCharacters\", function(value, element) {\n return this.optional(element) || /^[0-9a-zA-Z`!\"?$%\\^&*()_\\-+={\\[}\\]:;@~#|<,>.'\\/\\\\]+$/.test(value);\n }, json_strings.validation.alpha_user);\n });\n };\n})();","(function () {\n 'use strict';\n\n admin.parts.loadCKEditor = function () {\n\n $(document).ready(function() {\n if (document.querySelector('textarea.ckeditor') !== null) {\n // CKEditor\n ClassicEditor\n .create( document.querySelector( '.ckeditor' ), {\n removePlugins: [ 'Heading', 'Link' ],\n toolbar: [ 'bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote' ]\n })\n .then( editor => {\n window.editor = editor;\n } )\n .catch( error => {\n console.error( 'There was a problem initializing the editor.', error );\n } );\n }\n });\n }\n})();","(function () {\n 'use strict';\n\n admin.parts.passwordVisibilityToggle = function () {\n\n /**\n * Adapted from http://jsfiddle.net/Ngtp7/2/\n */\n $(function () {\n $(\".password_toggle\").each(function (index, input) {\n var $input = $(input);\n var $container\t= $($input).next('.password_toggle');\n $(\".password_toggler button\").click(function () {\n var change = \"\";\n var icon = $(this).find('i');\n if ($(this).hasClass('pass_toggler_show')) {\n $(this).removeClass('pass_toggler_show').addClass('pass_toggler_hide');\n $(icon).removeClass('glyphicon glyphicon-eye-open').addClass('glyphicon glyphicon-eye-close');\n change = \"text\";\n } else {\n $(this).removeClass('pass_toggler_hide').addClass('pass_toggler_show');\n $(icon).removeClass('glyphicon glyphicon-eye-close').addClass('glyphicon glyphicon-eye-open');\n change = \"password\";\n }\n var rep = $(\"\")\n .attr(\"id\", $input.attr(\"id\"))\n .attr(\"name\", $input.attr(\"name\"))\n .attr('class', $input.attr('class'))\n .attr('maxlength', $input.attr('maxlength'))\n .val($input.val())\n .insertBefore($input);\n $input.remove();\n $input = rep;\n }).insertBefore($container);\n });\n return false;\n });\n };\n})();","(function () {\n 'use strict';\n \n admin.parts.widgetActionLog = function () {\n \n $(document).ready(function(){\n // Action log\n function ajax_widget_log( action ) {\n var target = $('#log_container');\n var select = $('#widget_actions_log_change');\n var list = $('