Commit 843c65c7 authored by Ghislain Loas's avatar Ghislain Loas
Browse files

wip on bootstrap

parent 61482221
Pipeline #8724 passed with stage
in 53 minutes and 9 seconds
......@@ -248,6 +248,31 @@ class BibController extends ZendAfi_Controller_Action {
}
public function widgetAction() {
$id_module = $this->_getParam('id_module');
$module = Class_Profil::getCurrentProfil()->getModuleAccueilPreferences($id_module, 'LIBRARY');
$module_library = new Class_Systeme_ModulesAccueil_Library();
$preferences = array_merge($module_library->getDefaultValues(),
$module);
$preferences['ID_MODULE'] = $id_module;
$this->view->titre = $preferences['titre'];
$this->view->content = $this->view->librariesWidget($preferences);
if ($this->_getParam('render') === 'ajax') {
$script_loader = Class_ScriptLoader::getInstance();
$scripts = $script_loader
->addAdminScript('onload_utils')
->addJQueryReady('setupAnchorsTarget();')
->html();
$this->_helper->HTMLAjaxResponse($scripts . $this->view->content);
}
}
protected function _getSelectedFilters() {
$filter_keys = (new Class_Systeme_ModulesAccueil_Library())->getStaticFiltersKeys();
return $this->_helper->selectedFilters($filter_keys);
......
......@@ -408,6 +408,13 @@ class Class_AvisNotice extends Storm_Model_Abstract {
}
public function getLoginOrFullName() {
return ($user = $this->getUser())
? $user->getLoginOrFullName()
: '';
}
public function validate() {
if ($this->isImportMode())
return;
......
......@@ -205,42 +205,47 @@ class Class_Template {
public function customWidgetForm($form) {
return $this;
return $form;
}
public function customActionForm($form) {
return $this;
return $form;
}
public function customMenuForm($form) {
return $this;
return $form;
}
public function customMenuEntryForm($form) {
return $this;
return $form;
}
public function customTemplateForm($form) {
return $this;
return $form;
}
public function customSectionForm($form) {
return $this;
return $form;
}
public function customProfileForm($form) {
return $this;
return $form;
}
public function customProfilePageForm($form) {
return $this;
return $form;
}
public function customUserSettingsForm($form) {
return $form;
}
......
......@@ -1650,8 +1650,6 @@ class Class_Users extends Storm_Model_Abstract {
}
public function getLoginOrFullName() {
return ($full_name = $this->getNomComplet())
? $full_name
......
......@@ -23,7 +23,12 @@ class ZendAfi_Controller_Action_Helper_SelectedFilters extends Zend_Controller_A
public function selectedFilters($extra_filters = []) {
$selected_filters = [];
foreach ($this->getRequest()->getParams() as $key => $value) {
$request = $this->getRequest();
$params = array_merge($request->getParams(),
$request->getPost());
foreach ($params as $key => $value) {
if (in_array($key, $extra_filters)) {
$selected_filters[$key] = [$value];
continue;
......
......@@ -21,8 +21,10 @@
class ZendAfi_Form_User_Settings extends ZendAfi_Form {
protected $_user;
public function init() {
parent::init();
......@@ -30,19 +32,11 @@ class ZendAfi_Form_User_Settings extends ZendAfi_Form {
->setAttrib('id', 'user-settings')
->setAttrib('action', Class_Url::assemble(['module' => 'opac',
'controller' => 'abonne',
'action' => 'settings']));
$display_groups = [];
if ($this->addDomainsElement())
$display_groups[] = 'domain_ids';
if ($this->addLibrariesElement())
$display_groups[] = 'library_ids';
'action' => 'settings']))
->addDomainsElement()
->addLibrariesElement();
if($display_groups)
$this
->addDisplayGroup($display_groups, 'domains_set');
Class_Template::current()->customUserSettingsForm($this);
}
......@@ -53,50 +47,57 @@ class ZendAfi_Form_User_Settings extends ZendAfi_Form {
protected function addLibrariesElement() {
if (!Class_User_Settings::isBookmarkLibraryReady())
return false;
return $this->addElement('cochesSuggestion',
'library_ids',
['label' => $this->_('Mes bibliothèques préférées'),
'name' => 'library_ids',
'rubrique' => function()
{
$libraries = Class_Profil::getCurrentProfil()->getLibraries();
return (new Class_Entity())
->whenCalledDo('getList', function() use ($libraries)
{
$datas = [];
foreach($libraries as $library)
$datas[$library->getId()] = $library->getLabel();
return $datas;
});
},
'selected_all_means_nothing' => false]);
return $this;
return $this
->addElement('cochesSuggestion',
'library_ids',
['label' => $this->_('Mes bibliothèques préférées'),
'name' => 'library_ids',
'rubrique' => function()
{
$libraries = Class_Profil::getCurrentProfil()->getLibraries();
return (new Class_Entity())
->whenCalledDo('getList', function() use ($libraries)
{
$datas = [];
foreach($libraries as $library)
$datas[$library->getId()] = $library->getLabel();
return $datas;
});
},
'selected_all_means_nothing' => false])
->addDisplayGroup(['library_ids'], 'library_group');
}
protected function addDomainsElement() {
if (!Class_User_Settings::isBookmarkDomainsReady())
return false;
return $this->addElement('cochesSuggestion',
'domain_ids',
['label' => $this->_('Mes thèmes préférés'),
'name' => 'domain_ids',
'rubrique' => function()
{
$domains = Class_Catalogue::findAllCataloguesAIndexer();
return (new Class_Entity())
->whenCalledDo('getList',
function() use ($domains)
{
$datas = [];
foreach($domains as $domain)
$datas[$domain->getId()] = $domain->getLibelle();
return $datas;
});
},
'selected_all_means_nothing' => false]);
return $this;
return $this
->addElement('cochesSuggestion',
'domain_ids',
['label' => $this->_('Mes thèmes préférés'),
'name' => 'domain_ids',
'rubrique' => function()
{
$domains = Class_Catalogue::findAllCataloguesAIndexer();
return (new Class_Entity())
->whenCalledDo('getList',
function() use ($domains)
{
$datas = [];
foreach($domains as $domain)
$datas[$domain->getId()] = $domain->getLibelle();
return $datas;
});
},
'selected_all_means_nothing' => false])
->addDisplayGroup(['domain_ids'], 'domains_group');
}
......@@ -110,5 +111,4 @@ class ZendAfi_Form_User_Settings extends ZendAfi_Form {
public function setBackUrl($url) {
$this->setAttrib('data-backurl', $url);
}
}
?>
\ No newline at end of file
}
\ No newline at end of file
......@@ -28,6 +28,7 @@ class ZendAfi_View_Helper_Filters_Strategy_Search extends ZendAfi_View_Helper_Fi
$this->_tag('label', $this->_('Rechercher : '),
['for' => $id])
. $this->_tag('input', null, ['type' => 'text',
'name' => 'search',
'id' => $id,
'value' => $this->_getFilterValue()])
. $this->_tag('button', $this->_('Ok')),
......
......@@ -108,7 +108,7 @@ class ZendAfi_View_Helper_TagCriteresRecherche extends ZendAfi_View_Helper_BaseH
public function visitCodeRebond($code_rebond) {
$url = $this->_criteres_recherche->getUrlCriteresWithoutElement('code_rebond');
$libelle = $this->view->_("Recherche élargie à: %s", Class_Codification::getInstance()->getLibelleFacette($code_rebond));
$libelle = $this->_("Recherche élargie à: %s", Class_Codification::getInstance()->getLibelleFacette($code_rebond));
$this->htmlAppend($this->getSuppressionImgUrlForLibelle($libelle, $url));
}
......
......@@ -306,7 +306,7 @@ pre {
[class*="carousel-control"] {
height: 30%;
margin: 35% 0;
margin: auto 0;
width: auto;
}
......@@ -530,12 +530,6 @@ dl.row {
display: inline-flex;
}
.carousel .button_text,
.card-deck .button_text,
.card-columns .button_text {
display: none !important;
}
.button_text_d_none > a > .button_text,
.button_text_d_none > .dropdown > a > .button_text {
display: none !important;
......@@ -647,6 +641,14 @@ dl.row {
font-size: 0.8em;
}
.text_small {
font-size: 0.8em;
}
.text_no_transform {
text-transform: none;
}
.action_rendering .facette_titre .list-group-item,
.card {
background-color: var(--front-transparent-background);
......@@ -669,6 +671,7 @@ dl.row {
color: var(--front-text);
}
.card-footer > a.card-link:first-child:last-child .button_text,
.card_action:first-child:last-child .button_text {
display: inline-block !important;
}
......
......@@ -21,6 +21,7 @@
class Intonation_Library_FormCustomizer {
protected $_template;
......@@ -75,6 +76,11 @@ class Intonation_Library_FormCustomizer {
}
public function getUserSettingsForm($form) {
return (new Intonation_Library_FormCustomizer_UserSettings($this->_template, $form))->getForm();
}
protected function _getStrategyFor($form) {
$strategies = ['ZendAfi_Form_Configuration_Widget_Login' => 'FormStyle',
'ZendAfi_Form_Configuration_Widget_Search' => 'FormStyle'];
......
......@@ -47,12 +47,14 @@ class Intonation_Library_FormCustomizer_Abstract {
protected function _replaceBoiteByCss() {
$css = $this->_template->getCustomCssClass();
sort($css);
$css = array_combine($css, $css);
$this->_form->replaceWith('boite', ['multiCheckbox',
'boite',
['label' => $this->_('Classe CSS personnalisée'),
'separator' => ' ',
'multiOptions' => array_combine($this->_template->getCustomCssClass(),
$this->_template->getCustomCssClass())]]);
'multiOptions' => $css]]);
return $this;
}
......
<?php
/**
* Copyright (c) 2012-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
*/
class Intonation_Library_FormCustomizer_UserSettings extends Intonation_Library_FormCustomizer_Abstract {
public function getForm() {
$this
->_addSearchSettings()
->_addProfileImage()
->_addAdminSettings();
return $this->_form;
}
protected function _addAdminSettings() {
if (!Class_Users::isCurrentUserCanAccesBackend())
return $this;
$user = Class_Users::getIdentity();
$current_skin = $user->getAdminSkin();
$skins = $current_skin->getAvailableSkins();
$skin_colors = array_merge([$this->_('Aucune couleur')], $current_skin->getAvailableColors());
$this->_form
->addElement('select',
Class_User_Settings::ADMIN_SKIN,
['label' => $this->_('Le thème de l\'interface d\'administration'),
'value' => $current_skin->getName(),
'multiOptions' => $skins])
->addElement('select',
Class_User_Settings::ADMIN_SKIN_COLOR,
['label' => $this->_('La couleur du thème de l\'interface d\'administration'),
'value' => $current_skin->getColor(),
'multiOptions' => $skin_colors])
->addElement('checkbox',
Class_User_Settings::POPUP_FEATURES,
['label' => $this->_('Masquer la fenêtre des nouvelles fonctionnalités')])
->addDisplayGroup([Class_User_Settings::ADMIN_SKIN,
Class_User_Settings::ADMIN_SKIN_COLOR,
Class_User_Settings::POPUP_FEATURES],
'admin_user_settings',
['legend' => $this->_('Administration')]);
return $this;
}
protected function _addSearchSettings() {
$search_criteria = new Class_CriteresRecherche;
$this->_form
->addElement('select',
Class_User_Settings::SEARCH_ORDER,
['label' => $this->_('Ordre préféré de la recherche'),
'multiOptions' => array_filter($search_criteria->getListeTris())])
->addElement('select',
Class_User_Settings::SEARCH_LAYOUT,
['label' => $this->_('Disposition préférée de la recherche'),
'multiOptions' => [Class_Systeme_ModulesAppli::LISTE_FORMAT_LIST => $this->_('Liste'),
Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR => $this->_('Mur')]])
->addElement('select',
Class_User_Settings::SEARCH_PAGE_SIZE,
['label' => $this->_('Nombre de résultats par page préféré dans la recherche'),
'multiOptions' => $search_criteria->getAvailablePageSize()])
->addDisplayGroup([Class_User_Settings::SEARCH_ORDER,
Class_User_Settings::SEARCH_LAYOUT,
Class_User_Settings::SEARCH_PAGE_SIZE],
'search_user_settings',
['legend' => $this->_('Préférences de la recherche')]);
return $this;
}
protected function _addProfileImage() {
$this->_form
->addElement('link',
'user_image_selector',
['value' => ['controller' => 'abonne',
'action' => 'change-image'],
'data-popup' => 1,
'label' => $this->_('Changer l\'image de profil')])
->addDisplayGroup(['user_image_selector'],
'user_image_group',
['legend' => $this->_('Image du profile')]);
return $this;
}
}
<?php
/**
* Copyright (c) 2012-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
*/
class Intonation_Library_OsmData extends Class_Entity {}
\ No newline at end of file
......@@ -217,6 +217,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher {
'boite' => ['no_background', 'no_border', 'no_border_radius', 'no_shadow', 'men_in_black', 'mb-3'],
'rendering' => 'card-description',
'layout' => 'carousel',
'filters' => 'opening;town',
'order' => 'orderAlpha',
'osm_map' => 1,
$this->_template->withNameSpace('width_xsmall') => 12,
......@@ -233,6 +234,7 @@ class Intonation_Library_ProfilePatcher extends Class_Template_ProfilePatcher {
'layout' => 'carousel',
'size' => 9,
'order' => 'EventDebut',
'enabled_filters' => 'day;date;place',
'rss' => 1,
'embeded_code' => 1,
'link_to_all' => 1,
......
......@@ -68,7 +68,9 @@ class Intonation_Library_Settings extends Intonation_System_Abstract {
'auto_col',
'main_search',
'text-center',
'text-right'
'text-right',
'text_small',
'text_no_transform'
],
'hydrating_mapping' => ['div id site_web_wrapper' => 'container align-self-center',
......@@ -90,7 +92,6 @@ class Intonation_Library_Settings extends Intonation_System_Abstract {
'button class btn' => '',
'button class accessibility' => 'btn btn-light',
'button class scroll' => 'btn btn-light',
'button class list_format' => 'btn btn-light',
'button type submit' => 'btn btn-primary',
'fieldset' => 'form-group container-fluid',
'table' => 'table table-stripped table-hover table-responsive-md table-sm',
......@@ -107,19 +108,21 @@ class Intonation_Library_Settings extends Intonation_System_Abstract {
'dd class user_info' => 'col-12 col-sm-6',
'a' => 'text-secondary',
'a class btn' => 'text-light',
'a class badge' => '',
'a class active' => '',
'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 badge' => '',
'a class active' => '',
'a class card-link' => '',
'a class list-group-item' => '',
'a class account-loans' => 'btn btn-sm list-group-item-info',
'ul' => 'list-unstyled',
'div class navbar-collapse' => 'justify-content-center',
'div class _notify' => 'alert-warning',
'div class success_notify' => 'alert-success',
'div class delete_notify' => 'alert-danger',
'div class card_article' => 'col-12 mb-3',
'div class search_result' => 'px-3 px-sm-0',
'h1 class content_title' => 'py-2 px-0 my-2 mx-0 border-bottom',
'h2 class jumbotron_section_title' => 'text-dark',
'span class search_axe_operator_prefix' => 'col-4 col-sm-2',
......@@ -184,6 +187,8 @@ class Intonation_Library_Settings extends Intonation_System_Abstract {
'clean' => 'class fas fa-eraser',
'open' => 'class far fa-caret-square-down',
'add' => 'class fas fa-plus-square',
'add_user' => 'class fas fa-user-plus',
'unlink_user' => 'class fas fa-user-minus',
'delete' => 'class fas fa-minus',
'edit' => 'class fas fa-edit',
'check-list' => 'class fas fa-tasks',
......
......@@ -96,4 +96,6 @@ abstract class Intonation_Library_View_Wrapper_Abstract {
abstract public function getDocType();
abstract public function getDocTypeLabel();
abstract public function getOsmData();
}
\ No newline at end of file
......@@ -147,4 +147,9 @@ class Intonation_Library_View_Wrapper_Article extends Intonation_Library_View_Wr
public function getHtmlPicture() {
return '';
}