Changeset 32405 in spip-zone


Ignore:
Timestamp:
Oct 27, 2009, 7:08:55 PM (11 years ago)
Author:
brunobergot@…
Message:

ménage dans le plugin annotations (pas encore pleinement fonctionnel) :
-* on vire les appels au script ifixpng
-* suite aux modifs sur le formulaire_upload on modifie les appels à celui-ci et les $fond_documents persos utilisés dans annotations
-* on passe le formulaire_annotations en CVT en créant un alias du formulaire_forum de SPIP (il y a encore des choses qui clochent dans le js des annotations)

Location:
_plugins_/annotations
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/annotations/annotations_pipelines.php

    r17401 r32405  
    1616                $flux .= '<link rel="stylesheet" href="'.url_absolue(find_in_path('css/jqModal.css')).'" type="text/css" />
    1717                <link rel="stylesheet" href="'.url_absolue(find_in_path('css/jquery.tooltip.css')).'" type="text/css" />
    18                 <script type="text/javascript" src="'.url_absolue(find_in_path('javascript/jquery.ifixpng.js')).'"></script>
    19                 <script type="text/javascript" src="'.url_absolue(find_in_path('javascript/jquery.ifixpng.js')).'"></script>
    2018                <script type="text/javascript" src="'.url_absolue(find_in_path('javascript/jqModal.js')).'"></script>
    2119                <script type="text/javascript" src="'.url_absolue(find_in_path('javascript/jquery.tooltip.js')).'"></script>
     
    4543                        };
    4644                        var scripts = [
    47                          "'.url_absolue(find_in_path('javascript/jquery.ifixpng.js')).'",
    4845                         "'.url_absolue(find_in_path('javascript/jqModal.js')).'",
    4946                         "'.url_absolue(find_in_path('javascript/jquery.tooltip.js')).'",
  • _plugins_/annotations/article-annotations.html

    r17128 r32405  
    124124       
    125125        <BOUCLE_aut(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>
    126                                 #FORMULAIRE_UPLOAD{auteur,upload_annotation_forum}
     126                                #FORMULAIRE_UPLOAD{auteur,#ID_AUTEUR,upload_annotation_forum}
    127127                                <script type="text/javascript">
    128128                                        $(function() {
  • _plugins_/annotations/balise/formulaire_annotations.php

    r16537 r32405  
    44 *  SPIP, Systeme de publication pour l'internet                           *
    55 *                                                                         *
    6  *  Copyright (c) 2001-2007                                                *
     6 *  Copyright (c) 2001-2009                                                *
    77 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
    88 *                                                                         *
     
    1616include_spip('inc/texte');
    1717include_spip('inc/forum');
    18 include_spip('base/abstract_sql');
    19 spip_connect();
    20 
    21 charger_generer_url();
    22 
    23 /*******************************/
    24 /* GESTION DU FORMULAIRE FORUM */
    25 /*******************************/
    26 
    27 // Contexte du formulaire
    28 // Mots-cles dans les forums :
    29 // Si la variable de personnalisation $afficher_groupe[] est definie
    30 // dans le fichier d'appel, et si la table de reference est OK, proposer
    31 // la liste des mots-cles
     18include_spip('balise/formulaire_forum');
    3219
    3320// http://doc.spip.org/@balise_FORMULAIRE_FORUM
     
    4431}
    4532
    46 //
    47 // Chercher le titre et la configuration d'un forum
    48 // valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement
    49 // Donner aussi la table de reference pour afficher_groupes[]
    50 
    5133// http://doc.spip.org/@balise_FORMULAIRE_FORUM_stat
    5234function balise_FORMULAIRE_ANNOTATIONS_stat($args, $filtres) {
    5335
    54         // Note : ceci n'est pas documente !!
    55         // $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire
    56         // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum)]
    57         // ou encore [(#FORMULAIRE_FORUM|forumspip.php)]
    58 
    59         // le denier arg peut contenir l'url sur lequel faire le retour
    60         // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})]
    61 
    62         // recuperer les donnees du forum auquel on repond.
    63         list ($idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url) = $args;
    64         $idr = intval($idr);
    65         $idf = intval($idf);
    66         $ida = intval($ida);
    67         $idb = intval($idb);
    68         $ids = intval($ids);
    69 
    70         $type = substr($GLOBALS['meta']["forums_publics"],0,3);
    71 
    72         if ($ida) {
    73                 $titre = sql_fetsel('accepter_forum AS type, titre', 'spip_articles', "statut = 'publie' AND id_article = $ida");
    74                 if ($titre) {
    75                         if ($titre['type']) $type = $titre['type'];
    76                         $table = "articles";
    77                 }
    78                 if ($type == 'non') return false;
    79         } else {
    80                 if ($type == 'non') return false;
    81                 if ($idb) {
    82                         $titre = sql_fetsel('titre', 'spip_breves', "statut = 'publie' AND id_breve = $idb");
    83                         $table = "breves";
    84                 } else if ($ids) {
    85                         $titre = sql_fetsel('nom_site AS titre', 'spip_syndic', "statut = 'publie' AND id_syndic = $ids");
    86                         $table = "syndic";
    87                 } else if ($idr) {
    88                         $titre = sql_fetsel('titre', 'spip_rubriques', "statut = 'publie' AND id_rubrique = $idr");
    89                         $table = "rubriques";
    90                 }
    91         }
    92 
    93         if (!$titre) return false; // inexistant ou non public
    94 
    95         if ($idf) {
    96                 $titre_m = sql_fetsel('titre', 'spip_forum', "id_forum = $idf");
    97                 if (!$titre_m) return false; // URL fabriquee
    98                 $titre = $titre_m;
    99         }
    100 
    101         if ($GLOBALS['meta']["mots_cles_forums"] != "oui")
    102                 $table = '';
    103 
    104         $titre = supprimer_numero($titre['titre']);
    105 
    106         // Sur quelle adresse va-t-on "boucler" pour la previsualisation ?
    107         if ($script = $filtres[0])
    108                 $script = preg_match(',[.]php3?$,', $script) ?
    109                         $script : generer_url_public($script);
    110         else
    111                 $script = self(); # sur soi-meme
    112 
    113         return
    114                 array($titre, $table, $type, $script,
    115                 $idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url);
     36        return balise_FORMULAIRE_FORUM_stat($args, $filtres);
     37       
    11638}
    11739
    118 // http://doc.spip.org/@balise_FORMULAIRE_FORUM_dyn
    119 function balise_FORMULAIRE_ANNOTATIONS_dyn(
    120 $titre, $table, $type, $script,
    121 $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic,
    122 $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
    123 {
    124 
    125         // verifier l'identite des posteurs pour les forums sur abo
    126         if ($type == "abo") {
    127                 if (!$GLOBALS["auteur_session"]) {
    128                         return array('formulaires/login_forum', 0,
    129                                         array('inscription' => generer_url_public('identifiants'),
    130                                                 'oubli' => generer_url_public('', 'action=pass')));
    131                 } else {
    132                 // forcer ces valeurs
    133                         $auteur = $GLOBALS['auteur_session']['nom'];
    134                         $email_auteur = $GLOBALS['auteur_session']['email'];
    135                 }
    136         }
    137         // Tableau des valeurs servant au calcul d'une signature de securite.
    138         // Elles seront placees en Input Hidden pour que inc/forum_insert
    139         // recalcule la meme chose et verifie l'identite des resultats.
    140         // Donc ne pas changer la valeur de ce tableau entre le calcul de
    141         // la signature et la fabrication des Hidden
    142         // Faire attention aussi a 0 != ''
    143 
    144         // id_rubrique est parfois passee pour les articles, on n'en veut pas
    145         $ids = array();
    146         if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic))
    147                 $id_rubrique = 0;
    148         foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) {
    149                 $ids[$o] = ($x = intval($$o)) ? $x : '';
    150         }
    151 
    152 
    153         // ne pas mettre '', sinon le squelette n'affichera rien.
    154         $previsu = ' ';
    155 
    156         // au premier appel (pas de Post-var nommee "retour_forum")
    157         // memoriser eventuellement l'URL de retour pour y revenir apres
    158         // envoi du message ; aux appels suivants, reconduire la valeur.
    159         // Initialiser aussi l'auteur
    160         if (!$retour_forum = rawurldecode(_request('retour_forum'))) {
    161                 if ($retour_forum = rawurldecode(_request('retour')))
    162                         $retour_forum = str_replace('&var_mode=recalcul','',$retour_forum);
    163                 else {
    164                         // par defaut, on veut prendre url_forum(), mais elle ne sera connue
    165                         // qu'en sortie, on inscrit donc une valeur absurde ("!")
    166                         $retour_forum = "!";
    167                         // sauf si on a passe un parametre en argument (exemple : {#SELF})
    168                         if ($url_param_retour)
    169                                 $retour_forum = str_replace('&amp;', '&', $url_param_retour);
    170                 }
    171                 if (isset($_COOKIE['spip_forum_user'])
    172                 AND is_array($cookie_user = unserialize($_COOKIE['spip_forum_user']))) {
    173                         $auteur = $cookie_user['nom'];
    174                         $email_auteur = $cookie_user['email'];
    175                 } else {
    176                         $auteur = $GLOBALS['auteur_session']['nom'];
    177                         $email_auteur = $GLOBALS['auteur_session']['email'];
    178                 }
    179 
    180         } else { // appels ulterieurs
    181 
    182                 // Recuperer le message a previsualiser
    183                 $titre = _request('titre');
    184                 $texte = _request('texte');
    185                 $auteur = _request('auteur');
    186                 $email_auteur = _request('email_auteur');
    187                 $nom_site = _request('nom_site');
    188                 $url_site = _request('url_site');
    189                 $ajouter_mot = _request('ajouter_mot');
    190                 $ajouter_groupe = _request('ajouter_groupe');
    191 
    192                 if ($afficher_texte != 'non')
    193                         $previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site, $ajouter_mot);
    194 
    195                 $arg = forum_fichier_tmp(join('', $ids));
    196 
    197                 $securiser_action = charger_fonction('securiser_action', 'inc');
    198                 // on sait que cette fonction est dans le fichier associe
    199                 $hash = calculer_action_auteur("ajout_forum-$arg");
    200 
    201                 // Poser un cookie pour ne pas retaper les infos invariables
    202                 include_spip('inc/cookie');
    203                 spip_setcookie('spip_forum_user',
    204                         serialize(array('nom' => $auteur,
    205                                 'email' => $email_auteur)));
    206         }
    207 
    208         // pour la chaine de hidden
    209         $script_hidden = $script = str_replace('&amp;', '&', $script);
    210         foreach ($ids as $id => $v)
    211                 $script_hidden = parametre_url($script_hidden, $id, $v, '&');
    212 
    213         return array('formulaires/annotations', 0,
    214         array(
    215                 'id_article' => $id_article,
    216                 'auteur' => $auteur,
    217                 'readonly' => ($type == "abo")? "readonly" : '',
    218                 'email_auteur' => $email_auteur,
    219                 'modere' => (($type != 'pri') ? '' : ' '),
    220                 'nom_site' => $nom_site,
    221                 'retour_forum' => $retour_forum,
    222                 'afficher_texte' => $afficher_texte,
    223                 'previsu' => $previsu,
    224                 'table' => $table,
    225                 'texte' => $texte,
    226                 'titre' => extraire_multi($titre),
    227                 'url' => $script, # ce sur quoi on fait le action='...'
    228                 'url_post' => $script_hidden, # pour les variables hidden
    229                 'url_site' => ($url_site ? $url_site : "http://"),
    230                 'arg' => $arg,
    231                 'hash' => $hash,
    232                 'nobot' => _request('nobot'),
    233                 'ajouter_groupe' => $ajouter_groupe,
    234                 'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)),
    235 
    236                 ));
    237 }
    238 
    239 // http://doc.spip.org/@inclure_previsu
    240 function inclure_previsu($texte,$titre, $email_auteur, $auteur, $url_site, $nom_site, $ajouter_mot)
    241 {
    242         $erreur = $bouton = '';
    243         if (strlen($texte) < 10
    244         AND !$ajouter_mot AND $GLOBALS['meta']['forums_texte'] == 'oui')
    245                 $erreur = _T('forum_attention_dix_caracteres');
    246         else if (strlen($titre) < 3
    247         AND $GLOBALS['meta']['forums_titre'] == 'oui')
    248                 $erreur = _T('forum_attention_trois_caracteres');
    249         else if (defined('_FORUM_LONGUEUR_MAXI')
    250         AND _FORUM_LONGUEUR_MAXI > 0
    251         AND strlen($texte) > _FORUM_LONGUEUR_MAXI)
    252                 $erreur = _T('forum_attention_trop_caracteres',
    253                         array(
    254                                 'compte' => strlen($texte),
    255                                 'max' => _FORUM_LONGUEUR_MAXI
    256                         ));
    257         else
    258                 $bouton = _T('forum_message_definitif');
    259 
    260         // supprimer les <form> de la previsualisation
    261         // (sinon on ne peut pas faire <cadre>...</cadre> dans les forums)
    262         return preg_replace("@<(/?)form\b@ism",
    263                             '<\1div',
    264                 inclure_balise_dynamique(array('formulaires/forum_previsu',
    265                       0,
    266                       array(
    267                         'titre' => safehtml(typo($titre)),
    268                         'email_auteur' => safehtml($email_auteur),
    269                         'auteur' => safehtml(typo($auteur)),
    270                         'texte' => safehtml(propre($texte)),
    271                         'url_site' => /*vider_url($url_site)*/'',
    272                         'nom_site' => /*safehtml(typo($nom_site))*/'',
    273                         'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)),
    274                         'erreur' => $erreur,
    275                         'bouton' => $bouton
    276                         )
    277                                                ),
    278                                          false));
    279 }
    280 
    281 // Une securite qui nous protege contre :
    282 // - les doubles validations de forums (derapages humains ou des brouteurs)
    283 // - les abus visant a mettre des forums malgre nous sur un article (??)
    284 // On installe un fichier temporaire dans _DIR_TMP (et pas _DIR_CACHE
    285 // afin de ne pas bugguer quand on vide le cache)
    286 // Le lock est leve au moment de l'insertion en base (inc-messforum)
    287 // Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment
    288 // si $afficher_texte = 'non')
    289 
    290 // http://doc.spip.org/@forum_fichier_tmp
    291 function forum_fichier_tmp($arg)
    292 {
    293 # astuce : mt_rand pour autoriser les hits simultanes
    294         while (($alea = time() + @mt_rand()) + intval($arg)
    295                AND @file_exists($f = _DIR_TMP."forum_$alea.lck"))
    296           {};
    297         spip_touch ($f);
    298 
    299 # et maintenant on purge les locks de forums ouverts depuis > 4 h
    300 
    301         if ($dh = @opendir(_DIR_TMP))
    302                 while (($file = @readdir($dh)) !== false)
    303                         if (preg_match('/^forum_([0-9]+)\.lck$/', $file)
    304                         AND (time()-@filemtime(_DIR_TMP.$file) > 4*3600))
    305                                 spip_unlink(_DIR_TMP.$file);
    306         return $alea;
    307 }
    30840?>
  • _plugins_/annotations/cfg_annotations.js.html

    r17152 r32405  
    11#CACHE{0}
    22#HTTP_HEADER{'Content-Type: text/javascript'}
    3 (function($) {
    4         $(function() {
    5                 $.ifixpng("[(#CHEMIN{'images/rien.gif'}|url_absolue)]");       
    6         });
    7 })(jQuery);
    83
    94var     mapMarker = {
  • _plugins_/annotations/formulaires/annotations.html

    r16971 r32405  
    1 <div class="formulaire_spip formulaire_forum"  id="formulaire_forum">
     1<div class="formulaire_spip formulaire_forum ajax" id="formulaire_forum">
     2[(#REM) pour IE qui sinon se perd dans l'ajax !, ne pas retirer]<br class='bugajaxie' />
    23
    3 <form action="#ENV{url}#formulaire_forum" method="post"><div>
    4 [(#ENV{url_post}|form_hidden)]
    5 [<input type="hidden" name="arg" value="(#ENV{arg})" />]
    6 [<input type="hidden" name="hash" value="(#ENV{hash})" />]
    7 [<input type="hidden" name="verif_(#ENV{hash})" value="ok" />]
    8 [<input type="hidden" name="retour_forum" value="(#ENV*{retour_forum}|rawurlencode)" />]
    9 [<fieldset class="reponse_formulaire">
    10 <legend><:bouton_radio_modere_priori:></legend>
    11 <p>(#ENV{modere})<:forum_info_modere:></p>
     4[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     5[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     6
     7[(#ENV{login_forum_abo})
     8<INCLURE{fond=formulaires/inc-login_forum_abo}{env} />
     9]
     10
     11[(#ENV{editable})
     12
     13
     14[(#REM)
     15        Bloc de previsualisation du forum envoye
     16
     17        Si on valide la previsu, on n'envoie pas en ajax car, si le post reussit
     18        il faudra certainement redessiner toute la page pour afficher le nouveau
     19        forum
     20
     21][<form action="#ENV{action}#formulaire_forum" method="post" class="noajax">
     22        <div>
     23        [(#ACTION_FORMULAIRE{#ENV{action}})]
     24        <input type='hidden' name='titre' value="#ENV{titre}" />
     25        <input type='hidden' name='texte' value="#ENV{texte}" />
     26        <input type='hidden' name='url_site' value="#ENV{url_site}" />
     27        <input type='hidden' name='nom_site' value="#ENV{nom_site}" />
     28        [<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
     29        [(#INCLURE{fond=formulaires/inc-forum_ajouter_mot}{ajouter_mot})]
     30        (#ENV*{erreurs}|table_valeur{previsu})
     31        </div>
     32</form>]
     33
     34
     35<form action="#ENV{action}#formulaire_forum" method="post" enctype='multipart/form-data'><div>
     36[(#ACTION_FORMULAIRE{#ENV{action}})]
     37[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
     38[<fieldset>
     39        <legend><:bouton_radio_modere_priori:></legend>
     40        <p class="explication">(#ENV{modere})<:forum_info_modere:></p>
    1241</fieldset>]
    1342
    14 [(#ENV*{previsu})]
     43[(#ENV**{afficher_texte}|choixsiegal{'non', ' ',''})
     44[<input type="hidden" name="titre" value="(#ENV{titre})" />]
     45<p class="spip_bouton"><input type="submit" class="submit" value="<:forum_valider:>" /></p>]
    1546
    16 <BOUCLE_G(GROUPES_MOTS)
    17         {forum=(#CONFIG{mots_cles_forums}|choixsiegal{oui,oui,jamais})}
    18         {articles==(#ENV{table}|choixsiegal{articles,'oui','.*'})}
    19         {breves==(#ENV{table}|choixsiegal{breves,'oui','.*'})}
    20         {rubriques==(#ENV{table}|choixsiegal{rubriques,'oui','.*'})}
    21         {syndic==(#ENV{table}|choixsiegal{syndic,'oui','.*'})}
    22 >
    23 [(#ID_GROUPE|in_any{#ENV**{ajouter_groupe},' '})
    24         <fieldset>
    25         <legend><:mots_clefs:> : #TITRE</legend>
    26                 <INCLURE{fond=formulaires/choix_mots}{id_groupe}{ajouter_mot}{unseul}>
    27         </fieldset>
    28 ]</BOUCLE_G>
    29 
    30 
     47[(#ENV**{afficher_texte}|choixsiegal{'non', '',' '})
    3148
    3249        <fieldset>
    33         <legend><:form_pet_message_commentaire:></legend>
     50        <legend><:form_pet_message_commentaire:></legend>[
     51        (#CONFIG{forums_titre}|!={non}|non)
     52                <input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] />
     53        ]<ul>
     54        [<li class='saisie_mots_forum'>(#INCLURE{fond=formulaires/inc-forum_bloc_choix_mots}{table=#ENV*{table}}{ajouter_mot})</li>]
    3455
    35 [(#CONFIG{forums_titre}|=={oui}|?{
    36         <p><label for="titre"><:forum_titre:></label>
    37         <input type="text" class="forml" name="titre" id="titre"[ value="(#ENV{titre})"] size="40" /></p>
    38 ,
    39         <input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] />
     56[(#CONFIG{forums_titre}|!={non}|oui)
     57        <li class='saisie_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]'>
     58                <label for="titre"><:forum_titre:></label>
     59                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>]
     60                <input type="text" class="text" name="titre" id="titre"[ value="(#ENV{titre})"] size="60" />
     61        </li>
     62]
     63
     64[(#CONFIG{forums_texte}|!={non}|?{
     65        <li class='saisie_texte[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]'>
     66                <label for='texte'><:forum_texte|typo:></label>
     67                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>]
     68                <p class='explication'><:info_creation_paragraphe:></p>
     69                [(#ENV**{config}|table_valeur{afficher_barre}|?{#VAL{texte}|barre_typo{#LANG,1}})]
     70                <textarea name="texte" id="texte" rows="12" cols="60">[(#ENV{texte})]</textarea>
     71        </li>
    4072})]
    41 
    42 [(#CONFIG{forums_texte}|=={oui}|?{
    43         <label><:forum_texte:></label>
    44         <p><small><:info_creation_paragraphe:></small></p>
    45         [(#ENV**{texte}|barre_textarea{12,40})]
    46         </fieldset>
    47 })]
     73        </ul></fieldset>
    4874
    4975        <fieldset>
    5076        <legend><:forum_lien_hyper:></legend>
    51         <p><:forum_page_url:></p>
    52         <p><label for="nom_site"><:annotations:image:></label>
     77        <p class='explication'><:forum_page_url:></p>
     78        <ul>
     79        <li class='saisie_nom_site[ (#ENV**{erreurs}|table_valeur{nom_site}|oui)erreur]'><label for="nom_site"><:annotations:image:></label>
     80        [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_site})</span>]
    5381        <select name="nom_site" id="nom_site">
    5482        <option value=""[ selected="selected"(#ENV{nom_site}|?{'',' '})]></option>
    55         <BOUCLE_cartes(DOCUMENTS){id_article}{extension IN jpg,gif,png}>
    56         <option value="#ID_DOCUMENT"[ selected="selected"(#ENV{nom_site}|=={#ID_DOCUMENT}|?{' ',''})]>#TITRE (#ID_DOCUMENT - #FICHIER)</option>
    57         </BOUCLE_cartes>
    58         </select></p>
    59         <p><label for="url_site"><:annotations:coordinates:></label><br />
     83        [(#INCLURE{fond=formulaires/inc-documents_annotations}{nom_site}{id_article})]
     84        </select></li>
     85        <li class='saisie_url_site[ (#ENV**{erreurs}|table_valeur{url_site}|oui)erreur]'><label for="url_site"><:annotations:coordinates:></label>
     86        [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url_site})</span>]
    6087        <span id="anno_map_coords"><:annotations:info_no_coord:></span>
    61         <input type="hidden" class="forml" name="url_site" id="url_site" value="[(#ENV{url_site})]" /></p>
    62         </fieldset>
     88        <input type="text" class="text" name="url_site" id="url_site" style="text-align: left;" dir="ltr" size="40" value="[(#ENV{url_site})]" /></li>
     89        </ul></fieldset>
    6390        <script type="text/javascript">
    6491                (function($) {
    6592                        $(function(){
    6693                                var showMap = function() {
    67                                         var val = $(this).val(); 
     94                                        var val = $(this).val();
    6895                                        if(val) {
    69                                                 var width =     $("#anno_map_coords").html("<img src='#CHEMIN{images/loader.gif}' />")
    70                                                 .parents("form").width();
     96                                                var width =     $("#anno_map_coords").html("<img src='#CHEMIN{images/loader.gif}' />").parents("form").width();
    7197                                                $.getJSON("#URL_PAGE{get_image_info}&id_document="+val+"&width="+width+"&height=0",function(data){
    7298                                                        $("#anno_map_coords").html(data.imagePreview).find("img").click(function(e){
    73                                                                 var carto = $.data($("#annotated_map"+val)[0],"carto_objs")["forum"];
     99                                                                var carto = $.data($("#annotated_map"+val)#EVAL{chr(91)}0#EVAL{chr(93)},"carto_objs")#EVAL{chr(91)}"forum"#EVAL{chr(93)};
    74100                                                                var coord = carto.get_xy_coord($(this),e);
    75101                                                                $(this).siblings(".map_marker,.map_marker_overlay").remove();
    76                                                                 carto.addMarker(this,{xy:[coord.x,coord.y]},{id:"anno_insert_marker0"});
     102                                                                carto.addMarker(this,{xy:#EVAL{chr(91)}coord.x,coord.y#EVAL{chr(93)}},{id:"anno_insert_marker0"});
    77103                                                                $("#url_site").val(parseInt(coord.x*data.attributes.width/$(this).width())+","+parseInt(coord.y*data.attributes.height/$(this).height()));
    78104                                                        });
     
    82108                                        }
    83109                                }
    84                                 showMap.apply($("#nom_site").change(showMap)[0]);
     110                                showMap.apply($("#nom_site").change(showMap)#EVAL{chr(91)}0#EVAL{chr(93)});
    85111                        });
    86112                })(jQuery)
    87113        </script>
     114
     115[
    88116        <fieldset>
    89         <legend><:forum_qui_etes_vous:></legend>
    90         <p><label for="auteur"><:forum_votre_nom:></label>
    91         <input type="text" class="forml" name="auteur" id="auteur" value="#ENV{auteur}" size="40"[ readonly="(#ENV{readonly})"] /></p>
    92         <p><label for="email_auteur"><:forum_votre_email:></label>
    93         <input type="text" class="forml" name="email_auteur" id="email_auteur" value="#ENV{email_auteur}" size="40"[ readonly="(#ENV{readonly})"] /></p>
    94         </fieldset>
     117        <legend><:bouton_ajouter_document:></legend>
     118        <ul>
     119        <li class='saisie_document_forum[ (#ENV**{erreurs}|table_valeur{document_forum}|oui)erreur]'>
     120        [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{document_forum})</span>]
     121        <input type="hidden" name="cle_ajouter_document" value="(#ENV{cle_ajouter_document})" />
     122        [<div id="ajouter_document_up">(#ENV{ajouter_document})
     123        <label for="supprimer_document_ajoute"><input type='checkbox' name='supprimer_document_ajoute' id='supprimer_document_ajoute' />
     124        <:lien_supprimer:></label>
     125        </div>]
     126        <div>
     127        [<label for="ajouter_document">(#ENV{formats_documents_forum}|join{', '})</label>]
     128        <input class='file' type="file" name="ajouter_document" id="ajouter_document"[
     129        accept="(#ENV{formats_documents_forum}|join{','})"] />
     130        </div>
     131
     132        <script type='text/javascript'>
     133        jQuery('#ajouter_document_up')
     134        .next()
     135                .hide()
     136        .prev()
     137        .find(':checkbox')
     138        .bind('change', function(){
     139                jQuery('#ajouter_document_up').hide().next().show();
     140        })
     141        ;
     142        </script>
     143        </li>
     144        </ul></fieldset>
     145]
     146
     147        <INCLURE{fond=formulaires/inc-login_forum}{env} />
    95148
    96149        [(#REM) Piege a robots spammeurs ]
    97         <p style='display: none;'><label for="nobot"><:antispam_champ_vide:></label>
    98         <input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
    99 
    100         <p class="spip_bouton"><input type="submit" value="<:forum_voir_avant:>" /></p>
     150        <p style="display: none;">
     151                <label for="nobot_forum"><:antispam_champ_vide:></label>
     152                <input type="text" class="text" name="nobot" id="nobot_forum" value="#ENV{nobot}" size="10" />
     153        </p>
     154        <p class="boutons"><input type="submit" class="submit" value="<:forum_voir_avant:>" /></p>
     155]
    101156</div>
    102157</form>
    103158
     159[(#REM)
     160        Sauver les donnees du formulaire dans un cookie, si on quitte la page,
     161        et les remettre quand on revient (dans les limites de 4ko etc)
     162]
     163<script type="text/javascript">/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/
     164if (window.jQuery)(function($){
     165        $.getScript('[(#CHEMIN{javascript/jquery.cookie.js}|url_absolue)]',
     166        function(){
     167                var a = $.cookie('spip_contenu_formulaire_#ENV{_sign}');
     168                var saveauto = true;
     169                if (a) {
     170                        $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}')
     171                        .val(a);
     172                        $.cookie('spip_contenu_formulaire_#ENV{_sign}', null);
     173                }
     174                $('#formulaire_forum form')
     175                .bind('submit', function() {
     176                        saveauto = false;
     177                });
     178                $(window)
     179                .bind('unload', function(){
     180                        if (saveauto)
     181                        $.cookie('spip_contenu_formulaire_#ENV{_sign}',
     182                                $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}').val()
     183                        );
     184                });
     185        });
     186}(jQuery));
     187/*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script>
     188]
    104189</div>
  • _plugins_/annotations/formulaires/upload_annotation.html

    r19797 r32405  
    1 <div class="formulaire_spip formulaire_upload">
    2 <form action="#ENV{url}#formulaire_upload" method="post" enctype="multipart/form-data"><div>
    3 [(#ENV{url_post}|form_hidden)]
    4 
    5 
    6 [(#REM)
    7         Ce qui suit est herite du formulaire forum mais ne semble plus servir, a voir...
    8 ]
    9 
    10 [<input type="hidden" name="arg" value="(#ENV{arg})" />]
    11 [<input type="hidden" name="hash" value="(#ENV{hash})" />]
    12 [<input type="hidden" name="verif_(#ENV{hash})" value="ok" />]
    13 [<input type="hidden" name="afficher_texte" value="(#ENV{afficher_texte})" />]
    14 
    15 
    16 #ENV{debug}
    17 
    18         <fieldset><legend><:annotations:click_select_csv:></legend>
    19         <B_docs>
    20                 #ANCRE_PAGINATION
    21         <BOUCLE_docs(DOCUMENTS)
    22         {id_auteur?}{id_article?}{id_breve?}{id_rubrique?}
    23         {!par id_document}{extension=csv}{pagination 3}>
    24         <div style="border:1px solid #ccc;margin-top:8px;margin-bottom:8px;padding:3px">
    25         <div class="spip_doc_descriptif" style='float:#LANG_LEFT;width:80px; margin-bottom: 8px; text-align:center;'>
    26         [(#SET{logo,[(#LOGO_DOCUMENT
    27                 ||inserer_attribut{title,#TYPE_DOCUMENT[
    28                         - (#TAILLE|taille_en_octets)]})]})]
    29         [(#GET{logo}|extraire_attribut{width}|>{78}|?{
    30                 [(#SET{logo,[(#GET{logo}|image_reduire{140,140}|image_recadre{78,78})]
    31         })]})]
    32         <a href="#" class="annotate_document" id="annotate_document#ID_DOCUMENT">[(#GET{logo}|liens_absolus)]</a>
    33                 [<br />(#DATE|affdate_court)]
    34                 <br /><a href="[(#URL_DOCUMENT|url_absolue)]"><:annotations:download:></a>
     1<B_docs>
     2        #ANCRE_PAGINATION
     3<BOUCLE_docs(DOCUMENTS){id_auteur?}{id_article?}{id_breve?}{id_rubrique?}{!par id_document}{tout}{pagination 3}>
     4<div class="bord_formup">
     5        <div class="spip_doc_descriptif spip_doc_logo float#LANG_RIGHT">
     6                [(#SET{logo,[(#LOGO_DOCUMENT|
     7                        |image_passe_partout{78,78}
     8                        |image_recadre{78,78,center}
     9                        |inserer_attribut{title,#TYPE_DOCUMENT[
     10                                - (#TAILLE|taille_en_octets)]}
     11                        )]}
     12                )]
     13                <a href="#" class="annotate_document" id="annotate_document#ID_DOCUMENT">[(#GET{logo}|liens_absolus)]</a>
     14                [(#DATE|affdate_court)]
     15                <a href="[(#URL_DOCUMENT|url_absolue)]"><:annotations:download:></a>
    3516        </div>
    36         <div style='float:#LANG_RIGHT;width:60%;'>
    37                 <div style='float:#LANG_RIGHT;width:10px;'>
    38                 <input type="checkbox" name="supprimer[]" value="#ID_DOCUMENT" title="<:formupload:doc_delete:>" />
     17        <div class='decrire_doc'>
     18                <div class='choix'>
     19                        <input type="checkbox" name="supprimer[]" id="surrpimer_[(#ID_DOCUMENT)]_#ENV{objet}_#ENV{id_objet}" class="checkbox" value="#ID_DOCUMENT" title="<:formupload:doc_delete:>" />
     20                        <label for="surrpimer_[(#ID_DOCUMENT)]_#ENV{objet}_#ENV{id_objet}"><:formupload:remove:></label>
    3921                </div>
    40        
    41         <h4 class="#EDIT{titre}">[(#TITRE|sinon{[(#FICHIER|basename|couper{20})]})]</h4>
    42         [<div class="spip_doc_descriptif #EDIT{descriptif}">(#DESCRIPTIF|sinon{<:info_descriptif:>})</div>]
    43        
     22                <h4 class="#EDIT{titre}">[(#TITRE|sinon{[(#FICHIER|basename|couper{20})]})]</h4>
     23                [<div class="spip_doc_descriptif #EDIT{descriptif}">(#DESCRIPTIF|sinon{<:info_descriptif:>})</div>]
    4424        </div>
    4525        <br class='nettoyeur' />
    4626        [(#CONFIG{formupload/insert_code}|?{' ',''})
    4727        <div class="insert_code">
    48                 <strong><:formupload:insert_code:></strong><br>
     28                <strong><:formupload:insert_code:></strong>
    4929                [(#TYPE_DOCUMENT|match{jpg|gif|png}|?{' ',''})
    5030                <abbr title="<:formupload:img_left:>">&lt;img#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:img_center:>">&lt;img#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:img_right:>">&lt;img#ID_DOCUMENT|right&gt;]
    5131                [(#TYPE_DOCUMENT|match{jpg|gif|png}|?{'',' '})
    52                 <abbr title="<:formupload:doc_left:>">&lt;doc#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:doc_center:>">&lt;doc#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:doc_right:>&lt;doc#ID_DOCUMENT|right&gt;</abbr>]
     32                <abbr title="<:formupload:doc_left:>">&lt;doc#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:doc_center:>">&lt;doc#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:doc_right:>">&lt;doc#ID_DOCUMENT|right&gt;</abbr>]
    5333        </div>]
    54         </div>
    55         </BOUCLE_docs>
    56                 [<p class="pagination">(#PAGINATION)</p>]
    57         </B_docs>
    58                 [<p class="pagination">(#PAGINATION)</p>]
    59         <//B_docs>
    60 
    61         [(#REM) Piege a robots spammeurs ]
    62         <p style='display:none;'><label for="nobot"><:antispam_champ_vide:></label>
    63         <input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
    64 
    65         <div style="margin-top:5px; padding:5px; border-top: dotted gray 1px;">
    66                 <label for="fichier"><:formupload:choosefiles:>
    67                 <input type="file" name="fichier" class="forml"[ accept="(#CONFIG{formupload/files_accepted})"][ maxlength="(#CONFIG{formupload/files_number})"] />
    68                 </label>
    69         </div>
    70 
    71         <p class="spip_bouton"><input type="submit" value="<:bouton_enregistrer:>" /></p>
    72 
    73         </fieldset>
    74         <br style="clear:both;" />
    75 
    76 
    7734</div>
    78 </form>
    79 
    80 </div>
    81 <br style="clear:both" />
     35</BOUCLE_docs>
     36[<p class="pagination">(#PAGINATION)</p>]
     37</B_docs>
     38[<p class="pagination">(#PAGINATION)</p>]
     39<//B_docs>
  • _plugins_/annotations/formulaires/upload_annotation_forum.html

    r16928 r32405  
    1 <div class="formulaire_spip formulaire_upload">
    2 
    3 <form action="#ENV{url}#formulaire_upload" method="post" enctype="multipart/form-data"><div>
    4 [(#ENV{url_post}|form_hidden)]
    5 
    6 
    7 [(#REM)
    8         Ce qui suit est herite du formulaire forum mais ne semble plus servir, a voir...
    9 ]
    10 
    11 [<input type="hidden" name="arg" value="(#ENV{arg})" />]
    12 [<input type="hidden" name="hash" value="(#ENV{hash})" />]
    13 [<input type="hidden" name="verif_(#ENV{hash})" value="ok" />]
    14 [<input type="hidden" name="afficher_texte" value="(#ENV{afficher_texte})" />]
    15 
    16 
    17 #ENV{debug}
    18 
    19         <fieldset><legend><:formupload:yourfiles:></legend>
    20 
    21         <B_docs>
    22                 #ANCRE_PAGINATION
    23         <BOUCLE_docs(DOCUMENTS)
    24         {id_auteur?}{id_article?}{id_breve?}{id_rubrique?}
    25         {!par id_document}{pagination 3}>
    26         <div style="border:1px solid #ccc;margin-top:8px;margin-bottom:8px;padding:3px">
    27         <div class="spip_doc_descriptif" style='float:#LANG_LEFT;width:80px; margin-bottom: 8px; text-align:center;'>
    28         [(#SET{logo,[(#LOGO_DOCUMENT|#URL_DOCUMENT
    29                 |inserer_attribut{title,#TYPE_DOCUMENT[
    30                         - (#TAILLE|taille_en_octets)]})]})]
    31         [(#GET{logo}|extraire_attribut{width}|>{78}|?{
    32                 [(#SET{logo,[(#GET{logo}|image_reduire{140,140}|image_recadre{78,78})]
    33         })]})]
    34         #GET{logo}
    35                 [<br />(#DATE|affdate_court)]
     1<B_docs>
     2        #ANCRE_PAGINATION
     3<BOUCLE_docs(DOCUMENTS){id_auteur?}{id_article?}{id_breve?}{id_rubrique?}{!par id_document}{tout}{pagination 3}>
     4<div class="bord_formup">
     5        <div class="spip_doc_descriptif spip_doc_logo float#LANG_RIGHT">
     6                [(#SET{logo,[(#LOGO_DOCUMENT|#URL_DOCUMENT
     7                        |image_passe_partout{78,78}
     8                        |image_recadre{78,78,center}
     9                        |inserer_attribut{title,#TYPE_DOCUMENT[
     10                                - (#TAILLE|taille_en_octets)]}
     11                        )]}
     12                )]
     13                #GET{logo}
     14                [(#DATE|affdate_court)]
    3615        </div>
    37         <div>
    38                 <div style='float:#LANG_RIGHT;width:10px;'>
    39                 <input type="checkbox" name="supprimer[]" value="#ID_DOCUMENT" title="<:formupload:doc_delete:>" />
     16        <div class='decrire_doc'>
     17                <div class='choix'>
     18                        <input type="checkbox" name="supprimer[]" id="surrpimer_[(#ID_DOCUMENT)]_#ENV{objet}_#ENV{id_objet}" class="checkbox" value="#ID_DOCUMENT" title="<:formupload:doc_delete:>" />
     19                        <label for="surrpimer_[(#ID_DOCUMENT)]_#ENV{objet}_#ENV{id_objet}"><:formupload:remove:></label>
    4020                </div>
    41        
    42         <h4 class="#EDIT{titre}">[(#TITRE|sinon{[(#FICHIER|basename|couper{20})]})]</h4>
    43         [<div class="spip_doc_descriptif #EDIT{descriptif}">(#DESCRIPTIF|sinon{<:info_descriptif:>})</div>]
    44        
     21                <h4 class="#EDIT{titre}">[(#TITRE|sinon{[(#FICHIER|basename|couper{20})]})]</h4>
     22                [<div class="spip_doc_descriptif #EDIT{descriptif}">(#DESCRIPTIF|sinon{<:info_descriptif:>})</div>]
    4523        </div>
    4624        <br class='nettoyeur' />
    4725        <div class="insert_code">
    48                 <strong><:formupload:insert_code:></strong><br />
     26                <strong><:formupload:insert_code:></strong>
    4927                [(#TYPE_DOCUMENT|match{jpg|gif|png}|?{' ',''})
    5028                <abbr title="<:formupload:img_left:>">&lt;img#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:img_center:>">&lt;img#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:img_right:>">&lt;img#ID_DOCUMENT|right&gt;]
     
    5230                <abbr title="<:formupload:doc_left:>">&lt;doc#ID_DOCUMENT|left&gt;</abbr> <abbr title="<:formupload:doc_center:>">&lt;doc#ID_DOCUMENT|center&gt;</abbr> <abbr title="<:formupload:doc_right:>">&lt;doc#ID_DOCUMENT|right&gt;</abbr>]
    5331        </div>
    54         </div>
    55         </BOUCLE_docs>
    56                 [<p class="pagination">(#PAGINATION)</p>]
    57         </B_docs>
    58                 [<p class="pagination">(#PAGINATION)</p>]
    59         <//B_docs>
    60 
    61         [(#REM) Piege a robots spammeurs ]
    62         <p style='display:none;'><label for="nobot"><:antispam_champ_vide:></label>
    63         <input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
    64 
    65         <div style="margin-top:5px; padding:5px; border-top: dotted gray 1px;">
    66                 <label for="fichier"><:formupload:choosefiles:>
    67                 <input type="file" name="fichier" class="forml"[ accept="(#CONFIG{formupload/files_accepted})"][ maxlength="(#CONFIG{formupload/files_number})"] />
    68                 </label>
    69         </div>
    70 
    71         <p class="spip_bouton"><input type="submit" value="<:bouton_enregistrer:>" /></p>
    72 
    73         </fieldset>
    74         <br style="clear:both;" />
    75 
    76 
    7732</div>
    78 </form>
    79 
    80 </div>
    81 <br style="clear:both" />
     33</BOUCLE_docs>
     34[<p class="pagination">(#PAGINATION)</p>]
     35</B_docs>
     36[<p class="pagination">(#PAGINATION)</p>]
     37<//B_docs>
  • _plugins_/annotations/javascript/jquery.annotations.js

    r17583 r32405  
    127127                        var posLeft = coord.xy[0]+imageOffset.left-hotSpot[0]+"px";
    128128                        var posTop = coord.xy[1]+imageOffset.top-hotSpot[1]+"px";
    129                         marker.css({zIndex:$.carto.overlay[index].zindex,position:"absolute",left:posLeft,top:posTop}).
    130                         appendTo(container).ifixpng();
     129                        marker.css({zIndex:$.carto.overlay[index].zindex,position:"absolute",left:posLeft,top:posTop}).appendTo(container);
    131130                        var overlay = $("<img class='map_marker_overlay anno_instance"+this.instance+"' src='"+this.cfg.emptyImage+"' width='"+marker.width()+"' height='"+marker.height()+"' />").
    132131                        css({zIndex:1000+$.carto.overlay[index].zindex,position:"absolute",left:posLeft,top:posTop}).
Note: See TracChangeset for help on using the changeset viewer.