diff --git a/library/Class/Template/Loader.php b/library/Class/Template/Loader.php index 2f98ef23d2f05f2d68dcf66bc7160005bf86de7c..2dc58834205b74203143429d5782c93ecac41dc9 100644 --- a/library/Class/Template/Loader.php +++ b/library/Class/Template/Loader.php @@ -27,9 +27,10 @@ class Class_Template_Loader { public function getTemplates() { return [new Historic_Template, new Intonation_Template, + new Muscle_Template, new MyBibApp_Template, + new Polygone_Template, new TerreDuMilieu_Template, - new Muscle_Template ]; } diff --git a/library/templates/Intonation/Library/View/Wrapper/Record.php b/library/templates/Intonation/Library/View/Wrapper/Record.php index fbae409139cbd432e43b2e3758a740cd5a236050..107bdf2ffd285327d50ad44c09532170ad238c9a 100644 --- a/library/templates/Intonation/Library/View/Wrapper/Record.php +++ b/library/templates/Intonation/Library/View/Wrapper/Record.php @@ -204,6 +204,19 @@ class Intonation_Library_View_Wrapper_Record extends Intonation_Library_View_Wra ->setTitle($facet->getTitle()) ->setUrl($facet->getUrlForLink())); + if ( $this->_model->hasTome()) { + $serie = $this->_model->getClefChapeau() . '-' . $this->_model->getTypeDoc(); + + $label = Class_Codification::getLibelleForSerie($this->_model); + $badges [] = (new Intonation_Library_Badge) + ->setTag('a') + ->setUrl($this->_view->url((new Class_CriteresRecherche)->getNewUrlCriteresSerie($serie), null, true)) + ->setClass('white') + ->setText($label) + ->setTitle($this->_view->_('Lancer une recherche pour %s', lcfirst($label))); + } + + return $this->_view->renderBadges($badges); } diff --git a/library/templates/Intonation/View/TagAction.php b/library/templates/Intonation/View/TagAction.php index 08e92e01172ce99543deacd2a1d404718c7af518..3417b0a48af57b98bd19523b2e0e47457833f67a 100644 --- a/library/templates/Intonation/View/TagAction.php +++ b/library/templates/Intonation/View/TagAction.php @@ -81,10 +81,10 @@ class Intonation_View_TagAction extends ZendAfi_View_Helper_BaseHelper { return ''; if ($action->getNoButtonText()) - return $this->_tag('div', $text, ['class' => ' d-inline text-left']); + return $this->_tag('div', $text, ['class' => 'd-inline text-left']); if (!$img) - return $this->_tag('div', $text, ['class' => ' d-inline button_text text-left']); + return $this->_tag('div', $text, ['class' => 'd-inline button_text text-left']); return $this->_tag('div', $text, ['class' => 'd-none d-md-inline text-left button_text']); } diff --git a/library/templates/Muscle/Library/ProfilePatcher.php b/library/templates/Muscle/Library/ProfilePatcher.php index a69f7ee121c0502fadc920fdc8429432f5023f30..8f5b2d0b4f25d7be47e39fcb2e0efee3911c76f7 100644 --- a/library/templates/Muscle/Library/ProfilePatcher.php +++ b/library/templates/Muscle/Library/ProfilePatcher.php @@ -126,7 +126,6 @@ class Muscle_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { 'menus' => [ ['type_menu' => 'URL', 'libelle' => $this->_('Comment accéder à mon compte'), - 'use_profil' => $this->_help_menu, 'picto' => 'class fas fa-id-card', 'url' => ''], diff --git a/library/templates/Polygone/Assets/css/polygone.css b/library/templates/Polygone/Assets/css/polygone.css new file mode 100644 index 0000000000000000000000000000000000000000..3d61fb45feb2d152f5a42a65f8dc334e8881be07 --- /dev/null +++ b/library/templates/Polygone/Assets/css/polygone.css @@ -0,0 +1,450 @@ +@import url('https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700,900|Ubuntu+Condensed|Ubuntu:300,400,500,700&display=swap'); + +:root { +} + +body { + font-family: 'Ubuntu'; + font-size: 16px; + background: white; + color: #010202; + font-weight: 300; +} + +#site_web_wrapper { + background-image: url('../images/body.png'); + background-repeat: repeat-y; + background-position: top right; + background-color: transparent; +} + +.ui-widget *:not(i) { + font-family: 'Roboto'; + font-size: 16px; +} + +.widget.login .dropdown-toggle, +.nav nav .nav-link, +.widget-header, +h1, +h2, +h3 { + font-size: 2em; + font-weight: bold; +} + +header { + background: url(../images/banner.png); + background-position: top right; + background-repeat: no-repeat; + background-size: contain; + background-color: #ededed; +} + +.widget.justify-content-end * { + justify-content: flex-end; + text-align: right; +} + +.widget.justify-content-start * { + justify-content: flex-start; + text-align: left; +} + +.widget.justify-content-center * { + justify-content: center; +} + +.login .dropdown { + display: flex; +} + +.menu_buttons .button_text { + display: none !important; +} + +.menu_buttons .nav-link, +.menu_buttons .nav-link:hover { + +} + +.login .dropdown-toggle, +.login .dropdown-menu { +} + +.ui-state-active, +.btn:active, +a:active, +.btn:focus, +a:focus, +.btn:hover, +a:hover { + opacity: 0.8; + text-decoration: underline; +} + +.btn-sm, +col-form-label-sm, +.form-control-sm { + font-size: 1em; +} + +.rech_simple.widget form div { + padding: 0; + margin: 0; +} + +.rech_simple.widget input, +.rech_simple.widget button { + line-height: 1em; + vertical-align: middle; + margin: 0; + padding: 5px; + height: 40px; + min-width: 50px; + font-size: 1.5em; +} + +.rech_simple .dropdown-menu { + left: -33% !important; +} + +.rech_simple.widget button[type='submit'] { +} + +.rech_simple.widget ::placeholder { +} + +.widget.card, +.widget-header, +.breadcrumb, +nav { +} + +.nav nav .nav-link { + font-size: 1.8em; + border-right: 1px solid var(--polygone-black) !important; + line-height: 0.8em; +} + +nav .nav-item:last-child .nav-link { + border-right: 0px !important; +} + +.widget.nav { + margin-top: 4em; +} + +.widget.nav .navbar-toggler { + margin-top: -4em; +} + +#site_web_wrapper { + box-shadow: var(--polygone-grey) 0px 0px 5px; +} + +body, +#site_web_wrapper { +} + +footer { + font-size: 0.875em; +} + +footer .nav-link { + border-right: 1px solid var(--polygone-red) !important; + line-height: 0.8em; + text-align: center; +} + +.nav-item:last-child .nav-link { + border-right-width: 0 !important; +} + +.ui-autocomplete, +.ui-autocomplete *, +.ui-autocomplete *:hover { + border: none !important; +} + +.widget.login { + padding: 0; +} + +.widget.login * { +} + +.widget.login input { +} + +.widget.login form * { + text-align: left; +} + +.widget.login .text-secondary { +} + +.widget.login .dropdown-toggle, +.widget.login .dropdown-toggle:after { + font-size: 20px; + margin-right: 0; + color: white; + background: #223a7e; +} + +.widget.login .dropdown-toggle { + padding-right: 1em; +} + +.widget.login .dropdown-menu { + position: absolute; + right: 0; + left: auto; +} + +header .card-body { + padding: 0; +} + +.widget.login a { + +} + +.widget.login #login { + position: absolute; + bottom: 4em; + left: 0.875em; +} + +.widget.login a { + font-weight: bold; +} + +.widget.login a[href*="/auth/lostpass"] { + display: block; + margin-top: 4em; +} + +.widget.login form { + max-width: 200px; +} + +.widget-footer a.btn-secondary { +} + +.widget-footer { + text-align: right; +} + +.badge-group .badge { +} + +.badge-group a.badge { +} + +a, +a:hover { +} + +a.text-primary, +a.text-primary:hover { +} + +.carousel-item .card-footer { + margin: 0 1rem; +} + +.widget > .card-footer, +.card-footer { +} + +.masonry-content > .card > .card-footer { + padding: 5px; +} + +.list-group-item.active, +.nav-tabs, +.border-primary { +} + +.nav-tabs .nav-item { + border-bottom: 1px solid transparent; +} + +.card-footer { + border-top: none; +} + +.no_badges .badge-group, +.no_badget .badge { + display: none; +} + +.no_card_footer .card-footer { + display: none !important; +} + +.polygone_widget { + background-image: url('../images/widget_bg.png'); + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; +} + +.widget > .card-footer, .card-footer { + background: none; +} + +footer { + background-image: url('../images/footer_corner.png'); + background-repeat: no-repeat; + background-position: bottom right; + background-color: #31ade4; +} + +.card-header { + background: transparent; +} + +.polygone_big_menu_buttons .nav-item { + width: 33.33%; +} + +.polygone_big_menu_buttons .nav-link { + position: relative; + padding: 0 !important; +} + +.polygone_big_menu_buttons .nav-item + .nav-item .nav-link { + margin-left: 10px; +} + +.polygone_big_menu_buttons .nav-link div { + display: block !important; + background: var(--widget-shadow); + padding: 1em 0em; + text-align: center !important; + color: white; + font-weight: bold; + text-transform: uppercase; + position: absolute; + width: 100%; + bottom: 0; + left: 0; +} + +.polygone_big_menu_buttons .navbar { + padding: 0; +} + +.polygone_big_menu_buttons .nav-link img { + width: 100%; + height: auto; +} + +a, +a:hover, +a:focus, +a:visited { + color: #223a7e; +} + +[class*="-primary"], +[class*="-primary"]:hover, +[class*="-primary"]:focus, +[class*="-primary"]:visited, +[class*="-secondary"], +[class*="-secondary"]:hover, +[class*="-secondary"]:focus, +[class*="-secondary"]:visited, +[class*="-info"], +[class*="-info"]:hover, +[class*="-info"]:focus, +[class*="-info"]:visited{ + color: #223a7e !important; + background-color: transparent !important; +} + +.scroll_search { + position: fixed; + top: 0; + right: 0; + left: 0; + margin: auto; + background: #1884c7; + color: #fff; + display: none; + z-index: 3; + text-align: center; + opacity: 0.9; +} + +.scroll_search .dropdown-menu { + background: #1884c7; +} + +.scroll_search * { + background-color: transparent; +} + +.scroll_search .expressionRecherche { + background: white; +} + +.scroll_search form { + width: 40%; + display: inline-block; +} + +.navbar { + padding: 0; +} + +.flying_widget .navbar-collapse.collapsing, +.flying_widget .navbar-collapse.collapse, +.flying_widget a { + background-color: #1884c7; + text-transform: uppercase; +} + + +.flying_widget .navbar-collapse.collapsing, +.flying_widget .navbar-collapse.collapse { + padding: 2em 0.5em; + height: 30000px; + overflow:visible; +} + + +.flying_widget .navbar-collapse { + height: 30000px; + background-color: #1884c7; +} + +.flying_widget .navbar.navbar-collapse { + display: block; + padding: 0; +} + +.flying_widget .navbar-brand { + display: inline-block; +} + +.flying_widget .navbar-header { + padding: 1em; + padding-top: 150px; +} + +.flying_widget * { + transition-delay: unset; + transition-duration: unset; +} + +.flying_widget { + display: block; + min-width: 8.33%; +} + +.z-index-11 { + z-index: 11; +} \ No newline at end of file diff --git a/library/templates/Polygone/Assets/images/banner.png b/library/templates/Polygone/Assets/images/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..9e88125a057e34099e7f3ab90f75ce054697e029 Binary files /dev/null and b/library/templates/Polygone/Assets/images/banner.png differ diff --git a/library/templates/Polygone/Assets/images/body.png b/library/templates/Polygone/Assets/images/body.png new file mode 100644 index 0000000000000000000000000000000000000000..bf130aa2f56d3670aac9b548c7766b646d86c186 Binary files /dev/null and b/library/templates/Polygone/Assets/images/body.png differ diff --git a/library/templates/Polygone/Assets/images/footer_corner.png b/library/templates/Polygone/Assets/images/footer_corner.png new file mode 100644 index 0000000000000000000000000000000000000000..dc30c66f5b2316ebe4cad8a5d3e99696b592c76d Binary files /dev/null and b/library/templates/Polygone/Assets/images/footer_corner.png differ diff --git a/library/templates/Polygone/Assets/images/logo.png b/library/templates/Polygone/Assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b88661c6d77bb775c85abb75b8dcbaa9f198f4ee Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo.png differ diff --git a/library/templates/Polygone/Assets/images/logo_footer.png b/library/templates/Polygone/Assets/images/logo_footer.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9e99be0341955a209cd0585c35613a4b0177c6 Binary files /dev/null and b/library/templates/Polygone/Assets/images/logo_footer.png differ diff --git a/library/templates/Polygone/Assets/images/s_exercer.jpg b/library/templates/Polygone/Assets/images/s_exercer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..498e1ac1a5c750b2243b5a5cffe580e577702a30 Binary files /dev/null and b/library/templates/Polygone/Assets/images/s_exercer.jpg differ diff --git a/library/templates/Polygone/Assets/images/se_divertir.jpg b/library/templates/Polygone/Assets/images/se_divertir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc8837111bf0fc366c609623d5a00ea24a20d677 Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_divertir.jpg differ diff --git a/library/templates/Polygone/Assets/images/se_documenter.jpg b/library/templates/Polygone/Assets/images/se_documenter.jpg new file mode 100644 index 0000000000000000000000000000000000000000..beb4a0ddca6c1f4cc8ecf1849d9deafb0d3888b1 Binary files /dev/null and b/library/templates/Polygone/Assets/images/se_documenter.jpg differ diff --git a/library/templates/Polygone/Assets/images/widget_bg.png b/library/templates/Polygone/Assets/images/widget_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..dde54a152ad1ea1f1f03287c5aa4eaa37fd08ea6 Binary files /dev/null and b/library/templates/Polygone/Assets/images/widget_bg.png differ diff --git a/library/templates/Polygone/Assets/js/scroll_search.js b/library/templates/Polygone/Assets/js/scroll_search.js new file mode 100644 index 0000000000000000000000000000000000000000..648afb2dc90d8c73d7780fb5e4409ba4cb1d9c86 --- /dev/null +++ b/library/templates/Polygone/Assets/js/scroll_search.js @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2018, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +(function ( $ ) { + $.fn.scroll_search = function () { + var search_widget = $(this); + + var visible = function(element) { + var rect = element.getBoundingClientRect(), + top = rect.top, + height = rect.height; + + return top + height > 0; + }; + + var update = function() { + return visible($('.rech_simple.main_title')[0]) + ? search_widget.hide() + : search_widget.show(); + } + + $(window).on('scroll', update); + + update(); + } +} (jQuery)); diff --git a/library/templates/Polygone/Library/FormCustomizer.php b/library/templates/Polygone/Library/FormCustomizer.php new file mode 100644 index 0000000000000000000000000000000000000000..3cf0b30114c13673e2b7f001adf8ec9994feb1de --- /dev/null +++ b/library/templates/Polygone/Library/FormCustomizer.php @@ -0,0 +1,27 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_FormCustomizer extends Intonation_Library_FormCustomizer { + public function getTemplateForm($form) { + return (new Polygone_Library_FormCustomizer_Template($this->_template, $form))->getForm(); + } +} diff --git a/library/templates/Polygone/Library/FormCustomizer/Template.php b/library/templates/Polygone/Library/FormCustomizer/Template.php new file mode 100644 index 0000000000000000000000000000000000000000..dc004fffc77e9c29abff24bd1e13da2dd74e45f2 --- /dev/null +++ b/library/templates/Polygone/Library/FormCustomizer/Template.php @@ -0,0 +1,37 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_FormCustomizer_Template extends Intonation_Library_FormCustomizer_Template { + public function getForm() { + parent::getForm(); + + $this->_form + ->addElement('checkbox', + $this->_template->withNameSpace('polygone_css'), + ['label' => $this->_('polygone.css'), + 'order' => 3]); + + $this->_addToTemplateGroup(['polygone_css']); + + return $this; + } +} diff --git a/library/templates/Polygone/Library/ProfilePatcher.php b/library/templates/Polygone/Library/ProfilePatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..901c3b017b8c0301a737e1eb36977d9ada9b1135 --- /dev/null +++ b/library/templates/Polygone/Library/ProfilePatcher.php @@ -0,0 +1,523 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_ProfilePatcher extends Intonation_Library_ProfilePatcher { + + protected + $_main_menu, + $_widget_menu, + $_help_menu, + $_social_network_top_menu, + $_credits_menu, + $_legal_mentions, + $_flying_menu, + $_themes_menu; + + + protected function _upgradeProfile() { + parent::_upgradeProfile(); + + $this->_profile + ->setAccessLevel(-1) + ->setLibelle($this->_('Accueil Polygone')); + + Class_AdminVar::set('MENU_BOITE', 1); + + return $this; + } + + + protected function _upgradeSections() { + $section_header = ((new Class_Systeme_Widget_Section_Header) + ->setProfileId($this->_profile_id) + ->load()); + + $section_header + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $section_main = ((new Class_Systeme_Widget_Section_Main) + ->setProfileId($this->_profile_id) + ->load()); + + $section_main + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $section_footer = ((new Class_Systeme_Widget_Section_Footer) + ->setProfileId($this->_profile_id) + ->load()); + + $section_footer + ->setNewDatas(['boite' => ['no_border_radius'], + $this->_template->withNameSpace('width_xsmall') => 11, + $this->_template->withNameSpace('width_large') => 8, + $this->_template->withNameSpace('width_xlarge') => 6, + $this->_template->withNameSpace('offset_xsmall') => 1, + $this->_template->withNameSpace('offset_large') => 2, + $this->_template->withNameSpace('offset_xlarge') => 3]) + ->updateProfile(); + + Class_Profil::clearCache(); + + $this->_profile = Class_Profil::find($this->_profile_id); + + return $this; + } + + + protected function _upgradeMenus() { + $this->_main_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu principal'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'ACCUEIL', + 'picto' => 'class fas fa-home', + 'libelle' => $this->_('Accueil'), + 'use_profil' => $this->_profile_id] + ] + ]); + + $this->_help_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu aide'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Comment accéder à mon compte'), + 'picto' => 'class fas fa-user-circle', + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Comprendre l\'accessibilité du portail'), + 'picto' => 'class fab fa-accessible-icon', + 'url' => ''], + + ['type_menu' => 'URL', + 'picto' => 'class fas fa-question-circle', + 'libelle' => $this->_('Besoin d\'aide ?'), + 'url' => ''], + ] + ]); + + $this->_social_network_top_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu réseaux sociaux haut de page'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Facebook'), + 'url' => '', + 'picto' => 'class fab fa-facebook-f'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Youtube'), + 'url' => '', + 'picto' => 'class fab fa-youtube'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Twitter'), + 'url' => '', + 'picto' => 'class fab fa-twitter'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Instagram'), + 'url' => '', + 'picto' => 'class fab fa-instagram'], + + ['type_menu' => 'URL', + 'libelle' => $this->_('SoundCloud'), + 'url' => '', + 'picto' => 'class fab fa-soundcloud'], + + ] + ]); + + $this->_widget_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu boites'), + 'picto' => '', + 'menus' => [['type_menu' => 'MODULE_ACCUEIL_LIBRARY', + 'type_module' => 'LIBRARY', + 'libelle' => $this->_('Boites'), + 'preferences' => ['titre' => $this->_('Accès'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'd-inline-block', 'no_badges', 'no_card_footer'], + 'rendering' => 'card-description', + 'layout' => 'horizontal_list', + 'osm_map' => 0, + 'size' => 1, + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]], + + ['type_menu' => 'MODULE_ACCUEIL_LOGIN', + 'type_module' => 'LOGIN', + 'libelle' => $this->_('Connexion'), + 'preferences' => ['titre' => $this->_('Connexion'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-end', 'd-inline-block'], + 'titre_connecte' => $this->_('Mon compte'), + 'message_connecte' => '', + 'identifiant' => $this->_('Identifiant'), + 'identifiant_exemple' => $this->_('N° de carte'), + 'mot_de_passe' => $this->_('Mot de passe'), + 'mot_de_passe_exemple' => $this->_('Année de naissance'), + 'lien_connexion' => $this->_('Se connecter'), + 'lien_deconnection' => $this->_('Se déconnecter'), + 'lien_mot_de_passe_oublie' => $this->_('Mot de passe oublié'), + 'lien_compte' => $this->_('Mon compte'), + 'lien_creer_compte' => $this->_('S\'enregistrer'), + $this->_template->withNameSpace('form_style') => 'toggle', + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]] + ]]); + + $this->_credits_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Plan du site'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Plan du site'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Ma médiathèque c\'est quoi ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Mais au fait, c\'est où ?'), + 'url' => ''], + ] + ]); + + $this->_legal_mentions = $this->_profile->addMenu(['libelle' => $this->_('Mentions légales'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Mentions légales'), + 'url' => '']]]); + + $this->_flying_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'ACCUEIL', + 'libelle' => $this->_('Accueil'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'use_profil' => $this->_profile_id], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Ma médiathèque c\'est quoi ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Qu\'est ce qu\'on y fait ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Mais au fait, c\'est où ?'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('Programme'), + 'url' => ''], + ] + ]); + + $this->_themes_menu = $this->_profile + ->addMenu(['libelle' => $this->_('Menu des thèmes'), + 'picto' => '', + 'menus' => [ + ['type_menu' => 'URL', + 'libelle' => $this->_('Se documenter'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_documenter.jpg'), + 'url' => ''], + + ['type_menu' => 'URL', + 'libelle' => $this->_('S\'exercer'), + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/s_exercer.jpg'), + 'url' => ''], + + ['type_menu' => 'URL', + 'picto' => Class_Url::absolute('/library/templates/Polygone/Assets/images/se_divertir.jpg'), + 'libelle' => $this->_('Se divertir'), + 'url' => ''], + ] + ]); + + $this->_profile->save(); + + return $this; + } + + + protected function _upgradeWidgets() { + $this + ->_removeWidgets() + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu volant'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'flying_widget', 'position_fixed_top_left', 'z_index_11'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_flying_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_ALWAYS, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 4, + $this->_template->withNameSpace('width_large') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu réseau sociaux haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_social_network_top_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu d\'aide haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end', 'menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_help_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Logo du réseau'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'justify-content-center'], + 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo.png'), + 'link' => '', + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('offset_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu boite'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-end'], + 'menu' => $this->_profile_id . '-' . $this->_widget_menu, + 'layout' => 'vertical', + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 7, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Nav_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Menu réseau sociaux haut'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'menu_buttons', 'justify-content-center'], + 'menu' => $this->_profile_id . '-' . $this->_main_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'no_background', 'main_title'], + 'search_button' => 'class fas fa-search', + 'titre' => $this->_('Le polygone'), + 'placeholder' => $this->_('Trouver un document'), + 'type_doc' => '', + $this->_template->withNameSpace('form_style') => 'inline', + $this->_template->withNameSpace('width_xsmall') => 8, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Search_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-center', 'scroll_search'], + 'search_button' => 'class fas fa-search', + 'titre' => $this->_('Le polygone'), + 'placeholder' => $this->_('Trouver un document'), + 'type_doc' => '', + $this->_template->withNameSpace('form_style') => 'inline', + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Breadcrumb_Definition::CODE, + Class_Profil::DIV_BANNIERE, + ['titre' => $this->_('Fil d\'ariane'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'justify-content-start', 'pl-2'], + 'root' => '', + 'show_profile' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Menu des thèmes'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_big_menu_buttons'], + 'menu' => $this->_profile_id . '-' . $this->_themes_menu, + 'layout' => 'horizontal', + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Actualités'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card-overlay', + 'layout' => 'carousel', + 'size' => 3, + 'order' => 'EventDebut', + 'enabled_filters' => '', + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Agenda_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Prochains événements'), + 'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card', + 'layout' => 'multiple_carousel', + 'size' => 3, + 'order' => 'EventDebut', + 'enabled_filters' => '', + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Record_Definition::CODE, + Class_Profil::DIV_MAIN, + ['titre' => $this->_('Nouveautés'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow', 'polygone_widget'], + 'rendering' => 'card-overlay', + 'layout' => 'horizontal_list', + 'size' => 5, + 'link_to_all' => 1, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('show_header') => 1, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 1]) + + ->_addWidget(Intonation_Library_Widget_Carousel_Library_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Accès'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'rendering' => 'card-description', + 'layout' => 'horizontal_list', + 'osm_map' => 0, + 'size' => 1, + 'link_to_all' => 0, + $this->_template->withNameSpace('width_xsmall') => 12, + $this->_template->withNameSpace('width_medium') => 6, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Menu plan du site'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_credits_menu, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Menu_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Menu mentions légales'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'layout' => 'vertical', + 'menu' => $this->_profile_id . '-' . $this->_legal_mentions, + $this->_template->withNameSpace('expand_breakpoint') => Intonation_Library_Constants::RESPONSIVE_MODE_XSMALL, + $this->_template->withNameSpace('width_xsmall') => 6, + $this->_template->withNameSpace('width_medium') => 3, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addWidget(Intonation_Library_Widget_Image_Definition::CODE, + Class_Profil::DIV_FOOTER, + ['titre' => $this->_('Logo du réseau'), + 'boite' => ['no_border', 'no_border_radius', 'no_shadow'], + 'image' => Class_Url::absolute('/library/templates/Polygone/Assets/images/logo_footer.png'), + 'link' => '', + $this->_template->withNameSpace('width_xsmall') => 2, + $this->_template->withNameSpace('show_header') => 0, + $this->_template->withNameSpace('show_content') => 0, + $this->_template->withNameSpace('show_footer') => 0]) + + ->_addScrollDownWidget() + ->_addScrollTopWidget() + ->_addAdminWidget() + ->_addAccessibilityWidget() + ->_addNotificationWidget(); + + return $this; + } +} \ No newline at end of file diff --git a/library/templates/Polygone/Library/Settings.php b/library/templates/Polygone/Library/Settings.php new file mode 100644 index 0000000000000000000000000000000000000000..3d4afa8ef2c82ba1ab3bc92bcac7d0c3425f8c60 --- /dev/null +++ b/library/templates/Polygone/Library/Settings.php @@ -0,0 +1,78 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Library_Settings extends Intonation_Library_Settings { + protected function _getDefaultSettings() { + $settings = parent::_getDefaultSettings(); + $settings[$this->_template->withNameSpace('polygone_css')] = 1; + + $custom_css_classes = $settings[$this->_template->withNameSpace('custom_css_class')]; + + $custom_css_classes = ['position_fixed_bottom', + 'position_fixed_bottom_left', + 'position_fixed_bottom_right', + 'position_fixed_top', + 'position_fixed_top_left', + 'position_fixed_top_right', + 'position_fixed_mid_left', + 'position_fixed_mid_right', + 'pt-3', + 'pt-5', + 'pb-3', + 'pl-2', + 'pl-md-3', + 'pr-md-3', + 'no_background', + 'no_border', + 'no_border_radius', + 'no_shadow', + 'm-auto', + 'ml-auto', + 'mr-auto', + 'align-items-center', + 'auto_col', + 'justify-content-start', + 'justify-content-end', + 'justify-content-center', + 'menu_buttons', + 'polygone_big_menu_buttons', + 'polygone_widget', + 'no_card_footer', + 'no_badges', + 'scroll_search', + 'flying_widget', + 'z-index-11']; + + $settings[$this->_template->withNameSpace('custom_css_class')] = $custom_css_classes; + + $hydrating_mapping = $settings[$this->_template->withNameSpace('hydrating_mapping')]; + + $hydrating_mapping['a class nav-link'] = ''; + $hydrating_mapping['div class navbar-header'] = ''; + $hydrating_mapping['div class navbar-collapse'] = ''; + $hydrating_mapping['div id site_web_wrapper'] = 'container'; + $hydrating_mapping['div id site_web_content_wrapper'] = 'row no-gutters'; + + $settings[$this->_template->withNameSpace('hydrating_mapping')] = $hydrating_mapping; + return $settings; + } +} diff --git a/library/templates/Polygone/Template.php b/library/templates/Polygone/Template.php new file mode 100644 index 0000000000000000000000000000000000000000..dd9ac4e65adaa9da50f626002b59a98ce8099c0f --- /dev/null +++ b/library/templates/Polygone/Template.php @@ -0,0 +1,63 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_Template extends Intonation_Template { + + const ID = 'POLYGONE'; + + + public function __construct() { + $this->setId(static::ID) + ->setTitle($this->_('Polygone')) + ->setSettings(new Polygone_Library_Settings($this)) + ->setPatcher(new Polygone_Library_ProfilePatcher($this)); + } + + + public function getProfile() { + if ($this->_profile) + return $this->_profile; + + if ($this->_profile = Class_Profil::findFirstBy(['template' => $this->getId()])) + return $this->_profile; + + $this->createFrom(Class_Profil::getPortail()); + + return $this->_profile = Class_Profil::getCurrentProfil(); + } + + + public function renderOpac($view) { + return (new Polygone_View_Opac($this, $view))->render(); + } + + + public function renderSubModal($view) { + return (new Polygone_View_SubModal($this, $view))->render(); + } + + + public function customTemplateForm($form) { + $helper = new Polygone_Library_FormCustomizer($this); + return $helper->getTemplateForm($form); + } +} diff --git a/library/templates/Polygone/View/Opac.php b/library/templates/Polygone/View/Opac.php new file mode 100644 index 0000000000000000000000000000000000000000..29fae39bf826503f8cae0bf9e36c912a30b6680c --- /dev/null +++ b/library/templates/Polygone/View/Opac.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_View_Opac extends Intonation_View_Opac { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css')) + ->addScript(Class_Url::absolute('/library/templates/Polygone/Assets/js/scroll_search.js')) + ->addJQueryReady('$(".scroll_search").scroll_search();'); + + return parent::_headContent(); + } +} diff --git a/library/templates/Polygone/View/SubModal.php b/library/templates/Polygone/View/SubModal.php new file mode 100644 index 0000000000000000000000000000000000000000..82d4f01d0ee27e020138097a95cff24b519f1996 --- /dev/null +++ b/library/templates/Polygone/View/SubModal.php @@ -0,0 +1,29 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class Polygone_View_SubModal extends Intonation_View_SubModal { + protected function _headContent() { + Class_ScriptLoader::getInstance() + ->addStyleSheet(Class_Url::absolute('/library/templates/Polygone/Assets/css/polygone.css')); + return parent::_headContent(); + } +} diff --git a/public/opac/java/scroll/scroll.js b/public/opac/java/scroll/scroll.js index 5fc69bea3579e0eefa5d0c2a55a06cc50e553699..6278351bea5408ad36afd2c07e60d8affaf08510 100644 --- a/public/opac/java/scroll/scroll.js +++ b/public/opac/java/scroll/scroll.js @@ -30,7 +30,7 @@ }, 1000); }); - $(window).scroll(function() { + $(window).on('scroll', function() { anchor.show(); }); } diff --git a/tests/scenarios/Templates/PolygoneTemplateTest.php b/tests/scenarios/Templates/PolygoneTemplateTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e82c7a156a65b0e26425bd83adcd8a4e689e077b --- /dev/null +++ b/tests/scenarios/Templates/PolygoneTemplateTest.php @@ -0,0 +1,173 @@ +<?php +/** + * Copyright (c) 2012-2019, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +abstract class PolygoneTemplateTestCase extends Admin_AbstractControllerTestCase { + protected $_storm_default_to_volatile = true; + + public function setUp() { + parent::setUp(); + Class_Systeme_ModulesAccueil::reset(); + Class_AdminVar::set('TEMPLATING', 1); + + $profile = $this->fixture('Class_Profil', + ['id' => 23]); + + (new Polygone_Template)->tryOn($profile); + (new Class_Profil_Promoter)->promote($profile); + } + + + public function tearDown() { + parent::tearDown(); + Class_Systeme_ModulesAccueil::reset(); + } +} + + + + +class PolygoneTemplateAdminTemplateIndexDispatchTest extends PolygoneTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/admin/template/index'); + } + + + /** @test */ + public function editPolygoneUrlShouldBeDisplay() { + $this->assertXPath('//table//a[contains(@href,"/admin/template/edit/template/POLYGONE")]'); + } +} + + + +class PolygoneTemplateProfilePatcherTest extends PolygoneTemplateTestCase { + + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/index/index'); + } + + + public function widgetsClasses() { + return [ + ['login'], + ['accessibility'], + ['rech_simple'], + ['admin_tools'], + ['scroll'], + ['library'], + ['critiques'], + ]; + } + + + /** + * @dataProvider widgetsClasses + * @test */ + public function indexShouldContainsWidgets($widget_class) { + $this->assertXPath(sprintf('//div[contains(@class, "widget")][contains(@class, "%s")]', + $widget_class)); + } + + + /** @test */ + public function editTemplatePolygoneShouldBePresent() { + $this->assertXPathContentContains('//a[contains(@href, "admin/template/edit/template/POLYGONE")]', 'Configuration du template'); + } +} + + + +class PolygoneTemplateOpacIndexWithUserAgentTest extends PolygoneTemplateTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('/opac/index/index'); + } + + + /** @test */ + public function pageTitleShouldBeTestChartePolygone() { + $this->assertXPathContentContains('//head/title', 'Musclé'); + } + + + /** @test */ + public function pageShouldLoadPolygoneCss() { + $this->assertXPath('//head/link[contains(@href, "/templates/Polygone/Assets/css/polygone.css")]'); + } + + + /** @test */ + public function pageShouldBeHtml5Valid() { + $this->assertHTML5(); + } + + + /** @test */ + public function pageShouldBeAccessible() { + $this->assertAccessible($this->_response->getBody()); + } +} + + + +class PolygoneTemplateEditTemplateTest extends Admin_AbstractControllerTestCase { + protected $_storm_default_to_volatile = true; + + public function setUp() { + parent::setUp(); + + Class_AdminVar::set('TEMPLATING', 1); + + $settings = $this->fixture('Class_Template_Settings', + ['id' => 456, + 'template' => 'POLYGONE']); + + $this->dispatch('/admin/template/edit/template/polygone'); + } + + + /** @test */ + public function checkboxPolygoneCssShouldBeChecked() { + $this->assertXPath('//form//input[@type="checkbox"][@name="PolygonePolygoneCss"][@checked]'); + } + + + /** @test */ + public function customCssShouldContainsClassMenuButtons() { + $this->assertContains('"menu_buttons"', $this->_response->getBody()); + } +} + + + + +class PolygoneTemplateOpacAdvancedSearchTest extends PolygoneTemplateTestCase { + + /** @test */ + public function advancedSearchSettingsShouldContainsCustomForm() { + $this->dispatch('/admin/widget/edit-action/id/recherche_avancee/id_profil/24'); + $this->assertXPath('//input[@id="forms"]'); + } +} \ No newline at end of file