Skip to content
Snippets Groups Projects
Commit a4770728 authored by Matthias Meusburger's avatar Matthias Meusburger
Browse files

Merge branch 'hotline#14515_talence' into hotline_6.46

parents e4470351 f11ff3f5
Branches
Tags
6 merge requests!258Dev/13872 Orphee Allow Hold Available Items,!223Dev#12992 Custom Fields,!222Master,!216Dev#12992 Custom Fields,!215Dev#12992 Custom Fields,!214Hotline 6.46
- ticket #14515 : correction du partage des paramètres des boîtes de bannière sur une même arborescence de profils
- ticket #13914 : correction d'un bug dans l'écran des options de menu de type "Lien vers un album" qui survenait lorsqu'un album appartenait à la catégorie automatique "Albums non classés"
23/06/2014 - v6.46
......
......@@ -50,8 +50,8 @@ class Admin_AccueilController extends Zend_Controller_Action {
$this->type_module = $module_config['type_module'];
}
xdebug_break();
$user = Class_Users::getIdentity();
......
......@@ -407,21 +407,30 @@ class Class_Profil extends Storm_Model_Abstract {
}
protected function isModulePreferencesSharedBetweenProfils($module, $type_module) {
return (
(isset($module['division']) && ($module['division'] == self::DIV_BANNIERE))
||
(!isset($module['division']) && ($this->isTypeBoiteInBanniere($type_module)))
);
}
/**
* @param int $id_module
* @param string $type_module
* @return array
*/
public function getOrCreateConfigAccueil($id_module, $type_module) {
if ($this->isTypeBoiteInBanniere($type_module))
return $this->getModuleAccueilPreferencesByType($type_module);
$cfg_accueil = $this->getCfgAccueilAsArray();
$module = (array_isset($id_module, $cfg_accueil['modules'])) ?
$cfg_accueil['modules'][$id_module] :
['preferences' => []];
if ($this->isModulePreferencesSharedBetweenProfils($module, $type_module))
return $this->getModuleAccueilPreferencesByType($type_module, self::DIV_BANNIERE);
$preferences = [];
if (array_isset('preferences', $module))
$preferences = $module['preferences'];
......@@ -549,11 +558,12 @@ class Class_Profil extends Storm_Model_Abstract {
/**
* @param string $type_module
* @param int $division
* @return array | null
*/
public function getModuleAccueilPreferencesByType($type_module){
public function getModuleAccueilPreferencesByType($type_module, $division = null){
if ($this->hasParentProfil() &&
($preferences = $this->getParentProfil()->getModuleAccueilPreferencesByType($type_module)))
($preferences = $this->getParentProfil()->getModuleAccueilPreferencesByType($type_module, $division)))
return $preferences;
$preferences = [];
......@@ -561,7 +571,7 @@ class Class_Profil extends Storm_Model_Abstract {
foreach($cfg_accueil['modules'] as $key_module => $module ) {
foreach($module as $key => $value){
if ($module[$key]===$type_module) {
if (($module[$key]===$type_module) && (!$division || ($module['division'] == $division))) {
return $this->getModuleAccueilPreferences($key_module);
}
}
......
......@@ -846,7 +846,10 @@ class AccueilControllerConfigBoiteWithRightConfigFrontTest extends AccueilContro
class AccueilControllerRechSimpleConfigurationTest extends Admin_AbstractControllerTestCase {
abstract class AccueilControllerRechSimpleConfigurationTestCase extends Admin_AbstractControllerTestCase {
protected
$_profil_adulte;
public function setUp() {
parent::setUp();
......@@ -857,16 +860,80 @@ class AccueilControllerRechSimpleConfigurationTest extends Admin_AbstractControl
'boite' => 'boite_vide',
'placeholder' => 'ex: Potter']];
$profil_adulte = Class_Profil::getCurrentProfil()
$this->_profil_adulte = Class_Profil::getCurrentProfil()
->setLibelle('Adulte')
->updateModuleConfigAccueil(2, $boite_recherche);
}
}
class AccueilControllerMultipleRechSimpleConfigurationTest extends AccueilControllerRechSimpleConfigurationTestCase {
protected
$_profil_romans;
public function setUp() {
parent::setUp();
$boite_recherche_banniere = ['type_module' => 'RECH_SIMPLE',
'division' => 4,
'id_module' => 8,
'preferences' => ['titre' => 'Search']];
$this->_profil_adulte->updateModuleConfigAccueil(8, $boite_recherche_banniere);
$this->_profil_romans = $this->fixture('Class_Profil', ['id' => '123'])
->setLibelle('Romans')
->setParentProfil(Class_Profil::getCurrentProfil());
}
protected function dispatchConfigModuleProfil($id_module, $id_profil) {
$this->request_url = '/admin/accueil/rechsimple?id_module='.$id_module.'&id_profil='.$id_profil.'&type_module=RECH_SIMPLE&config=accueil';
$this->dispatch($this->request_url, true);
$this->assertXPath('//input[@name="titre"][@value="Search"]');
}
/** @test */
public function parentProfilBoiteBanniereConfigInputTitreShouldBeSearch() {
$this->dispatchConfigModuleProfil(8, $this->_profil_adulte->getId());
}
/** @test */
public function subprofilBoiteBanniereWithConfigurationInputTitreShouldBeSearch() {
$boite_recherche_romans = ['type_module' => 'RECH_SIMPLE',
'division' => 4,
'id_module' => 9,
'preferences' => ['titre' => 'Find']];
$this->_profil_romans->updateModuleConfigAccueil(9, $boite_recherche_romans);
$this->dispatchConfigModuleProfil(9, 123);
}
/** @test */
public function subprofilBoiteBanniereWithoutConfigurationInputTitreShouldBeSearch() {
$this->dispatchConfigModuleProfil(9, 123);
}
}
class AccueilControllerRechSimpleConfigurationTest extends AccueilControllerRechSimpleConfigurationTestCase {
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil')
->whenCalled('findAllByZoneAndBib')
->answers([$profil_adulte,
->answers([$this->_profil_adulte,
Class_Profil::newInstanceWithId(98, ['libelle' => 'Jeunesse'])]);
$this->request_url = '/admin/accueil/rechsimple?id_module=2&type_module=RECH_SIMPLE&config=accueil';
$this->dispatch($this->request_url, true);
}
......
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