diff --git a/application/modules/admin/controllers/ModulesController.php b/application/modules/admin/controllers/ModulesController.php index 9d48c274efc5737b890f5fb992b18bcc1665cfce..b86bc9f4495c1cb8a09f6ac5d78824d6ef8612f6 100644 --- a/application/modules/admin/controllers/ModulesController.php +++ b/application/modules/admin/controllers/ModulesController.php @@ -541,12 +541,10 @@ class Admin_ModulesController extends ZendAfi_Controller_Action { public function applyToAction() { - $module = new Class_Profil_ModuleDefinition($this->_getParam('type_module'), - $this->_getParam('action1'), - $this->_getParam('action2')); + $module = $this->_getProfileModuleDefinition(); $this->view->titre = $this->_('Étendre le paramétrage'); - $this->view->form = $form = $module->getApplyToForm($this->view->url); + $this->view->form = $form = $module->getApplyToForm($this->view->url()); if ($this->_request->isPost() && $form->isValid($this->_request->getPost())) { @@ -556,4 +554,17 @@ class Admin_ModulesController extends ZendAfi_Controller_Action { $this->render->renderScript('modules/_retour.phtml'); } } + + + protected function _getProfileModuleDefinition() { + if (!$id = $this->_getParam('id')) + return new Class_Profil_ModuleDefinition($this->_getParam('type_module'), + $this->_getParam('action1'), + $this->_getParam('action2')); + + $id = explode('_', $id); + return new Class_Profil_ModuleDefinition((isset($id[0]) ? $id[0] : ''), + (isset($id[1]) ? $id[1] : ''), + (isset($id[2]) ? $id[2] : '')); + } } \ No newline at end of file diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php index cc66a1a5a4be1998fe1172b453be65d0016c6751..37e460e15fcc8003e26af24b453b873c43b16a86 100644 --- a/library/Class/Calendar.php +++ b/library/Class/Calendar.php @@ -243,6 +243,12 @@ class Class_Calendar { } + public function setSize($size) { + $this->preferences['size'] = $size; + return $this; + } + + public function getAdminSelectedCategories() { if (isset($this->admin_selected_categories)) return $this->admin_selected_categories; diff --git a/library/Class/Systeme/ModulesAccueil/Action/AdvancedSearch.php b/library/Class/Systeme/ModulesAccueil/Action/AdvancedSearch.php new file mode 100644 index 0000000000000000000000000000000000000000..6dceaeb75d761a1383245c0ec8c02baa407dd872 --- /dev/null +++ b/library/Class/Systeme/ModulesAccueil/Action/AdvancedSearch.php @@ -0,0 +1,28 @@ +<?php +/** + * Copyright (c) 2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +class Class_Systeme_ModulesAccueil_Action_AdvancedSearch extends Class_Systeme_ModulesAccueil_Action { + + public function __construct() { + parent::__construct(); + $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_AdvancedSearch'; + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/Action/AdvancedSearch.php b/library/Class/Systeme/Widget/Action/AdvancedSearch.php new file mode 100644 index 0000000000000000000000000000000000000000..44849c29afd3eed4cf95cce5f904c97968e3a248 --- /dev/null +++ b/library/Class/Systeme/Widget/Action/AdvancedSearch.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Class_Systeme_Widget_Action_AdvancedSearch extends Class_Systeme_Widget_Action { + public function getResourcesDefinition() { + return new Class_Systeme_ModulesAccueil_Action_AdvancedSearch; + } + + + public function _getTitle() { + return $this->_('Configuration de la page de recherche avancée'); + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/ActionLoader.php b/library/Class/Systeme/Widget/ActionLoader.php index 608d47f04d60cb2e356cdb7a12d6cf72c3a859f9..016fc2ffdb87d95df53c9e61fbab8495999c0d86 100644 --- a/library/Class/Systeme/Widget/ActionLoader.php +++ b/library/Class/Systeme/Widget/ActionLoader.php @@ -23,6 +23,7 @@ class Class_Systeme_Widget_ActionLoader { public function find($id) { $actions = $this->_getActions(); + if (!isset($actions[$id])) return (new Class_Systeme_Widget_Action)->setId($id); @@ -36,6 +37,7 @@ class Class_Systeme_Widget_ActionLoader { $actions = ['recherche_resultat_simple' => 'Class_Systeme_Widget_Action_SearchResult', 'recherche_viewnotice' => 'Class_Systeme_Widget_Action_Record', + 'recherche_avancee' => 'Class_Systeme_Widget_Action_AdvancedSearch', 'abonne_fiche' => 'Class_Systeme_Widget_Action_User', 'author_view' => 'Class_Systeme_Widget_Action_Author', 'bib_en-lire-plus' => 'Class_Systeme_Widget_Action_Library']; diff --git a/library/Class/Template/Loader.php b/library/Class/Template/Loader.php index 2f98ef23d2f05f2d68dcf66bc7160005bf86de7c..2dc58834205b74203143429d5782c93ecac41dc9 100644 --- a/library/Class/Template/Loader.php +++ b/library/Class/Template/Loader.php @@ -27,9 +27,10 @@ class Class_Template_Loader { public function getTemplates() { return [new Historic_Template, new Intonation_Template, + new Muscle_Template, new MyBibApp_Template, + new Polygone_Template, new TerreDuMilieu_Template, - new Muscle_Template ]; } diff --git a/library/ZendAfi/Controller/Plugin/DefineURLs.php b/library/ZendAfi/Controller/Plugin/DefineURLs.php index 812b5ea6fd42a1d030e2b40e7d50bdcfe1f01049..f6534b2fc786e2971758c37cfa307189309e1171 100644 --- a/library/ZendAfi/Controller/Plugin/DefineURLs.php +++ b/library/ZendAfi/Controller/Plugin/DefineURLs.php @@ -66,8 +66,7 @@ class ZendAfi_Controller_Plugin_DefineURLs extends Zend_Controller_Plugin_Abstra } $detector = new ZendAfi_Controller_Plugin_DefineURLs_ProfileDetector(); - Class_Profil::setCurrentProfil($detector->detectFrom($request)); - $profil = Class_Profil::getCurrentProfil(); + $profil = Class_Profil::setCurrentProfil($detector->detectFrom($request)); Class_Template::setCurrentFrom($request->getParam('id_profil', $request->getParam('profile_id', $profil->getId()))); @@ -241,7 +240,7 @@ class ZendAfi_Controller_Plugin_DefineURLs_ProfileDetector { } if ($request->getModuleName() !== ZendAfi_Controller_Plugin_DefineURLs::PHONE - && ($profil = Class_Profil::find((int)$session->id_profil))) + && ($profil = Class_Profil::find((int) $session->id_profil))) return $profil; if ($this->shouldSelectTelephone($request) diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/AdvancedSearch.php b/library/ZendAfi/Form/Configuration/Widget/Action/AdvancedSearch.php new file mode 100644 index 0000000000000000000000000000000000000000..58986c799fa1339e38098de59f3874814ea2e0a8 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/AdvancedSearch.php @@ -0,0 +1,43 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class ZendAfi_Form_Configuration_Widget_Action_AdvancedSearch extends ZendAfi_Form_Configuration_Widget_Action { + public function init() { + parent::init(); + if (Class_AdminVar::isCustomSearchFormEnabled()) + $this->addElement('sortableConnectLists', + 'forms', + ['label' => $this->_('Formulaires à afficher'), + 'displayInline' => true, + 'selectedLabel' => $this->_('Affichés'), + 'availableLabel' => $this->_('Disponibles'), + 'multiOptions' => Class_SearchForm::getMultiOptions()]); + } + + + public function initDisplayGroups() { + $this->addDisplayGroup(['forms'], + 'custom_forms', + ['Legend' => $this->_('Formulaires personnalisés')]); + parent::initDisplayGroups(); + } +} \ No newline at end of file diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/Record.php b/library/ZendAfi/Form/Configuration/Widget/Action/Record.php index 2d2182fc17c397f99183267db5dd1610784e32b1..2e8678ce1dec654e8925551036972c357d3a68f8 100644 --- a/library/ZendAfi/Form/Configuration/Widget/Action/Record.php +++ b/library/ZendAfi/Form/Configuration/Widget/Action/Record.php @@ -21,6 +21,25 @@ class ZendAfi_Form_Configuration_Widget_Action_Record extends ZendAfi_Form_Configuration_Widget_Action_Tabs { + + + public function init() { + parent::init(); + $this + ->addElement('userfile', + Class_Notice_Xsl::KEY, + ['label' => $this->_('Fichier XSL'), + 'allowEmpty' => true, + 'validators' => [(new Zend_Validate_Regex('/^.*\.xsl$/i')) + ->setMessage($this->_('Le fichier doit être de type "xsl"'))]]); + } + + + public function initDisplayGroups() { + $this->addToDisplaySettingsGroup([Class_Notice_Xsl::KEY]); + parent::initDisplayGroups(); + } + protected function _getRichContentInstance() { return (new Intonation_Library_View_Wrapper_Record_RichContent) ->setView(new Class_Entity) diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/SearchResult.php b/library/ZendAfi/Form/Configuration/Widget/Action/SearchResult.php index c7b87d34cd629946ec021fd6be70619e06e003e1..19b47f427aac2f9eddfd17b82326d35cb7dc474a 100644 --- a/library/ZendAfi/Form/Configuration/Widget/Action/SearchResult.php +++ b/library/ZendAfi/Form/Configuration/Widget/Action/SearchResult.php @@ -41,7 +41,14 @@ class ZendAfi_Form_Configuration_Widget_Action_SearchResult extends ZendAfi_Form ->addElement('codeList', 'facettes_codes', ['label' => $this->_('Facettes à afficher'), - 'field' => 'facettes']); + 'field' => 'facettes']) + + ->addElement('userfile', + Class_Notice_Xsl::KEY, + ['label' => $this->_('Fichier XSL'), + 'allowEmpty' => true, + 'validators' => [(new Zend_Validate_Regex('/^.*\.xsl$/i')) + ->setMessage($this->_('Le fichier doit être de type "xsl"'))]]); } @@ -51,7 +58,9 @@ class ZendAfi_Form_Configuration_Widget_Action_SearchResult extends ZendAfi_Form 'facettes_nombre', 'facettes_codes'], 'facettes', - ['legend' => $this->_('Facettes')]); + ['legend' => $this->_('Facettes')]) + + ->addToDisplaySettingsGroup([Class_Notice_Xsl::KEY]); parent::initDisplayGroups(); Class_Template::current()->customActionForm($this); diff --git a/library/templates/Intonation/Assets/css/intonation.css b/library/templates/Intonation/Assets/css/intonation.css index 1a50278ca453d45cea942ae023c4d0898379cd0b..d5aaf6fb5198e3784476a462a6c51a01735b1353 100644 --- a/library/templates/Intonation/Assets/css/intonation.css +++ b/library/templates/Intonation/Assets/css/intonation.css @@ -417,6 +417,11 @@ label[data-name=note] ~ div label.multi-element-label + br { font-size: 1.5em; } +.jumbotron .nav-link div { + font-size: 11px; + max-width: 100px; +} + .modal_image { position: fixed; width: 100%; @@ -544,6 +549,11 @@ dl.row { display: none !important; } +.card-footer > a.card-link:first-child:last-child .button_text, +.card_action:first-child:last-child .button_text { + display: inline !important; +} + .dropdown-menu .button_text { display: inline-block !important; } @@ -669,11 +679,6 @@ dl.row { color: var(--front-text); } -.card-footer > a.card-link:first-child:last-child .button_text, -.card_action:first-child:last-child .button_text { - display: inline-block !important; -} - @media (min-width: 576px) { .auto_col .card-columns { -webkit-column-count: 2; @@ -729,4 +734,8 @@ dl.row { .card-img-overlay .text-left { text-align: center !important; +} + +.menu_admin_front a[class*="deactivate"][style*="inline"] { + display: block !important; } \ No newline at end of file diff --git a/library/templates/Intonation/Assets/js/masonry.js b/library/templates/Intonation/Assets/js/masonry.js index bdca467ceec7aa672e6f103ce56f9b40f6bd5faf..81884b49c33f5425eaebe1288c59e52a3a1a383f 100644 --- a/library/templates/Intonation/Assets/js/masonry.js +++ b/library/templates/Intonation/Assets/js/masonry.js @@ -1,37 +1,43 @@ (function ( $ ) { $.fn.masonry = function () { var html = $(this); + var all_items = initAllItems(); - var allItems = $(html).find('.masonry-brick'); - for(var i=0; i < allItems.length; i++) { - imagesLoaded( allItems[i], function(instance) { - var item = instance.elements[0]; - resizeMasonryItem(item); - } ); - } - - var masonryEvents = ['load', 'resize']; - masonryEvents.forEach( function(event) { + var masonry_events = ['load', 'resize']; + masonry_events.forEach( function(event) { window.addEventListener(event, resizeAllMasonryItems); - } ); - + }); - function resizeMasonryItem(item){ - var grid = html.get(0), - rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap')), + var resizeMasonryItem = function(item) { + var grid = html.find('.masonry')[0]; + + var rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap')), rowHeight = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-auto-rows')); - var rowSpan = Math.ceil((item.querySelector('.masonry-content').getBoundingClientRect().height+rowGap)/(rowHeight+rowGap)); + var rowSpan = Math.ceil((item.querySelector('.masonry-content').getBoundingClientRect().height + rowGap)/(rowHeight + rowGap)); - item.style.gridRowEnd = 'span '+rowSpan; + item.style.gridRowEnd = 'span ' + rowSpan; item.style.visibility = 'visible'; } - function resizeAllMasonryItems(){ - for(var i=0;i>allItems.length;i++){ + var resizeAllMasonryItems = function() { + if ( ! allItems.length) + allItems = initAllItems(); + + for(var i=0; i > allItems.length; i++){ resizeMasonryItem(allItems[i]); } } + + + function initAllItems() { + var items = $(html).find('.masonry-brick').each(function() { + imagesLoaded( $(this), function(instance) { + var item = instance.elements[0]; + resizeMasonryItem(item); + } ); + }); + } }; } (jQuery)); diff --git a/library/templates/Intonation/Library/Settings.php b/library/templates/Intonation/Library/Settings.php index e227002fdb812968da0007ea8777a919f2eecfb9..7a7d69b9177f286375a3ce36f2ed507af8b366a2 100644 --- a/library/templates/Intonation/Library/Settings.php +++ b/library/templates/Intonation/Library/Settings.php @@ -104,7 +104,7 @@ class Intonation_Library_Settings extends Intonation_System_Abstract { 'img class img-thumbnail' => '', 'dl' => 'row', 'dt' => 'col-12 col-sm-3', - 'dd' => 'col-12 col-sm-9', + 'dd' => 'col-12 col-sm-9 d-flex flex-wrap align-content-start', 'dt class user_info' => 'col-12 col-sm-6', 'dd class user_info' => 'col-12 col-sm-6', 'a' => 'text-secondary', diff --git a/library/templates/Intonation/Library/View/Wrapper/Hold.php b/library/templates/Intonation/Library/View/Wrapper/Hold.php index 10ef4685fedca087a0f4e4d83823f23d480c0d47..05a0e4301f5ff02c6ef4f5b90b16ba5c63df2276 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Hold.php +++ b/library/templates/Intonation/Library/View/Wrapper/Hold.php @@ -170,11 +170,22 @@ class Intonation_Library_View_Wrapper_Hold extends Intonation_Library_View_Wrapp if (!$this->_model->getNoticeOPAC()) return null; + $badges = [ + ((new Intonation_Library_Badge) + ->setTag('span') + ->setClass('secondary') + ->setImage(Class_Template::current()->getIco($this->_view, + 'library', + 'library')) + ->setText($this->_model->getBibliotheque()) + ->setTitle($this->_('Bibliothèque de l\'emprunt: %s', $this->_model->getBibliotheque()))) + ]; + $wrapper = (new Intonation_Library_View_Wrapper_Record) ->setView($this->_view) ->setModel($this->_model->getNoticeOPAC()); - return $wrapper->getBadges(); + return $this->_view->renderBadges($badges) . $wrapper->getBadges(); } diff --git a/library/templates/Intonation/Library/View/Wrapper/Item.php b/library/templates/Intonation/Library/View/Wrapper/Item.php index 4696146ebaf5b8312f507060b68da181ba50e7c2..5f6cd047fe6330b3a0fa447291be4287d0205101 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Item.php +++ b/library/templates/Intonation/Library/View/Wrapper/Item.php @@ -80,9 +80,13 @@ class Intonation_Library_View_Wrapper_Item extends Intonation_Library_View_Wrapp ? $this->_('Réserver un exemplaire du document: %s', $this->_model->getTitrePrincipal()) : $this->_('Réservation non disponible, l\'exemplaire est %s.', strtolower(strip_tags($secondary_title))); + $text = $hold_link + ? $this->_('Réserver') + : $this->_('Non réservable'); + return new Intonation_Library_Link(['Url' => $hold_link, 'Class' => $hold_link ? '' : 'text-black-50', - 'Text' => $secondary_title, + 'Text' => $text, 'Title' => $title, 'Popup' => true]); } diff --git a/library/templates/Intonation/Library/View/Wrapper/Loan.php b/library/templates/Intonation/Library/View/Wrapper/Loan.php index 29285f18b861648ebde50c9fcad9b7c89c31308c..613240c5af774e5d7f4d0579f023c37c02efcf33 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Loan.php +++ b/library/templates/Intonation/Library/View/Wrapper/Loan.php @@ -134,6 +134,15 @@ class Intonation_Library_View_Wrapper_Loan extends Intonation_Library_View_Wrapp ->setText($return_date) ->setTitle($this->_('Date de retour : %s', $return_date))), + ((new Intonation_Library_Badge) + ->setTag('span') + ->setClass('secondary') + ->setImage(Class_Template::current()->getIco($this->_view, + 'library', + 'library')) + ->setText($this->_model->getBibliotheque()) + ->setTitle($this->_('Bibliothèque de l\'emprunt: %s', $this->_model->getBibliotheque()))), + ((new Intonation_Library_Badge) ->setTag('span') ->setClass('info') diff --git a/library/templates/Intonation/Library/View/Wrapper/Record.php b/library/templates/Intonation/Library/View/Wrapper/Record.php index 64687285ad1d8db523708a1f21835ecd70501fd4..ca2be7e213ff112b317c38c724e19ea182a43352 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record.php @@ -78,8 +78,13 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra public function getDescription() { - return $this->getBadges() - . $this->_view->truncate($this->_model->getResume()); + $xsl = (new Class_Notice_Xsl($this->_model, Class_Profil::getCurrentProfil())) + ->beSearchResult(); + + return $xsl->isEnabled() + ? $this->_view->Notice_Xsl($xsl) + : ($this->getBadges() + . $this->_view->truncate($this->_model->getResume())); } @@ -199,6 +204,19 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra ->setTitle($facet->getTitle()) ->setUrl($facet->getUrlForLink())); + if ( $this->_model->hasTome()) { + $serie = $this->_model->getClefChapeau() . '-' . $this->_model->getTypeDoc(); + + $label = Class_Codification::getLibelleForSerie($this->_model); + $badges [] = (new Intonation_Library_Badge) + ->setTag('a') + ->setUrl($this->_view->url((new Class_CriteresRecherche)->getNewUrlCriteresSerie($serie), null, true)) + ->setClass('white') + ->setText($label) + ->setTitle($this->_view->_('Lancer une recherche pour %s', lcfirst($label))); + } + + return $this->_view->renderBadges($badges); } @@ -241,10 +259,18 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra if (!$matches = array_filter($matches)) return $badges; + $labels = []; foreach ($matches as $match) { if (!$match) continue; + $label = $match->getLibrary()->getLabel(); + + if (in_array($label, $labels)) + continue; + + $labels [] = $label; + $badges [] = ((new Intonation_Library_Badge) ->setTag('a') ->setUrl($this->_view->url(['controller' => 'recherche', @@ -255,8 +281,8 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra ->setImage(Class_Template::current()->getIco($this->_view, 'library', 'library')) - ->setText($match->getLibrary()->getLabel()) - ->setTitle($this->_('Affiner le résultat avec le site %s', $match->getLibrary()->getLabel()))); + ->setText($label) + ->setTitle($this->_('Affiner le résultat avec le site %s', $label))); } return $badges; diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php index 4ba6a60caffebff36bf8fb3e40ec895e94ac2470..863ccd56db0a0d2079b3696a0ee770934bdc707a 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php @@ -31,6 +31,10 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Details extends Intonat if ($this->_content) return $this->_content; + $xsl = (new Class_Notice_Xsl($this->_model, Class_Profil::getCurrentProfil())); + if ($xsl->isEnabled()) + return $this->_content = $this->_view->Notice_Xsl($xsl); + return $this->_content = $this->_model->isPeriodique() ? $this->_view->Notice_Articles($this->_model) : $this->_view->Notice_Entete($this->_model, ['entete' => Class_Codification::CHAMPS]); diff --git a/library/templates/Intonation/Library/Widget/Carousel/Agenda/View.php b/library/templates/Intonation/Library/Widget/Carousel/Agenda/View.php index 5cf50c5be06c5b9ce8c75d5c3fde227c849162e2..679abd71f77d1b12bc26de0189ed7e26e175e1a1 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Agenda/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Agenda/View.php @@ -49,11 +49,6 @@ class Intonation_Library_Widget_Carousel_Agenda_View extends Intonation_Library_ } - protected function _getLinkToAllParams() { - return []; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir tous les événements de la boite %s dans une liste', $this->titre); } @@ -86,8 +81,8 @@ class Intonation_Library_Widget_Carousel_Agenda_View extends Intonation_Library_ public function getLinkToAllContent() { $this->view->titre = $this->_settings->getTitre(); - $this->_initCalendar(); + $this->_calendar->setSize(100); return $this->view->calendarLinkToAll($this->_calendar, $this->_settings); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/Article/View.php b/library/templates/Intonation/Library/Widget/Carousel/Article/View.php index e25104e4a840af2f722af88c8f85cdfbb84fa771..1937379e3857ef075e08e2515f159ffb0eb156a5 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Article/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Article/View.php @@ -22,13 +22,10 @@ class Intonation_Library_Widget_Carousel_Article_View extends Intonation_Library_Widget_Carousel_View { - protected $_all_articles = []; - - protected function _findElements() { $loader = Class_Article::getLoader(); + $this->preferences['size'] = 100; $articles_to_show = $loader->getArticlesByPreferences($this->preferences); - $this->_all_articles = $loader->getAllArticles(); return $articles_to_show; } @@ -38,21 +35,6 @@ class Intonation_Library_Widget_Carousel_Article_View extends Intonation_Library } - protected function _getLinkToAllParams() { - $articles_ids = implode('-', - array_map(function($article) - { - return $article->getId(); - }, $this->_all_articles)); - - return ['module' => 'opac', - 'controller' => 'cms', - 'action' => 'list', - 'title' => $this->view->escape($this->titre), - 'articles' => $articles_ids]; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir tous les articles de la boite "%s" dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/Author/View.php b/library/templates/Intonation/Library/Widget/Carousel/Author/View.php index 13c17fa955c648286bfaaba9465eb824568e213b..06a09e6d3ba3f3385b9336b4996aa0d3738e0446 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Author/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Author/View.php @@ -33,11 +33,6 @@ class Intonation_Library_Widget_Carousel_Author_View extends Intonation_Library_ } - protected function _getLinkToAllParams() { - return ''; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir tous les auteurs de la boite %s dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/Domain/View.php b/library/templates/Intonation/Library/Widget/Carousel/Domain/View.php index ef9f3b658a8a0242b2a5b3dbe031ce5d2a3b0b2b..ee13e79744f591ad05dfd61ebe674133c7e1d787 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Domain/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Domain/View.php @@ -40,11 +40,6 @@ class Intonation_Library_Widget_Carousel_Domain_View extends Intonation_Library_ } - protected function _getLinkToAllParams() { - return []; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir tous les domaines de la boite %s dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/Library/View.php b/library/templates/Intonation/Library/Widget/Carousel/Library/View.php index f753cdf686e0021676aeabc7f9789fb256ee8912..d9452cd26024fe710dfc674214e34c7c435d0db3 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Library/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Library/View.php @@ -46,11 +46,6 @@ class Intonation_Library_Widget_Carousel_Library_View extends Intonation_Library } - protected function _getLinkToAllParams() { - return ''; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir toutes les bibliothèques de la boite %s dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/Newsletter/View.php b/library/templates/Intonation/Library/Widget/Carousel/Newsletter/View.php index 3edfd97f1f7b81345a0c17c16ff89770035715ff..4b5b2b065fac9640f2ab13aec83778e995efba08 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/Newsletter/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/Newsletter/View.php @@ -34,11 +34,6 @@ class Intonation_Library_Widget_Carousel_Newsletter_View extends Intonation_Libr } - protected function _getLinkToAllParams() { - return ''; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir toutes les lettres d\'informations de la boite %s dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/ReviewsByRecord/View.php b/library/templates/Intonation/Library/Widget/Carousel/ReviewsByRecord/View.php index 066d08b5a444a6b3747b0b8f6dda2597b4c1e35a..6ac258e1afd981ace243f181c9f2aecf75ed670f 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/ReviewsByRecord/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/ReviewsByRecord/View.php @@ -41,23 +41,6 @@ class Intonation_Library_Widget_Carousel_ReviewsByRecord_View extends Intonation } - protected function _getLinkToAllParams() { - $reviews_ids = []; - - foreach ($this->_all_reviews as $review) - $reviews_ids [] = $review->getId(); - - $reviews_ids = implode('-', $reviews_ids); - - return ['module' => 'opac', - 'controller' => 'blog', - 'action' => 'list', - 'title' => $this->view->escape($this->titre), - 'records_reviews_ids' => $reviews_ids, - 'order' => $this->_settings->getOrder()]; - } - - protected function _getLinkToAllTitle() { return $this->_('Voir tous les avis de la boite "%s" dans une liste', $this->titre); } diff --git a/library/templates/Intonation/Library/Widget/Carousel/View.php b/library/templates/Intonation/Library/Widget/Carousel/View.php index 106ded36de674f0d0b27472d7b215d35f62955c7..d91928692792f9fa9d919b4fc071db6c6d49d2e8 100644 --- a/library/templates/Intonation/Library/Widget/Carousel/View.php +++ b/library/templates/Intonation/Library/Widget/Carousel/View.php @@ -22,6 +22,9 @@ abstract class Intonation_Library_Widget_Carousel_View extends Zendafi_View_Helper_Accueil_Base { + protected $_register_for_head_scripts = []; + + public function getHtml() { $this->titre = $this->_settings->getTitre(); $this->contenu = $this->_getHTML(); @@ -30,6 +33,14 @@ abstract class Intonation_Library_Widget_Carousel_View extends Zendafi_View_Help } + protected function _renderHeadScriptsOn($script_loader) { + foreach($this->_register_for_head_scripts as $registered) + $registered->renderHeadScriptsOn($script_loader); + + return parent::_renderHeadScriptsOn($script_loader); + } + + public function getFooter() { $rss = $this->_settings->getRss() ? $this->_getTagRss() @@ -138,8 +149,11 @@ abstract class Intonation_Library_Widget_Carousel_View extends Zendafi_View_Help protected function _renderLayout($layout, $elements, $content_callback) { $elements = new Storm_Collection($elements); - if (Intonation_Library_Widget_Carousel_Definition::WALL == $layout) - return $this->view->renderWall($elements, $content_callback); + if (Intonation_Library_Widget_Carousel_Definition::WALL == $layout) { + $renderer = (new Intonation_View_RenderWall)->setView($this->view); + $this->_register_for_head_scripts [] = $renderer; + return $renderer->renderWall($elements, $content_callback); + } if (Intonation_Library_Widget_Carousel_Definition::CAROUSEL == $layout) return $this->view->renderCarousel($elements, $content_callback); diff --git a/library/templates/Intonation/Library/Widget/Nav/View.php b/library/templates/Intonation/Library/Widget/Nav/View.php index b67805e4e21df020866fb0491a2823aaf6c3664f..826b96c28514287a0941e3ebba5053994fe8817a 100644 --- a/library/templates/Intonation/Library/Widget/Nav/View.php +++ b/library/templates/Intonation/Library/Widget/Nav/View.php @@ -97,8 +97,8 @@ class Intonation_Library_Widget_Nav_View extends Zendafi_View_Helper_Accueil_Bas protected function _renderLogo($params) { - $thumb = ($src = $params['picto']) - ? $this->view->tagImg($src) + $thumb = (isset($params['picto']) && $params['picto']) + ? $this->_renderPicto($params) : $this->_tag('span', '', ['class' => 'glyphicon glyphicon-globe']); return $this->_tag('span', diff --git a/library/templates/Intonation/Library/Widget/Search/View.php b/library/templates/Intonation/Library/Widget/Search/View.php index 41cee016c8a7b2a745e4d8f02dc09e2fb31820e0..e275ac2275eed6586e470cc53e3a61e2409cae2f 100644 --- a/library/templates/Intonation/Library/Widget/Search/View.php +++ b/library/templates/Intonation/Library/Widget/Search/View.php @@ -178,7 +178,7 @@ abstract class IntonationSearchRenderAbstract { ->addElement('button', uniqid() . 'search_submit', ['content' => $this->_renderPicto($this->_settings->getSearchButton()), - 'title' => $this>_('Rechercher'), + 'title' => $this->_('Rechercher'), 'type' => 'submit', 'escape' => false, 'onclick' => '$(this).parents(\'form\').submit()', diff --git a/library/templates/Intonation/View/CardifyOnlyDescription.php b/library/templates/Intonation/View/CardifyOnlyDescription.php index 46b6037f77c9e31f0617ec80f7438d1ac4357c02..f5eec79900d65a0961348aa1edd93e0ac71950a7 100644 --- a/library/templates/Intonation/View/CardifyOnlyDescription.php +++ b/library/templates/Intonation/View/CardifyOnlyDescription.php @@ -52,10 +52,14 @@ class Intonation_View_CardifyOnlyDescription extends Intonation_View_CardHelper foreach($element->getActions() as $action) $links [] = $this->view->tagAction($action); + $hide_text_button_class = ( 2 >= count($links)) + ? '' + : 'button_text_d_none'; + if (!empty($links)) $html [] = $this->_tag('div', implode($links), - ['class' => 'card-footer d-flex flex-row justify-content-between button_text_d_none']); + ['class' => 'card-footer d-flex flex-row justify-content-between ' . $hide_text_button_class]); return $this->_tag('div', $img . implode($html), diff --git a/library/templates/Intonation/View/Jumbotron.php b/library/templates/Intonation/View/Jumbotron.php index 04108f036f80ce72a1b670dcad2cf02bc538615e..2c2a2e7e83faf2a66b3d232767b28e356f386d56 100644 --- a/library/templates/Intonation/View/Jumbotron.php +++ b/library/templates/Intonation/View/Jumbotron.php @@ -157,10 +157,10 @@ class Intonation_View_Jumbotron extends ZendAfi_View_Helper_BaseHelper { $this->_tag('li', $this->view->tagAnchor(array_merge($item->getNavUrl(), ['id' => $id]), - Class_Template::current()->getIco($this->view, $item->getDBNavIco()). $this->view->div(['class' => 'button_text d-none'], $item->getDBTitle()), + Class_Template::current()->getIco($this->view, $item->getDBNavIco()). $this->view->div(['class' => 'button_text d-none d-xl-block text-truncate'], $item->getDBTitle()), $params), ['class' => 'nav-item']); - } + } protected function _renderContent() { diff --git a/library/templates/Intonation/View/RenderRecord/RenderItems.php b/library/templates/Intonation/View/RenderRecord/RenderItems.php index deaf3d8b45af4f071e495d3d7762ac1643d02a9d..6e283015d07cbb4388d729e6f4259c854d96a02d 100644 --- a/library/templates/Intonation/View/RenderRecord/RenderItems.php +++ b/library/templates/Intonation/View/RenderRecord/RenderItems.php @@ -37,14 +37,14 @@ class Intonation_View_RenderRecord_RenderItems extends ZendAfi_View_Helper_BaseH $html = []; if ($map = $this->view->osmMap($elements)) - $html [] = $this->view->div(['class' => 'col-12 mb-3'], + $html [] = $this->view->div(['class' => 'col-12 mb-3 items_map'], $map); - $html [] = $this->view->div(['class' => 'col-12'], + $html [] = $this->view->div(['class' => 'col-12 items_wall'], $this->_getHtmlItems($items)); if ($same_work) { - $html [] = $this->view->div(['class' => 'col-12'], + $html [] = $this->view->div(['class' => 'col-12 same_work_items'], $this->view->tag('h3', $this->_('Exemplaires de la même œuvre'))); $html [] = $this->view->div(['class' => 'col-12'], $this->_getHtmlItems($same_work)); diff --git a/library/templates/Intonation/View/RenderWall.php b/library/templates/Intonation/View/RenderWall.php index d5dcdfabfa8dd2731b8646bef0df118d7d96c2f4..bad8b1d23ee348177963b56758e4cac280285f64 100644 --- a/library/templates/Intonation/View/RenderWall.php +++ b/library/templates/Intonation/View/RenderWall.php @@ -21,13 +21,14 @@ class Intonation_View_RenderWall extends ZendAfi_View_Helper_BaseHelper { + + protected $_masonry_id; + + public function renderWall($collection, $callback) { - $id = uniqid(); + $this->_masonry_id = uniqid(); - Class_ScriptLoader::getInstance() - ->addScripts([Class_Url::absolute('/library/templates/Intonation/Assets/js/masonry.js')]) - ->addScripts([Class_Url::absolute('/library/templates/Intonation/Assets/js/imagesloaded4.1.4.min.js')]) - ->addJQueryReady(sprintf('$("#%s").masonry();', $id)); + $this->renderHeadScriptsOn(Class_ScriptLoader::getInstance()); $html = array_filter($collection ->injectInto([], function($html, $element) use ($callback) @@ -38,10 +39,19 @@ class Intonation_View_RenderWall extends ZendAfi_View_Helper_BaseHelper { return $html; })); - return $this->_tag('div', implode($html), ['class' => 'masonry', - 'id' => $id]); + 'id' => $this->_masonry_id]); + } + + + public function renderHeadScriptsOn($script_loader) { + $script_loader + ->addScripts([Class_Url::absolute('/library/templates/Intonation/Assets/js/masonry.js')]) + ->addScripts([Class_Url::absolute('/library/templates/Intonation/Assets/js/imagesloaded4.1.4.min.js')]) + ->addJQueryReady(sprintf('$("#%s").parent().masonry();', $this->_masonry_id)); + + return $this; } } \ No newline at end of file diff --git a/library/templates/Intonation/View/TagAction.php b/library/templates/Intonation/View/TagAction.php index 8bdd9c73b6c352ee295840bed2e1e21a044fc502..3417b0a48af57b98bd19523b2e0e47457833f67a 100644 --- a/library/templates/Intonation/View/TagAction.php +++ b/library/templates/Intonation/View/TagAction.php @@ -81,11 +81,11 @@ class Intonation_View_TagAction extends ZendAfi_View_Helper_BaseHelper { return ''; if ($action->getNoButtonText()) - return $this->_tag('div', $text, ['class' => ' d-inline text-left']); + return $this->_tag('div', $text, ['class' => 'd-inline text-left']); if (!$img) - return $this->_tag('div', $text, ['class' => ' d-inline button_text text-left']); + return $this->_tag('div', $text, ['class' => 'd-inline button_text text-left']); - return $this->_tag('div', $text, ['class' => 'd-none d-sm-inline text-left button_text']); + return $this->_tag('div', $text, ['class' => 'd-none d-md-inline text-left button_text']); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/User/Informations.php b/library/templates/Intonation/View/User/Informations.php index 552902a36d8b3904406ad2a35cdf63f78d58a729..a06c2a1ec0e7f184bfb4ad0697c9325e23537d04 100644 --- a/library/templates/Intonation/View/User/Informations.php +++ b/library/templates/Intonation/View/User/Informations.php @@ -34,7 +34,7 @@ class Intonation_View_User_Informations extends ZendAfi_View_Helper_BaseHelper { $this->_('Date de naissance') => (new DateTime($user->getNaissance()))->format($this->_('d / m / Y')), $this->_('Numéro de carte') => $user->getIdabon(), - $this->_('Bibilothèque') => $this->_getLibrary($user), + $this->_('Bibliothèque') => $this->_getLibrary($user), $this->_('Courriel') => $user->getMail(), $this->_('Numéro de téléphone') => $user->getTelephone(), diff --git a/library/templates/Muscle/Assets/css/muscle.css b/library/templates/Muscle/Assets/css/muscle.css index 8e83c17548d91c98d5eabea03ef326dba5a04ab3..83697caefb2a874f34f7fdd2df969a4546f9c90b 100644 --- a/library/templates/Muscle/Assets/css/muscle.css +++ b/library/templates/Muscle/Assets/css/muscle.css @@ -55,12 +55,12 @@ header { } .widget.justify-content-end * { - justify-content: end; + justify-content: flex-end; text-align: right; } .widget.justify-content-start * { - justify-content: start; + justify-content: flex-start; text-align: left; } diff --git a/library/templates/Muscle/Library/ProfilePatcher.php b/library/templates/Muscle/Library/ProfilePatcher.php index a69f7ee121c0502fadc920fdc8429432f5023f30..8f5b2d0b4f25d7be47e39fcb2e0efee3911c76f7 100644 --- a/library/templates/Muscle/Library/ProfilePatcher.php +++ b/library/templates/Muscle/Library/ProfilePatcher.php @@ -126,7 +126,6 @@ class Muscle_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { 'menus' => [ ['type_menu' => 'URL', 'libelle' => $this->_('Comment accéder à mon compte'), - 'use_profil' => $this->_help_menu, 'picto' => 'class fas fa-id-card', 'url' => ''], diff --git a/library/templates/Polygone/Assets/css/polygone.css b/library/templates/Polygone/Assets/css/polygone.css new file mode 100644 index 0000000000000000000000000000000000000000..3d61fb45feb2d152f5a42a65f8dc334e8881be07 --- /dev/null +++ b/library/templates/Polygone/Assets/css/polygone.css @@ -0,0 +1,450 @@ +@import url('https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700,900|Ubuntu+Condensed|Ubuntu:300,400,500,700&display=swap'); + +:root { +} + +body { + font-family: 'Ubuntu'; + font-size: 16px; + background: white; + color: #010202; + font-weight: 300; +} + +#site_web_wrapper { + background-image: url('../images/body.png'); + background-repeat: repeat-y; + background-position: top right; + background-color: transparent; +} + +.ui-widget *:not(i) { + font-family: 'Roboto'; + font-size: 16px; +} + +.widget.login .dropdown-toggle, +.nav nav .nav-link, +.widget-header, +h1, +h2, +h3 { + font-size: 2em; + font-weight: bold; +} + +header { + background: url(../images/banner.png); + background-position: top right; + background-repeat: no-repeat; + background-size: contain; + background-color: #ededed; +} + +.widget.justify-content-end * { + justify-content: flex-end; + text-align: right; +} + +.widget.justify-content-start * { + justify-content: flex-start; + text-align: left; +} + +.widget.justify-content-center * { + justify-content: center; +} + +.login .dropdown { + display: flex; +} + +.menu_buttons .button_text { + display: none !important; +} + +.menu_buttons .nav-link, +.menu_buttons .nav-link:hover { + +} + +.login .dropdown-toggle, +.login .dropdown-menu { +} + +.ui-state-active, +.btn:active, +a:active, +.btn:focus, +a:focus, +.btn:hover, +a:hover { + opacity: 0.8; + text-decoration: underline; +} + +.btn-sm, +col-form-label-sm, +.form-control-sm { + font-size: 1em; +} + +.rech_simple.widget form div { + padding: 0; + margin: 0; +} + +.rech_simple.widget input, +.rech_simple.widget button { + line-height: 1em; + vertical-align: middle; + margin: 0; + padding: 5px; + height: 40px; + min-width: 50px; + font-size: 1.5em; +} + +.rech_simple .dropdown-menu { + left: -33% !important; +} + +.rech_simple.widget button[type='submit'] { +} + +.rech_simple.widget ::placeholder { +} + +.widget.card, +.widget-header, +.breadcrumb, +nav { +} + +.nav nav .nav-link { + font-size: 1.8em; + border-right: 1px solid var(--polygone-black) !important; + line-height: 0.8em; +} + +nav .nav-item:last-child .nav-link { + border-right: 0px !important; +} + +.widget.nav { + margin-top: 4em; +} + +.widget.nav .navbar-toggler { + margin-top: -4em; +} + +#site_web_wrapper { + box-shadow: var(--polygone-grey) 0px 0px 5px; +} + +body, +#site_web_wrapper { +} + +footer { + font-size: 0.875em; +} + +footer .nav-link { + border-right: 1px solid var(--polygone-red) !important; + line-height: 0.8em; + text-align: center; +} + +.nav-item:last-child .nav-link { + border-right-width: 0 !important; +} + +.ui-autocomplete, +.ui-autocomplete *, +.ui-autocomplete *:hover { + border: none !important; +} + +.widget.login { + padding: 0; +} + +.widget.login * { +} + +.widget.login input { +} + +.widget.login form * { + text-align: left; +} + +.widget.login .text-secondary { +} + +.widget.login .dropdown-toggle, +.widget.login .dropdown-toggle:after { + font-size: 20px; + margin-right: 0; + color: white; + background: #223a7e; +} + +.widget.login .dropdown-toggle { + padding-right: 1em; +} + +.widget.login .dropdown-menu { + position: absolute; + right: 0; + left: auto; +} + +header .card-body { + padding: 0; +} + +.widget.login a { + +} + +.widget.login #login { + position: absolute; + bottom: 4em; + left: 0.875em; +} + +.widget.login a { + font-weight: bold; +} + +.widget.login a[href*="/auth/lostpass"] { + display: block; + margin-top: 4em; +} + +.widget.login form { + max-width: 200px; +} + +.widget-footer a.btn-secondary { +} + +.widget-footer { + text-align: right; +} + +.badge-group .badge { +} + +.badge-group a.badge { +} + +a, +a:hover { +} + +a.text-primary, +a.text-primary:hover { +} + +.carousel-item .card-footer { + margin: 0 1rem; +} + +.widget > .card-footer, +.card-footer { +} + +.masonry-content > .card > .card-footer { + padding: 5px; +} + +.list-group-item.active, +.nav-tabs, +.border-primary { +} + +.nav-tabs .nav-item { + border-bottom: 1px solid transparent; +} + +.card-footer { + border-top: none; +} + +.no_badges .badge-group, +.no_badget .badge { + display: none; +} + +.no_card_footer .card-footer { + display: none !important; +} + +.polygone_widget { + background-image: url('../images/widget_bg.png'); + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; +} + +.widget > .card-footer, .card-footer { + background: none; +} + +footer { + background-image: url('../images/footer_corner.png'); + background-repeat: no-repeat; + background-position: bottom right; + background-color: #31ade4; +} + +.card-header { + background: transparent; +} + +.polygone_big_menu_buttons .nav-item { + width: 33.33%; +} + +.polygone_big_menu_buttons .nav-link { + position: relative; + padding: 0 !important; +} + +.polygone_big_menu_buttons .nav-item + .nav-item .nav-link { + margin-left: 10px; +} + +.polygone_big_menu_buttons .nav-link div { + display: block !important; + background: var(--widget-shadow); + padding: 1em 0em; + text-align: center !important; + color: white; + font-weight: bold; + text-transform: uppercase; + position: absolute; + width: 100%; + bottom: 0; + left: 0; +} + +.polygone_big_menu_buttons .navbar { + padding: 0; +} + +.polygone_big_menu_buttons .nav-link img { + width: 100%; + height: auto; +} + +a, +a:hover, +a:focus, +a:visited { + color: #223a7e; +} + +[class*="-primary"], +[class*="-primary"]:hover, +[class*="-primary"]:focus, +[class*="-primary"]:visited, +[class*="-secondary"], +[class*="-secondary"]:hover, +[class*="-secondary"]:focus, +[class*="-secondary"]:visited, +[class*="-info"], +[class*="-info"]:hover, +[class*="-info"]:focus, +[class*="-info"]:visited{ + color: #223a7e !important; + background-color: transparent !important; +} + +.scroll_search { + position: fixed; + top: 0; + right: 0; + left: 0; + margin: auto; + background: #1884c7; + color: #fff; + display: none; + z-index: 3; + text-align: center; + opacity: 0.9; +} + +.scroll_search .dropdown-menu { + background: #1884c7; +} + +.scroll_search * { + background-color: transparent; +} + +.scroll_search .expressionRecherche { + background: white; +} + +.scroll_search form { + width: 40%; + display: inline-block; +} + +.navbar { + padding: 0; +} + +.flying_widget .navbar-collapse.collapsing, +.flying_widget .navbar-collapse.collapse, +.flying_widget a { + background-color: #1884c7; + text-transform: uppercase; +} + + +.flying_widget .navbar-collapse.collapsing, +.flying_widget .navbar-collapse.collapse { + padding: 2em 0.5em; + height: 30000px; + overflow:visible; +} + + +.flying_widget .navbar-collapse { + height: 30000px; + background-color: #1884c7; +} + +.flying_widget .navbar.navbar-collapse { + display: block; + padding: 0; +} + +.flying_widget .navbar-brand { + display: inline-block; +} + +.flying_widget .navbar-header { + padding: 1em; + padding-top: 150px; +} + +.flying_widget * { + transition-delay: unset; + transition-duration: unset; +} + +.flying_widget { + display: block; + min-width: 8.33%; +} + +.z-index-11 { + z-index: 11; +} \ No newline at end of file diff --git a/library/templates/Polygone/Assets/images/banner.png b/library/templates/Polygone/Assets/images/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..9e88125a057e34099e7f3ab90f75ce054697e029 Binary files /dev/null and b/library/templates/Polygone/Assets/images/banner.png differ diff --git a/library/templates/Polygone/Assets/images/body.png b/library/templates/Polygone/Assets/images/body.png new file mode 100644 index 0000000000000000000000000000000000000000..bf130aa2f56d3670aac9b548c7766b646d86c186 Binary files /dev/null and b/library/templates/Polygone/Assets/images/body.png differ diff --git a/library/templates/Polygone/Assets/images/footer_corner.png b/library/templates/Polygone/Assets/images/footer_corner.png new file mode 100644 index 0000000000000000000000000000000000000000..dc30c66f5b2316ebe4cad8a5d3e99696b592c76d Binary files /dev/null and b/library/templates/Polygone/Assets/images/footer_corner.png differ diff --git a/library/templates/Polygone/Assets/images/logo.png b/library/templates/Polygone/Assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b88661c6d77bb775c85abb75b8dcbaa9f198f4ee Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo.png differ diff --git a/library/templates/Polygone/Assets/images/logo_footer.png b/library/templates/Polygone/Assets/images/logo_footer.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9e99be0341955a209cd0585c35613a4b0177c6 Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo_footer.png differ diff --git a/library/templates/Polygone/Assets/images/s_exercer.jpg b/library/templates/Polygone/Assets/images/s_exercer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..498e1ac1a5c750b2243b5a5cffe580e577702a30 Binary files /dev/null and b/library/templates/Polygone/Assets/images/s_exercer.jpg differ diff --git a/library/templates/Polygone/Assets/images/se_divertir.jpg b/library/templates/Polygone/Assets/images/se_divertir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc8837111bf0fc366c609623d5a00ea24a20d677 Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_divertir.jpg differ diff --git a/library/templates/Polygone/Assets/images/se_documenter.jpg b/library/templates/Polygone/Assets/images/se_documenter.jpg new file mode 100644 index 0000000000000000000000000000000000000000..beb4a0ddca6c1f4cc8ecf1849d9deafb0d3888b1 Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_documenter.jpg differ diff --git a/library/templates/Polygone/Assets/images/widget_bg.png b/library/templates/Polygone/Assets/images/widget_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..dde54a152ad1ea1f1f03287c5aa4eaa37fd08ea6 Binary files /dev/null and b/library/templates/Polygone/Assets/images/widget_bg.png differ diff --git a/library/templates/Polygone/Assets/js/scroll_search.js b/library/templates/Polygone/Assets/js/scroll_search.js new file mode 100644 index 0000000000000000000000000000000000000000..648afb2dc90d8c73d7780fb5e4409ba4cb1d9c86 --- /dev/null +++ b/library/templates/Polygone/Assets/js/scroll_search.js @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2018, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +(function ( $ ) { + $.fn.scroll_search = function () { + var search_widget = $(this); + + var visible = function(element) { + var rect = element.getBoundingClientRect(), + top = rect.top, + height = rect.height; + + return top + height > 0; + }; + + var update = function() { + return visible($('.rech_simple.main_title')[0]) + ? search_widget.hide() + : search_widget.show(); + } + + $(window).on('scroll', update); + + update(); + } +} (jQuery)); diff --git a/library/templates/Polygone/Library/FormCustomizer.php b/library/templates/Polygone/Library/FormCustomizer.php new file mode 100644 index 0000000000000000000000000000000000000000..3cf0b30114c13673e2b7f001adf8ec9994feb1de --- /dev/null +++ b/library/templates/Polygone/Library/FormCustomizer.php @@ -0,0 +1,27 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_FormCustomizer extends Intonation_Library_FormCustomizer { + public function getTemplateForm($form) { + return (new Polygone_Library_FormCustomizer_Template($this->_template, $form))->getForm(); + } +} diff --git a/library/templates/Polygone/Library/FormCustomizer/Template.php b/library/templates/Polygone/Library/FormCustomizer/Template.php new file mode 100644 index 0000000000000000000000000000000000000000..dc004fffc77e9c29abff24bd1e13da2dd74e45f2 --- /dev/null +++ b/library/templates/Polygone/Library/FormCustomizer/Template.php @@ -0,0 +1,37 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_FormCustomizer_Template extends Intonation_Library_FormCustomizer_Template { + public function getForm() { + parent::getForm(); + + $this->_form + ->addElement('checkbox', + $this->_template->withNameSpace('polygone_css'), + ['label' => $this->_('polygone.css'), + 'order' => 3]); + + $this->_addToTemplateGroup(['polygone_css']); + + return $this; + } +} diff --git a/library/templates/Polygone/Library/ProfilePatcher.php b/library/templates/Polygone/Library/ProfilePatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..901c3b017b8c0301a737e1eb36977d9ada9b1135 --- /dev/null +++ b/library/templates/Polygone/Library/ProfilePatcher.php @@ -0,0 +1,523 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { + + protected + $_main_menu, + $_widget_menu, + $_help_menu, + $_social_network_top_menu, + $_credits_menu, + $_legal_mentions, + $_flying_menu, + $_themes_menu; + + + protected function _upgradeProfile() { + parent::_upgradeProfile(); + + $this->_profile + ->setAccessLevel(-1) + ->setLibelle($this->_('Accueil Polygone')); + + Class_AdminVar::set('MENU_BOITE', 1); + + return $this; + } + + + protected function _upgradeSections() { + $section_header = ((new Class_Systeme_Widget_Section_Header) + ->setProfileId($this->_profile_id) + ->load()); + + $section_header + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $section_main = ((new Class_Systeme_Widget_Section_Main) + ->setProfileId($this->_profile_id) + ->load()); + + $section_main + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $section_footer = ((new Class_Systeme_Widget_Section_Footer) + ->setProfileId($this->_profile_id) + ->load()); + + $section_footer + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $this->_profile = Class_Profil::find($this->_profile_id); + + return $this; + } + + + protected function _upgradeMenus() { + $this->_main_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu principal'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'ACCUEIL', + 'picto' => 'class fas fa-home', + 'libelle' => $this->_('Accueil'), + 'use_profil' => $this->_profile_id] + ] + ]); + + $this->_help_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu aide'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Comment accéder à mon compte'), + 'picto' => 'class fas fa-user-circle', + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Comprendre l\'accessibilité du portail'), + 'picto' => 'class fab fa-accessible-icon', + 'url' => ''], + + ['type_menu' => 'URL', + 'picto' => 'class fas fa-question-circle', + 'libelle' => $this->_('Besoin d\'aide ?'), + 'url' => ''], + ] + ]); + + $this->_social_network_top_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu réseaux sociaux haut de page'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Facebook'), + 'url' => '', + 'picto' => 'class fab fa-facebook-f'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Youtube'), + 'url' => '', + 'picto' => 'class fab fa-youtube'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Twitter'), + 'url' => '', + 'picto' => 'class fab fa-twitter'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Instagram'), + 'url' => '', + 'picto' => 'class fab fa-instagram'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('SoundCloud'), + 'url' => '', + 'picto' => 'class fab fa-soundcloud'], + + ] + ]); + + $this->_widget_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu boites'), + 'picto' => '', + 'menus' => [['type_menu' => 'MODULE_ACCUEIL_LIBRARY', + 'type_module' => 'LIBRARY', + 'libelle' => $this->_('Boites'), + 'preferences' => ['titre' => $this->_('Accès'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'd-inline-block', 'no_badges', 'no_card_footer'], + 'rendering' => 'card-description', + 'layout' => 'horizontal_list', + 'osm_map' => 0, + 'size' => 1, + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]], + + ['type_menu' => 'MODULE_ACCUEIL_LOGIN', + 'type_module' => 'LOGIN', + 'libelle' => $this->_('Connexion'), + 'preferences' => ['titre' => $this->_('Connexion'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-end', 'd-inline-block'], + 'titre_connecte' => $this->_('Mon compte'), + 'message_connecte' => '', + 'identifiant' => $this->_('Identifiant'), + 'identifiant_exemple' => $this->_('N° de carte'), + 'mot_de_passe' => $this->_('Mot de passe'), + 'mot_de_passe_exemple' => $this->_('Année de naissance'), + 'lien_connexion' => $this->_('Se connecter'), + 'lien_deconnection' => $this->_('Se déconnecter'), + 'lien_mot_de_passe_oublie' => $this->_('Mot de passe oublié'), + 'lien_compte' => $this->_('Mon compte'), + 'lien_creer_compte' => $this->_('S\'enregistrer'), + $this->_template->withNameSpace('form_style') => 'toggle', + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]] + ]]); + + $this->_credits_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Plan du site'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Plan du site'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Ma médiathèque c\'est quoi ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Mais au fait, c\'est où ?'), + 'url' => ''], + ] + ]); + + $this->_legal_mentions = $this->_profile->addMenu(['libelle' => $this->_('Mentions légales'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Mentions légales'), + 'url' => '']]]); + + $this->_flying_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'ACCUEIL', + 'libelle' => $this->_('Accueil'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'use_profil' => $this->_profile_id], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Ma médiathèque c\'est quoi ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Mais au fait, c\'est où ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Programme'), + 'url' => ''], + ] + ]); + + $this->_themes_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu des thèmes'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Se documenter'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_documenter.jpg'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('S\'exercer'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/s_exercer.jpg'), + 'url' => ''], + + ['type_menu' => 'URL', + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_divertir.jpg'), + 'libelle' => $this->_('Se divertir'), + 'url' => ''], + ] + ]); + + $this->_profile->save(); + + return $this; + } + + + protected function _upgradeWidgets() { + $this + ->_removeWidgets() + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu volant'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'flying_widget', 'position_fixed_top_left', 'z_index_11'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_flying_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_ALWAYS, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 4, + $this->_template->withNameSpace('width_large') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu réseau sociaux haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_social_network_top_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu d\'aide haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_help_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Logo du réseau'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-center'], + 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo.png'), + 'link' => '', + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('offset_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu boite'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end'], + 'menu' => $this->_profile_id . '-' . $this->_widget_menu, + 'layout' => 'vertical', + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 7, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Nav_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu réseau sociaux haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'menu_buttons', 'justify-content-center'], + 'menu' => $this->_profile_id . '-' . $this->_main_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'main_title'], + 'search_button' => 'class fas fa-search', + 'titre' => $this->_('Le polygone'), + 'placeholder' => $this->_('Trouver un document'), + 'type_doc' => '', + $this->_template->withNameSpace('form_style') => 'inline', + $this->_template->withNameSpace('width_xsmall') => 8, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-center', 'scroll_search'], + 'search_button' => 'class fas fa-search', + 'titre' => $this->_('Le polygone'), + 'placeholder' => $this->_('Trouver un document'), + 'type_doc' => '', + $this->_template->withNameSpace('form_style') => 'inline', + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Breadcrumb_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Fil d\'ariane'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'pl-2'], + 'root' => '', + 'show_profile' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Menu des thèmes'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_big_menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_themes_menu, + 'layout' => 'horizontal', + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Actualités'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card-overlay', + 'layout' => 'carousel', + 'size' => 3, + 'order' => 'EventDebut', + 'enabled_filters' => '', + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Prochains événements'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card', + 'layout' => 'multiple_carousel', + 'size' => 3, + 'order' => 'EventDebut', + 'enabled_filters' => '', + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Record_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Nouveautés'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_widget'], + 'rendering' => 'card-overlay', + 'layout' => 'horizontal_list', + 'size' => 5, + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Library_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Accès'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card-description', + 'layout' => 'horizontal_list', + 'osm_map' => 0, + 'size' => 1, + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Menu plan du site'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_credits_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Menu mentions légales'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_legal_mentions, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Logo du réseau'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'link' => '', + $this->_template->withNameSpace('width_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addScrollDownWidget() + ->_addScrollTopWidget() + ->_addAdminWidget() + ->_addAccessibilityWidget() + ->_addNotificationWidget(); + + return $this; + } +} \ No newline at end of file diff --git a/library/templates/Polygone/Library/Settings.php b/library/templates/Polygone/Library/Settings.php new file mode 100644 index 0000000000000000000000000000000000000000..3d4afa8ef2c82ba1ab3bc92bcac7d0c3425f8c60 --- /dev/null +++ b/library/templates/Polygone/Library/Settings.php @@ -0,0 +1,78 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_Settings extends Intonation_Library_Settings { + protected function _getDefaultSettings() { + $settings = parent::_getDefaultSettings(); + $settings[$this->_template->withNameSpace('polygone_css')] = 1; + + $custom_css_classes = $settings[$this->_template->withNameSpace('custom_css_class')]; + + $custom_css_classes = ['position_fixed_bottom', + 'position_fixed_bottom_left', + 'position_fixed_bottom_right', + 'position_fixed_top', + 'position_fixed_top_left', + 'position_fixed_top_right', + 'position_fixed_mid_left', + 'position_fixed_mid_right', + 'pt-3', + 'pt-5', + 'pb-3', + 'pl-2', + 'pl-md-3', + 'pr-md-3', + 'no_background', + 'no_border', + 'no_border_radius', + 'no_shadow', + 'm-auto', + 'ml-auto', + 'mr-auto', + 'align-items-center', + 'auto_col', + 'justify-content-start', + 'justify-content-end', + 'justify-content-center', + 'menu_buttons', + 'polygone_big_menu_buttons', + 'polygone_widget', + 'no_card_footer', + 'no_badges', + 'scroll_search', + 'flying_widget', + 'z-index-11']; + + $settings[$this->_template->withNameSpace('custom_css_class')] = $custom_css_classes; + + $hydrating_mapping = $settings[$this->_template->withNameSpace('hydrating_mapping')]; + + $hydrating_mapping['a class nav-link'] = ''; + $hydrating_mapping['div class navbar-header'] = ''; + $hydrating_mapping['div class navbar-collapse'] = ''; + $hydrating_mapping['div id site_web_wrapper'] = 'container'; + $hydrating_mapping['div id site_web_content_wrapper'] = 'row no-gutters'; + + $settings[$this->_template->withNameSpace('hydrating_mapping')] = $hydrating_mapping; + return $settings; + } +} diff --git a/library/templates/Polygone/Template.php b/library/templates/Polygone/Template.php new file mode 100644 index 0000000000000000000000000000000000000000..dd9ac4e65adaa9da50f626002b59a98ce8099c0f --- /dev/null +++ b/library/templates/Polygone/Template.php @@ -0,0 +1,63 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Template extends Intonation_Template { + + const ID = 'POLYGONE'; + + + public function __construct() { + $this->setId(static::ID) + ->setTitle($this->_('Polygone')) + ->setSettings(new Polygone_Library_Settings($this)) + ->setPatcher(new Polygone_Library_ProfilePatcher($this)); + } + + + public function getProfile() { + if ($this->_profile) + return $this->_profile; + + if ($this->_profile = Class_Profil::findFirstBy(['template' => $this->getId()])) + return $this->_profile; + + $this->createFrom(Class_Profil::getPortail()); + + return $this->_profile = Class_Profil::getCurrentProfil(); + } + + + public function renderOpac($view) { + return (new Polygone_View_Opac($this, $view))->render(); + } + + + public function renderSubModal($view) { + return (new Polygone_View_SubModal($this, $view))->render(); + } + + + public function customTemplateForm($form) { + $helper = new Polygone_Library_FormCustomizer($this); + return $helper->getTemplateForm($form); + } +} diff --git a/library/templates/Polygone/View/Opac.php b/library/templates/Polygone/View/Opac.php new file mode 100644 index 0000000000000000000000000000000000000000..29fae39bf826503f8cae0bf9e36c912a30b6680c --- /dev/null +++ b/library/templates/Polygone/View/Opac.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_View_Opac extends Intonation_View_Opac { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css')) + ->addScript(Class_Url::absolute('/library/templates/Polygone/Assets/js/scroll_search.js')) + ->addJQueryReady('$(".scroll_search").scroll_search();'); + + return parent::_headContent(); + } +} diff --git a/library/templates/Polygone/View/SubModal.php b/library/templates/Polygone/View/SubModal.php new file mode 100644 index 0000000000000000000000000000000000000000..82d4f01d0ee27e020138097a95cff24b519f1996 --- /dev/null +++ b/library/templates/Polygone/View/SubModal.php @@ -0,0 +1,29 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_View_SubModal extends Intonation_View_SubModal { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css')); + return parent::_headContent(); + } +} diff --git a/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css b/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css index bf79f9fe020a5830ab44c1c1f29a03fc6829734d..5bb0048f1bbdfbd7b3c9dd784750448c0ff18b74 100644 --- a/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css +++ b/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css @@ -295,6 +295,7 @@ nav .nav-link { text-align: center; background-color: var(--tdm-main-background); transform: translate3d(0px, 45px, 0px) !important; + box-shadow: 0 5px 5px var(--tdm-link-color); } .widget.login .dropdown-menu.show > * { @@ -318,6 +319,7 @@ nav .nav-link { z-index: 2; background-position: top center; padding-bottom: 45px; + min-width: 120px; } .widget.login .btn.dropdown-toggle:after { diff --git a/public/opac/java/scroll/scroll.js b/public/opac/java/scroll/scroll.js index 5fc69bea3579e0eefa5d0c2a55a06cc50e553699..6278351bea5408ad36afd2c07e60d8affaf08510 100644 --- a/public/opac/java/scroll/scroll.js +++ b/public/opac/java/scroll/scroll.js @@ -30,7 +30,7 @@ }, 1000); }); - $(window).scroll(function() { + $(window).on('scroll', function() { anchor.show(); }); } diff --git a/public/opac/js/renderFilters/ajaxifyFilters.js b/public/opac/js/renderFilters/ajaxifyFilters.js index 3c597d595fd791e282c861fac59b6ceb43d5835e..7b121b9e777903396d7a95f2256019329fdf7e90 100644 --- a/public/opac/js/renderFilters/ajaxifyFilters.js +++ b/public/opac/js/renderFilters/ajaxifyFilters.js @@ -47,6 +47,9 @@ if ('onLoadComplete' in options) options.onLoadComplete(widget); + if (undefined != $.fn.masonry) + widget.masonry(); + initializePopups(); setupAnchorsTarget(); widget.ajaxifyFilters(options); diff --git a/tests/scenarios/Templates/MuscleTemplateTest.php b/tests/scenarios/Templates/MuscleTemplateTest.php index 255655c827fcf71da504eb4eeb5d7d57fd06dde5..e646b043756134fc82261cdf2288590b254c65f0 100644 --- a/tests/scenarios/Templates/MuscleTemplateTest.php +++ b/tests/scenarios/Templates/MuscleTemplateTest.php @@ -20,7 +20,7 @@ */ -abstract class MuscleTemplateTestCase extends AbstractControllerTestCase { +abstract class MuscleTemplateTestCase extends Admin_AbstractControllerTestCase { protected $_storm_default_to_volatile = true; public function setUp() { @@ -32,8 +32,7 @@ abstract class MuscleTemplateTestCase extends AbstractControllerTestCase { ['id' => 23]); (new Muscle_Template)->tryOn($profile); - (new Class_Profil_Promoter())->promote($profile); - + (new Class_Profil_Promoter)->promote($profile); } @@ -159,4 +158,16 @@ class MuscleTemplateEditTemplateTest extends Admin_AbstractControllerTestCase { public function customCssShouldContainsClassMenuButtons() { $this->assertContains('"menu_buttons"', $this->_response->getBody()); } +} + + + + +class MuscleTemplateOpacAdvancedSearchTest extends MuscleTemplateTestCase { + + /** @test */ + public function advancedSearchSettingsShouldContainsCustomForm() { + $this->dispatch('/admin/widget/edit-action/id/recherche_avancee/id_profil/24'); + $this->assertXPath('//input[@id="forms"]'); + } } \ No newline at end of file diff --git a/tests/scenarios/Templates/PolygoneTemplateTest.php b/tests/scenarios/Templates/PolygoneTemplateTest.php new file mode 100644 index 0000000000000000000000000000000000000000..4ffedb44cdda12550f3cf3c0718c2086b79cf9b9 --- /dev/null +++ b/tests/scenarios/Templates/PolygoneTemplateTest.php @@ -0,0 +1,173 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +abstract class PolygoneTemplateTestCase extends Admin_AbstractControllerTestCase { + protected $_storm_default_to_volatile = true; + + public function setUp() { + parent::setUp(); + Class_Systeme_ModulesAccueil::reset(); + Class_AdminVar::set('TEMPLATING', 1); + + $profile = $this->fixture('Class_Profil', + ['id' => 23]); + + (new Polygone_Template)->tryOn($profile); + (new Class_Profil_Promoter)->promote($profile); + } + + + public function tearDown() { + parent::tearDown(); + Class_Systeme_ModulesAccueil::reset(); + } +} + + + + +class PolygoneTemplateAdminTemplateIndexDispatchTest extends PolygoneTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/admin/template/index'); + } + + + /** @test */ + public function editPolygoneUrlShouldBeDisplay() { + $this->assertXPath('//table//a[contains(@href,"/admin/template/edit/template/POLYGONE")]'); + } +} + + + +class PolygoneTemplateProfilePatcherTest extends PolygoneTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/index/index'); + } + + + public function widgetsClasses() { + return [ + ['login'], + ['accessibility'], + ['rech_simple'], + ['admin_tools'], + ['scroll'], + ['library'] + ]; + } + + + /** + * @dataProvider widgetsClasses + * @test */ + public function indexShouldContainsWidgets($widget_class) { + $this->assertXPath(sprintf('//div[contains(@class, "widget")][contains(@class, "%s")]', + $widget_class)); + } + + + /** @test */ + public function editTemplatePolygoneShouldBePresent() { + $this->assertXPathContentContains('//a[contains(@href, "admin/template/edit/template/POLYGONE")]', 'Configuration du template'); + } +} + + + +class PolygoneTemplateOpacIndexWithUserAgentTest extends PolygoneTemplateTestCase { + public function setUp() { + parent::setUp(); + ZendAfi_Auth::getInstance()->clearIdentity(); + $this->dispatch('/opac/index/index'); + } + + + /** @test */ + public function pageTitleShouldBeTestChartePolygone() { + $this->assertXPathContentContains('//head/title', 'Polygone'); + } + + + /** @test */ + public function pageShouldLoadPolygoneCss() { + $this->assertXPath('//head/link[contains(@href, "/templates/Polygone/Assets/css/polygone.css")]'); + } + + + /** @test */ + public function pageShouldBeHtml5Valid() { + $this->assertHTML5(); + } + + + /** @test */ + public function pageShouldBeAccessible() { + $this->assertAccessible($this->_response->getBody()); + } +} + + + +class PolygoneTemplateEditTemplateTest extends Admin_AbstractControllerTestCase { + protected $_storm_default_to_volatile = true; + + public function setUp() { + parent::setUp(); + + Class_AdminVar::set('TEMPLATING', 1); + + $settings = $this->fixture('Class_Template_Settings', + ['id' => 456, + 'template' => 'POLYGONE']); + + $this->dispatch('/admin/template/edit/template/polygone'); + } + + + /** @test */ + public function checkboxPolygoneCssShouldBeChecked() { + $this->assertXPath('//form//input[@type="checkbox"][@name="PolygonePolygoneCss"][@checked]'); + } + + + /** @test */ + public function customCssShouldContainsClassMenuButtons() { + $this->assertContains('"menu_buttons"', $this->_response->getBody()); + } +} + + + + +class PolygoneTemplateOpacAdvancedSearchTest extends PolygoneTemplateTestCase { + + /** @test */ + public function advancedSearchSettingsShouldContainsCustomForm() { + $this->dispatch('/admin/widget/edit-action/id/recherche_avancee/id_profil/24'); + $this->assertXPath('//input[@id="forms"]'); + } +} \ No newline at end of file diff --git a/tests/scenarios/Templates/TemplatesTest.php b/tests/scenarios/Templates/TemplatesTest.php index f921d8b43ee08ed5961af0dd63721f01c20c917a..f6f1b53492d3fecf4fd65a735722be53d562ac90 100644 --- a/tests/scenarios/Templates/TemplatesTest.php +++ b/tests/scenarios/Templates/TemplatesTest.php @@ -2901,7 +2901,13 @@ class TemplatesDispatchIntonationSearchListFormatWallTest extends TemplatesInton /** @test */ public function suggestionsShouldBeDisplay() { - $this->assertXPathContentContains('//b', 'Suggestions', $this->_response->getBody()); + $this->assertXPathContentContains('//b', 'Suggestions'); + } + + + /** @test */ + public function masonryShouldBeLoaded() { + $this->assertXPath('//head/script[contains(@src, "/masonry.js")]'); } } diff --git a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php index a71b9ff93bbf6461fac0b6daabbf3b63e0467c76..9d10aff82e587d7160f4022ea1e7ee28bc023590 100644 --- a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php +++ b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php @@ -171,4 +171,101 @@ class TerreDuMilieuTemplateEditTemplateTest extends Admin_AbstractControllerTest public function customCssShouldContainsClassTdmWidget() { $this->assertContains('"tdm_widget"', $this->_response->getBody()); } +} + + + +class TerreDuMilieuTemplateXSLTTest extends TerreDuMilieuTemplateTestCase { + public function setUp() { + parent::setUp(); + + Storm_Cache::beVolatile(); + (new Storm_Cache)->clean(); + Class_MoteurRecherche::resetInstance(); + + Zend_Registry::set('sql', $this->mock() + ->whenCalled('fetchAll') + ->answers([[5], ['T1']])); + + $disk = $this->mock() + ->whenCalled('directoryAt') + ->answers(null) + + ->whenCalled('fileAt') + ->answers((new Class_FileManager) + ->setRealpath('tests/scenarios/Xsl/search_result.xsl')); + + Class_FileManager::setFileSystem($disk); + + $php_command = $this->mock() + ->whenCalled('extension_loaded') + ->answers(true) + + ->whenCalled('unlink') + ->answers(true) + + ->whenCalled('libxml_use_internal_errors') + ->answers(true) + + ->whenCalled('libxml_get_errors') + ->answers([]); + + Class_Notice_Xsl::setPhpCommand($php_command); + + $dom_document = $this->mock() + ->whenCalled('load') + ->answers(true); + + Class_Notice_Xsl::setDomDocument($dom_document); + + $xslt_processor = $this->mock() + ->whenCalled('importStylesheet') + ->answers(true) + + ->whenCalled('transformToXml') + ->answers('<li><strong>Numéro de notice Koha : </strong>2774</li><br><li>'); + + Class_Notice_Xsl::setXSLTProcessor($xslt_processor); + + $profile = Class_Profil::getCurrentProfil(); + + $profile->setCfgModulesPreferences(['xslt' => '/tests/scenarios/Xsl/search_result.xsl'], + 'recherche', + 'resultat', + 'simple'); + + $profile->setCfgModulesPreferences(['xslt' => '/tests/scenarios/Xsl/record_description.xsl'], + 'recherche', + 'viewnotice', + Class_TypeDoc::PERIODIQUE); + $this->fixture('Class_Notice', + ['id' => 5, + 'type_doc' => 1, + 'unimarc' => "01185nam0 2200217 450 0010005000000100031000050350016000360900009000520990038000611000041000991010008001402000036001482100013001842150011001973300660002083330010008686760006008787000028008848010026009129020029009382774 a2-84563-280-0d19,90 Euros aALOES355754 a2774 c2017-12-11d2018-03-16tLIVREx12 a20171211 frey50 afre aSeras-tu là ?fGuillaume Musso cXOd2012 a301 p. aUn seul geste aurait suffi pour tout changer. Qui n'a jamais rêvé de revenir à cet instant décisif où le bonheur était possible ? San Francisco. Elliott, médecin passionné, ne s'est jamais consolé de la disparition d'Ilena, la femme qu'il aimait, morte il y a trente ans. Un jour, par une circonstance extraordinaire, il est ramené en arrière et rencontre le jeune homme qu'il était, trente ans plus tôt. Il est revenu à l'instant décisif où un geste de lui peut sauver Ilena. Et modifier l'implacable destin qui a figé son sort à jamais. Un stupéfiant face-à -face, Une histoire d'amour bouleversante, Un suspense à couper le souffle. aAG 14 aR aMussobGuillaume960415 aFRbCALUIREc20060516 981440aroman francophone"]); + } + + + /** @test */ + public function searchResultShouldLoadTerreDuMilieuCss() { + $this->dispatch('/opac/recherche/simple'); + $this->assertXPath('//head/link[contains(@href, "/templates/TerreDuMilieu/Assets/css/terredumilieu.css")]'); + } + + + /** @test */ + public function searchResultDisplayMarcWithXslt() { + $this->dispatch('/opac/recherche/simple'); + $this->assertContains('<strong>Numéro de notice Koha : </strong>2774</li><br><li>', $this->_response->getBody()); + } + + + /** @test */ + public function recordDetailshouldDisplayMarcWithXslt() { + Class_Notice::find(5) + ->setTypeDoc(Class_TypeDoc::PERIODIQUE) + ->assertSave(); + + $this->dispatch('/opac/record/description/id/5'); + $this->assertContains('<strong>Numéro de notice Koha : </strong>2774</li><br><li>', $this->_response->getBody()); + } } \ No newline at end of file