/** * Assign page's data to smarty * @access private */ private function getData($idPage, $idParent = false) { $ModelCms = new frontend_model_cms(); $data = parent::s_page_data($idPage); $dataClean = $ModelCms->setItemData($data, 0); $dataClean['seoTitle'] = $data['seo_title_page']; $dataClean['seoDescr'] = $data['seo_desc_page']; $this->template->assign('page', $dataClean, true); // ** Assign parent page data if (isset($idParent)) { $parent = parent::s_page_data($idParent); $parentClean = $ModelCms->setItemData($parent, 0); $this->template->assign('parent', $parentClean); } }
/** * Smarty {widget_cms_display} function plugin * * Type: function * Name: widget_cms_display * Date: 29/12/2012 * Update: 10/03/2013 * @author Sire Sam (http://www.sire-sam.be) * @author Gerits Aurélien (http://www.magix-dev.be) * @version 1.0 * @param array * @param Smarty * @return string */ function smarty_function_widget_cms_data($params, $template) { $ModelSystem = new magixglobal_model_system(); $ModelConstructor = new magixglobal_model_constructor(); $ModelCms = new frontend_model_cms(); // Set and load data $current = $ModelSystem->setCurrentId(); $conf = is_array($params['conf']) ? $params['conf'] : array(); $data = $ModelCms->getData($conf, $current); $current = $current['cms']; $htm = null; if ($data != null) { // ** Loop management var $deep = 1; $deep_minus = $deep - 1; $deep_plus = $deep + 1; $pass_trough = 0; $data_empty = false; // ** Loop format & output var $row = array(); $items = array(); $i[$deep] = 0; do { // *** loop management START if ($pass_trough == 0) { // Si je n'ai plus de données à traiter je vide ma variable $row[$deep] = null; } else { // Sinon j'active le traitement des données $pass_trough = 0; } // Si je suis au premier niveaux et que je n'ai pas de donnée à traiter if ($deep == 1 and $row[$deep] == null) { // récupération des données dans $data $row[$deep] = array_shift($data); } // Si ma donnée possède des sous-donnée sous-forme de tableau if (isset($row[$deep]['subdata'])) { if (is_array($row[$deep]['subdata']) and $row[$deep]['subdata'] != null) { // On monte d'une profondeur $deep++; $deep_minus++; $deep_plus++; // on récupére la première valeur des sous-données en l'éffacant du tableau d'origine $row[$deep] = array_shift($row[$deep_minus]['subdata']); // Désactive le traitement des données $pass_trough = 1; } } elseif ($deep != 1) { if ($row[$deep] == null) { if ($row[$deep_minus]['subdata'] == null) { // Si je n'ai pas de sous-données & pas de données à traiter & pas de frères à récupérer dans mon parent // ====> désactive le tableaux de sous-données du parent et retourne au niveau de mon parent unset($row[$deep_minus]['subdata']); unset($i[$deep]); $deep--; $deep_minus = $deep - 1; $deep_plus = $deep + 1; } else { // Je récupère un frère dans mon parent $row[$deep] = array_shift($row[$deep_minus]['subdata']); } // Désactive le traitement des données $pass_trough = 1; } } // *** loop management END // *** list format START if ($row[$deep] != null and $pass_trough != 1) { $i[$deep]++; // Construit doonées de l'item en array avec clée nominative unifiée ('name' => 'monname,'descr' => '<p>ma descr</p>,...) $itemData = $ModelCms->setItemData($row[$deep], $current); // Récupération des sous-données (enfants) if (isset($items[$deep_plus]) != null) { $itemData['subdata'] = $items[$deep_plus]; $items[$deep_plus] = null; } else { $subitems = null; } $items[$deep][] = $itemData; } // *** list format END // Si $data est vide ET que je n'ai plus de données en traitement => arrête la boucle if (empty($data) and $row[1] == null) { $data_empty = true; } } while ($data_empty == false); } $assign = isset($params['assign']) ? $params['assign'] : 'data'; $template->assign($assign, $items[$deep]); }
/** * Smarty {widget_cms_nav} function plugin * * Type: function * Name: widget_cms_nav * Date: 22/09/2012 * Update: 10/03/2012 * Output: * @author Sire Sam (http://www.sire-sam.be) * @author Gerits Aurélien (http://www.magix-dev.be) * @version 1.1 * @param array * @param Smarty * @return string */ function smarty_function_widget_cms_nav($params, $template) { $ModelSystem = new magixglobal_model_system(); $ModelConstructor = new magixglobal_model_constructor(); $ModelCms = new frontend_model_cms(); // Set and load data $current = $ModelSystem->setCurrentId(); $conf = is_array($params['conf']) ? $params['conf'] : array('level' => 'all'); $data = $ModelCms->getData($conf, $current); $current = $current['cms']; $i = 1; $items = null; $output = null; if ($data != null) { // *** set default html attributs if ($params['htmlAttribut']) { $htmlAttr = $params['htmlAttribut']; $id_container = isset($htmlAttr['id_container']) ? ' id="' . $htmlAttr['id_container'] . '"' : null; $class_container = isset($htmlAttr['class_container']) ? ' class="' . $htmlAttr['class_container'] . '"' : null; $class_active = isset($htmlAttr['class_active']) ? $htmlAttr['class_active'] : 'active'; } // *** format items loop (foreach item) foreach ($data as $row_1) { $items_2 = null; if (isset($row_1['subdata']) and is_array($row_1['subdata'])) { foreach ($row_1['subdata'] as $row_2) { /** HTML FORMAT (LEVEL 2)**/ $data_item_2 = $ModelCms->setItemData($row_2, $current); if ($data_item_2['active'] === true) { $current_item = ' class="' . $class_active . '"'; } else { $current_item = null; } $items_2 .= '<li' . $current_item . '>'; $items_2 .= '<a href="' . $data_item_2['url'] . '" title="' . $data_item_2['name'] . '">'; $items_2 .= $data_item_2['name']; $items_2 .= '</a>'; $items_2 .= '</li>'; } } /** HTML FORMAT (LEVEL 1)**/ $data_item = $ModelCms->setItemData($row_1, $current); if ($data_item['active'] === true) { $current_item = ' class="' . $class_active . '"'; } else { $current_item = null; } $items .= '<li' . $current_item . '>'; $items .= '<a href="' . $data_item['url'] . '" title="' . $data_item['name'] . '">'; $items .= $data_item['name']; $items .= '</a>'; $items .= $items_2 != null ? '<ul class="hidden-sm">' . $items_2 . '</ul>' : ''; $items .= '</li>'; } if ($items != null) { $output = isset($params['title']) ? $params['title'] : ''; $output .= '<ul' . $id_container . $class_container . '>'; $output .= isset($params['htmlPrepend']) ? $params['htmlPrepend'] : null; $output .= $items; $output .= isset($params['htmlAppend']) ? $params['htmlAppend'] : null; $output .= '</ul>'; } } return $output; }
/** * Smarty {widget_cms_display} function plugin * * Type: function * Name: widget_cms_display * Date: 29/12/2012 * Update: 10/03/2013 * @author Sire Sam (http://www.sire-sam.be) * @author Gerits Aurélien (http://www.magix-dev.be) * @version 1.0 * @param array * @param Smarty * @return string */ function smarty_function_widget_cms_display($params, $template) { $ModelSystem = new magixglobal_model_system(); $ModelConstructor = new magixglobal_model_constructor(); $ModelCms = new frontend_model_cms(); // Set and load data $current = $ModelSystem->setCurrentId(); $conf = is_array($params['conf']) ? $params['conf'] : array(); $data = $ModelCms->getData($conf, $current); $current = $current['cms']; $htm = null; if ($data != null) { $pattern['default'] = patternCms(); $pattern['custom'] = null; if ($params['pattern']) { $pattern['custom'] = is_array($params['pattern']) ? $params['pattern'] : patternCms($params['pattern']); } $pattern['global'] = $ModelConstructor->mergeHtmlPattern($pattern['default'], $pattern['custom']); // *** format items loop (foreach item) // ** Loop management var $deep = 1; $deep_minus = $deep - 1; $deep_plus = $deep + 1; $pass_trough = 0; $data_empty = false; // ** Loop format & output var $row = array(); $items = array(); $i[$deep] = 0; do { // *** loop management START if ($pass_trough == 0) { // Si je n'ai plus de données à traiter je vide ma variable $row[$deep] = null; } else { // Sinon j'active le traitement des données $pass_trough = 0; } // Si je suis au premier niveaux et que je n'ai pas de donnée à traiter if ($deep == 1 and $row[$deep] == null) { // récupération des données dans $data $row[$deep] = array_shift($data); } // Si ma donnée possède des sous-donnée sous-forme de tableau if (isset($row[$deep]['subdata'])) { if (is_array($row[$deep]['subdata']) and $row[$deep]['subdata'] != null) { // On monte d'une profondeur $deep++; $deep_minus++; $deep_plus++; // on récupére la première valeur des sous-données en l'éffacant du tableau d'origine $row[$deep] = array_shift($row[$deep_minus]['subdata']); // Désactive le traitement des données $pass_trough = 1; } } elseif ($deep != 1) { if ($row[$deep] == null) { if ($row[$deep_minus]['subdata'] == null) { // Si je n'ai pas de sous-données & pas de données à traiter & pas de frères à récupérer dans mon parent // ====> désactive le tableaux de sous-données du parent et retourne au niveau de mon parent unset($row[$deep_minus]['subdata']); unset($i[$deep]); $items[$deep] = $pattern['item']['container']['before'] . $items[$deep] . $pattern['item']['container']['after']; $deep--; $deep_minus = $deep - 1; $deep_plus = $deep + 1; } else { // Je récupère un frère dans mon parent $row[$deep] = array_shift($row[$deep_minus]['subdata']); } // Désactive le traitement des données $pass_trough = 1; } } // *** loop management END // *** list format START if ($row[$deep] != null and $pass_trough != 1) { $i[$deep]++; // Construit doonées de l'item en array avec clée nominative unifiée ('name' => 'monname,'descr' => '<p>ma descr</p>,...) $item_dataVal = $ModelCms->setItemData($row[$deep], $current); // Configuration de la structure HTML de l'item $pattern['global']['is_current'] = $item_dataVal['active'] === true ? 1 : 0; $pattern['global']['id'] = isset($item_dataVal['id']) ? $item_dataVal['id'] : 0; $pattern['global']['url'] = isset($item_dataVal['url']) ? $item_dataVal['url'] : '#'; $pattern['item'] = $ModelConstructor->setItemPattern($pattern['global'], $i[$deep], $deep); // remise à zero du compteur si élément est le dernier de la ligne if ($pattern['item']['is_last'] == 1) { $i[$deep] = 0; } // Récupération de l'affichage pour le niveau $pattern['item']['display'] = is_array($pattern['global']['display'][$deep]) ? $pattern['global']['display'][$deep] : $pattern['global']['display'][1]; if ($pattern['item']['display'] == null) { $pattern['item']['display'] = $pattern['default']['display'][1]; } // Récupération des sous-données (enfants) if (isset($items[$deep_plus]) != null) { $subitems = $items[$deep_plus]; $items[$deep_plus] = null; } else { $subitems = null; } $item = null; foreach ($pattern['item']['display'] as $elem_type) { // BOUCLE de formatage des éléments contenus dans item $pattern['elem'] = $pattern['item'][$elem_type]; if (array_search($elem_type, $pattern['item']['display'])) { // Config class link $item_classLink = null; if (isset($pattern['elem']['classLink'])) { $item_classLink = ' class="' . $pattern['elem']['classLink'] . '"'; $item_classLink = $pattern['elem']['classLink'] == 'none' ? 'none' : $item_classLink; } // Format element on switch switch ($elem_type) { case 'name': $elem = $item_classLink != 'none' ? '<a' . $item_classLink . ' href="' . $item_dataVal['url'] . '" title="' . $item_dataVal['name'] . '">' : ''; $elem .= $item_dataVal['name']; $elem .= $item_classLink != 'none' ? '</a>' : ''; break; case 'descr': $elem = magixcjquery_form_helpersforms::inputCleanTruncate(magixcjquery_form_helpersforms::inputTagClean($item_dataVal['content']), $pattern['item']['descr']['lenght'], $pattern['item']['descr']['delemiter']); break; default: $elem = null; } if ($elem != null) { $item .= $pattern['elem']['before']; $item .= $elem; $item .= $pattern['elem']['after']; } } } $items[$deep] .= $pattern['item']['item']['before']; $items[$deep] .= $item; $items[$deep] .= $subitems; $items[$deep] .= $pattern['item']['item']['after']; } // *** list format END // Si $data est vide ET que je n'ai plus de données en traitement => arrête la boucle if (empty($data) and $row[1] == null) { $data_empty = true; } } while ($data_empty == false); // *** container construct if ($items[$deep] != null) { $htm .= $pattern['global']['container']['before']; $htm .= isset($params['htmlPrepend']) ? $params['htmlPrepend'] : null; $htm .= $items[$deep]; $htm .= isset($params['htmlAppend']) ? $params['htmlAppend'] : null; $htm .= $pattern['global']['container']['after']; } else { $htm = null; } } return $htm; }