source: spip-zone/_plugins_/mots_partout/2.0/inc/legender.php @ 32257

Last change on this file since 32257 was 32257, checked in by zeraxp@…, 11 years ago
  • fermeture de fichiers enlevees ... certaines posaient problèmes
  • probleme lors du test de l'installation : c'etait fait sur une version precedente : du coup l'install ne se finissait jamais: cette partie est a ameliorer pour intégrer les differentes evolutions du plugins
File size: 13.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2009                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('inc/actions'); // *action_auteur et determine_upload
16include_spip('inc/presentation');
17include_spip('inc/documents');
18include_spip('inc/date');
19
20// Formulaire de description d'un document (titre, date etc)
21// En mode Ajax pour eviter de recharger toute la page ou il se trouve
22// (surtout si c'est un portfolio)
23
24// http://doc.spip.org/@inc_legender_dist
25function inc_legender_dist($id_document, $document, $script, $type, $id, $ancre, $deplier=false) {
26
27        // premier appel
28        if ($document) {
29                $flag = $deplier;
30        } elseif (!$id_document) {
31                return '';
32        } else {
33        // retour d'Ajax
34
35                $document = sql_fetsel("*", "spip_documents", "id_document = " . intval($id_document));
36
37                $document['vu'] = sql_getfetsel("vu", 'spip_documents_liens', "id_objet=" . intval($id) ." AND objet=" . sql_quote($type) . " AND id_document=".intval($id_document));
38
39                if (!$document['vu']) $document['vu'] = 'non';
40                $flag = 'ajax';
41        }
42
43        if ($document['mode'] == 'image') {
44                $supp = 'image-24.gif';
45                $label = _T('entree_titre_image');
46                $taille = $vignette = '';
47
48        } else {
49                $supp = 'doc-24.gif';
50                $label = _T('entree_titre_document');
51                $taille = formulaire_taille($document);
52                $vignette = "<div style='margin-bottom: 10px;'>".vignette_formulaire_legender($id_document, $document, $script, $type, $id, $ancre)."</div>";
53        }
54
55        $s = ($ancre =='documents' ? '': '-');
56
57        $corps = legender_corps($ancre, $flag, $id, $id_document, $script, $type, $document, $label, $taille) .
58                $vignette .
59                "\n\n" .
60                legender_suppression($id, $id_document, $ancre, $s, $script, $supp, $type);
61
62        // ne pas afficher le bouton de changement dans le portfolio ?
63        // mais tout cela n'est pas tr�s extensible et declenchera d'autres bugs plus tard...
64        if (preg_match(",_edit,",$script))
65                $corps .= legender_image_doc($document, $id_document, $id, $type, $s, $script, $ancre);
66
67        $corps = block_parfois_visible("legender-aff-$id_document", legender_entete($document), $corps, "text-align:center;", $flag);
68        //seul ajout de mots partout
69        $editer_mot = charger_fonction('editer_mots', 'inc');
70        $corps.= $editer_mot('document', $id_document, "", "", true,'oui');
71        //
72
73        return ajax_action_greffe("legender", $id_document, $corps);
74}
75
76
77function legender_entete($document)
78{
79        $titre = $document['titre'];
80        $entete = basename($document['fichier']);
81        if (($n=strlen($entete)) > 20)
82                $entete = substr($entete, 0, 7)."...".substr($entete, $n-7, $n);
83        if (strlen($titre))
84                $entete = "<strong>". lignes_longues(typo($titre),25) . "</strong>";
85        return sinon($entete,_T('info_sans_titre'));
86}
87
88function legender_suppression($id, $id_document, $ancre, $s, $script, $supp, $type)
89{
90        // le cas $id<0 correspond a un doc charge dans un article pas encore cree,
91        // et ca buggue si on propose de supprimer => on ne propose pas
92        // Le cas id = 0 correspond au cas d'une mediatheque : l'action est alors
93        // sans doute a revoir car le document serait alors peut-etre orphelin
94
95        if ($id <= 0) return '';
96
97        // la fonction 'supprimer_document' ne fait que de-associer si un document est utilise par ailleurs
98        $texte = _T('icone_supprimer_document');
99
100        if (preg_match('/_edit$/', $script)) {
101                $action = ajax_action_auteur('documenter', "$s$id/$type/$id_document", $script, "id_$type=$id&type=$type&s=$s#$ancre", array($texte), '', 'function() {jQuery(this).remove()}');
102        } else {
103                if (test_espace_prive())
104                        $action = ajax_action_auteur('documenter', "$s$id/$type/$id_document", $script, "id_$type=$id&type=$type&s=$s#$ancre", array($texte));
105                else{
106                        $redirect = str_replace('&amp;','&',$script);
107                        $action = generer_action_auteur('documenter', "$s$id/$type/$id_document", $redirect);
108                        $action = "<a href='$action'>$texte</a>";
109                }
110        }
111
112        return icone_horizontale($texte, $action, $supp, "supprimer.gif", false);
113}
114
115
116function legender_corps($ancre, $flag, $id, $id_document, $script, $type, $document, $label, $taille)
117{
118        include_spip('inc/editer');
119
120        $contenu = '';
121        $descriptif = $document['descriptif'];
122        if ($descriptif)
123          $contenu .=  "<p>".PtoBR(lignes_longues(propre($descriptif),25)) . "</p>\n";
124        if ($document['largeur'] OR $document['hauteur'])
125          $contenu .= _T('info_largeur_vignette',
126                     array('largeur_vignette' => $document['largeur'],
127                           'hauteur_vignette' => $document['hauteur']))
128                         . ' &mdash; ';
129
130          $contenu .= taille_en_octets($document['taille']);
131
132        $date = $document['date'];
133        if ($date AND ($GLOBALS['meta']["documents_date"] == 'oui'))
134                $contenu .= "<br />\n" . affdate($date);
135
136        $corps = (!$contenu ? '' :
137                  "<div class='verdana1' style='text-align: center; margin-bottom: 10px;'>$contenu</div>") .
138          "<div class='formulaire_spip formulaire_spip_compact'><ul><li class='editer_titre'><label for='titre_document$id_document'>$label</label>\n" .
139
140          "<input type='text' name='titre_document' id='titre_document$id_document' class='text' value=\"".entites_html($document['titre']).
141          "\" size='40' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" /></li>\n"
142          . (($GLOBALS['meta']["documents_date"] == 'oui')
143                ? "<li class='editer_date'>".date_formulaire_legender($date, $id_document)."</li>"
144                :'' )
145          . "<li class='editer_descriptif'><label for='descriptif_document$id_document'>".
146          _T('info_description_2').
147          "</label>\n" .
148          "<textarea name='descriptif_document' id='descriptif_document$id_document' rows='4' class='textarea' cols='*' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\">" .
149            entites_html($descriptif) .
150          "</textarea></li></ul></div>\n" .
151          $taille
152
153          .controles_md5($document);
154
155
156
157
158
159
160        $att_bouton = " class='fondo spip_xx-small'";
161
162        $att_span = " id='valider_doc$id_document' "
163        . ($flag == 'ajax' ? '' : "class='display_au_chargement'")
164        .  " style='text-align:"
165        .  $GLOBALS['spip_lang_right']
166        . ($flag == 'ajax' ? ';display:block' : "")
167        . "'";
168
169        if (test_espace_prive())
170                return ajax_action_post("legender", $id_document, $script, "show_docs=$id_document&id_$type=$id#legender-$id_document", $corps, _T('bouton_enregistrer'), $att_bouton, $att_span, "&id_document=$id_document&id=$id&type=$type&ancre=$ancre")
171                  . "<br class='nettoyeur' />";
172        else {
173                $corps = "<div class='boutons'>"
174                       . $corps
175                       . "<span"
176                       . $att_span
177                       . "><input type='submit' class='fondo' value='"
178                       . _T('bouton_enregistrer')
179                       ."' /></span></div>";
180                $redirect = parametre_url($script,'show_docs',$id_document,'&');
181                $redirect = parametre_url($redirect,"id_$type",$id,'&');
182                $redirect = parametre_url($redirect,"id_$type",$id,'&');
183                $redirect = ancre_url($redirect,"legender-$id_document");
184                return generer_action_auteur("legender", $id_document, $redirect, $corps, "\nmethod='post'");
185        }
186}
187
188//
189// Changement de mode image/document
190//
191function legender_image_doc($document, $id_document, $id, $type, $s, $script, $ancre)
192{
193        define('_INTERFACE_DOCUMENTS', true);
194        define('_BOUTON_MODE_IMAGE', true);
195        if (!_INTERFACE_DOCUMENTS) return '';
196        if (!_BOUTON_MODE_IMAGE
197        OR !in_array($document['extension'], array('jpg', 'gif', 'png')))
198                return '';
199        if ($document['mode'] == 'image') {
200                                $texte = _T('upload_info_mode_document');
201                                $mode = 'document';
202                                $logo = 'doc-24.gif';
203        } else {
204                                $texte = _T('upload_info_mode_image');
205                                $mode = 'image';
206                                $logo = 'image-24.gif';
207        }
208
209        $action = redirige_action_auteur('changer_mode_document', "$id_document/$mode", $script,
210                        (($id>0)
211                                ? "id_$type=$id"
212                                : "new=oui"
213                        ) . "&type=$type&s=$s#$ancre");
214
215        return icone_horizontale($texte, $action, $logo, '', false," onclick=\"jQuery('#document$id_document').parent().animeajax().load(this.href+'&afficher_case=$id-$type-$script&var_noajax=1');return false;\"");
216}
217
218
219// http://doc.spip.org/@vignette_formulaire_legender
220function vignette_formulaire_legender($id_document, $document, $script, $type, $id, $ancre)
221{
222        $id_vignette = $document['id_vignette'];
223        $texte = _T('info_supprimer_vignette');
224
225        $s = ($ancre =='documents' ? '': '-');
226        if (preg_match('/_edit$/', $script)) {
227                $iframe_redirect = generer_url_ecrire("documents_colonne","id=$id&type=$type",true);
228                $action = redirige_action_auteur('documenter', "$s$id/$type/$id_vignette", $script, "id_$type=$id&show_docs=$id_document#$ancre");
229        } else {
230                $iframe_redirect = generer_url_ecrire("documenter","id_$type=$id&type=$type",true);
231                $f = (!$s AND $id_vignette) ? "/$id_document" : '';
232                $action = ajax_action_auteur('documenter', "$s$id/$type/$id_vignette$f", $script, "id_$type=$id&type=$type&s=$s&show_docs=$id_document#$ancre", array($texte),'',"function(r,noeud) {noeud.innerHTML = r; \$('form.form_upload',noeud).async_upload(async_upload_portfolio_documents);}");
233        }
234
235        $joindre = charger_fonction('joindre', 'inc');
236
237        $supprimer = icone_horizontale($texte, $action, "vignette-24.png", "supprimer.gif", false);
238        if ($id<0) $supprimer = ''; // cf. ci-dessus, article pas encore cree
239
240
241        return "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: #eeeeee; background-color: white;' />"
242        . (!$id_vignette
243                ? $joindre(array(
244                        'script' => $script,
245                        'args' => "id_$type=$id",
246                        'id' => $id,
247                        'intitule' => _T('info_vignette_personnalisee'),
248                        'mode' => 'vignette',
249                        'type' => $type,
250                        'ancre' => $ancre,
251                        'id_document' => $id_document,
252                        'titre' => '',
253                        'iframe_script' => $iframe_redirect
254                        ))
255                : $supprimer
256        );
257}
258
259
260// Bloc d'edition de la taille du doc (pour embed)
261// http://doc.spip.org/@formulaire_taille
262function formulaire_taille($document) {
263
264        // (on ne le propose pas pour les images qu'on sait
265        // lire : gif jpg png), sauf bug, ou document distant
266        if (in_array($document['extension'], array('gif','jpg','png'))
267        AND $document['hauteur']
268        AND $document['largeur']
269        AND $document['distant']!='oui')
270                return '';
271        $id_document = $document['id_document'];
272
273        // Donnees sur le type de document
274        $extension = $document['extension'];
275        $t = sql_fetsel('inclus','spip_types_documents', "extension=".sql_quote($extension));
276        $type_inclus = $t['inclus'];
277
278        # TODO -- pour le MP3 "l x h pixels" ne va pas
279        if (($type_inclus == "embed" OR $type_inclus == "image")
280        AND (
281                // documents dont la taille est definie
282                ($document['largeur'] * $document['hauteur'])
283                // ou distants
284                OR $document['distant'] == 'oui'
285                // ou tous les formats qui s'affichent en embed
286                OR $type_inclus == "embed"
287        )) {
288                return "\n<br /><label for='largeur_document$id_document'>"._T('entree_dimensions')."</label><br />\n" .
289                  "<input type='text' name='largeur_document' id='largeur_document$id_document' class='fondl spip_xx-small' value=\"".$document['largeur']."\" size='5' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" />" .
290                  " &times; <input type='text' name='hauteur_document' id='hauteur_document$id_document' class='fondl spip_xx-small' value=\"".$document['hauteur']."\" size='5' onfocus=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\" /> "._T('info_pixels');
291        }
292}
293
294// http://doc.spip.org/@date_formulaire_legender
295function date_formulaire_legender($date, $id_document) {
296
297        if (preg_match(",([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}),", $date, $regs)){
298                $mois = $regs[2];
299                $jour = $regs[3];
300                $annee = $regs[1];
301                $heure = $regs[4];
302                $minute = $regs[5];
303        }
304
305        return  "<div>"._T('info_mise_en_ligne')."<br />\n" .
306                afficher_jour($jour, "name='jour_doc' id='jour_doc$id_document' size='1' class='fondl spip_xx-small'\n\tonchange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
307                afficher_mois($mois, "name='mois_doc' id='mois_doc$id_document' size='1' class='fondl spip_xx-small'\n\tonchange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block');\"") .
308                afficher_annee($annee, "name='annee_doc' id='annee_doc$id_document' size='1' class='fondl spip_xx-small'\n\tonchange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\"") .
309                "<br />".
310                afficher_heure($heure, "name='heure_doc' size='1' class='fondl spip_xx-small'\n\tonchange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\"") .
311                        " : ".
312                afficher_minute($minute, "name='minute_doc' size='1' class='fondl spip_xx-small'\n\tonchange=\"changeVisible(true, 'valider_doc$id_document', 'block', 'block')\"") .
313                "<br /><br /></div>\n";
314
315}
316
Note: See TracBrowser for help on using the repository browser.