Created
December 5, 2023 18:51
-
-
Save PechenkiUA/b667cfdd80d7c6a51463c111e002a07c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<modification> | |
<name>Coder hide fields settings</name> | |
<code>Coder_hide_fields_settings</code> | |
<version>0.1</version> | |
<author>coder</author> | |
<link>https://coder.org.ua</link> | |
<file path="admin/controller/setting/setting.php"> | |
<operation> | |
<search trim="true"><![CDATA[ | |
$this->model_setting_setting->editSetting('config', $this->request->post); | |
]]></search> | |
<add position="after"><![CDATA[ | |
if ($this->request->post && isset($this->request->post['settingshidden_hideFields'])){ | |
if (isset($this->request->post['settingshidden_hideTabs'])) { | |
$this->request->post['settingshidden_hideTabs'] = json_encode($this->request->post['settingshidden_hideTabs']); | |
} | |
if (isset($this->request->post['settingshidden_hideFields'])) { | |
$this->request->post['settingshidden_hideFields'] = json_encode($this->request->post['settingshidden_hideFields']); | |
} | |
if (isset($this->request->post['settingshidden_hideFieldsSet'])) { | |
$this->request->post['settingshidden_hideFieldsSet'] = json_encode($this->request->post['settingshidden_hideFieldsSet']); | |
} | |
$this->model_setting_setting->editSetting('settingshidden', $this->request->post); | |
} | |
]]></add> | |
</operation> | |
<operation> | |
<search trim="true"><![CDATA[ | |
$data['breadcrumbs'] = array(); | |
]]></search> | |
<add><![CDATA[ | |
$data['show_checkbox'] = false; | |
if(isset($this->request->get['hidden'])){ | |
$data['show_checkbox'] = true; | |
} | |
if (!empty($this->config->get('settingshidden_hideFields'))) { | |
$data['hideFields'] = json_decode($this->config->get('settingshidden_hideFields'),true); | |
} else { | |
$data['hideFields'] = []; | |
} | |
if (!empty($this->config->get('settingshidden_hideTabs'))) { | |
$data['hideTabs'] = json_decode($this->config->get('settingshidden_hideTabs'),true); | |
} else { | |
$data['hideTabs'] = []; | |
} | |
if (!empty($this->config->get('settingshidden_hideFieldsSet'))) { | |
$data['hideFieldset'] = json_decode($this->config->get('settingshidden_hideFieldsSet'),true); | |
} else { | |
$data['hideFieldset'] = []; | |
} | |
]]></add> | |
</operation> | |
</file> | |
<file path="admin/view/template/setting/setting.twig"> | |
<operation> | |
<search><![CDATA[{{ footer }}]]></search> | |
<add position="before"><![CDATA[ | |
<script> | |
(function () { | |
const selectedTab = '{% if hideTabs %}{{ hideTabs|json_encode }}{% else %}[]{% endif %}'; | |
const selectedField = '{% if hideFields %}{{ hideFields|json_encode }}{% else %}[]{% endif %}'; | |
const selectedFieldSet = '{% if hideFields %}{{ hideFieldset|json_encode }}{% else %}[]{% endif %}'; | |
/** | |
* | |
*/ | |
function init() { | |
const doc = document; | |
let tabs = doc.querySelectorAll('form>.nav-tabs a'); | |
let fieldsGroup = doc.querySelectorAll('.form-group '); | |
let fieldsSet = doc.querySelectorAll('form fieldset'); | |
if (tabs){ | |
let listTab = []; | |
tabs.forEach(el=>{ | |
const name = el.getAttribute('href').replace('#tab-',''); | |
listTab.push({'name':name,'text':el.textContent}); | |
el.insertAdjacentHTML('afterbegin',renderСheckbox({'name':name,'type':'settingshidden_hideTabs','selectedField':selectedTab})) | |
}); | |
} | |
if (fieldsSet){ | |
fieldsSet.forEach(el=>{ | |
const name = el.querySelector('[name]').getAttribute('name'); | |
el.querySelector('legend').insertAdjacentHTML('afterbegin',renderСheckbox({'name':name,'type':'settingshidden_hideFieldsSet','selectedField':selectedFieldSet})) | |
}); | |
} | |
if (fieldsGroup){ | |
fieldsGroup.forEach(el=>{ | |
const name = el.querySelector('[name]').getAttribute('name'); | |
const txt = el.querySelector('label').textContent; | |
const tabParent = el.closest('.tab-pane')?.id.replace('tab-',''); | |
el.querySelector('label').insertAdjacentHTML('afterbegin',renderСheckbox({'name':name,'type':'settingshidden_hideFields','selectedField':selectedField})) | |
}); | |
} | |
} | |
/** | |
* | |
* @param item | |
*/ | |
function renderСheckbox(item) { | |
const active = JSON.parse(item.selectedField); | |
let checked = false; | |
if (active.includes(item.name)){ | |
checked = 'checked' | |
} | |
return `<input onclick="this.checked = !!this.checked; event.stopPropagation();" type="checkbox" ${checked} name="${item.type}[]" value="${item.name}"> `; | |
} | |
{% if show_checkbox %} | |
init(); | |
{% endif %} | |
})(); | |
</script> | |
<script> | |
{% if not show_checkbox %} | |
let tabs = document.querySelectorAll('form>.nav-tabs a'); | |
let fieldsGroup = document.querySelectorAll('.form-group'); | |
let fieldsGroupSet = document.querySelectorAll('form fieldset'); | |
/* | |
* Список груп полів які потрібно призовати, беремо значення атрибуту name | |
*/ | |
//let hideGroup = ['config_compression','config_theme','config_address']; - приклад | |
let hideGroup = {% if hideFields %}{{ hideFields|json_encode }}{% else %}[]{% endif %}; | |
/* | |
* список табів які потрібно приховати, назва з href="#tab-local" - вписуємо тільки local | |
*/ | |
//let hideTab = ['local','seopro','server']; - приклад | |
let hideTab = {% if hideTabs %}{{ hideTabs|json_encode }}{% else %}[]{% endif %}; | |
let hideGroupSet = {% if hideTabs %}{{ hideFieldset|json_encode }}{% else %}[]{% endif %}; | |
hideTab.map(currentValue=>{ | |
document.querySelector(`[href="#tab-${currentValue}"]`).classList.add('hide') | |
}); | |
// | |
hideGroup.map(currentValue=>{ | |
document.querySelector(`[name="${currentValue}"]`)?.closest('.form-group').classList.add('hide') | |
}); | |
hideGroupSet.map(currentValue=>{ | |
document.querySelector(`[name="${currentValue}"]`)?.closest('fieldset').classList.add('hide') | |
}); | |
{% endif %} | |
</script> | |
]]></add> | |
</operation> | |
</file> | |
</modification> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment