{"version":3,"sources":["obj.js","main.js","helpers.js","asset_editor.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","public_files_list.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","generate_password.js","jquery_validation_custom_methods.js","load_ckeditor.js","login2faInputs.js","main_menu_sidebar.js","misc.js","password_visibility_toggle.js","public_links_popup.js","select2.js","side_modal.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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5GA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxFA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AChBA;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;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A1BrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A2BRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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 });\n };\n})();","function htmlEncode(str)\n{\n return String(str).replace(/[^\\w. ]/gi, function(c){\n return ''+c.charCodeAt(0)+';';\n });\n}\n\n// Adapted from https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\nfunction fallbackCopyTextToClipboard(text) {\n var textArea = document.createElement(\"textarea\");\n textArea.value = text;\n \n // Avoid scrolling to bottom\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.position = \"fixed\";\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n var successful = document.execCommand('copy');\n if (successful) {\n toastr.success(json_strings.translations.copy_ok)\n } else {\n toastr.error(json_strings.translations.copy_error) \n }\n } catch (err) {\n toastr.error(json_strings.translations.copy_error)\n }\n\n document.body.removeChild(textArea);\n}\n\nfunction copyTextToClipboard(text) {\n if (!navigator.clipboard) {\n fallbackCopyTextToClipboard(text);\n return;\n }\n\n navigator.clipboard.writeText(text).then(function() {\n toastr.success(json_strings.translations.copy_ok)\n }, function(err) {\n toastr.error(json_strings.translations.copy_ok)\n });\n}\n\n//https://gist.github.com/fnicollier/4258461\nfunction insertAtCaret(areaId,text) {\n var txtarea = document.getElementById(areaId);\n var scrollPos = txtarea.scrollTop;\n var strPos = 0;\n var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? \n \"ff\" : (document.selection ? \"ie\" : false ) );\n if (br == \"ie\") { \n txtarea.focus();\n var range = document.selection.createRange();\n range.moveStart ('character', -txtarea.value.length);\n strPos = range.text.length;\n }\n else if (br == \"ff\") strPos = txtarea.selectionStart;\n\n var front = (txtarea.value).substring(0,strPos); \n var back = (txtarea.value).substring(strPos,txtarea.value.length); \n txtarea.value=front+text+back;\n strPos = strPos + text.length;\n if (br == \"ie\") { \n txtarea.focus();\n var range = document.selection.createRange();\n range.moveStart ('character', -txtarea.value.length);\n range.moveStart ('character', strPos);\n range.moveEnd ('character', 0);\n range.select();\n }\n else if (br == \"ff\") {\n txtarea.selectionStart = strPos;\n txtarea.selectionEnd = strPos;\n txtarea.focus();\n }\n txtarea.scrollTop = scrollPos;\n}\n\nfunction urlParamExists(param, value = null)\n{\n var urlParams = new URLSearchParams(window.location.search);\n var search = urlParams.get(param);\n \n if(search) {\n return true;\n }\n\n if (value != null) {\n if(search == value) {\n return true;\n }\n }\n \n return false;\n}\n\nfunction isNumeric(value){\n if (typeof value != \"string\") {\n return false;\n }\n\n return !isNaN(value) && !isNaN(parseFloat(value))\n}\n ","(function () {\n 'use strict';\n\n admin.pages.assetEditor = function () {\n $(document).ready(function()\n {\n const types_allowed = ['js', 'css', 'html'];\n const type = $('#asset_language').val();\n var mode;\n if (types_allowed.includes(type)) {\n switch (type) {\n case 'css': mode = 'css'; break;\n case 'js': mode = 'javascript'; break;\n case 'html': mode = 'htmlmixed'; break;\n }\n }\n // console.log(mode);\n var editor = CodeMirror.fromTextArea(document.getElementById(\"content\"), {\n lineNumbers: true,\n mode: mode,\n //theme: 'neo',\n lineWrapping: true\n });\n });\n };\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 $(document).on('click', '.load_default', function(e) {\n e.preventDefault();\n\n var file = jQuery(this).data('file');\n var textarea = document.getElementById(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.value = 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 = jQuery(this).data('preview');\n var url = json_strings.uri.base+ 'email-preview.php?t=' + type;\n window.open(url, \"previewWindow\", \"width=800,height=600,scrollbars=yes\");\n });\n });\n\n $('.insert_tag').on('click', function(e) {\n var target = jQuery(this).data('target');\n insertAtCaret(target, $(this).data('tag'));\n });\n\n // Check if each tag is used or not\n var tags_dt = document.querySelectorAll('#email_available_tags dt button');\n var tags = [];\n Array.prototype.forEach.call(tags_dt, function(tag) {\n tags.push(tag.dataset.tag);\n });\n\n var textareas = document.querySelectorAll('#form_email_template textarea');\n\n const check_tags_usage = setInterval(() => {\n tags.forEach(tag => {\n checkTagsUsage(tag);\n });\n }, 1000);\n\n function checkTagsUsage(tag)\n {\n textareas.forEach(element => {\n const el = document.querySelector('button[data-tag=\"'+tag+'\"]');\n if (!element.value.includes(tag)) {\n el.classList.add('btn-warning');\n el.classList.remove('btn-pslight');\n } else {\n el.classList.add('btn-pslight');\n el.classList.remove('btn-warning');\n }\n });\n }\n };\n})();","(function () {\n 'use strict';\n\n admin.pages.fileEditor = function () {\n\n $(document).ready(function(){\n // Datepicker\n if ( $.isFunction($.fn.datepicker) ) {\n $('.date-container .date-field').datepicker({\n format : 'dd-mm-yyyy',\n autoclose : true,\n todayHighlight : true\n });\n }\n\n // Validation\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 // Copy settings to other files\n function copySettingsToCheckboxes(el, to, question)\n {\n if ( confirm( question ) ) {\n $(to).each(function(i, obj) {\n var from_element = document.getElementById($(el).data('copy-from'));\n $(this).prop('checked', from_element.checked);\n });\n }\n }\n\n $('.copy-expiration-settings').on('click', function() {\n copySettingsToCheckboxes($(this), '.checkbox_setting_expires', json_strings.translations.upload_form.copy_expiration);\n // Copy date\n var element = $('#'+$(this).data('copy-date-from'));\n var date = element.val();\n $('.date-field').each(function(i, obj) {\n console.log(date);\n $('.date-field').datepicker('update', date);\n });\n });\n\n $('.copy-public-settings').on('click', function() {\n copySettingsToCheckboxes($(this), '.checkbox_setting_public', json_strings.translations.upload_form.copy_public);\n });\n\n $('.copy-hidden-settings').on('click', function() {\n copySettingsToCheckboxes($(this), '.checkbox_setting_hidden', json_strings.translations.upload_form.copy_hidden);\n });\n\n // Collapse - expand single item\n $('.toggle_file_editor').on('click', function(e) {\n let wrapper = $(this).parents('.file_editor_wrapper');\n wrapper.toggleClass('collapsed');\n });\n\n // Collapse all\n document.getElementById('files_collapse_all').addEventListener('click', function(e) {\n let wrappers = document.querySelectorAll('.file_editor_wrapper');\n wrappers.forEach(wrapper => {\n wrapper.classList.add('collapsed');\n });\n \n })\n\n // Expand all\n document.getElementById('files_expand_all').addEventListener('click', function(e) {\n let wrappers = document.querySelectorAll('.file_editor_wrapper');\n wrappers.forEach(wrapper => {\n wrapper.classList.remove('collapsed');\n });\n \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 // let data_changed = false;\n // $('body').on('input', '#username, #password', function(e) {\n // data_changed = true;\n // });\n\n // $('body').on('change', '#language', function (e) {\n // if (data_changed == false) {\n // let change_locale_uri = json_strings.uri.base + 'process.php?do=change_language&language=' + $(this).val();\n // window.location.replace(change_locale_uri);;\n // }\n // });\n\n var initial = $('.seconds_countdown').text();\n if (initial) {\n $('#btn_submit').attr('disabled', 'disabled');\n }\n var downloadTimer = setInterval(function(){\n if (initial <= 0) {\n clearInterval(downloadTimer);\n $('#btn_submit').removeAttr('disabled');\n $('#message_countdown').slideUp();\n }\n $('.seconds_countdown').text(initial);\n initial -= 1;\n }, 1000);\n\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 var tagifyContainer = document.getElementById('allowed_file_types');\n var tagify = new Tagify (tagifyContainer);\n //tagifyContainer.addEventListener('change', tagifyOnChange)\n\n function tagifyOnChange(e){\n console.log(e.target.value)\n }\n\n $(document).ready(function(){\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.publicFilesList = function () {\n\n $(document).ready(function(){\n $('select[name=\"group\"]').on('change', function(e) {\n var token = $(this).find(':selected').data('token');\n $('input[name=\"token\"]').val(token);\n });\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.download_wait+`
\n `;\n\n Cookies.set('log_download_started', 0, { expires: 100 });\n setTimeout(check_log_download_cookie, 1000);\n\n Swal.fire({\n title: '',\n html: modal_content,\n showCloseButton: false,\n showCancelButton: false,\n showConfirmButton: false,\n showClass: {\n popup: 'animate__animated animated__fast animate__fadeInUp'\n },\n hideClass: {\n popup: 'animate__animated animated__fast animate__fadeOutDown'\n },\n didOpen: function () {\n var url = json_strings.uri.base+'includes/actions.log.export.php?format=csv';\n let iframe = document.createElement('iframe');\n let swalcontainer = document.getElementById('swal2-html-container')\n swalcontainer.appendChild(iframe);\n iframe.setAttribute('src', url);\n }\n }).then((result) => {\n });\n }\n\n if (action == 'cron_log_download') {\n e.preventDefault();\n\n let modal_content = ` \n`+json_strings.translations.download_wait+`
\n `;\n\n Cookies.set('log_download_started', 0, { expires: 100 });\n setTimeout(check_log_download_cookie, 1000);\n\n Swal.fire({\n title: '',\n html: modal_content,\n showCloseButton: false,\n showCancelButton: false,\n showConfirmButton: false,\n showClass: {\n popup: 'animate__animated animated__fast animate__fadeInUp'\n },\n hideClass: {\n popup: 'animate__animated animated__fast animate__fadeOutDown'\n },\n didOpen: function () {\n var url = json_strings.uri.base+'includes/cron.log.export.php?format=csv';\n let iframe = document.createElement('iframe');\n let swalcontainer = document.getElementById('swal2-html-container')\n swalcontainer.appendChild(iframe);\n iframe.setAttribute('src', url);\n }\n }).then((result) => {\n });\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 // Download multiple files as zip\n if (action == 'zip') {\n e.preventDefault();\n var checkboxes = $(\"td>input:checkbox:checked\").serializeArray();\n if (checkboxes.length > 0) {\n let modal_content = ` \n`+json_strings.translations.download_wait+`
\n`+json_strings.translations.download_long_wait+`
\n `;\n\n Cookies.set('download_started', 0, { expires: 100 });\n setTimeout(check_download_cookie, 1000);\n\n Swal.fire({\n title: '',\n html: modal_content,\n showCloseButton: false,\n showCancelButton: false,\n showConfirmButton: false,\n showClass: {\n popup: 'animate__animated animated__fast animate__fadeInUp'\n },\n hideClass: {\n popup: 'animate__animated animated__fast animate__fadeOutDown'\n },\n didOpen: function () {\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 let iframe = document.createElement('iframe');\n let swalcontainer = document.getElementById('swal2-html-container')\n swalcontainer.appendChild(iframe);\n iframe.setAttribute('src', url);\n });\n }\n }).then((result) => {\n });\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 Swal.close();\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 Swal.close();\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 = `` + file_title + `
\n` + note_text + `
\n`+item.content+`
\n `);\n });\n //console.log(list);\n target.append(list);\n list.slideDown();\n }).fail(function(data) {\n target.html(json_strings.translations.failed_loading_resource);\n }).always(function() {\n $('#widget_projectsend_news .loading-icon').addClass('none');\n });\n }\n\n\t\t\tajax_widget_news();\n });\n };\n})();\n","(function () {\n 'use strict';\n \n admin.parts.widgetStatistics = function () {\n \n $(document).ready(function(){\n var chart;\n\n // Statistics chart\n function ajax_widget_statistics(days) {\n var _chart_container = $('#widget_statistics #chart_container');\n _chart_container.find('canvas').remove();\n $('#widget_statistics .loading-icon').removeClass('none');\n if (chart) {\n chart.destroy();\n }\n $.ajax({\n url: json_strings.uri.widgets+'ajax/statistics.php',\n data: { days:days },\n cache: false,\n }).done(function(data) {\n // var obj = JSON.parse(data);\n var obj = data;\n _chart_container.append('