Changeset 101755 in spip-zone


Ignore:
Timestamp:
Jan 16, 2017, 3:23:38 PM (3 years ago)
Author:
peetdu@…
Message:

Peaufinage de la gestion des horaires : si on active le paramètre « afficher les horaires » le formulaire propose un paramètre « Toute la journée » comme dans le plugin Agenda

Location:
_plugins_/simple_calendrier/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/simple_calendrier/trunk/base/simplecal.php

    r95272 r101755  
    4343                "date_debut"        => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
    4444                "date_fin"          => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
     45                "horaire"           => "varchar(3) NOT NULL DEFAULT 'oui'",
    4546                "lieu"              => "varchar(255) NOT NULL",
    4647                "descriptif"        => "text NOT NULL",
     
    4950                "lien_url"          => "varchar(255) NOT NULL",
    5051                "date"              => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", // creation ou publication (selon statut)
    51                 "statut"            => "varchar(8) NOT NULL",
     52                "statut"            => "varchar(20)  DEFAULT '0' NOT NULL",
    5253                "lang"              => "varchar(10) NOT NULL DEFAULT ''",
    5354                "langue_choisie"    => "varchar(3) NULL DEFAULT 'non'",
     
    5859        $key = array(
    5960                "PRIMARY KEY"     => "id_evenement",
     61                "KEY statut"      => "statut",
    6062                "KEY id_secteur"  => "id_secteur",
    6163                "KEY id_rubrique" => "id_rubrique",
     
    105107                'titre' => 'titre, lang',
    106108                'date' => 'date', // indique le nom du field pour le formulaires_dater_charger_dist
    107                 'champs_editables' => array('titre', 'date_debut', 'date_fin', 'lieu', 'descriptif', 'texte', 'lien_titre', 'lien_url', 'type', 'id_objet'),
     109                'champs_editables' => array('titre', 'date_debut', 'date_fin', 'horaire', 'lieu', 'descriptif', 'texte', 'lien_titre', 'lien_url', 'type', 'id_objet'),
    108110                'champs_versionnes' => array('id_rubrique', 'titre', 'descriptif', 'texte', 'lieu', 'date_debut', 'date_fin', 'lien_titre', 'lien_url', 'jointure_auteurs'),
    109111                'rechercher_champs' => array('titre'=>8, 'descriptif'=>4, 'texte'=>2),
  • _plugins_/simple_calendrier/trunk/formulaires/editer_evenement.html

    r101561 r101755  
    2323                </div>
    2424               
    25                 [(#REM) 'Date de début' est un champ obligatoire]
    26                 <div class="editer editer_date_debut obligatoire[ (#ENV**{erreurs}|table_valeur{date_debut}|oui)erreur]">
    27                         <label for="date_debut"><:simplecal:info_date_debut:> : </label>
    28                         [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_debut})</span>]
    29                         <input type='text' class='text date' name='date_debut' id='date_debut' value="#ENV{date_debut}" />
    30                         [(#CONFIG{simplecal_horaire}|=={oui}|oui)
    31                         <span class='afficher_horaire'>
    32                         <input type='text' class='text heure' name='heure_debut' style="width:4em" id='heure_debut' size='4' maxlength='5' value="[(#ENV{heure_debut})]" /></span>]
    33                 </div>
    34                
    35                 [(#REM) 'Date de fin' est un champ optionnel]
    36                 <div class="editer editer_date_fin[ (#ENV**{erreurs}|table_valeur{date_fin}|oui)erreur]">
    37                         <label for="date_fin"><:simplecal:info_date_fin:> : </label>
    38                         [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_fin})</span>]
    39                         <input type='text' class='text date' name='date_fin' id='date_fin' value="#ENV{date_fin}" />
    40                         [(#CONFIG{simplecal_horaire}|=={oui}|oui)
    41                         <span class='afficher_horaire'>
    42                         <input type='text' class='text heure' name='heure_fin' style="width:4em" id='heure_fin' size='4' maxlength='5' value="[(#ENV{heure_fin})]" />
    43                         </span>]
     25                <div class='editer fieldset'>
     26                        <fieldset>
     27                                <legend><:simplecal:evenement_date:></legend>
     28                               
     29                                [(#CONFIG{'simplecal_horaire'}|=={oui}|oui)
     30                                <div class="editer editer_horaire[ (#ENV**{erreurs}|table_valeur{horaire}|oui)erreur]">
     31                                        <label for="horaire"><:simplecal:evenement_horaire:></label>[
     32                                        <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{horaire})</span>
     33                                        ]<input type='checkbox' name='horaire' id='horaire' value='non' [(#ENV{horaire}|=={oui}|non)checked='checked']
     34                                                onclick="if (this.checked==false) { $('span.afficher_horaire').show();} else {$('span.afficher_horaire').hide();}" />
     35                                </div>]
     36
     37                                [(#REM) 'Date de début' est un champ obligatoire]
     38                                <div class="editer editer_date_debut obligatoire[ (#ENV**{erreurs}|table_valeur{date_debut}|oui)erreur]">
     39                                       
     40                                        <label for="date_debut"><:simplecal:info_date_debut:> : </label>
     41                                        [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_debut})</span>]
     42                                        <input type='text' class='text date' name='date_debut' id='date_debut' value="#ENV{date_debut}" />
     43                                        [(#CONFIG{simplecal_horaire}|=={oui}|oui)
     44                                        <span class='afficher_horaire[(#ENV{horaire}|=={oui}|non)none]'>
     45                                        <input type='text' class='text heure' name='heure_debut' style="width:4em" id='heure_debut' size='4' maxlength='5' value="[(#ENV{heure_debut})]" /></span>]
     46                                </div>
     47                               
     48                                [(#REM) 'Date de fin' est un champ optionnel]
     49                                <div class="editer editer_date_fin[ (#ENV**{erreurs}|table_valeur{date_fin}|oui)erreur]">
     50                                        <label for="date_fin"><:simplecal:info_date_fin:> : </label>
     51                                        [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_fin})</span>]
     52                                        <input type='text' class='text date' name='date_fin' id='date_fin' value="#ENV{date_fin}" />
     53                                        [(#CONFIG{simplecal_horaire}|=={oui}|oui)
     54                                        <span class='afficher_horaire[(#ENV{horaire}|=={oui}|non)none]'>
     55                                        <input type='text' class='text heure' name='heure_fin' style="width:4em" id='heure_fin' size='4' maxlength='5' value="[(#ENV{heure_fin})]" />
     56                                        </span>]
     57                                </div>
     58                        </fieldset>
    4459                </div>
    4560               
  • _plugins_/simple_calendrier/trunk/formulaires/editer_evenement.php

    r101561 r101755  
    1313include_spip('inc/editer');
    1414include_spip('inc/simplecal_utils');
     15include_spip('inc/config');
    1516
    16 function formulaires_editer_evenement_charger_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     17/**
     18 * Identifier le formulaire en faisant abstraction des parametres qui
     19 * ne representent pas l'objet edite
     20 */
     21function formulaires_editer_evenement_identifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     22        return serialize(array(intval($id_evenement),$lier_trad));
     23}
     24
     25function formulaires_editer_evenement_charger_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    1726        // Recupere automatiquement les champs de la table (entre autres...)
    1827        $valeurs = formulaires_editer_objet_charger('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
    1928
    2029        // fixer la date par defaut en cas de creation d'evenement
    21         if (!intval($id_evenement)) {
     30        if (!is_numeric($id_evenement)) {
    2231                $t=time();
    23                 $valeurs['date_debut'] = date('Y-m-d H:i:00', $t);
    24                 $valeurs['date_fin'] = date('Y-m-d H:i:00', $t+86400);
     32                $valeurs['date_debut'] = date('Y-m-d 00:00:00', $t);
     33                $valeurs['date_fin'] = date('Y-m-d 00:00:00', $t);
    2534                $valeurs['horaire'] = 'oui';
    2635        }
     
    4251       
    4352        // Appel en creation via portlet
    44         if (_request("new")=='oui'){
     53        if (_request('new')=='oui'){
    4554                $type = trim(_request("type"));
    4655                $id_objet = trim(_request("id_objet"));
     
    5059                }
    5160        }
    52        
    5361        return $valeurs;
    5462}
    5563
    56 /**
    57  * Identifier le formulaire en faisant abstraction des parametres qui
    58  * ne representent pas l'objet edite
    59  */
    60 function formulaires_editer_evenement_identifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
    61         return serialize(array(intval($id_evenement),$lier_trad));
    62 }
     64
    6365
    6466
    6567// Choix par defaut des options de presentation
    66 function evenements_edit_config($row)
    67 {
    68         global $spip_ecran, $spip_lang, $spip_display;
     68// function evenements_edit_config($row)
     69// {
     70//      global $spip_ecran, $spip_lang, $spip_display;
    6971
    70         $config = $GLOBALS['meta'];
    71         $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
    72         $config['langue'] = $spip_lang;
     72//      $config = $GLOBALS['meta'];
     73//      $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
     74//      $config['langue'] = $spip_lang;
    7375
    74         $config['restreint'] = ($row['statut'] == 'publie');
    75         return $config;
    76 }
     76//      $config['restreint'] = ($row['statut'] == 'publie');
     77//      return $config;
     78// }
    7779
    78 function formulaires_editer_evenement_verifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     80function formulaires_editer_evenement_verifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    7981        // Verifications automatiques
    8082        // ---------------------------
     
    8486        // Autres verifications
    8587        // ---------------------
    86        
     88
     89
     90        //Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater afin de tester plus bas la chronologie
    8791        include_spip('inc/date_gestion');
     92        $config_horaire = lire_config('simplecal_horaire');
     93        if ($config_horaire == 'non') {
     94                $get_horaire = false;
     95        }
     96        else {
     97                $get_horaire = _request('horaire') == 'non' ? false : true;
     98        }
    8899
    89         $horaire = lire_config('simplecal_horaire') == 'non' ? false : true;
    90100        if (empty($erreurs['date_debut'])) {
    91                 $date_debut = verifier_corriger_date_saisie('debut', $horaire, $erreurs);
     101                $date_debut = verifier_corriger_date_saisie('debut', $get_horaire, $erreurs);
    92102        }
    93103        if (empty($erreurs['date_fin'])) {
    94                 $date_fin = verifier_corriger_date_saisie('fin', $horaire, $erreurs);
     104                $date_fin = verifier_corriger_date_saisie('fin', $get_horaire, $erreurs);
    95105        }
    96106
    97107        // Chronologie : Date de fin >= Date de debut (si pas d'autres erreurs sur les dates)
    98         if (!$erreurs['date_debut'] && !$erreurs['date_fin']){
    99                 if ($date_debut && $date_fin){
    100                         $date_debut_sql = date_saisie2sql($date_debut);
    101                         $date_fin_sql = date_saisie2sql($date_fin);
    102                        
    103                         if ($date_debut_sql != '0000-00-00 00:00:00' && $date_fin_sql != '0000-00-00 00:00:00'){
    104                                 if ($date_fin_sql < $date_debut_sql){
    105                                         $erreurs['date_fin'] = _T('simplecal:validation_date_chronologie');
    106                                 }
    107                         }
    108                 }
     108        if ($date_debut and $date_fin and $date_fin < $date_debut) {
     109                $erreurs['date_fin'] = _T('simplecal:validation_date_chronologie');
    109110        }
    110111       
    111         $config = $config_fonc($row);
    112         if ($config['simplecal_refobj'] == 'oui'){
     112        $refobj = lire_meta('simplecal_refobj');
     113        if ($refobj == 'oui'){
    113114                // Ref saisie correctement ?
    114115                $ref = trim(_request('ref'));
     
    130131        }
    131132       
     133        set_request('horaire', _request('horaire') == 'non' ? 'non' : 'oui');
    132134        return $erreurs;
    133135}
    134136
    135 function formulaires_editer_evenement_traiter_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
    136        
    137         // On remet les dates au format SQL ('14/08/2011' => '14/08/2011 00:00:00')
    138         // set_request("date_debut", date_saisie2sql(_request("date_debut")));
    139         // set_request("date_fin", date_saisie2sql(_request("date_fin")));
     137function formulaires_editer_evenement_traiter_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     138        set_request('horaire', _request('horaire') == 'non' ? 'non' : 'oui');
    140139
     140        $config_horaire = lire_config('simplecal_horaire');
     141        if ($config_horaire == 'non') {
     142                $get_horaire = false;
     143        }
     144        else {
     145                $get_horaire = _request('horaire') == 'non' ? false : true;
     146        }
    141147        include_spip('inc/date_gestion');
    142         $erreurs = array();
    143         $date_debut = verifier_corriger_date_saisie('debut', true, $erreurs);
    144         $date_fin = verifier_corriger_date_saisie('fin', true, $erreurs);
     148        $date_debut = verifier_corriger_date_saisie('debut', $get_horaire, $erreurs);
     149        $date_fin = verifier_corriger_date_saisie('fin', $get_horaire, $erreurs);
    145150        set_request('date_debut', date('Y-m-d H:i:s', $date_debut));
    146151        set_request('date_fin', date('Y-m-d H:i:s', $date_fin));
     
    148153       
    149154        // On reconstitue les champs 'type' et 'id_objet' a partir du champ 'ref'
    150         $config = $config_fonc($row);
    151         if ($config['simplecal_refobj'] == 'oui'){
     155        $refobj = lire_meta('simplecal_refobj');
     156        if ($refobj == 'oui'){
    152157                $ref = trim(_request('ref'));
    153158                if ($ref){
     
    165170        }
    166171       
    167        
    168172        return formulaires_editer_objet_traiter('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
    169173}
  • _plugins_/simple_calendrier/trunk/lang/simplecal_fr.php

    r101575 r101755  
    9595        'evenement' => 'Évènement',
    9696        'evenements' => 'Évènements',
     97        'evenement_date' => 'Date',
     98        'evenement_horaire' => 'Toute la journée',
    9799        'evenements_recents' => 'Évènements récents',
    98100        'explication_ref' => 'La référence à un article ou une brève (ex : article23 ; breve45)',
  • _plugins_/simple_calendrier/trunk/prive/simplecal_style_prive.css

    r70836 r101755  
    1515.formulaire_configurer_evenements label.actif { font-weight:bold; }
    1616
     17.formulaire_spip .editer.editer_horaire label { margin-left:0; }
     18
    1719
    1820.simplecal-nbinrub { margin-bottom:0.5em; padding:0 0.5em 0.5em; border-bottom:1px dotted #000000; }
  • _plugins_/simple_calendrier/trunk/simplecal_administrations.php

    r95273 r101755  
    8585                array('simplecal_check_2_1_2'),
    8686        );
     87        $maj['2.1.3'] = array(
     88                array('sql_alter',"TABLE spip_evenements CHANGE `statut` `statut` VARCHAR(20) NOT NULL DEFAULT '0'"),
     89                array('sql_alter',"TABLE spip_evenements ADD `horaire` VARCHAR(3) NOT NULL DEFAULT 'oui' AFTER date_fin"),
     90                array('simplecal_meta_1_5')
     91        );
    8792       
    8893        include_spip('base/upgrade');
     
    99104        ecrire_meta('simplecal_lieu', 'oui');
    100105        ecrire_meta('simplecal_lien', 'non');
     106}
     107
     108function simplecal_meta_1_5(){
     109        ecrire_meta('simplecal_horaire', 'non');
    101110}
    102111
  • _plugins_/simple_calendrier/trunk/simplecal_pipelines.php

    r101298 r101755  
    157157function simplecal_configurer_liste_metas($metas) {
    158158        $metas['simplecal_autorisation_redac'] = 'non'; // [oui, non]
     159        $metas['simplecal_horaire'] = 'non'; // [non, secteur, partout]
    159160        $metas['simplecal_rubrique'] = 'non'; // [non, secteur, partout]
    160161        $metas['simplecal_refobj'] = 'non';   // [oui, non]
Note: See TracChangeset for help on using the changeset viewer.