diff --git a/library/ZendAfi/Form.php b/library/ZendAfi/Form.php index c7bc194a5ebe8586dfdc1a1275f93a058d309e60..44c84e6b96f71ada9e0a4f3c86a08090e9830188 100644 --- a/library/ZendAfi/Form.php +++ b/library/ZendAfi/Form.php @@ -234,16 +234,22 @@ class ZendAfi_Form extends Zend_Form { protected function _versionCompareDecoratorFor($element, $datas) { - $class_name = 'ZendAfi_Form_Decorator_VersionCompare'; + $class_name = $this->_specificClassFor($element, + 'ZendAfi_Form_Decorator_VersionCompare'); + return new $class_name(['datas' => $datas]); + } + + + protected function _specificClassFor($element, $base_class) { try { - $specific = $class_name . '_' . $this->_getElementType($element); + $specific = $base_class . '_' . $this->_getElementType($element); Zend_Loader::loadClass($specific); - $class_name = $specific; + $base_class = $specific; } catch(Exception $e) { // couldn't load, will default to generic class name } - return new $class_name(['datas' => $datas]); + return $base_class; } diff --git a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php index 85029eb54ccf85742262787bbb1c05d91005685e..3e8dceb40bc73c9727a8119262885e3829e988a9 100644 --- a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php +++ b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php @@ -23,10 +23,13 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm extends ZendAfi_View_Helper_Admin_RenderForm { - protected $_version; + protected + $_version, $_form; public function renderVersionForm($form, $version) { + $this->_form = $form; $this->_version = $version; + return parent::renderForm($form); } @@ -39,6 +42,17 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm } + protected function _isModified() { + foreach($this->_form->getElements() as $element) { + $render = $element->render(); + if (false !== strpos($render, 'class="modified"')) + return true; + } + + return false; + } + + protected function _buttonsFor($form, $buttons) { return $this ->_renderDefaultButtons($form, @@ -100,14 +114,19 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm $url = $this->view->url(['key' => $this->_version->getId(), 'action' => 'version-apply']); - $delete = (new Class_Entity()) + $apply = (new Class_Entity()) ->setText($this->_('Revenir à cette version')) - ->setUrl($url) - ->setAttribs(['onclick' => "if (confirm('" . htmlspecialchars($this->_('Êtes-vous sur de vouloir revenir à cette version ?')) . "')) { window.location.href='" . $url ."'}; return false;"]) ->setImage($this->view->tagImg(Class_Admin_Skin::current() - ->renderIconUrlOn('buttons', 'validate'))); + ->renderIconUrlOn('buttons', 'validate'))) + ->setAttribs(['disabled' => 'disabled', + 'title' => $this->_('Aucune différence avec les donnnées actuelles')]); - return $this->view->Button($delete); + if ($this->_isModified()) + $apply + ->setUrl($url) + ->setAttribs(['onclick' => "if (confirm('" . htmlspecialchars($this->_('Êtes-vous sur de vouloir revenir à cette version ?')) . "')) { window.location.href='" . $url ."'}; return false;"]); + + return $this->view->Button($apply); }