Commit b131759f authored by Patrick Barroca's avatar Patrick Barroca 😠

version 7.11.8

Merge remote-tracking branch 'refs/remotes/afi/stable' into afi-hotline-master

# Conflicts:
#	VERSIONS
#	application/modules/admin/views/scripts/profil/proprietes.phtml
#	library/startup.php
parents 8800de23 569c5ef3
07/11/2017 - v7.11.8
- ticket #66742 : Résultat de recherche : Correction d'un cas rendant possible de configurer les listes de résultat sans limite par page
25/10/2017 - v7.11.7
- ticket #65680 : Ressources numériques : correction de l'accès à la ressource Arte VOD.
......
<?php echo $this->partial('profil/_profil_panel.phtml',
array('profil' => $this->profil)); ?>
['profil' => $this->profil]); ?>
<table cellspacing="0" cellpadding="0">
<tr class="soustitre">
<td>Blocs et onglets des notices</td>
<td><?php echo $this->_('Blocs et onglets des notices');?></td>
<td width="20px">&nbsp;</td>
</tr>
<tr>
<td colspan="3" class="separ"></td>
</tr>
<?php
$ligne=0;
foreach($this->modules as $id_module => $module) {
if ($ligne & 1) $class="first"; else $class="second";
echo '<tr class="'.$class.'" style="height:20px">';
echo '<td>'.$module["libelle"].'</td>';
$onclick="showPopWin('".BASE_URL."/admin/modulesnotice/".strtolower($id_module)."?id_profil=".$this->profil->getId()."&config=admin',".$module['popup_width'].",".$module['popup_height'].",null)";
echo '<td align="center"><img class="ico" src="'.URL_ADMIN_IMG.'ico/edit.gif" onclick="'.$onclick.'" title="Modifier" style="cursor:pointer"></td>';
print('</tr>');
$ligne ++ ;
}
<?php
$ligne = 0;
foreach($this->modules as $id_module => $module) {
$class = ($ligne & 1) ? 'first' : 'second';
?>
$edit = $this->renderModelAction($this->profil,
['url' => ['module' => 'admin',
'controller' => 'modulesnotice',
'action' => strtolower($id_module),
'config' => 'admin',
'id_profil' => '%s'],
'icon' => 'edit',
'label' => $this->_('Modifier'),
'anchorOptions' => ['data-popup' => 'true']]);
echo $this->tag('tr',
$this->tag('td', $module['libelle'])
. $this->tag('td', $edit),
['class' => $class,
'style' => 'height:20px']);
$ligne ++ ;
}
?>
</table>
<table cellspacing="0" cellpadding="0">
<tr class="soustitre">
<td><?php echo $this->_('Écrans');?></td>
<td width="20px">&nbsp;</td>
</tr>
<tr>
<td colspan="3" class="separ"></td>
</tr>
<?php
$edit = $this->renderModelAction($this->profil,
['url' => ['module' => 'admin',
'controller' => 'modules',
'action' => 'recherche',
'config' => 'site',
'type_module' => 'recherche',
'id_profil' => '%s',
'action1' => 'resultat',
'action2' => 'simple'],
'icon' => 'edit',
'label' => $this->_('Modifier'),
'anchorOptions' => ['data-popup' => 'true']]);
echo $this->tag('tr',
$this->tag('td', $this->_('Résultat de recherche simple'))
. $this->tag('td', $edit),
['class' => 'first',
'style' => 'height:20px']);
?>
</table>
<br>
......@@ -172,7 +172,9 @@ class Class_CriteresRecherche {
public function setDefaultPageSize($page_size) {
$this->_default_page_size = $page_size;
$page_size = (int)$page_size;
if (0 < $page_size && static::MAX_PAGE_SIZE >= $page_size)
$this->_default_page_size = $page_size;
return $this;
}
......
......@@ -23,52 +23,73 @@
class Class_Profil_Preferences_SearchResult {
use Trait_Translator;
protected $_settings;
protected
$_settings,
$_legacy;
public function __construct() {
$this->_legacy =
[
'barre_nav' => $this->_('Résultat'), // Barre de nav
'titre' => '',
'search_term_editable' => 1, // Replace span search term with form input
'liste_nb_par_page' => 10, // Nombre de notices par page
'liste_format' => 1, // Format de liste (1=liste 2=accordéon 3=vignettes 4=bookflip)
'liste_codes' => 'TAN', // Champs a afficher dans la liste (TANECR)
'facettes_actif' => 1, // Afficher les facettes
'multi_facettes' => 1, //Autoriser les multi facettes
'facettes_codes' => 'ADPML', // Types de facettes à afficher
'facettes_nombre' => 3, // Nombre de facettes à afficher pour 1 rubrique
'facettes_message' => $this->_('Affiner le résultat...'), // Message au dessus de la boite
'suggests_enabled' => 1, // Display search suggests
'suggests_number' => 3, // Number of suggests
'bookmarks_enabled' => 1, // Display search suggests
'tags_actif' => 1, // Afficher les tags de liste
'tags_codes' => 'AMDPZ', // Types de tags a afficher
'tags_nombre' => 30, // Nombre de tags a afficher
'tags_calcul' => 3, // Méthode de calcul pour les tranches (0=répartition 1=ecart/moyenne 2=ecart/moyenne pondéré)
'tags_position' => 2, // Position 2=sous les facettes 1=sous la liste
'tags_message' => $this->_('Elargir la recherche...'), // Message au dessus de la boite
'cvs_display_position' => 3, //Affichage des ressources CVS
'cvs_resultat_titre' => $this->_('Ressources numériques'), // titre résultat de recherche CVS
'cvs_autres_resultats' => $this->_('Documents'), // titre résultat de recherche CVS
'cvs_msg_deco' => $this->_('Vous devez etre connecté'),
'cvs_nb_result' => 5,
'cvs_msg_droit' => $this->_('Merci de contacter la médiathèque pour obtenir un accès.'),
'suggestion_achat' => 1, // Afficher le lien 'Suggérer un achat'
'zones_titre' => '200$e;200$h;200$i', // Liste des zones de titre à afficher dans le résultat: exemple: 200$e,400$t
'header_composition' => new Class_Entity(),
];
}
public function getLegacy() {
$ret = [];
$ret["barre_nav"] = "Résultat"; // Barre de nav
$ret["titre"] = '';
$ret['search_term_editable'] = 1; // Replace span search term with form input
$ret["liste_nb_par_page"] = 10; // Nombre de notices par page
$ret["liste_format"] = 1; // Format de liste (1=liste 2=accordéon 3=vignettes 4=bookflip)
$ret["liste_codes"] = "TAN"; // Champs a afficher dans la liste (TANECR)
$ret["facettes_actif"] = 1; // Afficher les facettes
$ret['multi_facettes'] = 1; //Autoriser les multi facettes
$ret["facettes_codes"] = "ADPML"; // Types de facettes à afficher
$ret["facettes_nombre"] = 3; // Nombre de facettes à afficher pour 1 rubrique
$ret["facettes_message"] = "Affiner le résultat..."; // Message au dessus de la boite
$ret["suggests_enabled"] = 1; // Display search suggests
$ret["suggests_number"] = 3; // Number of suggests
$ret["bookmarks_enabled"] = 1; // Display search suggests
$ret["tags_actif"] = 1; // Afficher les tags de liste
$ret["tags_codes"] = "AMDPZ"; // Types de tags a afficher
$ret["tags_nombre"] = 30; // Nombre de tags a afficher
$ret["tags_calcul"] = 3; // Méthode de calcul pour les tranches (0=répartition 1=ecart/moyenne 2=ecart/moyenne pondéré)
$ret["tags_position"] = 2; // Position 2=sous les facettes 1=sous la liste
$ret["tags_message"] = "Elargir la recherche..."; // Message au dessus de la boite
$ret["cvs_display_position"] = 3; //Affichage des ressources CVS
$ret["cvs_resultat_titre"] = "Ressources numériques"; // titre résultat de recherche CVS
$ret["cvs_autres_resultats"] = "Documents"; // titre résultat de recherche CVS
$ret["cvs_msg_deco"] = "Vous devez etre connecté";
$ret["cvs_nb_result"] = 5;
$ret["cvs_msg_droit"] = "Merci de contacter la médiathèque pour obtenir un accès.";
$ret["suggestion_achat"] = 1; // Afficher le lien "Suggérer un achat"
$ret["zones_titre"] = '200$e;200$h;200$i'; // Liste des zones de titre à afficher dans le résultat: exemple: 200$e;400$t
$ret['header_composition'] = new Class_Entity();
return $ret;
return $this->_legacy;
}
public function getLegacyDefault($named, $ifNotFound=null) {
return array_key_exists($named, $this->_legacy)
? $this->_legacy[$named]
: $ifNil;
}
public function getHeaderComposition($profile) {
public function getHeaderCompositionOf($profil) {
$conf = $profil->getCfgModulesPreferences('recherche', 'resultat', 'simple')['header_composition'];
return $this->getHeaderComposition($conf);
}
public function getHeaderComposition($value) {
$entity = new Class_Entity();
return $entity
->setId('header_composition')
->setAvailableHeader($this->_('Outils disponibles'))
->setSelectedHeader($this->_('Outils activés'))
->setAvailable($this->_getAvailableHeaderItems($profile))
->setSelected($this->_getSelectedHeaderItems($profile));
->setAvailable($this->_getAvailableHeaderItems($value))
->setSelected($this->_getSelectedHeaderItems($value));
}
......@@ -115,23 +136,23 @@ class Class_Profil_Preferences_SearchResult {
}
protected function _getAvailableHeaderItems($profile) {
if(!$profile)
protected function _getAvailableHeaderItems($value) {
if (!$value)
return $this->_getDefaultHeaderItems();
return $this->_getHeaderItems($profile, function($item, $settings)
return $this->_getHeaderItems($value, function($item, $settings)
{
return !in_array($item->getId(), $settings);
});
}
protected function _getSelectedHeaderItems($profile) {
if(!$profile)
protected function _getSelectedHeaderItems($value) {
if (!$value)
return [];
$selected = [];
foreach($this->_getHeaderCompositionAsArray($profile) as $id)
foreach($this->_getHeaderCompositionFromString($value) as $id)
$selected[] = $this->_getEntity($id);
return array_filter($selected);
......@@ -146,8 +167,8 @@ class Class_Profil_Preferences_SearchResult {
}
protected function _getHeaderItems($profile, $callback) {
$settings = $this->_getHeaderCompositionAsArray($profile);
protected function _getHeaderItems($value, $callback) {
$settings = $this->_getHeaderCompositionFromString($value);
return (new Storm_Collection($this->_getDefaultHeaderItems()))
->select(function($item) use ($settings, $callback)
......@@ -158,19 +179,16 @@ class Class_Profil_Preferences_SearchResult {
}
protected function _getHeaderCompositionAsArray($profile) {
if(!$this->_settings)
$this->_settings = explode(';', $profile->getCfgModulesPreferences('recherche', 'resultat', 'simple')['header_composition']);
return $this->_settings;
protected function _getHeaderCompositionFromString($value) {
return explode(';', $value);
}
public function getPageSize($profil) {
$settings = $profil->getSearchResultSettings();
return isset($settings['liste_nb_par_page'])
return (isset($settings['liste_nb_par_page']) && $settings['liste_nb_par_page'])
? $settings['liste_nb_par_page']
: 5;
: $this->getLegacyDefault('liste_nb_par_page', 5);
}
......
......@@ -38,10 +38,9 @@ class ZendAfi_Form_Configuration_Menu_Entry extends ZendAfi_Form {
}
public function populate($datas) {
public function populate(array $datas) {
$this
->addToHeadGroup(['libelle',
'use_profil'])
->addToHeadGroup(['libelle', 'use_profil'])
->addToStyleGroup(['picto']);
return parent::populate($datas);
......
......@@ -19,7 +19,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
class ZendAfi_Form_Configuration_Menu_News extends ZendAfi_Form_Configuration_Menu_Entry {
class ZendAfi_Form_Configuration_Menu_News
extends ZendAfi_Form_Configuration_Menu_Entry {
public function init() {
parent::init();
......@@ -55,7 +56,7 @@ class ZendAfi_Form_Configuration_Menu_News extends ZendAfi_Form_Configuration_Me
}
public function populate($datas) {
public function populate(array $datas) {
$this
->addElement('treeSelect',
'articles_selector',
......
......@@ -36,23 +36,31 @@ class ZendAfi_Form_Configuration_NavWidget extends ZendAfi_Form {
->addElement('DragAndDrop',
'children',
['label' => $this->_('Eléments du menu')]);
['label' => $this->_('Eléments du menu'),
'entityfactory' => function($value) {
return (new Class_Entity())
->setId('children')
->setOptions(['sticky_available' => true])
->setSelectedHeader($this->_('Sélectionnés'))
->setSelected($value ? $value : [])
->setAvailableHeader($this->_('Disponibles'))
->setAvailable((new Class_Systeme_ModulesMenu())->getEntries())
;
}])
->addToHeadGroup(['libelle'])
->addToSelectionGroup(['children'])
->addToStyleGroup(['picto'])
;
}
public function populate($datas) {
$this->addToHeadGroup(['libelle'])
->addToSelectionGroup(['children'])
->addToStyleGroup(['picto']);
parent::populate($datas);
$this->getElement('children')
->setValue((new Class_Entity())
->setId('children')
->setOptions(['sticky_available' => true])
->setSelectedHeader($this->_('Sélectionnés'))
->setSelected(isset($datas['Children']) ? $datas['Children'] : [])
->setAvailableHeader($this->_('Disponibles'))
->setAvailable((new Class_Systeme_ModulesMenu())->getEntries()));
public function populate(array $data) {
parent::populate($data);
if (isset($data['Children']))
$this->getElement('children')->setValue($data['Children']);
return $this;
}
}
\ No newline at end of file
......@@ -38,9 +38,6 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
->addSelectedFieldFor('tags_codes', $codification->cleanDeletedFacets($conf['tags_codes']))
->addSelectedFieldFor('facettes_codes', $codification->cleanDeletedFacets($conf['facettes_codes']))
->addValueTo('header_composition',
(new Class_Profil_Preferences_SearchResult())->getHeaderComposition(Class_Profil::getCurrentProfil()))
->addToDisplaySettingsGroup(['liste_format',
'liste_nb_par_page',
'liste_codes',
......@@ -104,7 +101,12 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
->addElement('dragAndDrop',
'header_composition',
['label' => $this->_('Composition de l\'entête')])
['label' => $this->_('Composition de l\'entête'),
'value' => null,
'entityfactory' => function($value) {
$pref = new Class_Profil_Preferences_SearchResult();
return $pref->getHeaderComposition($value);
}])
->addElement('select',
'liste_format',
......@@ -115,6 +117,8 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
'liste_nb_par_page',
['label' => $this->_('Nombre de notices par page'),
'size' => $this->_num_size,
'required' => true,
'allowEmpty' => false,
'validators' => [['name' => 'Between',
'value' => true,
'options' => ['min' => 3,
......@@ -129,9 +133,7 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
'field' => 'liste',
'values' => '',
'required' => true,
'validators' => [['name' => 'notEmpty',
'value' => false,
'options' => [ 'messages' => $this->_('Indiquez au moins 1 champ à afficher pour la liste')]]]])
'allowEmpty' => false])
->addElement('text' ,
'zones_titre',
......@@ -231,7 +233,7 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
'options' => [
'min' => 1,
'max' => 50,
'messages' =>'Le nombre de tags doit être compris entre 1 et 50']]]])
'messages' => 'Le nombre de tags doit être compris entre 1 et 50']]]])
->addElement('checkbox',
'bookmarks_enabled',
......
......@@ -24,7 +24,7 @@ class ZendAfi_Form_Decorator_DragAndDrop extends Zend_Form_Decorator_Abstract {
* @return string
*/
public function render($content) {
return $this->_element->getView()->dragAndDrop($this->_element->getValue());
return $this->_element->getView()->dragAndDrop($this->_element->getEntity());
}
}
?>
\ No newline at end of file
......@@ -21,8 +21,11 @@
class ZendAfi_Form_Element_DragAndDrop extends Zend_Form_Element {
protected $_entity_factory;
public function __construct($spec, $options=null) {
parent::__construct($spec, $options);
$decorators = $this->_decorators;
$this->_decorators = ['DragAndDrop' => new ZendAfi_Form_Decorator_DragAndDrop()];
......@@ -30,4 +33,16 @@ class ZendAfi_Form_Element_DragAndDrop extends Zend_Form_Element {
$this->_decorators[$name] = $value;
$this->removeDecorator('ViewHelper');
}
public function setEntityFactory($factory) {
$this->_entity_factory = $factory;
}
public function getEntity() {
return ($factory = $this->_entity_factory)
? $factory($this->getValue())
: new Class_Entity;
}
}
\ No newline at end of file
......@@ -52,7 +52,7 @@ class ZendAfi_View_Helper_Search_Header extends ZendAfi_View_Helper_BaseHelper {
protected function _getHeaderComposition() {
$instance = (new Class_Profil_Preferences_SearchResult())
->getHeaderComposition(Class_Profil::getCurrentProfil());
->getHeaderCompositionOf(Class_Profil::getCurrentProfil());
return (new Storm_Collection($instance->getSelected()))
->injectInto([],
......
......@@ -82,7 +82,7 @@ class Bokeh_Engine {
function setupConstants() {
defineConstant('BOKEH_MAJOR_VERSION','7.11');
defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.7');
defineConstant('BOKEH_RELEASE_NUMBER', BOKEH_MAJOR_VERSION . '.8');
defineConstant('BOKEH_REMOTE_FILES', 'http://git.afi-sa.fr/afi/opacce/');
......
......@@ -1108,7 +1108,8 @@ class ModulesControllerRechercheWithCVSActivatePostTest
class ModulesControllerSearchPostValidationTest extends Admin_AbstractControllerTestCase {
class ModulesControllerSearchPostValidationTest
extends Admin_AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
......@@ -1118,49 +1119,52 @@ class ModulesControllerSearchPostValidationTest extends Admin_AbstractController
return
[
[array_merge($default_search_conf,
['liste_nb_par_page' => 1]),
'Le nombre de notices par page doit être compris entre 3 et 50'],
[array_merge($default_search_conf,
['liste_nb_par_page' => 51]),
'Le nombre de notices par page doit être compris entre 3 et 50'],
[array_merge($default_search_conf,
['liste_codes' => '']),
'Indiquez au moins 1 champ à afficher pour la liste'],
[array_merge($default_search_conf,
['facettes_actif' => 1,
'facettes_nombre' => 0]),
'Le nombre de facettes doit être compris entre 2 et 10'],
[array_merge($default_search_conf,
['facettes_actif' => 1,
'facettes_nombre' => 15]),
'Le nombre de facettes doit être compris entre 2 et 10'],
[array_merge($default_search_conf,
['facettes_actif' => '1',
'facettes_codes' => '']),
'Indiquez au moins 1 facette à afficher'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_nombre' => 4]),
'Le nombre de tags doit être compris entre 5 et 1000'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_nombre' => 1001]),
'Le nombre de tags doit être compris entre 5 et 1000'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_codes' => '']),
'Indiquez au moins 1 type de tag à afficher']
];
[array_merge($default_search_conf,
['liste_nb_par_page' => '']),
'Une valeur est requise'],
[array_merge($default_search_conf,
['liste_nb_par_page' => 1]),
'Le nombre de notices par page doit être compris entre 3 et 50'],
[array_merge($default_search_conf,
['liste_nb_par_page' => 51]),
'Le nombre de notices par page doit être compris entre 3 et 50'],
[array_merge($default_search_conf,
['liste_codes' => '']),
'Une valeur est requise'],
[array_merge($default_search_conf,
['facettes_actif' => 1,
'facettes_nombre' => 0]),
'Le nombre de facettes doit être compris entre 2 et 10'],
[array_merge($default_search_conf,
['facettes_actif' => 1,
'facettes_nombre' => 15]),
'Le nombre de facettes doit être compris entre 2 et 10'],
[array_merge($default_search_conf,
['facettes_actif' => '1',
'facettes_codes' => '']),
'Indiquez au moins 1 facette à afficher'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_nombre' => 4]),
'Le nombre de tags doit être compris entre 5 et 1000'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_nombre' => 1001]),
'Le nombre de tags doit être compris entre 5 et 1000'],
[array_merge($default_search_conf,
['tags_actif' => '1',
'tags_codes' => '']),
'Indiquez au moins 1 type de tag à afficher']
];
}
......
Markdown is supported
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