Jump to content
rg701653

[MODULE GRATUIT] Mode Vacances

Recommended Posts

Bonjour,

 

Je viens de terminer mon premier module pour Prestashop v1.6

Je le pense utile (en tout cas pour moi il l'est) et j'espère qu'il le sera pour vous.

 

Si vous avez des idées d'améliorations, n'hésitez pas à proposer sur le github : https://github.com/guillaume-roy/holidaysmode

 

Ce module permet de passer la boutique en mode vacances (plus d'infos sur le site).

 

Guillaume.

 

EDIT 10/06/2014 : Correction du zip

EDIT 01/08/2014 : Ajout v1.2.0 - Compatible Prestashop v1.5.0.2 à v1.6+ / Sélection du hook où le message sera affiché.

EDIT 12/05/2016 : Ajout v1.3.0 - Ajout du champs de date de retour / Diverses corrections de code et CSS.

EDIT 17/08/2016 : Ajout v1.3.1 - Affichage de la date de retour dans le format de date de la boutique.

holidaysmode-v1.0.zip

holidaysmode-v1.2.0.zip

holidaysmode-v1.3.0.zip

holidaysmode-v1.3.1.zip

Edited by rg701653

Share this post


Link to post
Share on other sites

Merci pour la contrib....

 

Mais je n'arrive pas à l'installer pour tester sur presta v1.6.0.6.

 

Il n'apparait nul part dans la liste des modules.

 

Pourtant j'ai le message: "Module téléchargé avec succès" !!!!

Je ne comprend pas.

Share this post


Link to post
Share on other sites

Bonjour,

Ce module semble être exactement ce dont je recherche mais je suis en PS 1.5 :(.

Y'aurait-il moyen de le rendre compatible?

Merci

Share this post


Link to post
Share on other sites

Je pense qu'afin de le rendre compatible avec la 1.5 (je connais très peu cette version) il faudrait effectuer les actions suivantes :

  • https://github.com/guillaume-roy/holidaysmode/blob/master/holidaysmode.php
    • Suppression de la ligne 44
    • Valider que le type "switch" existe en 1.5 pour les champs de formulaire admin (lignes 253, 284, 303 et 329)
      • Sinon, basculer en type "radio"
    • Valider que l'icône "icon-cogs" existe en 1.5 (lignes 248 et 279)
      • C'est l'icône par défaut présent dans les autres modules de base
    • Adapter les templates de mails et le message de vacances dans le tunnel de conversion au design par défaut de la 1.5

 

Une fois cela effectué, il faut tester l'ensemble des fonctionnalités en 1.5.

Bien évidemment cela n'est qu'une supposition après lecture de la doc officielle de Prestashop.

 

N'hésitez pas à me faire un retour.

Share this post


Link to post
Share on other sites

Bonjour,

 

Merci de votre réponse.

Il faut également supprimer ou mettre en commentaire la ligne 50 pour ne pas tester la version.

- switch ne fonctionne pas en 1.5. Radio sans être esthétique (pb d'affichage) fonctionne

- icon-cogs ne semble pas exister en 1.5

Par contre je me suis arrêté là car du coup la page de sélection du mode de paiement ne se charge pas.

Comme je pars en congés ce weekend,!

Je vais essayer de regarder d'ici là.

Je reste en contact

Share this post


Link to post
Share on other sites

Bonjour,

 

Je ne supporte le module que pour la version 1.6 

Mes précédents commentaires ne sont qu'à titre indicatifs pour quelqu'un qui souhaiterait migrer le module dans une version antérieure.

Share this post


Link to post
Share on other sites

Version modifié du fichier holidaysmode.php compatible 1.5

<?php

/*
* The MIT License (MIT)
*
* Copyright (c) 2014 Guillaume ROY
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @author Guillaume ROY
* @copyright  Guillaume ROY
*
*/

if (!defined('_PS_VERSION_'))
    exit;

class HolidaysMode extends Module
{
    public function __construct()
    {
        $this->name = 'holidaysmode';
        $this->tab = 'front_office_features';
        $this->version = 1.0;
        $this->author = 'Guillaume ROY';
        $this->need_instance = 0;

        // Start Comp 1.5
        if (version_compare(_PS_VERSION_, '1.6.0.0', '>='))
                    $this->bootstrap = true;
        // Stop

        parent::__construct();    

        $this->displayName = $this->l('Holidays Mode');
        $this->description = $this->l('Set the current store in holidays mode.');
        //$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        // Start Comp 1.5
        $this->ps_versions_compliancy = array('min' => '1.5', 'max' => _PS_VERSION_);
        // Stop
        
    }

    public function install()
    {
        return
        parent::install() &&
        $this->registerHook('displayPaymentTop') &&
        $this->registerHook('actionValidateOrder') &&
        $this->registerHook('displayHeader') &&
        $this->initVariables();
    }
    
    public function uninstall()
    {
        return
        parent::uninstall() &&
        $this->unregisterHook('displayPaymentTop') &&
        $this->unregisterHook('actionValidateOrder') &&
        $this->unregisterHook('displayHeader') &&
        $this->cleanVariables();
    }

    protected function initVariables()
    {
        $languages = Language::getLanguages(false);
        foreach ($languages as $lang)
        {
            $values['HOLIDAYSMODE_MESSAGE'][(int)$lang['id_lang']] = '';
            Configuration::updateValue('HOLIDAYSMODE_MESSAGE', $values['HOLIDAYSMODE_MESSAGE']);

            $values['HOLIDAYSMODE_EMAIL_BODY'][(int)$lang['id_lang']] = '';
            Configuration::updateValue('HOLIDAYSMODE_EMAIL_BODY', $values['HOLIDAYSMODE_EMAIL_BODY']);

            $values['HOLIDAYSMODE_EMAIL_OBJECT'][(int)$lang['id_lang']] = '';
            Configuration::updateValue('HOLIDAYSMODE_EMAIL_OBJECT', $values['HOLIDAYSMODE_EMAIL_OBJECT']);
        }

        Configuration::updateValue('HOLIDAYSMODE_ACTIVATE', 0);
        Configuration::updateValue('HOLIDAYSMODE_EMAIL', 0);
        Configuration::updateValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', 0);

        return true;
    }

    protected function cleanVariables()
    {
        Configuration::deleteByName('HOLIDAYSMODE_ACTIVATE');
        Configuration::deleteByName('HOLIDAYSMODE_ACTIVATE_MESSAGE');
        Configuration::deleteByName('HOLIDAYSMODE_MESSAGE');
        Configuration::deleteByName('HOLIDAYSMODE_EMAIL_OBJECT');
        Configuration::deleteByName('HOLIDAYSMODE_EMAIL_BODY');
        Configuration::deleteByName('HOLIDAYSMODE_EMAIL');

        return true;
    }

    public function hookDisplayHeader($params)
    {
        if($this->moduleIsActivated())
        {
            $this->context->controller->addCSS($this->_path.'css/holidaysmode.css', 'all');
        }
    }

    public function hookDisplayPaymentTop($params)
    {
        if(!$this->moduleIsActivated())
            return '';

        if (!$this->isCached('blockbanner.tpl', $this->getCacheId()))
        {
            $holidaysmode_activate_message = intval(Configuration::get('HOLIDAYSMODE_ACTIVATE_MESSAGE'));
            $holidaysmode_message = strval(Configuration::get('HOLIDAYSMODE_MESSAGE', $this->context->language->id));

            if($holidaysmode_activate_message == 0 || empty($holidaysmode_message))
                return;

            $this->smarty->assign(array(
                'holidaysmode_message' => $holidaysmode_message
                ));
        }

        return $this->display(__FILE__, 'holidaysmode.tpl', $this->getCacheId());
    }

    protected function moduleIsActivated()
    {
        if(intval(Configuration::get('HOLIDAYSMODE_ACTIVATE')) == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

    public function hookActionValidateOrder($params)
    {
        if(!$this->moduleIsActivated())
            return;

        $holidaysmode_activate_email = intval(Configuration::get('HOLIDAYSMODE_EMAIL'));
        $holidaysmode_email_body = strval(Configuration::get('HOLIDAYSMODE_EMAIL_BODY', $this->context->language->id));
        $holidaysmode_email_object = strval(Configuration::get('HOLIDAYSMODE_EMAIL_OBJECT', $this->context->language->id));

        if($holidaysmode_activate_email == 0 || empty($holidaysmode_email_body) || empty($holidaysmode_email_object))
            return;

        $customer = $params['customer'];

        $template_vars = array(
            '{lastname}' => $customer->lastname,
            '{firstname}' => $customer->firstname,
            '{HOLIDAYSMODE_EMAIL_BODY}' => $this->l($holidaysmode_email_body)
        );

        $email_to = $customer->email;

        return Mail::Send(
            $this->context->language->id,
            'holidaysmode_order',
            Mail::l($holidaysmode_email_object, $this->context->language->id),
            $template_vars,
            $email_to,
            null,
            strval(Configuration::get('PS_SHOP_EMAIL')),
            strval(Configuration::get('PS_SHOP_NAME')),
            null,
            null,
            dirname(__FILE__).'/mails/',
            false,
            $this->context->shop->id);
    }

    public function postProcess()
    {
        if (Tools::isSubmit('submit'.$this->name))
        {
            $languages = Language::getLanguages(false);
            $values = array();
            foreach ($languages as $lang)
            {
                $values['HOLIDAYSMODE_MESSAGE'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_MESSAGE_'.$lang['id_lang']));
                $values['HOLIDAYSMODE_EMAIL_BODY'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_BODY_'.$lang['id_lang']));
                $values['HOLIDAYSMODE_EMAIL_OBJECT'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_OBJECT_'.$lang['id_lang']));
            }

            Configuration::updateValue('PS_CATALOG_MODE', intval(Tools::getValue('PS_CATALOG_MODE')));
            Configuration::updateValue('HOLIDAYSMODE_ACTIVATE', intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE')));
            Configuration::updateValue('HOLIDAYSMODE_EMAIL', intval(Tools::getValue('HOLIDAYSMODE_EMAIL')));
            Configuration::updateValue('HOLIDAYSMODE_EMAIL_BODY', $values['HOLIDAYSMODE_EMAIL_BODY']);
            Configuration::updateValue('HOLIDAYSMODE_EMAIL_OBJECT', $values['HOLIDAYSMODE_EMAIL_OBJECT']);
            Configuration::updateValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE_MESSAGE')));
            Configuration::updateValue('HOLIDAYSMODE_MESSAGE', $values['HOLIDAYSMODE_MESSAGE']);

            $this->_clearCache('holidaysmode.tpl');
            return $this->displayConfirmation($this->l('The settings have been updated.'));
        }

        return '';
    }

    public function getContent()
    {
    
        
        return $this->postProcess().$this->renderForm();

    
        
    }
    
    protected function renderForm()
    {
        $helper = new HelperForm();
        $helper->show_toolbar = false;
        $helper->table = $this->table;
        $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
        $helper->default_form_language = $lang->id;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
        $this->fields_form = array();

        $helper->identifier = $this->identifier;
        $helper->submit_action = 'submit'.$this->name;
        $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        $helper->tpl_vars = array(
            'uri' => $this->getPathUri(),
            'fields_value' => $this->getConfigFieldsValues(),
            'languages' => $this->context->controller->getLanguages(),
            'id_language' => $this->context->language->id
            );

        
        
        // Start Comp 1.5
        //return $helper->generateForm($this->buildForm());
        if (version_compare(_PS_VERSION_, '1.6.0.0', '>='))        
        return $helper->generateForm($this->buildForm());
        else
        return $helper->generateForm($this->buildForm15());
        // Stop Comp 1.5
        
    }

    protected function buildForm()
    {
        $fields_form[0]['form'] = array(
            'legend' => array(
                'title' => $this->l('General'),
                'icon' => 'icon-cogs'
                ),
            'input' => array(
                array(
                    'name' => 'HOLIDAYSMODE_ACTIVATE',
                    'type' => 'switch',
                    'label' => $this->l('Activate'),
                    'desc' => $this->l('Activate the holidays mode.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                            ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                            )
                        )
                    )    
                ),
            'submit' => array(
                'title' => $this->l('Save')
                )
            );
        
        $fields_form[1]['form'] = array(
            'legend' => array(
                'title' => $this->l('Options'),
                'icon' => 'icon-cogs'
                ),
            'input' => array(
                array(
                    'name' => 'PS_CATALOG_MODE',
                    'type' => 'switch',
                    'label' => $this->l('Catalog mode'),
                    'desc' => $this->l('Disable orders functionalities.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                            ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                            )
                        )
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_ACTIVATE_MESSAGE',
                    'type' => 'switch',
                    'label' => $this->l('Display Message'),
                    'desc' => $this->l('Display the message in the payment selection page.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                        ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                        )
                    )
                ),
                array(
                    'name' => 'HOLIDAYSMODE_MESSAGE',
                    'type' => 'text',
                    'label' => $this->l('Message'),
                    'desc' => $this->l('The message to be displayed.'),
                    'lang' => true
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL',
                    'type' => 'switch',
                    'label' => $this->l('Send Email'),
                    'desc' => $this->l('Notification email sent after the order validation.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                        ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                        )
                    )
                ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL_OBJECT',
                    'type' => 'text',
                    'label' => $this->l('Email Object'),
                    'lang' => true,
                    'desc' => $this->l('Email object. Used in html and text mails.')
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL_BODY',
                    'type' => 'text',
                    'label' => $this->l('Email Body'),
                    'lang' => true,
                    'desc' => $this->l('Email body without the header and footer. Used in html and text mails.')
                    )
            ),
            'submit' => array(
                'title' => $this->l('Save')
            )
        );

        return $fields_form;
    }
    // Start Comp 1.5
    protected function buildForm15()
    {
        $fields_form[0]['form'] = array(
            'legend' => array(
                'title' => $this->l('General'),
                ),
            'input' => array(
                array(
                    'name' => 'HOLIDAYSMODE_ACTIVATE',
                    'type' => 'radio',
                    'class' => 't',
                    'label' => $this->l('Activate'),
                    'desc' => $this->l('Activate the holidays mode.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                            ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                            )
                        )
                    )    
                ),
            'submit' => array(
                'title' => $this->l('Save')
                )
            );
        
        $fields_form[1]['form'] = array(
            'legend' => array(
                'title' => $this->l('Options'),
                
                ),
            'input' => array(
                array(
                    'name' => 'PS_CATALOG_MODE',
                    'type' => 'radio',
                    'class' => 't',
                    'label' => $this->l('Catalog mode'),
                    'desc' => $this->l('Disable orders functionalities.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                            ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                            )
                        )
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_ACTIVATE_MESSAGE',
                    'type' => 'radio',
                    'class' => 't',
                    'label' => $this->l('Display Message'),
                    'desc' => $this->l('Display the message in the payment selection page.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                        ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                        )
                    )
                ),
                array(
                    'name' => 'HOLIDAYSMODE_MESSAGE',
                    'type' => 'text',
                    'label' => $this->l('Message'),
                    'desc' => $this->l('The message to be displayed.'),
                    'lang' => true
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL',
                    'type' => 'radio',
                    'class' => 't',
                    'label' => $this->l('Send Email'),
                    'desc' => $this->l('Notification email sent after the order validation.'),
                    'is_bool' => true,
                    'values' => array(
                        array(
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Enabled')
                        ),
                        array(
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Disabled')
                        )
                    )
                ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL_OBJECT',
                    'type' => 'text',
                    'label' => $this->l('Email Object'),
                    'lang' => true,
                    'desc' => $this->l('Email object. Used in html and text mails.')
                    ),
                array(
                    'name' => 'HOLIDAYSMODE_EMAIL_BODY',
                    'type' => 'text',
                    'label' => $this->l('Email Body'),
                    'lang' => true,
                    'desc' => $this->l('Email body without the header and footer. Used in html and text mails.')
                    )
            ),
            'submit' => array(
                'title' => $this->l('Save')
            )
        );

        return $fields_form;
    }
    // Stop

    protected function getConfigFieldsValues()
    {
        $languages = Language::getLanguages(false);
        $fields = array();

        foreach ($languages as $lang)
        {
            $fields['HOLIDAYSMODE_MESSAGE'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_MESSAGE_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_MESSAGE', $lang['id_lang'])));
            $fields['HOLIDAYSMODE_EMAIL_BODY'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_BODY_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_EMAIL_BODY', $lang['id_lang'])));
            $fields['HOLIDAYSMODE_EMAIL_OBJECT'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_OBJECT_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_EMAIL_OBJECT', $lang['id_lang'])));
        }

        return array(
            'HOLIDAYSMODE_ACTIVATE_MESSAGE' => intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', Configuration::get('HOLIDAYSMODE_ACTIVATE_MESSAGE'))),
            'HOLIDAYSMODE_ACTIVATE' => intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE', Configuration::get('HOLIDAYSMODE_ACTIVATE'))),
            'HOLIDAYSMODE_MESSAGE' => $fields['HOLIDAYSMODE_MESSAGE'],
            'HOLIDAYSMODE_EMAIL_BODY' => $fields['HOLIDAYSMODE_EMAIL_BODY'],
            'HOLIDAYSMODE_EMAIL_OBJECT' => $fields['HOLIDAYSMODE_EMAIL_OBJECT'],
            'HOLIDAYSMODE_EMAIL' => intval(Tools::getValue('HOLIDAYSMODE_EMAIL', Configuration::get('HOLIDAYSMODE_EMAIL'))),
            'PS_CATALOG_MODE' => intval(Tools::getValue('PS_CATALOG_MODE', Configuration::get('PS_CATALOG_MODE')))
            );
    }
}

Bonne journée

 

Share this post


Link to post
Share on other sites

Merci à okom3pom pour l'adaptation à la version 1.5 :)

Par contre (j'ose une demande...) serait-il possible de "prévenir" les futurs clients avant la page de paiement

Je sais qu'on peut passer la boutique en mode catalogue

Je sais aussi que les commandes peuvent être validées au retour des vacances via le mail

Mais voilà je pose la question...

Encore bravo pour l'adaptation :D

Share this post


Link to post
Share on other sites

Tu peux ajouter un hook sur le displayTop

 

Je pars faire un apéro pétanque je te poste la fonction hook dans la soirée ou demain ^_^

Edited by okom3pom

Share this post


Link to post
Share on other sites

Bonsoir,

Je n'arrive pas à installer sur une 1.5  :(

J'ai décompressé l'archive, modifié le "holidaysmode.php" et transféré le tout....

Quand je veux installer, j'ai le message :

Le ou les modules suivants n'ont pas été correctement installés :

  • - holidaysmode : 
    The version of your module is not compliant with your PrestaShop version.
  • une idée?
  • Merci.

Share this post


Link to post
Share on other sites

@jlefe Il faut que tu modifies le fichier avec ce que j'ai posté plus haut.

 

@nympheur il te suffit d'ajouter ça dans le fichier :

    public function hookdisplayTop($params)
    {
    
    
    return $this->hookDisplayPaymentTop($params);
    
    }

Et de remplacer ça

	public function install()
	{
		return 
		parent::install() &&
		$this->registerHook('displayPaymentTop') &&
		$this->registerHook('actionValidateOrder') &&
		$this->registerHook('displayHeader') && 
		$this->initVariables();
	}

par

    public function install()
    {
        return
        parent::install() &&
        $this->registerHook('displayPaymentTop') &&
        $this->registerHook('actionValidateOrder') &&
        $this->registerHook('displayHeader') &&
        $this->registerHook('displayTop') &&
        $this->initVariables();
    }

Ensuite tu réinitialises le module.

 

Bonne soirée

Share this post


Link to post
Share on other sites

C'est ce que j'ai fait okom3pom. Mais j'ai malheureusement se message :(

Installé, désinstallé, rien n'y fait.

Edited by jlefe

Share this post


Link to post
Share on other sites

@jlefe

 

Tu peux essayer de supprimer complètement ces lignes :

        //$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        // Start Comp 1.5
        $this->ps_versions_compliancy = array('min' => '1.5', 'max' => _PS_VERSION_);
        // Stop

Bonne journée

Share this post


Link to post
Share on other sites

Bonjour,

 

merci pour ce module.

 

Je n'arrive pas à installer la version 1.2, ni via le backoffice, ni via FTP. Je suis sur presta 1.5.6.2.

 

Quelqu'un peut m'aider ?

 

Florian

Share this post


Link to post
Share on other sites

Bonjour, merci pour cette contribution.

 

Une amélioration possible serait la programmation d'une plage de désactivation de la boutique.

Par exemple boutique en mode catalogue du x/xx/ 2014 au x/xx/2014 puis retour à la normale, histoire de ne pas rater les ventes du week-end avant le retour de vacance.

Share this post


Link to post
Share on other sites

@potsbob

 

Il faut changer le nom du dossier tu dois avoir : holidaysmode-master donc il faut le re-nommer holidaysmode

 

Je viens de mettre la 1.2 sur une 1.5.6.2 et une 1.6.08 ça fonctionne parfaitement.

 

@jomcdonald

 

Oui c'est une bonne idée, j'utilise également un textarea avec l'éditeur tymce pour le message on peut mettre en forme et ajouter des liens facilement

 

3pom

Edited by okom3pom

Share this post


Link to post
Share on other sites

@rg701653  A la ligne 140 je pense qu'il y a un petit oubli de remplacement.

 

Ce module m'étant très utile ( même si je ne l'utilise pas pour les vacances :ph34r: ) , je vous poste des petites modifications pour pouvoir utiliser l'éditeur tymce pour le message et une date de désactivation automatique de l'affichage du message.

 

Attention ça ne désactive pas l'envoi de l'e-mail

<?php

/*
* The MIT License (MIT)
*
* Copyright (c) 2014 Guillaume ROY
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* 
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @author Guillaume ROY
* @copyright  Guillaume ROY
*
*/

if (!defined('_PS_VERSION_'))
	exit;

class HolidaysMode extends Module
{
	public function __construct()
	{
		$this->name = 'holidaysmode';
		$this->tab = 'front_office_features';
		$this->version = '1.2.0';
		$this->author = 'Guillaume ROY';
		$this->need_instance = 0;

		if(version_compare(_PS_VERSION_, '1.6.0.0', '>='))
		{
			$this->bootstrap = true;
		}

		parent::__construct();	

		$this->displayName = $this->l('Holidays Mode');
		$this->description = $this->l('Set the current store in holidays mode.');
		$this->ps_versions_compliancy = array('min' => '1.5.0.2', 'max' => _PS_VERSION_);
	}

	public function install()
	{
		return 
		parent::install() &&
		$this->registerHook('displayPaymentTop') &&
		$this->registerHook('displayTop') &&
		$this->registerHook('actionValidateOrder') &&
		$this->registerHook('displayHeader') && 
		$this->initVariables();
	}
	
	public function uninstall()
	{
		return 
		parent::uninstall() &&
		$this->unregisterHook('displayPaymentTop') &&
		$this->unregisterHook('actionValidateOrder') &&
		$this->unregisterHook('displayHeader') && 
		$this->registerHook('displayTop') &&
		$this->cleanVariables();
	}

	protected function initVariables()
	{
		$languages = Language::getLanguages(false);
		foreach ($languages as $lang)
		{
			$values['HOLIDAYSMODE_MESSAGE'][(int)$lang['id_lang']] = '';
			Configuration::updateValue('HOLIDAYSMODE_MESSAGE', $values['HOLIDAYSMODE_MESSAGE']);

			$values['HOLIDAYSMODE_EMAIL_BODY'][(int)$lang['id_lang']] = '';
			Configuration::updateValue('HOLIDAYSMODE_EMAIL_BODY', $values['HOLIDAYSMODE_EMAIL_BODY']);

			$values['HOLIDAYSMODE_EMAIL_OBJECT'][(int)$lang['id_lang']] = '';
			Configuration::updateValue('HOLIDAYSMODE_EMAIL_OBJECT', $values['HOLIDAYSMODE_EMAIL_OBJECT']);
		}

		Configuration::updateValue('HOLIDAYSMODE_ACTIVATE', 0);
		Configuration::updateValue('HOLIDAYSMODE_EMAIL', 0);
		Configuration::updateValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', 0);
		Configuration::updateValue('HOLIDAYSMODE_HOOK', 'displayPaymentTop');
		// Modif Start
		Configuration::updateValue('HOLIDAYSMODE_RETURN_DATE', '');
		// Modif Stop
		
		return true;
	}

	protected function cleanVariables()
	{
		Configuration::deleteByName('HOLIDAYSMODE_ACTIVATE');
		Configuration::deleteByName('HOLIDAYSMODE_ACTIVATE_MESSAGE');
		Configuration::deleteByName('HOLIDAYSMODE_MESSAGE');
		Configuration::deleteByName('HOLIDAYSMODE_EMAIL_OBJECT');
		Configuration::deleteByName('HOLIDAYSMODE_EMAIL_BODY');
		Configuration::deleteByName('HOLIDAYSMODE_EMAIL');
		Configuration::deleteByName('HOLIDAYSMODE_HOOK');
		// Modif Start
		Configuration::deleteByName('HOLIDAYSMODE_RETURN_DATE');
		// Modif Stop

		return true;
	}

	public function hookDisplayHeader($params)
	{
		if($this->moduleIsActivated())
		{
			$this->context->controller->addCSS($this->_path.'css/holidaysmode.css', 'all');
		}
	}

	public function hookDisplayTop($params)
	{
		return $this->displayMessage($params, 'displayTop');
	}

	public function hookDisplayPaymentTop($params)
	{
		return $this->displayMessage($params, 'displayPaymentTop');
	}

	protected function displayMessage($params, $selectedHook)
	{
		if(!$this->moduleIsActivated())
			return '';

		if(strcasecmp(Configuration::get('HOLIDAYSMODE_HOOK'), $selectedHook) != 0)
			return ''; 

		// Why blockbanner.tpl ?
		if (!$this->isCached('blockbanner.tpl', $this->getCacheId()))
		{
			$holidaysmode_activate_message = intval(Configuration::get('HOLIDAYSMODE_ACTIVATE_MESSAGE'));
			$holidaysmode_message = strval(Configuration::get('HOLIDAYSMODE_MESSAGE', $this->context->language->id));
			// Modif Start
			$holidaysmode_end_date = Configuration::get('HOLIDAYSMODE_RETURN_DATE');
			
			if( isset( $holidaysmode_end_date ) && Validate::isDate($holidaysmode_end_date) && class_exists('DateTime') && method_exists('DateTime','diff')  )
			{
				$nb_days =  $this->compare_date($holidaysmode_end_date);
				
				
					if(  $nb_days < 1 )
						return;
			}
			else
				$nb_days = false; 
			// Modif Stop				
					
			if( $holidaysmode_activate_message == 0 || empty($holidaysmode_message) )
				return;
				
			$this->smarty->assign(array(
				'holidaysmode_message' => $holidaysmode_message,
				// Modif Start
				// Le nombre de jour restant avant  la reprise 
				// on peut l'utiliser dans le .tpl Ex : Reprise de la préparation des commandes et des expéditions dans {$nb_days} jours 
				'holidaysmode_nb_days' => $nb_days 
				// Modif Stop
				));
		}

		return $this->display(__FILE__, 'holidaysmode.tpl', $this->getCacheId());
	}

	protected function moduleIsActivated()
	{
		if(intval(Configuration::get('HOLIDAYSMODE_ACTIVATE')) == 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	public function hookActionValidateOrder($params)
	{
		if(!$this->moduleIsActivated())
			return;

		$holidaysmode_activate_email = intval(Configuration::get('HOLIDAYSMODE_EMAIL'));
		$holidaysmode_email_body = strval(Configuration::get('HOLIDAYSMODE_EMAIL_BODY', $this->context->language->id));
		$holidaysmode_email_object = strval(Configuration::get('HOLIDAYSMODE_EMAIL_OBJECT', $this->context->language->id));

		if($holidaysmode_activate_email == 0 || empty($holidaysmode_email_body) || empty($holidaysmode_email_object))
			return;

		$customer = $params['customer'];

		$template_vars = array(
			'{lastname}' => $customer->lastname,
			'{firstname}' => $customer->firstname,
			'{HOLIDAYSMODE_EMAIL_BODY}' => $this->l($holidaysmode_email_body)
		);

		$email_to = $customer->email;

		return Mail::Send(
			$this->context->language->id, 
			'holidaysmode_order', 
			Mail::l($holidaysmode_email_object, $this->context->language->id), 
			$template_vars, 
			$email_to, 
			null, 
			strval(Configuration::get('PS_SHOP_EMAIL')), 
			strval(Configuration::get('PS_SHOP_NAME')), 
			null, 
			null, 
			dirname(__FILE__).'/mails/', 
			false, 
			$this->context->shop->id);
	}

	public function postProcess()
	{
		if (Tools::isSubmit('submit'.$this->name))
		{
			$languages = Language::getLanguages(false);
			$values = array();
			$output  = null ;
			
			foreach ($languages as $lang)
			{
			// Modif Start	
								if (  !Validate::isCleanHtml( Tools::getValue('HOLIDAYSMODE_MESSAGE_'.$lang['id_lang'] ) ) )
									$output .= $this->displayError( sprintf( $this->l('Invalid terms for %s'), $lang['name'] ) );
								else
									$values['HOLIDAYSMODE_MESSAGE'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_MESSAGE_'.$lang['id_lang']));
			// Modif stop						
								
								
				$values['HOLIDAYSMODE_EMAIL_BODY'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_BODY_'.$lang['id_lang']));
				$values['HOLIDAYSMODE_EMAIL_OBJECT'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_OBJECT_'.$lang['id_lang']));
			}
			
			// Modif Start	
			if( $output )
				return $output;
			// Modif Stop		

			Configuration::updateValue('PS_CATALOG_MODE', intval(Tools::getValue('PS_CATALOG_MODE')));
			Configuration::updateValue('HOLIDAYSMODE_ACTIVATE', intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE')));
			Configuration::updateValue('HOLIDAYSMODE_EMAIL', intval(Tools::getValue('HOLIDAYSMODE_EMAIL')));
			Configuration::updateValue('HOLIDAYSMODE_EMAIL_BODY', $values['HOLIDAYSMODE_EMAIL_BODY']);
			Configuration::updateValue('HOLIDAYSMODE_EMAIL_OBJECT', $values['HOLIDAYSMODE_EMAIL_OBJECT']);
			Configuration::updateValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE_MESSAGE')));
			// Modif Start	
			Configuration::updateValue('HOLIDAYSMODE_MESSAGE', $values['HOLIDAYSMODE_MESSAGE'],true);
			// Modif Stop	
			Configuration::updateValue('HOLIDAYSMODE_HOOK', Tools::getValue('HOLIDAYSMODE_HOOK'));
			Configuration::updateValue('HOLIDAYSMODE_RETURN_DATE', Tools::getValue('HOLIDAYSMODE_RETURN_DATE'));

			$this->_clearCache('holidaysmode.tpl');
			return $this->displayConfirmation($this->l('The settings have been updated.'));
		}

		return '';
	}

	public function getContent()
	{
		return $this->postProcess().$this->renderForm();
	}
	
	protected function renderForm()
	{
		$helper = new HelperForm();
		$helper->show_toolbar = false;
		$helper->table = $this->table;
		$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
		$helper->default_form_language = $lang->id;
		$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
		$this->fields_form = array();

		$helper->identifier = $this->identifier;
		$helper->submit_action = 'submit'.$this->name;
		$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
		$helper->token = Tools::getAdminTokenLite('AdminModules');
		$helper->tpl_vars = array(
			'uri' => $this->getPathUri(),
			'fields_value' => $this->getConfigFieldsValues(),
			'languages' => $this->context->controller->getLanguages(),
			'id_language' => $this->context->language->id
			);

		return $helper->generateForm($this->buildForm());
	}

	protected function buildForm()
	{
		$switchType = "switch";
		$generalIcon = "icon-cogs";
		$inputClass = "";

		if(version_compare(_PS_VERSION_, '1.6.0.0', '<'))
		{
			$switchType = "radio";
			$generalIcon = _PS_ADMIN_IMG_ . 'information.png';
			$inputClass = "t";
		}

		$hooksOptions = array(
			array(
				'id_option' => 'displayPaymentTop',
				'name' => $this->l('Payment page (displayPaymentTop)')
			),
			array(
				'id_option' => 'displayTop',
				'name' => $this->l('Top of all pages (displayTop)')
			)
		);

		$fields_form[0]['form'] = array(
			'legend' => array(
				'title' => $this->l('General'),
				'icon' => $generalIcon
				),
			'input' => array(
				array(
					'name' => 'HOLIDAYSMODE_ACTIVATE',
					'type' => $switchType,
					'class' => $inputClass,
					'label' => $this->l('Activate'),
					'desc' => $this->l('Activate the holidays mode.'),
					'is_bool' => true,
					'values' => array(
						array(
							'id' => 'active_on',
							'value' => 1,
							'label' => $this->l('Enabled')
							),
						array(
							'id' => 'active_off',
							'value' => 0,
							'label' => $this->l('Disabled')
							)
						)
					)	
				),
			'submit' => array(
				'title' => $this->l('Save')
				)
			);
		
		$fields_form[1]['form'] = array(
			'legend' => array(
				'title' => $this->l('Options'),
				'icon' => $generalIcon
				),
			'input' => array(
				array(
					'name' => 'PS_CATALOG_MODE',
					'type' => $switchType,
					'class' => $inputClass,
					'label' => $this->l('Catalog mode'),
					'desc' => $this->l('Disable orders functionalities.'),
					'is_bool' => true,
					'values' => array(
						array(
							'id' => 'active_on',
							'value' => 1,
							'label' => $this->l('Enabled')
							),
						array(
							'id' => 'active_off',
							'value' => 0,
							'label' => $this->l('Disabled')
							)
						)
					),
				array(
					'name' => 'HOLIDAYSMODE_ACTIVATE_MESSAGE',
					'type' => $switchType,
					'class' => $inputClass,
					'label' => $this->l('Display Message'),
					'desc' => $this->l('Display the message in the payment selection page.'),
					'is_bool' => true,
					'values' => array(
						array(
							'id' => 'active_on',
							'value' => 1,
							'label' => $this->l('Enabled')
						),
						array(
							'id' => 'active_off',
							'value' => 0,
							'label' => $this->l('Disabled')
						)
					)
				),
				array(
					'name' => 'HOLIDAYSMODE_HOOK',
					'type' => 'select',
					'label' => $this->l('Select Hook'),
					'desc' => $this->l('Select the hook where the message will be displayed.'),
					'required' => true, 
					'options' => array(
						'query' => $hooksOptions,
						'id' => 'id_option',
						'name' => 'name'
					)
				),
				// Modif Start
				array(
					'name' => 'HOLIDAYSMODE_MESSAGE',
					'type' => 'textarea',
					'label' => $this->l('Message'),
					'desc' => $this->l('The message to be displayed.'),
					'lang' => true,
					 'cols' => 60,
					'rows' => 10,
					'class' => 'rte',
					'autoload_rte' => true,
					),
					
					array(
					'name' => 'HOLIDAYSMODE_RETURN_DATE',
					'type' => 'date',
					'label' => $this->l('End holidays'),
					'desc' => $this->l('Only work with PHP 5.3 for the moment !'),
					),
					// Modif Stop
					
					
				array(
					'name' => 'HOLIDAYSMODE_EMAIL',
					'type' => $switchType,
					'class' => $inputClass,
					'label' => $this->l('Send Email'),
					'desc' => $this->l('Notification email sent after the order validation.'),
					'is_bool' => true,
					'values' => array(
						array(
							'id' => 'active_on',
							'value' => 1,
							'label' => $this->l('Enabled')
						),
						array(
							'id' => 'active_off',
							'value' => 0,
							'label' => $this->l('Disabled')
						)
					)
				),
				array(
					'name' => 'HOLIDAYSMODE_EMAIL_OBJECT',
					'type' => 'text',
					'label' => $this->l('Email Object'),
					'lang' => true,
					'desc' => $this->l('Email object. Used in html and text mails.')
					),
				array(
					'name' => 'HOLIDAYSMODE_EMAIL_BODY',
					'type' => 'text',
					'label' => $this->l('Email Body'),
					'lang' => true,
					'desc' => $this->l('Email body without the header and footer. Used in html and text mails.')
					)
			),
			'submit' => array(
				'title' => $this->l('Save')
			)
		);

		return $fields_form;
	}
	
	// Modif Start
	// PHP 5.3 only  une autre fonction serait mieux je vais regarder dans la class Tools si quelque chose ne serait pas mieux
	public function compare_date( $date1 , $date2  =  false ) 
	{
	
		if( class_exists('DateTime') && method_exists('DateTime','diff')  )
		{
		
			if( isset( $date2 ) )
				$date2 =  date('Y-m-d');
	
			$datetime1 = new DateTime($date2);
			$datetime2 = new DateTime($date1);
			$interval = $datetime1->diff($datetime2);
		
			return (int)$interval->format(' %R%a ');
			
		}
		else 
		return 'PHP 5.3 Only';
			
	}
	// Modif Stop 

	protected function getConfigFieldsValues()
	{
		$languages = Language::getLanguages(false);
		$fields = array();

		foreach ($languages as $lang)
		{
			$fields['HOLIDAYSMODE_MESSAGE'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_MESSAGE_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_MESSAGE', $lang['id_lang'])));
			$fields['HOLIDAYSMODE_EMAIL_BODY'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_BODY_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_EMAIL_BODY', $lang['id_lang'])));
			$fields['HOLIDAYSMODE_EMAIL_OBJECT'][$lang['id_lang']] = strval(Tools::getValue('HOLIDAYSMODE_EMAIL_OBJECT_'.$lang['id_lang'], Configuration::get('HOLIDAYSMODE_EMAIL_OBJECT', $lang['id_lang'])));
		}

		return array(
			'HOLIDAYSMODE_ACTIVATE_MESSAGE' => intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE_MESSAGE', Configuration::get('HOLIDAYSMODE_ACTIVATE_MESSAGE'))),
			'HOLIDAYSMODE_ACTIVATE' => intval(Tools::getValue('HOLIDAYSMODE_ACTIVATE', Configuration::get('HOLIDAYSMODE_ACTIVATE'))),
			'HOLIDAYSMODE_MESSAGE' => $fields['HOLIDAYSMODE_MESSAGE'],
			'HOLIDAYSMODE_EMAIL_BODY' => $fields['HOLIDAYSMODE_EMAIL_BODY'],
			'HOLIDAYSMODE_EMAIL_OBJECT' => $fields['HOLIDAYSMODE_EMAIL_OBJECT'],
			'HOLIDAYSMODE_EMAIL' => intval(Tools::getValue('HOLIDAYSMODE_EMAIL', Configuration::get('HOLIDAYSMODE_EMAIL'))),
			'HOLIDAYSMODE_HOOK' => Tools::getValue('HOLIDAYSMODE_HOOK', Configuration::get('HOLIDAYSMODE_HOOK')),
			// Modif Start
			'HOLIDAYSMODE_RETURN_DATE' => Tools::getValue('HOLIDAYSMODE_RETURN_DATE', Configuration::get('HOLIDAYSMODE_RETURN_DATE')),
			// Modif Stop
			'PS_CATALOG_MODE' => intval(Tools::getValue('PS_CATALOG_MODE', Configuration::get('PS_CATALOG_MODE')))
			);
	}
}

Dans le .tpl

 

Remplacer :

{$holidaysmode_message|escape:'htmlall':'UTF-8'}

Par

{$holidaysmode_message|escape:'UTF-8'}

Vous pouvez également utiliser {$holidaysmode_nb_day} dans le .tpl qui correspond au nombre de jour restant

 

Exemple {l s='Reprise des expéditions dans' mod='holidaysmode'} {$holidaysmode_nb_days} {l s='jours' mod='holidaysmode'}

 

Affichera : Reprise des expéditions dans X jours

 

 

Bonne journée à tous

 

3pom!

Edited by okom3pom

Share this post


Link to post
Share on other sites

Bonjour,

 

effectivement merci @okom3pom ça fonctionne.

 

J'ai été voir ton site et tu as carrément un compte à rebours, c'est top ça !

 

J'ai rajouté tes modifications du dessus pour avoir X jours mais ça ne fonctionne pas.

Est-ce que tu as prévu de rendre cela compatible avec les versions php > 5.3 ?

Je suis en 5.4 ;((

 

En tout cas merci beaucoup,

 

Florian

Edited by potsbob

Share this post


Link to post
Share on other sites

Hello,

 

Il faut php 5.3 ou + donc pas de problème, as-tu une erreur ? Tu as fais un copier coller entier du fichier et tu as bien ajouter la variable dans le .tpl ?

 

3pom!

Share this post


Link to post
Share on other sites

@okom3pom , je n'ai aucun message d'erreur, je ne vois juste pas le "X" nb de jour.

 

J'ai bien intégré tout le code puisque je vois bien en admin le nouvel éditeur et le champs date de fin.

D'ailleurs quand je dépasse la date le message disparait bien de la boutique.

 

Dans mon tpl j'ai bien rajouté :

 

<div class="holidaysmode-message">
{$holidaysmode_message|escape:'UTF-8'}
{l s='Reprise des expéditions dans' mod='holidaysmode'} {$holidaysmode_nb_day} {l s='jours' mod='holidaysmode'}
</div>

 

Ca me donne sur le front: "Reprise des expéditions dans jours"

 

Une idée ?

 

Merci

Share this post


Link to post
Share on other sites

Bonjour je viens de faire une modification pour avoir "jour" avec ou sans de "s"

 

{if $holidaysmode_nb_days <= 1} {l s='jour' mod='holidaysmode'}
{/if}
{if $holidaysmode_nb_days >= 2} {l s='jours' mod='holidaysmode'}
{/if}
 
Cela peut servir.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×