function couteau_suisse_install($action){ //echo "<br>INSTALL : $action"; static $ok = 0; if(defined('_LOG_CS')) cs_log("couteau_suisse_install($action)"); include_spip('inc/meta'); include_spip('inc/plugin'); $t = plugin_get_infos('couteau_suisse'); switch ($action){ case 'test': // affichage d'un lien ici, puisque le pipeline 'affiche_gauche' n'est pas pris en compte dans 'admin_plugin'... if(!$ok && _request('exec') == 'admin_plugin') { if(!defined('_SPIP19300')) echo '<br />'; include_spip('inc/presentation'); echo debut_cadre_enfonce('', true), icone_horizontale(_T('couteau:titre'), generer_url_ecrire('admin_couteau_suisse'), find_in_path('img/couteau-24.gif'), '', false), fin_cadre_enfonce(true); $ok++; } return isset($GLOBALS['meta']['couteau_suisse_base_version']) AND ($GLOBALS['meta']['couteau_suisse_base_version']>=$t['version_base']) AND isset($GLOBALS['meta']['tweaks_actifs']); break; case 'install': couteau_suisse_upgrade('couteau_suisse_base_version',$t['version_base']); break; case 'uninstall': couteau_suisse_vider_tables('couteau_suisse_base_version'); break; } }
function exec_acces_restreint(){ if (!autoriser('administrer','zone',0)) { include_spip('inc/minipres'); echo minipres(); exit; } $commencer_page = charger_fonction('commencer_page','inc'); echo $commencer_page(_T('accesrestreint:page_zones_acces')); echo gros_titre(_T('accesrestreint:titre_zones_acces'),'',false); echo debut_gauche("acces_restreint",true); echo debut_boite_info(true); echo propre(_T('accesrestreint:info_page')); echo fin_boite_info(true); if (autoriser('webmestre')) { $res = icone_horizontale(_L('Configuration des accès .htaccess'), generer_url_ecrire("acces_restreint_config"), "../"._DIR_PLUGIN_ACCESRESTREINT."/img_pack/zones-acces-24.gif", "cadenas-24.gif",false); echo bloc_des_raccourcis($res); } echo debut_droite("acces_restreint",true); echo recuperer_fond('prive/acces_restreint',$_GET); if (autoriser('modifier','zone')) echo "<div>".icone_inline(_T('accesrestreint:creer_zone'), generer_url_ecrire("zones_edit","new=oui"), _DIR_PLUGIN_ACCESRESTREINT."/img_pack/zones-acces-24.gif", "creer.gif",'right')."</div>"; echo fin_gauche(),fin_page(); }
function exec_articles_page_dist() { global $connect_statut, $connect_id_auteur; pipeline('exec_init',array('args'=>array('exec'=>'articles_page'),'data'=>'')); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_articles_page'), "naviguer", "articles"); echo debut_gauche('', true); // // Afficher le bouton de creation d'article // echo pipeline('affiche_gauche',array('args'=>array('exec'=>'articles_page'),'data'=>'')); if (sql_countsel('spip_rubriques')) { echo bloc_des_raccourcis(icone_horizontale(_T('icone_ecrire_article'), generer_url_ecrire("articles_edit","new=oui"), "article-24.gif", "creer.gif", false)); } else { if (autoriser('creerrubriquedans', 'rubrique')) { echo _T('texte_creer_rubrique'); echo bloc_des_raccourcis(icone_horizontale (_T('icone_creer_rubrique'), generer_url_ecrire("rubriques_edit","new=oui&retour=nav"), "rubrique-24.gif", "creer.gif",false)); } } echo creer_colonne_droite('', true); echo pipeline('affiche_droite',array('args'=>array('exec'=>'articles_page'),'data'=>'')); echo debut_droite('', true); // // Vos articles en cours de redaction // echo afficher_objets('article',_T('info_en_cours_validation'), array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='prepa'", 'ORDER BY' => "articles.date DESC")); // // Vos articles soumis au vote // echo afficher_objets('article',_T('info_attente_validation'), array('FROM' => "spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='prop'", "ORDER BY" => "articles.date")); // // Vos articles publies // echo afficher_objets('article',_T('info_publies'), array("FROM" =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='publie'", 'ORDER BY' => "articles.date DESC")); // // Vos articles refuses // echo afficher_objets('article',_T('info_refuses'), array('FROM' =>"spip_articles AS articles, spip_auteurs_articles AS lien ", "WHERE" => "articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='refuse'", 'ORDER BY' => "articles.date DESC")); echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles_page'),'data'=>'')); echo fin_gauche(), fin_page(); }
function odt2spip_affiche_droite($flux){ $id_rubrique = $flux['args']['id_rubrique']; if ($flux['args']['exec']=='naviguer' AND $id_rubrique > 0) { $icone = icone_horizontale(_T("odtspip:importer_fichier"), "#", "", _DIR_PLUGIN_ODT2SPIP."images/odt-24.png", false, "onclick='$(\"#boite_odt2spip\").slideToggle(\"fast\");return false;'"); $out = recuperer_fond('formulaires/odt2spip',array('id_rubrique'=>$id_rubrique,'icone'=>$icone)); $flux['data'].= $out; } return $flux; }
/** * Ajoute dans le bloc d'info d'un objet un bouton permettant d'aller voir * l'historique de ses révisions * * @param array $flux Données du pipeline * @return array $flux Données du pipeline */ function revisions_boite_infos($flux) { $type = $flux['args']['type']; if ($id = intval($flux['args']['id']) and $tables = unserialize($GLOBALS['meta']['objets_versions']) and in_array(table_objet_sql($type), $tables) and autoriser('voirrevisions', $type, $id) and sql_countsel('spip_versions', 'id_objet=' . intval($id) . ' AND objet = ' . sql_quote($type)) > 1) { include_spip('inc/presentation'); $flux['data'] .= icone_horizontale(_T('revisions:info_historique_lien'), generer_url_ecrire('revision', "id_objet={$id}&objet={$type}"), "revision-24.png"); } return $flux; }
function pdf2swf_affiche_droite($flux){ $id_article = $flux['args']['id_article']; if ($flux['args']['exec']=='articles' AND $id_article > 0) { $icone = icone_horizontale(_T("pdfswf:importer_fichier"), "#", "", _DIR_PLUGIN_PDF2SWF."images/pdf2swf-24.png", false, "onclick='$(\"#boite_pdf2swf\").slideToggle(\"fast\");return false;'"); $out = recuperer_fond('formulaires/pdf2swf',array('id_article'=>$id_article,'icone'=>$icone)); $flux['data'].= $out; } return $flux; }
/** * Rajoute à gauche de la page d'admin des plugins un lien vers * la page de CFG * * @param Array $flux * @return Array */ function cfg_affiche_gauche($flux){ if ($flux['args']['exec']=='admin_plugin'){ $flux['data'] = debut_cadre_enfonce('',true) . icone_horizontale('CFG – '._T('configuration'), generer_url_ecrire('cfg'), _DIR_PLUGIN_CFG.'cfg-22.png', '', false) . fin_cadre_enfonce(true) . $flux['data']; } return $flux; }
function exec_acces_restreint_config(){ if (!autoriser('webmestre')) { include_spip('inc/minipres'); echo minipres(); exit; } include_spip('inc/config'); inc_config_dist(); if (_request('changer_config') == 'oui') accesrestreint_appliquer_modifs_config(); pipeline('exec_init',array('args'=>array('exec'=>'acces_restreint_config'),'data'=>'')); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_config'), "configuration", "configuration"); echo gros_titre(_T('titre_config_fonctions'),'',false); echo debut_gauche('',true); echo pipeline('affiche_gauche',array('args'=>array('exec'=>'acces_restreint_config'),'data'=>'')); echo creer_colonne_droite('',true); echo pipeline('affiche_droite',array('args'=>array('exec'=>'acces_restreint_config'),'data'=>'')); //Raccourcis $res = icone_horizontale(_T('accesrestreint:voir_toutes'), generer_url_ecrire("acces_restreint",''), "../"._DIR_PLUGIN_ACCESRESTREINT."/img_pack/zones-acces-24.gif", 'rien.gif',false); echo bloc_des_raccourcis($res); echo debut_droite('',true); lire_metas(); $action = generer_url_ecrire('acces_restreint_config'); echo "<form action='$action' method='post'><div>", form_hidden($action); echo "<input type='hidden' name='changer_config' value='oui' />"; accesrestreint_htaccess_config(); accesrestreint_htpasswd_config(); echo '</div></form>'; echo pipeline('affiche_milieu',array('args'=>array('exec'=>'acces_restreint_config'),'data'=>'')); echo fin_gauche(), fin_page(); }
function spiplistes_naviguer_paniers ($titre, $sql_from, $les_statuts, $script_exec) { $result = ""; $current_statut = _request('statut'); $sql_result = sql_select("statut,COUNT(id_liste) AS n", $sql_from, "", "statut"); if(sql_count($sql_result)) { $les_statuts = array_fill_keys(explode(";", $les_statuts), 0); while($row = sql_fetch($sql_result)) { $key = $row['statut']; if(array_key_exists($key, $les_statuts)) { $les_statuts[$key] = $row['n']; } } foreach($les_statuts as $statut=>$value) { if($value && ($current_statut != $statut)) { $result .= "" . "<li id='menu-navig-".$statut."'>" . icone_horizontale( spiplistes_items_get_item('nav_t', $statut).($value ? " <em>($value)</em>" : "") , generer_url_ecrire($script_exec, "statut=$statut") , spiplistes_items_get_item('icon', $statut) ,"" ,false ) . "</li>" ; } } } if(!empty($result)) { if(!empty($titre)) { $titre .= ":"; } $result = "" . spiplistes_debut_raccourcis($titre, false, true) . "<ul class='verdana2 panier'>" . $result . "</ul>\n" . spiplistes_fin_raccourcis(true) ; } return($result); }
function inc_regler_moderation_dist($id_article, $script, $args) { include_spip('inc/presentation'); global $spip_lang_right; $statut_forum = get_forums_publics($id_article); $choix_forum = $GLOBALS['liste_des_forums']; $opt = ''; foreach ($choix_forum as $desc => $val) { $opt .= "\n\t<option"; if ($statut_forum == $val) $opt .= " selected='selected'"; $opt .= " value='$val'>"._T($desc)."</option>"; } $nb_forums = sql_countsel("spip_forum", "id_article=$id_article AND statut IN ('publie', 'off', 'prop', 'spam')"); if ($nb_forums) { $res = '<!-- visible -->' // message pour l'appelant . icone_horizontale( _T('icone_suivi_forum', array('nb_forums' => $nb_forums)), generer_url_ecrire("articles_forum","id_article=$id_article"), "suivi-forum-24.gif", "", false ); } elseif ($statut_forum != 'non') $res = bouton_spip_rss('forums_public', array("id_article" => $id_article)); $res .= "\n\t<label for='change_accepter_forum'>" . _T('info_fonctionnement_forum') ."</label>" . "\n\t<select name='change_accepter_forum' id='change_accepter_forum' class='spip_xx-small' onchange=\"findObj_forcer('valider_regler_moderation_$id_article').style.visibility='visible';\" >" . $opt ."\n\t</select><br />\n"; $atts = " style='float: $spip_lang_right' id='valider_regler_moderation_$id_article' class='visible_au_chargement'"; $res = ajax_action_post('regler_moderation', $id_article, $script, $args, $res,_T('bouton_changer'), $atts); return ajax_action_greffe("regler_moderation", $id_article, $res); }
function forum_affiche($debut, $admin=false) { pipeline('exec_init',array('args'=>array('exec'=>'forum'),'data'=>'')); $commencer_page = charger_fonction('commencer_page', 'inc'); if ($admin) { echo $commencer_page(_T('titre_page_forum'), "forum", "privadm"); $statutforum = 'privadm'; $script = 'forum_admin'; $meta = 'forum_prive_admin'; $titre = gros_titre(_T('titre_cadre_forum_administrateur'),'', false); } else { echo $commencer_page(_T('titre_forum'), "forum", "forum-interne"); $statutforum = 'privrac'; $script = 'forum'; $meta = 'forum_prive'; $titre = gros_titre(_T('titre_cadre_forum_interne'),'', false); } echo debut_gauche('', true); echo pipeline('affiche_gauche',array('args'=>array('exec'=>'forum'),'data'=>'')); echo creer_colonne_droite('', true); if ($admin) echo icone_horizontale(_T('titre_cadre_forum_interne'), generer_url_ecrire("forum",""), "forum-interne-24.gif","rien.gif", false); else if (!$admin AND $GLOBALS['meta']['forum_prive_admin'] == 'oui' AND autoriser('forum_admin')) echo icone_horizontale(_T('titre_cadre_forum_administrateur'), generer_url_ecrire("forum_admin",""), "forum-admin-24.gif","rien.gif", false); echo pipeline('affiche_droite',array('args'=>array('exec'=>'forum'),'data'=>'')); echo debut_droite('', true), $titre; echo pipeline('affiche_milieu',array('args'=>array('exec'=>'forum'),'data'=>'')); if ($GLOBALS['meta'][$meta] != 'non') { $discuter = charger_fonction('discuter', 'inc'); echo $discuter(0, $script, '', $statutforum, $debut); } echo fin_gauche(), fin_page(); }
function previsu_redac_boite_infos(&$flux){ if ($flux['args']['type']=='article' AND $id_article=intval($flux['args']['id']) AND $statut = $flux['args']['row']['statut'] AND $statut == 'prepa' AND autoriser('previsualiser')){ $message = _T('previsualiser'); $h = generer_url_action('redirect', "type=article&id=$id_article&var_mode=preview"); $previsu = //icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left']) icone_horizontale($message, $h, "racine-24.gif", "rien.gif",false); if ($p = strpos($flux['data'],'</ul>')){ while($q = strpos($flux['data'],'</ul>',$p+5)) $p=$q; $flux['data'] = substr($flux['data'],0,$p+5).$previsu.substr($flux['data'],$p+5); } else $flux['data'].= $previsu; } return $flux; }
function exec_agenda_inscriptions_dist() { $id_evenement = intval(_request('id_evenement')); $evenement = sql_fetsel(array('titre','date_debut'), 'spip_evenements', array("id_evenement=$id_evenement","inscription=1")); // recupere les infos de l'evenement $format = _request('format'); if ($GLOBALS['auteur_session']['statut'] != '0minirezo') { include_spip('inc/minipres'); echo minipres(_T('info_acces_refuse')); } elseif ($evenement === false) { include_spip('inc/minipres'); echo minipres(_T('agenda:aucun_evenement')); } else { $retirer_auteur = intval(_request('retirer_auteur')); if ($retirer_auteur) { sql_delete('spip_evenements_participants', "id_auteur=$retirer_auteur AND id_evenement=$id_evenement"); } if ($format == 'csv') { if (_request('mode') == 'inline') { // passer &mode=inline pour voir le fichier au lieu de le télécharger header("Content-type: text/plain; charset=".$GLOBALS['meta']['charset']); } else { header('Content-Disposition: attachment; filename="'._T('agenda:liste_inscrits').' - '.addslashes($evenement['titre']).'.csv"'); // nom du fichier = Inscriptons #TITRE au #AUJOURDHUI if ($GLOBALS['meta']['charset']) header("Content-type: text/csv; charset=".$GLOBALS['meta']['charset']); else header("Content-type: text/csv"); } // liste des champs à inclure dans le CSV $champs = array( 'nom' => 'Nom', 'login' => 'Identifiant', 'email' => 'Email', 'date' => 'Date d\'inscription', 'reponse' => 'Réponse', ); $res = sql_allfetsel(array_keys($champs), 'spip_evenements_participants INNER JOIN spip_auteurs USING (id_auteur)', array("id_evenement=$id_evenement", "reponse = 'oui' OR reponse = '?'"), "date ASC"); $csv = ''; // ligne d'en-tete foreach($champs as $champ => $legende) { $csv .= '"'.str_replace('"','""', $legende).'",'; } $csv = substr($csv, 0, -1); // on supprime la derniere virgule foreach($res as $row) { $csv .= "\r\n"; foreach($champs as $champ => $legende) { if (isset($row[$champ])) { if ($champ == 'date') $row[$champ] = affdate($row[$champ], 'd/m/Y H:i:s'); $csv .= '"'.str_replace('"','""', $row[$champ]).'"'; } $csv .= ','; } $csv = substr($csv, 0, -1); // on supprime la derniere virgule } echo $csv; } else { $inscrits = sql_allfetsel(array('nom', 'reponse', 'id_auteur', 'date'), 'spip_evenements_participants INNER JOIN spip_auteurs USING (id_auteur)', array("id_evenement=$id_evenement"), "date ASC"); pipeline('exec_init',array('args'=>array('exec'=>'agenda_inscriptions', 'id_evenement'=>$id_evenement),'data'=>'')); $titre = $evenement['titre'].' ('.affdate($evenement['date_debut']).') - '._T('agenda:liste_inscrits'); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre, "auteurs","redacteurs"); echo pipeline('affiche_milieu',array('args'=>array('exec'=>'agenda_inscriptions', 'id_evenement'=>$id_evenement),'data'=>'')); echo debut_gauche('', true); echo pipeline('affiche_gauche',array('args'=>array('exec'=>'agenda_inscriptions', 'id_evenement'=>$id_evenement),'data'=>'')); echo bloc_des_raccourcis( icone_horizontale (_T('agenda:telecharger').' (CSV)', generer_url_ecrire("agenda_inscriptions", "id_evenement=$id_evenement&format=csv"), "synchro-24.gif", "", false) ); echo creer_colonne_droite('', true); echo pipeline('affiche_droite',array('args'=>array('exec'=>'agenda_inscriptions', 'id_evenement'=>$id_evenement),'data'=>'')); echo debut_droite('', true), gros_titre($titre,'',false); echo debut_cadre('liste','auteur-24.gif','','','inscriptions'); echo "\n<br /><table class='arial2' cellpadding='2' cellspacing='0' style='width: 100%; border: 0px;'>\n"; echo "<tr class='titrem'><th style='width: 20px;'></th><th style='width: 20px;'></th><th>Nom</th><th>Date</th><th>Réponse</th><th></th></tr>"; $formater_auteur = charger_fonction('formater_auteur', 'inc'); foreach ($inscrits as $row) { list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']); echo "\n<tr class='tr_liste'>" . "\n<td>" . $s . "</td><td>" . $mail . "</td>" . "\n<td class='verdana1'>" . '<a href="'.generer_url_ecrire("auteur_infos","id_auteur=".$row['id_auteur']).'">' . $nom . '</a>' ."</td>" . "\n<td class='arial1'>" . affdate($row['date']).' '.affdate($row['date'], 'H:i') ."</td>" ."\n<td class='arial1'>" . $row['reponse'] . "</td><td class='arial1'>" . '<a class="arial1 editer_auteurs" href="'.generer_url_ecrire("agenda_inscriptions","id_evenement=$id_evenement&retirer_auteur=".$row['id_auteur']).'" onclick="return (confirm(\''.texte_script(_T('agenda:confirm_suppression_inscription')).'\'));">'._T('agenda:lien_desinscrire')." ". http_img_pack('croix-rouge.gif', "X", " class='puce' style='vertical-align: bottom;'").'</a>' . "</td></tr>\n"; } echo "</table>\n<br />"; echo fin_cadre(); echo fin_gauche(), fin_page(); } } }
function bouton_lien_statistiques($visites, $id) { if ($visites>0) return icone_horizontale(_T('icone_evolution_visites', array('visites' => $visites)), generer_url_ecrire("statistiques_visites","id_article=$id"), "statistiques-24.gif","rien.gif", false); }
function exec_mots_edit_args($id_mot, $id_groupe, $new, $table='', $table_id='', $titre='', $redirect='', $ajouter_id_article='') { global $spip_lang_right, $connect_statut, $les_notes; $autoriser_editer = $editer = false; if ($new=='oui') $autoriser_editer = true; if (($new=='oui') OR $autoriser_editer) $editer = true; $ok = false; $row = sql_fetsel("*", "spip_mots", "id_mot=$id_mot"); if ($row) { $id_mot = $row['id_mot']; $titre_mot = $row['titre']; $descriptif = $row['descriptif']; $texte = $row['texte']; $extra = $row['extra']; $id_groupe = $row['id_groupe']; $onfocus =''; $autoriser_editer = autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe)); if (!_request('edit')) $editer = false; else $editer = $autoriser_editer; $ok = true; } else { $row = sql_countsel('spip_groupes_mots', ($table ? "tables_liees REGEXP '(^|,)$table($|,)'" : '') //($table ? "$table='oui'" : '') ); if (!$new OR !autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe)) OR (!$row AND !$table)) { include_spip('inc/minipres'); echo minipres(_T('info_mot_sans_groupe')); } else { $id_mot = 0; $descriptif = $texte = ''; if (!$row) { // cas pathologique: // creation d'un mot sans groupe de mots cree auparavant // (ne devrait arriver qu'en cas d'appel explicite ou // destruction concomittante des groupes de mots idoines) if ($redirect) $redirect = '&redirect=' . $redirect; if ($titre) $titre = "&titre=".rawurlencode($titre); include_spip('inc/headers'); redirige_par_entete(redirige_action_auteur('instituer_groupe_mots', $table, 'mots_edit', "new=$new&table=$table&table_id=$table_id&ajouter_id_article=$ajouter_id_article$titre$redirect", true)); } $ok = true; } } if ($ok) { pipeline('exec_init',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>'')); $commencer_page = charger_fonction('commencer_page', 'inc'); $out = $commencer_page("« ".sinon($titre_mot,_T('texte_nouveau_mot'))." »", "naviguer", "mots") . debut_gauche('',true); ////////////////////////////////////////////////////// // Boite "voir en ligne" // if ($id_mot) { $out .= debut_boite_info(true); $out .= "\n<div style='font-weight: bold; text-align: center' class='verdana1 spip_xx-small'>" . _T('titre_gauche_mots_edit') . "<br /><span class='spip_xx-large'>" . $id_mot . '</span></div>'; $out .= voir_en_ligne ('mot', $id_mot, false, 'racine-24.gif', false, false); $out .= fin_boite_info(true); // Logos du mot-clef $flag_editable = autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe)); $iconifier = charger_fonction('iconifier', 'inc'); $out .= $iconifier('id_mot', $id_mot, 'mots_edit', false, $flag_editable); } else $flag_editable = false; // // Afficher les boutons de creation // $res =''; if ($id_groupe AND autoriser('modifier','groupemots',$id_groupe)) { $res = icone_horizontale(_T('icone_modif_groupe_mots'), generer_url_ecrire("mots_type","id_groupe=$id_groupe"), "groupe-mot-24.gif", "edit.gif", false) . icone_horizontale(_T('icone_creation_mots_cles'), generer_url_ecrire("mots_edit", "new=oui&id_groupe=$id_groupe&redirect=" . generer_url_retour('mots_tous')), "mot-cle-24.gif", "creer.gif", false); } $out .= pipeline('affiche_gauche',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>'')) . bloc_des_raccourcis($res . icone_horizontale(_T('icone_voir_tous_mots_cles'), generer_url_ecrire("mots_tous",""), "mot-cle-24.gif", "rien.gif", false)) . creer_colonne_droite('',true) . pipeline('affiche_droite',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>'')) . debut_droite('',true); // --- Voir le mot ---- $out .= debut_cadre_relief("mot-cle-24.gif",true,'','','mot-voir',$editer?'none':''); if ($flag_editable) $out .= icone_inline(_T('icone_modifier_mot'), generer_url_ecrire('mots_edit',"id_mot=$id_mot&edit=oui"), "mot-cle-24.gif", "rien.gif",$spip_lang_right,false," onclick=\"$('#mot-editer').show();$('#mot-voir').hide();return false;\""); $out .= gros_titre(sinon($titre_mot,_T('texte_nouveau_mot')),'',false); $out .= "<div class='nettoyeur'></div>"; $contenu_mot = ""; if ($descriptif) { $contenu_mot .= "<div style='border: 1px dashed #aaaaaa; ' class='verdana1 spip_small'>" . "<b>" . _T('info_descriptif') . "</b> " . propre($descriptif) . " " . "</div>"; } if (strlen($texte)>0){ $contenu_mot .= "<p class='verdana1 spip_small'>" . propre($texte) . "</p>"; } if ($les_notes) { $contenu_mot .= debut_cadre_relief('',true) . "<div dir='" . lang_dir() ."' class='arial11'>" . justifier("<b>"._T('info_notes')." :</b> ".$les_notes) . "</div>" . fin_cadre_relief(true); } $contexte = array('id'=>$id_mot); // permettre aux plugin de faire des modifs ou des ajouts $contenu_mot = pipeline('afficher_contenu_objet', array( 'args'=>array( 'type'=>'mot', 'id_objet'=>$id_mot, 'contexte'=>$contexte ), 'data'=> $contenu_mot ) ); $out .= $contenu_mot; if ($id_mot) { if ($connect_statut == "0minirezo") $aff_articles = "'prepa','prop','publie','refuse'"; else $aff_articles = "'prop','publie'"; $out .= afficher_objets('rubrique','<b>' . _T('info_rubriques_liees_mot') . '</b>', array("FROM" => 'spip_rubriques AS rubrique LEFT JOIN spip_mots_rubriques AS lien ON lien.id_rubrique=rubrique.id_rubrique', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "rubrique.titre")); $out .= afficher_objets('article',_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS articles LEFT JOIN spip_mots_articles AS lien ON lien.id_article=articles.id_article", 'WHERE' => "lien.id_mot=$id_mot AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC")); $out .= afficher_objets('breve','<b>' . _T('info_breves_liees_mot') . '</b>', array("FROM" => 'spip_breves AS breves LEFT JOIN spip_mots_breves AS lien ON lien.id_breve=breves.id_breve', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "breves.date_heure DESC")); $out .= afficher_objets('site','<b>' . _T('info_sites_lies_mot') . '</b>', array("FROM" => 'spip_syndic AS syndic LEFT JOIN spip_mots_syndic AS lien ON lien.id_syndic=syndic.id_syndic', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "syndic.nom_site DESC")); } $out .= pipeline('affiche_milieu',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>'')) . fin_cadre_relief(true); // --- Editer le mot ---- if ($autoriser_editer){ $out .= "<div id='mot-editer'".($editer?"":" class='none'").'>'; $contexte = array( 'icone_retour'=>icone_inline(_T('icone_retour'),($editer AND $redirect)?rawurldecode($redirect): generer_url_ecrire('mots_edit','id_mot='.$id_mot,false,true), "mot-cle-24.gif", "rien.gif",$GLOBALS['spip_lang_left'],false,($editer AND $redirect)?"":" onclick=\"$('#mot-editer').hide();$('#mot-voir').show();return false;\""), 'redirect'=>$redirect?rawurldecode($redirect):generer_url_ecrire('mots_edit','id_mot='.$id_mot,'&',true), 'titre'=>sinon($titre_mot,$titre), 'new'=>$new == "oui"?$new:$id_mot, 'id_groupe'=>$id_groupe, 'config_fonc'=>'mots_edit_config', 'ajouter_id_article' => $ajouter_id_article, 'table'=>$table, 'table_id'=>$table_id ); $out .= recuperer_fond("prive/editer/mot", $contexte); $out .= '</div>'; } echo $out, fin_gauche(), fin_page(); } }
function exec_statistiques_visites_args($id_article, $duree, $interval, $type, $limit,$serveur='') { $titre = $pourarticle = ""; if ($id_article){ $row = sql_fetsel("titre, visites, popularite", "spip_articles", "statut='publie' AND id_article=$id_article",'','','','',$serveur); if ($row) { $titre = typo($row['titre']); $total_absolu = $row['visites']; $val_popularite = round($row['popularite']); } } else { $row = sql_fetsel("SUM(visites) AS total_absolu", "spip_visites",'','','','','',$serveur); $total_absolu = $row ? $row['total_absolu'] : 0; $val_popularite = 0; } if ($titre) $pourarticle = " "._T('info_pour')." « $titre »"; if ($serveur) { if ($row = sql_fetsel('valeur','spip_meta',"nom='nom_site'",'','','','',$serveur)){ $titre = $row['valeur'].($titre?" / $titre":""); } } $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_statistiques_visites').$pourarticle, "statistiques_visites", "statistiques"); echo gros_titre(_T('titre_evolution_visite')."<html>".aide("confstat")."</html>",'', false); // barre_onglets("statistiques", "evolution"); if ($titre) echo gros_titre($titre,'', false); echo debut_gauche('', true); echo "<div class='cadre cadre-e' style='padding: 5px;'>"; echo "<div class='cadre_padding verdana1 spip_x-small'>"; echo typo(_T('info_afficher_visites')); echo "<ul>"; if ($id_article>0) { echo "<li><b><a href='" . generer_url_ecrire("statistiques_visites","") . "'>"._T('info_tout_site')."</a></b></li>"; } else { echo "<li><b>"._T('titre_page_articles_tous')."</b></li>"; } echo "</ul>"; echo "</div>"; echo "</div>"; $classement = array(); $liste = 0; echo aff_statistique_visites_popularite($serveur, $id_article, $classement, $liste); // Par visites depuis le debut $result = aff_statistique_visites_par_visites($serveur, $id_article, $classement); if ($result OR $id_article) echo creer_colonne_droite('', true); if ($id_article) { echo bloc_des_raccourcis(icone_horizontale(_T('icone_retour_article'), generer_url_ecrire("articles","id_article=$id_article"), "article-24.gif","rien.gif", false)); } echo $result; echo debut_droite('', true); if ($id_article) { $table = "spip_visites_articles"; $table_ref = "spip_referers_articles"; $where = "id_article=$id_article"; } else { $table = "spip_visites"; $table_ref = "spip_referers"; $where = ""; } $order = "date"; $where2 = $duree ? "$order > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL $duree $type)": ''; if ($where) $where2 = $where2 ? "$where2 AND $where" : $where; // sur certains SQL, la division produit un entier tronque a la valeur inferieure // on ne peut donc faire un CEIL, il faut faire un FLOOR $log = statistiques_collecte_date('visites', "(FLOOR((UNIX_TIMESTAMP($order)+$interval-1) / $interval) * $interval)", $table, $where2, $serveur); if ($log) $res = statistiques_tous($log, $id_article, $table, $where, $order, $serveur, $duree, $interval, $total_absolu, $val_popularite, $classement, $liste); $mois = statistiques_collecte_date("SUM(visites)", "DATE_FORMAT($order,'%Y%m')", $table, "$order > DATE_SUB(NOW(),INTERVAL 2700 DAY)" . ($where ? " AND $where" : ''), $serveur); if (count($mois)>1) { $res[] = "<br /><span class='verdana1 spip_small'><b>" . _T('info_visites_par_mois') . "</b></span>" . statistiques_par_mois($mois, ''); } echo cadre_stat($res, $table, $id_article); if ($id_article) { $signatures = charger_fonction('signatures', 'statistiques'); echo $signatures($duree, $interval, $type, $id_article, $serveur); /* Il faudra optimiser les requetes de ces stats c'est vraiment trop horrible : plusieurs secondes d'attente sur un site comme contrib. par ailleurs, l'affichage presente des defauts : cf http://trac.rezo.net/trac/spip/ticket/1598 $forums = charger_fonction('forums', 'statistiques'); echo $forums($duree, $interval, $type, $id_article, $serveur); */ } $referenceurs = charger_fonction('referenceurs', 'inc'); $res = $referenceurs($id_article, "visites", $table_ref, $where, '', $limit); if ($res) { // Le lien pour en afficher "plus" $args = ($id_article?"id_article=$id_article&" : '') . "limit=" . strval($limit+200); $n = count($res); $plus = generer_url_ecrire('statistiques_visites', $args); if ($plus) { $plus = "<div style='text-align:right;'><b><a href='$plus'>+++</a></b></div>"; } $titre = _T("onglet_origine_visites") . " ($n " . ($n == 1 ? _T('info_site') : _T('info_sites')) . ")"; echo '<br />', gros_titre($titre,'', false); echo "<div style='overflow:hidden;' class='verdana1 spip_small'><br />"; echo "<ul class='referers'><li>"; echo join("</li><li>\n",$res); echo "</li></ul>"; echo $plus; echo "<br /></div>"; } echo fin_gauche(), fin_page(); }
function gadget_messagerie() { global $connect_statut; return "<div> </div>" . icone_horizontale(_T('lien_nouvea_pense_bete'),generer_action_auteur("editer_message","pb"), "pense-bete.gif",'',false) . icone_horizontale(_T('lien_nouveau_message'),generer_action_auteur("editer_message","normal"), "message.gif",'',false) . (($connect_statut != "0minirezo") ? '' : icone_horizontale(_T('lien_nouvelle_annonce'),generer_action_auteur("editer_message","affich"), "annonce.gif",'',false)); }
function personnel_accueil($coockcookie) { global $spip_lang_left, $connect_id_auteur, $connect_id_rubrique ; $res = ''; if (count($connect_id_rubrique)) { $res = sql_allfetsel("R.id_rubrique, R.titre, R.descriptif", "spip_auteurs_rubriques AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique", "A.id_auteur=$connect_id_auteur", "", "titre"); foreach ($res as $k => $r) { $res[$k] = "<a title='" . typo($r['descriptif']) . "' href='" . generer_url_ecrire('naviguer', "id_rubrique=" .$r['id_rubrique']) . "'>" . typo($r['titre']) . '</a>'; } $res = "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>\n<li>" . join("</li>\n<li>", $res) . "\n</li></ul>"; } // // Supprimer le cookie, se deconnecter... // if ($coockcookie) { $lien = generer_url_action('cookie', "cookie_admin=non&url=".rawurlencode('./'. _SPIP_ECRIRE_SCRIPT)); $t = _T('icone_supprimer_cookie'); $lien = icone_horizontale($t, $lien, "cookie-24.gif", "supprimer-sansdanger.gif", false); if ($GLOBALS['spip_display'] != 1) $lien = str_replace('</td></tr></table>', aide("cookie").'</td></tr></table>', $lien); } // // Modification du cookie // else { $cookie = rawurlencode("@$connect_login"); $retour = rawurlencode('./' . _SPIP_ECRIRE_SCRIPT); $lien = generer_url_action('cookie', "cookie_admin=$cookie&url=$retour"); $lien = _T('info_activer_cookie'). aide ("cookie"). icone_horizontale(_T('icone_activer_cookie'), $lien,"cookie-24.gif", "", false); } $titre_cadre = afficher_plus(generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur")); $titre_cadre .= majuscules(typo($GLOBALS['visiteur_session']['nom'])); return debut_cadre_relief("fiche-perso-24.gif",true, '',$titre_cadre) . $res . "<div class='info_cookie'>$lien</div>" . fin_cadre_relief(true); }
function afficher_site($id_syndic, $id_rubrique, $nom_site, $row){ global $spip_lang_right; $cherche_mot = _request('cherche_mot'); $select_groupe = _request('select_groupe'); $id_secteur = $row["id_secteur"]; $url_site = $row["url_site"]; $url_syndic = $row["url_syndic"]; $syndication = $row["syndication"]; $statut = $row["statut"]; $date_heure = $row["date"]; $date_syndic = $row['date_syndic']; $flag_administrable = autoriser('modifier','site',$id_syndic); $flag_editable = ($flag_administrable OR ($GLOBALS['meta']["proposer_sites"] > 0 AND ($statut == 'prop'))); $meme_rubrique = charger_fonction('meme_rubrique', 'inc'); $iconifier = charger_fonction('iconifier', 'inc'); if ($flag_editable AND ($statut == 'publie')) $dater = charger_fonction('dater', 'inc'); $editer_mots = charger_fonction('editer_mots', 'inc'); if ($flag_administrable) $instituer_site = charger_fonction('instituer_site','inc'); echo debut_grand_cadre(true); echo afficher_hierarchie($id_rubrique); echo fin_grand_cadre(true); echo debut_gauche('', true); echo debut_boite_info(true); echo pipeline ('boite_infos', array('data' => '', 'args' => array( 'type'=>'site', 'id' => $id_syndic, 'row' => $row ) )); echo fin_boite_info(true); echo $iconifier('id_syndic', $id_syndic, 'sites', false, $flag_administrable); echo pipeline('affiche_gauche',array('args'=>array('exec'=>'sites','id_syndic'=>$id_syndic),'data'=>'')); echo creer_colonne_droite('', true); echo $meme_rubrique($id_rubrique, $id_syndic, 'syndic'); echo pipeline('affiche_droite',array('args'=>array('exec'=>'sites','id_syndic'=>$id_syndic),'data'=>'')); echo bloc_des_raccourcis( icone_horizontale(_T('icone_voir_sites_references'), generer_url_ecrire("sites_tous",""), "site-24.gif","rien.gif", false) ); echo debut_droite('', true); if ($syndication == 'off' OR $syndication == 'sus') $droit = $id_rubrique; else $droit = 0; $url_affichee = $url_site; if (strlen($url_affichee) > 40) $url_affichee = substr($url_affichee, 0, 30)."..."; $actions = ($flag_editable ? icone_inline(_T('icone_modifier_site'), generer_url_ecrire('sites_edit',"id_syndic=$id_syndic"), "site-24.gif", "edit.gif",$spip_lang_right) : ""); $haut = "<div class='bandeau_actions'>$actions</div>". gros_titre($nom_site?$nom_site:"("._T('info_sans_titre_2').")", '' , false) . "<a href='$url_site' class='url_site'>$url_affichee</a>"; $type = 'site'; $contexte = array('id'=>$id_syndic,'id_rubrique'=>$id_rubrique); $fond = recuperer_fond("prive/contenu/$type",$contexte); // permettre aux plugin de faire des modifs ou des ajouts $fond = pipeline('afficher_contenu_objet', array( 'args'=>array( 'type'=>$type, 'id_objet'=>$id_syndic, 'contexte'=>$contexte), 'data'=> $fond)); $fond = "<div id='wysiwyg'>$fond</div>"; $onglet_contenu = (_INTERFACE_ONGLETS? ($statut == 'prop' ? "<p class='site_prop'>"._T('info_site_propose')." <b>".affdate($date_heure)." </b></p>" : "") . $fond:"") . (($syndication == "oui" OR $syndication == "off" OR $syndication == "sus") ? "<p class='site_syndique'><a href='".htmlspecialchars($url_syndic)."'>" . http_img_pack('feed.png', 'RSS'). '</a>'._T('info_site_syndique').'</p>' . (($syndication == "off" OR $syndication=="sus") ? "<div class='site_syndique_probleme'>" . _T('avis_site_syndique_probleme', array('url_syndic' => quote_amp($url_syndic))) . redirige_action_auteur('editer_site', $id_syndic, 'sites', '', "<input type='hidden' name='reload' value='oui' /> <input type='submit' value=\"" . attribut_html(_T('lien_nouvelle_recuperation')) . "\" class='spip_xx-small' />") . "</div>" : "") . afficher_objets('syndic_article',_T('titre_articles_syndiques'), array('FROM' => 'spip_syndic_articles', 'WHERE' => "id_syndic=$id_syndic", 'ORDER BY' => "date DESC"), $id_syndic) . ($date_syndic ? "<div class='date_syndic'>" . _T('info_derniere_syndication').' '.affdate_heure($date_syndic) .".</div>" : "") . "<div class='mise_a_jour_syndic'>" . redirige_action_post('editer_site', $id_syndic, 'sites', "id_syndic=$id_syndic", "<input type='hidden' name='reload' value='oui' /> <input type='submit' value=\"" . attribut_html(_T('lien_mise_a_jour_syndication')) . "\" class='spip_xx-small' />") . "</div>" : choix_feed($id_syndic, $id_rubrique, $nom_site, $row)) . (_INTERFACE_ONGLETS?"":($flag_administrable ? options_moderation($row) : "")) ; $onglet_proprietes = (_INTERFACE_ONGLETS?"": $fond . ($statut == 'prop' ? "<p class='site_prop'>"._T('info_site_propose')." <b>".affdate($date_heure)." </b></p>" : "") ) . afficher_site_rubrique($id_syndic, $id_rubrique, $id_secteur) . ($dater ? $dater($id_syndic, $flag_editable, $statut, 'syndic', 'sites', $date_heure) : "") . $editer_mots('syndic', $id_syndic, $cherche_mot, $select_groupe, $flag_editable, true, 'sites') . (_INTERFACE_ONGLETS?($flag_administrable ? options_moderation($row) : ""):"") . pipeline('affiche_milieu',array('args'=>array('exec'=>'sites','id_syndic'=>$id_syndic),'data'=>'')) ; $discuter = charger_fonction('discuter', 'inc'); $onglet_discuter = $discuter($id_syndic, 'sites', 'id_syndic'); $onglet_documents = "" ; $onglet_interactivite = ""; echo "<div class='fiche_objet'>" . $haut . afficher_onglets_pages(array( 'voir' => _T('onglet_contenu'), 'props' => _T('onglet_proprietes'), 'docs' => _T('onglet_documents'), 'interactivite' => _T('onglet_interactivite'), 'discuter' => _T('onglet_discuter')), _INTERFACE_ONGLETS? array( 'voir'=>$onglet_contenu, 'props'=>$onglet_proprietes, 'docs'=>$onglet_documents, 'interactivite'=>$onglet_interactivite, 'discuter'=>$onglet_discuter) :array( 'props'=>$onglet_proprietes, 'voir'=>$onglet_contenu ) ) . "</div>" . (_INTERFACE_ONGLETS?"":$onglet_discuter); }
function exec_articles_versions_args($id_article, $id_version, $id_diff) { global $spip_lang_left, $spip_lang_right; if (!autoriser('voirrevisions', 'article', $id_article) OR !$row = sql_fetsel("*", "spip_articles", "id_article=".sql_quote($id_article))){ include_spip('inc/minipres'); echo minipres(); return; } include_spip('inc/suivi_versions'); include_spip('inc/presentation'); include_spip('inc/revisions'); // recuperer les donnees actuelles de l'article $id_article = $row["id_article"]; $id_rubrique = $row["id_rubrique"]; $titre = $row["titre"]; $statut_article = $row["statut"]; $lang = $row["lang"]; // Afficher le debut de la page (y compris rubrique) $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('info_historique')." « $titre »", "naviguer", "articles", $id_rubrique); echo debut_grand_cadre(true); echo afficher_hierarchie($id_rubrique); echo fin_grand_cadre(true); ////////////////////////////////////////////////////// // Affichage de la colonne de gauche // echo debut_gauche('', true); echo bloc_des_raccourcis(icone_horizontale(_T('icone_retour_article'), generer_url_ecrire("articles","id_article=$id_article"), "article-24.gif","rien.gif", false) . icone_horizontale(_T('icone_suivi_revisions'), generer_url_ecrire("suivi_revisions",""), "historique-24.gif","rien.gif", false)); ////////////////////////////////////////////////////// // Affichage de la colonne de droite // echo debut_droite('', true); $lang_dir = lang_dir(changer_typo($lang)); // // recuperer les donnees versionnees // $last_version = false; if (!$id_version) { $id_version = $row['id_version']; $last_version = true; } $textes = revision_comparee($id_article, $id_version, 'complet', $id_diff); unset($id_rubrique); # on n'en n'aura besoin que si on affiche un diff // // Titre, surtitre, sous-titre // $debut = $corps = ''; if (is_array($textes)) foreach ($textes as $var => $t) { switch ($var) { case 'id_rubrique': $debut .= "<div dir='$lang_dir' class='arial1 spip_x-small'>" . $t . "</div>\n"; break; case 'surtitre': case 'soustitre': $debut .= "<div dir='$lang_dir' class='arial1 spip_medium'><b>" . propre_diff($t) . "</b></div>\n"; break; case 'titre': $debut .= gros_titre(propre_diff($t), puce_statut($statut_article, " style='vertical-align: center'"), false); break; // trois champs a affichage combine case 'descriptif': case 'url_site': case 'nom_site': if (!$vudesc++) { $debut .= "<div style='text-align: $spip_lang_left; padding: 5px; border: 1px dashed #aaaaaa; background-color: #e4e4e4;' dir='$lang_dir'>"; $texte_case = ($textes['descriptif']) ? "{{"._T('info_descriptif')."}} ".$textes['descriptif']."\n\n" : ''; $texte_case .= ($textes['nom_site'].$textes['url_site']) ? "{{"._T('info_urlref')."}} [".$textes['nom_site']."->".$textes['url_site']."]" : ''; $debut .= "<span class='verdana1 spip_small'>" . propre($texte_case). "</span>"; $debut .= "</div>"; } break; default: $corps .= "<div dir='$lang_dir' class='champ contenu_$var'>" . "<div class='label'>$var</div>" . "<div class='$var'>" . propre_diff($t) . "</div></div>\n"; break; } } echo '<div id="contenu">'; echo debut_cadre_relief('', true); echo "\n<table id='diff' cellpadding='0' cellspacing='0' border='0' width='100%'>"; echo "<tr><td style='width: 100%' valign='top'>"; echo $debut; echo "</td><td>"; // Icone de modification if (autoriser('modifier', 'article', $id_article)) echo icone_inline( _T('icone_modifier_article').'<br />('._T('version')." $id_version)", generer_url_ecrire("articles_edit", "id_article=$id_article".((!$last_version)?"&id_version=$id_version":"")), "article-24.gif", "edit.gif", $spip_lang_right ); echo "</td>"; echo "</tr></table>"; echo fin_cadre_relief(true); ////////////////////////////////////////////////////// // Affichage des versions // $result = sql_select("id_version, titre_version, date, id_auteur", "spip_versions", "id_article=".sql_quote($id_article)." AND id_version>0", "", "id_version DESC"); echo debut_cadre_relief('', true); $zapn = 0; $lignes = array(); $points = '...'; $tranches = 10; while ($row = sql_fetch($result)) { $res = ''; // s'il y en a trop on zappe a partir de la 10e // et on s'arrete juste apres celle cherchee if ($zapn++ > $tranches AND abs($id_version - $row['id_version']) > $tranches<<1) { if ($points) { $lignes[]= $points; $points = ''; } if ($id_version > $row['id_version']) break; continue; } $date = affdate_heure($row['date']); $version_aff = $row['id_version']; $titre_version = typo($row['titre_version']); $titre_aff = $titre_version ? $titre_version : $date; if ($version_aff != $id_version) { $lien = parametre_url(self(), 'id_version', $version_aff); $lien = parametre_url($lien, 'id_diff', ''); $res .= "<a href='".($lien.'#diff')."' title=\""._T('info_historique_affiche')."\">$titre_aff</a>"; } else { $res .= "<b>$titre_aff</b>"; } if (is_numeric($row['id_auteur']) AND $t = sql_getfetsel('nom', 'spip_auteurs', "id_auteur=" . intval($row['id_auteur']))) { $res .= " (".typo($t).")"; } else { $res .= " (".$row['id_auteur'].")"; #IP edition anonyme } if ($version_aff != $id_version) { $res .= " <span class='verdana2'>"; if ($version_aff == $id_diff) { $res .= "<b>("._T('info_historique_comparaison').")</b>"; } else { $lien = parametre_url(self(), 'id_version', $id_version); $lien = parametre_url($lien, 'id_diff', $version_aff); $res .= "(<a href='".($lien.'#diff'). "'>"._T('info_historique_comparaison')."</a>)"; } $res .= "</span>"; } $lignes[]= $res; } if ($lignes) { echo "<ul class='verdana3'><li>\n"; echo join("\n</li><li>\n", $lignes); echo "</li></ul>\n"; } ////////////////////////////////////////////////////// // Corps de la version affichee // echo "\n\n<div id='wysiwyg' style='text-align: justify;'>$corps"; // notes de bas de page if (strlen($GLOBALS['les_notes'])) echo "<div class='champ contenu_notes'> <div class='label'>"._T('info_notes')."</div> <div class='notes' dir='$lang_dir'>" .$GLOBALS['les_notes'] ."</div></div>\n"; echo "</div>\n"; echo fin_cadre_relief(true); echo '</div>'; // /#contenu echo fin_gauche(), fin_page(); }
function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif', $af = true, $inline=true) { $en_ligne = $message = ''; switch ($type) { case 'article': if ($statut == "publie" AND $GLOBALS['meta']["post_dates"] == 'non') { $n = sql_fetsel("id_article", "spip_articles", "id_article=$id AND date<=".sql_quote(date('Y-m-d H:i:s'))); if (!$n) $statut = 'prop'; } if ($statut == 'publie') $en_ligne = 'calcul'; else if ($statut == 'prop') $en_ligne = 'preview'; break; case 'rubrique': if ($id > 0) if ($statut == 'publie') $en_ligne = 'calcul'; else $en_ligne = 'preview'; break; case 'breve': case 'site': if ($statut == 'publie') $en_ligne = 'calcul'; else if ($statut == 'prop') $en_ligne = 'preview'; break; case 'mot': $en_ligne = 'calcul'; break; case 'auteur': $n = sql_fetsel('A.id_article', 'spip_auteurs_articles AS L LEFT JOIN spip_articles AS A ON L.id_article=A.id_article', "A.statut='publie' AND L.id_auteur=".sql_quote($id)); if ($n) $en_ligne = 'calcul'; else $en_ligne = 'preview'; break; default: return ''; } if ($en_ligne == 'calcul') $message = _T('icone_voir_en_ligne'); else if ($en_ligne == 'preview' AND autoriser('previsualiser')) $message = _T('previsualiser'); else return ''; $h = generer_url_action('redirect', "type=$type&id=$id&var_mode=$en_ligne"); return $inline ? icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left']) : icone_horizontale($message, $h, $image, "rien.gif",$af); }
function petitionner_decompte($id_article, $petition) { $signatures = sql_countsel("spip_signatures", "id_article=$id_article"); if (!$signatures) return ''; return '<!-- visible -->' // message pour l'appelant . icone_horizontale( $signatures.' '. _T('info_signatures'), generer_url_ecrire("controle_petition", "id_article=$id_article",'', false), "suivi-petition-24.gif", "", false ); }
function inc_referencer_traduction_dist($id_article, $flag, $id_rubrique, $id_trad, $trad_err='') { global $spip_display; if (! (($GLOBALS['meta']['multi_articles'] == 'oui') OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) ) return ''; $langue_article = sql_fetsel("lang", "spip_articles", "id_article=$id_article"); $langue_article = $langue_article['lang']; $reponse = ''; // Choix langue article if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag) { $row = sql_fetsel("lang", "spip_rubriques", "id_rubrique=$id_rubrique"); $langue_parent = $row['lang']; if (!$langue_parent) $langue_parent = $GLOBALS['meta']['langue_site']; if (!$langue_article) $langue_article = $langue_parent; if ($menu = liste_options_langues('changer_lang', $langue_article, $langue_parent)) { // attention ce onchange doit etre suivi de <span><input type='submit' $lien = "\nonchange=\"this.nextSibling.firstChild.style.visibility='visible';\""; $menu = select_langues('changer_lang', $lien, $menu, _T('info_multi_cet_article')); $menu = ajax_action_post('referencer_traduction', "$id_article,$id_rubrique","articles","id_article=$id_article", $menu, _T('bouton_changer'), " class='visible_au_chargement'"); $reponse .= debut_cadre_couleur('',true) . "\n<div style='text-align: center;'>" . $menu . "</div>\n" . fin_cadre_couleur(true); } } if ($trad_err) $reponse .= "<div><span style='color: red' size='2' face='Verdana, Geneva, helvetica, sans-serif'>"._T('trad_deja_traduit'). "</span></div>"; // Afficher la liste des traductions if ($id_trad) { $requete = array('SELECT' => "id_article, id_rubrique, titre, lang, statut, id_trad", 'FROM' => "spip_articles", 'WHERE' => "id_trad = $id_trad"); $styles = array(array('',7), array('', 12), array('arial2'), array('arial2', 100)); $presenter_liste = charger_fonction('presenter_liste', 'inc'); $tableau = array(); $liste = $presenter_liste($requete, 'articles_traduction', $tableau, $id_article, false, $styles, '',_T('trad_article_traduction')); } else $liste = ''; // changer les globales de direction de langue changer_typo($langue_article); // Participation aux Traductions pas pour Mal-voyant. A completer if ($spip_display == 4) $form =''; else { $form = "<table width='100%'><tr>"; if ($flag AND !$liste) { // Formulaire pour lier a un article $form .= "<td style='width: 60%' class='arial2'>" . ajax_action_post("referencer_traduction", $id_article, 'articles', "id_article=$id_article", ("<label for='lier_trad'>" . _T('trad_lier') . "</label>" . "\n<input type='text' name='lier_trad' id='lier_trad' size='5' />\n"), _T('bouton_valider'), "") . "</td>\n" . "<td style='width: 10px'> </td>" . "<td style='width: 2px; background: url(" . chemin_image("tirets-separation.gif") . ")'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" . "<td style='width: 10px'> </td>"; } $form .= "<td>" . icone_horizontale(_T('trad_new'), generer_url_ecrire("articles_edit","new=oui&lier_trad=$id_article&id_rubrique=$id_rubrique"), "traductions-24.gif", "creer.gif", false) . "</td>"; if ($flag AND $liste) { $clic = _T('trad_delier'); $form .= "<td style='width: 10px'> </td>" . "<td style='width: 2px; background: url(" . chemin_image("tirets-separation.gif") . ")'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" . "<td style='width: 10px'> </td>" . "<td>" // la 1ere occurrence de clic ne sert pas en Ajax . icone_horizontale($clic, ajax_action_auteur("referencer_traduction","$id_article,-$id_trad",'articles', "id_article=$id_article",array($clic)), "traductions-24.gif", "supprimer.gif", false) . "</td>\n"; } $form .= "</tr></table>"; } if ($GLOBALS['meta']['gerer_trad'] == 'oui') $bouton = _T('titre_langue_trad_article'); else $bouton = _T('titre_langue_article'); if ($langue_article) $bouton .= " (".traduire_nom_langue($langue_article).")"; $res = debut_cadre_enfonce('langues-24.gif', true, "", bouton_block_depliable($bouton,$flag === 'ajax','languearticle,lier_traductions')) . debut_block_depliable($flag === 'ajax','languearticle') . $reponse . fin_block() . $liste . debut_block_depliable($flag === 'ajax','lier_traductions') . $form . fin_block() . fin_cadre_enfonce(true); return ajax_action_greffe("referencer_traduction", $id_article, $res); }
function bandeau_auteurs($visiteurs) { global $connect_id_auteur; $ret = debut_gauche("auteurs",true) . debut_boite_info(true); if ($visiteurs) $ret .= "\n<p class='arial1'>"._T('info_gauche_visiteurs_enregistres'). '</p>'; else $ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>'; if (autoriser('voir', 'auteur')) $ret .= "\n<p class='arial1'>". _T('info_gauche_auteurs_exterieurs') . '</p>'; $ret .= fin_boite_info(true); $ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>'auteurs'),'data'=>'')); if (autoriser('voir', 'auteur')) { if (autoriser('creer', 'auteur')) $res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.gif", "creer.gif", false); else $res = ''; $res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false); if (avoir_visiteurs(true)) { if ($visiteurs) $res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs", "statut=" . AUTEURS_MIN_REDAC), "auteur-24.gif", "", false); else $res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=!" . AUTEURS_MIN_REDAC), "auteur-24.gif", "", false); } $ret .= bloc_des_raccourcis($res); } $ret .= creer_colonne_droite('auteurs',true); $ret .= pipeline('affiche_droite',array('args'=>array('exec'=>'auteurs'),'data'=>'')); $ret .= debut_droite('',true); $ret .= "\n<br />"; $ret .= gros_titre($visiteurs ? _T('info_visiteurs') : _T('info_auteurs'),'',false); $ret .= "\n<br />"; return $ret; }
function auteurs_interventions($auteur) { $id_auteur = intval($auteur['id_auteur']); $statut = $auteur['statut']; global $connect_id_auteur; include_spip('inc/message_select'); if (autoriser('voir', 'article')) $aff_art = array('prepa','prop','publie','refuse'); else if ($connect_id_auteur == $id_auteur) $aff_art = array('prepa','prop','publie'); else $aff_art = array('prop','publie'); $aff_art = sql_in('articles.statut', $aff_art); echo afficher_objets('article',_T('info_articles_auteur'), array('FROM' => "spip_articles AS articles LEFT JOIN spip_auteurs_articles AS lien ON lien.id_article=articles.id_article ", "WHERE" => "lien.id_auteur=$id_auteur AND $aff_art", 'ORDER BY' => "articles.date DESC")); // Messages de l'auteur et discussions en cours if ($GLOBALS['meta']['messagerie_agenda'] != 'non' AND $id_auteur != $connect_id_auteur AND autoriser('ecrire', '', '', $auteur) ) { echo "<div class='nettoyeur'> </div>"; echo debut_cadre_couleur('', true); $vus = array(); echo afficher_ses_messages('<b>' . _T('info_discussion_cours') . '</b>', ", spip_auteurs_messages AS lien, spip_auteurs_messages AS lien2", "lien.id_auteur=$connect_id_auteur AND lien2.id_auteur = $id_auteur AND statut='publie' AND type='normal' AND rv!='oui' AND lien.id_message=messages.id_message AND lien2.id_message=messages.id_message", $vus, false, false); echo afficher_ses_messages('<b>' . _T('info_vos_rendez_vous') . '</b>', ", spip_auteurs_messages AS lien, spip_auteurs_messages AS lien2", "lien.id_auteur=$connect_id_auteur AND lien2.id_auteur = $id_auteur AND statut='publie' AND type='normal' AND rv='oui' AND date_fin > ".sql_quote(date('Y-m-d H:i:s'))." AND lien.id_message=messages.id_message AND lien2.id_message=messages.id_message", $vus, false, false); echo icone_horizontale(_T('info_envoyer_message_prive'), generer_action_auteur("editer_message","normal/$id_auteur"), "message.gif","", false); echo fin_cadre_couleur(true); } }
function tispipskelet_affiche_droite($flux){ if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]){ $exec = $flux["args"]["exec"]; if ($exec == "accueil") { $data = $flux["data"]; #$ret = affiche_message_admins(); $ret = ""; $flux["data"] = $data.$ret; } if ($exec == "acces_restreint") { $data = $flux["data"]; $ret = link_zones_groupes(); $flux["data"] = $data.$ret; } } $id_rubrique = $flux['args']['id_rubrique']; if ($flux['args']['exec']=='naviguer' AND $id_rubrique > 0) { $out="<div style='border:1px solid #999;background:white;'>"; $out .= icone_horizontale(_T("tispipskelet:affichage_personnaliser"), "#", "", _DIR_PLUGIN_TISPIPSKELET . "img_pack/tispip-skelet_24.png", false, "onclick='$(\"#boite_affichage_tispip\").slideToggle(\"fast\"); return false;'"); $out.="<div id='boite_affichage_tispip' style='display:none;'>"; $out.= recuperer_fond('formulaires/tispip_obo_rubriques_rubrique',array('id_rubrique'=>$id_rubrique,'icone'=>$icone)); lire_config('activer_sites')=='oui' ?$out.= recuperer_fond('formulaires/tispip_obo_sites_rubrique',array('id_rubrique'=>$id_rubrique,'icone'=>$icone)) : ''; lire_config('documents_rubrique')=='oui' ? $out.= recuperer_fond('formulaires/tispip_obo_docs_rubrique',array('id_rubrique'=>$id_rubrique,'icone'=>$icone)) : ''; $out.= "</div></div>"; $flux['data'] .= $out; } #pour les pages articles $id_article = $flux['args']['id_article']; if ($flux['args']['exec']=='articles' AND $id_article > 0) { $out="<div style='border:1px solid #999;background:white;'>"; $out .= icone_horizontale(_T("tispipskelet:affichage_personnaliser"), "#", "", _DIR_PLUGIN_TISPIPSKELET . "img_pack/tispip-skelet_24.png", false, "onclick='$(\"#boite_affichage_tispip\").slideToggle(\"fast\"); return false;'"); $out.="<div id='boite_affichage_tispip' style='display:none;'>"; $result = unserialize($GLOBALS['meta']['plugin']); if(isset($result['CRAYONS']['version'])) { $out.= recuperer_fond('formulaires/tispip_obo_wiki_article',array('id_article'=>$id_article,'icone'=>$icone)); } lire_config('documents_article')=='oui' ? $out.= recuperer_fond('formulaires/tispip_obo_docs_article',array('id_article'=>$id_article,'icone'=>$icone)) : ''; lire_config('nb_cols_art')=='3' ? $out.= recuperer_fond('formulaires/tispip_obo_nbcols_art',array('id_article'=>$id_article,'icone'=>$icone)) : ''; $out.= "</div></div>"; $flux['data'] .= $out; } return $flux; }
function vignette_formulaire_legender($id_document, $document, $script, $type, $id, $ancre) { $id_vignette = $document['id_vignette']; $texte = _T('info_supprimer_vignette'); $s = ($ancre =='documents' ? '': '-'); if (preg_match('/_edit$/', $script)) { $iframe_redirect = generer_url_ecrire("documents_colonne","id=$id&type=$type",true); $action = redirige_action_auteur('documenter', "$s$id/$type/$id_vignette", $script, "id_$type=$id&show_docs=$id_document#$ancre"); } else { $iframe_redirect = generer_url_ecrire("documenter","id_$type=$id&type=$type",true); $action = ajax_action_auteur('documenter', "$s$id/$type/$id_vignette", $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);}"); } $joindre = charger_fonction('joindre', 'inc'); $supprimer = icone_horizontale($texte, $action, "vignette-24.png", "supprimer.gif", false); if ($id<0) $supprimer = ''; // cf. ci-dessus, article pas encore cree return "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: #eeeeee; background-color: white;' />" . (!$id_vignette ? $joindre(array( 'script' => $script, 'args' => "id_$type=$id", 'id' => $id, 'intitule' => _T('info_vignette_personnalisee'), 'mode' => 'vignette', 'type' => $type, 'ancre' => $ancre, 'id_document' => $id_document, 'titre' => '', 'iframe_script' => $iframe_redirect )) : $supprimer ); }
function afficher_ical($id) { echo debut_cadre_enfonce(); echo "<div class='verdana1'>" . _T("calendrier_synchro") . "</div>"; icone_horizontale(_T("icone_suivi_activite"), "synchro.php3", "synchro-24.gif"); echo fin_cadre_enfonce(); }
function exec_messagerie_dist() { global $connect_id_auteur, $connect_statut, $spip_lang_rtl; $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_messagerie'), "accueil", "messagerie"); echo debut_gauche("messagerie",true); echo debut_boite_info(true); echo _T('info_gauche_messagerie'); echo "<p>".http_img_pack("m_envoi$spip_lang_rtl.gif", 'V', "style='width: 14px; height: 7px; border: 0px'") .' ' . _T('info_symbole_vert'), '</p>'; echo aide ("messut"); echo "<p>".http_img_pack("m_envoi_bleu$spip_lang_rtl.gif", 'B', "style='width: 14px; height: 7px; border: 0px'") .' ' . _T('info_symbole_bleu'), '</p>'; echo aide ("messpense"); echo "<p>".http_img_pack("m_envoi_jaune$spip_lang_rtl.gif", 'J', "style='width: 14px; height: 7px; border: 0px'") .' ' . _T('info_symbole_jaune'), '</p>'; echo fin_boite_info(true); echo creer_colonne_droite('', true); echo debut_cadre_relief("messagerie-24.gif", true); echo icone_horizontale(_T('lien_nouvea_pense_bete'),generer_action_auteur("editer_message","pb"), "pense-bete.gif", "", false); echo icone_horizontale(_T('lien_nouveau_message'),generer_action_auteur("editer_message","normal"), "message.gif", "", false); if ($connect_statut == "0minirezo") { echo icone_horizontale(_T('lien_nouvelle_annonce'),generer_action_auteur("editer_message","affich"), "annonce.gif", "", false); } echo fin_cadre_relief(true); # Affiche l'encadre "lien iCal" echo debut_cadre_enfonce('',true) . "<div class='verdana1'>"._T("calendrier_synchro") . "<table class='cellule-h-table' cellpadding='0'><tr>\n" . "<td><a href='" . generer_url_ecrire("synchro") . "' class='ical'> </a></td>\n" . "<td class='cellule-h-lien'><br /><a href='" . generer_url_ecrire("synchro") . "' class='cellule-h'>" . _T("icone_suivi_activite") . "</a></td>\n</tr></table>\n" ."</div>" . fin_cadre_enfonce(true); echo debut_droite("messagerie", true); $messages_vus = array(); echo afficher_ses_messages('<b>' . _T('infos_vos_pense_bete') . '</b>', '', "id_auteur=$connect_id_auteur AND statut='publie' AND type='pb' AND (date_fin > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 1 DAY) OR rv != 'oui')", $messages_vus, false, true); echo afficher_ses_messages('<b>' . _T('info_nouveaux_message') . '</b>', ", spip_auteurs_messages AS lien", "lien.id_auteur=$connect_id_auteur AND vu='non' AND statut='publie' AND lien.id_message=messages.id_message", $messages_vus, true, true); echo afficher_ses_messages('<b>' . _T('info_discussion_cours') . '</b>', ", spip_auteurs_messages AS lien", "lien.id_auteur=$connect_id_auteur AND statut='publie' AND type='normal' AND lien.id_message=messages.id_message AND (date_fin > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 1 DAY) OR rv != 'oui')", $messages_vus, true, false); // Afficher le lien RSS echo bouton_spip_rss('messagerie', array('id_auteur' => $connect_id_auteur)); echo afficher_ses_messages('<b>' . _T('info_message_en_redaction') . '</b>', '', "id_auteur=$connect_id_auteur AND statut='redac'", $messages_vus, true, false); $result = sql_select('auteurs.id_auteur, auteurs.nom, COUNT(*) AS total', 'spip_auteurs AS auteurs, spip_auteurs_messages AS lien2, spip_messages AS messages, spip_auteurs_messages AS lien', "(lien.id_auteur = $connect_id_auteur AND lien.id_message = messages.id_message AND messages.statut = 'publie' AND (messages.rv != 'oui' OR messages.date_fin > ".sql_quote(date('Y-m-d H:i:s'))." )) AND (lien2.id_auteur = lien2.id_auteur AND lien2.id_message = messages.id_message AND lien2.id_auteur != $connect_id_auteur AND auteurs.id_auteur = lien2.id_auteur)", "auteurs.id_auteur", 'total DESC', 10); $cor = array(); while($row = sql_fetch($result)) { $id_auteur = $row['id_auteur']; $nom = typo($row["nom"]); $total = $row["total"]; $cor[]= "<div class='tr_liste'\nonmouseover=\"changeclass(this,'tr_liste_over');\"\nonmouseout=\"changeclass(this,'tr_liste');\"\nstyle='padding: 2px; padding-left: 10px; border-bottom: 1px solid #cccccc;'><div class='verdana1'><img src='" . chemin_image('redac-12.gif') . "'\nstyle='border: 0px' alt=' ' /> <a href='" . generer_url_ecrire("auteur_infos","id_auteur=$id_auteur") . "'>$nom,</a> ($total)</div></div>"; } if ($cor) { echo "<div style='height: 12px;'></div>"; $bouton = bouton_block_depliable(_T('info_principaux_correspondants'),true,'principaux'); echo debut_cadre('liste',"redacteurs-24.gif",'',$bouton); echo debut_block_depliable(true,'principaux'); echo "<table width='100%' cellpadding='0' cellspacing='0'>"; echo "<tr><td valign='top' style='width: 50%'>"; $count = ceil(count($cor)/2); echo join("\n",array_slice($cor, 0, $count)); echo "</td><td valign='top' style='width: 50%'>"; echo join("\n",array_slice($cor, $count)); echo "</td></tr></table>"; echo fin_block(); echo fin_cadre('liste'); } echo afficher_ses_messages('<b>' . _T('info_pense_bete_ancien') . '</b>', '', "id_auteur=$connect_id_auteur AND statut='publie' AND type='pb' AND rv!='oui'", $messages_vus, false, false); echo afficher_ses_messages('<b>' . _T('info_tous_redacteurs') . '</b>', '', "statut='publie' AND type='affich' AND (date_fin > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 1 DAY) OR rv != 'oui')", $messages_vus, false, false); echo fin_gauche(), fin_page(); }
function articles_forum_cadres($id_rubrique, $id_article, $titre, $script, $args) { global $spip_lang_right, $spip_lang_left; echo debut_grand_cadre(true); echo afficher_hierarchie($id_rubrique); echo fin_grand_cadre(true); echo debut_gauche('', true); echo debut_boite_info(true); echo "<p style='text-align: $spip_lang_left; ' class='verdana1 spip_x-small'>", _T('info_gauche_suivi_forum'), aide ("suiviforum"), "</p>"; $url = bouton_spip_rss('forums_public', array("id_article" => $id_article)); echo "<div style='text-align: $spip_lang_right;'>", $url, "</div>"; echo fin_boite_info(true); $res = icone_horizontale(_T('icone_statistiques_visites'), generer_url_ecrire("statistiques_visites","id_article=$id_article"), "statistiques-24.gif","rien.gif", false); echo bloc_des_raccourcis($res); echo pipeline('affiche_gauche',array('args'=>array('exec'=>'articles_forum','id_article'=>$id_article),'data'=>'')); echo creer_colonne_droite('', true); echo pipeline('affiche_droite',array('args'=>array('exec'=>'articles_forum','id_article'=>$id_article),'data'=>'')); echo debut_droite('', true); echo "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>"; echo "<tr>"; echo "<td>"; echo icone(_T('icone_retour'), $url = generer_url_ecrire($script, $args), "article-24.gif", "rien.gif"); echo "</td>"; echo "<td>" . http_img_pack('rien.gif', " ", "width='10'") ."</td>\n"; echo "<td style='width: 100%'>"; echo _T('texte_messages_publics'); echo gros_titre("<a href='$url'>$titre</a>",'', false); echo "</td></tr></table>"; }