![]() 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/tech_preview/hr/ |
Upload File : |
hr.contact.deleteContact = function(host, id){ return new Promise(function(resolve,reject){ ModalElement.show_loading(); FormClass.api_call({ url: "contact_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.contact.getIndex(id); host.database.contact.items.splice(index, 1); if (data_module.contactReady){ var index = data_module.contact.getIndex(id); data_module.contact.items.splice(index, 1); } var randomId = contentModule.generateRandom(); data_module.listMessRandomCreate[randomId] = true; hr.sendMessageFunc({ messageType: "change_data_module", table: "contact", randomId: randomId }); 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.contact.deleteContactConfirm = function(host, id){ return new Promise(function(resolve,reject){ var index = host.database.contact.getIndex(id); ModalElement.question({ title: LanguageModule.text("war_title_delete_contact"), message: LanguageModule.text2("war_txt_detele", [host.database.contact.items[index].name]), onclick: function(sel){ if (sel == 0){ hr.contact.deleteContact(host, id).then(function(value){ resolve(value); }); } } }); }); }; hr.contact.addContactSubmitFunc = function(host, id, getValueFunction){ return new Promise(function(resolve,reject){ var data = getValueFunction(); if (!data) return; var saveFunc = function(){ if (id > 0){ var oldData = host.dataContactEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "position", "department", "partnerid", "phone_1", "email_1", "phone_2", "email_2", "owner", "available", "extrainfo"] ); if (!ischange){ resolve(oldData); return; } } data.id = id; data.available = data.available? 1 : 0; if (id > 0){ var index = host.database.contact.getIndex(id); data.ver = host.dataContactEdit.ver; } else { data.ver = 1; } data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); ModalElement.show_loading(); FormClass.api_call({ url: "contact_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], 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 (systemconfig.privSystem >= 2 || host.employeeEditContactDic[st.owner]) resolve(st); else resolve(); if (data_module.contactReady){ if (id > 0){ var index = data_module.contact.getIndex(id); if (index >= 0) data_module.contact.items[index] = st; } else { data_module.contact.items.push(st); } } var randomId = contentModule.generateRandom(); data_module.listMessRandomCreate[randomId] = true; hr.sendMessageFunc({ messageType: "change_data_module", table: "contact", randomId: randomId }); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "deleted" || message == "edited"){ data_module.loadDataContactGlobal(); 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}); } } }); }; if (systemconfig.privSystem < 2 && !host.employeeEditContactDic[data.owner]){ ModalElement.question({ title: LanguageModule.text("txt_warning"), message: "Bạn sẽ mất quyền với liên hệ này.", onclick: function(sel){ if (sel == 0){ saveFunc(); } } }); return; } else { saveFunc(); }; }); }; hr.contact.addContactSubmit = function(host, id, getValueFunction){ return new Promise(function(resolve, reject) { hr.contact.addContactSubmitFunc(host, id, getValueFunction).then(function(st){ resolve(); if (!st){ if (id > 0){ var index = host.database.contact.getIndex(id); host.database.contact.items.splice(index, 1); host.frameList.removeLast(); if (!host.quick_open) hr.contact.redraw(host); } } else { if (id > 0){ var index = host.database.contact.getIndex(id); st.marked = host.database.contact.items[index].marked; host.database.contact.items[index] = st; host.dataContactEdit = host.database.contact.items[index]; host.drawContactViewFunc(host.viewContact); } else { id = st.id; host.database.contact.items.push(st); hr.contact.showContactPre(host, id); } setTimeout(function(){ if (!host.quick_open) hr.contact.redraw(host); }, 50); } }); }); }; hr.contact.addContactClose = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction("no_alert"); if (!data) { resolve(); return; } if (id > 0){ var oldData = host.dataContactEdit; var ischange = contentModule.isChanged(oldData, data, ["name", "position", "department", "partnerid", "phone_1", "email_1", "phone_2", "email_2", "owner", "available", "extrainfo"] ); } else { var ischange = false; } if (!ischange){ resolve(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ hr.contact.addContactSubmit(host, host.contactid, getValueFunction).then(function(value){ resolve(); }); } else if (sel == 1){ resolve(); } } }); }); }; hr.contact.redrawDetails = function(host, id){ host.contactid = id; function redraw(value){ var formContainer = DOMElement.div({}); theme.formContactEdit({ title: (id == 0)? LanguageModule.text("txt_add") : LanguageModule.text("txt_edit"), formContainer: formContainer, frameList: host.frameList, func: { save: function(){ return hr.contact.addContactSubmit(host, host.contactid, getValueFunction); }, cancel: function(){ return hr.contact.addContactClose(host, host.contactid, getValueFunction); } } }); var getValueFunction; contentModule.makeFormData({ typeid: host.form_config.contact.typeid, formid: host.form_config.contact.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; } }); formContainer.formFragment.afterEntryCompleted().then(function(){ if (host.fromPartner){ var elt = absol.form.findComponent(formContainer.formFragment.view, { name: 'type_contact_partnerid', depth: false }); if (elt){ elt.attributes.value = host.partnerid; var lastPartnerID = host.partnerid; elt.domElt.on("change", function(){ if (lastPartnerID == host.partnerid && this.value != host.partnerid){ var oldPartnerName = ""; var items = elt.domElt.items; for (var i = 0; i < items.length; i++){ if (items[i].value == host.partnerid){ oldPartnerName = items[i].text; break; } } var message; if (this.value == 0){ message = LanguageModule.text2("war_txt_warning_change_partner_of_contact_no_select", [oldPartnerName]); } else { var newPartnerName = ""; for (var i = 0; i < items.length; i++){ if (items[i].value == this.value){ newPartnerName = items[i].text; break; } } message = LanguageModule.text2("war_txt_warning_change_partner_of_contact", [oldPartnerName, newPartnerName]); } ModalElement.question({ message: message, onclick: function(sel){ if (sel == 1){ elt.attributes.value = host.partnerid; lastPartnerID = host.partnerid; } } }); } lastPartnerID = this.value; }); } } if (id == 0 && host.employeeOfMe.length > 0){ var elt = absol.form.findComponent(formContainer.formFragment.view, { name: 'type_contact_owner', depth: false }); if (elt){ elt.attributes.value = host.employeeOfMe[0]; } } }); }); }; if (id == 0){ redraw(); } else { redraw(host.dataContactEdit); } }; hr.contact.addContact = function(host, id){ if (id == 0){ hr.contact.redrawDetails(host, id); } else { ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "contact_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ host.dataContactEdit = EncodingClass.string.toVariable(message.substr(2)); if (host.dataContactEdit.extrainfo == "") host.dataContactEdit.extrainfo = {}; else host.dataContactEdit.extrainfo = EncodingClass.string.toVariable(host.dataContactEdit.extrainfo); if ((host.dataContactEdit.nationid != 0) && (host.dataContactEdit.cityid != 0)){ host.dataContactEdit.nation_city = [host.dataContactEdit.nationid, host.dataContactEdit.cityid]; } else { host.dataContactEdit.nation_city = null; } hr.contact.redrawDetails(host, id); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.contact.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } }; hr.contact.showContact = function(host, id){ host.contactid = id; host.drawContactViewFunc = function(viewContact){ host.viewContact = viewContact; DOMElement.removeAllChildren(host.nameViewCtn); host.nameViewCtn.appendChild(DOMElement.span({ attrs: {style: {fontWeight: "bold"}}, text: host.dataContactEdit.name })); contentModule.makeOutputFormData({ typeid: host.form_config.contact.typeid, formid: host.form_config.contact.output_form, initialValue: host.dataContactEdit, formContainer: host.viewContact, typelists: host.database.typelists.items, variableType: "system" }).then(function(getValue){}); }; theme.formContactShow(host, { func: { editContact: function(){ hr.contact.addContact(host, host.contactid); } }, quick_open: host.quick_open }); }; hr.contact.showContactPre = function(host, id){ ModalElement.show_loading(); if (host.quick_open){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "contact_load_by_id_quick"}, {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)); host.employeeOfMe = st.employeeOfMe; delete st.employeeOfMe; host.database = {}; contentModule.makeDatabaseContent(host, st); host.form_config = contentModule.configVariable(host); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); var index = host.database.contact.getIndex(id); host.dataContactEdit = host.database.contact.items[index]; hr.contact.showContact(host, id); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } else { FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "contact_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ host.dataContactEdit = EncodingClass.string.toVariable(message.substr(2)); if (host.dataContactEdit.extrainfo == "") host.dataContactEdit.extrainfo = {}; else host.dataContactEdit.extrainfo = EncodingClass.string.toVariable(host.dataContactEdit.extrainfo); hr.contact.showContact(host, id); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.contact.init(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } }; hr.contact.getCellContact = function(host, item){ var func = { view: function(){ hr.contact.showContactPre(host, item.id); }, markedFunc: function(id, marked){ return contentModule.markedFunc(host, { id: id, marked: marked, task: "contact", tablename: "contact" }); } }; func.delete = function(){ return new Promise(function(resolve,reject){ hr.contact.deleteContactConfirm(host, item.id).then(function(value){ resolve(value); }); }); }; var res = item; if (systemconfig.privSystem < 2 && !host.employeeEditContactDic[item.owner]){ return null; } res.func = func; return res; }; hr.contact.loadLazyData = function(host){ if (!host.data_container.insertData){ setTimeout(function(){ hr.contact.loadLazyData(host); }, 50); return; } ModalElement.close(-1); data_module.loadContactFunc({ process: function (host) { return function (content) { var st = { contact: content.contact, done: (content.finished) ? 1 : 0, user_marked: host.database.user_marked.items }; var x = { database: {} } host.done = st.done; contentModule.makeDatabaseContent(x, st); host.data_container.insertData(x.database.contact.items); host.database.contact.items = host.database.contact.items.concat(x.database.contact.items); contentModule.makeUserMarkerData(host, "contact"); } } (host), sort: true }); }; hr.contact.redraw = function(host){ host.dataContentTable = { database: host.database, inputsearchbox: host.inputsearchbox, marked_view_elt: host.marked_view_elt, ctn: host.data_container, form_config: host.form_config, user_column_configsDic: host.user_column_configsDic, inputidboxes: host.inputidboxes, listContactMerge: host.listContactMerge, merge_ing: host.merge_ing, getCellContact: function(item){ return hr.contact.getCellContact(host, item); } }; theme.formContactContentData(host.dataContentTable); }; hr.contact.mergeSubmit = function(host, list, data){ var mainData = contentModule.getContactMainData(); var value = {}; for (var x in mainData){ value[mainData[x]] = data[x]; delete data[x]; } value.extrainfo = data; var idList = []; for (var i = 0; i < list.length; i++){ idList.push(list[i].id); } value.extrainfo = EncodingClass.string.fromVariable(value.extrainfo); ModalElement.show_loading(); FormClass.api_call({ url: "contact_merge_save.php", params: [ {name: "data", value: EncodingClass.string.fromVariable(value)}, {name: "idList", value: EncodingClass.string.fromVariable(idList)} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); var idDic = {}; for (var i = 0; i < idList.length; i++){ idDic[idList[i]] = true; } host.database.contact.items = host.database.contact.items.filter(function(item){ return !idDic[item.id]; }); host.database.contact.items.unshift(st); host.frameList.removeLast(); host.listContactMerge = {}; host.inputidboxes = {}; hr.contact.redraw(host); if (data_module.contactReady){ var idDic = {}; for (var i = 0; i < idList.length; i++){ idDic[idList[i]] = true; } data_module.contact.items = data_module.contact.items.filter(function(item){ return !idDic[item.id]; }); data_module.contact.items.push(st); } var randomId = contentModule.generateRandom(); data_module.listMessRandomCreate[randomId] = true; hr.sendMessageFunc({ messageType: "change_data_module", table: "contact", randomId: randomId }); } else if (message == "deleted"){ data_module.loadDataContactGlobal(); ModalElement.alert({ message: LanguageModule.text("war_txt_failed_ver_reload_data") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.contact.redrawMerge = function(host, list){ var dict = {}; host.database.typelists.items.forEach(function (elt, index) { dict[elt.id] = elt; }); var mainData = contentModule.getMainData(host.form_config.contact.typeid, dict); var listData = [], data; for (var i = 0; i < list.length; i++){ data = {}; for (var x in mainData){ data[x] = list[i][mainData[x]]; } for (var x in list[i].extrainfo){ data[x] = list[i].extrainfo[x]; } listData.push(data); } var mTool; host.typelistsDic = contentModule.makeDictionaryIndex(host.database.typelists.items); ModalElement.show_loading(); contentModule.getFieldsMergeByTypeID(host, host.form_config.contact.typeid).then(function(descriptor){ descriptor.displayName = LanguageModule.text("txt_general_information"); ModalElement.close(-1); mTool = absol.buildDom({ tag: 'objectmergetool', props: { objects: listData, descriptor: descriptor } }); data_ctn.appendChild(mTool); }); var data_ctn = DOMElement.div({}); var singlePage = absol.buildDom({ tag: "singlepage", child: [ DOMElement.div({ attrs: {className: 'button-panel-header absol-single-page-header'}, children: [ DOMElement.div({ attrs: {className: "single-button-header"}, children: [theme.backButton({ onclick: function(){ host.frameList.removeLast(); } })] }), DOMElement.div({ attrs: {className: "single-button-header"}, children: [theme.saveButton({ onclick: function(){ hr.contact.mergeSubmit(host, list, mTool.data); } })] }) ] }), data_ctn ] }); host.frameList.addChild(singlePage); singlePage.requestActive(); }; hr.contact.merge = function(host){ if (host.merge_ing){ ModalElement.close(-1); var list = []; for (var i = 0; i < host.database.contact.items.length; i++){ if (host.inputidboxes[host.database.contact.items[i].id] && host.inputidboxes[host.database.contact.items[i].id].checked){ list.push(host.database.contact.items[i]); } } if (list.length < 2){ ModalElement.alert({message: "Bạn phải chọn ít nhất 2 liên hệ để trộn"}); return; } hr.contact.redrawMerge(host, list); } else { if (!host.dataContentTable.tableView){ setTimeout(function(){ hr.contact.merge(host); }, 50); return; } ModalElement.close(-1); host.dataContentTable.tableView.hiddenColumns = []; host.merge_ing = true; host.back_btn_ctn.classList.remove("hidden"); host.close_btn_ctn.classList.add("hidden"); host.add_btn_ctn.classList.add("hidden"); } }; hr.contact.init = function(host){ return new Promise(function(resolveMn, rejectMn){ hr.menu.changeCurrentUrlTab(host, "contact"); host.database = {}; var loadContact = !data_module.contactReady; host.merge_ing = false; host.listContactMerge = {}; host.inputidboxes = {}; ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: loadContact? "contact_load_init" : "contact_load_init_no_load_contact"} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); host.done = content.done; delete content.done; host.employeeOfMe = content.employeeOfMe; delete content.employeeOfMe; contentModule.makeDatabaseContent(host, content); if (!loadContact){ contentModule.makeDatabaseContent(host, { contact: EncodingClass.string.duplicate(data_module.contact.items) }); } else { host.conditionContact = ""; if (host.database.user_marked.items.length > 0){ for (var i = 0; i < host.database.user_marked.items.length; i++){ if (i > 0) host.conditionContact += " AND "; host.conditionContact += "(id <> " + host.database.user_marked.items[i].taskid + ")"; } } } host.form_config = contentModule.configVariable(host); contentModule.makeOrgsIndex(host); contentModule.makeEmployeeData(host); contentModule.makeEmployeesIndex(host); contentModule.makeEmployeeGroupMemberIndex(host); contentModule.makePrivilegesContactConfigs(host); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); contentModule.makeUserMarkerData(host, "contact"); if (!loadContact){ host.database.contact.items.sort(function(a, b){ if (b.marked > a.marked) return 1; if (b.marked < a.marked) return -1; return a.name - b.name; }); } var holderForSort = host.database.contact.items.map(function(item){ return { item: item, val: absol.string.nonAccentVietnamese(item.name.toLowerCase()) } }); holderForSort.sort(function(a, b){ if (a.val < b.val) return -1; if (a.val > b.val) return 1; return 0; }); host.database.contact.items = holderForSort.map(function(holder){ return holder.item; }); var cmdbutton = { close: function (event, me) { if (hr.isMobile){ host.holder.selfRemove(); hr.menu.loadPage(1000); } else { hr.menu.tabPanel.removeTab(host.holder.id); } }, add: function (event, me) { hr.contact.addContact(host, 0); }, merge: function(){ ModalElement.show_loading(); hr.contact.merge(host); }, back: function(){ host.dataContentTable.tableView.hiddenColumns = [1]; host.merge_ing = false; host.back_btn_ctn.classList.add("hidden"); host.close_btn_ctn.classList.remove("hidden"); host.add_btn_ctn.classList.remove("hidden"); } }; host.data_container = DOMElement.div({}); host.holder.addChild(host.frameList); var singlePage = theme.formContactInit({ cmdbutton: cmdbutton, data_container: host.data_container }); host.inputsearchbox = singlePage.inputsearchbox; host.marked_view_elt = singlePage.marked_view_elt; host.close_btn_ctn = singlePage.close_btn_ctn; host.back_btn_ctn = singlePage.back_btn_ctn; host.add_btn_ctn = singlePage.add_btn_ctn; host.frameList.addChild(singlePage); singlePage.requestActive(); hr.contact.redraw(host); hr.contact.loadLazyData(host); resolveMn(host); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); };