From 1bff379d841ead71d400dd644f00fa23c80272ea Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 2 Apr 2025 08:09:57 +0200 Subject: [PATCH] allow to set config of extension only --- views/bootstrap/class.Settings.php | 376 ++++++++++++++++------------- 1 file changed, 205 insertions(+), 171 deletions(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 2f92f2ab5..b6ad8a7e3 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -332,6 +332,183 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { params['dms']; + $settings = $this->params['settings']; + + foreach($extconf['config'] as $confkey=>$conf) { + ob_start(); + if($this->isVisible($extname.'|'.$confkey)) { + switch($conf['type']) { + case 'checkbox': +?> + " value="">" value="1" _extensions[$extname][$confkey]) && $settings->_extensions[$extname][$confkey]) echo 'checked'; ?> /> +_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]); + echo ""; + } elseif(!empty($conf['internal'])) { + $selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]); + switch($conf['internal']) { + case "categories": + $categories = $dms->getDocumentCategories(); + if($categories) { + echo ""; + } + break; + case "users": + $users = $dms->getAllUsers(); + if($users) { + echo ""; + } + break; + case "groups": + $recs = $dms->getAllGroups(); + if($recs) { + echo ""; + } + break; + case "attributedefinitions": + $objtype = empty($conf['objtype']) ? 0 : $conf['objtype']; + $attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype']; + $order = empty($conf['order']) ? '' : $conf['order']; + $recs = $dms->getAllAttributeDefinitions($objtype, $attrtype); + if($recs) { + echo ""; + } else { + printMLText('no_attribute_definitions'); + } + break; + case "workflows": + $recs = $dms->getAllWorkflows(); + if($recs) { + echo ""; + } else { + printMLText('no_workflows'); + } + break; + case "folders": + $this->formField(null, $this->getFolderChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getFolder($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]")); + break; + case "folderlist": + echo ""; + break; + case "documents": + $this->formField(null, $this->getDocumentChooserHtml("form".$extname.$confkey, $selections ? $dms->getDocument($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]")); + break; + } + } + break; + case 'hook': + echo $this->callHook('showConfig', $confkey, $extname, $extconf); + break; + case "date": + $this->formField( + null, + $this->getDateChooser((isset($settings->_extensions[$extname][$confkey]) ? getReadableDate($settings->_extensions[$extname][$confkey]) : ''), "extensions[".$extname."][".$confkey."]", $this->params['session']->getLanguage()) + ); + break; + default: + $this->showTextField("extensions[".$extname."][".$confkey."]", isset($settings->_extensions[$extname][$confkey]) ? $settings->_extensions[$extname][$confkey] : '', isset($conf['type']) ? $conf['type'] : '', isset($conf['placeholder']) ? $conf['placeholder'] : ''); + } + } else { + echo getMLText('settings_conf_field_not_editable'); + } + $html = ob_get_clean(); + $this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html); + } + } /* }}} */ + public function js() { /* {{{ */ $extmgr = $this->params['extmgr']; @@ -386,9 +563,36 @@ console.log($(event.currentTarget).data('target').substring(1)); public function extension() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $extname = $this->params['extname']; $settings = $this->params['settings']; $extmgr = $this->params['extmgr']; + $extconf = $extmgr->getExtensionConfiguration()[$extname]; +?> +
+ + +hasHook('processConfig')) { + $ttt = $this->callHook('processConfig', $extname, $extconf); + if($ttt) + $extconf = $ttt; + } + if($this->isVisible($extname.'|')) { + if($extconf['config']) { + $this->showRawConfigHeadline("

".'_extensions[$extname]["__disable__"] ? '1' : '').'" />_extensions[$extname]["__disable__"] ? ' disabled' : ' enabled').'"> '.$extconf['title'].'

'); + $this->showExtensionConfig($extname, $extconf); + } else { + /* Even no configuration exists, output the input field to enable/disable + * the extension. Otherwise it will be enabled each time the config is + * saved. + */ + echo '_extensions[$extname]["__disable__"] ? '1' : '').'" />'."\n"; + } + } +?> +
+callHook('getFullSearchEngine')) && is_array($kkk)) if($this->isVisible($extname.'|')) { if($extconf['config']) { $this->showRawConfigHeadline("".'_extensions[$extname]["__disable__"] ? '1' : '').'" />_extensions[$extname]["__disable__"] ? ' disabled' : ' enabled').'"> '.$extconf['title'].''); - foreach($extconf['config'] as $confkey=>$conf) { - ob_start(); - if($this->isVisible($extname.'|'.$confkey)) { - switch($conf['type']) { - case 'checkbox': -?> - " value="">" value="1" _extensions[$extname][$confkey]) && $settings->_extensions[$extname][$confkey]) echo 'checked'; ?> /> -_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]); - echo ""; - } elseif(!empty($conf['internal'])) { - $selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]); - switch($conf['internal']) { - case "categories": - $categories = $dms->getDocumentCategories(); - if($categories) { - echo ""; - } - break; - case "users": - $users = $dms->getAllUsers(); - if($users) { - echo ""; - } - break; - case "groups": - $recs = $dms->getAllGroups(); - if($recs) { - echo ""; - } - break; - case "attributedefinitions": - $objtype = empty($conf['objtype']) ? 0 : $conf['objtype']; - $attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype']; - $order = empty($conf['order']) ? '' : $conf['order']; - $recs = $dms->getAllAttributeDefinitions($objtype, $attrtype); - if($recs) { - echo ""; - } else { - printMLText('no_attribute_definitions'); - } - break; - case "workflows": - $recs = $dms->getAllWorkflows(); - if($recs) { - echo ""; - } else { - printMLText('no_workflows'); - } - break; - case "folders": - $this->formField(null, $this->getFolderChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getFolder($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]")); - break; - case "folderlist": - echo ""; - break; - case "documents": - $this->formField(null, $this->getDocumentChooserHtml("form".$extname.$confkey, $selections ? $dms->getDocument($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]")); - break; - } - } - break; - case 'hook': - echo $this->callHook('showConfig', $confkey, $extname, $extconf); - break; - case "date": - $this->formField( - null, - $this->getDateChooser((isset($settings->_extensions[$extname][$confkey]) ? getReadableDate($settings->_extensions[$extname][$confkey]) : ''), "extensions[".$extname."][".$confkey."]", $this->params['session']->getLanguage()) - ); - break; - default: - $this->showTextField("extensions[".$extname."][".$confkey."]", isset($settings->_extensions[$extname][$confkey]) ? $settings->_extensions[$extname][$confkey] : '', isset($conf['type']) ? $conf['type'] : '', isset($conf['placeholder']) ? $conf['placeholder'] : ''); - } - } else { - echo getMLText('settings_conf_field_not_editable'); - } - $html = ob_get_clean(); - $this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html); - } + $this->showExtensionConfig($extname, $extconf); } else { /* Even no configuration exists, output the input field to enable/disable * the extension. Otherwise it will be enabled each time the config is