Skip to content
Snippets Groups Projects
Commit 19f68765 authored by Laurent's avatar Laurent
Browse files

Merge branch 'hotline#80724_sousmenus' into 'hotline'

hotline #80724 fix horizontal sub sub menus administration

See merge request !2851
parents 0484bca0 6d7a11a4
Branches
Tags
3 merge requests!2869Master,!2852Hotline,!2851hotline #80724 fix horizontal sub sub menus administration
Pipeline #5106 passed with stage
in 28 minutes and 58 seconds
- ticket #80724 : Menu horizontal: correction du paramétrage des éléments dans des sous - sous menus
\ No newline at end of file
...@@ -117,7 +117,7 @@ class Class_Systeme_Widget_Menu extends Class_Systeme_Widget_Abstract { ...@@ -117,7 +117,7 @@ class Class_Systeme_Widget_Menu extends Class_Systeme_Widget_Abstract {
if(isset($datas['children'])) if(isset($datas['children']))
$sub_menus = $this->_convertChildren($datas['children']); $sub_menus = $this->_convertChildren($datas['children']);
if(!$this->hasParent() && $sub_menus) { if(!$this->hasParent()) {
$datas['menus'] = (new Class_Systeme_MenuHorizontal($sub_menus))->asCfgProfil(); $datas['menus'] = (new Class_Systeme_MenuHorizontal($sub_menus))->asCfgProfil();
return $this->_save($datas); return $this->_save($datas);
} }
...@@ -150,12 +150,34 @@ class Class_Systeme_Widget_Menu extends Class_Systeme_Widget_Abstract { ...@@ -150,12 +150,34 @@ class Class_Systeme_Widget_Menu extends Class_Systeme_Widget_Abstract {
return $profil->setCfgMenus($cfg_menus)->save(); return $profil->setCfgMenus($cfg_menus)->save();
} }
$cfg_menus[$this->getParent()]['menus'][$this->getPosition()]['sous_menus'][$this->getId()] = $datas; $this->_saveDeepIn($cfg_menus[$this->getParent()]['menus'],
$datas);
return $profil->setCfgMenus($cfg_menus)->save(); return $profil->setCfgMenus($cfg_menus)->save();
} }
protected function _saveDeepIn(&$entries, $datas) {
foreach($entries as &$entry) {
if(isset($entry['id_module']) && ($this->getId() == (string)$entry['id_module'])) {
$entry = $datas;
return true;
}
if (isset($entry['sous_menus']) && $this->_saveDeepIn($entry['sous_menus'], $datas))
return true;
if (isset($entry['menus']) && $this->_saveDeepIn($entry['menus'], $datas))
return true;
}
return false;
}
public function getResourcesProvider() { public function getResourcesProvider() {
if(!parent::getResourcesProvider()) if(!parent::getResourcesProvider())
$this->setResourcesProvider(new Class_Systeme_ModulesMenu()); $this->setResourcesProvider(new Class_Systeme_ModulesMenu());
......
...@@ -27,7 +27,7 @@ class ZendAfi_Form_Configuration_Menu_Entry extends ZendAfi_Form { ...@@ -27,7 +27,7 @@ class ZendAfi_Form_Configuration_Menu_Entry extends ZendAfi_Form {
$this $this
->addElement('text', ->addElement('text',
'libelle', 'libelle',
['label' => $this->_('Text du lien')]) ['label' => $this->_('Texte du lien')])
->addElement('IcoPicker', ->addElement('IcoPicker',
'picto', 'picto',
['label' => $this->_('Icône du lien')]) ['label' => $this->_('Icône du lien')])
......
...@@ -2437,3 +2437,137 @@ class WidgetControllerLibraryPostDispatchTest extends WidgetControllerWidgetConf ...@@ -2437,3 +2437,137 @@ class WidgetControllerLibraryPostDispatchTest extends WidgetControllerWidgetConf
$this->assertEquals(['town' => [1]], $widget->getdefault_filters()); $this->assertEquals(['town' => [1]], $widget->getdefault_filters());
} }
} }
class WidgetControllerHorizontalMenuChangeLinkTextTest extends Admin_AbstractControllerTestCase {
protected
$_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
$cfg_menus = ['H' =>
[
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '',
'libelle' => 'Menu horizontal',
'picto' => 'vide.gif',
'action' => '',
'clef_profil' => '0',
'children' => '29;',
'preferences' => [
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '',
'libelle' => 'Menu horizontal',
'picto' => 'vide.gif',
'action' => '',
'clef_profil' => '0',
'children' => '29;' ],
'menus' => [
0 =>
[
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '0',
'libelle' => 'AIDE',
'picto' => 'vide.gif',
'action' => '',
'clef_profil' => '',
'children' => '1;',
'preferences' => [
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '0',
'libelle' => 'AIDE',
'picto' => 'vide.gif',
'action' => '',
'clef_profil' => '',
'children' => '1;' ],
'sous_menus' => [
0 => [
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '0',
'libelle' => 'Menu',
'picto' => '',
'action' => '',
'clef_profil' => '0',
'children' => 'PROFIL;',
'preferences' => [
'type_module' => 'MENU',
'type_menu' => 'MENU',
'id_module' => '2',
'libelle' => 'Menu',
'picto' => '',
'action' => '',
'clef_profil' => '0',
'children' => 'PROFIL;',
],
'sous_menus' => [
1 => [
'type_module' => 'PROFIL',
'type_menu' => 'PROFIL',
'id_module' => '1',
'libelle' => 'Lien vers un profil ou une page',
'picto' => '',
'action' => '',
'clef_profil' => '1',
],
],
],
],
],
]
]
];
$this->fixture('Class_Profil',
['id' => 34,
'libelle' => 'Numérique',
'parent_id' => null,
'cfg_menus' => $cfg_menus])
->beCurrentProfil();
}
/** @test */
public function renameMenuLinkToProfilLabelToPlayMoviesShouldUpdateCfgMenus() {
$this->postDispatch('/admin/widget/edit-menu/id/2/id_profil/34/parent/H',
['libelle' => 'play movies',
'clef_profil' => 1,
'picto' => '']);
$menus = Class_Profil::find(34)->getCfgMenusAsArray()['H'];
$this->assertEquals('play movies',
$menus['menus'][0]['sous_menus'][1]['sous_menus'][2]['libelle']);
}
/** @test */
public function removeHorizontalMenuChildenShouldDeleteSubmenus() {
$this->postDispatch('/admin/widget/edit-menu/id/H/id_profil/34',
['libelle' => 'Menu horizontal',
'children' => '',
'picto' => '']);
$menus = Class_Profil::find(34)->getCfgMenusAsArray()['H'];
$this->assertEmpty($menus['menus']);
}
/** @test */
public function addEntryUnderMenuAidesShouldNotRemoveItsSubmenus() {
$this->postDispatch('/admin/widget/edit-menu/id/0/id_profil/34/parent/H',
['libelle' => 'Menu',
'children' => '1;ACCUEIL',
'picto' => '']);
$menus = Class_Profil::find(34)->getCfgMenusAsArray()['H'];
$this->assertCount(2, $menus['menus'][0]['sous_menus']);
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment