![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/keeview_app/html/ |
Upload File : |
hr.email_templates.getValueOfVariableForTemplate = function(employeeIdArray) { return new Promise(function(resolve, reject){ Promise.all([ data_module.loadCompanyInHrDB(), data_module.loadOrgsList(), data_module.loadEmployeesList(), data_module.loadGeographiesList(), data_module.loadEmployeeManagersList(), data_module.loadGeoposOrgsList(), data_module.loadPeoplesList(), data_module.loadUsersList(), data_module.loadPositions2List(), data_module.loadEmployeePositions2List() ]).then(function(rs){ var host = { database: {} }; contentModule.makeDatabaseContent(host, { hr_company: rs[0], orgs: rs[1], employees: rs[2], geopos: rs[3], employee_managers: rs[4], geopos_orgs: rs[5], peoples: rs[6], users: rs[7], positions: rs[8], employee_positions: rs[9] }); host.dict = {}; host.dict.peoples = {}; host.database.peoples.items.forEach((item, i) => { item.content = EncodingClass.string.toVariable(item.content); host.dict.peoples[item.id] = i; }); host.dict.orgs = {}; host.database.orgs.items.forEach((item, i) => { host.dict.orgs[item.id] = i; }); host.database.employees.items.forEach((item, i) => { item.fullname = host.database.peoples.items[host.dict.peoples[item.peopleid]].fullname; }); contentModule.makeEmployeesIndex(host); contentModule.makeOrgsIndex(host); contentModule.makeEmployeePosition2Data(host); // contentModule.makePositionsIndex(host); contentModule.makeGeoposOrgsData(host); contentModule.makeEmployeeManagerData(host); var cpn = {}; var cpnToString = {}; if (host.database.hr_company.name) { cpn.company_name_of_employee = host.database.hr_company.name; cpnToString.company_name_of_employee = host.database.hr_company.name; } if (host.database.hr_company.config) { host.database.hr_company.config = EncodingClass.string.toVariable(host.database.hr_company.config); if (host.database.hr_company.config.address) { cpn.company_address_of_employee = host.database.hr_company.config.address; cpnToString.company_address_of_employee = host.database.hr_company.config.address; } if (host.database.hr_company.config.email) { cpn.company_email_of_employee = host.database.hr_company.config.email; cpnToString.company_email_of_employee = host.database.hr_company.config.email; } if (host.database.hr_company.config.website) { cpn.company_website_of_employee = host.database.hr_company.config.website; cpnToString.company_website_of_employee = host.database.hr_company.config.website; } } else { cpn.company_address_of_employee = ""; cpnToString.company_address_of_employee = ""; cpn.company_email_of_employee = ""; cpnToString.company_email_of_employee = ""; cpn.company_website_of_employee = ""; cpnToString.company_website_of_employee = ""; } host.dict.employees = {}; host.database.employees.items.forEach((item, i) => { host.dict.employees[item.id] = i; }); host.dict.positions = {}; host.database.positions.items.forEach((item, i) => { host.dict.positions[item.id] = i; }); host.dict.geopos = {}; host.database.geopos.items.forEach((item, i) => { host.dict.geopos[item.id] = i; }); var getValueOfVariableForEmployee = function(employeeid){ var retval = { today: new Date(), software_link: window.domain, username: systemconfig.userid, link_to_open_form: window.location.href }; Object.assign(retval, cpn); var retvalToString = { // today: absol.datetime.formatDateTime(new Date(), 'dd/MM/yyyy'), today: new Date(), software_link: window.domain, username: host.database.users.items[host.database.users.getByhomeid(systemconfig.userid)].username, link_to_open_form: window.location.href }; Object.assign(retvalToString, cpnToString); var eIndex = host.dict.employees[employeeid]; var peopleid = host.database.employees.items[eIndex].peopleid; var pIndex = host.dict.peoples[peopleid]; retval.employee_name = employeeid; retvalToString.employee_name = host.database.employees.items[eIndex].fullname; if (host.database.peoples.items[pIndex].content.phone_1) { retval.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_1; retvalToString.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_1; } else if (host.database.peoples.items[pIndex].content.phone_2) { retval.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_2; retvalToString.phonenumber_of_employee = host.database.peoples.items[pIndex].content.phone_2; } else { retval.phonenumber_of_employee = ""; retvalToString.phonenumber_of_employee = ""; } if (host.database.peoples.items[pIndex].content.work_email) { retval.email_of_employee = host.database.peoples.items[pIndex].content.work_email; retvalToString.email_of_employee = host.database.peoples.items[pIndex].content.work_email; } else if (host.database.peoples.items[pIndex].content.private_email) { retval.email_of_employee = host.database.peoples.items[pIndex].content.private_email; retvalToString.email_of_employee = host.database.peoples.items[pIndex].content.private_email; } else { retval.email_of_employee = ""; retvalToString.email_of_employee = ""; } retval.permanent_address = host.database.peoples.items[pIndex].content.permanent_address; retval.probation_start_date = host.database.peoples.items[pIndex].content.start_date; retval.start_date_of_work = host.database.peoples.items[pIndex].content.official_date; retvalToString.permanent_address = host.database.peoples.items[pIndex].content.permanent_address; retvalToString.probation_start_date = host.database.peoples.items[pIndex].content.start_date; retvalToString.start_date_of_work = host.database.peoples.items[pIndex].content.official_date; retval.position_of_employee = host.database.employees.items[eIndex].position; retvalToString.position_of_employee = host.database.employees.items[eIndex].positionName; retval.department_of_employee = host.database.employees.items[eIndex].orgid; retvalToString.department_of_employee = host.database.orgs.items[host.dict.orgs[retval.department_of_employee]].name; var orgid = host.database.employees.items[eIndex].orgid; if (host.database.orgs.items[host.dict.orgs[orgid]].geopos.length > 0) { var geoposContent = host.database.geopos.items[host.dict.geopos[host.database.orgs.items[host.dict.orgs[orgid]].geopos[0]]]; retval.workplace_address_of_employee = geoposContent.address; retvalToString.workplace_address_of_employee = geoposContent.address; retval.workplace_name_of_employee = geoposContent.name; retvalToString.workplace_name_of_employee = geoposContent.name; retval.workplace_gps_address_of_employee = geoposContent.location; retvalToString.workplace_gps_address_of_employee = geoposContent.location; } else { retval.workplace_address_of_employee = ""; retvalToString.workplace_address_of_employee = ""; retval.workplace_name_of_employee = ""; retvalToString.workplace_name_of_employee = ""; retval.workplace_gps_address_of_employee = ""; retvalToString.workplace_gps_address_of_employee = ""; } retval.name_of_support_staff_hr = host.database.peoples.items[pIndex].content.hr_support_employee; retvalToString.name_of_support_staff_hr = ""; if (retval.name_of_support_staff_hr && retval.name_of_support_staff_hr != 0) retvalToString.name_of_support_staff_hr = host.database.employees.items[host.dict.employees[retval.name_of_support_staff_hr]].fullname; if (retval.name_of_support_staff_hr && retval.name_of_support_staff_hr != 0){ var dmIndex = host.dict.employees[retval.name_of_support_staff_hr]; if (dmIndex != 0) { var peopleid = host.database.employees.items[dmIndex].peopleid; var pIndexOfDirectManager = host.dict.peoples[peopleid]; var email, phone, position, depar; if (host.database.peoples.items[pIndexOfDirectManager].content.phone_1) { retval.phonenumber_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; retvalToString.phonenumber_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; } else if (host.database.peoples.items[pIndexOfDirectManager].content.phone_2) { retval.phonenumber_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; retvalToString.phonenumber_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; } else { retval.phonenumber_of_support_staff_hr = ""; retvalToString.phonenumber_of_support_staff_hr = ""; } if (host.database.peoples.items[pIndexOfDirectManager].content.work_email) { retval.email_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.work_email; retvalToString.email_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.work_email; } else if (host.database.peoples.items[pIndexOfDirectManager].content.private_email) { retval.email_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.private_email; retvalToString.email_of_support_staff_hr = host.database.peoples.items[pIndexOfDirectManager].content.private_email; } else { retval.email_of_support_staff_hr = ""; retvalToString.email_of_support_staff_hr = ""; } retval.position_of_support_staff_hr = host.database.employees.items[dmIndex].position; retvalToString.position_of_support_staff_hr = host.database.employees.items[dmIndex].positionName; retval.department_of_support_staff_hr = host.database.employees.items[dmIndex].orgid; retvalToString.department_of_support_staff_hr = host.database.orgs.items[host.dict.orgs[host.database.employees.items[dmIndex].orgid]].name; } } else { retval.email_of_support_staff_hr = ""; retvalToString.email_of_support_staff_hr = ""; retval.phonenumber_of_support_staff_hr = ""; retvalToString.phonenumber_of_support_staff_hr = ""; retval.position_of_support_staff_hr = 0; retvalToString.position_of_support_staff_hr = ""; retval.department_of_support_staff_hr = 0; retvalToString.department_of_support_staff_hr = ""; } retval.name_of_direct_manager = host.database.employees.items[eIndex].direct_manager; retvalToString.name_of_direct_manager = ""; if (retval.name_of_direct_manager != 0) retvalToString.name_of_direct_manager = host.database.employees.items[host.dict.employees[retval.name_of_direct_manager]].fullname; retval.name_of_indirect_manager = host.database.employees.items[eIndex].indirect_manager; retvalToString.name_of_indirect_manager = ""; if (retval.name_of_indirect_manager != 0) retvalToString.name_of_indirect_manager = host.database.employees.items[host.dict.employees[retval.name_of_indirect_manager]].fullname; if (retval.name_of_direct_manager != 0){ var dmIndex = host.dict.employees[retval.name_of_direct_manager]; if (dmIndex != 0) { var peopleid = host.database.employees.items[dmIndex].peopleid; var pIndexOfDirectManager = host.dict.peoples[peopleid]; var email, phone, position, depar; if (host.database.peoples.items[pIndexOfDirectManager].content.phone_1) { retval.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; retvalToString.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; } else if (host.database.peoples.items[pIndexOfDirectManager].content.phone_2) { retval.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; retvalToString.phonenumber_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; } else { retval.phonenumber_of_direct_manager = ""; retvalToString.phonenumber_of_direct_manager = ""; } if (host.database.peoples.items[pIndexOfDirectManager].content.work_email) { retval.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; retvalToString.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; } else if (host.database.peoples.items[pIndexOfDirectManager].content.private_email) { retval.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; retvalToString.email_of_direct_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; } else { retval.email_of_direct_manager = ""; retvalToString.email_of_direct_manager = ""; } retval.position_of_direct_manager = host.database.employees.items[dmIndex].position; retvalToString.position_of_direct_manager = host.database.employees.items[dmIndex].positionName; retval.department_of_direct_manager = host.database.employees.items[dmIndex].orgid; retvalToString.department_of_direct_manager = host.database.orgs.items[host.dict.orgs[host.database.employees.items[dmIndex].orgid]].name; } } else { retval.email_of_direct_manager = ""; retvalToString.email_of_direct_manager = ""; retval.phonenumber_of_direct_manager = ""; retvalToString.phonenumber_of_direct_manager = ""; retval.position_of_direct_manager = 0; retvalToString.position_of_direct_manager = ""; retval.department_of_direct_manager = 0; retvalToString.department_of_direct_manager = ""; } if (retval.name_of_indirect_manager) { var idmIndex = host.dict.employees[retval.name_of_indirect_manager]; if (idmIndex != 0) { var peopleid = host.database.employees.items[idmIndex].peopleid; var pIndex = host.dict.peoples[peopleid]; var email, phone, position, depar; if (host.database.peoples.items[pIndexOfDirectManager].content.phone_1) { retval.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; retvalToString.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_1; } else if (host.database.peoples.items[pIndexOfDirectManager].content.phone_2) { retval.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; retvalToString.phonenumber_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.phone_2; } else { retval.phonenumber_of_indirect_manager = ""; retvalToString.phonenumber_of_indirect_manager = ""; } if (host.database.peoples.items[pIndexOfDirectManager].content.work_email) { retval.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; retvalToString.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.work_email; } else if (host.database.peoples.items[pIndexOfDirectManager].content.private_email) { retval.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; retvalToString.email_of_indirect_manager = host.database.peoples.items[pIndexOfDirectManager].content.private_email; } else { retval.email_of_indirect_manager = ""; retvalToString.email_of_indirect_manager = ""; } retval.position_of_indirect_manager = host.database.employees.items[idmIndex].position; retvalToString.position_of_indirect_manager = host.database.employees.items[idmIndex].positionName; retval.department_of_indirect_manager = host.database.employees.items[idmIndex].orgid; retvalToString.department_of_indirect_manager = host.database.orgs.items[host.dict.orgs[host.database.employees.items[idmIndex].orgid]].name; } } else { retval.email_of_indirect_manager = ""; retvalToString.email_of_indirect_manager = ""; retval.phonenumber_of_indirect_manager = ""; retvalToString.phonenumber_of_indirect_manager = ""; retval.position_of_indirect_manager = 0; retvalToString.position_of_indirect_manager = ""; retval.department_of_indirect_manager = 0; retvalToString.department_of_indirect_manager = ""; } return { originVariable: retval, variableToString: retvalToString }; }; var retval = {}; employeeIdArray.forEach((item, i) => { retval[item] = getValueOfVariableForEmployee(item); }); resolve(retval); }); }); }; hr.email_templates.parseTemplate = function(template, employeeIdArray, examinationPluginVariable) { hr.email_templates.getValueOfVariableForTemplate(employeeIdArray).then(function(rs){ var email_array = []; employeeIdArray.forEach((item, i) => { var originVariable, variableToString; originVariable = Object.assign(rs[item].originVariable, examinationPluginVariable.originVariable); variableToString = Object.assign(rs[item].variableToString, examinationPluginVariable.variableToString); if (template.receiver.startsWith("{{") && template.receiver.endsWith("}}")){ var t_content = {}; t_content.receiver = hr.sclang.executeExpression(template.receiver.substring(3, template.receiver.length - 3), originVariable); if (template.carbon_copy.startsWith("{{") && template.carbon_copy.endsWith("}}")){ t_content.carbon_copy = [hr.sclang.executeExpression(template.carbon_copy.substring(3, template.carbon_copy.length - 3), originVariable)]; } else t_content.carbon_copy = []; if (template.blind_carbon_copy.startsWith("{{") && template.blind_carbon_copy.endsWith("}}")){ t_content.blind_carbon_copy = hr.sclang.executeExpression(template.blind_carbon_copy.substring(3, template.blind_carbon_copy.length - 3), originVariable); } else t_content.blind_carbon_copy = []; t_content.email_content = hr.sclang.executeTemplate(template.email_content, variableToString); t_content.subject = template.subject; email_array.push(t_content); } }); ModalElement.showWindow({ title: "Nội dung email mẫu", bodycontent: absol._({ props: { innerHTML: email_array[0].email_content } }), buttonlist: [ { text: "Gửi mail", onclick: function(){ var processBar = absol._({ id: "progress-bar-id", class: ['progress-bar', 'progress-bar-striped', 'active'], props: { role: "progressbar" }, width: "0%" }) var barContainer = absol._({ child: [ { style: { height: "34px", textAlign: "center" }, child: { tag: 'h2', child: {text: "Đang gửi..."} } }, { class: "progress", style: { width: "600px" }, child: processBar } ] }); ModalElement.show({ index: 24, bodycontent: barContainer }); var run2 = function(data){ return new Promise(function(rs, rj){ FormClass.api_call({ url: "email_template_send.php", params: [ {name: "data", value: EncodingClass.string.fromVariable([data])} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); if (content[0].email_record == 0) { rs(content[0].receiver); } else { rs("ok") } } else { rj(message); } } else { rj(message); } } }); }) } var t = ""; var count = 0; var run = function(idx) { run2(email_array[idx]).then(function(message){ if (message != "ok") { count++; if (t.length > 0) t += ", "; t += message; } if (idx < email_array.length - 1) { var percent = parseInt(((idx + 1) / email_array.length * 100), 10); processBar.style.width = percent+"%"; run(idx + 1); } else { processBar.style.width = "100%"; setTimeout(function(){ ModalElement.closeAll(); if (count > 0) { ModalElement.alert({message: "Gửi mail không thành công tới " + count + "/" + email_array.length + ": " + t }); } }, 500) } }, function(err){console.log(err);}) } run(0); } }, { text: "Hủy", onclick: function(){ ModalElement.close(); } } ] }) }, function(err){console.log(err);}); }; hr.email_templates.deleteEmailTemplate = function(host, id){ return new Promise(function(resolve,reject){ ModalElement.show_loading(); FormClass.api_call({ url: "email_templates_delete.php", params: [{name: "id", value: id}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var index = host.database.email_templates.getIndex(id); host.database.email_templates.items.splice(index, 1); resolve(); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "failed_used"){ ModalElement.alert({ message: LanguageModule.text("war_txt_can_not_delete") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.email_templates.deleteEmailTemplateConfirm = function(host, id){ return new Promise(function(resolve,reject){ var index = host.database.email_templates.getIndex(id); ModalElement.question({ title: LanguageModule.text("war_title_delete_email_template"), message: LanguageModule.text2("war_txt_detele", [host.database.email_templates.items[index].name]), onclick: function(sel){ if (sel == 0){ hr.email_templates.deleteEmailTemplate(host, id).then(function(value){ resolve(value); }); } } }); }); }; hr.email_templates.addEmailTemplatesubmit = function(host, id, getValueFunction){ return new Promise(function(resolve,reject){ var data = getValueFunction(); if (!data) return; var oldData; if (id != 0){ oldData = host.dataEmailTemplateEdit; } else { oldData = { name: "", comment: "", available: 1 }; } var ischange = contentModule.isChanged(oldData, data, [ "name", "comment", "available", "receiver", "carbon_copy", "blind_carbon_copy", "subject", "email_content" ]); if (!ischange){ ModalElement.close(); hr.menu.changeCurrentUrlTab(host, "templates"); return; } for (var i = 0; i < host.database.email_templates.items.length; i++){ if (host.database.email_templates.items[i].id == id) continue; if (host.database.email_templates.items[i].name == data.name){ ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")}); return; } } var rs = { id: id, groupid: data.groupid, name: data.name, comment: data.comment, available: data.available ? 1 : 0 }; rs.content = { receiver: data.receiver, carbon_copy: data.carbon_copy, blind_carbon_copy: data.blind_carbon_copy, subject: data.subject, email_content: data.email_content } if (id != 0){ rs.ver = host.dataEmailTemplateEdit.ver; } else { rs.ver = 1; } rs.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); rs.content = EncodingClass.string.fromVariable(rs.content); ModalElement.show_loading(); FormClass.api_call({ url: "email_template_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(rs)}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.extrainfo = EncodingClass.string.toVariable(st.extrainfo); if (id != 0){ var index = host.database.email_templates.getIndex(id); host.database.email_templates.items[index] = st; host.dataEmailTemplateEdit = host.database.email_templates.items[index]; } else { id = st.id; data.id = id; host.id = id; host.database.email_templates.items.push(st); host.dataEmailTemplateEdit = st; } resolve(hr.email_templates.getCellEmailTemplate(host, id)); ModalElement.close(); hr.menu.changeCurrentUrlTab(host, "templates"); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "deleted" || message == "edited"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_ver_reload_data") }); } else if (message == "exist_name"){ ModalElement.alert({message: LanguageModule.text("war_txt_exist_name")}); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.email_templates.addEmailTemplateClose = function(host, id, getValueFunction, resolve, resolveAdd){ var data = getValueFunction(); if (!data) { ModalElement.close(); ModalElement.close(); hr.menu.changeCurrentUrlTab(host, "templates"); return; } var oldData; if (id != 0){ oldData = host.dataEmailTemplateEdit; } else { oldData = { name: "", comment: "", available: 1 }; } var ischange = contentModule.isChanged(oldData, data, ["name", "comment", "available"]); if (!ischange){ ModalElement.close(); hr.menu.changeCurrentUrlTab(host, "templates"); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ if (host.id == 0){ hr.email_templates.addEmailTemplatesubmit(host, host.id, getValueFunction).then(function(value){ resolveAdd(value); }); } else { hr.email_templates.addEmailTemplatesubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); }); } } else if (sel == 1){ ModalElement.close(); hr.menu.changeCurrentUrlTab(host, "templates"); } } }); }; hr.email_templates.redrawDetails = function(host, id, resolve, resolveAdd){ if (id > 0) hr.menu.changeCurrentUrlTab(host, "email_templates/" + id); host.id = id; function redraw(value){ var formContainer = DOMElement.div({}); ModalElement.showWindow({ title: (id == 0)? LanguageModule.text("txt_add") : LanguageModule.text("txt_edit"), bodycontent: formContainer, buttonlist: [ { text: LanguageModule.text("txt_save"), onclick: function(){ if (host.id == 0){ hr.email_templates.addEmailTemplatesubmit(host, host.id, getValueFunction).then(function(value){ resolveAdd(value); }); } else { hr.email_templates.addEmailTemplatesubmit(host, host.id, getValueFunction).then(function(value){ resolve(value); }); } } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ hr.email_templates.addEmailTemplateClose(host, host.id, getValueFunction, resolve, resolveAdd); } } ] }); var getValueFunction; contentModule.makeFormData({ typeid: host.form_config.email_templates.typeid, formid: host.form_config.email_templates.input_form, initialValue: value, formContainer: formContainer, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){ getValueFunction = getValue; absol.form.traversal(formContainer.formFragment.view, function(item){ if (item.node.tag === "TextInput") { item.node.domElt.focus(); item.stop(); return; } if (id < 0){ var activeElt = absol.form.findComponent(formContainer.formFragment.view, { name: 'type_email_template_active', depth: false }); if (activeElt) activeElt.attributes.disabled = true; } }); }); }; if (id != 0){ redraw(host.dataEmailTemplateEdit); } else { redraw({groupid: host.groupidToAddNewRecord}); } }; hr.email_templates.addEmailTemplate = function(host, id, resolve, resolveAdd){ if (id == 0){ var groupItems = host.database.template_groups.items.map(function(elt){ return { value: elt.id, text: elt.name, sortText: absol.string.nonAccentVietnamese(elt.name.toLowerCase()) }; }); groupItems.sort(function(a, b){ if (a.sortText > b.sortText) return 1; if (a.sortText < b.sortText) return -1; return 0; }); host.funcs.formEmailTemplateChooseGroup(groupItems).then(function(value){ if (value === null) return; host.groupidToAddNewRecord = value; hr.email_templates.redrawDetails(host, id, resolve, resolveAdd); }); } else { if (host.database.email_templates.getIndex(id) < 0) return; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "email_templates_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); if (st.id !== undefined){ st.content = EncodingClass.string.toVariable(st.content); st.receiver = st.content.receiver; st.carbon_copy = st.content.carbon_copy; st.blind_carbon_copy = st.content.blind_carbon_copy; st.subject = st.content.subject; st.email_content = st.content.email_content; host.dataEmailTemplateEdit = st; if (host.dataEmailTemplateEdit.extrainfo == "") host.dataEmailTemplateEdit.extrainfo = {}; else host.dataEmailTemplateEdit.extrainfo = EncodingClass.string.toVariable(host.dataEmailTemplateEdit.extrainfo); } else { var index = host.database.email_templates.getIndex(id); host.dataEmailTemplateEdit = host.database.email_templates.items[index]; host.dataEmailTemplateEdit.content = EncodingClass.string.toVariable(host.dataEmailTemplateEdit.content); host.dataEmailTemplateEdit.receiver = host.dataEmailTemplateEdit.content.receiver; host.dataEmailTemplateEdit.carbon_copy = host.dataEmailTemplateEdit.content.carbon_copy; host.dataEmailTemplateEdit.blind_carbon_copy = host.dataEmailTemplateEdit.content.blind_carbon_copy; host.dataEmailTemplateEdit.subject = host.dataEmailTemplateEdit.content.subject; host.dataEmailTemplateEdit.email_content = host.dataEmailTemplateEdit.content.email_content; } hr.email_templates.redrawDetails(host, id, resolve, resolveAdd); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.email_templates.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } }; hr.email_templates.getCellEmailTemplate = function(host, id){ var index = host.database.email_templates.getIndex(id); var func = { edit: function(resolve){ if (id < 0) return; hr.email_templates.addEmailTemplate(host, id, resolve); } }; if (id > 0) func.delete = function(){ return new Promise(function(resolve,reject){ hr.email_templates.deleteEmailTemplateConfirm(host, id).then(function(value){ resolve(value); }); }); }; var res = host.database.email_templates.items[index]; res.func = func; return res; }; hr.email_templates.redraw = function(host, groupid){ var displayDic = { name: true, groupid: true, available: true }; var columnList = contentModule.getColumnListFromDatatype(host, "email_templates", displayDic); var redrawTableFunc = function(){ var data = []; for (var i = 0; i < host.database.email_templates.items.length; i++){ if (groupid == 0 || host.database.email_templates.items[i].groupid == groupid) { data.push(hr.email_templates.getCellEmailTemplate(host, host.database.email_templates.items[i].id)); } } contentModule.getColumnListConfig(host, host.user_column_configsDic, columnList, "email_template_list").then(function(value){ host.configColumnEmailTemplates = value; host.dataView = host.funcs.formEmailTemplatesContentData({ data: data, inputsearchbox: host.inputsearchbox, configColumnEmailTemplates: host.configColumnEmailTemplates, configColumnFunc: function(){ contentModule.userColumnConfigForm({ type: "email_template_list", columnList: columnList }).then(function(value){ host.user_column_configsDic["email_template_list"] = value; redrawTableFunc(); }); } }); host.data_container.appendChild(host.dataView); }); }; redrawTableFunc(); }; hr.email_templates.init = function(host){ return new Promise(function(resolveMn, rejectMn){ hr.menu.changeCurrentUrlTab(host, "templates"); host.database = {}; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "email_templates_load_init"} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); contentModule.makeDatabaseContent(host, content); host.database.template_groups.items.unshift({ id: -1, name: LanguageModule.text("txt_onboarding"), comment: "", extrainfo: "obj#0#", available: 1, ver: 1 }); host.database.template_groups.items.unshift({ id: -2, name: "Khác...", comment: "", extrainfo: "obj#0#", available: 1, ver: 1 }); host.database.email_templates.items.forEach(function(elt){ elt.content = EncodingClass.string.toVariable(elt.content); elt.receiver = elt.content.receiver, elt.carbon_copy = elt.content.carbon_copy, elt.blind_carbon_copy = elt.content.blind_carbon_copy, elt.subject = elt.content.subject, elt.content = elt.content.content }); host.form_config = contentModule.configVariable(host); contentModule.makeInputFormDecode(host.database.input_forms.items); hr.input_form.loadFormConstructorToAssembler(host.database.input_forms.items, host.database.typelists.items); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); host.inputsearchbox = absol.buildDom({ tag:'searchcrosstextinput', style: { width: "var(--searchbox-width)" }, props:{ placeholder: LanguageModule.text("txt_search") } }); var cmdbutton = { close: function(host){ return function (event, me) { if (hr.isMobile){ host.holder.selfRemove(); hr.menu.loadPage(100); } else { hr.menu.tabPanel.removeTab(host.holder.id); } } } (host), add: function(host){ return function (event, me) { hr.email_templates.addEmailTemplate(host, 0, function onSave(value){ host.newRecord = host.newRecord.updateCurrentRow(host.funcs.formEmailTemplateGetRow(host.configColumnEmailTemplates, value)); }, function onAdd(value){ host.newRecord = host.dataView.insertRow(host.funcs.formEmailTemplateGetRow(host.configColumnEmailTemplates, value)); }); } } (host) }; host.groupid = 0; var groupItems = host.database.template_groups.items.map(function(elt){ return {value: elt.id, text: elt.name}; }); groupItems.unshift({value: 0, text: LanguageModule.text("txt_all")}); var groupChange = function(host){ return function(groupid){ hr.email_templates.redraw(host, groupid); } }(host); host.data_container = DOMElement.div({attrs: {style: {paddingBottom: "var(--footer-margin)"}}}); host.holder.addChild(host.frameList); var singlePage = host.funcs.formEmailTemplatesInit({ cmdbutton: cmdbutton, data_container: host.data_container, inputsearchbox: host.inputsearchbox, groupItems: groupItems, groupChange: groupChange }); host.frameList.addChild(singlePage); singlePage.requestActive(); hr.email_templates.redraw(host, 0); resolveMn(host); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); };