1 line
9.1 KiB
JavaScript
Executable File
1 line
9.1 KiB
JavaScript
Executable File
"use strict";App.Pages.Admins=function(){function filter(keyword){var selectId=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,show=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2];App.Http.Admins.search(keyword,filterLimit).then(function(response){filterResults=response,$filterAdmins.find(".results").empty(),response.forEach(function(admin){$filterAdmins.find(".results").append(App.Pages.Admins.getFilterHtml(admin)).append($("<hr/>"))}),response.length?response.length===filterLimit&&$("<button/>",{type:"button",class:"btn btn-outline-secondary w-100 load-more text-center",text:lang("load_more"),click:function click(){filterLimit+=20,App.Pages.Admins.filter(keyword,selectId,show)}}).appendTo("#filter-admins .results"):$filterAdmins.find(".results").append($("<em/>",{text:lang("no_records_found")})),selectId&&App.Pages.Admins.select(selectId,show)})}function select(id){var show=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1];if($filterAdmins.find(".selected").removeClass("selected"),$filterAdmins.find(".admin-row[data-id=\""+id+"\"]").addClass("selected"),show){var admin=filterResults.find(function(filterResult){return+filterResult.id===+id});App.Pages.Admins.display(admin),$("#edit-admin, #delete-admin").prop("disabled",!1)}}var $admins=$("#admins"),$id=$("#id"),$firstName=$("#first-name"),$lastName=$("#last-name"),$email=$("#email"),$mobileNumber=$("#mobile-number"),$phoneNumber=$("#phone-number"),$address=$("#address"),$city=$("#city"),$state=$("#state"),$zipCode=$("#zip-code"),$notes=$("#notes"),$language=$("#language"),$timezone=$("#timezone"),$ldapDn=$("#ldap-dn"),$username=$("#username"),$password=$("#password"),$passwordConfirmation=$("#password-confirm"),$notifications=$("#notifications"),$calendarView=$("#calendar-view"),$filterAdmins=$("#filter-admins"),filterResults={},filterLimit=20;return document.addEventListener("DOMContentLoaded",function initialize(){App.Pages.Admins.resetForm(),App.Pages.Admins.filter(""),App.Pages.Admins.addEventListeners()}),{filter:filter,save:function save(admin){App.Http.Admins.save(admin).then(function(response){App.Layouts.Backend.displayNotification(lang("admin_saved")),App.Pages.Admins.resetForm(),$("#filter-admins .key").val(""),App.Pages.Admins.filter("",response.id,!0)})},remove:function remove(id){App.Http.Admins.destroy(id).then(function(){App.Layouts.Backend.displayNotification(lang("admin_deleted")),App.Pages.Admins.resetForm(),App.Pages.Admins.filter($("#filter-admins .key").val())})},validate:function validate(){$admins.find(".is-invalid").removeClass("is-invalid");try{var missingRequired=!1;if($admins.find(".required").each(function(index,requiredField){$(requiredField).val()||($(requiredField).addClass("is-invalid"),missingRequired=!0)}),missingRequired)throw new Error("Fields with * are required.");if($password.val()!==$passwordConfirmation.val())throw $("#password, #password-confirm").addClass("is-invalid"),new Error(lang("passwords_mismatch"));if($password.val().length<vars("min_password_length")&&""!==$password.val())throw $("#password, #password-confirm").addClass("is-invalid"),new Error(lang("password_length_notice").replace("$number",vars("min_password_length")));if(!App.Utils.Validation.email($email.val()))throw $email.addClass("is-invalid"),new Error(lang("invalid_email"));var phoneNumber=$phoneNumber.val();if(phoneNumber&&!App.Utils.Validation.phone(phoneNumber))throw $phoneNumber.addClass("is-invalid"),new Error(lang("invalid_phone"));var mobileNumber=$mobileNumber.val();if(mobileNumber&&!App.Utils.Validation.phone(mobileNumber))throw $mobileNumber.addClass("is-invalid"),new Error(lang("invalid_phone"));if("true"===$username.attr("already-exists"))throw $username.addClass("is-invalid"),new Error(lang("username_already_exists"));return!0}catch(error){return $admins.find(".form-message").addClass("alert-danger").text(error.message).show(),!1}},getFilterHtml:function getFilterHtml(admin){var name=admin.first_name+" "+admin.last_name,info=admin.email;return info=admin.mobile_number?info+", "+admin.mobile_number:info,info=admin.phone_number?info+", "+admin.phone_number:info,$("<div/>",{class:"admin-row entry","data-id":admin.id,html:[$("<strong/>",{text:name}),$("<br/>"),$("<small/>",{class:"text-muted",text:info}),$("<br/>")]})},resetForm:function resetForm(){$("#filter-admins .selected").removeClass("selected"),$("#filter-admins button").prop("disabled",!1),$("#filter-admins .results").css("color",""),$admins.find(".add-edit-delete-group").show(),$admins.find(".save-cancel-group").hide(),$admins.find(".record-details").find("input, select, textarea").val("").prop("disabled",!0),$admins.find(".record-details .form-label span").prop("hidden",!0),$admins.find(".record-details #calendar-view").val("default"),$admins.find(".record-details #language").val(vars("default_language")),$admins.find(".record-details #timezone").val(vars("default_timezone")),$admins.find(".record-details #notifications").prop("checked",!0),$("#edit-admin, #delete-admin").prop("disabled",!0),$("#admins .is-invalid").removeClass("is-invalid"),$("#admins .form-message").hide()},display:function display(admin){$id.val(admin.id),$firstName.val(admin.first_name),$lastName.val(admin.last_name),$email.val(admin.email),$mobileNumber.val(admin.mobile_number),$phoneNumber.val(admin.phone_number),$address.val(admin.address),$city.val(admin.city),$state.val(admin.state),$zipCode.val(admin.zip_code),$notes.val(admin.notes),$language.val(admin.language),$timezone.val(admin.timezone),$ldapDn.val(admin.ldap_dn),$username.val(admin.settings.username),$calendarView.val(admin.settings.calendar_view),$notifications.prop("checked",!!+admin.settings.notifications)},select:select,addEventListeners:function addEventListeners(){$admins.on("blur","#username",function(event){var $input=$(event.currentTarget);if(!0!==$input.prop("readonly")&&""!==$input.val()){var adminId=$input.parents().eq(2).find(".record-id").val();if(adminId){var username=$input.val();App.Http.Account.validateUsername(adminId,username).done(function(response){"false"===response.is_valid?($input.addClass("is-invalid"),$input.attr("already-exists","true"),$input.parents().eq(3).find(".form-message").text(lang("username_already_exists")),$input.parents().eq(3).find(".form-message").show()):($input.removeClass("is-invalid"),$input.attr("already-exists","false"),$input.parents().eq(3).find(".form-message").text()===lang("username_already_exists")&&$input.parents().eq(3).find(".form-message").hide())})}}}),$admins.on("submit","#filter-admins form",function(event){event.preventDefault();var key=$("#filter-admins .key").val();$("#filter-admins .selected").removeClass("selected"),App.Pages.Admins.resetForm(),App.Pages.Admins.filter(key)}),$admins.on("click",".admin-row",function(event){if($("#filter-admins .filter").prop("disabled"))return void $("#filter-admins .results").css("color","#AAA");var adminId=$(event.currentTarget).attr("data-id"),admin=filterResults.find(function(filterResult){return+filterResult.id===+adminId});App.Pages.Admins.display(admin),$("#filter-admins .selected").removeClass("selected"),$(event.currentTarget).addClass("selected"),$("#edit-admin, #delete-admin").prop("disabled",!1)}),$admins.on("click","#add-admin",function(){App.Pages.Admins.resetForm(),$admins.find(".add-edit-delete-group").hide(),$admins.find(".save-cancel-group").show(),$admins.find(".record-details").find("input, select, textarea").prop("disabled",!1),$admins.find(".record-details .form-label span").prop("hidden",!1),$("#password, #password-confirm").addClass("required"),$("#filter-admins button").prop("disabled",!0),$("#filter-admins .results").css("color","#AAA")}),$admins.on("click","#edit-admin",function(){$admins.find(".add-edit-delete-group").hide(),$admins.find(".save-cancel-group").show(),$admins.find(".record-details").find("input, select, textarea").prop("disabled",!1),$admins.find(".record-details .form-label span").prop("hidden",!1),$("#password, #password-confirm").removeClass("required"),$("#filter-admins button").prop("disabled",!0),$("#filter-admins .results").css("color","#AAA")}),$admins.on("click","#delete-admin",function(){var adminId=$id.val(),buttons=[{text:lang("cancel"),click:function click(event,messageModal){messageModal.hide()}},{text:lang("delete"),click:function click(event,messageModal){App.Pages.Admins.remove(adminId),messageModal.hide()}}];App.Utils.Message.show(lang("delete_admin"),lang("delete_record_prompt"),buttons)}),$admins.on("click","#save-admin",function(){var admin={first_name:$firstName.val(),last_name:$lastName.val(),email:$email.val(),mobile_number:$mobileNumber.val(),phone_number:$phoneNumber.val(),address:$address.val(),city:$city.val(),state:$state.val(),zip_code:$zipCode.val(),notes:$notes.val(),language:$language.val(),timezone:$timezone.val(),ldap_dn:$ldapDn.val(),settings:{username:$username.val(),notifications:+$notifications.prop("checked"),calendar_view:$calendarView.val()}};""!==$password.val()&&(admin.settings.password=$password.val()),""!==$id.val()&&(admin.id=$id.val()),App.Pages.Admins.validate()&&App.Pages.Admins.save(admin)}),$admins.on("click","#cancel-admin",function(){var id=$id.val();App.Pages.Admins.resetForm(),id&&App.Pages.Admins.select(id,!0)})}}}(); |