Changeset 74859 in spip-zone


Ignore:
Timestamp:
Aug 20, 2013, 6:26:33 PM (6 years ago)
Author:
cyril@…
Message:

on avance sur le formulaire de saisie d'une activité; l'affichage peut changer en fonction du profil de celui ou celle qui saisit les activités; les champs "projet" et "facture" sont cachés tant que l'organisation n'est pas précisée; le champ "type d'activité" n'apparaît (en js) que si l'activité a d'abord été décrite; reste à coder la partie "traiter";

Location:
_plugins_/dayfill/trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/dayfill/trunk/css/dayfill.css

    r74844 r74859  
     1/* mettre les input cote-a-cote */
    12.formulaire_ajouter_action fieldset.date li label { display:none; }
    23.formulaire_ajouter_action fieldset.date li { display:inline; margin: 0; padding: 0;}
    3 /* */
     4.formulaire_ajouter_action fieldset.date li.saisie_input input.text {width:3em}
     5
     6/* changer de style en fonction du profil*/
     7.formulaire_ajouter_action.operateur { background-color: #FFEF73 }
     8.formulaire_ajouter_action.developpeur { background-color: #FFE940 }
     9.formulaire_ajouter_action.developpeur li.editer_id_auteur {display:none}
     10.formulaire_ajouter_action.ticketteur { background-color: #BFAF30 }
     11.formulaire_ajouter_action.admin { background-color: #FFE200 }
     12
     13/* adapter les styles SPIP */
     14.formulaire_ajouter_action .boutons {background-color: transparent; border-top: 1px solid transparent}
     15
     16/* gerer les inputs imbriques */
     17.formulaire_ajouter_action .editer_type_activite,
     18.formulaire_ajouter_action .editer_id_projet {margin-left:1em}
     19
     20/* le formulaire sur une seule ligne */
     21.formulaire_ajouter_ligne_action label,
     22.formulaire_ajouter_ligne_action p.explication {display:none}
     23.formulaire_ajouter_ligne_action fieldset.ligne li {display:inline; margin:0; padding:0}
  • _plugins_/dayfill/trunk/formulaires/ajouter_action.html

    r74844 r74859  
    1 <div class='formulaire_spip formulaire_ajouter formulaire_#FORM'>
     1
     2<div class='formulaire_spip formulaire_ajouter formulaire_#FORM[ (#ENV{profil})]'>
     3
    24        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    35        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     
    57        [(#ENV{editable})
    68        <form method='post' action='#ENV{action}'><div>
     9
    710                #ACTION_FORMULAIRE{#ENV{action}}
    811
    9                 <input type='hidden' name='id_evaluation' value='#ENV{id_evaluation}' />
     12                <input type="hidden" name="profil" value="#ENV{profil}" />
    1013
    1114                <ul>
     
    1417                                class="chosen",
    1518                                id_projet=#ID_PROJET,
    16                                 label=<:projets_activite:label_id_auteur:>,
    17                                 explication=<:projets_activite:explication_id_auteur:> })]
     19                                label=<:dayfill:label_id_auteur:>,
     20                                explication=<:dayfill:explication_id_auteur:> })]
     21
     22                        [(#SAISIE{organisations_select, id_organisation, obligatoire=oui,
     23                                class="chosen",
     24                                label=<:dayfill:label_quel_client:>,
     25                                explication=<:dayfill:explication_quelle_organisation:>})]
     26
     27                        [(#ID_ORGANISATION|oui)
     28                                [(#SAISIE{projets_organisation,id_projet,obligatoire=oui,
     29                                        id_organisation=#ID_ORGANISATION,
     30                                        class="chosen",
     31                                        label=<:dayfill:label_quel_projet:>,
     32                                        explication=<:dayfill:explication_quel_projet:>})]]
    1833
    1934                        <li class='fieldset obligatoire'>
     
    3348                                                        heure_pas=5,
    3449                                                        label=<:dayfill:label_heure_a:>})]
     50                                                [(#SAISIE{input,
     51                                                        nb_heures_passees,
     52                                                        readonly=oui,
     53                                                        label=<:dayfill:label_temps_passe:>})]
     54                                                [(#SAISIE{input,
     55                                                        nb_heures_facturees,
     56                                                        label=<:dayfill:label_temps_facture:>})]
    3557                                        </ul>
    3658                                </fieldset>
    3759                        </li>
    38 
    39                         [(#SAISIE{input, nb_heures_passees, label=<:dayfill:label_temps_passe:>})]
    40                         [(#SAISIE{input, nb_heures_facturees, label=<:dayfill:label_temps_facture:>})]
    4160
    4261                        [(#SAISIE{textarea, detail_activite, obligatoire=oui,
     
    5271                                explication=<:dayfill:explication_type_activite:>})]
    5372
    54                         [(#SAISIE{organisations_select, id_organisation, obligatoire=oui,
    55                                 class="chosen",
    56                                 label=<:dayfill:label_quel_client:>,
    57                                 explication=<:dayfill:explication_quelle_organisation:>})]
     73                                [(#ID_ORGANISATION|oui)
    5874
    59                         [(#ID_ORGANISATION|oui)
    60                                 [(#SAISIE{projets_organisation,id_projet,obligatoire=oui,
    61                                         id_organisation=#ID_ORGANISATION,
    62                                         class="chosen",
    63                                         label=<:dayfill:label_quel_projet:>,
    64                                         explication=<:dayfill:explication_quel_projet:>})]]
     75                                        [(#SET{nom,[(#INFO_NOM{organisations,#ENV{id_organisation}})]})]
     76                                        [(#SET{chaine,[(#VAL{dayfill:explication_facture_activite}|_T{#ARRAY{organisation,#GET{nom}}})]})]
     77
     78                                        [(#SAISIE{factures_activite, id_facture,
     79                                                id_organisation=#ID_ORGANISATION,
     80                                                label=<:dayfill:label_facture_activite:>,
     81                                                explication=#GET{chaine}})]
     82                                ]
    6583
    6684                </ul>
     
    6886                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    6987                <!--extra-->
    70                 <p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
     88                <p class="boutons"><input type='submit' class='submit' name='enregistrer_activite' value='<:bouton_enregistrer:>' /></p>
     89
     90                <p class="boutons">
     91                        <label for="changer_profil"><:dayfill:label_changer_profil:></label>
     92                        <button class="btn btn-small[ (#ENV{profil}|=={'operateur'}|oui)btn-info]"
     93                            name="changer_profil" value='operateur'
     94                            title="<:dayfill:explication_profil_operateur:>"><:dayfill:label_profil_operateur:></button>
     95
     96                        <button class="btn btn-small[ (#ENV{profil}|=={'developpeur'}|oui)btn-info]"
     97                            name="changer_profil" value='developpeur'
     98                            title="<:dayfill:explication_profil_developpeur:>"><:dayfill:label_profil_developpeur:></button>
     99
     100                        <button class="btn btn-small[ (#ENV{profil}|=={'ticketteur'}|oui)btn-info]"
     101                            name="changer_profil" value='ticketteur'
     102                            title="<:dayfill:explication_profil_ticketteur:>"><:dayfill:label_profil_ticketteur:></button>
     103
     104                        <button class="btn btn-small[ (#ENV{profil}|=={'admin'}|oui)btn-info]"
     105                            name="changer_profil" value='admin'
     106                            title="<:dayfill:explication_profil_admin:>"><:dayfill:label_profil_admin:></button>
     107                </p>
     108
    71109        </div></form>
    72110        ]
     
    76114(function($){
    77115$(document).ready(function(){
     116
     117        // calcule la duree de l'activite en heures (base 10)
     118        calcul_duree = function() {
     119                // $dates      = $('.formulaire_ajouter_action fieldset.date');
     120                heure_debut = $dates.find('.editer_heure_debut input').val();
     121                heure_fin   = $dates.find('.editer_heure_fin input').val();
     122                heureDeb    = heure_debut.substr(0, 2);
     123                minDeb      = heure_debut.substr(3, 2);
     124                heureFin    = heure_fin.substr(0, 2);
     125                minFin      = heure_fin.substr(3, 2);
     126                duree       = (Math.round((((heureFin - heureDeb) * 60 + (minFin - minDeb)) / 60)*100))/100;
     127                return duree;
     128        }
     129
     130        // si l'heure de debut est apres l'heure de fin, on decale l'heure de fin de 10 minute
     131        redefinir_heure_fin = function() {
     132                heure_debut = $dates.find('.editer_heure_debut input').val();
     133                heureDeb    = heure_debut.substr(0, 2);
     134                minDeb      = heure_debut.substr(3, 2);
     135
     136                heureFin = parseInt(heureDeb);
     137                minFin = parseInt(minDeb) + 10;
     138
     139                if (minFin >= 60) {
     140                        minFin -= 60;
     141                        heureFin++;
     142                }
     143
     144                if (!minFin) { minFin = '00'; }
     145                if (minFin.toString().length < 2)   { minFin   = '0' + minFin.toString(); }
     146                if (heureFin.toString().length < 2) { heureFin = '0' + heureFin.toString(); }
     147
     148                $dates.find('.editer_heure_fin input').val( heureFin + ':' + minFin );
     149        }
     150
     151        // on calcule le temps passe (duree)
     152        $dates      = $('.formulaire_ajouter_action fieldset.date');
     153        $dates.find('.editer_nb_heures_passees input').val(calcul_duree());
     154
     155        // on calcule le formulaire pour faire apparaitre les projets une fois l'organisation saisie
    78156        $('.formulaire_ajouter_action #champ_id_organisation').change(function(){
    79157                $(this).submit();
    80158        });
     159
     160        // on cache le type d'activité mais on le montre si le textarea n'est pas vide
     161        if (!$('.formulaire_ajouter_action .editer_detail_activite textarea').val()) {
     162        $('.formulaire_ajouter_action .editer_type_activite').hide();
     163    }
     164
     165        // et on refait un nouveau test à chaque fois qu'on passe sur le textarea
     166        $('.formulaire_ajouter_action .editer_detail_activite textarea').blur(function(){
     167                if (!$('.formulaire_ajouter_action .editer_detail_activite textarea').val()) {
     168                        $('.formulaire_ajouter_action .editer_type_activite').hide();
     169        } else {
     170                        $('.formulaire_ajouter_action .editer_type_activite').show('fast');
     171                }
     172        });
     173
     174        // des que les heures de debut ou de fin changent on fait des verifications
     175        $('.formulaire_ajouter_action .saisie_heure').change(function(){
     176                if(calcul_duree() < 0) redefinir_heure_fin();
     177                // alert("l'heure a changé ! La nouvelle durée est " + calcul_duree() + "h");
     178                $dates.find('.editer_nb_heures_passees input').val(calcul_duree());
     179        });
     180
     181        /*
     182        console.log(
     183                calcul_duree()
     184        );
     185        */
     186
    81187});
    82188})(jQuery);
  • _plugins_/dayfill/trunk/formulaires/ajouter_action.php

    r74844 r74859  
    99        $id_auteur = session_get('id_auteur');
    1010
     11        $profil = _request('profil');
     12        if (!$profil) $profil = 'operateur';
     13
    1114        return array(
    12                 'id_auteur'       => $id_auteur,
    13                 'date_debut'      => date('Y-m-d H:i:s'),
    14                 'date_fin'        => date('Y-m-d H:i:s'),
    15                 'heure_debut'     => date('H:i', strtotime('now - 10 minute')),
    16                 'heure_fin'       => date('H:i'),
    17                 'type_activite'   => $type_activite,
    18                 'id_organisation' => $id_organisation,
    19                 'id_projet'       => $id_projet,
    20                 'detail_activite' => $detail_activite,
    21                 'editable'        => 'oui'
     15                'id_auteur'           => $id_auteur,
     16                'date_debut'          => date('Y-m-d H:i:s'),
     17                'date_fin'            => date('Y-m-d H:i:s'),
     18                'heure_debut'         => date('H:i', strtotime('now - 10 minute')),
     19                'heure_fin'           => date('H:i'),
     20                'nb_heures_passees'   => '',
     21                'nb_heures_facturees' => '',
     22                'type_activite'       => $type_activite,
     23                'detail_activite'     => $detail_activite,
     24                'id_organisation'     => $id_organisation,
     25                'id_projet'           => $id_projet,
     26                'profil'              => $profil,
     27                'editable'            => 'oui'
    2228        );
    2329}
     
    2531function formulaires_ajouter_action_verifier_dist()
    2632{
    27         return array(
    28                 'message_erreur' => 'Erreur temporaire !'
    29         );
     33
     34        if ($profil = _request('changer_profil')) {
     35                set_request('profil', $profil);
     36                return array('message_ok' => _T('dayfill:info_profil_change'));
     37        }
     38
     39        if (!_request('enregistrer_activite')) return array('message_ok' => 'Le formulaire a été actualisé offrant des champs supplémentaires à saisir.');
     40
     41        $erreurs = array();
     42        // verifier que les champs obligatoires sont bien la :
     43        foreach (array(
     44                         'id_auteur',
     45                         'nb_heures_passees',
     46                         'nb_heures_facturees',
     47                         'date_debut',
     48                         'date_fin',
     49                         'detail_activite',
     50                         'id_organisation',
     51                         'id_projet'
     52                 ) as $obligatoire) {
     53                if (!_request($obligatoire)) {
     54                        $erreurs[$obligatoire] = _T('info_obligatoire');
     55                }
     56        }
     57
     58        if (count($erreurs))
     59                $erreurs['message_erreur'] = _T('dayfill:erreur_saisie_invalide');
     60
     61        return $erreurs;
    3062}
     63
    3164
    3265function formulaires_ajouter_action_traiter_dist()
  • _plugins_/dayfill/trunk/lang/dayfill_fr.php

    r74844 r74859  
    2020
    2121        // E
    22         'explication_id_auteur'             => "Sélectionnez des collaborateurs potentiels parmi tous les auteurs du site.",
    23         'explication_duree'                 => "Indiquez la date de l'activité, en précisant les horaires de début et de fin",
    24         'explication_groupe_mots_activites' => "Sélectionnez le groupe de mots-clé utilisé pour définir les activités",
    25         'explication_type_activite'         => "Sélectionner le type qui correspond le mieux à cette activité",
     22        'erreur_saisie_invalide'            => "Votre saisie contient des erreurs !",
     23        // 'explication_id_auteur'             => "Sélectionnez des collaborateurs potentiels parmi tous les auteurs du site.",
    2624        'explication_activite_par_defaut'   => "Précisez le type d'activité sélectionné par défaut",
    2725        'explication_detail_activite'       => "Décrivez l'activité effectuée",
     26        'explication_duree'                 => "Indiquez la date de l'activité, en précisant les horaires de début et de fin, puis ajustez la durée calculée",
     27        'explication_facture_activite'      => "Sélectionnez parmi les factures valides de @organisation@, celle sur laquelle imputer cette activité",
     28        'explication_groupe_mots_activites' => "Sélectionnez le groupe de mots-clé utilisé pour définir les activités",
     29        'explication_id_auteur'             => "Choisissez l'auteur parmi les collaborateurs potentiels.",
     30        'explication_profil_admin'          => "Saisie d'activités et attribution des factures",
     31        'explication_profil_developpeur'    => "Saisie d'activités liées à un faible nombre de projet et peu souvent dans la journée",
     32        'explication_profil_operateur'      => "Saisie en continu à partir des fiches papier",
     33        'explication_profil_ticketteur'     => "Saisie d'activités liées à un grand nombre de projets et clients, plusieurs fois par jour",
     34        'explication_quel_projet'           => "Sélectionnez un des projets actifs du client sélectionné",
    2835        'explication_quelle_organisation'   => "Sélectionez le client pour qui l'activité a été effectuée",
    29         'explication_quel_projet'           => "Sélectionnez un des projets actifs du client sélectionné",
     36        'explication_type_activite'         => "Sélectionner le type qui correspond le mieux à cette activité",
     37
     38        // I
     39        'info_profil_change'                => "Profil d'utilisation changé !",
    3040
    3141        // L
     
    3343        'label_auteurs_potentiels'          => "Collaborateurs potentiels",
    3444        'label_auteurs_projet'              => "Déjà attribués au projet",
     45        'label_changer_profil'              => "Changer la disposition du formulaire selon votre profil",
    3546        'label_date_action'                 => "Date",
     47        'label_decrire_action'              => "Décrivez le type d'action effectuée",
    3648        'label_detail_activite'             => "Détail de l'activité",
    37         'label_decrire_action'              => "Décrivez le type d'action effectuée",
    3849        'label_duree'                       => "Date et durée de l'activité",
     50        'label_facture_activite'            => "Facture à imputer",
    3951        'label_groupe_mots_activites'       => "Groupe de mots-clé pour les activités",
     52        'label_heure_a'                     => " à : ",
     53        'label_heure_de'                    => "De : ",
    4054        'label_heure_debut'                 => "Début",
    4155        'label_heure_fin'                   => "Fin",
    42         'label_heure_de'                    => "De : ",
    43         'label_heure_a'                     => " à : ",
     56        'label_id_auteur'                   => "Auteur de l'activité",
    4457        'label_id_projet'                   => "ID",
     58        'label_profil_admin'                => "Administrateur",
     59        'label_profil_developpeur'          => "Développeur",
     60        'label_profil_operateur'            => "Opérateur",
     61        'label_profil_ticketteur'           => "Ticketteur",
    4562        'label_quel_client'                 => "Pour quel client ?",
    46         'label_quelle_organisation'         => "Pour quel client ?",
    4763        'label_quel_projet'                 => "Dans le cadre de quel projet ?",
    48         'label_temps_passe'                 => "Combien de temps passé ?",
    49         'label_temps_facture'               => "Combien de temps facturé ?",
    5064        'label_quel_temps_passe'            => "Combien de temps &agrave; facturer ?",
    5165        'label_quel_type_action'            => "Quel type d'action a été effectué ?",
     66        'label_quelle_organisation'         => "Pour quel client ?",
     67        'label_temps_facture'               => "Combien de temps facturé ?",
     68        'label_temps_passe'                 => "Combien de temps passé ?",
    5269        'label_type_action'                 => "Type d'action",
    5370        'label_type_activite'               => "Type d'activité",
  • _plugins_/dayfill/trunk/lang/projets_activite_fr.php

    r71847 r74859  
    88
    99        // A
    10         'ajouter_lien_projets_activite' => 'Ajouter cette activité',
     10        'ajouter_lien_projets_activite'         => 'Ajouter cette activité',
    1111
    1212        // E
    13         'explication_date_debut' => 'Indiquez le moment où l\'activité a démarré',
    14         'explication_date_fin' => 'Indiquez le moment où l\'activité a pris fin',
    15         'explication_descriptif' => 'Décrivez l\'activité',
    16         'explication_id_auteur' => 'Indiquez l\'auteur de l\'activité',
    17         'explication_nb_heures_decomptees' => 'Indiquez la durée de l\'activité qui doit réellement être prise en compte, en heures.',
    18         'explication_nb_heures_passees' => 'Indiquez la durée brute de l\'activité, en heures.',
     13        'explication_date_debut'                => 'Indiquez le moment où l\'activité a démarré',
     14        'explication_date_fin'                  => 'Indiquez le moment où l\'activité a pris fin',
     15        'explication_descriptif'                => 'Décrivez l\'activité',
     16        'explication_id_auteur'                 => 'Indiquez l\'auteur de l\'activité',
     17        'explication_nb_heures_decomptees'      => 'Indiquez la durée de l\'activité qui doit réellement être prise en compte, en heures.',
     18        'explication_nb_heures_passees'         => 'Indiquez la durée brute de l\'activité, en heures.',
    1919
    2020        // I
    21         'icone_creer_projets_activite' => 'Créer une activité',
    22         'icone_modifier_projets_activite' => 'Modifier cette activité',
    23         'info_1_projets_activite' => 'Une activité',
    24         'info_aucun_projets_activite' => 'Aucune activité',
    25         'info_nb_projets_activites' => '@nb@ activités',
    26         'info_projets_activites_auteur' => 'Les activités de cet auteur',
     21        'icone_creer_projets_activite'          => 'Créer une activité',
     22        'icone_modifier_projets_activite'       => 'Modifier cette activité',
     23        'info_1_projets_activite'               => 'Une activité',
     24        'info_aucun_projets_activite'           => 'Aucune activité',
     25        'info_nb_projets_activites'             => '@nb@ activités',
     26        'info_projets_activites_auteur'         => 'Les activités de cet auteur',
    2727
    2828        // L
    29         'label_auteur_activite' => "Auteur",
    30         'label_date_activite' => "Date",
    31         'label_date_debut' => 'Heure debut',
    32         'label_date_fin' => 'Heure fin',
    33         'label_date_debut_fin' => 'Quand',
    34         'label_descriptif' => 'Descriptif',
    35         'label_duree_activite' => "Durée",
    36         'label_id_auteur' => 'Auteur',
    37         'label_id_projet' => 'Projet',
    38         'label_nb_heures_decomptees' => "Nombre d'heures decomptées",
    39         'label_nb_heures_passees' => "Nombre d'heures passées",
     29        'label_auteur_activite'                 => "Auteur",
     30        'label_date_activite'                   => "Date",
     31        'label_date_debut'                      => 'Heure debut',
     32        'label_date_fin'                        => 'Heure fin',
     33        'label_date_debut_fin'                  => 'Quand',
     34        'label_descriptif'                      => 'Descriptif',
     35        'label_duree_activite'                  => "Durée",
     36        'label_id_auteur'                       => 'Auteur',
     37        'label_id_projet'                       => 'Projet',
     38        'label_nb_heures_decomptees'            => "Nombre d'heures decomptées",
     39        'label_nb_heures_passees'               => "Nombre d'heures passées",
    4040
    4141        // R
    42         'retirer_lien_projets_activite' => 'Retirer cette activité',
    43         'retirer_tous_liens_projets_activites' => 'Retirer toutes les activités',
     42        'retirer_lien_projets_activite'         => 'Retirer cette activité',
     43        'retirer_tous_liens_projets_activites'  => 'Retirer toutes les activités',
    4444
    4545        // T
    46         'texte_ajouter_projets_activite' => 'Ajouter une activité',
     46        'texte_ajouter_projets_activite'        => 'Ajouter une activité',
    4747        'texte_changer_statut_projets_activite' => 'Cette activité est :',
    4848        'texte_creer_associer_projets_activite' => 'Créer et associer une activité',
    49         'titre_langue_projets_activite' => 'Langue de cette activité',
    50         'titre_logo_projets_activite' => 'Logo de cette activité',
    51         'titre_projets_activite' => 'Activité',
    52         'titre_projets_activites' => 'Activités',
    53         'titre_projets_activites_rubrique' => 'Activités de la rubrique',
    54         'titre_projets_activite_projet' => "Activités liées au projet",
     49        'titre_langue_projets_activite'         => 'Langue de cette activité',
     50        'titre_logo_projets_activite'           => 'Logo de cette activité',
     51        'titre_projets_activite'                => 'Activité',
     52        'titre_projets_activites'               => 'Activités',
     53        'titre_projets_activites_rubrique'      => 'Activités de la rubrique',
     54        'titre_projets_activite_projet'         => "Activités liées au projet",
    5555);
    5656
Note: See TracChangeset for help on using the changeset viewer.