Skip to content
Snippets Groups Projects

Hotline 6.55

Merged Patrick Barroca requested to merge hotline_6.55 into master
Compare and
+ 946
444
Preferences
Compare changes
Files
@@ -39,8 +39,8 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
if (!$this->_profil = Class_Profil::getLoader()->find($id_profil_param)) {
if (!in_array(
$this->_request->getActionName(),
array('index', 'redirect-to-index', 'add', 'genres', 'module-sort'))
$this->_request->getActionName(),
array('index', 'redirect-to-index', 'add', 'genres', 'module-sort'))
) {
$this->_forward('redirect-to-index');
return;
@@ -159,15 +159,15 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
$menu=$this->_getPostMenu();
// En creation on attribue un id
if(!$id_menu)
{
$id_max=0;
foreach($menus as $id_menu => $data)
{
$id=intval($id_menu);
if($id > $id_max) $id_max=$id;
$id_max=0;
foreach($menus as $id_menu => $data)
{
$id=intval($id_menu);
if($id > $id_max) $id_max=$id;
}
$id_menu=$id_max +1;
}
$id_menu=$id_max +1;
}
$menus[$id_menu]=$menu;
$profil->setCfgMenus($menus)->save();
$this->_redirect('admin/profil/menusindex/id_profil/'.$this->id_profil);
@@ -186,19 +186,19 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
// Lignes de menu
if(!count($menu_properties)) return $enreg;
foreach($menu_properties as $id_property => $item_post)
{
$menu=$this->_getItemPostMenu($item_post);
unset($sous_menu);
// Sous-menus
if(count($sous_menu_properties[$id_property]))
{
foreach($sous_menu_properties[$id_property] as $item_post)
$sous_menu[]=$this->_getItemPostMenu($item_post);
$menu=$this->_getItemPostMenu($item_post);
unset($sous_menu);
// Sous-menus
if(count($sous_menu_properties[$id_property]))
{
foreach($sous_menu_properties[$id_property] as $item_post)
$sous_menu[]=$this->_getItemPostMenu($item_post);
}
$menu["sous_menus"]=$sous_menu;
$enreg["menus"][]=$menu;
}
$menu["sous_menus"]=$sous_menu;
$enreg["menus"][]=$menu;
}
return $enreg;
}
@@ -206,25 +206,25 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
private function _getItemPostMenu($item_post) {
$elems=explode(";",$item_post);
foreach($elems as $elem)
{
// Decouper les preferences
if(substr($elem,0,11)=="preferences")
{
$preferences=explode("|",substr($elem,12));
foreach($preferences as $preference)
{
if(!$preference) continue;
$attrib=$this->_splitArg($preference);
$menu["preferences"][$attrib[0]]=$attrib[1];
}
}
// Decouper attribut standards
else
{
$attrib=$this->_splitArg($elem);
$menu[$attrib[0]]=$attrib[1];
// Decouper les preferences
if(substr($elem,0,11)=="preferences")
{
$preferences=explode("|",substr($elem,12));
foreach($preferences as $preference)
{
if(!$preference) continue;
$attrib=$this->_splitArg($preference);
$menu["preferences"][$attrib[0]]=$attrib[1];
}
}
// Decouper attribut standards
else
{
$attrib=$this->_splitArg($elem);
$menu[$attrib[0]]=$attrib[1];
}
}
}
$p=explode("/",$menu["picto"]);
$menu["picto"]=array_pop($p);
return $menu;
@@ -232,9 +232,10 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
private function _parseSaveContentString($cfg_module) {
$enreg = array("modules" => array());
$profil = Class_Profil::getLoader()->find($this->id_profil);
$enreg = ['modules' => []];
if(0 == count($cfg_module))
return $enreg;
$profil = Class_Profil::find($this->id_profil);
// Decoupage des modules
$modules = explode(';box',$cfg_module);
foreach ($modules as $module) {
@@ -303,105 +304,135 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
}
public function accueilAction() {
// Instanciations et initialisations
$this->view->titre = "Configuration de la page: ".$this->_profil->getLibelle();
$profil = Class_Profil::getLoader()->find($this->id_profil);
protected function updateAccueil($profil) {
$profil->setLibelle($this->_getParam('libelle',
$profil->getLibelle()));
$class_module = new Class_Systeme_ModulesAccueil();
$liste_module = $class_module->getModules();
$cfg_module = $this->_getParam('saveContent');
$enreg = $this->_parseSaveContentString($cfg_module);
if ($this->_request->isPost()) {
$profil->setLibelle($this->_getParam('libelle',
$profil->getLibelle()));
$enreg["use_parent_css"] = $this->_getParam('use_parent_css', $profil->getUseParentCss());
$enreg["page_css"]=$this->_getParam('page_css');
$profil->setRewriteUrl($this->_getParam('rewrite_url'));
foreach($enreg["modules"] as $id_module => $module_config) {
if ($id_module == 0) {
$id_module = $profil->createNewModuleAccueilId();
$enreg["modules"][$id_module] = $enreg["modules"][0];
unset($enreg["modules"][0]);
}
$cfg_module = $this->_getParam('saveContent');
$enreg = $this->_parseSaveContentString($cfg_module);
/* Si aucune préférences (nouveau module), on mets les préférences par défaut */
if (count($module_config['preferences']) == 0) {
$type_module = $module_config['type_module'];
$enreg["modules"][$id_module]['preferences'] = Class_Systeme_ModulesAccueil::getValeursParDefaut($type_module);
}
$enreg["use_parent_css"] = $this->_getParam('use_parent_css', $profil->getUseParentCss());
/*Permet de ne pas perdre la configuration des modules contenus dans une boîte 2 colonnes */
if ($module_config['type_module'] == "CONTENEUR_DEUX_COLONNES") {
if (array_key_exists('col_gauche_module_id', $module_config['preferences']) and
$id_col_gauche = $module_config['preferences']['col_gauche_module_id'])
$enreg["modules"][$id_col_gauche] = $profil->getLocalModuleAccueilConfig($id_col_gauche);
$enreg["page_css"] = $this->_getParam('page_css');
$profil->setRewriteUrl($this->_getParam('rewrite_url'));
foreach($enreg["modules"] as $id_module => $module_config) {
if ($id_module == 0) {
$id_module = $profil->createNewModuleAccueilId();
$enreg["modules"][$id_module] = $enreg["modules"][0];
unset($enreg["modules"][0]);
}
if (array_key_exists('col_droite_module_id', $module_config['preferences']) and
$id_col_droite = $module_config['preferences']['col_droite_module_id'])
$enreg["modules"][$id_col_droite] = $profil->getLocalModuleAccueilConfig($id_col_droite);
}
}
/* Si aucune préférences (nouveau module), on mets les préférences par défaut */
if (count($module_config['preferences']) == 0) {
$type_module = $module_config['type_module'];
$enreg["modules"][$id_module]['preferences'] = $class_module->getValeursParDefaut($type_module);
}
if(!$profil->hasParentProfil()) {
$enreg = $this->setBannerWidget($profil, $enreg);
}
/*
Permet de ne pas perdre la configuration des modules contenus
dans une boîte 2 colonnes
*/
if ($module_config['type_module'] == "CONTENEUR_DEUX_COLONNES") {
if (array_key_exists('col_gauche_module_id', $module_config['preferences']) and
$id_col_gauche = $module_config['preferences']['col_gauche_module_id'])
$enreg["modules"][$id_col_gauche] = $profil->getLocalModuleAccueilConfig($id_col_gauche);
if($profil->setCfgAccueil($enreg)->save()) {
$this->_redirect('admin/profil/accueil/id_profil/'.$profil->getId());
$this->_helper->notify($this->view->_('Page ' . $profil->getLibelle() . ' sauvegardée'));
return;
}
}
if (array_key_exists('col_droite_module_id', $module_config['preferences']) and
$id_col_droite = $module_config['preferences']['col_droite_module_id'])
$enreg["modules"][$id_col_droite] = $profil->getLocalModuleAccueilConfig($id_col_droite);
}
protected function setBannerWidget($profil, $enreg) {
$required_widgets = $this->getSearchAndLoginWidget($profil->getBoitesDivision(Class_Profil::DIV_BANNIERE));
foreach( $required_widgets as $id => $module) {
if(!array_key_exists($id, $enreg['modules'])) {
$enreg['modules'][$id] = $module;
}
}
return $enreg;
}
/* Récupère les boite de la banniere pour ne pas les perdre */
if (!$profil->hasParentProfil()) {
foreach($profil->getBoitesDivision(Class_Profil::DIV_BANNIERE) as $id => $module)
$enreg["modules"][$id] = $module;
}
if ($profil->setCfgAccueil($enreg)->save()) {
$this->_redirect('admin/profil/accueil/id_profil/'.$profil->getId());
$this->_helper->notify(sprintf('Page %s sauvegardée', $profil->getLibelle()));
return;
protected function getSearchAndLoginWidget($widgets_as_array) {
$widget_by_type = array_filter($widgets_as_array, function($widget)
{ $type = $widget['type_module'];
if($type == 'LOGIN' or $type == 'RECH_SIMPLE')
return true; });
$result = [];
$uniq_type_widgets = [];
foreach($widget_by_type as $id => $widget) {
if(!array_key_exists($widget['type_module'], $result)) {
$result[$widget['type_module']] = $id;
$uniq_type_widgets[$id] = $widget;
}
}
// Html des modules sélectionnés triés par divisions
$box = array(1 => '', 2 => '', 3 => '', 4 => '', 5 => '');
foreach($box as $division => $content)
$box[$division] = $this->_getHTMLForProfilModulesDivision($profil, $division);
// Html des objets disponibles
$groupes=$class_module->getGroupes();
$box_dispo = array();
foreach($groupes as $groupe => $libelle) {
if (!array_key_exists($groupe, $box_dispo))
$box_dispo[$groupe] = '';
$box_dispo[$groupe].='<div><p>'.$libelle.'</p><ul id="allItems" style="height:300px;">';
}
return $uniq_type_widgets;
}
foreach($liste_module as $type_module => $module) {
if (!$module->isVisibleForProfil($profil)) continue;
$box_dispo[$module->getGroup()].=$this->_getItemModule($type_module,$module);
}
foreach($groupes as $groupe => $libelle)
$box_dispo[$groupe].='</ul></div>';
// Get le nombre de divisions dans le profil
$this->view->nb_divisions = $profil->getNbDivisions();
// Variables de vue
$this->view->module_info = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_INFO];
$this->view->module_rech = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_RECH];
$this->view->module_site = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_SITE];
$this->view->module_abonne = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_ABONNE];
$this->view->box1 = $box[1];
$this->view->box2 = $box[2];
$this->view->box3 = $box[3];
$this->view->box4 = $box[4];
$this->view->box5 = $box[5];
public function accueilAction() {
$this->view->titre = $this->_('Configuration de la page: ') . $this->_profil->getLibelle();
$profil = Class_Profil::find($this->id_profil);
$class_module = new Class_Systeme_ModulesAccueil();
$liste_module = $class_module->getModules();
if ($this->_request->isPost())
$this->updateAccueil($profil);
// Html des modules sélectionnés triés par divisions
$box = [1 => '',
2 => '',
3 => '',
4 => '',
5 => ''];
foreach($box as $division => $content)
$box[$division] = $this->_getHTMLForProfilModulesDivision($profil, $division);
$groupes = $class_module->getGroupes();
$box_dispo = [];
foreach($groupes as $groupe => $libelle) {
if (!array_key_exists($groupe, $box_dispo))
$box_dispo[$groupe] = '';
$box_dispo[$groupe].= '<div><p>'.$libelle.'</p><ul id="allItems" style="height:300px;">';
}
foreach($liste_module as $type_module => $module) {
if (!$module->isVisibleForProfil($profil))
continue;
$box_dispo[$module->getGroup()].= $this->_getItemModule($type_module,$module);
}
foreach($groupes as $groupe => $libelle)
$box_dispo[$groupe].='</ul></div>';
$this->view->nb_divisions = $profil->getNbDivisions();
$this->view->module_info = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_INFO];
$this->view->module_rech = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_RECH];
$this->view->module_site = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_SITE];
$this->view->module_abonne = $box_dispo[Class_Systeme_ModulesAccueil::GROUP_ABONNE];
$this->view->box1 = $box[1];
$this->view->box2 = $box[2];
$this->view->box3 = $box[3];
$this->view->box4 = $box[4];
$this->view->box5 = $box[5];
}
@@ -438,17 +469,17 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
public function genresAction() {
if ($this->_request->isPost())
{
if(count($_POST)>0)
{
foreach($_POST as $id => $picto)
{
$elems=explode("_",$id);
$id_genre=$elems[1];
sqlExecute("update codif_genre set picto='$picto' where id_genre=$id_genre");
}
if(count($_POST)>0)
{
foreach($_POST as $id => $picto)
{
$elems=explode("_",$id);
$id_genre=$elems[1];
sqlExecute("update codif_genre set picto='$picto' where id_genre=$id_genre");
}
}
}
}
// Entree en maj
$this->view->genres=fetchAll("select * from codif_genre");
$this->view->titre = "Pictogrammes pour les genres";
@@ -484,7 +515,7 @@ class Admin_ProfilController extends ZendAfi_Controller_Action {
public function editAction() {
$profil = Class_Profil::getLoader()->find($this->id_profil);
$profil = Class_Profil::find($this->id_profil);
$this->_postProfil($profil);
// Action