public function afficherFormulaireModification($id = 0, $type = '', $arrayListeIdImages = array())
 {
     $html = "";
     $utilisateur = new archiUtilisateur();
     $authentification = new archiAuthentification();
     //echo "afficherFormulaireModification : id=".$id." type=".$type;
     $arrayModifUrlParams = array();
     echo "<script>\n\n            function retirerPrisDepuis(idAdresseValue, identifiantUniqueRetour) {\n                document.getElementById('listePrisDepuisDiv'+identifiantUniqueRetour).innerHTML='';\n\n                if (idAdresseValue!=0)\n                {\n                    selectField = document.getElementById('prisDepuis'+identifiantUniqueRetour);\n                    divField = document.getElementById('listePrisDepuisDiv'+identifiantUniqueRetour);\n                    for(i=0 ; i<selectField.options.length; i++ ) {\n                        if (selectField.options[i]!=null) {\n                            if (selectField.options[i].value==idAdresseValue)\n                            {\n                                indiceARetirer = i;\n                            }\n                            else\n                            {\n                                divField.innerHTML+=selectField.options[i].innerHTML+'<a href=\\'#\\' style=\\'cursor:pointer;\\' onclick=\"retirerPrisDepuis(\\''+selectField.options[i].value+'\\',  '+identifiantUniqueRetour+')\">(-)</a><br>';\n                            }\n                        }\n                    }\n\n                    selectField.options[indiceARetirer]=null;\n                }\n\n            }\n\n\n            function retirerVueSur(idAdresseValue, identifiantUniqueRetour) {\n                document.getElementById('listeVueSurDiv'+identifiantUniqueRetour).innerHTML='';\n\n                if (idAdresseValue!=0)\n                {\n                    selectField = document.getElementById('vueSur'+identifiantUniqueRetour);\n                    divField = document.getElementById('listeVueSurDiv'+identifiantUniqueRetour);\n                    for(i=0 ; i<selectField.options.length; i++ ) {\n                        if (selectField.options[i]!=null) {\n                            if (selectField.options[i].value==idAdresseValue)\n                            {\n                                indiceARetirer = i;\n                            }\n                            else\n                            {\n                                divField.innerHTML+=selectField.options[i].innerHTML+'<a href=\\'#\\' style=\\'cursor:pointer;\\' onclick=\\\"retirerVueSur(\\''+selectField.options[i].value+'\\',  '+identifiantUniqueRetour+')\\\">(-)</a><br>';\n                            }\n                        }\n                    }\n\n                    selectField.options[indiceARetirer]=null;\n                }\n\n            }\n            </script>\n        ";
     $t = new Template('modules/archi/templates/');
     $t->set_filenames(array('imageFormModif' => 'imageFormulaire.tpl'));
     /******
      ** Source - récupration
      **/
     $sqlSource = 'SELECT idSource,  nom,  idTypeSource FROM source';
     $tabSource = array();
     if ($result = $this->connexionBdd->requete($sqlSource)) {
         while ($rep = mysql_fetch_object($result)) {
             $tabSource[$rep->idSource] = $rep->nom;
         }
     }
     switch ($type) {
         case 'adresse':
             break;
         case 'evenement':
             // recherche des images liées a l'evenement
             $arrayListeIdImages = array();
             if (isset($this->variablesGet['archiIdEvenement']) && $this->variablesGet['archiIdEvenement'] != '0' && $this->variablesGet['archiIdEvenement'] != '') {
                 $evenement = new archiEvenement();
                 $adresse = new archiAdresse();
                 // affichages des recapitulatifs en haut de la page ( adresse + titres des evenements)
                 $idEvenementGroupeAdresse = $evenement->getParent($this->variablesGet['archiIdEvenement']);
                 $idEvenementCourant = $this->variablesGet['archiIdEvenement'];
                 if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                     $person = new archiPersonne();
                     $infos = $person->getInfosPersonne($idPerson);
                     $t->assign_vars(array('recapitulatifAdresses' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
                 } else {
                     $t->assign_vars(array("recapitulatifAdresses" => $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
                 }
                 $t->assign_vars(array("recapitulatifHistoriqueEvenements" => $evenement->afficherRecapitulatifAncres($idEvenementGroupeAdresse, $idEvenementCourant)));
                 $t->assign_vars(array("liensModifEvenements" => $evenement->afficherLiensModificationEvenement($idEvenementCourant)));
                 $reqEvenement = "SELECT distinct idImage from _evenementImage WHERE idEvenement ='" . $this->variablesGet['archiIdEvenement'] . "' ORDER BY position";
                 $resEvenement = $this->connexionBdd->requete($reqEvenement);
                 while ($fetchEvenement = mysql_fetch_assoc($resEvenement)) {
                     $arrayListeIdImages[] = $fetchEvenement['idImage'];
                 }
             }
             break;
         default:
             if (count($arrayListeIdImages) == 1) {
                 $evenement = new archiEvenement();
                 $adresse = new archiAdresse();
                 if (isset($this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse']) && $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse'] != '') {
                     $idEvenementGroupeAdresse = $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse'];
                     $arrayModifUrlParams = array('archiIdEvenementGroupeAdresseAffichageAdresse' => $this->variablesGet['archiIdEvenementGroupeAdresseAffichageAdresse']);
                 } else {
                     $idEvenementImageUnique = $this->getArrayIdEvenementFromIdImage($arrayListeIdImages[0]);
                     $idEvenementGroupeAdresse = $evenement->getParent($idEvenementImageUnique);
                 }
                 if ($idPerson = archiPersonne::isPerson($idEvenementGroupeAdresse)) {
                     $person = new archiPersonne();
                     $infos = $person->getInfosPersonne($idPerson);
                     $t->assign_vars(array('recapitulatifAdresses' => "<h2 class='h1'><a href='" . $this->creerUrl('', '', array('archiAffichage' => 'evenementListe', 'selection' => "personne", 'id' => $idPerson)) . "'>" . $infos["prenom"] . " " . $infos["nom"] . "</a></h2>"));
                 } else {
                     $t->assign_vars(array("recapitulatifAdresses" => $adresse->afficherRecapitulatifAdresses($idEvenementGroupeAdresse)));
                 }
             }
             break;
     }
     //echo "afficherFormulaireModification $type";
     // cas ou le ne precise pas de idCourant ni de type de liaison ( la photo n'est ni liee a un evenement ni une adresse)
     // on modifie une liste d'images
     // *****************************************************************************************************************************************************************
     if (count($arrayListeIdImages) > 0) {
         $t->assign_block_vars('isImages', array());
         $listeIdImagesAModifier = implode("',  '", $arrayListeIdImages);
         $requeteImages = "\n                SELECT\n                    hi1.idHistoriqueImage as idHistoriqueImage, hi1.idImage as idImage, hi1.nom as nom,\n                    hi1.dateUpload as dateUpload, hi1.dateCliche as dateCliche, hi1.description as description, hi1.tags as tags,\n                    hi1.idUtilisateur as idUtilisateur, u.nom as nomUtilisateur,  u.prenom as prenomUtilisateur,\n                    hi1.idSource as idSource,  hi1.isDateClicheEnviron as isDateClicheEnviron,\n                    hi1.numeroArchive as numeroArchive,\n                    if (_ai.idImage IS NULL,  0, 1) as isAdresseImage,\n                    if (_ei.idImage IS NULL,  0, 1) as isEvenementImage,\n\n                    _ai.seSitue as seSitue,\n                    _ai.prisDepuis as prisDepuis,\n                    _ai.etage as etage,\n                    _ai.hauteur as hauteur,\n                    _ai.idAdresse as idAdresse,\n                    _ei.idEvenement as idEvenement\n\n                FROM historiqueImage hi2, historiqueImage hi1\n                LEFT JOIN _evenementImage _ei ON _ei.idImage = hi1.idImage\n                LEFT JOIN _adresseImage _ai ON _ai.idImage = hi1.idImage\n                LEFT JOIN utilisateur u ON u.idUtilisateur = hi1.idUtilisateur\n\n                WHERE hi2.idImage = hi1.idImage\n                AND hi1.idImage IN ('" . $listeIdImagesAModifier . "')\n                GROUP BY hi1.idImage, hi1.idHistoriqueImage\n                HAVING hi1.idHistoriqueImage = max(hi2.idHistoriqueImage)\n\n            ";
         $resImage = $this->connexionBdd->requete($requeteImages);
         $i = 0;
         $nomUtilisateur = "";
         $prenomUtilisateur = "";
         $listeId = array();
         $adresseObject = new archiAdresse();
         // ********************************************************************************************************************************************
         // boucle sur les images
         // ********************************************************************************************************************************************
         while ($fetch = mysql_fetch_array($resImage)) {
             if ($i == 0) {
                 $nomUtilisateur = $fetch["nomUtilisateur"];
                 $prenomUtilisateur = $fetch["prenomUtilisateur"];
             }
             $dateCliche = "";
             if ($this->date->toFrench($fetch['dateCliche']) == '00/00/0000') {
                 $dateCliche = "";
             } else {
                 $dateCliche = $this->date->toFrench($fetch['dateCliche']);
             }
             // ***********************************************************
             // GESTION AFFICHAGE ADRESSES CHAMPS MULTIPLES
             // gestion de l'affichage des adresses de chaque photo
             //$arrayGereAffichage = $this->gereAffichageAdresses($fetch['idHistoriqueImage'],  $fetch['idImage'],  'modif');
             // ***********************************************************
             //$nbAdressesAffichees = $arrayGereAffichage['nbAdressesAffichees'];
             $adresseObject = new archiAdresse();
             $stringObject = new stringObject();
             // adresses prisDepuis
             $reqPrisDepuis = "SELECT idImage, idAdresse, idEvenementGroupeAdresse FROM _adresseImage WHERE idImage='" . $fetch['idImage'] . "' AND prisDepuis='1'";
             $resPrisDepuis = $this->connexionBdd->requete($reqPrisDepuis);
             $selectPrisDepuisHTML = "";
             $divPrisDepuisHTML = "";
             while ($fetchPrisDepuis = mysql_fetch_assoc($resPrisDepuis)) {
                 if ($fetchPrisDepuis['idEvenementGroupeAdresse'] != '0') {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchPrisDepuis['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true));
                 } else {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchPrisDepuis['idAdresse'], 'idAdresse');
                 }
                 $selectPrisDepuisHTML .= "<option value='" . $fetchPrisDepuis['idAdresse'] . "_" . $fetchPrisDepuis['idEvenementGroupeAdresse'] . "' SELECTED>" . $nomAdresse . "</option>";
                 $divPrisDepuisHTML .= $nomAdresse . "<a onclick=\"retirerPrisDepuis('" . $fetchPrisDepuis['idAdresse'] . "_" . $fetchPrisDepuis['idEvenementGroupeAdresse'] . "',  " . $fetch['idHistoriqueImage'] . ");\" style='cursor:pointer;'>(-)</a><br>";
             }
             // adresses vueSur
             $reqVueSur = "SELECT idImage, idAdresse, idEvenementGroupeAdresse FROM _adresseImage WHERE idImage='" . $fetch['idImage'] . "' AND vueSur='1'";
             $resVueSur = $this->connexionBdd->requete($reqVueSur);
             $selectVueSurHTML = "";
             $divVueSurHTML = "";
             while ($fetchVueSur = mysql_fetch_assoc($resVueSur)) {
                 if ($fetchVueSur['idEvenementGroupeAdresse'] != '0') {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchVueSur['idEvenementGroupeAdresse'], 'idEvenementGroupeAdresse', array('ifTitreAfficheTitreSeulement' => true));
                 } else {
                     $nomAdresse = $adresseObject->getIntituleAdresseFrom($fetchVueSur['idAdresse'], 'idAdresse');
                 }
                 $selectVueSurHTML .= "<option value='" . $fetchVueSur['idAdresse'] . "_" . $fetchVueSur['idEvenementGroupeAdresse'] . "' SELECTED>" . $nomAdresse . "</option>";
                 $divVueSurHTML .= $nomAdresse . "<a onclick=\"retirerVueSur('" . $fetchVueSur['idAdresse'] . "_" . $fetchVueSur['idEvenementGroupeAdresse'] . "',  " . $fetch['idHistoriqueImage'] . ");\" style='cursor:pointer;'>(-)</a><br>";
             }
             // ***********************************************************
             // RECUPERATION DES SOURCES
             // on recupere le nom de la source
             // ***********************************************************
             $reqSource = "\n                            select s.idSource as idSource, s.nom as nom,  ts.nom as nomTS ,  if (ts.nom<>'', concat('(', ts.nom,  ')'),  '')as nomTypeSource\n                            from source s\n                            left join typeSource ts ON ts.idTypeSource = s.idTypeSource\n                            where idSource = '" . $fetch['idSource'] . "'";
             $resSource = $this->connexionBdd->requete($reqSource);
             $fetchSource = mysql_fetch_assoc($resSource);
             // ***********************************************************
             // ***********************************************************
             // recuperation des données POST,  avec par defaut les valeurs de la base de données
             // ***********************************************************
             $checkIsDateClicheEnviron = 0;
             if ($fetch['isDateClicheEnviron'] == 1) {
                 $checkIsDateClicheEnviron = 1;
             }
             $tabForm = array('nom_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['nom']), 'description_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['description']), 'dateUpload_' . $fetch['idHistoriqueImage'] => array('type' => 'date', 'required' => false, 'value' => '', 'default' => $this->date->toFrench($fetch['dateUpload'])), 'dateCliche_' . $fetch['idHistoriqueImage'] => array('type' => 'date', 'required' => false, 'value' => '', 'default' => $this->date->toFrench($fetch['dateCliche'])), 'isDateClicheEnviron_' . $fetch['idHistoriqueImage'] => array('type' => 'checkbox', 'required' => false, 'value' => '', 'default' => $checkIsDateClicheEnviron), 'source' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['idSource']), 'source' . $fetch['idHistoriqueImage'] . 'txt' => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetchSource['nom'] . ' ' . $fetchSource['nomTypeSource'] . ''), 'numeroArchive_' . $fetch['idHistoriqueImage'] => array('type' => 'text', 'required' => false, 'value' => '', 'default' => $fetch['numeroArchive']));
             $formulaire = new formGenerator();
             // appel de la fonction recuperant les valeurs du formulaire
             $errors = $formulaire->getArrayFromPost($tabForm);
             // ***********************************************************
             // ***********************************************************
             // assignation des champs de l'adresse
             // ***********************************************************
             $popupPrisDepuis = new calqueObject(array('idPopup' => 'popupPrisDepuis' . $fetch['idHistoriqueImage']));
             $popupVueSur = new calqueObject(array('idPopup' => 'popupVueSur' . $fetch['idHistoriqueImage']));
             $checkIsDateClicheEnviron = '';
             if ($tabForm['isDateClicheEnviron_' . $fetch['idHistoriqueImage']]['value'] == '1') {
                 $checkIsDateClicheEnviron = 'checked';
             }
             $auteur = $this->getAuteur($fetch['idImage']);
             if (is_array($auteur)) {
                 $nomUpload = $auteur["nom"];
                 $nomAuteur = "";
             } else {
                 $nomAuteur = $auteur;
                 $nomUpload = "";
             }
             $licence = $this->getLicence($fetch['idImage']);
             $idUtilisateur = $authentification->getIdUtilisateur();
             $utilisateur = new ArchiUtilisateur();
             if ($licence["id"] == 3 && !$utilisateur->isAuthorized('admin_licences', $idUtilisateur) && !$utilisateur->canCopyright(array('idUtilisateur' => $idUtilisateur))) {
                 $selectLicenceHTML = "<span title='" . htmlspecialchars(_("Seul l'auteur peut changer la licence de cette image."), ENT_QUOTES) . "'>" . $licence["name"] . "</span>";
                 $enableAuthor = "disabled='disabled'";
             } else {
                 $enableAuthor = "";
                 $reqLicence = $this->connexionBdd->requete("SELECT * FROM licences");
                 $selectLicenceHTML = "";
                 while ($fetchLicence = mysql_fetch_assoc($reqLicence)) {
                     if ($fetchLicence["id"] != 3 || $utilisateur->isAuthorized('admin_licences', $idUtilisateur) || $utilisateur->canCopyright(array('idUtilisateur' => $idUtilisateur))) {
                         $selectLicenceHTML .= "<input type='radio' value='" . $fetchLicence["id"] . "' id='licence_" . $fetchLicence["id"] . "' name='licence_" . $fetch['idHistoriqueImage'] . "'";
                         if ($fetchLicence["id"] == $licence["id"]) {
                             $selectLicenceHTML .= " checked='checked' ";
                         }
                         $selectLicenceHTML .= "/>";
                         $selectLicenceHTML .= "<label title='" . htmlspecialchars($fetchLicence["description"], ENT_QUOTES) . "' for='licence_" . $fetchLicence["id"] . "'>";
                         if (!empty($fetchLicence["link"])) {
                             $selectLicenceHTML .= "<a href='" . $fetchLicence["link"] . "'>";
                         }
                         $selectLicenceHTML .= $fetchLicence["name"];
                         if (!empty($fetchLicence["link"])) {
                             $selectLicenceHTML .= "</a>";
                         }
                         $selectLicenceHTML .= "</label>";
                     }
                 }
             }
             $t->assign_block_vars('listePhotos', array('onClickPopupPrisDepuis' => "document.getElementById('" . $popupPrisDepuis->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupPrisDepuis->getJSOpenPopup($fetch['idHistoriqueImage']) . "document.getElementById('" . $popupPrisDepuis->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdressePrisDepuis')) . "';", 'popupPrisDepuis' => $popupPrisDepuis->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdressePrisDepuis')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Pris Depuis')), 'selectPrisDepuis' => $selectPrisDepuisHTML, 'listePrisDepuisDiv' => $divPrisDepuisHTML, 'onClickPopupVueSur' => "document.getElementById('" . $popupVueSur->getJSDivId() . "').style.top=(getScrollHeight()+70)+'px';" . $popupVueSur->getJSOpenPopup($fetch['idHistoriqueImage']) . "document.getElementById('" . $popupVueSur->getJSIFrameId() . "').src='" . $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseVueSur')) . "';", 'popupVueSur' => $popupVueSur->getDiv(array('lienSrcIFrame' => $this->creerUrl('', 'recherche', array('noHeaderNoFooter' => 1, 'modeAffichage' => 'popupRechercheAdresseVueSur')), 'width' => 750, 'height' => 500, 'left' => 10, 'top' => 70, 'titre' => 'archi-strasbourg.org : Vue Sur')), 'selectVueSur' => $selectVueSurHTML, 'listeVueSurDiv' => $divVueSurHTML, 'urlImage' => $this->getUrlImage("grand") . '/' . $fetch['dateUpload'] . '/' . $fetch['idHistoriqueImage'] . '.jpg', 'nom' => $tabForm['nom_' . $fetch['idHistoriqueImage']]['value'], 'description' => stripslashes($tabForm['description_' . $fetch['idHistoriqueImage']]['value']), 'idHistoriqueImage' => $fetch['idHistoriqueImage'], 'dateUpload' => $tabForm['dateUpload_' . $fetch['idHistoriqueImage']]['value'], 'dateCliche' => $tabForm['dateCliche_' . $fetch['idHistoriqueImage']]['value'], 'numeroArchive' => $tabForm['numeroArchive_' . $fetch['idHistoriqueImage']]['value'], 'checkIsDateClicheEnviron' => $checkIsDateClicheEnviron, 'idImage' => $fetch['idImage'], 'adresseUrl' => '#', 'adresseOnClick' => "document.getElementById('calqueAdresse').style.display='block';document.getElementById('paramChampsAppelantAdresse').value='listeAdresses_" . $fetch['idHistoriqueImage'] . "';", 'evenementUrl' => '#', 'evenementOnClick' => "document.getElementById('calqueEvenement').style.display='block';document.getElementById('paramChampsAppelantEvenement').value='listeEvenements_" . $fetch['idHistoriqueImage'] . "';", 'onClickBoutonAjouterAdresse' => "document.getElementById('modifImage').action='" . $this->creerUrl('', 'modifierImageMultiple') . "'", 'onClickBoutonEnleverAdresse' => "document.getElementById('modifImage').action='" . $this->creerUrl('', 'modifierImageMultiple') . "'", 'onClickBoutonChoixVille' => "document.getElementById('calqueVille').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueVille').style.display='block';document.getElementById('paramChampAppelantVille').value='ville" . $fetch['idHistoriqueImage'] . "';document.getElementById('paramChampVilleIdentifiantUnique').value='" . $fetch['idHistoriqueImage'] . "'", 'onChangeListeQuartier' => "appelAjax('" . $this->creerUrl('', 'afficheSelectSousQuartier', array('noHeaderNoFooter' => 1, 'identifiantUnique' => $fetch['idHistoriqueImage'])) . "&archiIdQuartier='+document.getElementById('quartiers" . $fetch['idHistoriqueImage'] . "').value,  'listeSousQuartier" . $fetch['idHistoriqueImage'] . "')", 'onClickBoutonChoixSource' => "document.getElementById('calqueSource').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueSource').style.display='block';document.getElementById('paramChampsAppelantSource').value='source_" . $fetch['idHistoriqueImage'] . "';", 'onClickDateCliche' => "document.getElementById('paramChampAppelantDate').value='dateCliche_" . $fetch['idHistoriqueImage'] . "';document.getElementById('calqueDate').style.top=(getScrollHeight()+150)+'px';document.getElementById('calqueDate').style.display='block';", 'idSource' => $tabForm['source' . $fetch['idHistoriqueImage']]['value'], 'nomSource' => $tabForm['source' . $fetch['idHistoriqueImage'] . 'txt']['value'], "nomAuteur" => $nomAuteur, "nomUpload" => $nomUpload, "tags" => $fetch['tags'], "selectLicence" => $selectLicenceHTML, "enableAuthor" => $enableAuthor));
             if ($utilisateur->canChangeNumeroArchiveField(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
                 $t->assign_block_vars('listePhotos.isDisplayNumeroArchive', array());
             } else {
                 $t->assign_block_vars('listePhotos.isNoDisplayNumeroArchive', array());
             }
             if ($utilisateur->canModifyTags(array('idUtilisateur' => $authentification->getIdUtilisateur()))) {
                 $t->assign_block_vars('listePhotos.canModifyTags', array());
             } else {
                 $t->assign_block_vars('listePhotos.canNotModifyTags', array());
             }
             if ($utilisateur->isAuthorized('affiche_selection_source', $authentification->getIdUtilisateur())) {
                 $t->assign_block_vars('listePhotos.isDisplaySource', array());
             } else {
                 $t->assign_block_vars('listePhotos.isNoDisplaySource', array());
             }
             // ***************************************************
             // IDENTIFIANT d'HISTORIQUES IMAGES
             // recuperation de la liste des identifiants d'images
             $listeId[] = $fetch['idHistoriqueImage'];
             // ***************************************************
             // ***************************************************
             // SOURCES
             // création de la liste des sources
             // ***************************************************
             if (!empty($tabSource)) {
                 foreach ($tabSource as $id => $nom) {
                     if (isset($tabTravail['source']['value']) && $tabTravail['source']['value'] == $id) {
                         $selected = 'selected="selected"';
                     } else {
                         $selected = '';
                     }
                     $t->assign_block_vars('listePhotos.source', array('val' => $id, 'nom' => $nom, 'selected' => $selected));
                 }
             }
             // recuperation des evenements lies à l'image
             $resEvenementsLies = $this->getFetchEvenementsLies($fetch['idImage']);
             while ($fetchEvenementsLies = mysql_fetch_assoc($resEvenementsLies)) {
                 $t->assign_block_vars('listePhotos.evenements', array('value' => $fetchEvenementsLies['idEvenement'], 'nom' => $fetchEvenementsLies['titre']));
             }
             $i++;
         }
         // ***************************************************
         $t->assign_vars(array("proprietaireImages" => "Images concernant l'adresse", 'actionFormImage' => $this->creerUrl('modifImage', '', $arrayModifUrlParams), 'listeId' => implode(',  ', $listeId)));
         // ***************************************************
         // ***************************************************
         // pour les calques :
         // ***************************************************
         $recherche = new archiRecherche();
         $adresse = new archiAdresse();
         $t->assign_vars(array('popupChoixAdresse' => $recherche->getPopupChoixAdresse('resultatRechercheAdresseCalqueImageChampMultiple'), 'popupChoixEvenement' => $recherche->getPopupChoixEvenement('resultatRechercheEvenementCalqueImageChampMultiple'), 'popupChoixSource' => $recherche->getPopupChoixSource('modifImage'), 'popupCalendrier' => $this->getPopupCalendrier(), 'popupAttente' => $this->getPopupAttente()));
     } else {
         $t->assign_vars(array('msgPasdImage' => "Il n'y a pas d'image."));
     }
     // *********************************************************************************
     // recuperation des aides contextuelles
     $helpMessages = $this->getHelpMessages('helpImage');
     $helpMessages = array_merge($helpMessages, $this->getHelpMessages('helpAdresse'));
     foreach ($helpMessages as $fieldName => $message) {
         $t->assign_vars(array($fieldName => $message));
     }
     // *********************************************************************************
     ob_start();
     $t->pparse('imageFormModif');
     $html = ob_get_contents();
     ob_end_clean();
     return $html;
 }
 /**
  * Affichage du formulaire d'ajout/édition
  * 
  * @param array $params Paramètres
  * 
  * @return string HTML
  * */
 public function formulaireActualites($params = array())
 {
     $html = "";
     $f = new formGenerator();
     $d = new dateObject();
     $c = new calqueObject();
     $this->addToJsHeader("<script>" . $c->getJSScrollHeight() . "</script>");
     $html .= $c->getDiv(array('width' => 900, 'lienSrcIFrame' => '', 'titre' => 'Prévisualisation'));
     $idActualite = 0;
     $boutonNouveau = "";
     $boutonSupprimer = "";
     $boutonPrevisualiser = "<input type='button' name='previsualisation' value='Prévisualisation' onclick=\"tinyMCE.triggerSave(true,true);document.getElementById('" . $c->getJSDivId() . "').style.top=(50+getScrollHeight())+'px';document.getElementById('" . $c->getJSIFrameId() . "').src='" . $this->creerUrl('', 'previsualisationActualite', array()) . "';" . $c->getJSOpenPopup() . "\">";
     $boutonValiderEtEnvoiMailPrevisualisation = "<input type='button' name='valideEtEnvoi' id='valideEtEnvoi' value=\"Envoyer le mail tout de suite\" onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1';document.getElementById('formActu').submit();\">\n        <input type='button' name='valideEtPrev' id='valideEtPrev' value='" . _("Prévisualiser le mail") . "' onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1&preview=1';document.getElementById('formActu').setAttribute('target', '_blank'); document.getElementById('formActu').submit();\">\n        <input type='button' name='testMail' id='testMail' value='" . _("Envoyer un mail de test") . "' onclick=\"document.getElementById('formActu').action+='&previsualisationMail=1&preview=1&testMail=1';document.getElementById('formActu').setAttribute('target', '_blank'); document.getElementById('formActu').submit();\">\n        ";
     if (isset($this->variablesGet['archiIdActualite']) && $this->variablesGet['archiIdActualite'] != '') {
         $idActualite = $this->variablesGet['archiIdActualite'];
         $reqActu = "SELECT date,titre, sousTitre,photoIllustration, texte,urlFichier, fichierPdf, desactive,texteMailHebdomadaire,envoiMailHebdomadaire FROM actualites WHERE idActualite='" . $idActualite . "'";
         $resActu = $this->connexionBdd->requete($reqActu);
         $fetchActu = mysql_fetch_assoc($resActu);
         $date = $d->toFrenchAffichage($fetchActu['date']);
         $titre = $fetchActu['titre'];
         $sousTitre = $fetchActu['sousTitre'];
         $illustration = $fetchActu['photoIllustration'];
         $description = $fetchActu['texte'];
         $urlFichier = $fetchActu['urlFichier'];
         $fichierPdf = $fetchActu['fichierPdf'];
         $isDesactivated = $fetchActu['desactive'];
         $texteMailHebdomadaire = $fetchActu['texteMailHebdomadaire'];
         $isEnvoi = $fetchActu['envoiMailHebdomadaire'];
         $formAction = $this->creerUrl('modifierActu', 'adminActualites', array('archiIdActualite' => $idActualite));
         $boutonNouveau = "<input type='button' name='nouveauButton' value='Nouveau' onclick=\"location.href='" . $this->creerUrl('', 'adminActualites', array()) . "'\">";
         $boutonSupprimer = "<input type='button' name='supprimerBouton' value='Supprimer' onclick=\"location.href='" . $this->creerUrl('supprimerActu', 'adminActualites', array("idActuSuppr" => $idActualite)) . "'\">";
     } else {
         $date = date("d/m/Y");
         $titre = "";
         $sousTitre = "";
         $illustration = "";
         $description = "";
         $urlFichier = "";
         $fichierPdf = "";
         $isDesactivated = 0;
         $texteMailHebdomadaire = "";
         $isEnvoi = 0;
         $formAction = $this->creerUrl('ajouterActu', 'adminActualites', array('check' => 1));
         // check sert juste a ne pas avoir a gerer le ? ou le & dans l'url quand on rajoute un parametre en js
     }
     $idActualitePathImage = "";
     if ($idActualite != 0) {
         $idActualitePathImage = $idActualite;
     }
     // bibliotheques d'images
     $fileObject = new fileObject();
     $arrayFiles = $fileObject->getListeFichiersArrayFrom($this->getCheminPhysique() . "images/actualites/" . $idActualite . "/");
     $listeFichiers = "";
     $t = new tableau();
     foreach ($arrayFiles as $indiceFichier => $fichier) {
         if (strtolower($fileObject->getExtensionFromFile($fichier)) == 'jpg' || strtolower($fileObject->getExtensionFromFile($fichier)) == 'gif' || strtolower($fileObject->getExtensionFromFile($fichier)) == 'png') {
             $t->addValue("<a onclick='injectInTinyMce(\"<img src=\\\"" . $this->getUrlImage() . "actualites/" . $idActualite . "/" . str_replace("'", "\\\\'", $fichier) . "\\\" border=0>\");'><img src=\"" . $this->getUrlImage() . "actualites/" . $idActualite . "/" . $fichier . "\" border=0 width=100 height=100></a>");
             $t->addValue("{$fichier}");
         } else {
             $t->addValue("&nbsp;");
             $t->addValue("{$fichier}");
         }
     }
     $listeFichiers = $t->createTable(2);
     $gestionBibliothequeImages = "Bibliothèque d'images de l'actualité <span style='font-size:11px;'>(cliquez sur une image pour l'inserer à la position du curseur)</span> : <div id='listeFichiers' style='background-color:#87CEFF;width:300px;height:200px;overflow:scroll;'>" . $listeFichiers . "</div>";
     $this->addToJsHeader("<script>\n                function injectInTinyMce(txt)\n                {\n                    tinyMCE.execInstanceCommand('texte','mceInsertContent',false,txt);\n                }\n                \n                function goRedim(idActualite)\n                {\n                    // validation du formulaire pour creer l'identifiant de l'actu et pouvoir ranger les photos\n                    document.getElementById('formActu').submit();\n                }\n            </script>");
     // on ne gere pas de timestamp , on assume que seul l'admin fera des mises a jour des actualités
     $applet = $fileObject->getAppletUploadMultiple(array('cheminApplet' => $this->getUrlRacine() . "/includes/", 'uploadDirPart1' => $this->getCheminPhysique() . "images/", 'uploadDirPart2' => "uploadMultipleActualites/", 'jsFunctionNameOnExit' => "goRedim({$idActualite})"));
     $configFields = array('idActualite' => array('libelle' => "idActualite", 'type' => 'hidden', 'required' => true, 'value' => '', 'forceValueTo' => $idActualite, 'htmlCode' => '', 'error' => ''), 'desactive' => array('libelle' => "désactiver", 'type' => 'singleCheckBox', 'required' => false, 'value' => '', 'forceValueTo' => '1', 'isChecked' => $isDesactivated, 'htmlCode' => '', 'error' => '', 'default' => ''), 'date' => array('libelle' => "date", 'withDatePicker' => true, 'type' => 'date', 'required' => true, 'value' => '', 'forceValueTo' => $date, 'htmlCode' => '', 'error' => ''), 'titre' => array('libelle' => "titre", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $titre, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'sousTitre' => array('libelle' => "sous-titre", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $sousTitre, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'photoIllustration' => array('libelle' => "illustration", 'type' => 'uploadImage', 'required' => false, 'value' => '', 'forceValueTo' => $illustration, 'physicalImagePathForTestExists' => $this->getCheminPhysique() . "images/actualites/" . $idActualitePathImage . "/", 'urlImagePathForDisplayInForm' => $this->getUrlImage() . "actualites/" . $idActualitePathImage . "/", 'htmlCode' => '', 'error' => ''), 'texte' => array('libelle' => "description", 'type' => 'tinyMCE', 'required' => false, 'value' => '', 'forceValueTo' => $description, 'htmlCode' => "cols=80 rows=30", 'error' => '', 'htmlCode2' => $gestionBibliothequeImages . "<div><a onclick=\"if(document.getElementById('divApplet').style.display=='none'){document.getElementById('divApplet').style.display='block';}else{document.getElementById('divApplet').style.display='none';}\" style='cursor:pointer;'>Voir/cacher ajouter une image</a></div><div id='divApplet' style='float:left;display:none'>" . $applet . "</div>"), 'urlFichier' => array('libelle' => "url redirection", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $urlFichier, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'fichierPdf' => array('libelle' => "fichier pdf", 'type' => 'text', 'required' => false, 'value' => '', 'forceValueTo' => $fichierPdf, 'htmlCode' => "style='width:300px;'", 'error' => ''), 'texteMailHebdomadaire' => array('libelle' => "description mail hebdomadaire <span style='color:red;'>(ne pas oublier de préciser le titre)</span>", 'type' => 'tinyMCE', 'required' => false, 'value' => '', 'forceValueTo' => $texteMailHebdomadaire, 'htmlCode' => "cols=80 rows=30", 'error' => ''), 'envoiMailHebdomadaire' => array('libelle' => "envoi avec la newsletter hebdomadaire", 'type' => 'singleCheckBox', 'required' => false, 'value' => '', 'forceValueTo' => '1', 'isChecked' => $isEnvoi, 'htmlCode' => '', 'error' => '', 'default' => ''));
     $configForm = array("fields" => $configFields, 'formAction' => $formAction, 'codeHtmlAfterSubmitButton' => $boutonNouveau . $boutonSupprimer . $boutonPrevisualiser . $boutonValiderEtEnvoiMailPrevisualisation, 'formName' => 'formActu');
     $html .= $f->afficherFromArray($configForm);
     return $html;
 }