{combine_script id='common' load='header' require='jquery' path='admin/themes/default/js/common.js'} {combine_script id='jquery.selectize' load='header' path='themes/default/js/plugins/selectize.min.js'} {combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.{$themeconf.colorscheme}.css"} {combine_script id='jquery.ui.slider' require='jquery.ui' load='header' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'} {combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"} {combine_script id='jquery.confirm' load='header' require='jquery' path='themes/default/js/plugins/jquery-confirm.min.js'} {combine_css path="themes/default/js/plugins/jquery-confirm.min.css"} {combine_script id='jquery.tipTip' load='header' path='themes/default/js/plugins/jquery.tipTip.minified.js'} {combine_css path="admin/themes/default/fontello/css/animation.css" order=10} {* order 10 is required, see issue 1080 *} {footer_script} /* Translates */ const title_msg = '{'Are you sure you want to delete the user "%s"?'|@translate|escape:'javascript'}'; const are_you_sure_msg = '{'Are you sure?'|@translate|@escape:'javascript'}'; const confirm_msg = '{'Yes, I am sure'|@translate|@escape}'; const cancel_msg = '{'No, I have changed my mind'|@translate|@escape}'; const str_and_others_tags = '{'and %s others'|@translate|escape:javascript}'; const missingConfirm = "{'You need to confirm deletion'|translate|escape:javascript}"; const missingUsername = "{'Please, enter a login'|translate|escape:javascript}"; const missingPassword = "{'Password is missing. Please enter the password.'|translate|escape:javascript}"; const missingConfPassword = "{'Password confirmation is missing. Please confirm the chosen password.'|translate|escape:javascript}"; const fieldNotEmpty = "{'Name field must not be empty'|@translate|escape:javascript}" const noMatchPassword = "{'The passwords do not match'|@translate|escape:javascript}"; const missingField = "{'Please complete all fields'|@translate|escape:javascript}"; const passwordUpdated = "{'Password updated'|@translate|escape:javascript}"; const passwordCopied = "{'Password copied'|@translate|escape:javascript}"; const copyPassword = "{'Copy password'|@translate|escape:javascript}"; const mailSentAt = "{'Mail sent to %s [%s].'|@translate|escape:javascript}"; const errorMailSent = "{'Error sending email'|@translate|escape:javascript}"; const cannotSendMail = "{'Cannot send an email to this user because he doesn\'t have an email address'|@translate|escape:javascript}"; const mainUserContinue = "{'You are about to set %s as main user instead of %s, do you wish to continue ?'|@translate|escape:javascript}"; const mainUserRewrite = "{'To be sure, please rewrite the word ā%sā below'|@translate|escape:javascript}"; const mainUserValidate = "{'You can now change the main user from %s to %s.'|@translate|escape:javascript}"; const mainUserSuccess = "{'%s is the new main user'|@translate|escape:javascript}"; const mainUserStr = "{'Main user'|@translate|escape:javascript}"; const mainAskWebmaster = "{'You are not authorised to change the main user, please ask your webmaster'|@translate|escape:javascript}"; const mainUserSet = "{'Set as main user'|@translate|escape:javascript}"; const mainUserUpgradeWebmaster = "{'This user must first be defined as the webmaster before it can be upgraded to the main user'|@translate|escape:javascript}"; const errorStr = "{'an error happened'|@translate|escape:javascript}"; const copyLinkStr = "{'Copied link'|@translate|escape:javascript}"; const cantCopy = "{'You cannot copy the password if the connection to this site is not secure.'|@translate|escape:javascript}"; const validLinkMail = "{'An activation link valid for %s has been sent to "%s". If the user doesn\'t receive the link, you can generate and copy a new one by editing the user and managing her password.'|@translate|escape:javascript}"; const validLinkWithoutMail = "{'Copy the link below and send it to the user so the password can be set.'|@translate|escape:javascript}"; const errorMailSentMsg = "{'An activation link valid for %s was created but could not be sent. You can now copy the link below and send it to the user.'|@translate|escape:javascript}"; const registered_str = '{"Registered"|@translate|escape:javascript}'; const last_visit_str = '{"Last visit"|@translate|escape:javascript}'; const dates_infos = '{'between %s and %s'|translate|escape:javascript}' const hide_str = '{'Hide'|@translate|escape:javascript}'; const show_str = '{'Show'|@translate|escape:javascript}'; const user_added_str = '{'User %s added'|@translate|escape:javascript}'; const str_popin_update_btn = '{'Update'|@translate|escape:javascript}'; const filtered_users = '{'%d filtered users'|@translate|escape:javascript}'; const filtered_user = '{'%d filtered user'|@translate|escape:javascript}'; const history_base_url = "{$U_HISTORY}"; const status_to_str = { 'webmaster': "{'user_status_webmaster'|translate}", 'admin': "{'user_status_admin'|translate}", 'normal': "{'user_status_normal'|translate}", 'generic': "{'user_status_generic'|translate}", 'guest': "{'user_status_guest'|translate}", } const view_selector = '{$view_selector}'; const pagination = '{$pagination}'; per_page = parseInt(pagination); months = [ "{'Jan'|@translate}", "{'Feb'|@translate}", "{'Mar'|@translate}", "{'Apr'|@translate}", "{'May'|@translate}", "{'Jun'|@translate}", "{'Jul'|@translate}", "{'Aug'|@translate}", "{'Sep'|@translate}", "{'Oct'|@translate}", "{'Nov'|@translate}", "{'Dec'|@translate}" ]; /* Template variables */ connected_user = {$connected_user}; connected_user_status = "{$connected_user_status}"; owner_id = {$owner}; owner_username = "{$owner_username}"; let groups_arr_name = [{$groups_arr_name}]; let groups_arr_id = [{$groups_arr_id}]; groups_arr = groups_arr_id.map((elem, index) => [elem, groups_arr_name[index]]); guest_id = {$guest_id}; nb_days = "{'%d days'|@translate}"; //per page is too long for the popin nb_photos = "{'%d photos'|@translate}"; nb_photos_per_page = "{'%d photos per page'|@translate}"; pwg_token = '{$PWG_TOKEN}'; has_group = "{$filter_group}"; let register_dates_str = '{$register_dates}'; let register_dates = register_dates_str.split(','); {literal} let groupOptions = groups_arr.map(x => ({value: x[0], label: x[1], isSelected: 0})); {/literal} /* Startup */ setupRegisterDates(register_dates); selectionMode(false); get_guest_info(); update_user_list(); update_selection_content(); $(".icon-help-circled").tipTip({ 'maxWidth':'700px', 'fadeIn': '1000', }); $(document).ready(function() { // Only webmaster can set admin or webmaster to others users if (connected_user_status !== 'webmaster') { $('select[name="status"] option[value="webmaster"], select[name="status"] option[value="admin"]').attr("disabled", true); } // We set the applyAction btn click event here so plugins can add cases to the list // which is not possible if this JS part is in a JS file // see #1571 on Github jQuery("#applyAction").click(function() { let action = jQuery("select[name=selectAction]").prop("value"); let method = 'pwg.users.setInfo'; let data = { pwg_token: pwg_token, user_id: selection.map(x => x.id) }; switch (action) { case 'delete': if (!($("#permitActionUserList .user-list-checkbox[name=confirm_deletion]").attr("data-selected") === "1")) { alert(missingConfirm); return false; } method = 'pwg.users.delete'; break; case 'group_associate': method = 'pwg.groups.addUser'; data.group_id = jQuery("#permitActionUserList select[name=associate]").prop("value"); break; case 'group_dissociate': method = 'pwg.groups.deleteUser'; data.group_id = jQuery("#permitActionUserList select[name=dissociate]").prop("value"); break; case 'status': data.status = jQuery("#permitActionUserList select[name=status]").prop("value"); break; case 'enabled_high': data.enabled_high = $("#permitActionUserList .user-list-checkbox[name=enabled_high_yes]").attr("data-selected") === "1" ? true : false; break; case 'level': data.level = jQuery("#permitActionUserList select[name=level]").val(); break; case 'nb_image_page': data.nb_image_page = jQuery("#permitActionUserList input[name=nb_image_page]").val(); break; case 'theme': data.theme = jQuery("#permitActionUserList select[name=theme]").val(); break; case 'language': data.language = jQuery("#permitActionUserList select[name=language]").val(); break; case 'recent_period': data.recent_period = recent_period_values[$('#permitActionUserList .period-select-bar .slider-bar-container').slider("option", "value")];; break; case 'expand': data.expand = $("#permitActionUserList .user-list-checkbox[name=expand_yes]").attr("data-selected") === "1" ? true : false; break; case 'show_nb_comments': data.show_nb_comments = $("#permitActionUserList .user-list-checkbox[name=show_nb_comments_yes]").attr("data-selected") === "1" ? true : false break; case 'show_nb_hits': data.show_nb_hits = $("#permitActionUserList .user-list-checkbox[name=show_nb_hits_yes]").attr("data-selected") === "1" ? true : false; break; default: alert("Unexpected action"); return false; } jQuery.ajax({ url: "ws.php?format=json&method="+method, type:"POST", data: data, beforeSend: function() { jQuery("#applyActionLoading").show(); jQuery("#applyActionBlock .infos").fadeOut(); }, success:function(data) { jQuery("#applyActionLoading").hide(); jQuery("#applyActionBlock .infos").fadeIn(); jQuery("#applyActionBlock .infos").css("display", "inline-block"); update_user_list(); if (action == 'delete') { selection = []; update_selection_content(); } }, error:function(XMLHttpRequest, textStatus, errorThrows) { jQuery("#applyActionLoading").hide(); } }); return false; }); }); {/footer_script} {combine_script id='user_list' load='footer' path='admin/themes/default/js/user_list.js'} {combine_script id='jquery.cookie' path='themes/default/js/jquery.cookie.js' load='footer'}
{'Selection mode'|@translate}
{'Your selection'|@translate}