source: spip-zone/_plugins_/objets_disponibilites/trunk/saisies/dates_disponibles.html @ 114196

Last change on this file since 114196 was 114196, checked in by abelass@…, 7 months ago
  • le calucl des dates utilisés se fait dans une fonction surchargeable
  • lors d'une vérification, adapter le décalage afin qu'il détecte les périodes d'un jour
File size: 5.9 KB
Line 
1[(#REM)
2
3        Action :
4                - Les dates disponibles pour un objet données.
5
6        Parametres :
7                - date_limite_debut : a partir de quand les dates sont affichées.
8                - date_limite_fin : limite de dates à afficher
9                - objet : l'objet poir lequel on veit calculer les disponibilités
10                - id_objet : l'identifiant de l'objet poir lequel on veit calculer les disponibilités
11                -       indisponible_decalage_debut : calcul des indisponibles, le nombre de jour à ajouter au début
12                indisponible_decalage_fin : calcul des indisponibles, le nombre de jour à ajouter à la fin
13                disponible_decalage_debut : calcul des disponibles, le nombre de jour à ajouter au début
14                disponible_decalage_fin : calcul des disponibles, le nombre de jour à ajouter à la fin
15                utilise_decalage_debut : calcul des utilisés, le nombre de jour à ajouter au début
16                utilise_decalage_fin : calcul des utilisés, le nombre de jour à ajouter à la fin
17                utilisation_objet : l'objet à utiliser pour le calcul des dates utilisées,
18
19
20        Exemple d'appel :
21        [(#SAISIE{dates_disponibles, date_debut,        obligatoire=oui,
22                label=<:dates_outils:champ_date_debut_label:>,
23                objet=[(#ENV{location_objet}|objet_type)],
24                date_limite_debut=#ENV{date_limite_debut,#DATE},
25                date_limite_fin=#ENV{date_limite_fin,#DATE},
26                id_objet=#ENV{id_location_objet},
27                indisponible_decalage_debut=#ENV{indisponible_decalage_debut},
28                indisponible_decalage_fin=#ENV{indisponible_decalage_fin},
29                disponible_decalage_debut=#ENV{disponible_decalage_debut},
30                disponible_decalage_fin=#ENV{disponible_decalage_fin},
31                utilise_decalage_debut=#ENV{utilise_decalage_debut},
32                utilise_decalage_fin=#ENV{utilise_decalage_fin},
33                utilisation_objet=#ENV{utilisation_objet},
34        })]
35]
36#SET{valeur,''}
37[(#ENV*{valeur}|oui)
38        #SET{valeur,#ENV{valeur}}
39]
40
41[(#ENV{multiple}|oui)
42        [(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
43]
44
45#SET{date_actuelle,#ENV{date}}
46
47
48#SET{date_defaut,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut,#GET{date_actuelle}}}}}
49[(#ENV{horaire}|non)
50        #SET{date_defaut,#GET{date_defaut}|formater_date{horaire_zero,d/m/Y H:i:s}}
51        [(#GET{valeur}|oui)
52                #SET{valeur,#GET{valeur}|formater_date{horaire_zero,d/m/Y}}
53        ]
54]
55
56[(#ENV{multiple}|oui)
57        #SET{date_actuelle,#ARRAY{#GET{date_actuelle}}
58]
59
60#SET{date_limite_debut,#ENV{date_limite_debut,#GET{date_actuelle}}}
61#SET{date_limite_fin,#ENV{date_limite_fin,#GET{date_actuelle}|date_relative_brut{+1 year, d-m-Y}}}
62
63#SET{contexte,#ARRAY{
64                date_limite_debut,#GET{date_limite_debut},
65                date_limite_fin,#GET{date_limite_fin},
66                format,d-m-Y,
67        }
68}
69
70#SET{dates, #GET{contexte}|dates_disponibles{#ENV**}}
71
72[(#GET{valeur}|oui)
73        #SET{dates,#GET{dates}|push{#GET{valeur}}
74]
75
76#SET{dates,#GET{dates}|do_trie_dates}
77#SET{date_min,#DATE|affdate{d/m/Y}}
78<BOUCLE_min(DATA){source tableau, #GET{dates}}{0,1}>
79        #SET{date_min,(#VALEUR|replace{'-','/'})}
80</BOUCLE_min>
81
82[(#INCLURE{
83        fond=saisies/input,
84        autocomplete=off,
85        min=#GET{date_min},
86        class=[(#ENV{class}) ]date,
87        placeholder=dd/mm/yyyy,
88        valeur=#GET{valeur},
89        env})]
90
91
92<script type="text/javascript">
93        var datesDisponibles = [(#GET{dates}|json_encode)];
94        function disponible(date) {
95                var jour = date.getDate();
96                if (jour < 10) {
97                        jour = '0' + jour;
98                }
99                var mois = date.getMonth() + 1;
100                if (mois < 10) {
101                        mois = '0' + mois;
102                }
103
104                dmy = jour  + "-" + mois + "-" + date.getFullYear();
105
106                if      ($.inArray(dmy, datesDisponibles) !== -1) {
107                        return [true, "","Available"];
108
109                } else {
110
111                        return [false,"","unAvailable"];
112                }
113        }
114        $(document).ready(function() {
115                $('#champ_#ENV{nom}').datepicker({
116                        buttonText: '<:afficher_calendrier|texte_script:>',
117                        buttonImage: '#CHEMIN_IMAGE{calendrier-16.png}',
118                        buttonImageOnly: true,
119                        closeText: '<:bouton_fermer|texte_script:>',
120                        prevText: '<:precedent|texte_script:>',
121                        nextText: '<:suivant|texte_script:>',
122                        currentText: '<:date_aujourdhui|texte_script:>',
123                        closeText: '<:bouton_fermer|texte_script:>',
124                        monthNames: [
125                                '<:date_mois_1|texte_script:>','<:date_mois_2|texte_script:>','<:date_mois_3|texte_script:>','<:date_mois_4|texte_script:>','<:date_mois_5|texte_script:>','<:date_mois_6|texte_script:>',
126                                '<:date_mois_7|texte_script:>','<:date_mois_8|texte_script:>','<:date_mois_9|texte_script:>','<:date_mois_10|texte_script:>','<:date_mois_11|texte_script:>','<:date_mois_12|texte_script:>'],
127                        monthNamesShort: [
128                                '<:date_mois_1_abbr|texte_script:>','<:date_mois_2_abbr|texte_script:>','<:date_mois_3_abbr|texte_script:>','<:date_mois_4_abbr|texte_script:>','<:date_mois_5_abbr|texte_script:>','<:date_mois_6_abbr|texte_script:>',
129                                '<:date_mois_7_abbr|texte_script:>','<:date_mois_8_abbr|texte_script:>','<:date_mois_9_abbr|texte_script:>','<:date_mois_10_abbr|texte_script:>','<:date_mois_11_abbr|texte_script:>','<:date_mois_12_abbr|texte_script:>'],
130                        dayNames: [
131                                '<:date_jour_1|texte_script:>','<:date_jour_2|texte_script:>','<:date_jour_3|texte_script:>','<:date_jour_4|texte_script:>',
132                                '<:date_jour_5|texte_script:>','<:date_jour_6|texte_script:>','<:date_jour_7|texte_script:>'],
133                        dayNamesShort: [
134                                '<:date_jour_1_abbr|texte_script:>','<:date_jour_2_abbr|texte_script:>','<:date_jour_3_abbr|texte_script:>','<:date_jour_4_abbr|texte_script:>',
135                                '<:date_jour_5_abbr|texte_script:>','<:date_jour_6_abbr|texte_script:>','<:date_jour_7_abbr|texte_script:>'],
136                        dayNamesMin: [
137                                '<:date_jour_1_initiale|texte_script:>','<:date_jour_2_initiale|texte_script:>','<:date_jour_3_initiale|texte_script:>','<:date_jour_4_initiale|texte_script:>',
138                                '<:date_jour_5_initiale|texte_script:>','<:date_jour_6_initiale|texte_script:>','<:date_jour_7_initiale|texte_script:>'],
139                        dateFormat: 'dd/mm/yy',
140                        defaultDate: [(#ENV{valeur,#GET{date_min}}|affdate{d/m/Y})],
141                        minDate: [(#ENV{valeur,#GET{date_min}}|affdate{d/m/Y})],
142                        gotoCurrent: true,
143                        beforeShowDay: disponible,
144                        changeMonth: true,
145                        changeYear: true,
146                        showOtherMonths: true,
147                        selectOtherMonths: true,
148                        firstDay: 1,
149                        yearRange: "c-60:c+40"
150                        });
151        });
152</script>
153
Note: See TracBrowser for help on using the repository browser.