diff --git a/application/modules/admin/controllers/IndexController.php b/application/modules/admin/controllers/IndexController.php index 8342287550827cdbf43953c8e3ebb4c4eccc5834..de4c24e2031207f5d784e024feea688bf65e42fe 100644 --- a/application/modules/admin/controllers/IndexController.php +++ b/application/modules/admin/controllers/IndexController.php @@ -70,7 +70,7 @@ class Admin_IndexController extends ZendAfi_Controller_Action { $id = $this->_getParam('cle'); $var = Class_AdminVar::find($id); - $form = ZendAfi_Form_Admin_AdminVar::newWith($var); + $form = ZendAfi_Form_Admin_AdminVar::newWithAdminVar($var); $form->setAction($this->view->url()); $form->setAttrib('data-backurl', $this->view->url(['action' => 'adminvar'])); diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index e39899d174879540cb4929305f76923fa4482405..aab5c7346d6901f08cf431a633e807c98fbe2b6f 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -378,6 +378,7 @@ class Class_AdminVar extends Storm_Model_Abstract { '[{"id":10, "label":"À valider niveau 2"}, {"id":11, "label":"À valider niveau 3"}]', 'Les identifiants 1 à 5 sont réservés' ]), + 'after_save' => 'setWorkflowPermissions', ], 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => [ 'description' => 'Contenu de l\'email de notification d\'article en attente de validation', @@ -601,19 +602,6 @@ class Class_AdminVar extends Storm_Model_Abstract { } - /** - * @param $name string - * @return string - */ - public static function helpFor($name) { - $known_vars = static::getKnownVars(); - if (!isset($known_vars[$name]['description'])) - return ''; - return $known_vars[$name]['description']; - } - - - /** @return bool */ public static function isCacheEnabled() { return self::isModuleEnabled('CACHE_ACTIF'); @@ -676,15 +664,28 @@ class Class_AdminVar extends Storm_Model_Abstract { return static::helpFor($this->getId()); } - - public function getType() { + public function getVarMetaDataIfNone($key, $default_value) { $known_vars = static::getKnownVars(); $name = $this->getId(); - if (!isset($known_vars[$name]['type'])) - return self::TYPE_DEFAULT; - return $known_vars[$name]['type']; + if (!isset($known_vars[$name][$key])) + return $default_value; + return $known_vars[$name][$key]; + } + + public function getType() { + return $this->getVarMetaDataIfNone('type', self::TYPE_DEFAULT); + } + + + /** + * @param $name string + * @return string + */ + public static function helpFor($name) { + return static::find($name)->getVarMetaDataIfNone('description', ''); } + public function isOnOff() { return $this->getType() == self::TYPE_ON_OFF; } @@ -746,10 +747,14 @@ class Class_AdminVar extends Storm_Model_Abstract { public function afterSave() { - if ('WORKFLOW' != $this->getId()) - return; + if ($afterSaveHook = $this->getVarMetaDataIfNone('after_save', null)) { + call_user_func([$this, $afterSaveHook]); + } + } + - $statuses = json_decode($this->getValeur()); + protected function setWorkflowPermissions() { + $statuses = json_decode($this->getValeur()); if (!is_array($statuses)) { Class_Permission::cleanDynamicWorkflow(); return; diff --git a/library/ZendAfi/Form/Admin/AdminVar.php b/library/ZendAfi/Form/Admin/AdminVar.php index bd8ab8b07b7cb32c91f0822695c0f34d24728e5c..1d9a09480367669b01ba12272a57cf1558d3b8d7 100644 --- a/library/ZendAfi/Form/Admin/AdminVar.php +++ b/library/ZendAfi/Form/Admin/AdminVar.php @@ -28,7 +28,8 @@ class ZendAfi_Form_Admin_AdminVar extends ZendAfi_Form { Class_AdminVar::TYPE_ENCODED_DATA => 'ZendAfi_Form_Admin_AdminVar_EncodedData', ]; - public static function newWith($admin_var) { + + public static function newWithAdminVar($admin_var) { $form_class = static::$_FORM_CLASSES[$admin_var->getType()]; $form = (new $form_class()); diff --git a/tests/bootstrap_frontcontroller.php b/tests/bootstrap_frontcontroller.php index af4c0de2ba119cfe03914a13ea0b0c348be1318f..8b82fc7e6ce54739b0e280bb473496c85f3eba68 100644 --- a/tests/bootstrap_frontcontroller.php +++ b/tests/bootstrap_frontcontroller.php @@ -31,4 +31,6 @@ $controller = newFrontController()->throwExceptions(true); Zend_Controller_Action_HelperBroker::addHelper(new ZendAfi_Controller_Action_Helper_ViewRenderer()); setupRoutes($controller, new Zend_Config([])); + +$controller->getRouter()->addDefaultRoutes(); ?> \ No newline at end of file