diff --git a/application/modules/admin/views/scripts/cms/version.phtml b/application/modules/admin/views/scripts/cms/version.phtml index fbbad13cecbe00475d29ecc5a880eac083fd8461..0118302a3ba6bd7989fec012a31d771e19f2d979 100644 --- a/application/modules/admin/views/scripts/cms/version.phtml +++ b/application/modules/admin/views/scripts/cms/version.phtml @@ -1,8 +1 @@ -<?php -echo $this->tag('h2', - $this->_('le %s, par %s', - strftime($this->_('%d %B %Y à %Hh %Mmn %Ss'), - $this->version->getDate()), - ($user = $this->version->getUser()) ? $user->getNomAff() : $this->_('Inconnu'))); - -echo $this->renderVersionForm($this->form, $this->version); +<?php echo $this->renderVersionForm($this->form, $this->version); diff --git a/library/ZendAfi/Controller/Plugin/Versionning/Article.php b/library/ZendAfi/Controller/Plugin/Versionning/Article.php index 3388ab116763fa07ca9d48b991707e84da5c4044..a7887f55573eb0a8d8388cfb1a80670a1de15f25 100644 --- a/library/ZendAfi/Controller/Plugin/Versionning/Article.php +++ b/library/ZendAfi/Controller/Plugin/Versionning/Article.php @@ -101,7 +101,7 @@ class ZendAfi_Controller_Plugin_Versionning_Article $this->_view->version = $version; $form = call_user_func($this->_get_form_closure, $article); - $form->setAttrib('data-backurl', $this->_view->url(['action' => 'versions', + $form->setAttrib('data-backurl', $this->_view->url(['action' => 'edit', 'key' => null])) ->beVersionCompare($version->getData()); diff --git a/library/ZendAfi/Form/Decorator/VersionCompare/Header.php b/library/ZendAfi/Form/Decorator/VersionCompare/Header.php index 8beb511e3f8e1a0d6b56791c5d53557ccf45acd6..9ec038e218dc84207c402b401eecbf1acf92f523 100644 --- a/library/ZendAfi/Form/Decorator/VersionCompare/Header.php +++ b/library/ZendAfi/Form/Decorator/VersionCompare/Header.php @@ -28,11 +28,24 @@ class ZendAfi_Form_Decorator_VersionCompare_Header extends Zend_Form_Decorator_A $view->tag('tr', $this->_header('', 'droite') . $this->_header($view->_('Actuellement'), 'gauche') - . $this->_header($view->_('Dans cette version'), 'gauche')) + . $this->_header($this->_renderVersionLabelOn($view), 'gauche')) . $content; } + protected function _renderVersionLabelOn($view) { + if (!$version = $this->getOption('version')) + return $view->_('Version inconnue'); + + $user_name = ($user = $version->getUser()) + ? $user->getNomAff() + : $view->_('Inconnu'); + + return strftime($view->_('%d %B %Y %H:%M:%S'), $version->getDate()) + . ', ' . $user_name; + } + + protected function _header($content, $class) { $view = $this->getElement()->getView(); return $view->tag('th', $content, ['class' => $class, 'scope' => 'col']); diff --git a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php index 3e8dceb40bc73c9727a8119262885e3829e988a9..51bdb201c31149c00542631281d4a7bbca1fe3f3 100644 --- a/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php +++ b/library/ZendAfi/View/Helper/Admin/RenderVersionForm.php @@ -30,13 +30,24 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm $this->_form = $form; $this->_version = $version; - return parent::renderForm($form); + $html = parent::renderForm($form); + + Class_ScriptLoader::getInstance() + ->addJQueryReady(" +$('#" . $form->getId() . "').find('fieldset').each(function(i, elem) { + var fieldset = $(elem); + if (0 < fieldset.find('.modified').length) + $('a[href=#' + fieldset.attr('id') + ']').addClass('modified'); +});"); + + return $html; } protected function _getFieldsetDecorator($form) { $decorators = parent::_getFieldsetDecorator($form); - array_unshift($decorators, new ZendAfi_Form_Decorator_VersionCompare_Header()); + array_unshift($decorators, + new ZendAfi_Form_Decorator_VersionCompare_Header(['version' => $this->_version])); return $decorators; } @@ -56,11 +67,13 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm protected function _buttonsFor($form, $buttons) { return $this ->_renderDefaultButtons($form, - [$this->_applyButton(), + [ $this->_prevButton(), + $this->_listButton($form), $this->_nextButton(), + $this->_applyButton(), $this->_deleteButton(), - $this->_listButton($form), + $this->view->Button_Back($this->_getBackUrl($form)), ]); } @@ -68,6 +81,8 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm protected function _prevButton() { $back = (new Class_Entity()) ->setText($this->_('Précédente')) + ->setImage($this->view->tagImg(Class_Admin_Skin::current() + ->renderIconUrlOn('buttons', 'left'))) ->setAttribs(['disabled' => 'disabled', 'title' => $this->_('Pas de version précédente')]); @@ -76,7 +91,7 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm ->setUrl($this->view->url(['key' => $previous->getId()])) ->setAttribs([]); - return $this->view->Button_Back($back); + return $this->view->Button($back); } @@ -84,9 +99,7 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm $forward = (new Class_Entity()) ->setText($this->_('Suivante')) ->setImage($this->view->tagImg(Class_Admin_Skin::current() - ->renderIconUrlOn('buttons', - 'back'), - ['style' => 'transform: scaleX(-1);'])) + ->renderIconUrlOn('buttons', 'right'))) ->setAttribs(['disabled' => 'disabled', 'title' => $this->_('Pas de version suivante')]); @@ -101,7 +114,8 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm protected function _listButton($form) { return $this->view - ->Button($this->_getBackUrl($form) + ->Button((new Class_Entity()) + ->setUrl($this->view->url(['key' => null, 'action' => 'versions'])) ->setText($this->_('Liste complète')) ->setImage($this->view->tagImg(Class_Admin_Skin::current() ->renderIconUrlOn('actions', @@ -115,16 +129,17 @@ class ZendAfi_View_Helper_Admin_RenderVersionForm 'action' => 'version-apply']); $apply = (new Class_Entity()) - ->setText($this->_('Revenir à cette version')) + ->setText($this->_('Rétablir')) ->setImage($this->view->tagImg(Class_Admin_Skin::current() - ->renderIconUrlOn('buttons', 'validate'))) - ->setAttribs(['disabled' => 'disabled', + ->renderIconUrlOn('actions', 'rollback'), + ['style' => 'filter: invert();'])) + ->setAttribs(['disabled' => 'disabled', 'title' => $this->_('Aucune différence avec les donnnées actuelles')]); 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;"]); + ->setAttribs(['onclick' => "if (confirm('" . htmlspecialchars($this->_('Êtes-vous sur de vouloir rétablir cette version ?')) . "')) { window.location.href='" . $url ."'}; return false;"]); return $this->view->Button($apply); } diff --git a/public/admin/css/global.css b/public/admin/css/global.css index 179044c3fdc923b49f8d25790a98513688b8b853..94ca42afe6056adf173024d2586e73e9016828fd 100644 --- a/public/admin/css/global.css +++ b/public/admin/css/global.css @@ -1535,11 +1535,17 @@ div.ColorPickerDivSample { } -tr.modified > td { - background-color: rgba(255, 0, 0, 0.33); +tr.modified > td + td { + background-color: var(--current-version-background); } -tr.modified label { - color: red; +tr.modified > td + td + td { + background-color: var(--previous-version-background); +} + +tr.modified label, +.modules a.modified { + color: var(--error-text); } + diff --git a/public/admin/skins/bokeh72/colors.css b/public/admin/skins/bokeh72/colors.css new file mode 100644 index 0000000000000000000000000000000000000000..7176818a1f43cb61de509bbaa37fa24330ec958e --- /dev/null +++ b/public/admin/skins/bokeh72/colors.css @@ -0,0 +1,44 @@ +:root { + --main-text: rgba(0 ,0 ,0 , 0.8); + --main-background: rgba(0, 0, 0, 0.05); + + --anchor: rgba(0, 0 , 0 , 0.6); + + --button: #EEE; + --button-highlight: #FFF; + --button-background: rgba(0, 0 , 0 , 0.6); + --button-background-highlight: rgba(0, 0 , 0 , 0.8); + --button-disabled: #CCC; + + --nav-text: #FFF; + --nav-background: rgba(0, 0 , 0 , 0.8); + + --widget-shadow: rgba(0, 0 , 0 ,0.3); + --widget-background: #FFF; + + --error-text: #F00; + --error-background: #F00; + --success-background: #59E625; + + --bokeh-event: #0050C7; + --bokeh-event-highlight: #6AA5FF; + + --separator: rgba(0 ,0 ,0 , 0.6); + --even-line-highlight: rgba(0, 0, 0, 0.05); + --line-highlight: rgba(0, 0, 0, 0.15); + --line-locked-highlight: rgba(0, 0 , 0 , 0.5); + + --border-highlight: rgba(0, 0 , 0 , 0.8); + --transparent-border: transparent; + + --clear-background: none; + + --config-shortcut: #ffA500; + --config-shortcut-highlight: #ffb500; + + --help-link: #6FCFFF; + --help-link-highlight: #6FBFFF; + + --current-version-background: rgba(0, 255, 0, 0.33); + --previous-version-background: rgba(255, 0, 0, 0.33); +} diff --git a/public/admin/skins/bokeh74/colors.css b/public/admin/skins/bokeh74/colors.css index a9bd4da8bf0d332e216e0cc7b72c427c4603572b..7176818a1f43cb61de509bbaa37fa24330ec958e 100644 --- a/public/admin/skins/bokeh74/colors.css +++ b/public/admin/skins/bokeh74/colors.css @@ -38,4 +38,7 @@ --help-link: #6FCFFF; --help-link-highlight: #6FBFFF; + + --current-version-background: rgba(0, 255, 0, 0.33); + --previous-version-background: rgba(255, 0, 0, 0.33); } diff --git a/public/admin/skins/bokeh74/config.json b/public/admin/skins/bokeh74/config.json index 80745dcacf7f86d2c2c6cab58877fc335c895638..8fdbc9676f5af39003cac62597b95fc0cf668ce0 100644 --- a/public/admin/skins/bokeh74/config.json +++ b/public/admin/skins/bokeh74/config.json @@ -133,7 +133,8 @@ "sort": "icons/actions/sort_16.png", "cancel": "icons/actions/cancel_24.png", "computers": "icons/menu/postes_24.png", - "batch": "icons/actions/batch_16.png" + "batch": "icons/actions/batch_16.png", + "rollback": "icons/actions/rollback_24.png" }, "buttons": @@ -145,6 +146,8 @@ "validate": "icons/buttons/validate_16.png", "remove": "icons/buttons/suppr_16.png", "test": "icons/buttons/test_16.png", - "generate": "icons/buttons/generate_16.png" + "generate": "icons/buttons/generate_16.png", + "left": "icons/buttons/left_16.png", + "right": "icons/buttons/right_16.png" } } diff --git a/public/admin/skins/bokeh74/global.css b/public/admin/skins/bokeh74/global.css index 62d46ba47b047badf8979141a0370b5dc7e09090..7f134f7f5cfbacb20d175ac034943eca4f597ed9 100755 --- a/public/admin/skins/bokeh74/global.css +++ b/public/admin/skins/bokeh74/global.css @@ -847,11 +847,16 @@ form .droite { } -tr.modified > td { - background-color: rgba(255, 0, 0, 0.33); +tr.modified > td + td { + background-color: var(--current-version-background); } -tr.modified label { - color: red; +tr.modified > td + td + td { + background-color: var(--previous-version-background); +} + +tr.modified label, +.modules a.modified { + color: var(--error-text); } diff --git a/public/admin/skins/bokeh74/icons/actions/rollback_24.png b/public/admin/skins/bokeh74/icons/actions/rollback_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e80d91f41cf3b023d898eecf3953fb6530e0f080 Binary files /dev/null and b/public/admin/skins/bokeh74/icons/actions/rollback_24.png differ diff --git a/public/admin/skins/bokeh74/icons/actions/rollback_48.png b/public/admin/skins/bokeh74/icons/actions/rollback_48.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8fa54075df96cdaf6ca39aa377ea5976796e2b Binary files /dev/null and b/public/admin/skins/bokeh74/icons/actions/rollback_48.png differ diff --git a/public/admin/skins/bokeh74/icons/buttons/left_16.png b/public/admin/skins/bokeh74/icons/buttons/left_16.png new file mode 100644 index 0000000000000000000000000000000000000000..60619d6526f88e334d2097ee56ad970a1a81106b Binary files /dev/null and b/public/admin/skins/bokeh74/icons/buttons/left_16.png differ diff --git a/public/admin/skins/bokeh74/icons/buttons/right_16.png b/public/admin/skins/bokeh74/icons/buttons/right_16.png new file mode 100644 index 0000000000000000000000000000000000000000..43dfaf0d132606b790071c334969c9bd3fc9925f Binary files /dev/null and b/public/admin/skins/bokeh74/icons/buttons/right_16.png differ diff --git a/public/admin/skins/retro/colors.css b/public/admin/skins/retro/colors.css new file mode 100644 index 0000000000000000000000000000000000000000..7176818a1f43cb61de509bbaa37fa24330ec958e --- /dev/null +++ b/public/admin/skins/retro/colors.css @@ -0,0 +1,44 @@ +:root { + --main-text: rgba(0 ,0 ,0 , 0.8); + --main-background: rgba(0, 0, 0, 0.05); + + --anchor: rgba(0, 0 , 0 , 0.6); + + --button: #EEE; + --button-highlight: #FFF; + --button-background: rgba(0, 0 , 0 , 0.6); + --button-background-highlight: rgba(0, 0 , 0 , 0.8); + --button-disabled: #CCC; + + --nav-text: #FFF; + --nav-background: rgba(0, 0 , 0 , 0.8); + + --widget-shadow: rgba(0, 0 , 0 ,0.3); + --widget-background: #FFF; + + --error-text: #F00; + --error-background: #F00; + --success-background: #59E625; + + --bokeh-event: #0050C7; + --bokeh-event-highlight: #6AA5FF; + + --separator: rgba(0 ,0 ,0 , 0.6); + --even-line-highlight: rgba(0, 0, 0, 0.05); + --line-highlight: rgba(0, 0, 0, 0.15); + --line-locked-highlight: rgba(0, 0 , 0 , 0.5); + + --border-highlight: rgba(0, 0 , 0 , 0.8); + --transparent-border: transparent; + + --clear-background: none; + + --config-shortcut: #ffA500; + --config-shortcut-highlight: #ffb500; + + --help-link: #6FCFFF; + --help-link-highlight: #6FBFFF; + + --current-version-background: rgba(0, 255, 0, 0.33); + --previous-version-background: rgba(255, 0, 0, 0.33); +} diff --git a/public/admin/skins/retro/global.css b/public/admin/skins/retro/global.css index 8aa59d170dd8a4a30ac13c57898facd47e6fbead..49bfb9d76db609e79d0c269df4a4667bc0d12764 100755 --- a/public/admin/skins/retro/global.css +++ b/public/admin/skins/retro/global.css @@ -783,11 +783,18 @@ form .droite { vertical-align: middle; } -tr.modified > td { - background-color: rgba(255, 0, 0, 0.33); + +tr.modified > td + td { + background-color: var(--current-version-background); } -tr.modified label { - color: red; +tr.modified > td + td + td { + background-color: var(--previous-version-background); +} + + +tr.modified label, +.modules a.modified { + color: var(--error-text); } diff --git a/tests/scenarios/Versionning/VersionningTest.php b/tests/scenarios/Versionning/VersionningTest.php index 321e945551d9a2c355a56786e22c1ea6b11a78f9..3bca4200bdced41e765bf6160dad4c0e5eedca0c 100644 --- a/tests/scenarios/Versionning/VersionningTest.php +++ b/tests/scenarios/Versionning/VersionningTest.php @@ -172,8 +172,8 @@ class VersionningArticleVersionTest extends VersionningAdminTestCase { /** @test */ - public function subtitleShouldContainsDateAndUser() { - $this->assertXPathContentContains('//h2', 'le 20 mars 2017 à 11h 24mn 08s, par Albator'); + public function versionColumnShouldContainsDateAndUser() { + $this->assertXPathContentContains('//th', '20 mars 2017 11:24:08, Albator'); } @@ -239,7 +239,7 @@ class VersionningArticleVersionTest extends VersionningAdminTestCase { /** @test */ public function applyButtonShouldBePresent() { $this->assertXPathContentContains('//button[contains(@data-url, "/version-apply/id/27/key/2017-03-20_112408_33")]', - 'Revenir à cette version'); + 'Rétablir'); } }