Commit 0dc456ff authored by Laurent's avatar Laurent
Browse files

Merge branch 'hotline' into 'dev#68187_3140_modifications_pnb_dilicom'

Hotline

See merge request !2805
parents 5481b1a2 c8be9194
Pipeline #4899 passed with stage
in 49 minutes and 59 seconds
10/09/2018 - v7.12.34
- ticket #78773 : Calendrier : correction de l'affichage des jours du mois de mars et du mois d'octobre dû aux changements d'heures effectués respectivement le 25 et le 28.
- ticket #76156 : Boite agenda : ajout d'un nouveau filtre "Date de début".
- ticket #74897 : Résultat de recherche : en mode d'affichage "vignettes", vous avez la possibilité de remplacer l'entête des notices par un fichier XSLT.
- ticket #78264 : Ressources numériques : amélioration du tableau de bord de la ressource LeKiosk.
- ticket #65688 : webservice Koha : prise en compte du statut 'En transfert' désormais renvoyé par ILSDI
28/08/2018 - v7.12.33
- ticket #78596 : Administration : correction de la liste des nouvelles fonctionnalités lorsqu'une fonctionnalité supprimée avait été marquée comme vue.
......
- ticket #78971 : Compte lecteur : correction des exports de la liste des prêts pour les comptes multi-cartes.
\ No newline at end of file
- ticket #79056 : Boite calendrier : correctif de la prise en charge du parametre : "Afficher la sélection" dans l'onglet "Affichage"
\ No newline at end of file
- ticket #65688 : webservice Koha : prise en compte du statut 'En transfert' désormais renvoyé par ILSDI
\ No newline at end of file
- ticket #76156 : Boite agenda : ajout d'un nouveau filtre "Date de début".
\ No newline at end of file
......@@ -1011,7 +1011,12 @@ class AbonneController extends ZendAfi_Controller_Action {
$this->_helper->viewRenderer->setNoRender();
$datas = [];
$emprunts = $this->_user->getLoansWithoutPNB($this->_request->getParams());
$cards = new Class_User_Cards($this->_user);
$emprunts = $cards
->getLoansWithOutPNB($this->_request->getParams())
->getArrayCopy();
foreach($emprunts as $emprunt) {
if (!$exemplaire = $emprunt->getExemplaireOPAC())
continue;
......@@ -1055,9 +1060,9 @@ class AbonneController extends ZendAfi_Controller_Action {
return $loan->getCodeBarre();
});
$datas = array_filter($this->_user
->getLoansWithoutPNB($this->_request->getParams())
->getArrayCopy());
$cards = new Class_User_Cards($this->_user);
$loans = $cards->getLoansWithOutPNB($this->_request->getParams())->getArrayCopy();
$datas = array_filter($loans);
$this->_helper->csv($filename,
$this->view->renderCsv($description,
......
<?php
echo $this->calendarContent($this->calendar, $this->preferences);
?>
......@@ -3,4 +3,3 @@ $this->openBoite($this->titre);
echo $this->Search_Header($this->search_result);
$this->closeBoite();
echo $this->Search_Result($this->search_result);
?>
......@@ -1007,6 +1007,11 @@ class Class_AdminVar extends Storm_Model_Abstract {
}
public function isEncodedData() {
return $this->getMeta()->isEncodedData();
}
public function isCombo() {
return $this->getMeta()->isCombo();
}
......
......@@ -100,6 +100,11 @@ class Class_AdminVar_Meta {
}
public function isEncodedData() {
return static::TYPE_ENCODED_DATA == $this->_type;
}
public function isCombo() {
return self::TYPE_COMBO == $this->_type;
}
......
......@@ -449,6 +449,17 @@ class Class_Feature_List {
'Test' => '',
'Date' => '2018-07-03'],
'74897' =>
['Label' => $this->_('Personnalisation des notices avec XSLT'),
'Desc' => $this->_('Personnalisation de l\'affichage du résultat de recherche et d\'une notice par des fichiers XLST'),
'Image' => '',
'Video' => '',
'Category' => $this->_('Mise en page'),
'Right' => function($feature_description, $user) {return true;},
'Wiki' => '',
'Test' => '',
'Date' => '2018-08-22'],
];
}
}
\ No newline at end of file
......@@ -32,6 +32,8 @@ class Class_Notice_Xsl {
protected
$_record,
$_profile,
$_settings_key_first_part = 'viewnotice',
$_settings_key_second_part = '',
$_xsl_file;
......@@ -47,7 +49,13 @@ class Class_Notice_Xsl {
$this->_record = $record;
$this->_profile = $profile;
$this->_logErrors();
$this->_xsl_file = $this->_getXslFileFromProfile();
}
public function beSearchResult() {
$this->_settings_key_first_part = 'resultat';
$this->_settings_key_second_part = 'simple';
return $this;
}
......@@ -66,7 +74,9 @@ class Class_Notice_Xsl {
public function getXslFile() {
return $this->_xsl_file;
return $this->_xsl_file
? $this->_xsl_file
: ($this->_xsl_file= $this->_getXslFileFromProfile());
}
......@@ -99,7 +109,13 @@ class Class_Notice_Xsl {
public function getXslFileUrl() {
$settings = $this->_profile->getCfgModulesPreferences('recherche', 'viewnotice', $this->_record->getTypeDoc());
$second_part = $this->_settings_key_second_part
? $this->_settings_key_second_part
: $this->_record->getTypeDoc();
$settings = $this->_profile->getCfgModulesPreferences('recherche',
$this->_settings_key_first_part,
$second_part);
if(!$settings)
return;
......
......@@ -1107,6 +1107,7 @@ class Class_Profil extends Storm_Model_Abstract {
return $preferences[$pref];
}
public function setModulePreference($controller,$action,$pref,$value) {
$cfg_modules = $this->getCfgModulesAsArray();
$cfg_modules[$controller][$action][$pref]=$value;
......
......@@ -41,6 +41,10 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
public function init() {
parent::init();
Class_ScriptLoader::getInstance()
->addJQueryReady('formSelectToggleVisibilityForElement($(".admin-form select#liste_format"), $(".admin-form input#' . Class_Notice_Xsl::KEY . '").closest("tr"), ["3"]);');
$this
->setAttrib('id',
'configuration_searchResult')
......@@ -204,9 +208,18 @@ class ZendAfi_Form_Configuration_SearchResult extends ZendAfi_Form {
'bookmarks_enabled',
['label' => $this->_('Afficher les favoris utilisateur')])
->addElement('userfile',
Class_Notice_Xsl::KEY,
['label' => $this->_('Remplacer l\'entête des notices par la XSLT suivante :'),
'allowEmpty' => true,
'validators' => [(new Zend_Validate_Regex('/^.*\.xsl$/i'))
->setMessage($this->_('Le fichier doit être de type "xsl"'))]])
->addToDisplaySettingsGroup(['liste_format',
'liste_nb_par_page',
'liste_codes',
Class_Notice_Xsl::KEY,
'zones_titre',
'suggests_enabled',
'suggests_number',
......
......@@ -22,7 +22,13 @@
class ZendAfi_View_Helper_Admin_AdminVar extends ZendAfi_View_Helper_BaseHelper {
public function adminVar($var) {
return $var->isOnOff() ? $this->renderOnOff($var) : $this->renderSimple($var);
if ($var->isOnOff())
return $this->renderOnOff($var);
if ($var->isMultiInput())
return $this->renderMultiInput($var);
return $this->renderSimple($var);
}
......@@ -43,18 +49,33 @@ class ZendAfi_View_Helper_Admin_AdminVar extends ZendAfi_View_Helper_BaseHelper
}
protected function renderMultiInput($var) {
$value = $var->getValeur();
if (!$values = array_filter(explode(';', $value)))
return $value;
$lis = [];
foreach ($values as $item)
$lis [] = $this->_tag('li', $item);
return $this->_tag('ul', implode($lis));
}
protected function renderSimple($var) {
return wordwrap($this->cleanValue($var), 35, '<br />', true);
}
protected function cleanValue($var) {
if ($var->isRawText())
return $this->view->escape($var->getValeur());
$value = $var->getValeur();
if (preg_match('^%0D%0A^', $var->getValeur()))
$value = str_replace('%0D%0A', '<br />', $value);
if(preg_match('^%0D%0A^', $var->getValeur()))
return urldecode(str_replace('%0D%0A', '<br />', $var->getValeur()));
if ($var->isEncodedData())
return urldecode($value);
return urldecode($var->getValeur());
return $this->view->escape($value);
}
}
\ No newline at end of file
......@@ -280,7 +280,7 @@ class ZendAfi_View_Helper_Calendar_Table extends ZendAfi_View_Helper_BaseHelper
protected function getCalendarTableDays($articles) {
$first_month_day = mktime(0, 0, 0, $this->month, 1, $this->year);
$first_month_day = mktime(10, 0, 0, $this->month, 1, $this->year);
$offset = (7 - (1 % 7 - date('w', $first_month_day))) % 7;
$current_day = $first_month_day - 3600 * 24 * $offset;
$row_number = ceil((date('t', $first_month_day) + $offset) / 7);
......
......@@ -55,7 +55,7 @@ class ZendAfi_View_Helper_CalendarContent extends ZendAfi_View_Helper_BaseHelper
* N'est affiché que si l'option administrateur est cochée param["DISPLAY_CAT_SELECT"]
*/
protected function rendSelectionCategories() {
if ($this->param["display_cat_select"]==null) return;
if (!$this->param["display_cat_select"]) return;
$cats = $this->calendar->getAdminSelectedCategories();
......
......@@ -61,14 +61,12 @@ class ZendAfi_View_Helper_ListeNotices extends ZendAfi_View_Helper_BaseHelper {
}
protected function _displayList($notices,$preferences) {
$helpers = [
Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU => 'ListeNotices_Tableau',
protected function _displayList($notices, $preferences) {
$helpers = [Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU => 'ListeNotices_Tableau',
Class_Systeme_ModulesAppli::LISTE_FORMAT_ACCORDEON => 'ListeNotices_Accordeon',
Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES => 'ListeNotices_Vignettes',
Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR => 'ListeNotices_Mur',
Class_Systeme_ModulesAppli::LISTE_FORMAT_CHRONO => 'ListeNotices_Chrono',
];
Class_Systeme_ModulesAppli::LISTE_FORMAT_CHRONO => 'ListeNotices_Chrono'];
$helper = $helpers[$preferences['liste_format']];
return call_user_func_array([$this->view, $helper], [$notices, $preferences]);
......
......@@ -40,21 +40,34 @@ class ZendAfi_View_Helper_ListeNotices_Vignettes extends ZendAfi_View_Helper_Lis
protected function _vignetteHtml($notice, $type_doc, $champs, $preferences){
$url_notice = $this->view->urlNotice($notice, $preferences);
$html = $this->_hold($notice)
. $this->_cart($notice)
. $this->_recordAvailability($notice)
. $this->_title($notice, $url_notice)
. $this->_author($notice, $url_notice)
. $this->_docType($notice, $type_doc)
. $this->_link($notice, $type_doc)
. $this->_image($notice, $preferences)
. $this->_info($notice, $champs)
. $this->_pcTag($notice);
return $this->_divRecord($html, $notice, 'vignette');
$html = [$this->_hold($notice),
$this->_cart($notice),
$this->_recordAvailability($notice),
$this->_title($notice, $url_notice),
$this->_author($notice, $url_notice),
$this->_docType($notice, $type_doc),
$this->_link($notice, $type_doc),
$this->_image($notice, $preferences),
$this->_info($notice, $champs),
$this->_pcTag($notice),
$this->_xsl($notice)];
return $this->_divRecord(implode(array_filter($html)),
$notice,
'vignette');
}
protected function _xsl($record) {
$xsl = (new Class_Notice_Xsl($record, Class_Profil::getCurrentProfil()))
->beSearchResult();
return $xsl->isEnabled()
? $this->view->Notice_Xsl($xsl)
: '';
}
protected function _hold($record) {
return $this->_tag('div', $this->view->Notice_LienReserver($record),
['class' => 'vignette_lien_reserver']);
......
......@@ -21,6 +21,7 @@
class ZendAfi_View_Helper_Notice_Entete extends ZendAfi_View_Helper_BaseHelper {
public function notice_Entete($notice, $preferences) {
if(!$notice)
return '';
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment