Nouveau : au lieu de les ignorer, on affiche desormais avec un fond gris // les documents et images inclus dans le texte. // http://doc.spip.org/@inc_documenter_dist function inc_documenter_dist( $doc, # tableau des documents ou numero de l'objet attachant $type = "article", # article ou rubrique ? $ancre = 'portfolio', # album d'images ou de documents ? $ignore_flag = false, # IGNORE, remplace par autoriser(modifier,document) $couleur='', # IGNORE couleur des cases du tableau $appelant ='' # pour le rappel (cf plugin) ) { if (is_numeric($doc)) { $prim = 'id_' . $type; $img = ($ancre == 'portfolio') ? '' : " NOT"; $select = "D.id_document, D.id_vignette, D.extension, D.titre, D.date, D.descriptif, D.fichier, D.taille, D.largeur, D.hauteur, D.mode, D.distant, L.vu, L.id_objet, L.id_objet as $prim"; $from = "spip_documents AS D LEFT JOIN spip_documents_liens AS L ON L.id_document=D.id_document"; $where = "L.id_objet=$doc AND L.objet='$type' AND D.mode='document' AND D.extension $img IN ('gif', 'jpg', 'png')"; $order = "0+D.titre, D.date"; $docs = sql_allfetsel($select, $from, $where, '', $order); $opt = array('objet'=>$type, 'id_objet' => $doc); } else { $docs = $doc; $opt = array(); } if (!$docs) return ''; // On passe &$tous dans la boucle pour verifier si on a bien // le droit de supprimer tous les documents $tous = (count($docs) > 3); $s = ($ancre =='documents' ? '': '-'); if (preg_match('/_edit$/', _request('script'))) { $res = " "; } else { $res = documenter_boucle($docs, $type, $ancre, $tous, $appelant, $opt); if (is_int($doc)) $res = documenter_bloc($doc, $res, $s, $appelant, $ancre, $tous, $type); } return ajax_action_greffe("documenter", "$s$doc", $res); } // http://doc.spip.org/@documenter_bloc function documenter_bloc($id, $res, $s, $script, $ancre, $tous, $type) { // seulement s'il y a au moins un document dedans if (!$res) return ""; if ($tous) { $tous = "
" . ajax_action_auteur('documenter', "$s$id/$type", $appelant ? $appelant : _request('exec'), "id_$type=$id&s=$s&type=$type",array(_T('lien_tout_supprimer'))) . "
\n"; } else $tous = ''; $bouton = bouton_block_depliable(majuscules(_T("info_$ancre")),true,"portfolio_$ancre"); return debut_cadre("$ancre","","",$bouton) . debut_block_depliable(true,"portfolio_$ancre") . $tous . $res . fin_block() . fin_cadre(); } // http://doc.spip.org/@documenter_boucle function documenter_boucle($documents, $type, $ancre, &$tous_autorises, $appelant, $opt=array()) { // la derniere case d'une rangee $bord_droit = ($ancre == 'portfolio' ? 2 : 1); $case = 0; $res = ''; $tourner = charger_fonction('tourner', 'inc'); $legender = charger_fonction('legender', 'inc'); // Pour les doublons d'article et en mode ajax, il faut faire propre() /*if ($type=='article' AND !isset($GLOBALS['doublons_documents_inclus']) AND is_int($doc)) { $r = sql_fetsel("chapo,texte", "spip_articles", "id_article=".sql_quote($doc)); propre(join(" ",$r)); }*/ $show_docs = explode(',', _request('show_docs')); foreach ($documents as $document) { $id_document = $document['id_document']; // $opt : options pour l'autorisation (type d'objet parent, et id de l'objet parent) if (!autoriser('voir', 'document', $id_document, null, $opt)) continue; if (isset($document['script'])) $script = $document['script']; # pour plugin Cedric else // ref a $exec inutilise en standard $script = $appelant ? $appelant : $GLOBALS['exec']; if (!$case) $res .= ""; $flag = autoriser('modifier', 'document', $id_document); $tous_autorises &= $flag; $vu = ($document['vu']=='oui') ? ' vu':''; $vue_document = $tourner($id_document, $document, $script, $flag, $type); $editer_document = (!$flag ? '' : $legender($id_document, $document, $script, $type, $document["id_$type"], $ancre, in_array($id_document, $show_docs))) . (!isset($document['info']) ? '' : ("
".$document['info']."
")); // Prevoir le passage de la vue et de l'edition sous forme de squelettes separes // Ces pipelines seront alors inutiles, car integres dans l'appel des squelettes $vue_document = pipeline('afficher_contenu_objet', array( 'args' => array( 'type'=> 'case_document', 'id'=>$id_document ), 'data'=> $vue_document ) ); $editer_document = pipeline('editer_contenu_objet', array( 'args' => array( 'type'=> 'case_document', 'id'=>$id_document ), 'data'=> $editer_document ) ); $res .= "\n" . $vue_document . $editer_document . "\n"; $case++; if ($case > $bord_droit) { $case = 0; $res .= "\n"; } } // fermer la derniere ligne if ($case) { $res .= ""; $res .= ""; } // pas de contenu, pas de tableau if (!$res) return ""; return "\n" . $res . "
"; } ?>