diff --git a/library/ZendAfi/View/Helper/Facettes.php b/library/ZendAfi/View/Helper/Facettes.php index b546f6a2ebc1383fdcdd65104817017d821d00c8..42e771285e40da0aba4c50ce8d85a4de99ac172c 100644 --- a/library/ZendAfi/View/Helper/Facettes.php +++ b/library/ZendAfi/View/Helper/Facettes.php @@ -21,14 +21,15 @@ class ZendAfi_View_Helper_Facettes extends ZendAfi_View_Helper_BaseHelper { protected - $_criteres_recherche, - $_current_facettes, + $_criteres, + $_current, $_preferences; - function facettes($facettes, $preferences, $criteres_recherche) { - if(!$facettes) return; + public function facettes($facets, $preferences, $criteres) { + if (!$facets) + return; - $this->_criteres_recherche = $criteres_recherche; + $this->_criteres = $criteres; $this->_preferences = $preferences; Class_ScriptLoader::getInstance() @@ -39,82 +40,112 @@ class ZendAfi_View_Helper_Facettes extends ZendAfi_View_Helper_BaseHelper { .'anchor.parent().remove();' .'})'); - $url = array_merge($criteres_recherche->getUrlRetourListe(), + $url = array_merge($criteres->getUrlRetourListe(), ['controller' => 'recherche', 'action' => 'simple', 'page' => null]); - return - '<div class="facette">' - . $this->listeFacettesHTML("T" . $this->_preferences['facettes_codes'], - $facettes, - $url) - . '</div>'; + return $this + ->_tag('div', + $this->listeFacettesHTML('T' . $this->_preferences['facettes_codes'], + $facets, + $url), + ['class' => 'facette']); } - public function listeFacettesHTML($facettes_codes,$facettes,$url) { - $html='<ul>'; - foreach($facettes as $type => $valeurs){ - if($facettes_codes and strpos($facettes_codes,$type) === false) continue; + public function listeFacettesHTML($codes, $facets, $url) { + $html = ''; + foreach($facets as $type => $values) { + if ($codes and false === strpos($codes, $type)) + continue; - $html.='<li class="facette_titre"><b>'.$valeurs["titre"].'</b>'; - $html.=$this->listeFacettesElementHTML($type, array_splice($valeurs, 1), $url); - $html.='</li>'; + $html .= $this + ->_tag('li', + $this->_tag('b', $values['titre']) + . $this->listeFacettesElementHTML($type, array_splice($values, 1), $url), + ['class' => 'facette_titre']); } - return $html.='</ul>'; + + return $this->_tag('ul', $html); } - public function listeFacettesElementHTML($type,$valeurs,$url){ - $facettes_nombre = $this->_preferences['facettes_nombre']; - $first_facets = array_splice($valeurs, 0, $facettes_nombre); - $following_facets = array_splice($valeurs, 0, $facettes_nombre); + public function listeFacettesElementHTML($type, $values, $url) { + $count = $this->_preferences['facettes_nombre']; - $html = '<ul style="list-style-image:url('.URL_IMG.'puce_facette.gif)">'; - foreach($first_facets as $facette) - $html .= $this->renderLIFacette($url, $facette); + $first_facets = array_splice($values, 0, $count); + $following_facets = array_splice($values, 0, $count); - if ($following_facets) { - $html .= '<li class="msg"><a href="#">'.$this->view->_('Afficher plus de facettes...').'</a><ul id="'.$type.'_msg" style="display:none">'; + $html = ''; + foreach($first_facets as $facet) + $html .= $this->renderLIFacette($url, $facet); - foreach($following_facets as $facette) - $html .= $this->renderLIFacette($url, $facette); + if ($following_facets) + $html .= $this->_renderFollowingFacets($type, $following_facets); - $html .= '</ul></li>'; - } + return $this->_tag('ul', $html, + ['style' => 'list-style-image:url(' . URL_IMG . 'puce_facette.gif)']); + } + + + protected function _renderFollowingFacets($type, $facets) { + $html = ''; + foreach($facets as $facet) + $html .= $this->renderLIFacette($url, $facet); + + return $this + ->_tag('li', + $this->_tag('a', $this->_('Afficher plus de facettes...'), + ['href' => '#']) + . $this->_tag('ul', $html, + ['id' => $type . '_msg', + 'style' => 'display:none']), + ['class' => 'msg']); + } - $html.='</ul>'; - return $html; + + public function renderLIFacette($url, $facet) { + $url['facette'] = $facet['id']; + return $this->renderLi($url, $facet); + } + + + protected function renderLi($url, $facet) { + return $this + ->_tag('li', + $this->renderLabel($url, $facet) + . $this->renderCount($facet) + . $this->renderRemove($facet), + ['class' => 'facette' . ($this->isActive($facet['id']) ? 'selected' : '')]); } - public function renderLIFacette($url, $facette) { - $url['facette'] = $facette['id']; - return $this->renderLi($url, $facette); + protected function renderLabel($url, $facet) { + return $this->view->tagAnchor($this->view->url($url, null, true), + $facet['libelle'], + ['class' => 'facette']); } - protected function renderLi($url, $facette) { - return - '<li class="facette'. - $this->isFacetteActive($facette['id']).'">'. - $this->view->tagAnchor($this->view->url($url, null, true), - $facette["libelle"], - ['class' => 'facette']). - '<span>('.$facette["nombre"].')</span>'. - $this->view->tagAnchor($this->view->url($this->_criteres_recherche->getUrlRemoveFacette(new Class_Notice_Facette($facette['id'])),null,true), - $this->view->_('Retirer ').$facette["libelle"], - ['class' => 'remove_facette', - 'style' => 'display:none']). - '</li>'; + protected function renderCount($facet) { + return $this->_tag('span', '(' . $facet['nombre'] . ')'); } + protected function renderRemove($facet) { + $remove_url = $this->view->url($this->_criteres->getUrlRemoveFacette(new Class_Notice_Facette($facet['id'])), + null, true); + + return $this->view->tagAnchor($remove_url, + $this->_('Retirer ') . $facet['libelle'], + ['class' => 'remove_facette', + 'style' => 'display:none']); + } + - protected function isFacetteActive($facette_id) { - $this->_current_facettes = $this->_criteres_recherche->getFacettes(); - return in_array($facette_id,$this->_current_facettes) ? ' selected' : ''; + protected function isActive($id) { + return in_array($id, $this->_criteres->getFacettes()); } } \ No newline at end of file