diff --git a/application/modules/opac/controllers/AbonneController.php b/application/modules/opac/controllers/AbonneController.php index 8ae1bffe37193c90b49eddb713b4c037beb941ce..38804abbd35da6b7b5044681b98068b549262699 100644 --- a/application/modules/opac/controllers/AbonneController.php +++ b/application/modules/opac/controllers/AbonneController.php @@ -52,6 +52,10 @@ class AbonneController extends ZendAfi_Controller_Action { $this->_request->setDispatched(); return; } + + $this->view->_current_module['controller'] = 'abonne'; + $this->view->_current_module['action'] = 'fiche'; + $this->view->_current_module['action2'] = ''; } diff --git a/application/modules/opac/controllers/AuthorController.php b/application/modules/opac/controllers/AuthorController.php index eeec805d4eb440bdc874edf0c1644cb11ef2bb04..7966ff68b19e0cea38589be0aea438c3a5b4d102 100644 --- a/application/modules/opac/controllers/AuthorController.php +++ b/application/modules/opac/controllers/AuthorController.php @@ -28,6 +28,10 @@ class AuthorController extends ZendAfi_Controller_Action { parent::preDispatch(); if (!$this->_author = $this->view->author = $this->_findAuthor()) throw new Zend_Controller_Action_Exception($this->view->_('Désolé, cette page n\'existe pas'), 404); + + $this->view->_current_module['controller'] = 'author'; + $this->view->_current_module['action'] = 'view'; + $this->view->_current_module['action2'] = ''; } diff --git a/application/modules/opac/controllers/BibController.php b/application/modules/opac/controllers/BibController.php index 9fdf4ef78c40472d13766b1a060db2e948e6a983..d12464c4663f37c44e913d3ae0680968f3b66767 100644 --- a/application/modules/opac/controllers/BibController.php +++ b/application/modules/opac/controllers/BibController.php @@ -25,6 +25,10 @@ class BibController extends ZendAfi_Controller_Action { public function preDispatch() { parent::preDispatch(); $this->_helper->librarySelection(); + + $this->view->_current_module['controller'] = 'bib'; + $this->view->_current_module['action'] = 'en-lire-plus'; + $this->view->_current_module['action2'] = ''; } diff --git a/application/modules/opac/controllers/RecordController.php b/application/modules/opac/controllers/RecordController.php index 6c5a52a7da225cf253c57ba073d1d0fa57900515..3940106867de92f1951295bd1e807b526b99d17a 100644 --- a/application/modules/opac/controllers/RecordController.php +++ b/application/modules/opac/controllers/RecordController.php @@ -29,6 +29,15 @@ class RecordController extends ZendAfi_Controller_Action { $this->_helper->notify($this->_('Impossible d\'afficher les donnés. Le document est introuvable')); $this->_redirectToIndex(); } + + $this->view->_current_module['controller'] = 'recherche'; + $this->view->_current_module['action'] = 'viewnotice'; + $this->view->_current_module['action2'] = $this->view->record->getTypeDoc(); + + $this->view->notice_navigation = + new Class_Notice_NavigationRecherche((new Class_CriteresRecherche)->setParams($this->_request->getParams()), + Class_MoteurRecherche::getInstance(), + $this->view->record); } diff --git a/library/Class/Notice/NavigationRecherche.php b/library/Class/Notice/NavigationRecherche.php index 3a0803c8c5d6db18a73e88e976af0a95745fb2be..7714ae0b08c319ff5188f23745870775426374c6 100644 --- a/library/Class/Notice/NavigationRecherche.php +++ b/library/Class/Notice/NavigationRecherche.php @@ -92,4 +92,11 @@ class Class_Notice_NavigationRecherche { public function hasCriteria() { return !empty($this->_criteres_recherche->getCriteres()); } + + + public function getBackToListUrl() { + return Class_Url::absolute($this->_criteres_recherche->getUrlRetourListe(), null, true) + . '#' + . $this->_current_notice->getId(); + } } \ No newline at end of file diff --git a/library/Class/Systeme/ModulesAccueil/Action/Author.php b/library/Class/Systeme/ModulesAccueil/Action/Author.php new file mode 100644 index 0000000000000000000000000000000000000000..664da1f39e203c361dc75de4eeb05eee7c3065c8 --- /dev/null +++ b/library/Class/Systeme/ModulesAccueil/Action/Author.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_Author extends Class_Systeme_ModulesAccueil_Action { + + public function __construct() { + parent::__construct(); + $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_Author'; + } +} \ No newline at end of file diff --git a/library/Class/Systeme/ModulesAccueil/Action/Library.php b/library/Class/Systeme/ModulesAccueil/Action/Library.php new file mode 100644 index 0000000000000000000000000000000000000000..6480d3658b72fa27a30feb8a9e4e772716177498 --- /dev/null +++ b/library/Class/Systeme/ModulesAccueil/Action/Library.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_Library extends Class_Systeme_ModulesAccueil_Action { + + public function __construct() { + parent::__construct(); + $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_Library'; + } +} \ No newline at end of file diff --git a/library/Class/Systeme/ModulesAccueil/Action/Record.php b/library/Class/Systeme/ModulesAccueil/Action/Record.php new file mode 100644 index 0000000000000000000000000000000000000000..4dac96170c63392b99350f45f70c0a0414032223 --- /dev/null +++ b/library/Class/Systeme/ModulesAccueil/Action/Record.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_Record extends Class_Systeme_ModulesAccueil_Action { + + public function __construct() { + parent::__construct(); + $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_Record'; + } +} \ No newline at end of file diff --git a/library/Class/Systeme/ModulesAccueil/Action/SearchResult.php b/library/Class/Systeme/ModulesAccueil/Action/SearchResult.php index b9d6fac00e152b87b5262a12fc98ba5d951cf4a7..7f4be205d2da86b4b346b6831bcb7cd4ff5c7dc7 100644 --- a/library/Class/Systeme/ModulesAccueil/Action/SearchResult.php +++ b/library/Class/Systeme/ModulesAccueil/Action/SearchResult.php @@ -23,6 +23,8 @@ class Class_Systeme_ModulesAccueil_Action_SearchResult extends Class_Systeme_Mod public function __construct() { parent::__construct(); + $this->_libelle = $this->_('Configuration du résultat de recherche'); + $this->_defaultValues['titre'] = $this->_libelle; $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_SearchResult'; } } \ No newline at end of file diff --git a/library/Class/Systeme/ModulesAccueil/Action/User.php b/library/Class/Systeme/ModulesAccueil/Action/User.php new file mode 100644 index 0000000000000000000000000000000000000000..b3cbb7f36cb2b914aca088e33893993eeee10a6c --- /dev/null +++ b/library/Class/Systeme/ModulesAccueil/Action/User.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_User extends Class_Systeme_ModulesAccueil_Action { + + public function __construct() { + parent::__construct(); + $this->_form = 'ZendAfi_Form_Configuration_Widget_Action_User'; + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/Action.php b/library/Class/Systeme/Widget/Action.php index 0666730345bacc651d8aa2a1d2e1112441dc7a51..f045fb45d619f5635765b182f16fe18ebf3398d5 100644 --- a/library/Class/Systeme/Widget/Action.php +++ b/library/Class/Systeme/Widget/Action.php @@ -116,11 +116,6 @@ class Class_Systeme_Widget_Action extends Class_Systeme_Widget_Abstract { } - protected function _getTitle() { - return $this->getLabel(); - } - - public function getWidgets() { return []; } diff --git a/library/templates/Intonation/View/RenderRecord/Summary.php b/library/Class/Systeme/Widget/Action/Author.php similarity index 60% rename from library/templates/Intonation/View/RenderRecord/Summary.php rename to library/Class/Systeme/Widget/Action/Author.php index 2bba5e032b95c8d4d0677b0f9d60a9c037dcbf4a..207875b20c948853e732b8029f76cffc4e1c8d37 100644 --- a/library/templates/Intonation/View/RenderRecord/Summary.php +++ b/library/Class/Systeme/Widget/Action/Author.php @@ -1,6 +1,6 @@ <?php /** - * Copyright (c) 2012-2018, Agence Française Informatique (AFI). All rights reserved. + * 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 @@ -20,21 +20,13 @@ */ -class Intonation_View_RenderRecord_Summary extends Intonation_View_RenderRecord { - - public function RenderRecord_Summary($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Résumé', $this->view->titre); - - return $html; +class Class_Systeme_Widget_Action_Author extends Class_Systeme_Widget_Action { + public function getResourcesDefinition() { + return (new Class_Systeme_ModulesAccueil_Action_Author); } - protected function _showSections($sections) { - foreach($sections as $section) - if ('summary' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function _getTitle() { + return $this->_('Configuration de la page auteur'); } -} +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/Action/Library.php b/library/Class/Systeme/Widget/Action/Library.php new file mode 100644 index 0000000000000000000000000000000000000000..76175ec4ae030dc715f613b807780ef90612c061 --- /dev/null +++ b/library/Class/Systeme/Widget/Action/Library.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_Library extends Class_Systeme_Widget_Action { + public function getResourcesDefinition() { + return (new Class_Systeme_ModulesAccueil_Action_Library); + } + + + public function _getTitle() { + return $this->_('Configuration de la page bibliothèque'); + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/Action/Record.php b/library/Class/Systeme/Widget/Action/Record.php new file mode 100644 index 0000000000000000000000000000000000000000..ce06c308c4d5d83cd4d3006e90041a9a27ba3b44 --- /dev/null +++ b/library/Class/Systeme/Widget/Action/Record.php @@ -0,0 +1,40 @@ +<?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_Record extends Class_Systeme_Widget_Action { + public function getResourcesDefinition() { + return (new Class_Systeme_ModulesAccueil_Action_Record); + } + + + public function _getTitle() { + $id = $this->getId(); + $id = explode('_' , $id); + $id = array_pop($id); + + $doc_type = Class_TypeDoc::find($id); + + return $doc_type + ? $this->_('Configuration de la page des documents de type %s', strtolower($doc_type->getLabel())) + : $this->_('Configuration de la page des documents'); + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/Action/User.php b/library/Class/Systeme/Widget/Action/User.php new file mode 100644 index 0000000000000000000000000000000000000000..3299a048af824c8580e76a5f8d80ee23f3c77545 --- /dev/null +++ b/library/Class/Systeme/Widget/Action/User.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_User extends Class_Systeme_Widget_Action { + public function getResourcesDefinition() { + return (new Class_Systeme_ModulesAccueil_Action_User); + } + + + public function _getTitle() { + return $this->_('Configuration de la page compte'); + } +} \ No newline at end of file diff --git a/library/Class/Systeme/Widget/ActionLoader.php b/library/Class/Systeme/Widget/ActionLoader.php index 75983739c3608d1c5d78f378cbddde7b05d14717..608d47f04d60cb2e356cdb7a12d6cf72c3a859f9 100644 --- a/library/Class/Systeme/Widget/ActionLoader.php +++ b/library/Class/Systeme/Widget/ActionLoader.php @@ -32,6 +32,17 @@ class Class_Systeme_Widget_ActionLoader { protected function _getActions() { - return ['recherche_resultat_simple' => 'Class_Systeme_Widget_Action_SearchResult']; + $record_action = 'Class_Systeme_Widget_Action_Record'; + + $actions = ['recherche_resultat_simple' => 'Class_Systeme_Widget_Action_SearchResult', + 'recherche_viewnotice' => 'Class_Systeme_Widget_Action_Record', + 'abonne_fiche' => 'Class_Systeme_Widget_Action_User', + 'author_view' => 'Class_Systeme_Widget_Action_Author', + 'bib_en-lire-plus' => 'Class_Systeme_Widget_Action_Library']; + + foreach (Class_TypeDoc::findAll() as $doc_type) + $actions ['recherche_viewnotice_' . $doc_type->getId()] = $record_action; + + return $actions; } } \ No newline at end of file diff --git a/library/Class/Template/Loader.php b/library/Class/Template/Loader.php index ba14b3aecc30f5070693f906d6fa87a17036087f..2f98ef23d2f05f2d68dcf66bc7160005bf86de7c 100644 --- a/library/Class/Template/Loader.php +++ b/library/Class/Template/Loader.php @@ -28,7 +28,8 @@ class Class_Template_Loader { return [new Historic_Template, new Intonation_Template, new MyBibApp_Template, - new TerreDuMilieu_Template + new TerreDuMilieu_Template, + new Muscle_Template ]; } diff --git a/library/ZendAfi/Controller/Plugin/DefineURLs.php b/library/ZendAfi/Controller/Plugin/DefineURLs.php index d228b7990b6bb95544ba778f0f46f2cbb115f7df..812b5ea6fd42a1d030e2b40e7d50bdcfe1f01049 100644 --- a/library/ZendAfi/Controller/Plugin/DefineURLs.php +++ b/library/ZendAfi/Controller/Plugin/DefineURLs.php @@ -77,6 +77,9 @@ class ZendAfi_Controller_Plugin_DefineURLs extends Zend_Controller_Plugin_Abstra if(!in_array($request->getModuleName(), [static::OPAC, static::PHONE])) return; + if (($template = Class_Template::current()->getId()) != $profil->getTemplate()) + $this->_setCurrentProfileUsing($template); + $request->setModuleName($profil->getBrowser()); return $this->_userCanAccessProfil($profil) @@ -85,6 +88,22 @@ class ZendAfi_Controller_Plugin_DefineURLs extends Zend_Controller_Plugin_Abstra } + + protected function _setCurrentProfileUsing($template) { + if (($template == (new Historic_Template)->getId()) + && (!Class_Profil::getCurrentProfil()->getTemplate())) + return; + + if (! $profile = Class_Profil::findFirstBy(['template' => $template])) { + Class_Template::current()->tryOn(Class_Profil::getCurrentProfil()); + $profile = Class_Profil::getCurrentProfil(); + } + + Class_Profil::clearCache(); + Class_Profil::setCurrentProfil($profile); + } + + protected function authRequest($detector) { $profil = Class_Profil::getCurrentProfil(); diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/Author.php b/library/ZendAfi/Form/Configuration/Widget/Action/Author.php new file mode 100644 index 0000000000000000000000000000000000000000..2ab9042f2a213dc0c35070ee9b34dfbddb003914 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/Author.php @@ -0,0 +1,29 @@ +<?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_Author extends ZendAfi_Form_Configuration_Widget_Action_Tabs { + protected function _getRichContentInstance() { + return (new Intonation_Library_View_Wrapper_Author_RichContent) + ->setView(new Class_Entity) + ->setModel(new Class_CodifAuteur); + } +} \ No newline at end of file diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/Library.php b/library/ZendAfi/Form/Configuration/Widget/Action/Library.php new file mode 100644 index 0000000000000000000000000000000000000000..e22f8ee94dbfff26e3fec0e6f168eccdb68b0ea3 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/Library.php @@ -0,0 +1,29 @@ +<?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_Library extends ZendAfi_Form_Configuration_Widget_Action_Tabs { + protected function _getRichContentInstance() { + return (new Intonation_Library_View_Wrapper_Library_RichContent) + ->setView(new Class_Entity) + ->setModel(new Class_Bib); + } +} \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..2d2182fc17c397f99183267db5dd1610784e32b1 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/Record.php @@ -0,0 +1,29 @@ +<?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_Record extends ZendAfi_Form_Configuration_Widget_Action_Tabs { + protected function _getRichContentInstance() { + return (new Intonation_Library_View_Wrapper_Record_RichContent) + ->setView(new Class_Entity) + ->setModel(new Class_Notice); + } +} \ No newline at end of file diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/Tabs.php b/library/ZendAfi/Form/Configuration/Widget/Action/Tabs.php new file mode 100644 index 0000000000000000000000000000000000000000..2db724305844732e3ecb2ac74a6beb8b78ed1b96 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/Tabs.php @@ -0,0 +1,75 @@ +<?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 + */ + + +abstract class ZendAfi_Form_Configuration_Widget_Action_Tabs extends ZendAfi_Form_Configuration_Widget_Action { + + public function init() { + parent::init(); + $rich_content = $this->_getRichContentInstance(); + + foreach ($rich_content->getSections() as $tab) { + $id = $tab->getClass(); + $ico_id = Class_Template::current()->withNameSpace('ico_' . $id); + $label_id = Class_Template::current()->withNameSpace('label_' . $id); + $title_id = Class_Template::current()->withNameSpace('title_' . $id); + $title = $tab->getTitle(); + + $this + + ->addElement('userfile', + $ico_id, + ['label' => $this->_('Icône de l\'onglet %s', $title), + 'placeholder' => $tab->getNavIco()]) + + ->addElement('text', + $label_id, + ['label' => $this->_('Titre de l\'onglet %s', $title), + 'placeholder' => $title]) + + ->addElement('text', + $title_id, + ['label' => $this->_('Attribut "title" de l\'onglet %s', $title), + 'placeholder' => $tab->getNavTitle()]); + + $group [] = $ico_id; + $group [] = $label_id; + $group [] = $title_id; + } + + $this->addDisplayGroup($group, 'action_options', ['legend' => $this->_('Renommage des onglets')]); + } + + + public function initDisplayGroups() { + parent::initDisplayGroups(); + Class_Template::current()->customActionForm($this); + } + + + public function populate($datas) { + parent::populate($datas); + return $this; + } + + + abstract protected function _getRichContentInstance(); +} \ No newline at end of file diff --git a/library/ZendAfi/Form/Configuration/Widget/Action/User.php b/library/ZendAfi/Form/Configuration/Widget/Action/User.php new file mode 100644 index 0000000000000000000000000000000000000000..546da0e63a1f551bdd3c35d69e33cf513506e835 --- /dev/null +++ b/library/ZendAfi/Form/Configuration/Widget/Action/User.php @@ -0,0 +1,29 @@ +<?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_User extends ZendAfi_Form_Configuration_Widget_Action_Tabs { + protected function _getRichContentInstance() { + return (new Intonation_Library_View_Wrapper_User_RichContent) + ->setView(new Class_Entity) + ->setModel(new Class_Users); + } +} \ No newline at end of file diff --git a/library/ZendAfi/View/Helper/FonctionsAdmin.php b/library/ZendAfi/View/Helper/FonctionsAdmin.php index b5f97bdfb9a05d73c4d3a7a53250f48e8c1bbd04..d435540400d4e71ce90c8fee7c714b6851a9d588 100644 --- a/library/ZendAfi/View/Helper/FonctionsAdmin.php +++ b/library/ZendAfi/View/Helper/FonctionsAdmin.php @@ -106,6 +106,7 @@ class ZendAfi_View_Helper_FonctionsAdmin extends ZendAfi_View_Helper_BaseHelper if ($this->_isBoxConfiguration()) return ''; + $url_params['controller'] = 'modules'; $url_params['action'] = 'apply-to'; return $this->_renderActionLink('copy_module', @@ -119,7 +120,7 @@ class ZendAfi_View_Helper_FonctionsAdmin extends ZendAfi_View_Helper_BaseHelper $action = $this->view->_current_module['action']; $action2 = $this->view->_current_module['action2']; - if (!(new Class_Systeme_ModulesAppli())->getModule($controller, $action)) + if (!(new Class_Systeme_ModulesAppli)->getModule($controller, $action)) return []; return array_filter(['module' => 'admin', diff --git a/library/ZendAfi/View/Helper/Suggests.php b/library/ZendAfi/View/Helper/Suggests.php index 21546b6a28d61c60db982ce046a9fd1fedefb8ca..dd3032344597fe68c476c530d0a3b942513d4d15 100644 --- a/library/ZendAfi/View/Helper/Suggests.php +++ b/library/ZendAfi/View/Helper/Suggests.php @@ -21,8 +21,15 @@ class ZendAfi_View_Helper_Suggests extends ZendAfi_View_Helper_BaseHelper { public function suggests($search_result) { - $suggests = $search_result->fetchFacetsAndTags($search_result->getSettings())['suggests']; + if (!$facets_and_tags = $search_result->fetchFacetsAndTags($search_result->getSettings())) + return ''; + + if (!isset($facets_and_tags['suggests'])) + return ''; + + $suggests = $facets_and_tags['suggests']; $criteres = $search_result->getCriteresRecherche(); + if (empty($suggests)) return ''; @@ -37,6 +44,11 @@ class ZendAfi_View_Helper_Suggests extends ZendAfi_View_Helper_BaseHelper { }, $suggests); + return $this->_renderSuggests($links); + } + + + protected function _renderSuggests($links) { return $this->_tag('div', $this->_tag('h2', $this->_('Suggestions')). @@ -60,9 +72,11 @@ class ZendAfi_View_Helper_Suggests extends ZendAfi_View_Helper_BaseHelper { $field->setLabel($suggest['label']); - return - $this->_tag('li', $field->renderOn($this->view, ['class' => 'facette'])); + return $this->_renderSuggestHTML($field); } -} -?> \ No newline at end of file + + protected function _renderSuggestHTML($field) { + return $this->_tag('li', $field->renderOn($this->view, ['class' => 'facette'])); + } +} \ No newline at end of file diff --git a/library/ZendAfi/View/Helper/TagListeCoches.php b/library/ZendAfi/View/Helper/TagListeCoches.php index 675642c04762c24417ad042a5566e58d05c50cee..78a6c884ba163740900a1ea9a0e5c1563ff0f7d2 100644 --- a/library/ZendAfi/View/Helper/TagListeCoches.php +++ b/library/ZendAfi/View/Helper/TagListeCoches.php @@ -112,7 +112,8 @@ class ZendAfi_View_Helper_TagListeCoches extends ZendAfi_View_Helper_BaseHelper $this->_renderAllNothing() . $this->_renderListItems(), ['id' => $this->_name . '_saisie', - 'class' => 'tag_saisie d-none']); + 'class' => 'tag_saisie', + 'style' => 'display: none;']); } diff --git a/library/ZendAfi/View/Helper/Widget/Section/Main.php b/library/ZendAfi/View/Helper/Widget/Section/Main.php index f311dc40650be92b982ccea34d158195b8bbf8a8..d24ce0df8a55e9666fae7264d23a8b5a05bfffed 100644 --- a/library/ZendAfi/View/Helper/Widget/Section/Main.php +++ b/library/ZendAfi/View/Helper/Widget/Section/Main.php @@ -74,6 +74,8 @@ class ZendAfi_View_Helper_Widget_Section_Main extends ZendAfi_View_Helper_Widget $settings = (new Intonation_System_Action)->setSettings($configuration); + $this->view->_module_settings = $settings; + return $settings->getHtmlAttribs(); } } \ No newline at end of file diff --git a/library/templates/Intonation/Assets/css/intonation.css b/library/templates/Intonation/Assets/css/intonation.css index 8f4899a7da862d5a6ee72f6bd58baff4cdf4531c..1a50278ca453d45cea942ae023c4d0898379cd0b 100644 --- a/library/templates/Intonation/Assets/css/intonation.css +++ b/library/templates/Intonation/Assets/css/intonation.css @@ -13,6 +13,7 @@ --front-background: #f9f9f9; --front-background-black: black; --front-transparent-background: transparent; + --front-dropdown-shadow: #CCC; --front-widget-background: #FFF; --front-navbar-background: #CCC; --front-background-overlay: rgba(0, 0 , 0 ,0.7); @@ -578,7 +579,7 @@ dl.row { .card-footer .dropleft.dropup .dropdown-menu { bottom: 1.5em !important; - right: -0.5em !important; + right: 0 !important; } .jumbotron .dropleft.dropup .dropdown-menu { @@ -707,4 +708,25 @@ dl.row { .navbar-nav.flex-column .dropdown-menu { position: initial; +} + +.ui-autocomplete, +.dropdown-menu.show { + box-shadow: var(--front-dropdown-shadow) 0px 0px 5px; +} + +.menu_admin_front a { + position: relative; +} + +.menu_admin_front a img { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} + +.card-img-overlay .text-left { + text-align: center !important; } \ No newline at end of file diff --git a/library/templates/Intonation/Assets/js/imagesloaded4.1.4.min.js b/library/templates/Intonation/Assets/js/imagesloaded4.1.4.min.js new file mode 100644 index 0000000000000000000000000000000000000000..bcccd8adf32148e434527c85b8deaa06821c2905 --- /dev/null +++ b/library/templates/Intonation/Assets/js/imagesloaded4.1.4.min.js @@ -0,0 +1,7 @@ +/*! + * imagesLoaded PACKAGED v4.1.4 + * JavaScript is all like "You images are done yet or what?" + * MIT License + */ + +!function(e,t){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var i=this._events=this._events||{},n=i[e]=i[e]||[];return n.indexOf(t)==-1&&n.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var i=this._onceEvents=this._onceEvents||{},n=i[e]=i[e]||{};return n[t]=!0,this}},t.off=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){var n=i.indexOf(t);return n!=-1&&i.splice(n,1),this}},t.emitEvent=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){i=i.slice(0),t=t||[];for(var n=this._onceEvents&&this._onceEvents[e],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(e,r),delete n[r]),r.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return t(e,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(e,t){function i(e,t){for(var i in t)e[i]=t[i];return e}function n(e){if(Array.isArray(e))return e;var t="object"==typeof e&&"number"==typeof e.length;return t?d.call(e):[e]}function o(e,t,r){if(!(this instanceof o))return new o(e,t,r);var s=e;return"string"==typeof e&&(s=document.querySelectorAll(e)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof t?r=t:i(this.options,t),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||e))}function r(e){this.img=e}function s(e,t){this.url=e,this.element=t,this.img=new Image}var h=e.jQuery,a=e.console,d=Array.prototype.slice;o.prototype=Object.create(t.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var i=e.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=e.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var u={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(t.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,e),n=i.exec(t.backgroundImage)}},o.prototype.addImage=function(e){var t=new r(e);this.images.push(t)},o.prototype.addBackground=function(e,t){var i=new s(e,t);this.images.push(i)},o.prototype.check=function(){function e(e,i,n){setTimeout(function(){t.progress(e,i,n)})}var t=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(t){t.once("progress",e),t.check()}):void this.complete()},o.prototype.progress=function(e,t,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,e,t)},o.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},r.prototype=Object.create(t.prototype),r.prototype.check=function(){var e=this.getIsImageComplete();return e?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},r.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},r.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var e=this.getIsImageComplete();e&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},o.makeJQueryPlugin=function(t){t=t||e.jQuery,t&&(h=t,h.fn.imagesLoaded=function(e,t){var i=new o(this,e,t);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o}); diff --git a/library/templates/Intonation/Assets/js/masonry.js b/library/templates/Intonation/Assets/js/masonry.js new file mode 100644 index 0000000000000000000000000000000000000000..bdca467ceec7aa672e6f103ce56f9b40f6bd5faf --- /dev/null +++ b/library/templates/Intonation/Assets/js/masonry.js @@ -0,0 +1,37 @@ +(function ( $ ) { + $.fn.masonry = function () { + var html = $(this); + + 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) { + window.addEventListener(event, resizeAllMasonryItems); + } ); + + + function resizeMasonryItem(item){ + var grid = html.get(0), + 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)); + + item.style.gridRowEnd = 'span '+rowSpan; + item.style.visibility = 'visible'; + } + + + function resizeAllMasonryItems(){ + for(var i=0;i>allItems.length;i++){ + resizeMasonryItem(allItems[i]); + } + } + }; +} (jQuery)); diff --git a/library/templates/Intonation/Library/ProfilePatcher.php b/library/templates/Intonation/Library/ProfilePatcher.php index 942afbd23e0857f08d1103cd4558ece54c8b4335..12fd3884c3f3c485ea0785c4aaebfc58cf61bcf6 100644 --- a/library/templates/Intonation/Library/ProfilePatcher.php +++ b/library/templates/Intonation/Library/ProfilePatcher.php @@ -57,7 +57,8 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->setCfgSiteParam('hauteur_banniere', '') ->setCfgSiteParam('responsive', '') ->setCfgSiteParam('couleur_lien_bandeau', '') - ->setCfgSiteParam('couleur_texte_bandeau', ''); + ->setCfgSiteParam('couleur_texte_bandeau', '') + ->setAccessLevel(-1); (new Class_Profil_Preferences()) ->setModulePref($this->_profile, @@ -192,7 +193,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Nav_Definition::CODE, Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Menu principal'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white', 'admin_tools_invert_colors'], 'menu' => $this->_profile_id . '-' . $this->_menu_id, $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_MEDIUM, $this->_template->withNameSpace('width_xsmall') => 12, @@ -218,7 +219,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Carousel_Library_Definition::CODE, Class_Profil::DIV_MAIN, ['titre' => $this->_('Bibliothèques'), - 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3'], + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3', 'admin_tools_invert_colors'], 'rendering' => 'card-description', 'layout' => 'carousel', 'filters' => 'opening;town', @@ -233,7 +234,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, Class_Profil::DIV_MAIN, ['titre' => $this->_('Agenda'), - 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3'], + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3', 'admin_tools_invert_colors'], 'rendering' => 'card', 'layout' => 'carousel', 'size' => 9, @@ -252,7 +253,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Carousel_Record_Definition::CODE, Class_Profil::DIV_MAIN, ['titre' => $this->_('Nouveautés'), - 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3'], + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3', 'admin_tools_invert_colors'], 'rendering' => 'card-overlay', 'layout' => 'wall', 'size' => 9, @@ -268,7 +269,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Carousel_Review_Definition::CODE, Class_Profil::DIV_MAIN, ['titre' => $this->_('Dernières critiques'), - 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3'], + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3', 'admin_tools_invert_colors'], 'rendering' => 'card', 'layout' => 'multible_carousel', 'abon_ou_bib' => 'all', @@ -285,7 +286,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Credits_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Crédits'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white', 'text-right'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white', 'text-right', 'admin_tools_invert_colors'], $this->_template->withNameSpace('width_xsmall') => 7, $this->_template->withNameSpace('show_header') => 0, $this->_template->withNameSpace('show_content') => 1, @@ -294,7 +295,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher { ->_addWidget(Intonation_Library_Widget_Share_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Partager'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white', 'text-center'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'black_and_white', 'text-center', 'admin_tools_invert_colors'], $this->_template->withNameSpace('width_xsmall') => 5, $this->_template->withNameSpace('show_header') => 0, $this->_template->withNameSpace('show_content') => 1, diff --git a/library/templates/Intonation/Library/Settings.php b/library/templates/Intonation/Library/Settings.php index e5145f0f7dac9282739614b8b39bb1cf2922c73f..e227002fdb812968da0007ea8777a919f2eecfb9 100644 --- a/library/templates/Intonation/Library/Settings.php +++ b/library/templates/Intonation/Library/Settings.php @@ -70,10 +70,11 @@ class Intonation_Library_Settings extends Intonation_System_Abstract { 'text-center', 'text-right', 'text_small', - 'text_no_transform' + 'text_no_transform', + 'admin_tools_invert_colors' ], - 'hydrating_mapping' => ['div id site_web_wrapper' => 'container align-self-center', + 'hydrating_mapping' => ['div id site_web_wrapper' => 'container align-self-center no_overflow', 'div id site_web_content_wrapper' => 'row justify-content-center no-gutters', 'div class widget' => 'card', 'div class widget-header' => 'card-header', @@ -107,16 +108,19 @@ class Intonation_Library_Settings extends Intonation_System_Abstract { 'dt class user_info' => 'col-12 col-sm-6', 'dd class user_info' => 'col-12 col-sm-6', 'a' => 'text-secondary', + 'a class carousel_control' => 'text-dark', 'a class btn' => 'text-light', 'a class list_format' => 'btn btn-light', 'a class nav-link' => 'text-light', 'a class jumbotron_nav_link' => 'text-dark', 'a class account-loans' => 'btn btn-sm list-group-item-info', + 'a class more_action' => 'text-primary', 'a class badge' => '', 'a class active' => '', 'a class card-link' => '', 'a class list-group-item' => '', 'ul' => 'list-unstyled', + 'div class navbar-header' => 'justify-content-between', 'div class navbar-collapse' => 'justify-content-center', 'div class _notify' => 'alert-warning', 'div class success_notify' => 'alert-success', @@ -228,7 +232,7 @@ class Intonation_Library_Settings extends Intonation_System_Abstract { public function getHtmlAttribs() { return ['id' => 'site_web_wrapper', - 'class' => 'no_overflow ' . $this->_getResponsiveWidths()]; + 'class' => $this->_getResponsiveWidths()]; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Article.php b/library/templates/Intonation/Library/View/Wrapper/Article.php index f303b8e81a7305961c4a41efeab798a90654c70d..d1bcdfc055436c7d1107e60e1e8cbcda3c439e85 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Article.php +++ b/library/templates/Intonation/Library/View/Wrapper/Article.php @@ -201,7 +201,7 @@ class Intonation_Library_View_Wrapper_Article extends Intonation_Library_View_Wr $this->_model->getLibelle())])]; $button = new Intonation_Library_Link(['Text' => $this->_('Plus'), - 'Attribs' => ['class' => 'text-primary'], + 'Attribs' => ['class' => 'more_action'], 'Title' => $this->_('Voir plus d\'actions pour %s', $this->_model->getLibelle()), 'Image' => Class_Template::current()->getIco($this->_view, diff --git a/library/templates/Intonation/Library/View/Wrapper/Author.php b/library/templates/Intonation/Library/View/Wrapper/Author.php index c8b6787aa0bf36748a544e80bfcd3fd31309343e..7e2b6919ffb39dec8dc92c7304293d5c8f0859ae 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author.php @@ -147,7 +147,7 @@ class Intonation_Library_View_Wrapper_Author extends Intonation_Library_View_Wra $this->_model->getLibelle())])]; $button = new Intonation_Library_Link(['Text' => $this->_('Plus'), - 'Attribs' => ['class' => 'text-primary'], + 'Attribs' => ['class' => 'more_action'], 'Title' => $this->_('Voir plus d\'actions pour %s', $this->_model->getLibelle()), 'Image' => Class_Template::current()->getIco($this->_view, diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent.php index a80e547bd672d0188f81bafad100d8840b771d7d..d19947854725dd0ecb7d99ff705c4bc099692da7 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent.php @@ -45,4 +45,9 @@ class Intonation_Library_View_Wrapper_Author_RichContent extends Intonation_Libr new Intonation_Library_View_Wrapper_Author_RichContent_Interviews, new Intonation_Library_View_Wrapper_Author_RichContent_Youtube]; } + + + protected function _getWrapper() { + return 'Intonation_Library_View_Wrapper_Author'; + } } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Biography.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Biography.php index ae30ddea57648efeaba1d62a09e2c6183b040622..14f513a2f10eedf7ab08fcef26b59e728933803c 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Biography.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Biography.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Biography extends Inton public function getNavIco() { - return 'author'; + return 'class fas fa-user'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Collaborations.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Collaborations.php index 3d6e5bf1b35a0ca6ca22023fdd6edae33fdecd34..4e11fcf76d7bdf90c9d7ccd5a6835160423196aa 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Collaborations.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Collaborations.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Collaborations extends public function getNavIco() { - return 'team'; + return 'class fas fa-users'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Home.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Home.php index 76a411273af16e83fca25175c422fc9cfd9ceee3..94325e8d838ca3ece235171291e7e4b6bace12b5 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Home.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Home.php @@ -23,7 +23,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Home extends Intonation_Library_View_Wrapper_Author_RichContent_Section { public function getTitle() { - return ''; + return $this->_('Tout'); } @@ -44,7 +44,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Home extends Intonation public function getNavIco() { - return 'home'; + return 'class fas fa-home'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Interviews.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Interviews.php index dba3212e8b2b3b2007c43e6398f68d795b4fb36d..3cb03e770b403b9ae9bbed9f8800300846d685e1 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Interviews.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Interviews.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Interviews extends Into public function getNavIco() { - return 'reviews'; + return 'class fas fa-comments'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Records.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Records.php index 488c77cada0e9c540306901cfb9911f241cfbf53..17f2b4aef3aa751885a13818027c417c3713274e 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Records.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Records.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Records extends Intonat public function getNavIco() { - return 'related'; + return 'class fas fa-clone'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Youtube.php b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Youtube.php index 9a3a6d841432bf3ed86c0740a6dd98bbc7ac3e23..09e20d8b408b6e5e2566511b9f78234ecfef42b9 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Youtube.php +++ b/library/templates/Intonation/Library/View/Wrapper/Author/RichContent/Youtube.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Author_RichContent_Youtube extends Intonat public function getNavIco() { - return 'media'; + return 'class fas fa-images'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent.php index 8500cbf63084c98ba0e986f2126cf312344f907a..5b36a5645ec5a464018281f0dd4ce2cede52153c 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent.php @@ -22,7 +22,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent extends Intonation_Library_View_Wrapper_RichContent_Abstract { - protected $_navigation; + protected $_navigation; public function getNavigation() { @@ -53,4 +53,9 @@ class Intonation_Library_View_Wrapper_Library_RichContent extends Intonation_Lib new Intonation_Library_View_Wrapper_Library_RichContent_Agenda, new Intonation_Library_View_Wrapper_Library_RichContent_Team]; } -} + + + protected function _getWrapper() { + return 'Intonation_Library_View_Wrapper_Library'; + } +} \ No newline at end of file diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Agenda.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Agenda.php index 2b398ab403a45675c397e4dbb4c7e8e46bd4ab03..3f4ed8d3dd7186fbc8e963f498773f4a0a0f5749 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Agenda.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Agenda.php @@ -74,7 +74,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Agenda extends Intonat public function getNavIco() { - return 'agenda'; + return 'class fas fa-calendar-alt'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Details.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Details.php index 7a101840f859a0b4d7ddd6d4de88fa3122be6278..fb0612b676d900c47866ad5a4fe2454f28f8459b 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Details.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Details.php @@ -146,7 +146,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Details extends Intona public function getNavIco() { - return 'description'; + return 'class fas fa-info'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Home.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Home.php index dcad017818856c51f5eb59e008f1de8c8aba0284..898bd3efa3617c4b1f18390284b2d8ccaa90d519 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Home.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Home.php @@ -23,7 +23,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Home extends Intonation_Library_View_Wrapper_User_RichContent_Section { public function getTitle() { - return ''; + return $this->_('Tout'); } @@ -44,7 +44,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Home extends Intonatio public function getNavIco() { - return 'home'; + return 'class fas fa-home'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Map.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Map.php index 3c95bd283379d0ae06dd679b00011c58b84b367c..a2057fbee43ebb4dca5fe42d2c4fd67372c569f5 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Map.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Map.php @@ -54,7 +54,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Map extends Intonation public function getNavIco() { - return 'map'; + return 'class fas fa-map-marked-alt'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Openings.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Openings.php index 6ffa61ca9d04e86ad8d9b8640dfa49cdb709ddf4..656afc344547e09c7acc9fbe2cf89fe92f6d7c2c 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Openings.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Openings.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Openings extends Inton public function getNavIco() { - return 'openings'; + return 'class fas fa-clock'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProArticles.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProArticles.php index 91ec079bfd671529b0613440e35197792b71a128..f34449720d078078d767d76a07c7b94b11ee6e48 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProArticles.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProArticles.php @@ -36,6 +36,11 @@ class Intonation_Library_View_Wrapper_Library_RichContent_ProArticles extends In } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getTitle() { return $this->_('Les articles de %s', $this->getPro()->getLoginOrFullName()); } diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProReviews.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProReviews.php index 3e9df95f78981ed2f93660cfba9fe7f4f9c20c97..04f8bacbaa182e283195cca13d894e2b20af6686 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProReviews.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/ProReviews.php @@ -41,6 +41,11 @@ class Intonation_Library_View_Wrapper_Library_RichContent_ProReviews extends Int } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { if (!$reviews = $this->getPro()->getAvis()) return; diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/SelectionsPro.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/SelectionsPro.php index fc2b377cb61851d4827820db5ec8b033acae51ed..981cd9d1368398fb0e6cc40c81640870f4e9a9fc 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/SelectionsPro.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/SelectionsPro.php @@ -41,6 +41,11 @@ class Intonation_Library_View_Wrapper_Library_RichContent_SelectionsPro extends } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { if (!$selections = $this->getPro()->getPaniers()) return; diff --git a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Team.php b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Team.php index aa3a2b73b56b1607b35150e2dc6ace3c7f82dcda..da5aabc06eb416e0edfab9631a1be928798245b2 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Team.php +++ b/library/templates/Intonation/Library/View/Wrapper/Library/RichContent/Team.php @@ -66,7 +66,7 @@ class Intonation_Library_View_Wrapper_Library_RichContent_Team extends Intonatio public function getNavIco() { - return 'team'; + return 'class fas fa-users'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record.php b/library/templates/Intonation/Library/View/Wrapper/Record.php index 5782de19da16eed6fea40fbe2e80db044b733b60..64687285ad1d8db523708a1f21835ecd70501fd4 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record.php @@ -301,7 +301,7 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra $this->_thumbnailActions()); $button = new Intonation_Library_Link(['Text' => $this->_('Plus'), - 'Attribs' => ['class' => 'text-primary'], + 'Attribs' => ['class' => 'more_action'], 'Title' => $this->_('Voir plus d\'actions pour le document %s', $this->_model->getTitrePrincipal(' ')), 'Image' => Class_Template::current()->getIco($this->_view, diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent.php index f3800f0452c58d509992433d7c8ebf5f28d11839..64c605d7e37d81310cb67b1a942ef09c81c17516 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent.php @@ -45,7 +45,8 @@ class Intonation_Library_View_Wrapper_Record_RichContent extends Intonation_Libr ->setModel($this->_model) ->setView($this->_view); - $actions = array_merge([$this->getNavigation()->getPosition()], + $actions = array_merge([$this->getNavigation()->getPosition(), + $this->getNavigation()->getBackUrl()], $wrapper->getActions()); return $this->_view->renderActions($actions, ['class' => 'col col-lg-12 pt-1 mt-1 mr-1 pr-1 w-s_nowrap']); @@ -61,4 +62,9 @@ class Intonation_Library_View_Wrapper_Record_RichContent extends Intonation_Libr new Intonation_Library_View_Wrapper_Record_RichContent_Related, new Intonation_Library_View_Wrapper_Record_RichContent_Author]; } + + + protected function _getWrapper() { + return 'Intonation_Library_View_Wrapper_Record'; + } } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Author.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Author.php index d251eb488e4d2e008f2d6abb52759fc6abd057ba..84d0319178bbec643e71f5ea79040246cbd0ca56 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Author.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Author.php @@ -51,7 +51,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Author extends Intonati public function getNavIco() { - return 'author'; + return 'class fas fa-user'; } 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 5863481f01361845f1586bfdcb8f9cb0584b5c5e..4ba6a60caffebff36bf8fb3e40ec895e94ac2470 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Details.php @@ -49,7 +49,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Details extends Intonat public function getNavIco() { - return 'description'; + return 'class fas fa-info'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Home.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Home.php index b9b66d76adcb490a87b6094535b5121e7de516a8..68ec0a6b9eedf40e1c5ed5cb883962a0fcaf93b2 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Home.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Home.php @@ -23,7 +23,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Home extends Intonation_Library_View_Wrapper_Record_RichContent_Section { public function getTitle() { - return ''; + return $this->_('Tout'); } @@ -44,7 +44,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Home extends Intonation public function getNavIco() { - return 'home'; + return 'class fas fa-home'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Items.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Items.php index 2a1739629fe2431bd152d41b379c45af7dcbac7d..7e4cd621be12ea3576f37900c11dc3b947b767f1 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Items.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Items.php @@ -50,7 +50,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Items extends Intonatio public function getNavIco() { - return 'hold'; + return 'class fas fa-thumbtack'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Media.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Media.php index 927c8c259ee69795298b70c713d64e0a38eb2d82..f90aa0679280b19c3af0dd7bc33acad1b0ccda29 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Media.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Media.php @@ -57,7 +57,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Media extends Intonatio public function getNavIco() { - return 'media'; + return 'class fas fa-images'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Navigation.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Navigation.php index 44b79206f2ffdbbf44e1c5e1bcf2951c761f6412..d74bb11c9c6b4ae4a987c7072d05805685f3f823 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Navigation.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Navigation.php @@ -88,6 +88,20 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Navigation { } + public function getBackUrl() { + if (! $this->_isVisible()) + return ''; + + return $this->_view->tagAction(new Intonation_Library_Link(['Url' => $this->_view->notice_navigation->getBackToListUrl(), + 'Text' => $this->_('Recherche'), + 'Title' => $this->_('Retourner aux résultats de la recherche'), + 'Image' => (Class_Template::current() + ->getIco($this->_view, + 'previous', + 'utils'))])); + } + + protected function _isVisible() { if (! isset($this->_view->notice_navigation)) return false; diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Related.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Related.php index 6d7599a8615b95a00cd737920c90ccd2f8636e9d..571c4502d95cb4f463049c7a07b56dd90c5b20cc 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Related.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Related.php @@ -69,7 +69,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Related extends Intonat public function getNavIco() { - return 'related'; + return 'class fas fa-clone'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Reviews.php b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Reviews.php index 18fe0162b0929ef17856f1f0c7f4eefd222f91a4..5a97e869aa5b2f67ddd276c52b52abea41e975e4 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Reviews.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Reviews.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_Record_RichContent_Reviews extends Intonat public function getNavIco() { - return 'reviews'; + return 'class fas fa-comments'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/RichContent/Abstract.php b/library/templates/Intonation/Library/View/Wrapper/RichContent/Abstract.php index 1c4c710a25c7728b6a2c47594b2cc361c7dd909f..67524f2334fbfc3295c49d537e31eb1a22afb21d 100644 --- a/library/templates/Intonation/Library/View/Wrapper/RichContent/Abstract.php +++ b/library/templates/Intonation/Library/View/Wrapper/RichContent/Abstract.php @@ -46,6 +46,7 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Abstract { return $this->_model; } + public function setSections($sections) { $this->_sections = $sections; return $this; @@ -60,8 +61,12 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Abstract { return $this->_sections = array_map(function($instance) { + $wrapper = $this->_getWrapper(); return $instance ->setModel($this->_model) + ->setWrapped((new $wrapper()) + ->setModel($this->_model) + ->setView($this->_view)) ->setView($this->_view); }, $instances); @@ -75,4 +80,6 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Abstract { abstract public function getRowActions(); abstract protected function _getSectionsInstances(); + + abstract protected function _getWrapper(); } diff --git a/library/templates/Intonation/Library/View/Wrapper/RichContent/Section.php b/library/templates/Intonation/Library/View/Wrapper/RichContent/Section.php index d65354f84242b3d59ca5697f7f7b3a8aa912e414..99a5dd890ea576f5f1bb93349ac002db7c89f5e7 100644 --- a/library/templates/Intonation/Library/View/Wrapper/RichContent/Section.php +++ b/library/templates/Intonation/Library/View/Wrapper/RichContent/Section.php @@ -28,6 +28,7 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Section { protected $_view, $_model, + $_wrapped, $_content, $_visible = false, $_ajax = false, @@ -51,6 +52,17 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Section { } + public function setWrapped($wrapped) { + $this->_wrapped = $wrapped; + return $this; + } + + + public function getWrapped() { + return $this->_wrapped; + } + + public function isVisible() { return $this->_visible && $this->getContent(); } @@ -89,6 +101,49 @@ abstract class Intonation_Library_View_Wrapper_RichContent_Section { } + public function getDBTitle() { + $title = $this->_withModuleSettingsDo(function($settings) + { + $data_name = 'getLabel_' . $this->getClass(); + return $settings->$data_name(); + }); + return $title + ? sprintf($title, $this->_wrapped->getMainTitle()) + : $this->getTitle(); + } + + + public function getDBNavTitle() { + $nav_title = $this->_withModuleSettingsDo(function($settings) + { + $data_name = 'getTitle_' . $this->getClass(); + return $settings->$data_name(); + }); + return $nav_title + ? sprintf($nav_title, $this->_wrapped->getMainTitle()) + : $this->getNavTitle(); + } + + + public function getDBNavIco() { + $title = $this->_withModuleSettingsDo(function($settings) + { + $data_name = 'getIco_' . $this->getClass(); + return $settings->$data_name(); + }); + return $title + ? $title + : $this->getNavIco(); + } + + + protected function _withModuleSettingsDo($callback) { + return $this->_view->_module_settings + ? $callback($this->_view->_module_settings) + : ''; + } + + abstract public function getTitle(); abstract public function getContent(); abstract public function getClass(); diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent.php index 8bee7bb9b86270ab3dca27a0e5c1dc9901e01936..c486e5c22851cd6f3177c1359871f90e60ba8d55 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent.php @@ -46,4 +46,9 @@ class Intonation_Library_View_Wrapper_User_RichContent extends Intonation_Librar new Intonation_Library_View_Wrapper_User_RichContent_Reviews, new Intonation_Library_View_Wrapper_User_RichContent_Settings]; } + + + protected function _getWrapper() { + return 'Intonation_Library_View_Wrapper_User'; + } } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php index 53f7a8f788a0dd686dd6d0257e774822a10d6ba8..c38727cc70ecba56b8017fab6eed4273bf39526a 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/ChangeImage.php @@ -27,6 +27,11 @@ class Intonation_Library_View_Wrapper_User_RichContent_ChangeImage extends Inton } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { if (!$paths = explode(';', Class_AdminVar::getValueOrDefault('USER_PROFILE_IMAGES'))) return ''; diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/EditInformations.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/EditInformations.php index a1daaea1de06bf0378b997ed6b5ec9b06122d4fb..3e44a896d4885ff880fde9376f1f37e5d575e31a 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/EditInformations.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/EditInformations.php @@ -27,6 +27,11 @@ class Intonation_Library_View_Wrapper_User_RichContent_EditInformations extends } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { return $this->_content; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/FollowASearch.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/FollowASearch.php index ca437766fd6e5c55d2d893b1e31851314d998882..38f53e5af49062dbf1334908e3f9285393218e2b 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/FollowASearch.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/FollowASearch.php @@ -36,6 +36,11 @@ class Intonation_Library_View_Wrapper_User_RichContent_FollowASearch extends Int } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { $form = (new ZendAfi_Form) ->setMethod('GET') diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Holds.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Holds.php index 8bea1d3e7bde2e228db18e7c3e11c52093c81bf8..a86afb38b090dbf27e3a259ec97d30fa0cffcb2a 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Holds.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Holds.php @@ -50,7 +50,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Holds extends Intonation_ public function getNavIco() { - return 'hold'; + return 'class fas fa-thumbtack'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Home.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Home.php index 4459340471574897d506346b00007c5ef6722908..4160f060290d95bf3fbc01ba416ecfc2adb574ac 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Home.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Home.php @@ -23,7 +23,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Home extends Intonation_Library_View_Wrapper_User_RichContent_Section { public function getTitle() { - return ''; + return $this->_('Tout'); } @@ -44,7 +44,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Home extends Intonation_L public function getNavIco() { - return 'home'; + return 'class fas fa-home'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Informations.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Informations.php index 650d0d1919861a6377fd2a110f73768d3838d289..de4d8def0195c2c3c650a06bf12ace74ecbef6a0 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Informations.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Informations.php @@ -47,7 +47,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Informations extends Into public function getNavIco() { - return 'description'; + return 'class fas fa-info'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Loans.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Loans.php index 2b987a9e59fe0face5fc1394dc4af6e02f86c1da..81d3a8ce6b8208ed35f25e4655fcce98fe7f90f5 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Loans.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Loans.php @@ -65,7 +65,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Loans extends Intonation_ public function getNavIco() { - return 'loan'; + return 'class fas fa-book'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/RateRecords.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/RateRecords.php index 6b3eec62530ef65ed201c9053bedacf49277da99..102f80c61e5f7c853996e23db37279f4dcb6f3b7 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/RateRecords.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/RateRecords.php @@ -36,6 +36,11 @@ class Intonation_Library_View_Wrapper_User_RichContent_RateRecords extends Inton } + public function getDBTitle() { + return $this->getTitle(); + } + + public function getContent() { $criteria = $this->_criteria; $records_to_rate = $this->_getRecordsToRate($this->getModel(), $criteria); diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Reviews.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Reviews.php index 45d057357fcba62fc501f7d164ea8e9cb2baf097..1c6a74f71fb88c1c95521984c682338acf628adb 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Reviews.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Reviews.php @@ -64,7 +64,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Reviews extends Intonatio public function getNavIco() { - return 'reviews'; + return 'class fas fa-comments'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Selections.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Selections.php index 9598834f6590b39958162dd5258fefe6e4e69186..3971ec34e6272f33591feb18233f858e604ce881 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Selections.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Selections.php @@ -61,7 +61,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Selections extends Intona public function getNavIco() { - return 'selection'; + return 'class fas fa-heart'; } diff --git a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Settings.php b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Settings.php index 2514e05e13bd0aeb7bf0b9d0676d044a7660ede6..31259676cc2083292719cc390f12d6fdff1f18ca 100644 --- a/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Settings.php +++ b/library/templates/Intonation/Library/View/Wrapper/User/RichContent/Settings.php @@ -142,7 +142,7 @@ class Intonation_Library_View_Wrapper_User_RichContent_Settings extends Intonati public function getNavIco() { - return 'settings'; + return 'class fas fa-user-cog'; } diff --git a/library/templates/Intonation/Library/Widget/Accessibility/View.php b/library/templates/Intonation/Library/Widget/Accessibility/View.php index 9bba3e5fe813be2d9093828b0c257e168b8fcd90..52341ecdce3ee9125064eb15ce026608ecccc74e 100644 --- a/library/templates/Intonation/Library/Widget/Accessibility/View.php +++ b/library/templates/Intonation/Library/Widget/Accessibility/View.php @@ -38,7 +38,9 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A ->addJQueryReady(sprintf('$("#%s").accessibility_tools()', $id)) ->addJqueryReady('$(".dropdown-menu").on("click", function (e) {e.stopPropagation();});'); -; + + if ($this->_settings->getDisplayFontSize()) + $script_loader->addOPACStyleSheet('font_size_rules'); } @@ -157,9 +159,6 @@ class Intonation_Library_Widget_Accessibility_View extends Zendafi_View_Helper_A if (!$this->_settings->getDisplayFontSize()) return; - Class_ScriptLoader::getInstance() - ->addOPACStyleSheet('font_size_rules'); - return $this->view->button((new Class_Entity) ->setImage($this->view->tagImg(Class_Url::absolute('public/opac/images/buttons/default_font_size.png'), diff --git a/library/templates/Intonation/Library/Widget/Login/View.php b/library/templates/Intonation/Library/Widget/Login/View.php index b92ef90ce338edb3a1cc4d9c25f6ebba067ebcfa..b2e50e0be36ae6595e04b621aa808c54eb09f9bf 100644 --- a/library/templates/Intonation/Library/Widget/Login/View.php +++ b/library/templates/Intonation/Library/Widget/Login/View.php @@ -109,7 +109,13 @@ abstract class IntonationLoginRenderAbstract { ->setAction($action); $form->removeElement('loginlink'); - $form->getElement('login')->setOrder(2); + $form->getElement('username')->setOrder(1); + $form->getElement('password')->setOrder(2); + $form->getElement('login')->setOrder(3); + $form->getElement('lostpass')->setOrder(4); + + if (Class_AdminVar::isEnregUtilAllowed()) + $form->getElement('register')->setOrder(5); return $form; } diff --git a/library/templates/Intonation/Library/Widget/Nav/View.php b/library/templates/Intonation/Library/Widget/Nav/View.php index 69e6ef7c35667742ca97ef45dfb8442e13a16dd4..b67805e4e21df020866fb0491a2823aaf6c3664f 100644 --- a/library/templates/Intonation/Library/Widget/Nav/View.php +++ b/library/templates/Intonation/Library/Widget/Nav/View.php @@ -82,7 +82,7 @@ class Intonation_Library_Widget_Nav_View extends Zendafi_View_Helper_Accueil_Bas return $this->_tag('div', $this->_renderLogo($this->_menu_settings) . $this->_renderSandwich(), - ['class' => 'd-flex justify-content-between navbar-header']); + ['class' => 'd-flex navbar-header']); } diff --git a/library/templates/Intonation/Library/Widget/Search/View.php b/library/templates/Intonation/Library/Widget/Search/View.php index da4f96626ecee1791d4eecb76c7cc30e6de15f37..41cee016c8a7b2a745e4d8f02dc09e2fb31820e0 100644 --- a/library/templates/Intonation/Library/Widget/Search/View.php +++ b/library/templates/Intonation/Library/Widget/Search/View.php @@ -54,6 +54,29 @@ class Intonation_Library_Widget_Search_View extends ZendAfi_View_Helper_Accueil_ return new IntonationSearchRenderDefault($this->view, $this->_settings, $this->_user); } + + + protected function _renderHeadScriptsOn($script_loader) { + $id = '#expressionRecherche' . $this->_settings->getIdForHtml(); + + $script_loader + ->addJQueryReady('$("' . $id . '").attr("x-webkit-speech","x-webkit-speech")') + ->addOPACPluginScript('search_autocomplete/search_autocomplete') + ->addJQueryReady('$("' . $id . '").search_autocomplete('. $this->getAutocompleteOptions() .')'); + + return $this; + } + + + protected function getAutocompleteOptions() { + $options = new stdClass(); + $options->url = $this->view->url(['controller' => 'recherche', + 'action' => 'suggestajax'], null, true); + $options->dataType = 'json'; + $options->dataLabel = 'startsWith'; + $options->minLength = 3; + return json_encode($options); + } } @@ -73,7 +96,7 @@ abstract class IntonationSearchRenderAbstract { $this->_view = $view; $this->_settings = $settings; $this->_user = $user; - $this->_id = $settings->getIdModule(); + $this->_id = $settings->getIdForHtml(); if ($this->_view->search_result) return $this; @@ -127,7 +150,7 @@ abstract class IntonationSearchRenderAbstract { 'expressionRecherche', ['label' => $this->_settings->getMessage(), 'value' => $this->_view->search_result ? $this->_view->search_result->getCriteresRecherche()->getExpressionRecherche() : '', - 'id' => 'expressionRecherche' . $this->_id, + 'id' => 'expressionRecherche' . $this->_settings->getIdForHtml(), 'class' => 'expressionRecherche', 'placeholder' => $this->_settings->getPlaceholder()]) diff --git a/library/templates/Intonation/System/WidgetSettings.php b/library/templates/Intonation/System/WidgetSettings.php index eda179dcd86172f5766f3e7563bb29092f43453e..f46f12ff253650c83c392daf2681823421933c3e 100644 --- a/library/templates/Intonation/System/WidgetSettings.php +++ b/library/templates/Intonation/System/WidgetSettings.php @@ -41,4 +41,12 @@ class Intonation_System_WidgetSettings { public function __construct($settings) { $this->_settings = $settings; } + + + public function getIdForHtml() { + if (!$parent = $this->_settings->getParent()) + return $this->_settings->getIdModule(); + + return $parent . '-' . $this->_settings->getIdModule(); + } } diff --git a/library/templates/Intonation/View/Abonne.php b/library/templates/Intonation/View/Abonne.php index e8c2a6b1a05e6464423e17ba4e5efa74562241a7..c6c002abbbecd1eb8c24f185e05362ebf74b2993 100644 --- a/library/templates/Intonation/View/Abonne.php +++ b/library/templates/Intonation/View/Abonne.php @@ -21,6 +21,7 @@ class Intonation_View_Abonne extends Intonation_View_Jumbotron_Abstract { + public function abonne($user) { return $this->_core($user); } diff --git a/library/templates/Intonation/View/Abonne/ConfigurationsBoard.php b/library/templates/Intonation/View/Abonne/ConfigurationsBoard.php index 33be6930ae5b6579d0f04357bf82aad7d9ee72ae..ff366cd594d2b323def427c43a8a60da0240ee98 100644 --- a/library/templates/Intonation/View/Abonne/ConfigurationsBoard.php +++ b/library/templates/Intonation/View/Abonne/ConfigurationsBoard.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_ConfigurationsBoard extends Intonation_View_Abonne { - public function abonne_ConfigurationsBoard($user) { - $html = $this->abonne($user); - $this->view->titre = $this->_('%s : Mes configurations', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_settings'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_settings' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_ConfigurationsBoard($user) { + return $this->_renderSection($user); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Abonne/HoldsBoard.php b/library/templates/Intonation/View/Abonne/HoldsBoard.php index b10dd9abb551476e8b464cee787da8bda0fbc2b5..e2269b6b0df35a38ade6b4814fba869d2de923d5 100644 --- a/library/templates/Intonation/View/Abonne/HoldsBoard.php +++ b/library/templates/Intonation/View/Abonne/HoldsBoard.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_HoldsBoard extends Intonation_View_Abonne { - public function abonne_HoldsBoard($user) { - $html = $this->abonne($user); - $this->view->titre = $this->_('%s : Mes réservations', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_holds'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_holds' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_HoldsBoard($user) { + return $this->_renderSection($user); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Abonne/Informations.php b/library/templates/Intonation/View/Abonne/Informations.php index 4bfeadb91f83311cd894248e38f4e753a90a9268..e0d168621bd69c7d863c0bd1ea8d8c947eaf66d8 100644 --- a/library/templates/Intonation/View/Abonne/Informations.php +++ b/library/templates/Intonation/View/Abonne/Informations.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_Informations extends Intonation_View_Abonne { - public function abonne_Informations($user) { - $html = $this->abonne($user); - $this->view->titre = $this->_('%s : Informations', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_informations'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_informations' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_Informations($user) { + return $this->_renderSection($user); } } diff --git a/library/templates/Intonation/View/Abonne/LoansBoard.php b/library/templates/Intonation/View/Abonne/LoansBoard.php index 156e34f6cc36f333b61798c17e60c96d54134757..db42c9ad69db3622359f78ba3f2eb442eae9abb0 100644 --- a/library/templates/Intonation/View/Abonne/LoansBoard.php +++ b/library/templates/Intonation/View/Abonne/LoansBoard.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_LoansBoard extends Intonation_View_Abonne { - public function abonne_LoansBoard($config) { - $html = $this->abonne($config->getUser()); - $this->view->titre = $this->_('%s : Mes prêts', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_loans'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_loans' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_LoansBoard($config) { + return $this->_renderSection($config->getUser()); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Abonne/ReviewsBoard.php b/library/templates/Intonation/View/Abonne/ReviewsBoard.php index 898ef97a9e6c2a9f7adac41ff76d9903354302aa..cc13e36841ef4a9b0f2b123bfdb35c4b857f8dd4 100644 --- a/library/templates/Intonation/View/Abonne/ReviewsBoard.php +++ b/library/templates/Intonation/View/Abonne/ReviewsBoard.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_ReviewsBoard extends Intonation_View_Abonne { - public function abonne_ReviewsBoard($user) { - $html = $this->abonne($user); - $this->view->titre = $this->_('%s : Mes avis', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_reviews'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_reviews' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_ReviewsBoard($user) { + return $this->_renderSection($user); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Abonne/SelectionsBoard.php b/library/templates/Intonation/View/Abonne/SelectionsBoard.php index 7073a617bbd5f8f835351673e38291a3d6f611fc..c5399bbc8c306caf9cedaac7f8ae678cb5afa98b 100644 --- a/library/templates/Intonation/View/Abonne/SelectionsBoard.php +++ b/library/templates/Intonation/View/Abonne/SelectionsBoard.php @@ -21,19 +21,11 @@ class Intonation_View_Abonne_SelectionsBoard extends Intonation_View_Abonne { - public function abonne_SelectionsBoard($user) { - $html = $this->abonne($user); - $this->view->titre = $this->_('%s : Mes sélections', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'user_selections'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('user_selections' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function abonne_SelectionsBoard($user) { + return $this->_renderSection($user); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Abstract/Carousel.php b/library/templates/Intonation/View/Abstract/Carousel.php index e1824d57feae23724bb82a0fcf513f8d90ff7880..be4d79f82385f46ed832f97bf2e59fa8f69be313 100644 --- a/library/templates/Intonation/View/Abstract/Carousel.php +++ b/library/templates/Intonation/View/Abstract/Carousel.php @@ -85,7 +85,7 @@ abstract class Intonation_View_Abstract_Carousel extends ZendAfi_View_Helper_Bas ['href' => '#' . $id, 'data-slide' => 'prev', 'role' => 'button', - 'class' => 'carousel-control-prev text-dark px-3']) + 'class' => 'carousel_control carousel-control-prev px-3']) . $this->_tag('a', Class_Template::current()->getIco($this->view, 'next', 'utils', ['class' => 'ico_xl']) @@ -93,7 +93,7 @@ abstract class Intonation_View_Abstract_Carousel extends ZendAfi_View_Helper_Bas ['href' => '#' . $id, 'data-slide' => 'next', 'role' => 'button', - 'class' => 'carousel-control-next text-dark px-3']); + 'class' => 'carousel_control carousel-control-next px-3']); } diff --git a/library/templates/Intonation/View/Author/Biography.php b/library/templates/Intonation/View/Author/Biography.php index 3d09dd76fc30abda67989be92d1478de93bceda9..c978110a7cc99bde12701813807e892c79caee21 100644 --- a/library/templates/Intonation/View/Author/Biography.php +++ b/library/templates/Intonation/View/Author/Biography.php @@ -21,19 +21,10 @@ class Intonation_View_Author_Biography extends Intonation_View_RenderAuthorDescription { - public function author_Biography($author) { - $html = $this->renderAuthorDescription(new Class_CodifAuteur_Description($author)); - $this->view->titre = $this->_('%s : Biographie', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'author_biography'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('author_biography' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function author_Biography($author) { + return $this->_renderSection($author); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Author/Collaborations.php b/library/templates/Intonation/View/Author/Collaborations.php index 03da75ed68e5ca38fd4cfc8f855d5941eb511780..20fdba40f493b8efce389a8bee4a59a062ed1a86 100644 --- a/library/templates/Intonation/View/Author/Collaborations.php +++ b/library/templates/Intonation/View/Author/Collaborations.php @@ -21,19 +21,10 @@ class Intonation_View_Author_Collaborations extends Intonation_View_RenderAuthorDescription { - public function author_Collaborations($author) { - $html = $this->renderAuthorDescription(new Class_CodifAuteur_Description($author)); - $this->view->titre = $this->_('%s : Collaborateurs', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'author_collaborations'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('author_collaborations' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function author_Collaborations($author) { + return $this->_renderSection($author); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Author/Interviews.php b/library/templates/Intonation/View/Author/Interviews.php index f11f12540880ef94ae43e105d9f2d7b62e5e442b..c85a749a2094409a2d171eaac24bdcd396420903 100644 --- a/library/templates/Intonation/View/Author/Interviews.php +++ b/library/templates/Intonation/View/Author/Interviews.php @@ -21,19 +21,10 @@ class Intonation_View_Author_Interviews extends Intonation_View_RenderAuthorDescription { - public function author_Interviews($author) { - $html = $this->renderAuthorDescription(new Class_CodifAuteur_Description($author)); - $this->view->titre = $this->_('%s : Interviews', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'author_interviews'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('author_interviews' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function author_Interviews($author) { + return $this->_renderSection($author); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Author/Records.php b/library/templates/Intonation/View/Author/Records.php index 3fad2c82a2d532e391b482cd0cbd63ecfc91d097..50345f63a7e99000bb9adb26885eee774b865887 100644 --- a/library/templates/Intonation/View/Author/Records.php +++ b/library/templates/Intonation/View/Author/Records.php @@ -21,19 +21,10 @@ class Intonation_View_Author_Records extends Intonation_View_RenderAuthorDescription { - public function author_Records($author) { - $html = $this->renderAuthorDescription(new Class_CodifAuteur_Description($author)); - $this->view->titre = $this->_('%s : Documents', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'author_records'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('author_records' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function author_Records($author) { + return $this->_renderSection($author); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Author/RenderCollaborations.php b/library/templates/Intonation/View/Author/RenderCollaborations.php index 20f227453597a162747cc9c4bd18987172b4b2dc..ce2c521d3b2cc62210814a7d28a40fdb9ba29382 100644 --- a/library/templates/Intonation/View/Author/RenderCollaborations.php +++ b/library/templates/Intonation/View/Author/RenderCollaborations.php @@ -26,11 +26,11 @@ class Intonation_View_Author_RenderCollaborations extends ZendAfi_View_Helper_Ba return $this->_renderCollaboration($author, $collaboration); }; - - return $this->_tag('h3', $this->_('Auteurs associés')) - . $this->view->renderMultipleCarousel(new Storm_Collection($author->getAssociatedAuthors()), + return ($content = $this->view->renderMultipleCarousel(new Storm_Collection($author->getAssociatedAuthors()), $callback, - 20); + 20)) + ? $this->_tag('h3', $this->_('Auteurs associés')) . $content + : ''; } diff --git a/library/templates/Intonation/View/Author/YoutubeChan.php b/library/templates/Intonation/View/Author/YoutubeChan.php index 14bc8d7a38e62bb9c8eed27f640443ce02f17400..3eb1739e1c4fd21b76dab3ca62fcefd464aa7e74 100644 --- a/library/templates/Intonation/View/Author/YoutubeChan.php +++ b/library/templates/Intonation/View/Author/YoutubeChan.php @@ -21,19 +21,10 @@ class Intonation_View_Author_YoutubeChan extends Intonation_View_RenderAuthorDescription { - public function author_YoutubeChan($author) { - $html = $this->renderAuthorDescription(new Class_CodifAuteur_Description($author)); - $this->view->titre = $this->_('%s : Chaine YouTube', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'author_youtube_chan'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('author_youtube_chan' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function author_YoutubeChan($author) { + return $this->_renderSection($author); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/CardifyWithOverlay.php b/library/templates/Intonation/View/CardifyWithOverlay.php index b82fb01eb554091eabebf6789d31750d4585684f..de7030ec15b70ca7831214438774f62d29d5ba3c 100644 --- a/library/templates/Intonation/View/CardifyWithOverlay.php +++ b/library/templates/Intonation/View/CardifyWithOverlay.php @@ -38,10 +38,8 @@ class Intonation_View_CardifyWithOverlay extends ZendAfi_View_Helper_BaseHelper $content = [$title]; if ($author_name = $element->getSecondaryTitle()) - $content [] = $this->_tag('div', - $element->getSecondaryIco() - . $author_name, - ['class' => 'card-subtitle']); + $content [] = $this->view->div(['class' => 'card-subtitle'], + $element->getSecondaryIco() . $this->view->div(['class' => 'd-inline'], $author_name)); $doc_type = Class_Template::current() ->getIco($this->view, diff --git a/library/templates/Intonation/View/FonctionsAdmin.php b/library/templates/Intonation/View/FonctionsAdmin.php index 8474b2b21a0754662dd833f6782e73145f67225e..52c1ae6afdc6421b11b6e4197c0f6cc9f6f9ae01 100644 --- a/library/templates/Intonation/View/FonctionsAdmin.php +++ b/library/templates/Intonation/View/FonctionsAdmin.php @@ -21,29 +21,34 @@ class Intonation_View_FonctionsAdmin extends ZendAfi_View_Helper_FonctionsAdmin { - public function fonctionsAdmin($id_module = 0, $type_module = false, $division = null, $extended_actions = []) { - if (! Class_Users::isCurrentUserCanAccesBackend()) - return ''; - return parent::fonctionsAdmin($id_module, $type_module, $division, $extended_actions); + public function fonctionsAdmin($id_module = 0, $type_module = false, $division = null, $extended_actions = []) { + return Class_Users::isCurrentUserCanAccesBackend() + ? parent::fonctionsAdmin($id_module, $type_module, $division, $extended_actions) + : ''; } - protected function _properties($url_params) { + protected function getPopupUrlParams() { $id = implode('_', array_filter([$this->view->_current_module['controller'], $this->view->_current_module['action'], $this->view->_current_module['action2']])); + return ['module' => 'admin', + 'controller' => 'widget', + 'action' => 'edit-action', + 'id' => $id, + 'id_profil' => $this->id_profil]; + } + + + protected function _properties($url_params) { return $this->_renderActionLink('box_configuration', $this->_('Modifier la configuration de %s %s ', $this->view->_current_module['controller'], $this->view->_current_module['action']), - $this->view->url(array_filter(['module' => 'admin', - 'controller' => 'widget', - 'action' => 'edit-action', - 'id' => $id, - 'id_profil' => $this->id_profil]), null, true)); + $this->view->url($url_params), null, true); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Jumbotron.php b/library/templates/Intonation/View/Jumbotron.php index f81937f4ccaa46da397116c4504a9028e9d70a30..04108f036f80ce72a1b670dcad2cf02bc538615e 100644 --- a/library/templates/Intonation/View/Jumbotron.php +++ b/library/templates/Intonation/View/Jumbotron.php @@ -147,7 +147,7 @@ class Intonation_View_Jumbotron extends ZendAfi_View_Helper_BaseHelper { protected function _renderNavItem($item) { $id = $item->getModel()->getId(); - $params = ['title' => $item->getNavTitle(), + $params = ['title' => $item->getDBNavTitle(), 'class' => 'jumbotron_nav_link nav-link ' . $item->getClass() . ' ' . $item->getActiveClass()]; if ($item->isAjax() || (!$item->getContent())) @@ -157,7 +157,7 @@ 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->getNavIco(), 'library'), + Class_Template::current()->getIco($this->view, $item->getDBNavIco()). $this->view->div(['class' => 'button_text d-none'], $item->getDBTitle()), $params), ['class' => 'nav-item']); } @@ -204,8 +204,8 @@ class Intonation_View_Jumbotron extends ZendAfi_View_Helper_BaseHelper { return $this->_div(['class' => $classes], $this->_tag('h2', - Class_Template::current()->getIco($this->view, $element->getNavIco(), 'library') - . $this->view->tag('span', $element->getTitle()), + Class_Template::current()->getIco($this->view, $element->getDBNavIco()) + . $this->view->tag('span', $element->getDBTitle()), ['class' => 'jumbotron_section_title']) . $element->getContent()); } diff --git a/library/templates/Intonation/View/Jumbotron/Abstract.php b/library/templates/Intonation/View/Jumbotron/Abstract.php index e43174d84d8ba57cfe8004c0fab0300e47990617..d1257d1ce4915ab567ec7090990d791ac4e7f9d5 100644 --- a/library/templates/Intonation/View/Jumbotron/Abstract.php +++ b/library/templates/Intonation/View/Jumbotron/Abstract.php @@ -22,6 +22,11 @@ abstract class Intonation_View_Jumbotron_Abstract extends ZendAfi_View_Helper_BaseHelper { + protected + $_show_current_section, + $_current_section; + + protected function _core($model) { $wrapped = $this->_getWrappedInstance() ->setView($this->view) @@ -42,11 +47,27 @@ abstract class Intonation_View_Jumbotron_Abstract extends ZendAfi_View_Helper_Ba } + protected function _renderSection($model) { + return $this->_addPageTitleToHtml($this->_core($model)); + } + + protected function _showSections($sections) { - $sections[0]->beActive(); + if ( ! $this->_show_current_section) { + $sections[0]->beActive(); + + foreach($sections as $section) + $section + ->beVisible(); + + return; + } + foreach($sections as $section) - $section - ->beVisible(); + if ($this->_show_current_section == $section->getClass()) + return $this->_current_section = $section + ->beActive() + ->beVisible(); } @@ -58,6 +79,14 @@ abstract class Intonation_View_Jumbotron_Abstract extends ZendAfi_View_Helper_Ba } + protected function _addPageTitleToHtml($html) { + $this->view->titre = $this->_('%s / %s', + $this->view->titre, + $this->_current_section->getDBTitle()); + return $html; + } + + abstract protected function _getWrappedInstance(); abstract protected function _getRichContentInstance(); diff --git a/library/templates/Intonation/View/Library/Agenda.php b/library/templates/Intonation/View/Library/Agenda.php index fc33093f077eabfeb8a5edb194bc802d8f69f46e..875891ce69f2ab041e661ce75dd737b702731169 100644 --- a/library/templates/Intonation/View/Library/Agenda.php +++ b/library/templates/Intonation/View/Library/Agenda.php @@ -22,26 +22,10 @@ class Intonation_View_Library_Agenda extends Intonation_View_Library { - public function library_Agenda($library) { - $this->view->library = $library; - $html = $this->library($library); - $this->view->titre = $this->_('%s : l\'agenda', $this->view->titre); - return $html; - } - - - protected function _showSections($sections) {} + protected $_show_current_section = 'library_agenda'; - protected function _hookOn($rich_content) { - $sections = $rich_content->getSections(); - - $sections [5] = (new Intonation_Library_View_Wrapper_Library_RichContent_Agenda) - ->setModel($this->view->library) - ->setView($this->view) - ->beActive() - ->beVisible(); - - $rich_content->setSections($sections); + public function library_Agenda($library) { + return $this->_renderSection($library); } } diff --git a/library/templates/Intonation/View/Library/Details.php b/library/templates/Intonation/View/Library/Details.php index e86bf2205da843822445ffa268b32ed218fd8f89..c5264ce8085c7c1335f5ffd77bc5ca75ae4c0fed 100644 --- a/library/templates/Intonation/View/Library/Details.php +++ b/library/templates/Intonation/View/Library/Details.php @@ -21,26 +21,11 @@ class Intonation_View_Library_Details extends Intonation_View_Library { - public function library_Details($library) { - $this->view->library = $library; - $html = $this->library($library); - $this->view->titre = $this->_('%s : informations', $this->view->titre); - return $html; - } - - protected function _showSections($sections) {} + protected $_show_current_section = 'library_details'; - protected function _hookOn($rich_content) { - $sections = $rich_content->getSections(); - - $sections [2] = (new Intonation_Library_View_Wrapper_Library_RichContent_Details) - ->setModel($this->view->library) - ->setView($this->view) - ->beActive() - ->beVisible(); - - $rich_content->setSections($sections); + public function library_Details($library) { + return $this->_renderSection($library); } } diff --git a/library/templates/Intonation/View/Library/Map.php b/library/templates/Intonation/View/Library/Map.php index ea952313c256101a481c37098e8d9a9907b46a38..b92449b2513ec836fca222f4d91cf14b8fdaf40f 100644 --- a/library/templates/Intonation/View/Library/Map.php +++ b/library/templates/Intonation/View/Library/Map.php @@ -21,26 +21,11 @@ class Intonation_View_Library_Map extends Intonation_View_Library { - public function library_Map($library) { - $this->view->library = $library; - $html = $this->library($library); - $this->view->titre = $this->_('%s : carte', $this->view->titre); - return $html; - } - - protected function _showSections($sections) {} + protected $_show_current_section = 'library_map'; - protected function _hookOn($rich_content) { - $sections = $rich_content->getSections(); - - $sections [3] = (new Intonation_Library_View_Wrapper_Library_RichContent_Map) - ->setModel($this->view->library) - ->setView($this->view) - ->beActive() - ->beVisible(); - - $rich_content->setSections($sections); + public function library_Map($library) { + return $this->_renderSection($library); } } diff --git a/library/templates/Intonation/View/Library/Openings.php b/library/templates/Intonation/View/Library/Openings.php index c886c8c284dee36c82ca5dbf518303590ea3e23d..e54bc6009f770efa4907a0c36300133f6a6b5bbc 100644 --- a/library/templates/Intonation/View/Library/Openings.php +++ b/library/templates/Intonation/View/Library/Openings.php @@ -21,26 +21,11 @@ class Intonation_View_Library_Openings extends Intonation_View_Library { - public function library_Openings($library) { - $this->view->library = $library; - $html = $this->library($library); - $this->view->titre = $this->_('%s : ouvertures', $this->view->titre); - return $html; - } - - protected function _showSections($sections) {} + protected $_show_current_section = 'library_openings'; - protected function _hookOn($rich_content) { - $sections = $rich_content->getSections(); - - $sections [1] = (new Intonation_Library_View_Wrapper_Library_RichContent_Openings) - ->setModel($this->view->library) - ->setView($this->view) - ->beActive() - ->beVisible(); - - $rich_content->setSections($sections); + public function library_Openings($library) { + return $this->_renderSection($library); } } diff --git a/library/templates/Intonation/View/Library/ProArticles.php b/library/templates/Intonation/View/Library/ProArticles.php index a589eeaf9b9bd2504bececb932dcf2521246d6a4..00f7a1f8ddbae17aa8a6277af9ccbe56b452f6e8 100644 --- a/library/templates/Intonation/View/Library/ProArticles.php +++ b/library/templates/Intonation/View/Library/ProArticles.php @@ -42,7 +42,7 @@ class Intonation_View_Library_ProArticles extends Intonation_View_Library { protected function _hookOn($rich_content) { $sections = $rich_content->getSections(); - $sections [4] = (new Intonation_Library_View_Wrapper_Library_RichContent_ProArticles) + $sections [5] = (new Intonation_Library_View_Wrapper_Library_RichContent_ProArticles) ->setModel($this->view->library) ->setView($this->view) ->setPro($this->_pro) diff --git a/library/templates/Intonation/View/Library/ProReviews.php b/library/templates/Intonation/View/Library/ProReviews.php index 6b6c7010dc0deaa3866ac69ea5ccad672c5882fc..987cad55c08d7557e2e3a354e0c51f3faf14d1fd 100644 --- a/library/templates/Intonation/View/Library/ProReviews.php +++ b/library/templates/Intonation/View/Library/ProReviews.php @@ -42,7 +42,7 @@ class Intonation_View_Library_ProReviews extends Intonation_View_Library { protected function _hookOn($rich_content) { $sections = $rich_content->getSections(); - $sections [4] = (new Intonation_Library_View_Wrapper_Library_RichContent_ProReviews) + $sections [5] = (new Intonation_Library_View_Wrapper_Library_RichContent_ProReviews) ->setModel($this->view->library) ->setView($this->view) ->setPro($this->_pro) diff --git a/library/templates/Intonation/View/Library/SelectionsPro.php b/library/templates/Intonation/View/Library/SelectionsPro.php index 21951d8950026d07cfa92cbff70ee7bd9fda48df..b927d4ff8cb4d2f3a93daac7985a753c83ac3ef1 100644 --- a/library/templates/Intonation/View/Library/SelectionsPro.php +++ b/library/templates/Intonation/View/Library/SelectionsPro.php @@ -42,7 +42,7 @@ class Intonation_View_Library_SelectionsPro extends Intonation_View_Library { protected function _hookOn($rich_content) { $sections = $rich_content->getSections(); - $sections [4] = (new Intonation_Library_View_Wrapper_Library_RichContent_SelectionsPro) + $sections [5] = (new Intonation_Library_View_Wrapper_Library_RichContent_SelectionsPro) ->setModel($this->view->library) ->setView($this->view) ->setPro($this->_pro) diff --git a/library/templates/Intonation/View/Library/Team.php b/library/templates/Intonation/View/Library/Team.php index 971475d46bf22886b9f1c21bf8688962e4b1b0a4..2ed68e13d297bb3915590445901ad5baa851422c 100644 --- a/library/templates/Intonation/View/Library/Team.php +++ b/library/templates/Intonation/View/Library/Team.php @@ -21,26 +21,11 @@ class Intonation_View_Library_Team extends Intonation_View_Library { - public function library_Team($library) { - $this->view->library = $library; - $html = $this->library($library); - $this->view->titre = $this->_('%s : l\'équipe', $this->view->titre); - return $html; - } - - protected function _showSections($sections) {} + protected $_show_current_section = 'library_team'; - protected function _hookOn($rich_content) { - $sections = $rich_content->getSections(); - - $sections [4] = (new Intonation_Library_View_Wrapper_Library_RichContent_Team) - ->setModel($this->view->library) - ->setView($this->view) - ->beActive() - ->beVisible(); - - $rich_content->setSections($sections); + public function library_Team($library) { + return $this->_renderSection($library); } } diff --git a/library/templates/Intonation/View/Opac.php b/library/templates/Intonation/View/Opac.php index a7e9353efcdca5dd542eb7f8841de98e3aa8ad04..62ed3797d1d5c78709396ec9484558dcffddfb5a 100644 --- a/library/templates/Intonation/View/Opac.php +++ b/library/templates/Intonation/View/Opac.php @@ -135,7 +135,8 @@ class Intonation_View_Opac extends ZendAfi_View_Helper_BaseHelper { $head_scripts->addOPACScript('subModal') ->addAdminScripts(['onload_utils', 'global']) ->showNotifications(); - $script_loader->addJQueryReady('initializePopups();setupAnchorsTarget();'); + $script_loader + ->addJQueryReady('initializePopups();setupAnchorsTarget();'); } if($this->_template->getCoreCss()) diff --git a/library/templates/Intonation/View/RenderRecord/Author.php b/library/templates/Intonation/View/RenderRecord/Author.php index d6bc1417916913cb3b1f49a5967f37ccd3c28c12..77c18115347b9d116148cdb69afc445a9f26078d 100644 --- a/library/templates/Intonation/View/RenderRecord/Author.php +++ b/library/templates/Intonation/View/RenderRecord/Author.php @@ -21,21 +21,11 @@ class Intonation_View_RenderRecord_Author extends Intonation_View_RenderRecord { - public function RenderRecord_Author($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Auteur principal : %s', - $this->view->titre, - $record->getAuteurPrincipal()); - return $html; - } + protected $_show_current_section = 'document_author'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('document_author' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function RenderRecord_Author($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderRecord/Description.php b/library/templates/Intonation/View/RenderRecord/Description.php index d03d98abe8606c9c0b397f4a37cfb00fc50fb525..842f3d5cbc1132b8424842ae7acd196c1626fe92 100644 --- a/library/templates/Intonation/View/RenderRecord/Description.php +++ b/library/templates/Intonation/View/RenderRecord/Description.php @@ -21,19 +21,11 @@ class Intonation_View_RenderRecord_Description extends Intonation_View_RenderRecord { - public function RenderRecord_Description($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Description', - $this->view->titre); - return $html; - } + protected $_show_current_section = 'description'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('description' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + + public function RenderRecord_Description($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderRecord/Items.php b/library/templates/Intonation/View/RenderRecord/Items.php index f51478ea9bc943a231a33f4f8fb5465fe59c2a47..e25a7cb188cfb81b48fd6ac10d439d7974f9e75c 100644 --- a/library/templates/Intonation/View/RenderRecord/Items.php +++ b/library/templates/Intonation/View/RenderRecord/Items.php @@ -21,19 +21,11 @@ class Intonation_View_RenderRecord_Items extends Intonation_View_RenderRecord { - public function renderRecord_Items($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Exemplaires', - $this->view->titre); - return $html; - } + + protected $_show_current_section = 'document_items'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('document_items' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function RenderRecord_Items($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderRecord/Media.php b/library/templates/Intonation/View/RenderRecord/Media.php index d76c6d46c25f2f26b2b3c1fcfdc48d86ffdbe6cb..d0cf4c856f3a1e4562cc27d27bff9e4161ee3e60 100644 --- a/library/templates/Intonation/View/RenderRecord/Media.php +++ b/library/templates/Intonation/View/RenderRecord/Media.php @@ -21,19 +21,11 @@ class Intonation_View_RenderRecord_Media extends Intonation_View_RenderRecord { - public function RenderRecord_Media($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Médias', $this->view->titre); - return $html; - } + protected $_show_current_section = 'document_media'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('document_media' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function RenderRecord_Media($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderRecord/Related.php b/library/templates/Intonation/View/RenderRecord/Related.php index 7a5c99bdd237b12c799a265443a8f90444ae5e7b..8160f36f6f9c65620456423ca22a2a0cbe81282a 100644 --- a/library/templates/Intonation/View/RenderRecord/Related.php +++ b/library/templates/Intonation/View/RenderRecord/Related.php @@ -22,19 +22,10 @@ class Intonation_View_RenderRecord_Related extends Intonation_View_RenderRecord { - public function RenderRecord_Related($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Voir aussi', $this->view->titre); - - return $html; - } + protected $_show_current_section = 'related'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('related' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function RenderRecord_Related($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderRecord/Reviews.php b/library/templates/Intonation/View/RenderRecord/Reviews.php index b974a4d2a5d21e631496ac2bcae7d9e2824dd9af..6d00a56c6f560657e4bda65306490189963d6bc9 100644 --- a/library/templates/Intonation/View/RenderRecord/Reviews.php +++ b/library/templates/Intonation/View/RenderRecord/Reviews.php @@ -22,19 +22,10 @@ class Intonation_View_RenderRecord_Reviews extends Intonation_View_RenderRecord { - public function RenderRecord_Reviews($record) { - $html = $this->renderRecord($record); - $this->view->titre = $this->_('%s : Avis', $this->view->titre); - - return $html; - } + protected $_show_current_section = 'reviews'; - protected function _showSections($sections) { - foreach($sections as $section) - if ('reviews' == $section->getClass()) - return $section - ->beActive() - ->beVisible(); + public function RenderRecord_Reviews($record) { + return $this->_renderSection($record); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/RenderWall.php b/library/templates/Intonation/View/RenderWall.php index 5a0bad18cf73373ad185a2e65320d13fb8305612..d5dcdfabfa8dd2731b8646bef0df118d7d96c2f4 100644 --- a/library/templates/Intonation/View/RenderWall.php +++ b/library/templates/Intonation/View/RenderWall.php @@ -22,16 +22,26 @@ class Intonation_View_RenderWall extends ZendAfi_View_Helper_BaseHelper { public function renderWall($collection, $callback) { + $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)); + $html = array_filter($collection ->injectInto([], function($html, $element) use ($callback) { - $html [] = $callback($element); + $html [] = $this->view->div(['class' => 'masonry-brick'], + $this->view->div(['class' => 'masonry-content'], + $callback($element))); return $html; })); return $this->_tag('div', implode($html), - ['class' => 'card-columns']); + ['class' => 'masonry', + 'id' => $id]); } } \ No newline at end of file diff --git a/library/templates/Intonation/View/Search/Result.php b/library/templates/Intonation/View/Search/Result.php index ba7a69255fdac013e8b54e42279c90b10e058412..515f72d0ef105e24247aa7415c022e2a077c96e3 100644 --- a/library/templates/Intonation/View/Search/Result.php +++ b/library/templates/Intonation/View/Search/Result.php @@ -43,9 +43,12 @@ class Intonation_View_Search_Result extends ZendAfi_View_Helper_BaseHelper { return $this->view->cardifyHorizontal($wrapped); }); - $facets = $this->view->renderExpandable($this->view->search_Facets($search->fetchFacetsAndTags($search->getSettings())['facettes'], - $search->getSettings(), - $search->getCriteresRecherche())); + $facets_column_content = $this->view->grid(implode([$this->view->Search_Suggests($search), + $this->view->search_Facets($search->fetchFacetsAndTags($search->getSettings())['facettes'], + $search->getSettings(), + $search->getCriteresRecherche())])); + + $facets = $this->view->renderExpandable($facets_column_content); $criteria = $search->getCriteresRecherche(); diff --git a/library/templates/Intonation/View/Search/Suggests.php b/library/templates/Intonation/View/Search/Suggests.php new file mode 100644 index 0000000000000000000000000000000000000000..6ef4dffc2022152836f700d119a461b23d636aaa --- /dev/null +++ b/library/templates/Intonation/View/Search/Suggests.php @@ -0,0 +1,47 @@ +<?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 Intonation_View_Search_Suggests extends ZendAfi_View_Helper_Suggests { + public function search_Suggests($search) { + return $this->suggests($search); + } + + + protected function _renderSuggests($links) { + $html = [$this->view->div(['class' => 'col-12'], + $this->view->tag('b', + $this->_('Suggestions'))), + $this->view->div(['class' => 'col-12'], + $this->_tag('ul', + implode($links), + ['class' => 'list-group border-0 mb-2']))]; + + return $this->view->grid(implode($html)); + } + + + protected function _renderSuggestHTML($field) { + return $this->_tag('li', + $field->renderOn($this->view, ['class' => 'd-block']), + ['class' => 'list-group-item border-0 py-1 px-1 my-1']); + } +} diff --git a/library/templates/Muscle/Assets/css/muscle.css b/library/templates/Muscle/Assets/css/muscle.css new file mode 100644 index 0000000000000000000000000000000000000000..8e83c17548d91c98d5eabea03ef326dba5a04ab3 --- /dev/null +++ b/library/templates/Muscle/Assets/css/muscle.css @@ -0,0 +1,299 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto:100,400,700'); + +:root { + --muscle-red: #d21f28; + --muscle-white: #fff; + --muscle-black: #011; + --muscle-text-color: #333; + --muscle-grey: #aaa; + --muscle-badge: #777; + --muscle-transparent: transparent; + --front-card-background: linear-gradient(to left, rgba(0,0,0,0), #fff, #eee); + --front-card-footer-background: linear-gradient(rgba(0, 0, 0, 0), #fff, #eee); +} + +@font-face { + font-family: 'phenomena'; + src: url('../fonts/phenomena-regular-webfont.eot'); + src: url('../fonts/phenomena-regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/phenomena-regular-webfont.woff2') format('woff2'), + url('../fonts/phenomena-regular-webfont.woff') format('woff'), + url('../fonts/phenomena-regular-webfont.ttf') format('truetype'), + url('../fonts/phenomena-regular-webfont.svg#robotocondensed') format('svg'); + font-weight: normal; + font-style: normal; +} + +body { + font-family: 'Roboto'; + font-size: 16px; + background: var(--muscle-white); + color: var(--muscle-text-color); +} + +.ui-widget *:not(i) { + font-family: 'Roboto'; + font-size: 16px; +} + +.widget.login .dropdown-toggle, +.nav nav .nav-link, +.widget-header, +h1, +h2, +h3 { + font-family: 'phenomena'; + font-size: 2em; + font-weight: bold; +} + +header { + background: url(../images/banner.jpg); + background-position: top 3em center; + background-repeat: no-repeat; + background-size: contain; +} + +.widget.justify-content-end * { + justify-content: end; + text-align: right; +} + +.widget.justify-content-start * { + justify-content: 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 { + color: var(--muscle-black) !important; +} + +.login .dropdown-toggle, +.login .dropdown-menu { + background: var(--muscle-red); + color: var(--muscle-white); +} + +.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 { + background-color: var(--muscle-white); + line-height: 1em; + color: var(--muscle-black); + 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'] { + background-color: var(--muscle-red); + color: var(--muscle-white); +} + +.rech_simple.widget ::placeholder { + color: var(--muscle-grey); +} + +.widget.card, +.widget-header, +.breadcrumb, +nav { + background: var(--muscle-white); +} + +.nav nav .nav-link { + color: var(--muscle-black); + background: var(--muscle-transparent); + font-size: 1.8em; + border-right: 1px solid var(--muscle-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(--muscle-grey) 0px 0px 5px; +} + +body, +#site_web_wrapper { + background: var(--muscle-white); +} + +footer { + font-size: 0.875em; +} + +footer .nav-link { + color: var(--muscle-red); + background: var(--muscle-transparent); + border-right: 1px solid var(--muscle-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; + background: var(--muscle-white) !important; + color: var(--muscle-black) !important; +} + +.widget.login * { + color: var(--muscle-white); +} + +.widget.login input { + color: var(--muscle-black); +} + +.widget.login form * { + text-align: left; +} + +.widget.login .text-secondary { + color: var(--muscle-white) !important; +} + +.widget.login .dropdown-toggle { + font-size: 20px; + margin-right: 0; +} + +.widget.login .btn-primary { + background: var(--muscle-black); + color: var(--muscle-white) !important; + padding: 5px 15px; +} + +.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 { + color: var(--muscle-red) !important; + background: var(--muscle-transparent); +} + +.widget-footer { + text-align: right; +} + +.badge-group .badge { + color: var(--muscle-white) !important; + background: var(--muscle-grey) !important; +} + +.badge-group a.badge { + background: var(--muscle-badge) !important; +} + +a, +a:hover { + color: var(--muscle-black); +} + +a.text-primary, +a.text-primary:hover { + color: var(--muscle-black) !important; + background: var(--muscle-transparent) !important; +} + +.carousel-item .card-footer { + margin: 0 1rem; +} + +.widget > .card-footer, +.card-footer { + background: transparent; +} + +.masonry-content > .card > .card-footer { + padding: 5px; + background: var(--front-card-footer-background); +} + +.list-group-item.active, +.nav-tabs, +.border-primary { + border-color: var(--muscle-red) !important; +} + +.nav-tabs .nav-item { + border-bottom: 1px solid transparent; +} + +.card-footer { + border-top: none; +} \ No newline at end of file diff --git a/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.eot b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..d5d3a2169d969f71d416347e4bb9ad240597b88e Binary files /dev/null and b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.eot differ diff --git a/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.svg b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.svg new file mode 100644 index 0000000000000000000000000000000000000000..4c4a8bcf254faaa93db1c9b77a7b2dd617639783 --- /dev/null +++ b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.svg @@ -0,0 +1,556 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> +<metadata></metadata> +<defs> +<font id="phenomenaregular" horiz-adv-x="929" > +<font-face units-per-em="2048" ascent="1638" descent="-410" /> +<missing-glyph horiz-adv-x="466" /> +<glyph horiz-adv-x="0" /> +<glyph horiz-adv-x="682" /> +<glyph unicode=" " horiz-adv-x="466" /> +<glyph unicode="	" horiz-adv-x="466" /> +<glyph unicode=" " horiz-adv-x="466" /> +<glyph unicode="!" horiz-adv-x="466" d="M143 70q0 38 26 64t64 26q37 0 64 -26t27 -64q0 -37 -27 -63.5t-64 -26.5q-38 0 -64 26.5t-26 63.5zM172 299v1114q0 9 6 15t15 6h81q9 0 15 -6t6 -15v-1114q0 -20 -21 -20h-81q-21 0 -21 20z" /> +<glyph unicode=""" horiz-adv-x="434" d="M37 1098l18 315q0 21 23 21h88q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21zM242 1098l18 315q0 21 23 21h88q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21z" /> +<glyph unicode="#" horiz-adv-x="1112" d="M33 410l14 59q4 18 23 18h192l100 437h-190q-22 0 -18 22l14 60q4 18 22 18h195l90 391q4 19 23 19h69q21 0 17 -23l-88 -387h262l90 391q4 19 22 19h72q20 0 16 -23l-88 -387h193q10 0 15 -6.5t3 -16.5l-14 -59q-4 -18 -23 -18h-196l-100 -437h194q22 0 16 -22l-14 -59 q-4 -19 -22 -19h-197l-84 -369q-4 -18 -23 -18h-71q-21 0 -17 23l82 364h-262l-84 -369q-4 -18 -22 -18h-70q-20 0 -16 23l82 364h-191q-23 0 -16 23zM373 487h262l100 437h-262z" /> +<glyph unicode="$" horiz-adv-x="831" d="M74 328q0 20 20 20h82q21 0 21 -20q5 -110 63 -172t158 -62q103 0 160 57t57 158q0 71 -30.5 134.5t-79 113.5t-107 98.5t-117.5 99t-107.5 104.5t-79 125.5t-30.5 152.5q0 130 76.5 215t204.5 100v135q0 21 20 21h51q9 0 15 -6t6 -15v-135q125 -14 200.5 -103.5 t81.5 -242.5q0 -21 -20 -21h-82q-9 0 -15 6t-6 15q-9 233 -202 233q-97 0 -152 -53.5t-55 -148.5q0 -67 30.5 -127t79 -108t107 -95.5t117.5 -99t107.5 -107t79 -130.5t30.5 -161q0 -139 -82 -227.5t-219 -99.5v-136q0 -20 -21 -20h-51q-20 0 -20 20v138 q-130 17 -207.5 108.5t-83.5 235.5z" /> +<glyph unicode="%" horiz-adv-x="1159" d="M51 985v285q0 77 51.5 129.5t126.5 52.5q74 0 125.5 -53t51.5 -129v-285q0 -76 -51.5 -128t-125.5 -52q-75 0 -126.5 52t-51.5 128zM53 16l934 1407q14 17 27 17h73q11 0 18 -7t1 -16l-934 -1407q-10 -16 -27 -16h-73q-11 0 -18 6.5t-1 15.5zM152 985q0 -37 21.5 -60.5 t55.5 -23.5q32 0 54 24t22 60v285q0 38 -21.5 62t-54.5 24q-34 0 -55.5 -24t-21.5 -62v-285zM754 162v284q0 77 51.5 130t126.5 53q74 0 125 -53.5t51 -129.5v-284q0 -76 -51 -128t-125 -52q-75 0 -126.5 52t-51.5 128zM854 162q0 -37 22 -60.5t56 -23.5q32 0 54 24t22 60 v284q0 38 -21.5 62t-54.5 24q-34 0 -56 -24t-22 -62v-284z" /> +<glyph unicode="&" horiz-adv-x="925" d="M100 307v168q0 83 39 153.5t105 108.5q-66 38 -105 108.5t-39 153.5v88q0 101 34 182t110 133t184 52q83 0 148.5 -30.5t106.5 -83.5t63 -120t24 -145q0 -20 -20 -20h-82q-21 0 -21 20q-8 264 -219 264q-58 0 -99.5 -20.5t-63.5 -57t-32 -79.5t-10 -95v-98q0 -82 60 -138 t149 -56h406q20 0 20 -21v-74q0 -20 -20 -20h-88v-625q0 -29 -16.5 -45t-45.5 -16h-260q-139 0 -233.5 90.5t-94.5 222.5zM223 307q0 -85 58 -141.5t147 -56.5h199v571h-195q-92 0 -150.5 -55.5t-58.5 -139.5v-178z" /> +<glyph unicode="'" horiz-adv-x="215" d="M35 1098l18 315q0 21 23 21h88q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21z" /> +<glyph unicode="(" horiz-adv-x="475" d="M127 88v1260q0 139 81 231t206 100q20 0 20 -20v-74q0 -19 -20 -22q-72 -6 -118 -64.5t-46 -150.5v-1260q0 -92 46 -150.5t118 -66.5q20 -3 20 -23v-73q0 -21 -20 -21q-125 8 -206 101t-81 233z" /> +<glyph unicode=")" horiz-adv-x="475" d="M41 -152q0 20 20 23q72 8 118 66.5t46 150.5v1260q0 92 -46 150.5t-118 64.5q-20 3 -20 22v74q0 20 20 20q125 -8 206 -100t81 -231v-1260q0 -140 -81 -233t-206 -101q-20 0 -20 21v73z" /> +<glyph unicode="*" horiz-adv-x="634" d="M76 1284l14 49q6 22 27 15l153 -52v162q0 9 6 15t15 6h51q20 0 20 -21v-162l156 50q19 6 25 -13l16 -47q6 -19 -14 -26l-156 -50l96 -133q11 -16 -4 -28l-41 -31q-17 -13 -28 4l-97 133l-94 -131q-11 -17 -28 -4l-43 29q-15 12 -5 28l97 133l-154 50q-17 6 -12 24z" /> +<glyph unicode="+" horiz-adv-x="942" d="M102 700v70q0 9 6 15t15 6h293v299q0 20 20 20h70q20 0 20 -20v-299h293q9 0 15 -6t6 -15v-70q0 -20 -21 -20h-293v-299q0 -21 -20 -21h-70q-20 0 -20 21v299h-293q-21 0 -21 20z" /> +<glyph unicode="," horiz-adv-x="208" d="M31 -190l18 315q0 20 23 20h88q22 0 18 -22l-57 -316q-3 -18 -23 -18h-49q-18 0 -18 21z" /> +<glyph unicode="-" horiz-adv-x="581" d="M35 489v74q0 21 20 21h471q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-471q-20 0 -20 20z" /> +<glyph unicode="." horiz-adv-x="249" d="M31 74q0 40 27 67t67 27q39 0 66.5 -27.5t27.5 -66.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5z" /> +<glyph unicode="/" horiz-adv-x="653" d="M8 25l516 1392q6 17 23 17h82q10 0 14.5 -7t1.5 -18l-516 -1393q-5 -16 -23 -16h-81q-10 0 -15 7t-2 18z" /> +<glyph unicode="0" horiz-adv-x="831" d="M102 297v840q0 135 91 226t223 91t222.5 -91t90.5 -226v-840q0 -135 -90.5 -226t-222.5 -91t-223 91t-91 226zM225 297q0 -15 4 -39l324 1022q-53 59 -137 59q-82 0 -136.5 -57.5t-54.5 -144.5v-840zM279 154q57 -60 137 -60q82 0 136 57.5t54 145.5v840q0 25 -2 37z" /> +<glyph unicode="1" horiz-adv-x="481" d="M31 1339v74q0 21 20 21h185q49 0 75.5 -26.5t26.5 -76.5v-1311q0 -20 -21 -20h-81q-21 0 -21 20v1299h-164q-20 0 -20 20z" /> +<glyph unicode="2" horiz-adv-x="770" d="M74 61v41q0 103 27.5 198t71.5 168.5t97 141.5t106.5 130t97.5 121.5t71.5 128.5t27.5 140q0 92 -50 150.5t-138 58.5q-87 0 -137.5 -60t-54.5 -173q0 -9 -6 -15t-15 -6h-78q-20 0 -20 21q6 155 91.5 251.5t219.5 96.5q139 0 224 -93t85 -231q0 -83 -27.5 -161.5 t-71 -143t-96.5 -128.5t-106.5 -128.5t-97 -131.5t-71 -150t-27.5 -172h479q20 0 20 -21v-74q0 -20 -20 -20h-541q-61 0 -61 61z" /> +<glyph unicode="3" horiz-adv-x="786" d="M72 332q0 20 20 20h82q21 0 21 -20q4 -120 53.5 -179t134.5 -59q88 0 138 60.5t50 164.5v228q0 113 -60 178.5t-159 65.5h-76q-20 0 -20 20v20q0 19 10 39l252 449h-405q-21 0 -21 20v76q0 9 6 15t15 6l536 -2q13 0 22 -9t9 -22v-17q0 -20 -10 -38l-246 -455l-4 -8 q132 -17 203 -109.5t71 -228.5v-228q0 -152 -86.5 -245.5t-224.5 -93.5q-134 0 -219.5 93.5t-91.5 258.5z" /> +<glyph unicode="4" horiz-adv-x="813" d="M41 483v21q0 40 10 74l287 839q7 17 24 17h84q11 0 15.5 -6.5t1.5 -16.5l-293 -870h352v483q0 20 21 20h82q20 0 20 -20v-483h98q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-98v-406q0 -20 -20 -20h-82q-21 0 -21 20v406h-420q-61 0 -61 57z" /> +<glyph unicode="5" horiz-adv-x="806" d="M96 332q0 20 21 20h82q20 0 20 -20q4 -118 52.5 -178t136.5 -60q90 0 139 61t49 169v311q0 95 -53.5 154t-139.5 59q-71 0 -118 -43.5t-54 -118.5q-3 -39 -43 -39h-43q-41 0 -41 41v690q0 29 16.5 45.5t45.5 16.5h510q20 0 20 -21v-73q0 -21 -20 -21h-449v-442 q77 80 189 80q128 0 215.5 -93t87.5 -233v-313q0 -155 -85 -249.5t-226 -94.5q-138 0 -222 93t-90 259z" /> +<glyph unicode="6" horiz-adv-x="823" d="M102 299v825q0 144 88.5 237t225.5 93q133 0 220 -90t93 -238q0 -20 -20 -20h-82q-21 0 -21 20q-6 100 -57.5 156.5t-132.5 56.5q-85 0 -138 -59t-53 -154v-270q80 86 201 86q125 0 214 -92t89 -227v-324q0 -136 -91 -227.5t-222 -91.5t-222.5 91.5t-91.5 227.5zM225 299 q0 -88 55.5 -146.5t135.5 -58.5t135 58.5t55 146.5v315q0 94 -54.5 153.5t-135.5 59.5t-136 -59.5t-55 -153.5v-315z" /> +<glyph unicode="7" horiz-adv-x="669" d="M31 1339v74q0 21 20 21h508q51 0 51 -45q0 -37 -8 -68l-319 -1303q-3 -18 -23 -18h-86q-23 0 -16 23l319 1296h-426q-20 0 -20 20z" /> +<glyph unicode="8" horiz-adv-x="839" d="M96 307v154q0 99 43.5 169.5t120.5 108.5q-64 42 -101.5 111t-37.5 151v146q0 131 83.5 219t215.5 88q133 0 216 -88t83 -219v-146q0 -82 -37.5 -151t-101.5 -111q77 -38 120 -108.5t43 -169.5v-154q0 -141 -94 -234t-229 -93t-229.5 93t-94.5 234zM219 307 q0 -91 58.5 -152t142.5 -61t142.5 61t58.5 152v160q0 94 -58 153.5t-143 59.5t-143 -59.5t-58 -153.5v-160zM244 995q0 -85 50 -142.5t126 -57.5t126 57.5t50 142.5v152q0 81 -48.5 136.5t-127.5 55.5t-127.5 -55.5t-48.5 -136.5v-152z" /> +<glyph unicode="9" horiz-adv-x="825" d="M96 307q0 9 6 15t15 6h82q20 0 20 -21q6 -100 58 -156.5t133 -56.5q85 0 137.5 59t52.5 154v271q-80 -86 -201 -86q-125 0 -214 92t-89 227v324q0 136 91.5 227.5t222.5 91.5t222 -91.5t91 -227.5v-826q0 -144 -88 -236.5t-225 -92.5q-133 0 -220.5 89.5t-93.5 237.5z M219 819q0 -94 55 -153.5t136 -59.5t135.5 59.5t54.5 153.5v316q0 88 -55 146t-135 58t-135.5 -58t-55.5 -146v-316z" /> +<glyph unicode=":" horiz-adv-x="299" d="M25 74q0 40 27 67t67 27q39 0 66.5 -27.5t27.5 -66.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5zM25 784q0 40 27 67.5t67 27.5q39 0 66.5 -27.5t27.5 -67.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5z" /> +<glyph unicode=";" horiz-adv-x="270" d="M41 784q0 40 27 67.5t67 27.5q39 0 66.5 -27.5t27.5 -67.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5zM55 -190l19 315q0 20 22 20h88q10 0 15.5 -6.5t3.5 -15.5l-58 -316q-3 -18 -22 -18h-49q-19 0 -19 21z" /> +<glyph unicode="<" horiz-adv-x="778" d="M164 684v102q0 14 10 17l506 276q14 7 25.5 0t11.5 -22v-70q0 -13 -10 -16l-431 -236l431 -235q10 -3 10 -17v-69q0 -15 -12 -22.5t-25 -0.5l-506 277q-10 3 -10 16z" /> +<glyph unicode="=" horiz-adv-x="819" d="M41 532v70q0 21 20 21h697q20 0 20 -21v-70q0 -20 -20 -20h-697q-20 0 -20 20zM41 834v69q0 21 20 21h697q20 0 20 -21v-69q0 -21 -20 -21h-697q-20 0 -20 21z" /> +<glyph unicode=">" horiz-adv-x="675" d="M61 414v69q0 13 11 17l430 235l-430 236q-11 4 -11 16v70q0 15 11.5 22t25.5 0l506 -276q10 -3 10 -17v-102q0 -13 -10 -16l-506 -277q-13 -7 -25 0.5t-12 22.5z" /> +<glyph unicode="?" horiz-adv-x="655" d="M0 1106q6 158 94 253t223 95q138 0 228 -97.5t90 -248.5q0 -84 -21.5 -154.5t-53 -116.5t-69 -95t-69 -91t-53 -105t-21.5 -136v-111q0 -20 -20 -20h-82q-21 0 -21 20v125q0 69 16 128.5t41 103t55.5 83.5t61.5 78.5t56 79.5t41 95t16 116q0 104 -54.5 167.5t-140.5 63.5 q-84 0 -137 -61t-57 -172q0 -9 -6 -15t-15 -6h-82q-20 0 -20 21zM201 70q0 38 26 64t64 26q37 0 63.5 -26t26.5 -64q0 -37 -26.5 -63.5t-63.5 -26.5q-38 0 -64 26.5t-26 63.5z" /> +<glyph unicode="@" horiz-adv-x="1259" d="M92 217v473q0 189 115.5 302.5t304.5 113.5h111q126 0 202 -76.5t76 -202.5v-426q0 -117 -73 -187.5t-195 -70.5q-131 0 -210 78t-79 209q1 134 77 211.5t202 77.5h168v108q0 77 -46.5 124.5t-121.5 47.5h-111q-140 0 -224.5 -84t-84.5 -225v-473q0 -142 84.5 -228.5 t224.5 -86.5h236q140 0 224.5 86.5t84.5 228.5v803q0 141 -85 227t-224 86h-359q-20 0 -20 21v65q0 21 20 21h359q189 0 304 -115.5t115 -304.5v-803q0 -190 -115 -306t-304 -116h-236q-189 0 -304.5 116t-115.5 306zM455 430q0 -83 49 -131.5t129 -48.5q71 0 114.5 42 t43.5 109v211h-168q-75 0 -120 -47.5t-48 -134.5z" /> +<glyph unicode="A" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448z" /> +<glyph unicode="B" horiz-adv-x="878" d="M127 57v1053q0 154 87 248t228 94q147 0 236.5 -94t89.5 -248v-98q0 -103 -46 -177.5t-124 -97.5q94 -29 149.5 -109.5t55.5 -187.5v-100q0 -155 -91.5 -249.5t-242.5 -94.5h-281q-28 0 -44.5 16.5t-16.5 44.5zM250 111h219q100 0 155.5 61t55.5 168v100q0 108 -56 169 t-155 61h-219v-559zM250 784h190q97 0 151 60.5t54 167.5v98q0 107 -53 167t-150 60q-91 0 -141.5 -60t-50.5 -167v-326z" /> +<glyph unicode="C" horiz-adv-x="837" d="M100 332v770q0 158 91.5 255t242.5 97q145 0 237.5 -104.5t96.5 -274.5q0 -20 -20 -20h-82q-21 0 -21 20q-4 126 -60.5 195t-150.5 69q-100 0 -155.5 -62.5t-55.5 -174.5v-770q0 -113 55.5 -175.5t155.5 -62.5q101 0 159.5 73t61.5 202q0 20 21 20h82q20 0 20 -18 q-4 -177 -98.5 -284t-245.5 -107t-242.5 97t-91.5 255z" /> +<glyph unicode="D" horiz-adv-x="915" d="M143 57v1319q0 29 16.5 45.5t45.5 16.5h276q152 0 243 -101t91 -258v-727q0 -155 -92 -255.5t-242 -100.5h-276q-29 0 -45.5 16t-16.5 45zM266 111h215q95 0 153 67.5t58 173.5v727q0 108 -57 176t-154 68h-215v-1212z" /> +<glyph unicode="E" horiz-adv-x="737" d="M100 348v737q0 151 94 252t240 101h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-93 0 -152 -68t-59 -170v-301h375q20 0 20 -20v-74q0 -20 -20 -20h-375v-322q0 -102 59 -169.5t152 -67.5h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-146 0 -240 100.5t-94 251.5z " /> +<glyph unicode="F" horiz-adv-x="700" d="M127 20v1061q0 151 94 252t240 101h178q20 0 20 -21v-74q0 -20 -20 -20h-178q-93 0 -152 -68t-59 -170v-317h348q20 0 20 -21v-73q0 -21 -20 -21h-348v-629q0 -20 -21 -20h-82q-20 0 -20 20z" /> +<glyph unicode="G" horiz-adv-x="876" d="M100 352v731q0 165 94 268t250 103q148 0 241 -98t99 -250q0 -21 -20 -21h-82q-20 0 -20 21q-6 103 -64.5 168t-153.5 65q-102 0 -161.5 -70t-59.5 -188v-729q0 -116 63 -187t163 -71q99 0 162 68t63 170v317h-193q-20 0 -20 21v73q0 21 20 21h254q29 0 45.5 -16.5 t16.5 -45.5v-370q0 -151 -98 -251.5t-250 -100.5q-154 0 -251.5 104t-97.5 268z" /> +<glyph unicode="H" horiz-adv-x="942" d="M143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-629h410v629q0 21 20 21h82q9 0 15 -6t6 -15v-1393q0 -20 -21 -20h-82q-20 0 -20 20v652h-410v-652q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="I" horiz-adv-x="409" d="M143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-1393q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="J" horiz-adv-x="825" d="M31 369q0 20 20 20h82q21 0 21 -20q5 -126 60 -200.5t153 -74.5q100 0 154 70.5t54 193.5v1055q0 9 6 15t15 6h82q20 0 20 -21v-1055q0 -173 -87 -275.5t-246 -102.5q-149 0 -238.5 107.5t-95.5 281.5z" /> +<glyph unicode="K" horiz-adv-x="913" d="M143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-629h209l213 633q7 17 25 17h82q23 0 16 -23l-221 -647q102 -35 158.5 -126.5t56.5 -219.5v-398q0 -20 -21 -20h-82q-20 0 -20 20v398q0 113 -58 182.5t-153 69.5h-205v-650q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="L" horiz-adv-x="690" d="M127 346v1067q0 21 20 21h82q9 0 15 -6t6 -15v-1067q0 -101 57 -168t148 -67h184q20 0 20 -21v-74q0 -20 -20 -20h-184q-146 0 -237 100t-91 250z" /> +<glyph unicode="M" horiz-adv-x="1400" d="M127 20v1061q0 173 83.5 273t233.5 100q95 0 153 -44t103 -128q45 82 104 127t152 45q149 0 233.5 -100t84.5 -273v-1061q0 -20 -21 -20h-82q-20 0 -20 20v1061q0 125 -50 191.5t-145 66.5q-89 0 -141.5 -67.5t-52.5 -190.5v-1061q0 -20 -21 -20h-82q-20 0 -20 20v1061 q0 122 -54 190t-141 68q-96 0 -145 -66t-49 -192v-1061q0 -20 -21 -20h-82q-20 0 -20 20z" /> +<glyph unicode="N" d="M127 20v1065q0 163 93 266t245 103t245 -103t93 -266v-1065q0 -20 -21 -20h-82q-20 0 -20 20v1065q0 114 -58.5 184t-156.5 70t-156.5 -70t-58.5 -184v-1065q0 -20 -21 -20h-82q-20 0 -20 20z" /> +<glyph unicode="O" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72 t-62.5 -192v-713z" /> +<glyph unicode="P" horiz-adv-x="858" d="M127 20v1065q0 164 90 266.5t242 102.5t243 -103t91 -266v-221q0 -147 -91.5 -238t-242.5 -91h-209v-515q0 -20 -21 -20h-82q-20 0 -20 20zM250 649h209q96 0 153.5 58.5t57.5 156.5v221q0 115 -57.5 184.5t-153.5 69.5t-152.5 -69.5t-56.5 -184.5v-436z" /> +<glyph unicode="Q" horiz-adv-x="911" d="M100 340v754q0 155 98.5 256.5t252.5 101.5t252 -101.5t98 -256.5v-754q0 -137 -78 -234l82 -81q6 -6 6 -14.5t-6 -14.5l-43 -43q-6 -6 -14.5 -6t-14.5 6l-84 86q-85 -57 -198 -57q-154 0 -252.5 101.5t-98.5 256.5zM225 340q0 -106 63.5 -175t162.5 -69q59 0 112 29 l-92 94q-6 6 -6 14.5t6 14.5l43 43q6 6 14.5 6t14.5 -6l94 -94q39 61 39 143v754q0 106 -63 174.5t-162 68.5t-162.5 -68.5t-63.5 -174.5v-754z" /> +<glyph unicode="R" horiz-adv-x="899" d="M127 20v1065q0 162 93.5 265.5t242.5 103.5t242.5 -103.5t93.5 -265.5v-151q0 -123 -57 -211.5t-150 -126.5l235 -571q4 -10 -0.5 -17.5t-15.5 -7.5h-90q-18 0 -23 16l-221 555h-227v-551q0 -20 -21 -20h-82q-20 0 -20 20zM250 686h211q96 0 155.5 69.5t59.5 178.5v151 q0 114 -59 184t-154 70t-154 -70t-59 -184v-399z" /> +<glyph unicode="S" horiz-adv-x="831" d="M74 369q0 20 20 20h82q21 0 21 -20q5 -135 61 -205t160 -70q107 0 162 54.5t55 160.5q0 71 -30.5 134.5t-79 113.5t-107 98.5t-117.5 99t-107.5 104.5t-79 125.5t-30.5 152.5q0 143 90.5 230t239.5 87q139 0 228 -104t97 -275q0 -20 -20 -20h-82q-21 0 -21 20 q-12 264 -202 264q-101 0 -154 -51t-53 -151q0 -67 30.5 -127t79 -108t107 -95.5t117.5 -99t107.5 -107t79 -130.5t30.5 -161q0 -149 -93 -239t-247 -90q-151 0 -245 107t-99 282z" /> +<glyph unicode="T" horiz-adv-x="716" d="M31 1339v74q0 21 20 21h615q20 0 20 -21v-74q0 -20 -20 -20h-246v-1299q0 -20 -21 -20h-82q-20 0 -20 20v1299h-246q-20 0 -20 20z" /> +<glyph unicode="U" d="M127 348v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -114 58.5 -184t156.5 -70t156.5 70t58.5 184v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -163 -93 -265.5t-245 -102.5t-245 102.5t-93 265.5z" /> +<glyph unicode="V" horiz-adv-x="786" d="M29 1411q-2 10 3 16.5t15 6.5h82q20 0 23 -19l241 -1280l242 1280q3 19 22 19h82q10 0 15.5 -7t3.5 -16l-262 -1362q-9 -55 -66 -55h-76q-53 0 -65 55z" /> +<glyph unicode="W" horiz-adv-x="1400" d="M127 352v1061q0 21 20 21h82q9 0 15 -6t6 -15v-1061q0 -125 49.5 -191.5t144.5 -66.5q89 0 142 67.5t53 190.5v1061q0 21 20 21h82q9 0 15 -6t6 -15v-1061q0 -122 53.5 -190t140.5 -68q96 0 145.5 66.5t49.5 191.5v1061q0 21 20 21h82q9 0 15 -6t6 -15v-1061 q0 -173 -84 -272.5t-234 -99.5q-95 0 -153 44t-103 128q-45 -82 -104 -127t-152 -45q-149 0 -233 99.5t-84 272.5z" /> +<glyph unicode="X" horiz-adv-x="868" d="M100 20v410q0 206 174 297q-174 91 -174 297v389q0 9 6 15t15 6h82q20 0 20 -21v-389q0 -104 59 -173t152 -69t152 69t59 173v389q0 9 6 15t15 6h82q20 0 20 -21v-389q0 -206 -174 -297q174 -91 174 -297v-410q0 -20 -20 -20h-82q-21 0 -21 20v410q0 104 -59 172t-152 68 t-152 -68t-59 -172v-410q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="Y" horiz-adv-x="847" d="M90 815v598q0 9 6 15t15 6h82q20 0 20 -21v-598q0 -103 59 -171.5t152 -68.5t152 68.5t59 171.5v598q0 21 20 21h82q9 0 15 -6t6 -15v-598q0 -134 -75 -230t-198 -116v-449q0 -20 -20 -20h-82q-21 0 -21 20v449q-122 20 -197 116t-75 230z" /> +<glyph unicode="Z" horiz-adv-x="813" d="M76 61v41q0 44 14 76l526 1141h-477q-20 0 -20 20v74q0 21 20 21h535q58 0 61 -62l2 -41v-12q0 -33 -14 -64l-530 -1140h526q20 0 20 -21v-74q0 -20 -20 -20h-582q-61 0 -61 61z" /> +<glyph unicode="[" horiz-adv-x="512" d="M133 -184v1802q0 29 16.5 45t45.5 16h225q20 0 20 -20v-74q0 -20 -20 -20h-164v-1696h164q20 0 20 -21v-73q0 -21 -20 -21h-225q-29 0 -45.5 16.5t-16.5 45.5z" /> +<glyph unicode="\" horiz-adv-x="653" d="M8 1409q-3 11 2 18t15 7h81q17 0 23 -17l516 -1392q3 -11 -1.5 -18t-14.5 -7h-82q-18 0 -23 16z" /> +<glyph unicode="]" horiz-adv-x="501" d="M61 -152q0 9 6 15t15 6h164v1696h-164q-21 0 -21 20v74q0 20 21 20h225q29 0 45.5 -16t16.5 -45v-1802q0 -29 -16.5 -45.5t-45.5 -16.5h-225q-9 0 -15 6t-6 15v73z" /> +<glyph unicode="^" horiz-adv-x="606" d="M26.5 973.5q-3.5 6.5 0.5 17.5l211 428q6 15 24 15h100q19 0 25 -15l211 -428q4 -11 0.5 -17.5t-14.5 -6.5h-90q-19 0 -25 14l-156 330l-157 -330q-6 -14 -25 -14h-90q-11 0 -14.5 6.5z" /> +<glyph unicode="_" horiz-adv-x="757" d="M20 -39q0 9 6 15t15 6h676q20 0 20 -21v-72q0 -20 -20 -20h-676q-21 0 -21 20v72z" /> +<glyph unicode="a" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM195 299 q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5z" /> +<glyph unicode="b" horiz-adv-x="831" d="M113 301v1112q0 21 20 21h76q20 0 20 -21v-471q82 102 197 102q139 0 226 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-226 -90.5t-226 90.5t-87 230.5zM229 301q0 -94 53 -151.5t144 -57.5t144 57.5t53 151.5v422q0 94 -53 151.5t-144 57.5t-144 -57.5t-53 -151.5v-422z " /> +<glyph unicode="c" horiz-adv-x="786" d="M92 301v422q0 139 85 230t222 91q132 0 216 -84.5t92 -216.5q0 -20 -21 -20h-76q-20 0 -20 20q-6 86 -56.5 137.5t-134.5 51.5q-88 0 -139 -57.5t-51 -151.5v-422q0 -94 52 -151.5t142 -57.5q85 0 137 57t58 152q0 21 20 21h76q9 0 15 -6t6 -15q-8 -141 -93.5 -231 t-218.5 -90q-138 0 -224.5 91t-86.5 230z" /> +<glyph unicode="d" horiz-adv-x="831" d="M92 301v422q0 139 87 230t227 91q114 0 196 -102v471q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-1112q0 -140 -87 -230.5t-226 -90.5q-140 0 -227 91t-87 230zM209 301q0 -94 53 -151.5t144 -57.5t143.5 57.5t52.5 151.5v422q0 94 -52.5 151.5t-143.5 57.5t-144 -57.5 t-53 -151.5v-422z" /> +<glyph unicode="e" horiz-adv-x="796" d="M92 303v416q0 143 85.5 233t228.5 90q139 0 226 -89t87 -226q0 -129 -87 -214t-226 -85h-197v-125q0 -94 53 -151.5t144 -57.5q86 0 138.5 57.5t55.5 151.5q0 21 21 21h75q9 0 15 -6t6 -15q-4 -145 -90 -233t-221 -88q-141 0 -227.5 88t-86.5 233zM209 541h197 q91 0 143.5 51.5t52.5 134.5q0 91 -52.5 147t-143.5 56q-94 0 -145.5 -57t-51.5 -154v-178z" /> +<glyph unicode="f" horiz-adv-x="598" d="M31 934v70q0 20 20 20h127v66q0 161 91.5 255.5t234.5 94.5q20 0 20 -21v-69q0 -21 -20 -21q-97 0 -153 -60t-56 -179v-66h235q21 0 21 -20v-70q0 -9 -6 -15t-15 -6h-235v-893q0 -20 -21 -20h-75q-21 0 -21 20v893h-127q-20 0 -20 21z" /> +<glyph unicode="g" horiz-adv-x="831" d="M92 -109q0 9 6 15t15 6h75q21 0 21 -21q4 -98 56.5 -153t140.5 -55q92 0 144 55t52 153v232q-83 -103 -196 -103q-140 0 -227 91t-87 231v381q0 139 87 230t227 91q139 0 226 -90.5t87 -230.5v-832q0 -145 -86 -233t-227 -88q-137 0 -223.5 88t-90.5 233zM209 342 q0 -94 53 -151.5t144 -57.5t143.5 57.5t52.5 151.5v381q0 94 -52.5 151.5t-143.5 57.5t-144 -57.5t-53 -151.5v-381z" /> +<glyph unicode="h" horiz-adv-x="868" d="M133 20v1393q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-467q75 98 203 98q138 0 220.5 -91.5t82.5 -235.5v-697q0 -20 -21 -20h-76q-20 0 -20 20v697q0 98 -52 156.5t-145 58.5q-86 0 -139 -59t-53 -156v-697q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="i" horiz-adv-x="382" d="M111 1237q0 35 22 57.5t57 22.5q34 0 57 -22.5t23 -57.5q0 -33 -23.5 -56.5t-56.5 -23.5q-35 0 -57 23t-22 57zM133 20v984q0 20 21 20h75q21 0 21 -20v-984q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="j" horiz-adv-x="495" d="M0 -328q0 21 20 21h3q202 6 202 215v1096q0 20 21 20h76q20 0 20 -20v-1096q0 -150 -82 -238.5t-237 -89.5h-3q-20 0 -20 21v71zM203 1237q0 35 22.5 57.5t57.5 22.5q34 0 56.5 -22.5t22.5 -57.5q0 -33 -23 -56.5t-56 -23.5q-35 0 -57.5 23t-22.5 57z" /> +<glyph unicode="k" horiz-adv-x="819" d="M133 20v1393q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-825h139l229 422q8 14 25 14h86q11 0 16 -7t0 -18l-235 -426q100 -28 160.5 -106.5t60.5 -185.5v-261q0 -20 -20 -20h-76q-21 0 -21 20v261q0 89 -56.5 141.5t-147.5 52.5h-160v-455q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="l" horiz-adv-x="382" d="M133 20v1393q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-1393q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="m" horiz-adv-x="1280" d="M113 20v703q0 140 80.5 230.5t212.5 90.5q77 0 138.5 -41.5t96.5 -111.5q33 70 94.5 111.5t138.5 41.5q132 0 212.5 -90.5t80.5 -230.5v-703q0 -20 -20 -20h-76q-20 0 -20 20v703q0 94 -47 151.5t-130 57.5t-129.5 -57.5t-46.5 -151.5v-703q0 -20 -20 -20h-76 q-20 0 -20 20v703q0 94 -46.5 151.5t-129.5 57.5t-130 -57.5t-47 -151.5v-703q0 -20 -20 -20h-76q-20 0 -20 20z" /> +<glyph unicode="n" horiz-adv-x="835" d="M113 20v703q0 139 85 230t220 91t220 -91t85 -230v-703q0 -20 -21 -20h-75q-21 0 -21 20v703q0 95 -50.5 153t-137.5 58t-138 -58t-51 -153v-703q0 -20 -20 -20h-76q-20 0 -20 20z" /> +<glyph unicode="o" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422z" /> +<glyph unicode="p" horiz-adv-x="831" d="M113 -389v1112q0 140 87 230.5t226 90.5t226 -90.5t87 -230.5v-422q0 -138 -84 -229.5t-211 -91.5q-133 0 -215 102v-471q0 -21 -20 -21h-76q-20 0 -20 21zM229 301q0 -94 53 -151.5t144 -57.5t144 57.5t53 151.5v422q0 94 -53 151.5t-144 57.5t-144 -57.5t-53 -151.5 v-422z" /> +<glyph unicode="q" horiz-adv-x="831" d="M92 301v422q0 139 87 230t227 91q139 0 226 -90.5t87 -230.5v-1112q0 -9 -6 -15t-15 -6h-75q-9 0 -15 6t-6 15v471q-82 -102 -215 -102q-127 0 -211 91.5t-84 229.5zM209 301q0 -94 53 -151.5t144 -57.5t143.5 57.5t52.5 151.5v422q0 94 -52.5 151.5t-143.5 57.5 t-144 -57.5t-53 -151.5v-422z" /> +<glyph unicode="r" horiz-adv-x="575" d="M113 20v695q0 140 91 227.5t230 87.5h90q21 0 21 -20v-72q0 -20 -21 -20h-90q-92 0 -148.5 -54.5t-56.5 -148.5v-695q0 -20 -20 -20h-76q-20 0 -20 20z" /> +<glyph unicode="s" horiz-adv-x="784" d="M78 301q0 21 20 21h76q21 0 21 -21q9 -209 211 -209q90 0 137 44.5t47 119.5q0 44 -21.5 79t-57 57.5t-80.5 44.5t-92 39.5t-92 44.5t-80.5 57.5t-57 79.5t-21.5 110q0 115 82.5 195.5t212.5 80.5q147 0 225 -80t84 -221q0 -20 -20 -20h-76q-21 0 -21 20q-5 85 -52.5 137 t-133.5 52q-83 0 -133.5 -45.5t-50.5 -118.5q0 -42 21.5 -76t57 -55t80.5 -42.5t92 -39.5t92 -45t80.5 -58.5t57 -82t21.5 -113.5q0 -116 -84 -196t-217 -80q-147 0 -234.5 87t-93.5 234z" /> +<glyph unicode="t" horiz-adv-x="561" d="M31 934v70q0 20 20 20h127v266q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-266h174q20 0 20 -20v-70q0 -21 -20 -21h-174v-573q0 -231 172 -231h27q20 0 20 -21v-72q0 -20 -20 -20h-27q-137 0 -213 90.5t-76 253.5v573h-127q-20 0 -20 21z" /> +<glyph unicode="u" horiz-adv-x="835" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -95 51 -153t138 -58t137.5 58t50.5 153v703q0 20 21 20h75q21 0 21 -20v-703q0 -139 -85 -230t-220 -91t-220 91t-85 230z" /> +<glyph unicode="v" horiz-adv-x="737" d="M27 1001q-7 23 16 23h80q19 0 22 -18l224 -904l223 904q3 18 22 18h80q11 0 15.5 -6.5t1.5 -16.5l-246 -954q-12 -53 -70 -53h-53q-58 0 -70 53z" /> +<glyph unicode="w" horiz-adv-x="1280" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -94 47 -151.5t130 -57.5t129.5 57.5t46.5 151.5v703q0 20 20 20h76q20 0 20 -20v-703q0 -94 46.5 -151.5t129.5 -57.5t130 57.5t47 151.5v703q0 20 20 20h76q20 0 20 -20v-703q0 -140 -80.5 -230.5t-212.5 -90.5 q-77 0 -138.5 41.5t-94.5 111.5q-35 -70 -96.5 -111.5t-138.5 -41.5q-132 0 -212.5 90.5t-80.5 230.5z" /> +<glyph unicode="x" horiz-adv-x="794" d="M92 20v228q0 86 40 155t112 111q-72 40 -112 108.5t-40 155.5v226q0 20 21 20h75q21 0 21 -20v-226q0 -94 50.5 -151.5t137.5 -57.5t138 58t51 151v226q0 20 20 20h76q20 0 20 -20v-226q0 -87 -40 -155.5t-111 -108.5q72 -42 111.5 -110.5t39.5 -155.5v-228 q0 -20 -20 -20h-76q-20 0 -20 20v228q0 93 -51 151t-138 58t-137.5 -57.5t-50.5 -151.5v-228q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="y" horiz-adv-x="868" d="M113 -109q0 21 20 21h76q20 0 20 -21q3 -98 54.5 -153t140.5 -55q92 0 143 55t51 153v234q-82 -105 -194 -105q-138 0 -224.5 91t-86.5 231v662q0 20 20 20h76q20 0 20 -20v-662q0 -93 52.5 -151t142.5 -58t142 57.5t52 151.5v662q0 20 21 20h76q20 0 20 -20v-1113 q0 -145 -85.5 -233t-225.5 -88q-134 0 -219.5 88t-91.5 233z" /> +<glyph unicode="z" horiz-adv-x="722" d="M74 49v37q0 34 14 61l440 764h-417q-9 0 -15 6t-6 15v72q0 20 21 20h489q49 0 49 -49v-47q0 -35 -14 -62l-434 -753h428q20 0 20 -21v-72q0 -20 -20 -20h-506q-49 0 -49 49z" /> +<glyph unicode="{" horiz-adv-x="548" d="M41 682v86q0 20 18 23q67 21 109.5 70.5t42.5 129.5v361q0 134 82.5 226t204.5 101q20 0 20 -20v-74q0 -19 -20 -22q-71 -8 -117.5 -66t-46.5 -145v-361q0 -87 -37.5 -155.5t-103.5 -110.5q66 -42 103.5 -110.5t37.5 -155.5v-377q0 -87 46.5 -145t117.5 -66q20 -3 20 -23 v-73q0 -21 -20 -21q-122 9 -204.5 101t-82.5 227v377q0 80 -42.5 129.5t-109.5 70.5q-18 3 -18 23z" /> +<glyph unicode="|" horiz-adv-x="389" d="M133 -123v1741q0 20 21 20h82q20 0 20 -20v-1741q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="}" horiz-adv-x="548" d="M31 -152q0 20 20 23q71 8 117.5 66t46.5 145v377q0 87 37.5 155.5t103.5 110.5q-66 42 -103.5 110.5t-37.5 155.5v361q0 87 -46.5 145t-117.5 66q-20 3 -20 22v74q0 20 20 20q122 -9 204.5 -101t82.5 -226v-361q0 -80 42 -129.5t109 -70.5q19 -3 19 -23v-86 q0 -20 -19 -23q-67 -21 -109 -70.5t-42 -129.5v-377q0 -135 -82.5 -227t-204.5 -101q-20 0 -20 21v73z" /> +<glyph unicode="~" horiz-adv-x="870" d="M66 715q-9 15 2 28q81 105 186 105q65 0 186 -49t166 -49q79 0 131 75q15 22 27 0l39 -57q11 -15 0 -29q-78 -110 -189 -110q-65 0 -186 49t-166 49q-78 0 -131 -76q-16 -19 -29 0z" /> +<glyph unicode="¡" horiz-adv-x="446" d="M133 952q0 37 26 63.5t64 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-38 0 -64 26t-26 64zM162 -391v1114q0 20 20 20h82q21 0 21 -20v-1114q0 -9 -6 -15t-15 -6h-82q-20 0 -20 21z" /> +<glyph unicode="¢" horiz-adv-x="786" d="M92 301v422q0 127 71.5 214.5t190.5 102.5v138q0 20 21 20h51q20 0 20 -20v-136q116 -13 188.5 -95.5t80.5 -203.5q0 -20 -21 -20h-76q-20 0 -20 20q-6 86 -58 137.5t-137 51.5q-90 0 -142 -57.5t-52 -151.5v-422q0 -94 52 -151.5t142 -57.5q85 0 137 51.5t58 137.5 q0 20 20 20h76q21 0 21 -20q-8 -121 -80.5 -203.5t-188.5 -95.5v-136q0 -20 -20 -20h-51q-21 0 -21 20v138q-119 15 -190.5 102.5t-71.5 214.5z" /> +<glyph unicode="£" horiz-adv-x="946" d="M49 20v64q0 34 39 43q52 9 76 55t24 137v349h-112q-21 0 -21 20v74q0 20 21 20h112v320q0 152 92.5 252t241.5 100q147 0 239.5 -98t98.5 -250q0 -21 -20 -21h-82q-21 0 -21 21q-6 103 -64 168t-151 65q-95 0 -153 -67t-58 -170v-320h377q21 0 21 -20v-74q0 -20 -21 -20 h-377v-357q0 -122 -53 -188h608q9 0 15 -6t6 -15v-82q0 -20 -21 -20h-796q-21 0 -21 20z" /> +<glyph unicode="¤" horiz-adv-x="917" d="M76 262l94 113q-37 70 -37 162v180q0 92 37 162l-94 112q-13 16 4 29l47 41q16 13 29 -4l77 -92q88 82 226 82q137 0 225 -82l78 92q13 17 29 4l47 -41q17 -13 4 -29l-94 -110q36 -68 36 -164v-180q0 -96 -36 -164l94 -111q13 -16 -4 -29l-47 -40q-16 -13 -29 4l-78 92 q-88 -82 -225 -82q-138 0 -226 82l-77 -92q-13 -17 -29 -4l-47 40q-17 13 -4 29zM252 537q0 -100 55.5 -160t151.5 -60t151.5 60t55.5 160v180q0 100 -55.5 159.5t-151.5 59.5t-151.5 -59.5t-55.5 -159.5v-180z" /> +<glyph unicode="¥" horiz-adv-x="1040" d="M100 266v58q0 20 21 20h338v129h-338q-9 0 -15 6t-6 15v57q0 20 21 20h168q-47 41 -74 98.5t-27 118.5v625q0 9 6 15t15 6h82q20 0 20 -21v-625q0 -84 61 -143t148 -59q88 0 148.5 58.5t60.5 143.5v625q0 9 6 15t15 6h81q9 0 15 -6t6 -15v-625q0 -60 -27.5 -117.5 t-74.5 -99.5h170q20 0 20 -20v-57q0 -21 -20 -21h-338v-129h338q20 0 20 -20v-58q0 -20 -20 -20h-338v-226q0 -20 -21 -20h-82q-20 0 -20 20v226h-338q-21 0 -21 20z" /> +<glyph unicode="¦" horiz-adv-x="348" d="M113 -123v569q0 21 20 21h82q9 0 15 -6t6 -15v-569q0 -20 -21 -20h-82q-20 0 -20 20zM113 1049v569q0 20 20 20h82q21 0 21 -20v-569q0 -9 -6 -15t-15 -6h-82q-20 0 -20 21z" /> +<glyph unicode="§" horiz-adv-x="800" d="M74 760q0 68 42 124t115 87q-141 81 -141 223q0 107 82.5 182.5t214.5 75.5q138 0 214.5 -72.5t82.5 -183.5q0 -20 -20 -20h-82q-21 0 -21 20q-6 65 -50.5 103t-123.5 38q-76 0 -126 -38t-50 -105q0 -47 28.5 -83t74 -59.5t100.5 -45t110 -45.5t100.5 -53.5t74 -77.5 t28.5 -109q0 -172 -166 -242q144 -92 144 -241q0 -107 -82.5 -181.5t-214.5 -74.5q-140 0 -225 78.5t-93 197.5q0 9 6 15t15 6h82q20 0 20 -21q6 -76 54 -119t141 -43q85 0 129.5 39t44.5 103q0 51 -28 89t-73 62t-99 45t-108 47t-99 59t-73 89.5t-28 130.5zM195 743 q0 -77 70 -129t169 -71q73 8 122.5 56.5t49.5 119.5q0 45 -39 85t-93.5 64t-119.5 39q-75 -13 -117 -59t-42 -105z" /> +<glyph unicode="©" horiz-adv-x="1261" d="M113 383v659q0 179 107 288.5t282 109.5h260q173 0 280 -110t107 -288v-659q0 -175 -107 -282t-280 -107h-260q-175 0 -282 107t-107 282zM190 383q0 -149 82 -232t230 -83h260q146 0 227.5 83t81.5 232v659q0 153 -81.5 238.5t-227.5 85.5h-260q-147 0 -229.5 -85.5 t-82.5 -238.5v-659zM373 539v350q0 120 71.5 193t188.5 73q109 0 179.5 -71t76.5 -185q0 -14 -15 -14h-73q-15 0 -15 14q-8 72 -48.5 113t-104.5 41q-75 0 -116.5 -43.5t-41.5 -120.5v-350q0 -77 41.5 -120.5t116.5 -43.5q67 0 108.5 41.5t49.5 115.5q0 15 14 15h74 q14 0 14 -15q-6 -117 -78 -188.5t-182 -71.5q-117 0 -188.5 73.5t-71.5 193.5z" /> +<glyph unicode="«" horiz-adv-x="823" d="M74 483q-30 43 0 86l223 301q8 13 27 13h79q12 0 16 -8t-3 -17l-252 -332l252 -331q7 -9 3 -17t-16 -8h-79q-20 0 -27 12zM401 483q-30 43 0 86l224 301q8 13 26 13h80q12 0 16 -8t-4 -17l-251 -332l251 -331q8 -9 4 -17t-16 -8h-80q-19 0 -26 12z" /> +<glyph unicode="¬" horiz-adv-x="942" d="M102 700v70q0 9 6 15t15 6h696q9 0 15 -6t6 -15v-248q0 -20 -21 -20h-65q-21 0 -21 20v158h-610q-21 0 -21 20z" /> +<glyph unicode="­" horiz-adv-x="581" d="M35 489v74q0 21 20 21h471q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-471q-20 0 -20 20z" /> +<glyph unicode="®" horiz-adv-x="897" d="M102 764v453q0 92 66 157.5t158 65.5h245q92 0 158 -65.5t66 -157.5v-453q0 -92 -66 -157.5t-158 -65.5h-245q-92 0 -158 65.5t-66 157.5zM154 764q0 -70 51 -121t121 -51h245q71 0 121.5 51t50.5 121v453q0 71 -50.5 121.5t-121.5 50.5h-245q-70 0 -121 -50.5 t-51 -121.5v-453zM299 713v434q0 66 41.5 107.5t108.5 41.5q64 0 104.5 -41.5t40.5 -107.5v-62q0 -100 -86 -139l96 -231q3 -10 -6 -10h-49q-7 0 -10 6l-88 223h-91v-221q0 -8 -8 -8h-45q-8 0 -8 8zM360 991h89q37 0 60 26.5t23 67.5v62q0 41 -23 67.5t-60 26.5 q-40 0 -64.5 -26.5t-24.5 -67.5v-156z" /> +<glyph unicode="°" horiz-adv-x="610" d="M51 1188q0 120 70 193t184 73t184 -73t70 -193t-70 -193t-184 -73t-184 73t-70 193zM154 1188q0 -76 41.5 -123t109.5 -47t110 47t42 123t-42 123t-110 47t-109.5 -47t-41.5 -123z" /> +<glyph unicode="±" horiz-adv-x="942" d="M102 254v70q0 20 21 20h696q21 0 21 -20v-70q0 -9 -6 -15t-15 -6h-696q-9 0 -15 6t-6 15zM102 760v69q0 9 6 15t15 6h293v293q0 20 20 20h70q20 0 20 -20v-293h293q9 0 15 -6t6 -15v-69q0 -9 -6 -15t-15 -6h-293v-293q0 -20 -20 -20h-70q-20 0 -20 20v293h-293 q-9 0 -15 6t-6 15z" /> +<glyph unicode="¶" horiz-adv-x="952" d="M33 1116q0 146 89.5 232t235.5 86h390q29 0 45 -16.5t16 -45.5v-1554q0 -9 -6 -15t-15 -6h-81q-9 0 -15 6t-6 15v1501h-205v-1501q0 -21 -20 -21h-82q-9 0 -15 6t-6 15v981q-146 0 -235.5 85.5t-89.5 231.5z" /> +<glyph unicode="·" horiz-adv-x="299" d="M25 526q0 40 27 67.5t67 27.5q39 0 66.5 -27.5t27.5 -67.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5z" /> +<glyph unicode="»" horiz-adv-x="823" d="M76 178q-4 8 4 17l252 331l-252 332q-8 9 -4 17t16 8h80q19 0 27 -13l223 -301q30 -43 0 -86l-223 -301q-7 -12 -27 -12h-80q-12 0 -16 8zM404 178q-4 8 4 17l251 331l-251 332q-8 9 -4 17t16 8h80q18 0 26 -13l224 -301q30 -43 0 -86l-224 -301q-7 -12 -26 -12h-80 q-12 0 -16 8z" /> +<glyph unicode="¿" horiz-adv-x="655" d="M20 -88q0 84 21.5 154.5t53 116.5t69 95t69 91t53 105t21.5 136v111q0 20 21 20h82q20 0 20 -20v-125q0 -69 -16 -128.5t-41 -103t-55.5 -83.5t-61.5 -78.5t-56 -79.5t-41 -95t-16 -116q0 -104 54.5 -167.5t140.5 -63.5q84 0 137 61t57 172q0 20 21 20h82q20 0 20 -20 q-6 -158 -94 -253t-223 -95q-138 0 -228 97.5t-90 248.5zM274 950q0 37 27 63.5t64 26.5q38 0 64 -26.5t26 -63.5q0 -38 -26 -64t-64 -26q-37 0 -64 26t-27 64z" /> +<glyph unicode="À" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448zM263 1790.5q4 7.5 16 7.5h94q19 0 26 -12 l142 -187q7 -9 3 -16.5t-16 -7.5h-69q-16 0 -25 12l-166 187q-9 9 -5 16.5z" /> +<glyph unicode="Á" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448zM379.5 1582.5q-3.5 7.5 3.5 16.5l141 187 q7 12 27 12h94q12 0 15.5 -7.5t-5.5 -16.5l-166 -187q-9 -12 -24 -12h-70q-12 0 -15.5 7.5z" /> +<glyph unicode="Â" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM230 1581.5q-4 6.5 3 17.5l154 187q9 12 25 12h106q16 0 25 -12l153 -187q7 -11 3.5 -17.5t-15.5 -6.5h-68 q-16 0 -24 10l-127 144l-127 -144q-8 -10 -25 -10h-67q-12 0 -16 6.5zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448z" /> +<glyph unicode="Ã" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM244 1612q6 66 42.5 104.5t92.5 38.5q34 0 65 -16.5t54.5 -32.5t40.5 -16q33 0 39 43q3 20 22 20h64q20 0 20 -20 q-6 -65 -43.5 -104.5t-91.5 -39.5q-33 0 -63.5 16.5t-54.5 33t-42 16.5q-33 0 -39 -43q-3 -21 -22 -21h-64q-20 0 -20 21zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448z" /> +<glyph unicode="Ä" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448zM287 1669q0 34 20.5 55t54.5 21t55 -21 t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55zM492 1669q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55z" /> +<glyph unicode="Å" d="M127 20v1063q0 166 93 267.5t245 101.5t245 -101.5t93 -267.5v-1063q0 -20 -21 -20h-82q-20 0 -20 20v500h-430v-500q0 -20 -21 -20h-82q-20 0 -20 20zM250 635h430v448q0 120 -56.5 187t-158.5 67t-158.5 -67t-56.5 -187v-448zM324 1683q0 60 38 97t101 37t101 -37 t38 -97q0 -62 -38 -99.5t-101 -37.5t-101 37.5t-38 99.5zM403 1681q0 -28 16 -43.5t44 -15.5q27 0 43 16t16 43q0 26 -16.5 43t-42.5 17q-27 0 -43.5 -16.5t-16.5 -43.5z" /> +<glyph unicode="Æ" horiz-adv-x="1261" d="M127 20v1092q0 148 89.5 244t227.5 96q80 0 145.5 -44t110.5 -114q46 68 116 110t157 42h178q20 0 20 -21v-73q0 -21 -20 -21h-178q-101 0 -156 -58t-55 -161v-328h328q20 0 20 -20v-74q0 -20 -20 -20h-328v-332q0 -107 55 -167t156 -60h198q9 0 15 -6t6 -15v-74 q0 -20 -21 -20h-198q-152 0 -243 94t-91 248v332h-389v-650q0 -20 -21 -20h-82q-20 0 -20 20zM250 784h389v328q0 100 -54 162.5t-141 62.5t-140.5 -62.5t-53.5 -162.5v-328z" /> +<glyph unicode="Ç" horiz-adv-x="837" d="M100 332v770q0 158 91.5 255t242.5 97q145 0 237.5 -104.5t96.5 -274.5q0 -20 -20 -20h-82q-21 0 -21 20q-4 126 -60.5 195t-150.5 69q-100 0 -155.5 -62.5t-55.5 -174.5v-770q0 -113 55.5 -175.5t155.5 -62.5q101 0 159.5 73t61.5 202q0 20 21 20h82q20 0 20 -18 q-4 -168 -90.5 -274t-226.5 -117l-12 -70h12q66 -5 110.5 -48t44.5 -106q0 -76 -51 -121t-131 -45q-74 0 -124 39t-56 107q-3 20 18 20h58q17 0 20 -18q6 -29 28.5 -44.5t55.5 -15.5q38 0 62 21t24 57q0 31 -23.5 50.5t-58.5 19.5q-38 0 -71 -10q-10 -3 -17 4l-4 4 q-8 8 -6 16l29 146q-123 20 -196 113.5t-73 232.5z" /> +<glyph unicode="È" horiz-adv-x="741" d="M100 348v737q0 151 94 252t240 101h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-93 0 -152 -68t-59 -170v-301h375q20 0 20 -20v-74q0 -20 -20 -20h-375v-322q0 -102 59 -169.5t152 -67.5h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-146 0 -240 100.5t-94 251.5z M244.5 1790.5q3.5 7.5 15.5 7.5h94q20 0 27 -12l141 -187q8 -9 4 -16.5t-16 -7.5h-70q-15 0 -24 12l-166 187q-9 9 -5.5 16.5z" /> +<glyph unicode="É" horiz-adv-x="741" d="M100 348v737q0 151 94 252t240 101h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-93 0 -152 -68t-59 -170v-301h375q20 0 20 -20v-74q0 -20 -20 -20h-375v-322q0 -102 59 -169.5t152 -67.5h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-146 0 -240 100.5t-94 251.5z M328 1582.5q-4 7.5 4 16.5l141 187q7 12 27 12h94q12 0 15.5 -7.5t-5.5 -16.5l-166 -187q-9 -12 -24 -12h-70q-12 0 -16 7.5z" /> +<glyph unicode="Ê" horiz-adv-x="737" d="M100 348v737q0 151 94 252t240 101h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-93 0 -152 -68t-59 -170v-301h375q20 0 20 -20v-74q0 -20 -20 -20h-375v-322q0 -102 59 -169.5t152 -67.5h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-146 0 -240 100.5t-94 251.5z M191.5 1581.5q-3.5 6.5 3.5 17.5l153 187q9 12 25 12h106q16 0 25 -12l153 -187q7 -11 3.5 -17.5t-15.5 -6.5h-67q-18 0 -25 10l-127 144l-127 -144q-8 -10 -25 -10h-67q-12 0 -15.5 6.5z" /> +<glyph unicode="Ë" horiz-adv-x="737" d="M100 348v737q0 151 94 252t240 101h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-93 0 -152 -68t-59 -170v-301h375q20 0 20 -20v-74q0 -20 -20 -20h-375v-322q0 -102 59 -169.5t152 -67.5h213q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-213q-146 0 -240 100.5t-94 251.5z M248 1669q0 34 21 55t55 21t54.5 -21t20.5 -55t-20.5 -55t-54.5 -21t-55 21t-21 55zM453 1669q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55z" /> +<glyph unicode="Ì" horiz-adv-x="409" d="M62.5 1790.5q3.5 7.5 15.5 7.5h94q20 0 27 -12l141 -187q8 -9 4 -16.5t-16 -7.5h-70q-16 0 -25 12l-165 187q-9 9 -5.5 16.5zM143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-1393q0 -20 -20 -20h-82q-21 0 -21 20z" /> +<glyph unicode="Í" horiz-adv-x="456" d="M144 1582.5q-4 7.5 3 16.5l142 187q7 12 26 12h95q12 0 15.5 -7.5t-5.5 -16.5l-166 -187q-9 -12 -25 -12h-69q-12 0 -16 7.5zM168 20v1393q0 21 20 21h82q9 0 15 -6t6 -15v-1393q0 -20 -21 -20h-82q-20 0 -20 20z" /> +<glyph unicode="Î" horiz-adv-x="532" d="M31.5 1581.5q-3.5 6.5 3.5 17.5l153 187q9 12 25 12h106q16 0 25 -12l154 -187q7 -11 3 -17.5t-16 -6.5h-67q-18 0 -25 10l-127 144l-127 -144q-8 -10 -24 -10h-68q-12 0 -15.5 6.5zM205 20v1393q0 21 20 21h82q9 0 15 -6t6 -15v-1393q0 -20 -21 -20h-82q-20 0 -20 20z " /> +<glyph unicode="Ï" horiz-adv-x="409" d="M27 1669q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55zM143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-1393q0 -20 -20 -20h-82q-21 0 -21 20zM231 1669q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="Ð" horiz-adv-x="1003" d="M92 690v72q0 20 21 20h118v594q0 29 16.5 45.5t45.5 16.5h276q152 0 243 -101t91 -258v-727q0 -155 -92 -255.5t-242 -100.5h-276q-29 0 -45.5 16t-16.5 45v613h-118q-21 0 -21 20zM354 111h215q95 0 153 67.5t58 173.5v727q0 108 -57 176t-154 68h-215v-541h148 q20 0 20 -20v-72q0 -20 -20 -20h-148v-559z" /> +<glyph unicode="Ñ" d="M127 20v1065q0 163 93 266t245 103t245 -103t93 -266v-1065q0 -20 -21 -20h-82q-20 0 -20 20v1065q0 114 -58.5 184t-156.5 70t-156.5 -70t-58.5 -184v-1065q0 -20 -21 -20h-82q-20 0 -20 20zM250 1612q6 66 42.5 104.5t92.5 38.5q34 0 65 -16.5t54.5 -32.5t40.5 -16 q33 0 39 43q3 20 22 20h64q20 0 20 -20q-6 -65 -43.5 -104.5t-91.5 -39.5q-33 0 -63.5 16.5t-54.5 33t-42 16.5q-33 0 -39 -43q-3 -21 -22 -21h-64q-20 0 -20 21z" /> +<glyph unicode="Ò" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72 t-62.5 -192v-713zM306 1790.5q4 7.5 16 7.5h94q19 0 26 -12l142 -187q7 -9 3 -16.5t-16 -7.5h-69q-16 0 -25 12l-166 187q-9 9 -5 16.5z" /> +<glyph unicode="Ó" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72 t-62.5 -192v-713zM363.5 1582.5q-3.5 7.5 3.5 16.5l141 187q7 12 27 12h94q12 0 15.5 -7.5t-5.5 -16.5l-166 -187q-9 -12 -24 -12h-70q-12 0 -15.5 7.5z" /> +<glyph unicode="Ô" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM213.5 1581.5q-3.5 6.5 3.5 17.5l154 187q9 12 24 12h107q15 0 24 -12l154 -187q7 -11 3.5 -17.5t-15.5 -6.5h-68 q-18 0 -25 10l-126 144l-127 -144q-8 -10 -25 -10h-68q-12 0 -15.5 6.5zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72t-62.5 -192v-713z" /> +<glyph unicode="Õ" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72 t-62.5 -192v-713zM227 1612q6 66 42.5 104.5t92.5 38.5q34 0 65 -16.5t54.5 -32.5t40.5 -16q33 0 39 43q3 20 23 20h63q21 0 21 -20q-6 -65 -43.5 -104.5t-92.5 -39.5q-33 0 -63.5 16.5t-54 33t-41.5 16.5q-33 0 -39 -43q-3 -21 -23 -21h-63q-9 0 -15 6t-6 15z" /> +<glyph unicode="Ö" horiz-adv-x="897" d="M100 360v713q0 168 97.5 273.5t251.5 105.5q153 0 250.5 -101.5t97.5 -256.5v-754q0 -155 -97.5 -256.5t-250.5 -101.5q-154 0 -251.5 105t-97.5 273zM223 360q0 -120 62.5 -192t163.5 -72q99 0 162 69t63 175v754q0 106 -63 174.5t-162 68.5q-101 0 -163.5 -72 t-62.5 -192v-713zM270 1669q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55zM475 1669q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="×" horiz-adv-x="942" d="M113 426q-12 16 0 31l278 278l-278 279q-12 15 0 30l49 50q16 12 31 0l278 -279l279 279q15 12 30 0l49 -50q12 -15 0 -30l-278 -279l278 -278q12 -16 0 -31l-49 -49q-15 -12 -30 0l-279 278l-278 -278q-15 -12 -31 0z" /> +<glyph unicode="Ø" horiz-adv-x="901" d="M100 360v713q0 168 98 273.5t253 105.5q81 0 151 -31l27 88q7 17 22 17h72q11 0 16 -6.5t2 -16.5l-45 -147q105 -100 105 -262v-754q0 -155 -98 -256.5t-252 -101.5q-85 0 -152 30l-27 -88q-6 -16 -22 -16h-72q-24 0 -18 22l45 150q-105 108 -105 280zM225 360 q0 -71 25 -129l317 1076q-55 30 -116 30q-101 0 -163.5 -72t-62.5 -192v-713zM334 129q47 -33 117 -33q99 0 162 69t63 175v754q0 58 -23 112z" /> +<glyph unicode="Ù" d="M127 348v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -114 58.5 -184t156.5 -70t156.5 70t58.5 184v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -163 -93 -265.5t-245 -102.5t-245 102.5t-93 265.5zM312 1790.5q4 7.5 16 7.5h94q20 0 27 -12l141 -187q8 -9 4 -16.5 t-16 -7.5h-70q-16 0 -25 12l-166 187q-9 9 -5 16.5z" /> +<glyph unicode="Ú" d="M127 348v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -114 58.5 -184t156.5 -70t156.5 70t58.5 184v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -163 -93 -265.5t-245 -102.5t-245 102.5t-93 265.5zM369.5 1582.5q-3.5 7.5 3.5 16.5l141 187q7 12 27 12h94 q12 0 15.5 -7.5t-5.5 -16.5l-166 -187q-9 -12 -24 -12h-70q-12 0 -15.5 7.5z" /> +<glyph unicode="Û" d="M127 348v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -114 58.5 -184t156.5 -70t156.5 70t58.5 184v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -163 -93 -265.5t-245 -102.5t-245 102.5t-93 265.5zM220 1581.5q-4 6.5 3 17.5l154 187q9 12 24 12h107q15 0 24 -12 l154 -187q7 -11 3.5 -17.5t-15.5 -6.5h-68q-16 0 -24 10l-127 144l-127 -144q-8 -10 -25 -10h-67q-12 0 -16 6.5z" /> +<glyph unicode="Ü" d="M127 348v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -114 58.5 -184t156.5 -70t156.5 70t58.5 184v1065q0 21 20 21h82q9 0 15 -6t6 -15v-1065q0 -163 -93 -265.5t-245 -102.5t-245 102.5t-93 265.5zM276 1669q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21 t-21 55zM481 1669q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="Ý" horiz-adv-x="847" d="M90 815v598q0 9 6 15t15 6h82q20 0 20 -21v-598q0 -103 59 -171.5t152 -68.5t152 68.5t59 171.5v598q0 21 20 21h82q9 0 15 -6t6 -15v-598q0 -134 -75 -230t-198 -116v-449q0 -20 -20 -20h-82q-21 0 -21 20v449q-122 20 -197 116t-75 230zM338 1582.5q-4 7.5 4 16.5 l141 187q7 12 27 12h94q12 0 15.5 -7.5t-5.5 -16.5l-165 -187q-9 -12 -25 -12h-70q-12 0 -16 7.5z" /> +<glyph unicode="Þ" horiz-adv-x="843" d="M143 20v1393q0 9 6 15t15 6h82q20 0 20 -21v-246h195q132 0 224.5 -93t92.5 -224v-266q0 -131 -92.5 -224.5t-224.5 -93.5h-195v-246q0 -20 -20 -20h-82q-21 0 -21 20zM266 381h195q80 0 137 56.5t57 137.5v283q0 81 -57 138t-137 57h-195v-672z" /> +<glyph unicode="ß" horiz-adv-x="831" d="M127 20l2 1129q0 131 83 218t204 87q122 0 207.5 -87.5t85.5 -217.5l-2 -166q0 -114 -134 -213q79 -41 131 -112t52 -156v-185q0 -131 -92 -224t-222 -93h-108q-21 0 -21 20v72q0 9 6 15t15 6h108q80 0 137.5 59t57.5 145v185q0 84 -57.5 142t-137.5 58h-108q-9 0 -15 6 t-6 15v72q0 20 21 20h76q75 0 127.5 49.5t52.5 118.5l2 166q0 84 -51 138t-125 54q-72 0 -121 -53.5t-49 -138.5l-2 -1129q0 -20 -21 -20h-76q-20 0 -20 20z" /> +<glyph unicode="à" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM195 299 q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5zM213.5 1368.5q3.5 7.5 15.5 7.5h93q14 0 24 -14l121 -193q6 -11 2 -17.5t-16 -6.5h-68q-20 0 -27 12l-141 195q-7 9 -3.5 16.5z" /> +<glyph unicode="á" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM195 299 q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5zM305.5 1151.5q-4.5 6.5 1.5 17.5l121 193q10 14 25 14h92q12 0 15.5 -7.5t-3.5 -16.5l-141 -195q-7 -12 -27 -12h-67q-12 0 -16.5 6.5z" /> +<glyph unicode="â" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM181 1152.5 q-4 7.5 3 16.5l142 195q7 12 24 12h94q18 0 25 -12l141 -195q8 -9 4 -16.5t-16 -7.5h-66q-17 0 -26 12l-109 133l-108 -133q-9 -12 -27 -12h-65q-12 0 -16 7.5zM195 299q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5z" /> +<glyph unicode="ã" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM172 1202 q6 66 42.5 105t92.5 39q34 0 65 -16.5t54.5 -33t40.5 -16.5q33 0 39 43q3 20 22 20h64q20 0 20 -20q-6 -65 -43 -104t-92 -39q-33 0 -63.5 16.5t-54.5 32.5t-42 16q-32 0 -38 -43q-3 -20 -23 -20h-63q-21 0 -21 20zM195 299q0 -92 53 -148.5t145 -56.5q91 0 143 56.5 t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5z" /> +<glyph unicode="ä" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM195 299 q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5zM219 1239q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55zM424 1239q0 34 21 55t55 21t54.5 -21t20.5 -55t-20.5 -55t-54.5 -21t-55 21t-21 55z" /> +<glyph unicode="å" horiz-adv-x="796" d="M78 299q0 124 87 209.5t224 85.5h199v133q0 91 -52 148t-141 57q-81 0 -129.5 -51.5t-54.5 -137.5q-3 -20 -21 -20h-75q-21 0 -21 20q8 133 89.5 217t211.5 84q139 0 224.5 -90t85.5 -227v-428q0 -138 -86.5 -227.5t-225.5 -89.5q-141 0 -228 89.5t-87 227.5zM195 299 q0 -92 53 -148.5t145 -56.5q91 0 143 56.5t52 148.5v182h-199q-88 0 -141 -52.5t-53 -129.5zM258 1262q0 60 38 96.5t101 36.5t101.5 -36.5t38.5 -96.5q0 -62 -38.5 -100t-101.5 -38t-101 38t-38 100zM338 1260q0 -28 15.5 -44t43.5 -16q27 0 43.5 16.5t16.5 43.5 q0 26 -17 42.5t-43 16.5q-27 0 -43 -16t-16 -43z" /> +<glyph unicode="æ" horiz-adv-x="1243" d="M78 279q0 124 91 210t224 86h170v152q0 88 -52 146.5t-128 58.5q-71 0 -120.5 -52.5t-55.5 -136.5q0 -20 -21 -20h-75q-21 0 -21 20q8 131 90 216t203 85q148 0 238 -151q94 151 245 151q136 0 217.5 -81.5t81.5 -210.5q0 -125 -86.5 -207t-230.5 -82h-168v-162 q0 -94 50.5 -151.5t137.5 -57.5q85 0 130.5 55.5t50.5 159.5q0 21 20 21h76q20 0 20 -21q-6 -151 -84.5 -239t-212.5 -88q-160 0 -245 149q-39 -68 -102 -108.5t-146 -40.5q-132 0 -214.5 84.5t-82.5 214.5zM195 279q0 -84 48 -135.5t132 -51.5q87 0 137.5 57t50.5 152v162 h-170q-88 0 -143 -53t-55 -131zM680 575h168q99 0 150 49t51 128q0 83 -47.5 131.5t-135.5 48.5q-84 0 -135 -57.5t-51 -147.5v-152z" /> +<glyph unicode="ç" horiz-adv-x="786" d="M92 301v422q0 139 85 230t222 91q132 0 216 -84.5t92 -216.5q0 -20 -21 -20h-76q-20 0 -20 20q-6 86 -56.5 137.5t-134.5 51.5q-88 0 -139 -57.5t-51 -151.5v-422q0 -94 52 -151.5t142 -57.5q85 0 137 57t58 152q0 21 20 21h76q9 0 15 -6t6 -15q-8 -131 -81 -218.5 t-192 -100.5l-12 -72h12q66 -5 111 -48t45 -106q0 -76 -51 -121t-131 -45q-74 0 -124 39t-56 107q-3 20 18 20h57q18 0 21 -18q6 -29 28.5 -44.5t55.5 -15.5q38 0 62 21t24 57q0 31 -23.5 50.5t-58.5 19.5q-39 0 -72 -10q-9 -3 -16 4l-4 4q-8 8 -6 16l26 144 q-117 19 -186.5 105.5t-69.5 211.5z" /> +<glyph unicode="è" horiz-adv-x="796" d="M92 303v416q0 143 85.5 233t228.5 90q139 0 226 -89t87 -226q0 -129 -87 -214t-226 -85h-197v-125q0 -94 53 -151.5t144 -57.5q86 0 138.5 57.5t55.5 151.5q0 21 21 21h75q9 0 15 -6t6 -15q-4 -145 -90 -233t-221 -88q-141 0 -227.5 88t-86.5 233zM209 541h197 q91 0 143.5 51.5t52.5 134.5q0 91 -52.5 147t-143.5 56q-94 0 -145.5 -57t-51.5 -154v-178zM217.5 1368.5q3.5 7.5 15.5 7.5h93q14 0 24 -14l121 -193q6 -11 2 -17.5t-16 -6.5h-68q-20 0 -27 12l-141 195q-7 9 -3.5 16.5z" /> +<glyph unicode="é" horiz-adv-x="796" d="M92 303v416q0 143 85.5 233t228.5 90q139 0 226 -89t87 -226q0 -129 -87 -214t-226 -85h-197v-125q0 -94 53 -151.5t144 -57.5q86 0 138.5 57.5t55.5 151.5q0 21 21 21h75q9 0 15 -6t6 -15q-4 -145 -90 -233t-221 -88q-141 0 -227.5 88t-86.5 233zM209 541h197 q91 0 143.5 51.5t52.5 134.5q0 91 -52.5 147t-143.5 56q-94 0 -145.5 -57t-51.5 -154v-178zM309.5 1151.5q-4.5 6.5 1.5 17.5l121 193q10 14 25 14h92q12 0 15.5 -7.5t-3.5 -16.5l-141 -195q-7 -12 -27 -12h-67q-12 0 -16.5 6.5z" /> +<glyph unicode="ê" horiz-adv-x="796" d="M92 303v416q0 143 85.5 233t228.5 90q139 0 226 -89t87 -226q0 -129 -87 -214t-226 -85h-197v-125q0 -94 53 -151.5t144 -57.5q86 0 138.5 57.5t55.5 151.5q0 21 21 21h75q9 0 15 -6t6 -15q-4 -145 -90 -233t-221 -88q-141 0 -227.5 88t-86.5 233zM185 1152.5 q-4 7.5 3 16.5l142 195q7 12 24 12h95q17 0 24 -12l141 -195q8 -9 4 -16.5t-16 -7.5h-65q-18 0 -27 12l-109 133l-108 -133q-9 -12 -27 -12h-65q-12 0 -16 7.5zM209 541h197q91 0 143.5 51.5t52.5 134.5q0 91 -52.5 147t-143.5 56q-94 0 -145.5 -57t-51.5 -154v-178z" /> +<glyph unicode="ë" horiz-adv-x="796" d="M92 303v416q0 143 85.5 233t228.5 90q139 0 226 -89t87 -226q0 -129 -87 -214t-226 -85h-197v-125q0 -94 53 -151.5t144 -57.5q86 0 138.5 57.5t55.5 151.5q0 21 21 21h75q9 0 15 -6t6 -15q-4 -145 -90 -233t-221 -88q-141 0 -227.5 88t-86.5 233zM209 541h197 q91 0 143.5 51.5t52.5 134.5q0 91 -52.5 147t-143.5 56q-94 0 -145.5 -57t-51.5 -154v-178zM223 1239q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55zM428 1239q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="ì" horiz-adv-x="382" d="M7 1368.5q4 7.5 16 7.5h92q13 0 24 -14l121 -193q6 -11 2 -17.5t-16 -6.5h-68q-19 0 -26 12l-142 195q-7 9 -3 16.5zM133 20v984q0 20 21 20h75q21 0 21 -20v-984q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="í" horiz-adv-x="382" d="M98.5 1151.5q-4.5 6.5 1.5 17.5l121 193q10 14 25 14h92q12 0 16 -7.5t-4 -16.5l-141 -195q-7 -12 -27 -12h-67q-12 0 -16.5 6.5zM133 20v984q0 20 21 20h75q21 0 21 -20v-984q0 -20 -21 -20h-75q-21 0 -21 20z" /> +<glyph unicode="î" horiz-adv-x="434" d="M31.5 1152.5q-3.5 7.5 3.5 16.5l141 195q7 12 25 12h94q17 0 24 -12l142 -195q7 -9 3.5 -16.5t-15.5 -7.5h-66q-18 0 -27 12l-108 133l-109 -133q-9 -12 -26 -12h-66q-12 0 -15.5 7.5zM190 20v984q0 20 21 20h76q20 0 20 -20v-984q0 -20 -20 -20h-76q-21 0 -21 20z" /> +<glyph unicode="ï" horiz-adv-x="360" d="M23 1237q0 31 18.5 49.5t48.5 18.5q31 0 51.5 -19t20.5 -49q0 -31 -20.5 -50.5t-51.5 -19.5q-29 0 -48 19.5t-19 50.5zM121 20v984q0 20 20 20h76q21 0 21 -20v-984q0 -20 -21 -20h-76q-20 0 -20 20zM203 1237q0 30 20 49t51 19q28 0 48 -19t20 -49t-20 -50t-48 -20 q-31 0 -51 19.5t-20 50.5z" /> +<glyph unicode="ð" horiz-adv-x="851" d="M92 307v416q0 139 87 230t227 91q114 0 196 -102v72q0 128 -72 215l-176 -111q-10 -6 -17 -1.5t-7 16.5v51q0 14 14 24l125 78q-79 53 -184 53h-41q-9 0 -15 6t-6 15v72q0 20 21 20h41q174 0 288 -100l119 73q10 6 17.5 2t7.5 -16v-51q0 -14 -15 -25l-71 -45 q88 -114 88 -276v-707q0 -144 -86 -235.5t-227 -91.5t-227.5 91.5t-86.5 235.5zM209 307q0 -98 52 -156.5t145 -58.5q92 0 144 58.5t52 156.5v416q0 94 -52.5 151.5t-143.5 57.5t-144 -57.5t-53 -151.5v-416z" /> +<glyph unicode="ñ" horiz-adv-x="835" d="M113 20v703q0 139 85 230t220 91t220 -91t85 -230v-703q0 -20 -21 -20h-75q-21 0 -21 20v703q0 95 -50.5 153t-137.5 58t-138 -58t-51 -153v-703q0 -20 -20 -20h-76q-20 0 -20 20zM193 1202q6 66 42.5 105t92.5 39q34 0 64.5 -16.5t54 -33t40.5 -16.5q33 0 39 43 q3 20 23 20h63q21 0 21 -20q-6 -65 -43 -104t-92 -39q-33 0 -63.5 16.5t-54.5 32.5t-42 16q-33 0 -39 -43q-3 -20 -23 -20h-63q-20 0 -20 20z" /> +<glyph unicode="ò" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422zM224 1368.5q4 7.5 16 7.5h92 q14 0 24 -14l121 -193q6 -11 2 -17.5t-16 -6.5h-68q-19 0 -26 12l-142 195q-7 9 -3 16.5z" /> +<glyph unicode="ó" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422zM315.5 1151.5q-4.5 6.5 1.5 17.5 l121 193q10 14 25 14h92q12 0 15.5 -7.5t-3.5 -16.5l-141 -195q-7 -12 -27 -12h-67q-12 0 -16.5 6.5z" /> +<glyph unicode="ô" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM191.5 1152.5q-3.5 7.5 3.5 16.5l141 195q7 12 24 12h95q17 0 24 -12l142 -195q7 -9 3 -16.5t-16 -7.5h-65q-18 0 -27 12l-108 133l-109 -133 q-9 -12 -27 -12h-65q-12 0 -15.5 7.5zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422z" /> +<glyph unicode="õ" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM182 1202q6 66 42.5 105t92.5 39q34 0 65 -16.5t54.5 -33t40.5 -16.5q33 0 39 43q3 20 23 20h63q21 0 21 -20q-6 -65 -43.5 -104t-92.5 -39 q-33 0 -63.5 16.5t-54 32.5t-41.5 16q-33 0 -39 -43q-3 -20 -23 -20h-63q-21 0 -21 20zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422z" /> +<glyph unicode="ö" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5t228 -90.5t87 -230.5v-422q0 -140 -87 -230.5t-228 -90.5t-228.5 90.5t-87.5 230.5zM211 301q0 -95 53 -153t144 -58t143.5 58t52.5 153v422q0 95 -52.5 153t-143.5 58t-144 -58t-53 -153v-422zM229 1239q0 34 21 55t55 21 t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55zM434 1239q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="÷" horiz-adv-x="942" d="M102 700v70q0 9 6 15t15 6h696q9 0 15 -6t6 -15v-70q0 -20 -21 -20h-696q-21 0 -21 20zM377 428q0 40 27 67t67 27q39 0 66.5 -27.5t27.5 -66.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5zM377 1026q0 40 27 67t67 27q39 0 66.5 -27.5t27.5 -66.5 q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5z" /> +<glyph unicode="ø" horiz-adv-x="815" d="M92 301v422q0 140 87.5 230.5t228.5 90.5q44 0 75 -8l19 64q3 16 22 16h68q24 0 18 -22l-26 -97q66 -43 102.5 -114t36.5 -160v-422q0 -140 -87 -230.5t-228 -90.5q-49 0 -103 14l-20 -70q-3 -16 -23 -16h-67q-25 0 -19 22l33 115q-56 43 -86.5 110t-30.5 146zM211 301 q0 -69 33 -127l211 756q-28 4 -47 4q-91 0 -144 -58t-53 -153v-422zM334 102q34 -12 74 -12q91 0 143.5 58t52.5 153v422q0 98 -53 154z" /> +<glyph unicode="ù" horiz-adv-x="835" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -95 51 -153t138 -58t137.5 58t50.5 153v703q0 20 21 20h75q21 0 21 -20v-703q0 -139 -85 -230t-220 -91t-220 91t-85 230zM230 1368.5q4 7.5 16 7.5h92q14 0 24 -14l121 -193q6 -11 2 -17.5t-16 -6.5h-68q-19 0 -26 12 l-142 195q-7 9 -3 16.5z" /> +<glyph unicode="ú" horiz-adv-x="835" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -95 51 -153t138 -58t137.5 58t50.5 153v703q0 20 21 20h75q21 0 21 -20v-703q0 -139 -85 -230t-220 -91t-220 91t-85 230zM322 1151.5q-4 6.5 2 17.5l120 193q10 14 25 14h92q12 0 15.5 -7.5t-3.5 -16.5l-141 -195 q-7 -12 -26 -12h-68q-12 0 -16 6.5z" /> +<glyph unicode="û" horiz-adv-x="835" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -95 51 -153t138 -58t137.5 58t50.5 153v703q0 20 21 20h75q21 0 21 -20v-703q0 -139 -85 -230t-220 -91t-220 91t-85 230zM197.5 1152.5q-3.5 7.5 3.5 16.5l141 195q7 12 25 12h94q17 0 24 -12l142 -195q7 -9 3 -16.5 t-16 -7.5h-65q-18 0 -27 12l-108 133l-109 -133q-9 -12 -26 -12h-66q-12 0 -15.5 7.5z" /> +<glyph unicode="ü" horiz-adv-x="835" d="M113 301v703q0 20 20 20h76q20 0 20 -20v-703q0 -95 51 -153t138 -58t137.5 58t50.5 153v703q0 20 21 20h75q21 0 21 -20v-703q0 -139 -85 -230t-220 -91t-220 91t-85 230zM236 1239q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55zM440 1239 q0 34 21 55t55 21t55 -21t21 -55t-21 -55t-55 -21t-55 21t-21 55z" /> +<glyph unicode="ý" horiz-adv-x="868" d="M113 -109q0 21 20 21h76q20 0 20 -21q3 -98 54.5 -153t140.5 -55q92 0 143 55t51 153v234q-82 -105 -194 -105q-138 0 -224.5 91t-86.5 231v662q0 20 20 20h76q20 0 20 -20v-662q0 -93 52.5 -151t142.5 -58t142 57.5t52 151.5v662q0 20 21 20h76q20 0 20 -20v-1113 q0 -145 -85.5 -233t-225.5 -88q-134 0 -219.5 88t-91.5 233zM338 1151.5q-4 6.5 2 17.5l121 193q11 14 24 14h93q12 0 16 -7.5t-4 -16.5l-141 -195q-7 -12 -27 -12h-68q-12 0 -16 6.5z" /> +<glyph unicode="þ" horiz-adv-x="839" d="M133 -389v1802q0 9 6 15t15 6h75q9 0 15 -6t6 -15v-469q77 100 190 100q137 0 222.5 -91t85.5 -230v-422q0 -139 -85.5 -230t-222.5 -91q-113 0 -190 100v-469q0 -9 -6 -15t-15 -6h-75q-9 0 -15 6t-6 15zM250 301q0 -94 51 -151.5t139 -57.5t139.5 57.5t51.5 151.5v422 q0 94 -51.5 151.5t-139.5 57.5t-139 -57.5t-51 -151.5v-422z" /> +<glyph unicode="ÿ" horiz-adv-x="868" d="M113 -109q0 21 20 21h76q20 0 20 -21q3 -98 54.5 -153t140.5 -55q92 0 143 55t51 153v234q-82 -105 -194 -105q-138 0 -224.5 91t-86.5 231v662q0 20 20 20h76q20 0 20 -20v-662q0 -93 52.5 -151t142.5 -58t142 57.5t52 151.5v662q0 20 21 20h76q20 0 20 -20v-1113 q0 -145 -85.5 -233t-225.5 -88q-134 0 -219.5 88t-91.5 233zM252 1239q0 34 21 55t55 21t54.5 -21t20.5 -55t-20.5 -55t-54.5 -21t-55 21t-21 55zM457 1239q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55z" /> +<glyph unicode="Œ" horiz-adv-x="1280" d="M100 338v758q0 153 92 253.5t234 100.5q95 0 165.5 -47t106.5 -129q38 77 105 121.5t155 44.5h232q20 0 20 -21v-71q0 -21 -20 -21h-232q-89 0 -145.5 -72t-56.5 -178v-293h358q21 0 21 -20v-72q0 -20 -21 -20h-358v-316q0 -106 56.5 -176.5t145.5 -70.5h232q20 0 20 -21 v-74q0 -20 -20 -20h-232q-88 0 -155 44.5t-105 121.5q-36 -82 -106.5 -129t-165.5 -47q-142 0 -234 100.5t-92 253.5zM223 338q0 -105 57 -172.5t146 -67.5q91 0 149 73.5t58 184.5v721q0 111 -58 184.5t-149 73.5q-89 0 -146 -67.5t-57 -171.5v-758z" /> +<glyph unicode="œ" horiz-adv-x="1257" d="M92 301v422q0 139 83.5 230t217.5 91q165 0 242 -141q80 141 237 141q131 0 213 -87t82 -224q0 -132 -86.5 -217.5t-214.5 -85.5h-172v-129q0 -94 50 -151.5t135 -57.5q81 0 129.5 51.5t54.5 137.5q0 20 20 20h76q21 0 21 -20q-8 -132 -90 -216.5t-211 -84.5 q-155 0 -242 157q-91 -157 -244 -157q-134 0 -217.5 91t-83.5 230zM209 301q0 -94 49.5 -151.5t134.5 -57.5t135 57.5t50 151.5v422q0 94 -50 151.5t-135 57.5t-134.5 -57.5t-49.5 -151.5v-422zM694 543h172q80 0 132.5 52t52.5 138q0 91 -48 145t-131 54q-82 0 -130 -57 t-48 -150v-182z" /> +<glyph unicode="Ÿ" horiz-adv-x="847" d="M90 815v598q0 9 6 15t15 6h82q20 0 20 -21v-598q0 -103 59 -171.5t152 -68.5t152 68.5t59 171.5v598q0 21 20 21h82q9 0 15 -6t6 -15v-598q0 -134 -75 -230t-198 -116v-449q0 -20 -20 -20h-82q-21 0 -21 20v449q-122 20 -197 116t-75 230zM246 1669q0 34 21 55t55 21 t54.5 -21t20.5 -55t-20.5 -55t-54.5 -21t-55 21t-21 55zM451 1669q0 34 20.5 55t54.5 21t55 -21t21 -55t-21 -55t-55 -21t-54.5 21t-20.5 55z" /> +<glyph unicode=" " horiz-adv-x="908" /> +<glyph unicode=" " horiz-adv-x="1817" /> +<glyph unicode=" " horiz-adv-x="908" /> +<glyph unicode=" " horiz-adv-x="1817" /> +<glyph unicode=" " horiz-adv-x="605" /> +<glyph unicode=" " horiz-adv-x="454" /> +<glyph unicode=" " horiz-adv-x="302" /> +<glyph unicode=" " horiz-adv-x="302" /> +<glyph unicode=" " horiz-adv-x="227" /> +<glyph unicode=" " horiz-adv-x="363" /> +<glyph unicode=" " horiz-adv-x="100" /> +<glyph unicode="‐" horiz-adv-x="581" d="M35 489v74q0 21 20 21h471q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-471q-20 0 -20 20z" /> +<glyph unicode="‑" horiz-adv-x="581" d="M35 489v74q0 21 20 21h471q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-471q-20 0 -20 20z" /> +<glyph unicode="‒" horiz-adv-x="581" d="M35 489v74q0 21 20 21h471q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-471q-20 0 -20 20z" /> +<glyph unicode="–" horiz-adv-x="786" d="M35 489v74q0 21 20 21h676q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-676q-20 0 -20 20z" /> +<glyph unicode="—" horiz-adv-x="1044" d="M41 489v74q0 21 20 21h922q9 0 15 -6t6 -15v-74q0 -20 -21 -20h-922q-20 0 -20 20z" /> +<glyph unicode="‘" horiz-adv-x="208" d="M39 1100l57 315q3 19 23 19h49q18 0 18 -21l-18 -315q0 -21 -23 -21h-88q-10 0 -15 6.5t-3 16.5z" /> +<glyph unicode="’" horiz-adv-x="208" d="M27 1098l18 315q0 21 23 21h88q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21z" /> +<glyph unicode="‚" horiz-adv-x="225" d="M31 -190l18 315q0 20 23 20h88q22 0 18 -22l-57 -316q-3 -18 -23 -18h-49q-18 0 -18 21z" /> +<glyph unicode="“" horiz-adv-x="413" d="M35 1100l57 315q3 19 23 19h49q18 0 18 -21l-18 -315q0 -21 -23 -21h-88q-10 0 -15 6.5t-3 16.5zM240 1100l57 315q3 19 22 19h50q18 0 18 -21l-18 -315q0 -21 -23 -21h-88q-10 0 -15 6.5t-3 16.5z" /> +<glyph unicode="”" horiz-adv-x="430" d="M31 1098l18 315q0 21 23 21h88q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21zM236 1098l18 315q0 21 22 21h89q10 0 15 -6.5t3 -16.5l-57 -315q-3 -19 -23 -19h-49q-18 0 -18 21z" /> +<glyph unicode="„" horiz-adv-x="225" d="M31 -190l18 315q0 20 23 20h88q22 0 18 -22l-57 -316q-3 -18 -23 -18h-49q-18 0 -18 21z" /> +<glyph unicode="•" horiz-adv-x="360" d="M51 512q0 54 37.5 92.5t89.5 38.5q54 0 92.5 -38.5t38.5 -92.5t-38.5 -90.5t-92.5 -36.5q-53 0 -90 36.5t-37 90.5z" /> +<glyph unicode="…" horiz-adv-x="954" d="M55 74q0 40 27.5 67t67.5 27q39 0 66.5 -27.5t27.5 -66.5q0 -38 -28 -66t-66 -28q-40 0 -67.5 28t-27.5 66zM383 74q0 40 27 67t67 27q39 0 66.5 -27.5t27.5 -66.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5zM711 74q0 40 27 67t67 27q39 0 66.5 -27.5 t27.5 -66.5q0 -38 -28 -66t-66 -28q-39 0 -66.5 27.5t-27.5 66.5z" /> +<glyph unicode=" " horiz-adv-x="363" /> +<glyph unicode="‹" horiz-adv-x="495" d="M74 483q-30 43 0 86l223 301q8 13 27 13h79q12 0 16 -8t-3 -17l-252 -332l252 -331q7 -9 3 -17t-16 -8h-79q-20 0 -27 12z" /> +<glyph unicode="›" horiz-adv-x="495" d="M76 178q-4 8 4 17l252 331l-252 332q-8 9 -4 17t16 8h80q19 0 27 -13l223 -301q30 -43 0 -86l-223 -301q-7 -12 -27 -12h-80q-12 0 -16 8z" /> +<glyph unicode=" " horiz-adv-x="454" /> +<glyph unicode="€" horiz-adv-x="972" d="M70 573v56q0 20 20 20h135v133h-135q-20 0 -20 21v55q0 21 20 21h135v223q0 158 91.5 255t242.5 97q145 0 237.5 -104.5t96.5 -274.5q0 -20 -21 -20h-81q-21 0 -21 20q-4 126 -60.5 195t-150.5 69q-100 0 -155.5 -62.5t-55.5 -174.5v-223h367q20 0 20 -21v-55 q0 -21 -20 -21h-367v-133h367q20 0 20 -20v-56q0 -20 -20 -20h-367v-221q0 -113 55.5 -175.5t155.5 -62.5q101 0 159.5 73t61.5 202q0 20 21 20h82q20 0 20 -18q-4 -177 -98.5 -284t-245.5 -107t-242.5 97t-91.5 255v221h-135q-20 0 -20 20z" /> +<glyph unicode="™" horiz-adv-x="1087" d="M47 1362v61q0 11 10 11h312q10 0 10 -11v-61q0 -10 -10 -10h-115v-465q0 -10 -10 -10h-66q-10 0 -10 10v465h-111q-10 0 -10 10zM430 889v350q0 95 45 148t127 53q81 0 127 -90q46 90 127 90q82 0 127 -53t45 -148v-350q0 -12 -10 -12h-64q-12 0 -12 12v350 q0 119 -86 119q-84 0 -84 -119v-350q0 -12 -12 -12h-62q-12 0 -12 12v350q0 119 -84 119q-86 0 -86 -119v-350q0 -5 -4 -8.5t-8 -3.5h-64q-10 0 -10 12z" /> +<glyph unicode="◼" horiz-adv-x="1024" d="M0 0v1024h1024v-1024h-1024z" /> +<hkern u1="H" u2="j" k="20" /> +<hkern u1="I" u2="j" k="20" /> +<hkern u1="g" u2="j" k="100" /> +<hkern u1="q" u2="j" k="43" /> +<hkern u1="y" u2="j" k="55" /> +<hkern u1="Ì" u2="j" k="20" /> +<hkern u1="Í" u2="j" k="20" /> +<hkern u1="Î" u2="j" k="20" /> +<hkern u1="Ï" u2="j" k="20" /> +<hkern u1="î" u2="?" k="-70" /> +<hkern u1="ï" u2="?" k="-27" /> +<hkern g1="B,germandbls" g2="J" k="23" /> +<hkern g1="B,germandbls" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="37" /> +<hkern g1="B,germandbls" g2="T" k="49" /> +<hkern g1="B,germandbls" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="6" /> +<hkern g1="B,germandbls" g2="j" k="82" /> +<hkern g1="B,germandbls" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" /> +<hkern g1="B,germandbls" g2="question" k="20" /> +<hkern g1="C,Ccedilla" g2="J" k="37" /> +<hkern g1="C,Ccedilla" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="4" /> +<hkern g1="C,Ccedilla" g2="j" k="41" /> +<hkern g1="C,Ccedilla" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="39" /> +<hkern g1="C,Ccedilla" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="20" /> +<hkern g1="C,Ccedilla" g2="m,n,p,r,ntilde" k="53" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="J" k="72" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="j" k="41" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="18" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="f" k="33" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="41" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="v" k="6" /> +<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="z" k="25" /> +<hkern g1="F" g2="J" k="225" /> +<hkern g1="F" g2="j" k="104" /> +<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" /> +<hkern g1="F" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="41" /> +<hkern g1="F" g2="m,n,p,r,ntilde" k="20" /> +<hkern g1="F" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="76" /> +<hkern g1="F" g2="v" k="41" /> +<hkern g1="F" g2="z" k="82" /> +<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" /> +<hkern g1="F" g2="s" k="25" /> +<hkern g1="F" g2="t" k="27" /> +<hkern g1="F" g2="x" k="61" /> +<hkern g1="F" g2="comma" k="211" /> +<hkern g1="F" g2="period" k="211" /> +<hkern g1="G" g2="T" k="16" /> +<hkern g1="G" g2="j" k="61" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="T" k="20" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="23" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="j" k="88" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="12" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="18" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="18" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="comma" k="63" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="period" k="61" /> +<hkern g1="H,I,Igrave,Iacute,Icircumflex,Idieresis" g2="quoteright" k="37" /> +<hkern g1="K" g2="J" k="61" /> +<hkern g1="K" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="27" /> +<hkern g1="K" g2="T" k="41" /> +<hkern g1="K" g2="j" k="76" /> +<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="33" /> +<hkern g1="K" g2="question" k="20" /> +<hkern g1="K" g2="m,n,p,r,ntilde" k="61" /> +<hkern g1="K" g2="f" k="47" /> +<hkern g1="K" g2="z" k="37" /> +<hkern g1="K" g2="s" k="51" /> +<hkern g1="K" g2="t" k="55" /> +<hkern g1="K" g2="A,B,F,M,N,P,R,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,AE,Ntilde,germandbls" k="10" /> +<hkern g1="K" g2="Y,Yacute,Ydieresis" k="18" /> +<hkern g1="K" g2="hyphen" k="8" /> +<hkern g1="L" g2="J" k="63" /> +<hkern g1="L" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="47" /> +<hkern g1="L" g2="T" k="129" /> +<hkern g1="L" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="45" /> +<hkern g1="L" g2="j" k="100" /> +<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="72" /> +<hkern g1="L" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="27" /> +<hkern g1="L" g2="m,n,p,r,ntilde" k="20" /> +<hkern g1="L" g2="f" k="98" /> +<hkern g1="L" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="61" /> +<hkern g1="L" g2="v" k="92" /> +<hkern g1="L" g2="z" k="20" /> +<hkern g1="L" g2="t" k="90" /> +<hkern g1="L" g2="quoteright" k="184" /> +<hkern g1="L" g2="A,B,F,M,N,P,R,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,AE,Ntilde,germandbls" k="25" /> +<hkern g1="L" g2="Y,Yacute,Ydieresis" k="164" /> +<hkern g1="L" g2="hyphen" k="143" /> +<hkern g1="L" g2="S" k="78" /> +<hkern g1="L" g2="V" k="98" /> +<hkern g1="L" g2="asterisk" k="184" /> +<hkern g1="L" g2="emdash" k="164" /> +<hkern g1="L" g2="endash" k="123" /> +<hkern g1="L" g2="quotedbl" k="223" /> +<hkern g1="L" g2="quotesingle" k="201" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="J" k="66" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="T" k="51" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="j" k="57" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="31" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="z" k="4" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" /> +<hkern g1="A,M,N,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Ntilde" g2="asterisk" k="61" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="J" k="61" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="T" k="43" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="j" k="96" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="8" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="f" k="4" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="z" k="41" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="18" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="comma" k="43" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="period" k="82" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="V" k="2" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="asterisk" k="61" /> +<hkern g1="D,O,Q,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash" g2="Z" k="10" /> +<hkern g1="P" g2="J" k="266" /> +<hkern g1="P" g2="T" k="20" /> +<hkern g1="P" g2="j" k="100" /> +<hkern g1="P" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" /> +<hkern g1="P" g2="m,n,p,r,ntilde" k="61" /> +<hkern g1="P" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="29" /> +<hkern g1="P" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="25" /> +<hkern g1="P" g2="s" k="18" /> +<hkern g1="P" g2="comma" k="246" /> +<hkern g1="P" g2="period" k="246" /> +<hkern g1="R" g2="J" k="102" /> +<hkern g1="R" g2="j" k="80" /> +<hkern g1="R" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" /> +<hkern g1="R" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="41" /> +<hkern g1="R" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="25" /> +<hkern g1="S" g2="J" k="61" /> +<hkern g1="S" g2="T" k="12" /> +<hkern g1="S" g2="j" k="74" /> +<hkern g1="S" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="16" /> +<hkern g1="S" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="27" /> +<hkern g1="S" g2="m,n,p,r,ntilde" k="20" /> +<hkern g1="S" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="37" /> +<hkern g1="S" g2="z" k="35" /> +<hkern g1="S" g2="t" k="18" /> +<hkern g1="S" g2="Y,Yacute,Ydieresis" k="12" /> +<hkern g1="S" g2="Z" k="10" /> +<hkern g1="T" g2="J" k="176" /> +<hkern g1="T" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="43" /> +<hkern g1="T" g2="j" k="113" /> +<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="137" /> +<hkern g1="T" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="90" /> +<hkern g1="T" g2="m,n,p,r,ntilde" k="123" /> +<hkern g1="T" g2="f" k="41" /> +<hkern g1="T" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="125" /> +<hkern g1="T" g2="v" k="82" /> +<hkern g1="T" g2="z" k="121" /> +<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="119" /> +<hkern g1="T" g2="s" k="121" /> +<hkern g1="T" g2="t" k="125" /> +<hkern g1="T" g2="x" k="121" /> +<hkern g1="T" g2="comma" k="143" /> +<hkern g1="T" g2="period" k="143" /> +<hkern g1="T" g2="hyphen" k="96" /> +<hkern g1="T" g2="D,H,I,K,Igrave,Iacute,Icircumflex,Idieresis,Thorn" k="8" /> +<hkern g1="T" g2="colon" k="215" /> +<hkern g1="T" g2="semicolon" k="160" /> +<hkern g1="Thorn" g2="j" k="123" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="63" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="4" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="j" k="82" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="23" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="12" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="m,n,p,r,ntilde" k="29" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="4" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="z" k="41" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="23" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="s" k="37" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="t" k="4" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="comma" k="82" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="period" k="123" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,B,F,M,N,P,R,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,AE,Ntilde,germandbls" k="-4" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="Z" k="20" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="colon" k="57" /> +<hkern g1="J,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" g2="semicolon" k="82" /> +<hkern g1="V" g2="J" k="145" /> +<hkern g1="V" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="2" /> +<hkern g1="V" g2="j" k="106" /> +<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="51" /> +<hkern g1="V" g2="m,n,p,r,ntilde" k="43" /> +<hkern g1="V" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="-20" /> +<hkern g1="V" g2="z" k="33" /> +<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" /> +<hkern g1="V" g2="s" k="51" /> +<hkern g1="V" g2="comma" k="123" /> +<hkern g1="V" g2="period" k="127" /> +<hkern g1="V" g2="Z" k="20" /> +<hkern g1="V" g2="colon" k="61" /> +<hkern g1="V" g2="semicolon" k="61" /> +<hkern g1="X" g2="J" k="51" /> +<hkern g1="X" g2="j" k="63" /> +<hkern g1="X" g2="S" k="2" /> +<hkern g1="Y,Yacute,Ydieresis" g2="J" k="164" /> +<hkern g1="Y,Yacute,Ydieresis" g2="j" k="94" /> +<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="57" /> +<hkern g1="Y,Yacute,Ydieresis" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="18" /> +<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="80" /> +<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="29" /> +<hkern g1="Y,Yacute,Ydieresis" g2="s" k="35" /> +<hkern g1="Y,Yacute,Ydieresis" g2="comma" k="184" /> +<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="45" /> +<hkern g1="Y,Yacute,Ydieresis" g2="colon" k="41" /> +<hkern g1="Y,Yacute,Ydieresis" g2="semicolon" k="41" /> +<hkern g1="Z" g2="J" k="82" /> +<hkern g1="Z" g2="L,U,W,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" /> +<hkern g1="Z" g2="j" k="74" /> +<hkern g1="Z" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="53" /> +<hkern g1="Z" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="33" /> +<hkern g1="Z" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="63" /> +<hkern g1="Z" g2="z" k="4" /> +<hkern g1="Z" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="43" /> +<hkern g1="Z" g2="t" k="12" /> +<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="8" /> +<hkern g1="Z" g2="hyphen" k="102" /> +<hkern g1="Z" g2="S" k="20" /> +<hkern g1="c,ccedilla" g2="j" k="76" /> +<hkern g1="c,ccedilla" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="43" /> +<hkern g1="c,ccedilla" g2="m,n,p,r,ntilde" k="2" /> +<hkern g1="c,ccedilla" g2="s" k="20" /> +<hkern g1="c,ccedilla" g2="t" k="23" /> +<hkern g1="c,ccedilla" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="10" /> +<hkern g1="c,ccedilla" g2="v" k="2" /> +<hkern g1="c,ccedilla" g2="z" k="4" /> +<hkern g1="c,ccedilla" g2="question" k="72" /> +<hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,oe" g2="j" k="68" /> +<hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,oe" g2="m,n,p,r,ntilde" k="10" /> +<hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,oe" g2="question" k="61" /> +<hkern g1="f" g2="j" k="96" /> +<hkern g1="f" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="16" /> +<hkern g1="f" g2="m,n,p,r,ntilde" k="59" /> +<hkern g1="f" g2="s" k="20" /> +<hkern g1="f" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="18" /> +<hkern g1="f" g2="v" k="-4" /> +<hkern g1="f" g2="question" k="41" /> +<hkern g1="f" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="49" /> +<hkern g1="f" g2="period" k="147" /> +<hkern g1="f" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="29" /> +<hkern g1="f" g2="x" k="8" /> +<hkern g1="f" g2="comma" k="147" /> +<hkern g1="f" g2="hyphen" k="102" /> +<hkern g1="k" g2="j" k="74" /> +<hkern g1="k" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="25" /> +<hkern g1="k" g2="m,n,p,r,ntilde" k="20" /> +<hkern g1="k" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="12" /> +<hkern g1="k" g2="question" k="82" /> +<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="25" /> +<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="j" k="57" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="4" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="m,n,p,r,ntilde" k="10" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="s" k="4" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="4" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="question" k="84" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="4" /> +<hkern g1="i,j,l,y,igrave,iacute,icircumflex,idieresis,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="16" /> +<hkern g1="g,h,m,n,q,ntilde" g2="j" k="137" /> +<hkern g1="g,h,m,n,q,ntilde" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="4" /> +<hkern g1="g,h,m,n,q,ntilde" g2="t" k="23" /> +<hkern g1="g,h,m,n,q,ntilde" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="16" /> +<hkern g1="g,h,m,n,q,ntilde" g2="z" k="12" /> +<hkern g1="g,h,m,n,q,ntilde" g2="question" k="82" /> +<hkern g1="g,h,m,n,q,ntilde" g2="period" k="20" /> +<hkern g1="g,h,m,n,q,ntilde" g2="f" k="39" /> +<hkern g1="g,h,m,n,q,ntilde" g2="braceright" k="20" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="j" k="86" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="20" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="question" k="80" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="12" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="period" k="20" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma" k="82" /> +<hkern g1="a,b,o,p,agrave,aacute,acircumflex,atilde,adieresis,aring,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="braceright" k="31" /> +<hkern g1="r" g2="j" k="119" /> +<hkern g1="r" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="8" /> +<hkern g1="r" g2="m,n,p,r,ntilde" k="33" /> +<hkern g1="r" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="20" /> +<hkern g1="r" g2="v" k="-4" /> +<hkern g1="r" g2="question" k="20" /> +<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" /> +<hkern g1="r" g2="period" k="139" /> +<hkern g1="r" g2="semicolon" k="61" /> +<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="47" /> +<hkern g1="r" g2="comma" k="123" /> +<hkern g1="r" g2="hyphen" k="102" /> +<hkern g1="r" g2="emdash" k="61" /> +<hkern g1="r" g2="endash" k="102" /> +<hkern g1="r" g2="quoteright" k="-29" /> +<hkern g1="s" g2="j" k="66" /> +<hkern g1="s" g2="t" k="4" /> +<hkern g1="s" g2="question" k="102" /> +<hkern g1="s" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" /> +<hkern g1="t" g2="j" k="68" /> +<hkern g1="t" g2="s" k="4" /> +<hkern g1="t" g2="question" k="45" /> +<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="12" /> +<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="4" /> +<hkern g1="t" g2="f" k="-8" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="j" k="61" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="m,n,p,r,ntilde" k="18" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="z" k="16" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="question" k="133" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="period" k="82" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" /> +<hkern g1="d,u,w,eth,ugrave,uacute,ucircumflex,udieresis" g2="f" k="2" /> +<hkern g1="v" g2="j" k="45" /> +<hkern g1="v" g2="m,n,p,r,ntilde" k="20" /> +<hkern g1="v" g2="z" k="-4" /> +<hkern g1="v" g2="question" k="59" /> +<hkern g1="v" g2="period" k="123" /> +<hkern g1="v" g2="comma" k="143" /> +<hkern g1="v" g2="f" k="-2" /> +<hkern g1="x" g2="j" k="59" /> +<hkern g1="x" g2="question" k="82" /> +<hkern g1="z" g2="j" k="61" /> +<hkern g1="z" g2="h,i,k,l,igrave,iacute,icircumflex,idieresis,thorn" k="25" /> +<hkern g1="z" g2="m,n,p,r,ntilde" k="10" /> +<hkern g1="z" g2="b,u,w,y,ugrave,uacute,ucircumflex,udieresis,yacute,ydieresis" k="6" /> +<hkern g1="z" g2="v" k="-2" /> +<hkern g1="z" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="25" /> +<hkern g1="z" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="33" /> +<hkern g1="asterisk" g2="m,n,p,r,ntilde" k="162" /> +<hkern g1="braceleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="-20" /> +<hkern g1="hyphen" g2="T" k="96" /> +<hkern g1="hyphen" g2="Z" k="51" /> +<hkern g1="parenleft" g2="C,E,G,O,Q,Ccedilla,Egrave,Eacute,Ecircumflex,Edieresis,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" /> +<hkern g1="period" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" /> +<hkern g1="quoteleft" g2="J" k="184" /> +<hkern g1="quoteleft" g2="j" k="82" /> +<hkern g1="quoteright" g2="m,n,p,r,ntilde" k="41" /> +<hkern g1="quoteright" g2="s" k="45" /> +<hkern g1="quoteright" g2="t" k="-31" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.ttf b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cb16dc3f62336320a213d40ac73f14e43c5761b2 Binary files /dev/null and b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.ttf differ diff --git a/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..cc61488a0d530ae2bae44541565849c34fd93df8 Binary files /dev/null and b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff differ diff --git a/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff2 b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e288a89d22a0d8db28fc91c6ab29397560edca65 Binary files /dev/null and b/library/templates/Muscle/Assets/fonts/phenomena-regular-webfont.woff2 differ diff --git a/library/templates/Muscle/Assets/images/banner.jpg b/library/templates/Muscle/Assets/images/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3aa39f85a654ed0721d43bd2d9c9182149da0d79 Binary files /dev/null and b/library/templates/Muscle/Assets/images/banner.jpg differ diff --git a/library/templates/Muscle/Assets/images/logo.png b/library/templates/Muscle/Assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d677f72ff4ac8b80c0ef17f4107aea063038d97c Binary files /dev/null and b/library/templates/Muscle/Assets/images/logo.png differ diff --git a/library/templates/Muscle/Library/FormCustomizer.php b/library/templates/Muscle/Library/FormCustomizer.php new file mode 100644 index 0000000000000000000000000000000000000000..fea2c6ae92434e72bc88c7fb272c9bea78e78d60 --- /dev/null +++ b/library/templates/Muscle/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 Muscle_Library_FormCustomizer extends Intonation_Library_FormCustomizer { + public function getTemplateForm($form) { + return (new Muscle_Library_FormCustomizer_Template($this->_template, $form))->getForm(); + } +} diff --git a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Summary.php b/library/templates/Muscle/Library/FormCustomizer/Template.php similarity index 56% rename from library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Summary.php rename to library/templates/Muscle/Library/FormCustomizer/Template.php index deaafe90bb571b434c30f350b15503c081e00c91..aeec1f99715dfd7750fdf33017627d0aa7895ca0 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record/RichContent/Summary.php +++ b/library/templates/Muscle/Library/FormCustomizer/Template.php @@ -20,39 +20,18 @@ */ -class Intonation_Library_View_Wrapper_Record_RichContent_Summary extends Intonation_Library_View_Wrapper_Record_RichContent_Section { +class Muscle_Library_FormCustomizer_Template extends Intonation_Library_FormCustomizer_Template { + public function getForm() { + parent::getForm(); + $this->_form + ->addElement('checkbox', + $this->_template->withNameSpace('muscle_css'), + ['label' => $this->_('muscle.css'), + 'order' => 3]); - public function getTitle() { - return $this->_('Résumé'); - } - - - public function getContent() { - if ($this->_content) - return $this->_content; - - return $this->_content = $this->_model->getResume(); - } - - - public function getClass() { - return 'summary'; - } - - - public function getNavUrl() { - return ['controller' => 'record', - 'action' => 'summary']; - } - - - public function getNavIco() { - return 'summary'; - } - + $this->_addToTemplateGroup(['muscle_css']); - public function getNavTitle() { - return $this->_('Le résumé du document'); + return $this; } } diff --git a/library/templates/Muscle/Library/ProfilePatcher.php b/library/templates/Muscle/Library/ProfilePatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..a69f7ee121c0502fadc920fdc8429432f5023f30 --- /dev/null +++ b/library/templates/Muscle/Library/ProfilePatcher.php @@ -0,0 +1,380 @@ +<?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 Muscle_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { + + protected + $_main_menu, + $_help_menu, + $_social_network_top_menu, + $_credits_menu; + + protected function _upgradeProfile() { + parent::_upgradeProfile(); + + $this->_profile + ->setAccessLevel(-1) + ->setLibelle($this->_('Accueil Musclé')); + + Class_AdminVar::set('MENU_BOITE', 1); + + return $this; + } + + + protected function _upgradeSections() { + $section_main = ((new Class_Systeme_Widget_Section_Main) + ->setProfileId($this->_profile_id) + ->load()); + + $section_main + ->setNewDatas(['boite' => ['no_border_radius','m-auto', 'pt-3', 'pb-3'], + $this->_template->withNameSpace('width_xsmall') => 11]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $first_section = ((new Class_Systeme_Widget_Section_FirstSide) + ->setProfileId($this->_profile_id) + ->load()); + + $first_section + ->setNewDatas(['boite' => ['pt-3', 'pb-3'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('visibility_index') => 1, + $this->_template->withNameSpace('visibility_recherche') => 0, + $this->_template->withNameSpace('visibility_abonne') => 0, + $this->_template->withNameSpace('visibility_cms') => 0, + $this->_template->withNameSpace('visibility_blog') => 0, + $this->_template->withNameSpace('visibility_auth') => 0]) + + ->updateProfile(); + + Class_Profil::clearCache(); + + $second_section = ((new Class_Systeme_Widget_Section_SecondSide) + ->setProfileId($this->_profile_id) + ->load()); + + $second_section + ->setNewDatas(['boite' => ['pt-3', 'pb-3'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('visibility_index') => 1, + $this->_template->withNameSpace('visibility_recherche') => 0, + $this->_template->withNameSpace('visibility_abonne') => 0, + $this->_template->withNameSpace('visibility_cms') => 0, + $this->_template->withNameSpace('visibility_blog') => 0, + $this->_template->withNameSpace('visibility_auth') => 0]) + ->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', + 'libelle' => $this->_('Accueil'), + 'use_profil' => $this->_profile_id], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Le réseau ou la médiathèque'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Agenda'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Offre en ligne'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Infos pratiques'), + 'url' => ''] + ] + ]); + + $this->_help_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu aide'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Comment accéder à mon compte'), + 'use_profil' => $this->_help_menu, + 'picto' => 'class fas fa-id-card', + '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'], + + ] + ]); + + + $this->_credits_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu crédits'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Contact'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Plan du site'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Mentions légales'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Crédits'), + '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 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_Login_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Connexion'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-end', 'pt-3'], + '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]) + + ->_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/Muscle/Assets/images/logo.png'), + 'link' => '', + $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_Search_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Recherche'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'm-auto', 'pt-3', 'justify-content-center'], + 'search_button' => 'class fas fa-search', + 'placeholder' => $this->_('Trouver un document'), + 'type_doc' => '', + $this->_template->withNameSpace('form_style') => 'inline', + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_xsmall') => 9, + $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_Nav_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu réseau sociaux haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'pt-3'], + 'menu' => $this->_profile_id . '-' . $this->_main_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_SMALL, + $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_Carousel_Article_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('À la une'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'm-auto', 'pt-3', 'pb-3'], + 'rendering' => 'card-overlay', + 'layout' => 'carousel', + 'size' => 3, + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('L\'agenda'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'm-auto', 'pt-3', 'pb-3'], + 'rendering' => 'card', + 'layout' => 'multiple_carousel', + 'size' => 9, + 'order' => 'EventDebut', + 'enabled_filters' => 'day;date;place', + '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_Domain_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Nouveautés'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'm-auto', 'auto_col', 'pt-3', 'pb-3'], + '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_MAIN, + ['titre' => $this->_('Accès'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'pt-3', 'pb-3', 'border-primary', 'border-left', 'pr-md-3'], + 'rendering' => 'card-description', + 'layout' => 'carousel', + 'osm_map' => 1, + 'size' => 10, + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 6, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Review_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Derniers avis'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'pl-md-3', 'pt-3', 'pb-3'], + 'rendering' => 'card', + 'layout' => 'carousel', + 'size' => 5, + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 6, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_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', 'pt-5', 'text-align-right', 'ml-auto', 'justify-content-end'], + 'menu' => $this->_profile_id . '-' . $this->_credits_menu, + $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]) + + ->_addScrollDownWidget() + ->_addScrollTopWidget() + ->_addAdminWidget() + ->_addAccessibilityWidget() + ->_addNotificationWidget(); + + return $this; + } +} \ No newline at end of file diff --git a/library/templates/Muscle/Library/Settings.php b/library/templates/Muscle/Library/Settings.php new file mode 100644 index 0000000000000000000000000000000000000000..116aa8e1899107bf2f8d58a9f56fe42e700f775a --- /dev/null +++ b/library/templates/Muscle/Library/Settings.php @@ -0,0 +1,72 @@ +<?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 Muscle_Library_Settings extends Intonation_Library_Settings { + protected function _getDefaultSettings() { + $settings = parent::_getDefaultSettings(); + $settings[$this->_template->withNameSpace('muscle_css')] = 1; + $settings[$this->_template->withNameSpace('width_xsmall')] = 11; + $settings[$this->_template->withNameSpace('width_small')] = 10; + $settings[$this->_template->withNameSpace('width_medium')] = 9; + + $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_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']; + + $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 align-self-center'; + + $settings[$this->_template->withNameSpace('hydrating_mapping')] = $hydrating_mapping; + return $settings; + } +} diff --git a/library/templates/Muscle/Template.php b/library/templates/Muscle/Template.php new file mode 100644 index 0000000000000000000000000000000000000000..24a21c27b286ace77cb88535da5defe1f3c4f12e --- /dev/null +++ b/library/templates/Muscle/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 Muscle_Template extends Intonation_Template { + + const ID = 'MUSCLE'; + + + public function __construct() { + $this->setId(static::ID) + ->setTitle($this->_('Musclé')) + ->setSettings(new Muscle_Library_Settings($this)) + ->setPatcher(new Muscle_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 Muscle_View_Opac($this, $view))->render(); + } + + + public function renderSubModal($view) { + return (new Muscle_View_SubModal($this, $view))->render(); + } + + + public function customTemplateForm($form) { + $helper = new Muscle_Library_FormCustomizer($this); + return $helper->getTemplateForm($form); + } +} diff --git a/library/templates/Muscle/View/Opac.php b/library/templates/Muscle/View/Opac.php new file mode 100644 index 0000000000000000000000000000000000000000..a86115252dda1ab21971adf24332f7c5650c01aa --- /dev/null +++ b/library/templates/Muscle/View/Opac.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 Muscle_View_Opac extends Intonation_View_Opac { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Muscle/Assets/css/muscle.css')); + return parent::_headContent(); + } +} diff --git a/library/templates/Muscle/View/SubModal.php b/library/templates/Muscle/View/SubModal.php new file mode 100644 index 0000000000000000000000000000000000000000..bb33fa76ae4cf16119200c6bb040c9ca4d543413 --- /dev/null +++ b/library/templates/Muscle/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 Muscle_View_SubModal extends Intonation_View_SubModal { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Muscle/Assets/css/muscle.css')); + return parent::_headContent(); + } +} diff --git a/library/templates/MyBibApp/Library/ProfilePatcher.php b/library/templates/MyBibApp/Library/ProfilePatcher.php index 4a10647a0f1c5d75b5261f730b7444fb8106c1fa..797e10035d9aaad1d4b760b09e2e92b0dc0d7900 100644 --- a/library/templates/MyBibApp/Library/ProfilePatcher.php +++ b/library/templates/MyBibApp/Library/ProfilePatcher.php @@ -26,7 +26,6 @@ class MyBibApp_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher parent::_upgradeProfile(); $this->_profile - ->setAccessLevel(ZendAfi_Acl_AdminControllerRoles::ABONNE) ->setLibelle($this->_('Accueil MyBibApp')); (new Class_Profil_Preferences()) @@ -84,9 +83,11 @@ class MyBibApp_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher 'message_connecte' => '', 'identifiant' => '', 'mot_de_passe' => '', - 'lien_connexion' => '', + 'identifiant_exemple' => $this->_('N° de carte / email'), + 'mot_de_passe_exemple' => $this->_('Mot de passe'), + 'lien_connexion' => $this->_('Se connecter'), + 'lien_mot_de_passe_oublie' => $this->_('Mot de passe oublié'), 'lien_deconnection' => '', - 'lien_mot_de_passe_oublie' => '', 'lien_compte' => '', 'lien_creer_compte' => '', $this->_template->withNameSpace('form_style') => 'inline', diff --git a/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css b/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css index c49261620c955e81d05d3ddc1b3c8db6c404d701..bf79f9fe020a5830ab44c1c1f29a03fc6829734d 100644 --- a/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css +++ b/library/templates/TerreDuMilieu/Assets/css/terredumilieu.css @@ -1,18 +1,31 @@ +@import url('https://fonts.googleapis.com/css?family=Fredoka+One|Hammersmith+One|Lato:400,700|Lobster+Two:400,700|Raleway+Dots'); + :root { + --front-background: #fff; + --tdm-search-color: #e83a3b; --tdm-link-color: #f1cb00; --tdm-button-text-color: #000; - --tdm-footer-link-color: #f9f9f9; + --tdm-footer-link-color: #fff; + --tdm-main-nav-color: wheat; - --tdm-main-background: #f9f9f9; + --tdm-main-background: #fff; + --tdm-login-input: #FFFCC8; + --tdm-search-button-background: rgba(255, 255, 255, 0.90); + --tdm-main-nav-link-background: rgba(0,0,0,0.8); --main-nav-button-background-color: #3dae9a; --first-division-background-color: #1a6362; - --main-division-background-color: #f9f9f9; + --main-division-background-color: #fff; --third-division-background-color: #f2f2f2; --footer-background-color: #3dae9a; --footer-widget-background-color: #000; } +body { + font-family: 'Lato'; + font-size:16px; +} + header { background: url(../images/header.jpg); background-position: top 3em center; @@ -26,23 +39,33 @@ header { .tdm_search_widget .form-control, .tdm_search_widget button { - background-color: rgba(255, 255, 255, 0.90); + background-color: var(--tdm-search-button-background); font-size: 1.2em; color: var(--tdm-search-color); vertical-align: middle; margin: 0; } +.ui-autocomplete { + border: none !important; + background: var(--third-division-background-color) !important; + color: var(--tdm-link-color) !important; +} + .tdm_search_widget .form-control { padding:0; } .tdm_search_widget button { - height: 2em; padding: 0 1em; border-left: 2px dotted var(--tdm-search-color) !important; } +.tdm_search_widget .expressionRecherche, +.tdm_search_widget button { + height: 2.5em; +} + .tdm_search_widget .form-row > .col { margin: 0; padding: 0; @@ -60,7 +83,7 @@ header { } .tdm_social_network_widget .nav-link:hover { - color: black !important; + color: black; } .tdm_social_network_widget .navbar { @@ -76,21 +99,31 @@ header { padding-bottom: 0.5em } -.tdm_main_nav_widget { - background: url('../images/nav.png'); - background-position: top center; - background-repeat: no-repeat; - padding: 7em 0 0 0 !important; +.widget.login input { + color: var(--tdm-button-text-color); + background-color: var(--tdm-login-input); } +.widget.login input[type="submit"] { + color: var(--tdm-main-background); + background: var(--tdm-main-nav-link-background); + padding: 0.5em 2em; +} + +.widget.login a { + color: var(--tdm-search-color); + background: transparent; +} .tdm_main_nav_widget .nav-link { - background-color: rgba(0,0,0,0.8); padding: 0.5em 1em !important; - color: wheat !important; + color: var(--tdm-main-nav-color); + display: block; + text-align: center; } .tdm_main_nav_widget .nav-item { + background-color: var(--tdm-main-nav-link-background); margin-right: 5px; display: inline-table; } @@ -99,16 +132,16 @@ header { margin: 0; } -.tdm_main_nav_widget .nav-link:last-child { - background-color: var(--main-nav-button-background-color) !important; +.tdm_main_nav_widget .nav-item:last-child { + background-color: var(--main-nav-button-background-color); } .tdm_main_nav_widget .nav-link:hover { - opacity: 0.7; + opacity: 0.8; } aside[data-division='1'] { - background-color: var(--first-division-background-color) !important; + background-color: var(--first-division-background-color); } body { @@ -132,19 +165,19 @@ footer .widget .nav-item a:hover, footer .widget btn, footer .widget btn:hover, footer .badge { - color: var(--tdm-footer-link-color) !important; + color: var(--tdm-footer-link-color); background: none; } footer .widget a, footer .widget a:hover { - color: var(--tdm-link-color) !important; + color: var(--tdm-link-color); background: none; } footer .widget a.btn[href*='render-all'] { background: var(--main-division-background-color); - color: var(--tdm-button-text-color) !important; + color: var(--tdm-button-text-color); } .widget > .card-footer, @@ -157,7 +190,7 @@ h2, h3, .card-title, .card-header { - color: var(--tdm-link-color) !important; + color: var(--tdm-link-color); background: none; font-weight: bold; font-size: 1em; @@ -177,30 +210,30 @@ a.text-secondary, .tdm_widget .btn, .tdm_widget .text-primary, .tdm_widget .text-secondary { - color: var(--tdm-button-text-color) !important; + color: var(--tdm-button-text-color); } .tdm_widget .btn { - background-color: var(--tdm-link-color) !important; + background-color: var(--tdm-link-color); } a.text-primary:hover, a.text-secondary:hover, .btn:hover, a:hover { - color: var(--tdm-button-text-color) !important; + color: var(--tdm-button-text-color); } -a[href*='render-all'] { +.widget-footer a[href*='render-all'] { border-radius: 100px !important; } -a[href*='render-all'] i, -a[href*='render-all'] div { +.widget-footer a[href*='render-all'] i, +.widget-footer a[href*='render-all'] div { display: none !important; } -a[href*='render-all']:after { +.widget-footer a[href*='render-all']:after { content: '+'; font-size: 2em; width: 35px; @@ -213,9 +246,15 @@ a[href*='render-all']:after { right: 0; } +.ui-state-active, +.btn:active, +a:active, +.btn:focus, +a:focus, .btn:hover, a:hover { - opacity: 0.7; + opacity: 0.8; + text-decoration: underline; } .border-primary { @@ -234,12 +273,12 @@ a:hover { .widget.admin_tools .dropdown-menu, .widget.admin_tools .dropdown-menu *:not(img) { - background: var(--footer-background-color) !important; + background: var(--footer-background-color); } .widget.admin_tools a, .widget.admin_tools a:hover { - color: var(--tdm-button-text-color) !important; + color: var(--tdm-button-text-color); } nav .nav-link { @@ -263,17 +302,32 @@ nav .nav-link { display: inline-block; } -.widget.login .dropdown-menu.show * { - text-align: center; - background-color: var(--tdm-main-background); -} - .widget.login .dropdown-menu.show a:hover, .widget.login .dropdown-menu.show a, .widget.login .dropdown-menu.show a * { - color: var(--tdm-main-background); - background-color: var(--tdm-button-text-color); - display:inline !important; + display: inline-block !important; + text-align: center !important; + padding: .5em 2em; +} + +.widget.login .btn.dropdown-toggle { + text-transform: uppercase; + background-image: url('../images/compte.png'); + background-repeat: no-repeat; + position: absolute; + z-index: 2; + background-position: top center; + padding-bottom: 45px; +} + +.widget.login .btn.dropdown-toggle:after { + display: none; +} + +.widget.login .btn.dropdown-toggle:active, +.widget.login .btn.dropdown-toggle:focus, +.widget.login .btn.dropdown-toggle:hover { + opacity: 1; } header { @@ -289,16 +343,21 @@ header { .tdm_flying_widget .navbar-collapse.collapsing, .tdm_flying_widget .navbar-collapse.collapse, .tdm_flying_widget a { - color: var(--tdm-main-background) !important; + color: var(--tdm-main-background); background-color: var(--footer-widget-background-color); text-transform: uppercase; } +.widget.tdm_flying_widget a { + background-color: transparent; +} + .tdm_flying_widget .navbar-collapse.collapsing, .tdm_flying_widget .navbar-collapse.collapse { padding: 2em 0.5em; height: 3000px; overflow:visible; + margin-top: -80px; } .tdm_flying_widget .navbar.navbar-collapse { @@ -311,7 +370,9 @@ header { text-align: right !important; border-radius: 100px !important; background-color: var(--tdm-link-color); - float: right; + position: absolute; + right: 5px; + z-index: 2; } .tdm_flying_widget .navbar-toggler { @@ -335,4 +396,35 @@ header { .tdm_flying_widget * { transition-delay: unset; transition-duration: unset; +} + +footer .tdm_social_network_widget .nav-item { + width: 25%; + text-align: center; +} + +footer .tdm_social_network_widget .nav-item:first-child { + width: 100%; + text-align: center; +} + +.z_index_11 { + z-index: 11; +} + +.tdm_flying_widget.position_fixed_top_right { + top: 80px !important; +} + +.breadcrumb { + background: var(--tdm-main-background); +} + +.widget.ariane { + text-align: center; +} + +ol.breadcrumb, +ol.breadcrumb li { + display: inline; } \ No newline at end of file diff --git a/library/templates/TerreDuMilieu/Assets/images/compte.png b/library/templates/TerreDuMilieu/Assets/images/compte.png new file mode 100644 index 0000000000000000000000000000000000000000..b6aa715eaeaf024a32c6c60a2c1ec85f22b8b609 Binary files /dev/null and b/library/templates/TerreDuMilieu/Assets/images/compte.png differ diff --git a/library/templates/TerreDuMilieu/Library/ProfilePatcher.php b/library/templates/TerreDuMilieu/Library/ProfilePatcher.php index 5aeaf287acc6b3ae38c0f2bce88bca21385c8cc1..7b99f07d2639288355ecde71ebccc3a1214d1262 100644 --- a/library/templates/TerreDuMilieu/Library/ProfilePatcher.php +++ b/library/templates/TerreDuMilieu/Library/ProfilePatcher.php @@ -268,15 +268,15 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Login_Definition::CODE, Class_Profil::DIV_BANNIERE, - ['titre' => $this->_('Connexion'), + ['titre' => $this->_('Mon compte'), 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background'], 'titre_connecte' => $this->_('Mon compte'), 'message_connecte' => '', - 'identifiant' => '', - 'identifiant_exemple' => $this->_('N° de carte'), - 'mot_de_passe' => '', - 'mot_de_passe_exemple' => $this->_('Année de naissance'), - 'lien_connexion' => $this->_('Valider'), + 'identifiant' => $this->_('N° de carte / email'), + 'identifiant_exemple' => $this->_('N° de carte / email'), + 'mot_de_passe' => $this->_('Mot de passe'), + 'mot_de_passe_exemple' => $this->_('Mot de passe'), + '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'), @@ -288,12 +288,23 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat $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', 'admin_tools_invert_colors'], + 'image' => Class_Url::absolute('/library/templates/TerreDuMilieu/Assets/images/nav.png'), + 'link' => '', + $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_Nav_Definition::CODE, Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Menu réseau sociaux haut'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_main_nav_widget', 'tdm_widget'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_main_nav_widget', 'tdm_widget', 'admin_tools_invert_colors'], 'menu' => $this->_profile_id . '-' . $this->_menu_id, - $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_SMALL, $this->_template->withNameSpace('width_xsmall') => 12, $this->_template->withNameSpace('show_header') => 0, $this->_template->withNameSpace('show_content') => 0, @@ -302,14 +313,26 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE, Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Recherche'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'tdm_search_widget', 'm-auto', 'pt-3'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'tdm_search_widget', 'm-auto', 'pt-3', 'admin_tools_invert_colors'], 'search_button' => 'class fas fa-search', 'placeholder' => $this->_('Titre, auteur…'), 'type_doc' => '', $this->_template->withNameSpace('form_style') => 'inline', $this->_template->withNameSpace('width_xsmall') => 11, $this->_template->withNameSpace('width_small') => 8, - $this->_template->withNameSpace('width_medium') => 5, + $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_Breadcrumb_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Fil d\'ariane'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start'], + 'root' => '', + 'show_profile' => 1, + $this->_template->withNameSpace('visibility_index') => 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]) @@ -322,7 +345,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat 'layout' => 'multiple_carousel', 'size' => 3, 'order' => 'EventDebut', - 'enabled_filters' => 'day;date;place', + 'enabled_filters' => '', 'link_to_all' => 1, $this->_template->withNameSpace('width_xsmall') => 11, $this->_template->withNameSpace('width_small') => 10, @@ -392,10 +415,13 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Menu réseau sociaux bas'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_social_network_widget', 'pt-3', 'pb-3'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_social_network_widget', 'pt-3', 'pb-3', 'admin_tools_invert_colors'], 'menu' => $this->_profile_id . '-' . $this->_social_network_bottom_menu, $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, - $this->_template->withNameSpace('width_xsmall') => 3, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_small') => 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]) @@ -403,13 +429,16 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Carousel_Library_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Adresse bibliothèque'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'pt-3', 'pb-3', 'border-primary', 'border-left'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'pt-3', 'pb-3', 'border-primary', 'border-left', 'admin_tools_invert_colors'], 'rendering' => 'card-description', 'layout' => 'carousel', 'osm_map' => 0, - 'size' => 1, + 'size' => 5, 'link_to_all' => 1, - $this->_template->withNameSpace('width_xsmall') => 3, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_small') => 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') => 1]) @@ -417,11 +446,13 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, Class_Profil::DIV_FOOTER, ['titre' => $this->_('Menu crédits'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'pt-3', 'pb-3', 'border-primary', 'border-left'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'pt-3', 'pb-3', 'border-primary', 'border-left', 'admin_tools_invert_colors'], 'menu' => $this->_profile_id . '-' . $this->_credits_menu, 'layout' => 'vertical', $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, - $this->_template->withNameSpace('width_xsmall') => 3, + $this->_template->withNameSpace('width_xsmall') => 12, + $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]) @@ -429,7 +460,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, Class_Profil::DIV_BANNIERE, ['titre' => $this->_('Menu volant'), - 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_flying_widget', 'position_fixed_top_right'], + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'tdm_flying_widget', 'position_fixed_top_right', 'z_index_11'], 'menu' => $this->_profile_id . '-' . $this->_flying_menu, $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_ALWAYS, $this->_template->withNameSpace('width_xsmall') => 6, @@ -440,6 +471,7 @@ class TerreDuMilieu_Library_ProfilePatcher extends Intonation_Library_ProfilePat $this->_template->withNameSpace('show_footer') => 0]) ->_addScrollTopWidget() + ->_addScrollDownWidget() ->_addAdminWidget() ->_addAccessibilityWidget() ->_addNotificationWidget(); diff --git a/library/templates/TerreDuMilieu/Library/Settings.php b/library/templates/TerreDuMilieu/Library/Settings.php index f1a55f21e23e72e4a727abc0cbdeee84dd1743a1..2f239c2d386e0dd1c366c74f86500e8865e5ee06 100644 --- a/library/templates/TerreDuMilieu/Library/Settings.php +++ b/library/templates/TerreDuMilieu/Library/Settings.php @@ -49,13 +49,19 @@ class TerreDuMilieu_Library_Settings extends Intonation_Library_Settings { 'tdm_social_network_widget', 'tdm_main_nav_widget', 'border-primary', - 'border-left']; + 'border-left', + '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 btn'] = ''; + $hydrating_mapping['a'] = ''; + $hydrating_mapping['a class more_action'] = ''; $hydrating_mapping['a class nav-link'] = ''; + $hydrating_mapping['a class jumbotron_nav_link'] = ''; + $hydrating_mapping['a class carousel_control'] = ''; $settings[$this->_template->withNameSpace('hydrating_mapping')] = $hydrating_mapping; return $settings; diff --git a/public/opac/css/core.css b/public/opac/css/core.css index 332681779c38f76815be03043cdd2e8e40484153..840ec34f4a640ad0c869815153ca347caf0eb387 100644 --- a/public/opac/css/core.css +++ b/public/opac/css/core.css @@ -35,3 +35,104 @@ section { height: 100%; min-height: 50px; } + +.ui-autocomplete li { + display: block !important; + margin: 0 !important; + padding: 0 !important; + border: none !important; + background: transparent !important; +} + +.ui-autocomplete li:hover { + border: none !important; + background: transparent !important; +} + +.ui-autocomplete { + width: auto !important; +} + +.ui-autocomplete a { + display: block !important; + border: none !important; + background: transparent !important; + margin: 1px !important; + padding: 4px !important; +} + +.ui-autocomplete a:hover { + border: none; + margin: 1px !important; + padding: 4px !important; + text-decoration: underline; +} + +.ui-widget { + font-family: unset !important; +} + +.ui-autocomplete a span { + font-weight: bold; +} + +.deactivate_show_admin_icons.menu_admin_front_anchor[style*='inline'] { + display: block !important; +} + +.masonry { + display: grid; + grid-gap: 1em; + grid-template-columns: repeat( auto-fill, minmax(200px, 1fr) ); + grid-auto-rows: 0; +} + +.masonry-brick { + visibility: hidden; +} + +.card-img-top > .masonry, +.img-thumbnail > .masonry { + grid-gap: 3px; + grid-template-columns: repeat(3, 30%); +} + +.card-img-top > .masonry .card-img-overlay div, +.img-thumbnail > .masonry .card-img-overlay div { + display: none; + visibility: hidden; +} + + +.img-thumbnail[src=''] { + display: none; +} + +ol.breadcrumb li { + padding-left: .5rem; +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light[aria-expanded="true"] .navbar-toggler-icon { + background-image: unset; +} + +.navbar-light[aria-expanded="true"] .navbar-toggler-icon:after { + content: 'x'; + display: inline; + vertical-align: middle; + font-size: 1.5em; + color: black; +} + +.admin_tools_invert_colors .configuration_module, +.admin_tools_invert_colors .edit_menu { + filter: invert(1); +} + +.ui-widget-content .ui-state-active { + color: unset; +} \ No newline at end of file diff --git a/public/opac/java/search_autocomplete/search_autocomplete.js b/public/opac/java/search_autocomplete/search_autocomplete.js index 78f02907f1062024a4f15bacf704f301d7b7b29c..b8a7c717a9acbb3114603c33aed3d6bf828fcaf6 100644 --- a/public/opac/java/search_autocomplete/search_autocomplete.js +++ b/public/opac/java/search_autocomplete/search_autocomplete.js @@ -40,10 +40,7 @@ } }, - - - - + _renderItem: function(ul, item) { return $("<li>") .data("item.autocomplete", item) diff --git a/scripts/emacs/phafi-mode.el b/scripts/emacs/phafi-mode.el index 1b2f74888497a556138dbf4655e68bc8fda9c6e4..6070213d6d317702924498703734b8fcb74a80f1 100644 --- a/scripts/emacs/phafi-mode.el +++ b/scripts/emacs/phafi-mode.el @@ -75,7 +75,7 @@ (gtags-mode t) (setq ag-highlight-search t) (setq ag-arguments (list "--smart-case" - "--column" + "--column" "--ignore" "phonetix.txt" "--ignore" "TAGS" "--ignore-dir" "report" diff --git a/tests/scenarios/Templates/MuscleTemplateTest.php b/tests/scenarios/Templates/MuscleTemplateTest.php new file mode 100644 index 0000000000000000000000000000000000000000..255655c827fcf71da504eb4eeb5d7d57fd06dde5 --- /dev/null +++ b/tests/scenarios/Templates/MuscleTemplateTest.php @@ -0,0 +1,162 @@ +<?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 MuscleTemplateTestCase extends 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 Muscle_Template)->tryOn($profile); + (new Class_Profil_Promoter())->promote($profile); + + } + + + public function tearDown() { + parent::tearDown(); + Class_Systeme_ModulesAccueil::reset(); + } +} + + + + +class MuscleTemplateAdminTemplateIndexDispatchTest extends MuscleTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/admin/template/index'); + } + + + /** @test */ + public function editMuscleUrlShouldBeDisplay() { + $this->assertXPath('//table//a[contains(@href,"/admin/template/edit/template/MUSCLE")]'); + } +} + + + +class MuscleTemplateProfilePatcherTest extends MuscleTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/index/index'); + } + + + public function widgetsClasses() { + return [ + ['login'], + ['accessibility'], + ['rech_simple'], + ['admin_tools'], + ['scroll'], + ['library'], + ['critiques'], + ]; + } + + + /** + * @dataProvider widgetsClasses + * @test */ + public function indexShouldContainsWidgets($widget_class) { + $this->assertXPath(sprintf('//div[contains(@class, "widget")][contains(@class, "%s")]', + $widget_class)); + } + + + /** @test */ + public function editTemplateMuscleShouldBePresent() { + $this->assertXPathContentContains('//a[contains(@href, "admin/template/edit/template/MUSCLE")]', 'Configuration du template'); + } +} + + + +class MuscleTemplateOpacIndexWithUserAgentTest extends MuscleTemplateTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/index/index'); + } + + + /** @test */ + public function pageTitleShouldBeTestCharteMuscle() { + $this->assertXPathContentContains('//head/title', 'Musclé'); + } + + + /** @test */ + public function pageShouldLoadMuscleCss() { + $this->assertXPath('//head/link[contains(@href, "/templates/Muscle/Assets/css/muscle.css")]'); + } + + + /** @test */ + public function pageShouldBeHtml5Valid() { + $this->assertHTML5(); + } + + + /** @test */ + public function pageShouldBeAccessible() { + $this->assertAccessible($this->_response->getBody()); + } +} + + + +class MuscleTemplateEditTemplateTest 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' => 'MUSCLE']); + + $this->dispatch('/admin/template/edit/template/muscle'); + } + + + /** @test */ + public function checkboxMuscleCssShouldBeChecked() { + $this->assertXPath('//form//input[@type="checkbox"][@name="MuscleMuscleCss"][@checked]'); + } + + + /** @test */ + public function customCssShouldContainsClassMenuButtons() { + $this->assertContains('"menu_buttons"', $this->_response->getBody()); + } +} \ No newline at end of file diff --git a/tests/scenarios/Templates/TemplatesTest.php b/tests/scenarios/Templates/TemplatesTest.php index 93685c1c02b193ea9e7a11863d620bf2f9ba0db7..f921d8b43ee08ed5961af0dd63721f01c20c917a 100644 --- a/tests/scenarios/Templates/TemplatesTest.php +++ b/tests/scenarios/Templates/TemplatesTest.php @@ -985,6 +985,7 @@ class TemplatesDispatchIntonationSearchTest extends TemplatesIntonationTestCase $this->assertEquals('INTONATION', Class_Profil::getCurrentProfil()->getTemplate()); } + /** @test */ public function linkToDeleteFacetShoulContainsMultifacetT3() { $this->assertXPathContentContains('//div[@class="criteres_recherche"]//a[@href="/recherche/simple/expressionRecherche/pomme/multifacets/T1"]', 'Site:'); @@ -1572,6 +1573,13 @@ class TemplatesDispatchIntonationWithAccessibilityTest extends TemplatesIntonati $this->dispatch('/opac/index/index/id_profil/72', true); $this->assertXPath('//button/i[contains(@class, "fa-low-vision")]'); } + + + /** @test */ + public function fontSizeRulesCssShouldBeLoaded() { + $this->dispatch('/opac/index/index/id_profil/72', true); + $this->assertXPath('//head/link[contains(@href, "public/opac/css/font_size_rules.css")]'); + } } @@ -1957,6 +1965,20 @@ class TemplatesCmsArticleViewTest extends TemplatesIntonationTestCase { class TemplatesViewRecordTest extends TemplatesIntonationTestCase { public function setUp() { parent::setUp(); + + $conf = (new Class_Systeme_Widget_Action) + ->setId('recherche_viewnotice_1') + ->setProfileId(72) + ->load(); + + $conf + ->setNewDatas(['IntonationIcoAllRecordData' => 'https://ma.super-ico.afi-sa.fr', + 'IntonationLabelAllRecordData' => 'Tout savoir', + 'IntonationTitleAllRecordData' => 'Tout savoir sur la notice']) + ->updateProfile(); + + Class_Profil::clearCache(); + $this->fixture('Class_CodifGenre', ['id' => 13, 'libelle' => 'Roman']); @@ -1967,10 +1989,15 @@ class TemplatesViewRecordTest extends TemplatesIntonationTestCase { $this->fixture('Class_Notice', ['id' => 456, + 'type_doc' => 1, 'titre_principal' => 'Psycho', 'clef_oeuvre' => 'PSYKO', 'facettes' => 'G13 M12']); + $this->fixture('Class_TypeDoc', + ['id' => 1, + 'label' => 'book']); + $this->fixture('Class_AvisNotice', ['id' => 178, 'entete' => "Lost héighway", @@ -2019,7 +2046,13 @@ class TemplatesViewRecordTest extends TemplatesIntonationTestCase { /** @test */ public function recordNavShouldContainsHomeLinkActive() { - $this->assertXPath('//ul[contains(@class, "nav")]//li//a[contains(@class, "active")][contains(@href, "recherche/viewnotice")]'); + $this->assertXPathContentContains('//ul[contains(@class, "nav")]//li//a[contains(@class, "active")][contains(@href, "recherche/viewnotice")]//div', 'Tout savoir'); + } + + + /** @test */ + public function recordNavHomeLinkShouldContainsIcoMaSuperIcoAndToutSavoirSurLaNoticeTitle() { + $this->assertXPath('//ul[contains(@class, "nav")]//li//a[contains(@class, "active")][contains(@href, "recherche/viewnotice")][@title="Tout savoir sur la notice"]//img[@src= "https://ma.super-ico.afi-sa.fr"]'); } } @@ -2299,13 +2332,13 @@ class TemplatesRecordResumeDispatchTest extends TemplatesIntonationTestCase { ->set_subfield('330', 'a', 'Résumé du document') ->save(); - $this->dispatch('/opac/record/summary/id/456/id_profil/72'); + $this->dispatch('/opac/recherche/viewnotice/id/456/id_profil/72'); } /** @test */ - public function pageTitleShouldBePsychoResume() { - $this->assertXPathContentContains('//head//title', 'Psycho : Résumé'); + public function linkToEditActionViewNoticeShouldBePresent() { + $this->assertXPath('//a[contains(@href, "/admin/widget/edit-action/id/recherche_viewnotice/id_profil/72")]'); } @@ -2794,6 +2827,10 @@ class TemplatesDispatchIntonationSearchListFormatWallTest extends TemplatesInton public function setUp() { parent::setUp(); + $this->fixture('Class_CodifAuteur', + ['id' => 43, + 'libelle' => 'Pomme d\'API']); + $records = [$this->fixture('Class_Notice', ['id' => 89]), $this->fixture('Class_Notice', @@ -2812,7 +2849,12 @@ class TemplatesDispatchIntonationSearchListFormatWallTest extends TemplatesInton ->answers(['facettes' => '']) ->whenCalled('fetchFacetsAndTags') - ->answers(['facettes' => '']) + ->answers(['facettes' => '', + 'suggests' => [['id' => 'M87', + 'label' => 'Pomme (sujet)'], + + ['id' => 'A43', + 'label' => 'Pomme d\'API (auteur)']]]) ->whenCalled('getRecordsCount') ->answers(2) @@ -2841,8 +2883,7 @@ class TemplatesDispatchIntonationSearchListFormatWallTest extends TemplatesInton /** @test */ public function searchResultOrderShouldBeAuthorDESC() { - $this->assertXPath('//select/option[@selected="selected"][@value="alpha_auteur desc"]', - $this->_response->getBody()); + $this->assertXPath('//select/option[@selected="selected"][@value="alpha_auteur desc"]'); } @@ -2856,6 +2897,12 @@ class TemplatesDispatchIntonationSearchListFormatWallTest extends TemplatesInton public function buttonMurShouldBeActive() { $this->assertXpath('//div//a[contains(@class, "active")][contains(@href, "/liste_format/4")]'); } + + + /** @test */ + public function suggestionsShouldBeDisplay() { + $this->assertXPathContentContains('//b', 'Suggestions', $this->_response->getBody()); + } } @@ -4000,6 +4047,20 @@ class TemplatesDispatchAuthorActionsTest extends TemplatesIntonationWithAuthorTe } + /** @test */ + public function authorViewShouldContainsEditAction() { + $this->dispatch('/opac/author/view/id/10/id_profil/72'); + $this->assertXPath('//a[contains(@href, "/admin/widget/edit-action/id/author_view/id_profil/72")]'); + } + + + /** @test */ + public function authorViewShouldContainsExtendAction() { + $this->dispatch('/opac/author/view/id/10/id_profil/72'); + $this->assertXPath('//a[contains(@href, "/admin/modules/apply-to/id/author_view/id_profil/72")]'); + } + + /** @test */ public function dispatchBiograpryShouldDisplayBiography() { $this->dispatch('/author/biography/id/10/id_profil/72'); @@ -4086,26 +4147,54 @@ class TemplatesDispatchAdminWidgetEditActionTest extends TemplatesIntonationTest /** @test */ public function dispatchModuleShouldContainsExpectation() { $this->dispatch('/opac/abonne/fiche/id_profil/72'); - $this->assertXPath('//a[contains(@href, "/admin/widget/edit-action/id/abonne_fiche/id_profil/72")]', - $this->_response->getBody()); + $this->assertXPath('//a[contains(@href, "/admin/widget/edit-action/id_profil/72/id/abonne_fiche")]'); } /** @test */ public function customCssClassesShouldBePresent() { - $this->dispatch('/admin/widget/edit-action/id/recherche_simple/id_profil/72'); + $this->dispatch('/admin/widget/edit-action/id/recherche_resultat_simple/id_profil/72'); $this->assertXPath('//input[@type="checkbox"][@value="ultra_light_widget"]'); } + /** @test */ + public function pageTitleShouldBeConfigartionDeLaPageDuDocumentDeTypeBook() { + $this->dispatch('/admin/widget/edit-action/id/recherche_viewnotice_1/id_profil/72'); + $this->assertXPathContentContains('//h1', 'Configuration de la page des documents de type livres'); + } + + + /** @test */ + public function renameTabTextShouldBePresent() { + $this->dispatch('/admin/widget/edit-action/id/recherche_viewnotice/id_profil/72'); + $this->assertXPath('//input[@type="text"][@id="IntonationLabelDocumentItems"]'); + } + + + /** @test */ + public function changeTabIcoShouldBePresent() { + $this->dispatch('/admin/widget/edit-action/id/recherche_viewnotice/id_profil/72'); + $this->assertXPath('//input[@type="text"][@id="IntonationIcoDocumentItems"]'); + } + + + /** @test */ + public function changeTabTitleShouldBePresent() { + $this->dispatch('/admin/widget/edit-action/id/recherche_viewnotice/id_profil/72'); + $this->assertXPath('//input[@type="text"][@id="IntonationTitleDocumentItems"]'); + } + + /** @test */ public function customCssClassesShouldHaveBeenSaved() { - $this->postDispatch('/admin/widget/edit-action/id/recherche_simple/id_profil/72', + $this->postDispatch('/admin/widget/edit-action/id/recherche_resultat_simple/id_profil/72', ['boite' => 'ultra_light_widget']); $this->assertContains('ultra_light_widget', (new Class_Profil_Preferences())->getModulePref(Class_Profil::find(72), (new Class_Profil_ModuleDefinition('recherche', + 'resultat', 'simple')))); } diff --git a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php index 5a4ec2f9ac3c60231d4e1ef4340d19d31ccba3b5..a71b9ff93bbf6461fac0b6daabbf3b63e0467c76 100644 --- a/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php +++ b/tests/scenarios/Templates/TerreDuMilieuTemplateTest.php @@ -119,6 +119,18 @@ class TerreDuMilieuTemplateOpacIndexWithUserAgentTest extends TerreDuMilieuTempl } + /** @test */ + public function searchWidgetInFlyingWidgetShouldHaveIdBoite1Mnus5() { + $this->assertXPath('//div[contains(@class, "tdm_flying_widget")]//div[contains(@class, "tdm_search_widget")][@id="boite_1-5"]'); + } + + + /** @test */ + public function searchWidgetInFlyingWidgetShouldHaveInputExpressionRechercheIdIdBoite1Mnus5() { + $this->assertXPath('//div[contains(@class, "tdm_flying_widget")]//div[contains(@class, "tdm_search_widget")][@id="boite_1-5"]//input[@id="expressionRecherche1-5"]'); + } + + /** @test */ public function pageShouldBeHtml5Valid() { $this->assertHTML5();