diff --git a/.gitattributes b/.gitattributes index f4d2b9c12535b97dcaa189535f1b32dc86bdd235..57b6eb2708c25ccb3a371bffd2e3b70493f47cd4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -421,8 +421,11 @@ ecrire/inc/boutons.php -text ecrire/inc/chercher_logo.php -text ecrire/inc/chercher_rubrique.php -text ecrire/inc/cookie.php -text +ecrire/inc/dater.php -text +ecrire/inc/discuter.php -text ecrire/inc/distant.php -text ecrire/inc/drapeau_edition.php -text +ecrire/inc/editer_auteurs.php -text ecrire/inc/filtres_images.php -text ecrire/inc/forum_insert.php -text ecrire/inc/gadgets.php -text @@ -452,10 +455,12 @@ ecrire/inc/minipres.php -text ecrire/inc/petition.php -text ecrire/inc/plugin.php -text ecrire/inc/popularites.php -text +ecrire/inc/referencer_traduction.php -text ecrire/inc/sites_voir.php -text ecrire/inc/suivi_versions.php -text ecrire/inc/syndic.php -text ecrire/inc/utils.php -text +ecrire/inc/virtualiser.php -text ecrire/lang/ecrire_br.php -text ecrire/lang/ecrire_bs.php -text ecrire/lang/ecrire_cs.php -text diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index dd7fc0edb74f4d10cc24ab008d7fbc65779b2d86..8c4b3dfa60988f206d5b62b2080668ae81e2b487 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -17,14 +17,10 @@ include_spip('inc/texte'); include_spip('inc/rubriques'); include_spip('inc/actions'); include_spip('inc/mots'); -include_spip('inc/date'); include_spip('inc/petition'); +include_spip('inc/forum'); include_spip('inc/documents'); include_spip('base/abstract_sql'); -include_spip('fragments/editer_auteurs'); -include_spip('fragments/referencer_traduction'); -include_spip('fragments/virtualiser'); -include_spip('fragments/discuter'); // http://doc.spip.org/@exec_articles_dist function exec_articles_dist() @@ -113,7 +109,7 @@ if ($options == "avancees" && $connect_statut=='0minirezo' && $flag_editable) { boites_de_config_articles($id_article); - boite_article_virtuel($id_article, $virtuel); + echo boite_article_virtuel($id_article, $virtuel); } // @@ -143,23 +139,14 @@ debut_cadre_relief(); $modif = titres_articles($titre, $statut_article,$surtitre, $soustitre, $descriptif, $url_site, $nom_site, $flag_editable, $id_article, $id_rubrique); - echo "<div class='serif' align='$spip_lang_left'>"; - debut_cadre_couleur(); - echo formulaire_dater($id_article, $flag_editable, $statut_article, $date, $date_redac); - fin_cadre_couleur(); + $f = charger_fonction('dater', 'inc'); + echo $f($id_article, $flag_editable, $statut_article, $date, $date_redac); -// -// Liste des auteurs de l'article -// + $f = charger_fonction('editer_auteurs', 'inc'); + echo $f($id_article, $flag_editable, $cherche_auteur, $ids); - echo "\n<div id='editer_auteurs-$id_article'>"; - echo formulaire_editer_auteurs($cherche_auteur, $ids, $id_article,$flag_editable); - echo "</div>"; -// -// Liste des mots-cles de l'article -// if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') { echo formulaire_mots('article', $id_article, $cherche_mot, $select_groupe, $flag_editable); @@ -170,7 +157,8 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') { if (($GLOBALS['meta']['multi_articles'] == 'oui') OR (($GLOBALS['meta']['multi_rubriques'] == 'oui') AND ($GLOBALS['meta']['gerer_trad'] == 'oui'))) { - echo formulaire_referencer_traduction($id_article, $id_rubrique, $id_trad, $flag_editable, $trad_err); + $f = charger_fonction('referencer_traduction', 'inc'); + echo $f($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err); } echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>'')); @@ -190,10 +178,6 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') { echo "</div>"; } -// -// Documents associes a l'article -// - if ($spip_display != 4) { echo formulaire_joindre($id_article, "article", 'articles', $flag_editable); @@ -206,17 +190,15 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') { echo "</div>"; fin_cadre_relief(); - echo "<br /><br />"; - + // forum interne + $tm = rawurlencode($titre); - echo "\n<div align='center'>"; - icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=prive&id_article=$id_article&titre_message=$tm&url=" . generer_url_retour("articles","id_article=$id_article")), "forum-interne-24.gif", "creer.gif"); - echo "</div><br />"; + $f = charger_fonction('discuter', 'inc'); - $f = charger_fonction('discuter', 'fragments'); - echo "<div id='forum'>"; - echo $f($id_article, $debut); - echo "</div>"; + echo "<br /><br />\n<div align='center'>", + icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi","statut=prive&id_article=$id_article&titre_message=$tm&url=" . generer_url_retour("articles","id_article=$id_article")), "forum-interne-24.gif", "creer.gif", false), + "</div><br />", + $f($id_article, false, $debut); fin_page(); @@ -336,27 +318,20 @@ function boites_de_config_articles($id_article) function boite_article_virtuel($id_article, $virtuel) { - debut_cadre_relief("site-24.gif"); - - echo "\n<div class='verdana1' style='text-align: center;'>"; - if ($virtuel) - echo bouton_block_visible("redirection"); - else - echo bouton_block_invisible("redirection"); - - echo '<b>', _T('bouton_redirection'), '</b>'; - echo aide ("artvirt"); - echo "</div>"; - - if ($virtuel) - echo debut_block_visible("redirection"); - else - echo debut_block_invisible("redirection"); - echo "<div id='virtualiser-$id_article'>"; - echo formulaire_virtualiser($id_article, $virtuel, "articles", "id_article=$id_article"); - echo "</div>"; - echo fin_block(); - fin_cadre_relief(); + $f = charger_fonction('virtualiser', 'inc'); + + return debut_cadre_relief("site-24.gif", true) + . "\n<div class='verdana1' style='text-align: center;'>" + . ($virtuel ? bouton_block_visible("redirection") : bouton_block_invisible("redirection")) + . '<b>' + ._T('bouton_redirection') + . '</b>' + . aide ("artvirt") + . "</div>" + . ($virtuel ? debut_block_visible("redirection") : debut_block_invisible("redirection")) + . $f($id_article, false, $virtuel, "articles", "id_article=$id_article") + . fin_block() + . fin_cadre_relief(true); } // http://doc.spip.org/@meme_rubrique_articles @@ -469,149 +444,6 @@ function titres_articles($titre, $statut_article,$surtitre, $soustitre, $descrip } -// http://doc.spip.org/@formulaire_dater -function formulaire_dater($id_article, $flag_editable, $statut_article, $date, $date_redac) -{ - global $spip_lang_left, $spip_lang_right, $options; - - if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date_redac, $regs)) { - $annee_redac = $regs[1]; - $mois_redac = $regs[2]; - $jour_redac = $regs[3]; - $heure_redac = $regs[4]; - $minute_redac = $regs[5]; - if ($annee_redac > 4000) $annee_redac -= 9000; - } - - if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date, $regs)) { - $annee = $regs[1]; - $mois = $regs[2]; - $jour = $regs[3]; - $heure = $regs[4]; - $minute = $regs[5]; - } - - if ($flag_editable AND $options == 'avancees') { - - if ($statut_article == 'publie') { - - $js = "onchange=\"findObj_forcer('valider_date').style.visibility='visible';\""; - $res = ajax_action_auteur("dater", - "$id_article", - 'articles', - "id_article=$id_article", - ( - bouton_block_invisible("datepub") . - "<b><span class='verdana1'>". - _T('texte_date_publication_article'). - '</span> ' . - majuscules(affdate($date)) . - "</b>". - aide('artdate') . - debut_block_invisible("datepub") . - "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" . - afficher_jour($jour, "name='jour' size='1' class='fondl' $js", true) . - afficher_mois($mois, "name='mois' size='1' class='fondl' $js", true) . - afficher_annee($annee, "name='annee' size='1' class='fondl' $js") . - ' - ' . - afficher_heure($heure, "name='heure' size='1' class='fondl' $js") . - afficher_minute($minute, "name='minute' size='1' class='fondl' $js") . - "<span class='visible_au_chargement' id='valider_date'>" . - " \n<input type='submit' class='fondo' value='". - _T('bouton_changer')."' />" . - "</span>" . - "</div>" . - fin_block())); - } else { - $res = "\n<div><b> <span class='verdana1'>" - . _T('texte_date_creation_article') - . "</span>\n" - . majuscules(affdate($date))."</b>".aide('artdate')."</div>"; - } - - $possedeDateRedac= ($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00'); - if (($options == 'avancees' AND $GLOBALS['meta']["articles_redac"] != 'non') - OR $possedeDateRedac) { - if ($possedeDateRedac) - $date_affichee = majuscules(affdate($date_redac)) -# ." " ._T('date_fmt_heures_minutes', array('h' =>$heure_redac, 'm'=>$minute_redac)) - ; - else - $date_affichee = majuscules(_T('jour_non_connu_nc')); - - $js = "\"findObj_forcer('valider_date_redac').style.visibility='visible';\""; - $res .= ajax_action_auteur("dater", - "$id_article", - 'articles', - "id_article=$id_article", - (bouton_block_invisible('dateredac') . - "<b>" . - "<span class='verdana1'>" . - majuscules(_T('texte_date_publication_anterieure')) . -'</span> '. - $date_affichee . - " " . - aide('artdate_redac') . - "</b>" . - debut_block_invisible('dateredac') . - "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" . - '<table cellpadding="0" cellspacing="0" border="0" width="100%">' . - '<tr><td align="$spip_lang_left">' . - '<input type="radio" name="avec_redac" value="non" id="avec_redac_on"' . - ($possedeDateRedac ? '' : ' checked="checked"') . - " onClick=$js" . - ' /> <label for="avec_redac_on">'. - _T('texte_date_publication_anterieure_nonaffichee'). - '</label>' . - '<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off"' . - (!$possedeDateRedac ? '' : ' checked="checked"') . - " onClick=$js /> <label for='avec_redac_off'>" . - _T('bouton_radio_afficher'). - ' :</label> ' . - afficher_jour($jour_redac, "name='jour_redac' class='fondl' onchange=$js", true) . - afficher_mois($mois_redac, "name='mois_redac' class='fondl' onchange=$js", true) . - "<input type='text' name='annee_redac' class='fondl' value='".$annee_redac."' size='5' maxlength='4' onclick=$js />" . - '<div align="center">' . - afficher_heure($heure_redac, "name='heure_redac' class='fondl' onchange=$js", true) . - afficher_minute($minute_redac, "name='minute_redac' class='fondl' onchange=$js", true) . - "</div>\n" . - - '</td><td align="$spip_lang_right">' . - "<span class='visible_au_chargement' id='valider_date_redac'>" . - '<input type="submit" class="fondo" value="'. - _T('bouton_changer').'" />' . - "</span>" . - '</td></tr>' . - '</table>' . - '</div>' . - fin_block()) #, " method='post'" -); - } - } else { - - $res .= "<div style='text-align:center;'><b> <span class='verdana1'>" - . (($statut_article == 'publie') - ? _T('texte_date_publication_article') - : _T('texte_date_creation_article')) - . "</span> " - . majuscules(affdate($date))."</b>".aide('artdate')."</div>"; - - if ($possedeDateRedac) { - $res .= "<div style='text-align:center;'><b><span class='verdana1'>" - . _T('texte_date_publication_anterieure') - . "</span> " - . ' : ' - . majuscules(affdate($date_redac)) - . "</b>" - . aide('artdate_redac') - . "</div>"; - } - } - return ($flag_editable === 'ajax') - ? $res - : "<div id='dater-$id_article'>$res</div>"; -} - // http://doc.spip.org/@afficher_corps_articles function afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra) diff --git a/ecrire/fragments/dater.php b/ecrire/fragments/dater.php index 2eacf88a48205c34de94dc257bd30229a6134f54..0f809b1e69b446fe4a99f6470777e2b9fce3c82d 100644 --- a/ecrire/fragments/dater.php +++ b/ecrire/fragments/dater.php @@ -30,10 +30,7 @@ function fragments_dater_dist() $date = $row["date"]; $date_redac = $row["date_redac"]; - include_spip('inc/actions'); - include_spip('exec/articles'); - - return formulaire_dater($id_article, 'ajax', $statut_article, $date, $date_redac); + $f = charger_fonction('dater', 'inc'); + return $f($id_article, 'ajax', $statut_article, $date, $date_redac); } - ?> diff --git a/ecrire/fragments/discuter.php b/ecrire/fragments/discuter.php index fabb9d315240fa9ee060c3e5c453a602a9b19867..df79aa1e3c3c486c71cee0a81c539ce06d01cef2 100644 --- a/ecrire/fragments/discuter.php +++ b/ecrire/fragments/discuter.php @@ -12,60 +12,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/forum'); -include_spip('inc/presentation'); - -// http://doc.spip.org/@formulaire_discuter -function formulaire_discuter($query, $total, $debut, $total_afficher, $script, $args, $mute=false) -{ - $res = $nav =''; - if ($total > $total_afficher) { - $evt = $_COOKIE['spip_accepte_ajax'] == 1; - $nav = "<div class='serif2' align='center'>"; - for ($i = 0; $i < $total; $i = $i + $total_afficher){ - $y = $i + $total_afficher - 1; - if ($i == $debut) - $nav .= "<font size='3'><b>[$i-$y]</b></font> "; - else { - $a = "$args&debut=$i"; - if (!$evt) { - $h = generer_url_ecrire($script, $a); - } else { - $h = generer_url_ecrire('discuter', $a); - $evt = "\nonclick='return AjaxSqueeze(\"$h\",\n\t\"forum\")'"; - } - $nav .= "[<a href='$h#forum'$evt>$i-$y</a>] "; - } - } - $nav .= "</div>"; - } - - $res = $nav - . afficher_forum($query, $script, $args, $mute) - . "<br />" - . $nav; - - return $res; -} - -// http://doc.spip.org/@fragments_discuter_dist -function fragments_discuter_dist($id_article=-1, $debut=-1) +function fragments_discuter_dist() { - if ($debut == -1) $debut = _request('debut'); - if ($id_article == -1) $id_article = _request('id_article'); - - $debut = intval($debut); - $id_article = intval($id_article); - - $row = spip_fetch_array(spip_query("SELECT COUNT(*) AS cnt FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0")); - $total = $row["cnt"]; - - if (!$total) return ''; - - $total_afficher = 8; - $forum = spip_query("SELECT * FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0 ORDER BY date_heure DESC" . " LIMIT $debut,$total_afficher" ); -# " LIMIT $total_afficher OFFSET $debut" # PG - - return formulaire_discuter($forum, $total, $debut, $total_afficher, 'articles', "id_article=$id_article"); + $debut = _request('debut'); + $id_article = _request('id_article'); + $f = charger_fonction('discuter', 'inc'); + return $f($id_article, 'ajax', $debut); } ?> diff --git a/ecrire/fragments/editer_auteurs.php b/ecrire/fragments/editer_auteurs.php index 153cb445a86317f595a2f1ea55f4a8ec7fcc0ba3..6b0b4dfcc61ea49fce4a6ec337ff66e130bf0225 100644 --- a/ecrire/fragments/editer_auteurs.php +++ b/ecrire/fragments/editer_auteurs.php @@ -12,275 +12,17 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/presentation'); -include_spip('inc/actions'); - function fragments_editer_auteurs_dist() { $id_article = intval(_request('id_article')); - if ($GLOBALS['connect_toutes_rubriques']) // pour eviter SQL - $droit = true; - else $droit = acces_article($id_article); - - if (!$droit) { + if (! acces_article($id_article)) { spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); include_spip('inc/minipres'); minipres(_T('info_acces_interdit')); } - return formulaire_editer_auteurs(_request('cherche_auteur'), _request('ids'), $id_article, 'ajax'); -} - -function formulaire_editer_auteurs($cherche_auteur, $ids, $id_article, $flag_editable) -{ - global $spip_lang_left, $spip_lang_right, $options; - -// -// complement de action/editer_auteurs.php pour notifier la recherche d'auteur -// - - $bouton_creer_auteur = $GLOBALS['connect_toutes_rubriques']; - - if ($cherche_auteur) { - - $reponse ="<p align='$spip_lang_left'>" - . debut_boite_info(true) - . rechercher_auteurs_articles($cherche_auteur, $ids, $id_article); - - if ($bouton_creer_auteur) { - - $reponse .="<div style='width: 200px;'>" - . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=" . rawurlencode($cherche_auteur). "&redirect=" . generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) - . "</div> "; - - $bouton_creer_auteur = false; - } - - $reponse .= fin_boite_info(true) - . '</p>'; - } else $reponse =''; - -// -// Afficher les auteurs -// - $les_auteurs = array(); - - $result = spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article"); - - while ($row = spip_fetch_array($result)) - $les_auteurs[]= $row['id_auteur']; - - if ($les_auteurs = join(',', $les_auteurs)) - $reponse .= afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs); - -// -// Ajouter un auteur -// - - $res = ''; - if ($flag_editable AND $options == 'avancees') { - - if ($bouton_creer_auteur) { - - $res = "<div style='width:170px;'><span class='verdana1'><b>" - . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=" .generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) - . "</b></span></div>\n"; - } - - $res = "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>" - . ajouter_auteurs_articles($id_article, $les_auteurs, $bouton_creer_auteur) - ."</div>\n" - . $res; - - } - - $bouton = (!$flag_editable - ? '' - : (($flag_editable === 'ajax') - ? bouton_block_visible("auteursarticle") - : bouton_block_invisible("auteursarticle"))) - . _T('texte_auteurs') -. aide("artauteurs"); - - $res = '<div> </div>' // pour placer le gif patienteur - . debut_cadre_enfonce("auteur-24.gif", true, "", $bouton) - . $reponse - . ($flag_editable === 'ajax' ? - debut_block_visible("auteursarticle") : - debut_block_invisible("auteursarticle")) - . $res - . fin_block() - . fin_cadre_enfonce(true); - - return $res; -} - -// http://doc.spip.org/@rechercher_auteurs_articles -function rechercher_auteurs_articles($cherche_auteur, $ids, $id_article) -{ - if (!$ids) { - return "<B>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</B><BR />"; - } - elseif ($ids == -1) { - return "<B>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</B><BR />"; - } - elseif (preg_match('/^\d+$/',$ids)) { - - $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$ids")); - return "<B>"._T('texte_ajout_auteur')."</B><BR /><UL><LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($row['nom'])."</FONT></B></UL>"; - } - else { - $ids = preg_replace('/[^0-9,]/','',$ids); // securite - $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN ($ids) ORDER BY nom"); - - $res = "<B>" - . _T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur)) - . "</B><BR />" - . "<UL class='verdana1'>"; - while ($row = spip_fetch_array($result)) { - $id_auteur = $row['id_auteur']; - $nom_auteur = $row['nom']; - $email_auteur = $row['email']; - $bio_auteur = $row['bio']; - - $res .= "<li><b>".typo($nom_auteur)."</b>"; - - if ($email_auteur) $res .= " ($email_auteur)"; - - $res .= " | " - . ajax_action_auteur('editer_auteurs', "$id_article,$id_auteur","articles","id_article=$id_article", array(_T('lien_ajouter_auteur'))); - - if (trim($bio_auteur)) { - $res .= "<br />".couper(propre($bio_auteur), 100)."\n"; - } - $res .= "</li>\n"; - } - $res .= "</UL>"; - return $res; - } -} - -// http://doc.spip.org/@afficher_auteurs_articles -function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs) -{ - global $connect_statut, $options,$connect_id_auteur; - - $table = array(); - - $result = spip_query("SELECT * FROM spip_auteurs AS A WHERE A.id_auteur IN ($les_auteurs) ORDER BY A.nom"); - - while ($row = spip_fetch_array($result)) { - $vals = array(); - $id_auteur = $row["id_auteur"]; - $nom_auteur = $row["nom"]; - $email_auteur = $row["email"]; - if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100)))) - $bio_auteur = " TITLE=\"$bio_auteur\""; - $url_site_auteur = $row["url_site"]; - $statut_auteur = $row["statut"]; - if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non'; - - $vals[] = bonhomme_statut($row); - - $vals[] = "<a href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur") . "' $bio_auteur>".typo($nom_auteur)."</a>"; - - $vals[] = bouton_imessage($id_auteur); - - if ($email_auteur) $vals[] = "<A href='mailto:$email_auteur'>"._T('email')."</A>"; - else $vals[] = " "; - - if ($url_site_auteur) $vals[] = "<A href='$url_site_auteur'>"._T('info_site_min')."</A>"; - else $vals[] = " "; - - $cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur")); - - $nombre_articles = intval($cpt['n']); - - if ($nombre_articles > 1) $vals[] = $nombre_articles.' '._T('info_article_2'); - elseif ($nombre_articles == 1) $vals[] = _T('info_1_article'); - else $vals[] = " "; - - if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') { - $vals[] = ajax_action_auteur('editer_auteurs', "$id_article,-$id_auteur",'articles', "id_article=$id_article", array(_T('lien_retirer_auteur')." ". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'"))); - } else { - $vals[] = ""; - } - - $table[] = $vals; - } - - $largeurs = array('14', '', '', '', '', '', ''); - $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1'); - - return "<div class='liste'><table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>" - . afficher_liste($largeurs, $table, $styles) - . "</table></div>\n"; + $f = charger_fonction('editer_auteurs', 'inc'); + return $f($id_article, 'ajax', _request('cherche_auteur'), _request('ids')); } - - -// http://doc.spip.org/@ajouter_auteurs_articles -function ajouter_auteurs_articles($id_article, $les_auteurs) -{ - $result = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") . "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom"); - - if (!$num = spip_num_rows($result)) return ''; - - $js = "\"findObj_forcer('valider_ajouter_auteur').style.visibility='visible';\""; - - return ajax_action_auteur('editer_auteurs', $id_article,'articles', "id_article=$id_article", - ( - "<span class='verdana1'><B>"._T('titre_cadre_ajouter_auteur')." </B></span>\n" . - - ($num > 200 - ? ("<input type='text' name='cherche_auteur' onClick=$js CLASS='fondl' VALUE='' SIZE='20' />" . - "<span class='visible_au_chargement' id='valider_ajouter_auteur'>\n<input type='submit' value='"._T('bouton_chercher')."' CLASS='fondo' /></span>") - : ("<select name='nouv_auteur' size='1' style='width:150px;' CLASS='fondl' onChange=$js>" . - articles_auteur_select($result) . - "</select>" . - "<span class='visible_au_chargement' id='valider_ajouter_auteur'>" . - " <input type='submit' value='"._T('bouton_ajouter')."' CLASS='fondo'>" . - "</span>")))); -} - -// http://doc.spip.org/@articles_auteur_select -function articles_auteur_select($result) -{ - global $couleur_claire ; - - $statut_old = $premiere_old = $res = ''; - - while ($row = spip_fetch_array($result)) { - $id_auteur = $row["id_auteur"]; - $nom = $row["nom"]; - $email = $row["email"]; - $statut = $row["statut"]; - - $statut=str_replace("0minirezo", _T('info_administrateurs'), $statut); - $statut=str_replace("1comite", _T('info_redacteurs'), $statut); - $statut=str_replace("6visiteur", _T('info_visiteurs'), $statut); - - $premiere = strtoupper(substr(trim($nom), 0, 1)); - - if ($connect_statut != '0minirezo') - if ($p = strpos($email, '@')) - $email = substr($email, 0, $p).'@...'; - if ($email) - $email = " ($email)"; - - if ($statut != $statut_old) { - $res .= "\n<OPTION VALUE=\"x\">"; - $res .= "\n<OPTION VALUE=\"x\" style='background-color: $couleur_claire;'> $statut"; - } - - if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old)) - $res .= "\n<OPTION VALUE=\"x\">"; - - $res .= "\n<OPTION VALUE=\"$id_auteur\"> " . supprimer_tags(couper(typo("$nom$email"), 40)); - $statut_old = $statut; - $premiere_old = $premiere; - } - return $res; -} - ?> diff --git a/ecrire/fragments/referencer_traduction.php b/ecrire/fragments/referencer_traduction.php index a327d51cf99216611829477137910747ceca421c..5e4b57fc94d9464398475673c6fd0911b1701db3 100644 --- a/ecrire/fragments/referencer_traduction.php +++ b/ecrire/fragments/referencer_traduction.php @@ -12,19 +12,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/presentation'); - function fragments_referencer_traduction_dist() { - include_spip('inc/actions'); - $id_article = intval(_request('id_article')); - if ($GLOBALS['connect_toutes_rubriques']) // pour eviter SQL - $droit = true; - else $droit = acces_article($id_article); - - if (!$droit) { + if (!acces_article($id_article)) { spip_log("Tentative d'intrusion de " . $GLOBALS['auteur_session']['nom'] . " dans " . $GLOBALS['exec']); include_spip('inc/minipres'); minipres(_T('info_acces_interdit')); @@ -32,179 +24,7 @@ function fragments_referencer_traduction_dist() $row = spip_fetch_array(spip_query("SELECT id_trad, id_rubrique FROM spip_articles WHERE id_article=$id_article")); - return formulaire_referencer_traduction($id_article, $row['id_rubrique'], $row['id_trad'], 'ajax'); -} - -function formulaire_referencer_traduction($id_article, $id_rubrique, $id_trad, $flag_editable, $trad_err='') -{ - global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques, $spip_lang_right, $dir_lang; - - $langue_article = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article")); - - $langue_article = $langue_article['lang']; - - $reponse = ''; - // Choix langue article - if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) { - - $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); - $langue_parent = $row['lang']; - - if (!$langue_parent) - $langue_parent = $GLOBALS['meta']['langue_site']; - if (!$langue_article) - $langue_article = $langue_parent; - - $menu = menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, 'ajax'); - - $menu = ajax_action_auteur('referencer_traduction', "$id_article,$id_rubrique","articles","id_article=$id_article", $menu); - - $reponse .= debut_cadre_couleur('',true) - . "\n<div style='text-align: center;'>" - . $menu - . "</div>\n" - . fin_cadre_couleur(true); - } - - if ($trad_err) - $reponse .= "<div><font color='red' size='2' face='verdana,arial,helvetica,sans-serif'>"._T('trad_deja_traduit'). "</font></div>"; - - // Afficher la liste des traductions - $table = !$id_trad ? array() : articles_traduction($id_article, $id_trad); - - // bloc traductions - if (count($table) > 0) { - - $largeurs = array(7, 12, '', 100); - $styles = array('', '', 'arial2', 'arial2'); - - $liste = "\n<div class='liste'>" - . bandeau_titre_boite2(_T('trad_article_traduction'),'', 'white', 'black', false) - . "<table width='100%' cellspacing='0' border='0' cellpadding='2'>" - . afficher_liste ($largeurs, $table, $styles) - . "</table>" - . "</div>"; - } - - // changer les globales $dir_lang etc - changer_typo($langue_article); - - $form = "<table width='100%'><tr>"; - - if ($flag_editable AND $options == "avancees" AND !$table) { - // Formulaire pour lier a un article - $form .= "<td class='arial2' width='60%'>" - . ajax_action_auteur("referencer_traduction", - $id_article, - 'articles', - "id_article=$id_article", - (_T('trad_lier') . - "\n<input type='text' class='fondl' name='lier_trad' size='5' />\n<input type='submit' value='"._T('bouton_valider')."' class='fondl' />")) - . "</td>\n" - . "<td background='' width='10'> </td>" - . "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" - . "<td background='' width='10'> </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_editable AND $options == "avancees" AND $table) { - $clic = _T('trad_delier'); - $form .= "<td background='' width='10'> </td>" - . "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" - . "<td background='' width='10'> </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).")"; - - return ($flag_editable === 'ajax') - ? - debut_cadre_enfonce('langues-24.gif', true, "", - bouton_block_visible('languearticle,lier_traductions') - . $bouton) - . debut_block_visible('languearticle') - . $reponse - . fin_block() - . $liste - . debut_block_visible('lier_traductions') - . $form - . fin_block() - . fin_cadre_enfonce(true) - . fin_block() - : - "<div id='referencer_traduction-$id_article'>" - . debut_cadre_enfonce('langues-24.gif', true, "", - bouton_block_invisible('languearticle,lier_traductions') - . $bouton) - . debut_block_invisible('languearticle') - . $reponse - . fin_block() - . $liste - . debut_block_invisible('lier_traductions') - . $form - . fin_block() - . fin_cadre_enfonce(true) - . "</div>"; -} - - -// http://doc.spip.org/@articles_traduction -function articles_traduction($id_article, $id_trad) -{ - global $connect_toutes_rubriques, $dir_lang; - - $result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad"); - - $table= array(); - - while ($row = spip_fetch_array($result_trad)) { - $vals = array(); - $id_article_trad = $row["id_article"]; - $id_rubrique_trad = $row["id_rubrique"]; - $titre_trad = $row["titre"]; - $lang_trad = $row["lang"]; - $statut_trad = $row["statut"]; - - changer_typo($lang_trad); - $titre_trad = "<span $dir_lang>$titre_trad</span>"; - - $vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'"); - - if ($id_article_trad == $id_trad) { - $vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'"); - $titre_trad = "<b>$titre_trad</b>"; - } else { - if (!$connect_toutes_rubriques) - $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'"); - else - $vals[] = ajax_action_auteur("referencer_traduction", "$id_article,$id_trad,$id_article_trad", 'articles', "id_article=$id_article", array(http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'"), ' title="' . _T('trad_reference') . '"')); - } - - $s = typo($titre_trad); - if ($id_article_trad != $id_article) - $s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad") . "'>$s</a>"; - if ($id_article_trad == $id_trad) - $s .= " "._T('trad_reference'); - - $vals[] = $s; - $vals[] = traduire_nom_langue($lang_trad); - $table[] = $vals; - } - - return $table; + $f = charger_fonction('referencer_traduction', 'inc'); + return $f($id_article, 'ajax', $row['id_rubrique'], $row['id_trad']); } ?> diff --git a/ecrire/fragments/virtualiser.php b/ecrire/fragments/virtualiser.php index 2761d30d25a663f50d1dd696e033bcf7164132de..ea18864e9fcbdf2fff3ba89ffde4835b45dba518 100644 --- a/ecrire/fragments/virtualiser.php +++ b/ecrire/fragments/virtualiser.php @@ -11,38 +11,6 @@ \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/actions'); - -// http://doc.spip.org/@formulaire_virtualiser -function formulaire_virtualiser($id_article, $virtuel, $script, $args) -{ - global $spip_lang_right, $spip_lang_left; - - if ($virtuel === 'ajax') { - $row = spip_fetch_array(spip_query("SELECT chapo FROM spip_articles WHERE id_article='$id_article'")); - $virtuel = $row['chapo']; - if (substr($virtuel, 0, 1) == '=') { - $virtuel = substr($virtuel, 1); - } - } - - $http = ($virtuel ? "" : "http://"); - - $r = "<input type='text' name='virtuel' class='formo' style='font-size:9px;' value='" - . $http - . $virtuel - . "' size='40' /><br />\n" - . "<font face='Verdana,Arial,Sans,sans-serif' size='2'>" - . "(<b>"._T('texte_article_virtuel') - . " :</b> " - . _T('texte_reference_mais_redirige') - . ")</font>" - . "\n<div align='$spip_lang_right'><input type='submit' class='fondo' value='" - . _T('bouton_changer') - . "' style='font-size:10px' /></div>"; - - return ajax_action_auteur('virtualiser', $id_article, $script, $args, $r); -} // http://doc.spip.org/@exec_virtualiser_dist function fragments_virtualiser_dist() @@ -56,7 +24,13 @@ function fragments_virtualiser_dist() minipres(_T('info_acces_interdit')); } - return formulaire_virtualiser($id_article, 'ajax', $script, "id_article=$id_article"); -} + $row = spip_fetch_array(spip_query("SELECT chapo FROM spip_articles WHERE id_article='$id_article'")); + $virtuel = $row['chapo']; + if (substr($virtuel, 0, 1) == '=') { + $virtuel = substr($virtuel, 1); + } + $f = charger_fonction('virtualiser', 'inc'); + return $f($id_article, 'ajax', $virtuel, "articles", "id_article=$id_article"); +} ?> diff --git a/ecrire/inc/dater.php b/ecrire/inc/dater.php new file mode 100644 index 0000000000000000000000000000000000000000..ac7d77218bcb5037e9d7f0a37e9f52093217c0e7 --- /dev/null +++ b/ecrire/inc/dater.php @@ -0,0 +1,165 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/presentation'); +include_spip('inc/texte'); +include_spip('inc/actions'); +include_spip('inc/date'); + +function inc_dater_dist($id_article, $flag_editable, $statut_article, $date, $date_redac) +{ + global $spip_lang_left, $spip_lang_right, $options; + + if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date_redac, $regs)) { + $annee_redac = $regs[1]; + $mois_redac = $regs[2]; + $jour_redac = $regs[3]; + $heure_redac = $regs[4]; + $minute_redac = $regs[5]; + if ($annee_redac > 4000) $annee_redac -= 9000; + } + + if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2})", $date, $regs)) { + $annee = $regs[1]; + $mois = $regs[2]; + $jour = $regs[3]; + $heure = $regs[4]; + $minute = $regs[5]; + } + + if ($flag_editable AND $options == 'avancees') { + + if ($statut_article == 'publie') { + + $js = "onchange=\"findObj_forcer('valider_date').style.visibility='visible';\""; + $res = ajax_action_auteur("dater", + "$id_article", + 'articles', + "id_article=$id_article", + ( + bouton_block_invisible("datepub") . + "<b><span class='verdana1'>". + _T('texte_date_publication_article'). + '</span> ' . + majuscules(affdate($date)) . + "</b>". + aide('artdate') . + debut_block_invisible("datepub") . + "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" . + afficher_jour($jour, "name='jour' size='1' class='fondl' $js", true) . + afficher_mois($mois, "name='mois' size='1' class='fondl' $js", true) . + afficher_annee($annee, "name='annee' size='1' class='fondl' $js") . + ' - ' . + afficher_heure($heure, "name='heure' size='1' class='fondl' $js") . + afficher_minute($minute, "name='minute' size='1' class='fondl' $js") . + "<span class='visible_au_chargement' id='valider_date'>" . + " \n<input type='submit' class='fondo' value='". + _T('bouton_changer')."' />" . + "</span>" . + "</div>" . + fin_block())); + } else { + $res = "\n<div><b> <span class='verdana1'>" + . _T('texte_date_creation_article') + . "</span>\n" + . majuscules(affdate($date))."</b>".aide('artdate')."</div>"; + } + + $possedeDateRedac= ($annee_redac.'-'.$mois_redac.'-'.$jour_redac != '0000-00-00'); + if (($options == 'avancees' AND $GLOBALS['meta']["articles_redac"] != 'non') + OR $possedeDateRedac) { + if ($possedeDateRedac) + $date_affichee = majuscules(affdate($date_redac)) +# ." " ._T('date_fmt_heures_minutes', array('h' =>$heure_redac, 'm'=>$minute_redac)) + ; + else + $date_affichee = majuscules(_T('jour_non_connu_nc')); + + $js = "\"findObj_forcer('valider_date_redac').style.visibility='visible';\""; + $res .= ajax_action_auteur("dater", + "$id_article", + 'articles', + "id_article=$id_article", + (bouton_block_invisible('dateredac') . + "<b>" . + "<span class='verdana1'>" . + majuscules(_T('texte_date_publication_anterieure')) . +'</span> '. + $date_affichee . + " " . + aide('artdate_redac') . + "</b>" . + debut_block_invisible('dateredac') . + "<div style='margin: 5px; margin-$spip_lang_left: 20px;'>" . + '<table cellpadding="0" cellspacing="0" border="0" width="100%">' . + '<tr><td align="$spip_lang_left">' . + '<input type="radio" name="avec_redac" value="non" id="avec_redac_on"' . + ($possedeDateRedac ? '' : ' checked="checked"') . + " onClick=$js" . + ' /> <label for="avec_redac_on">'. + _T('texte_date_publication_anterieure_nonaffichee'). + '</label>' . + '<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off"' . + (!$possedeDateRedac ? '' : ' checked="checked"') . + " onClick=$js /> <label for='avec_redac_off'>" . + _T('bouton_radio_afficher'). + ' :</label> ' . + afficher_jour($jour_redac, "name='jour_redac' class='fondl' onchange=$js", true) . + afficher_mois($mois_redac, "name='mois_redac' class='fondl' onchange=$js", true) . + "<input type='text' name='annee_redac' class='fondl' value='".$annee_redac."' size='5' maxlength='4' onclick=$js />" . + '<div align="center">' . + afficher_heure($heure_redac, "name='heure_redac' class='fondl' onchange=$js", true) . + afficher_minute($minute_redac, "name='minute_redac' class='fondl' onchange=$js", true) . + "</div>\n" . + + '</td><td align="$spip_lang_right">' . + "<span class='visible_au_chargement' id='valider_date_redac'>" . + '<input type="submit" class="fondo" value="'. + _T('bouton_changer').'" />' . + "</span>" . + '</td></tr>' . + '</table>' . + '</div>' . + fin_block()) #, " method='post'" +); + } + } else { + + $res .= "<div style='text-align:center;'><b> <span class='verdana1'>" + . (($statut_article == 'publie') + ? _T('texte_date_publication_article') + : _T('texte_date_creation_article')) + . "</span> " + . majuscules(affdate($date))."</b>".aide('artdate')."</div>"; + + if ($possedeDateRedac) { + $res .= "<div style='text-align:center;'><b><span class='verdana1'>" + . _T('texte_date_publication_anterieure') + . "</span> " + . ' : ' + . majuscules(affdate($date_redac)) + . "</b>" + . aide('artdate_redac') + . "</div>"; + } + } + + $res = debut_cadre_couleur('',true) . $res . fin_cadre_couleur(true); + + return ($flag_editable === 'ajax') + ? $res + : "<div id='dater-$id_article'>$res</div>"; +} + +?> diff --git a/ecrire/inc/discuter.php b/ecrire/inc/discuter.php new file mode 100644 index 0000000000000000000000000000000000000000..893751f0194502bf38bf42196113eb31f8a52fc7 --- /dev/null +++ b/ecrire/inc/discuter.php @@ -0,0 +1,71 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/forum'); +include_spip('inc/presentation'); + +// http://doc.spip.org/@formulaire_discuter +function formulaire_discuter($query, $total, $debut, $total_afficher, $script, $args, $mute=false) +{ + $res = $nav =''; + if ($total > $total_afficher) { + $evt = $_COOKIE['spip_accepte_ajax'] == 1; + $nav = "<div class='serif2' align='center'>"; + for ($i = 0; $i < $total; $i = $i + $total_afficher){ + $y = $i + $total_afficher - 1; + if ($i == $debut) + $nav .= "<font size='3'><b>[$i-$y]</b></font> "; + else { + $a = "$args&debut=$i"; + if (!$evt) { + $h = generer_url_ecrire($script, $a); + } else { + $h = generer_url_ecrire('discuter', $a); + $evt = "\nonclick='return AjaxSqueeze(\"$h\",\n\t\"forum\")'"; + } + $nav .= "[<a href='$h#forum'$evt>$i-$y</a>] "; + } + } + $nav .= "</div>"; + } + + $res = $nav + . afficher_forum($query, $script, $args, $mute) + . "<br />" + . $nav; + + return $res; +} + +// http://doc.spip.org/@fragments_discuter_dist +function inc_discuter_dist($id_article, $flag, $debut=1) +{ + $debut = intval($debut); + $id_article = intval($id_article); + + $res = spip_fetch_array(spip_query("SELECT COUNT(*) AS cnt FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0")); + $res = $res["cnt"]; + + if ($res) { + + $total_afficher = 8; + $forum = spip_query("SELECT * FROM spip_forum WHERE statut='prive' AND id_article='$id_article' AND id_parent=0 ORDER BY date_heure DESC" . " LIMIT $debut,$total_afficher" ); +# " LIMIT $total_afficher OFFSET $debut" # PG + + $res = formulaire_discuter($forum, $res, $debut, $total_afficher, 'articles', "id_article=$id_article"); + } + + return ($flag=='ajax') ? $res : "<div id='forum'>$res</div>"; +} +?> diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php new file mode 100644 index 0000000000000000000000000000000000000000..67451aa63a9d1d3e70063c2d7a133debaa009a1a --- /dev/null +++ b/ecrire/inc/editer_auteurs.php @@ -0,0 +1,271 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/presentation'); +include_spip('inc/actions'); + +function inc_editer_auteurs_dist($id_article, $flag_editable, $cherche_auteur, $ids) +{ + global $spip_lang_left, $spip_lang_right, $options; + +// +// complement de action/editer_auteurs.php pour notifier la recherche d'auteur +// + + $bouton_creer_auteur = $GLOBALS['connect_toutes_rubriques']; + + if ($cherche_auteur) { + + $reponse ="<p align='$spip_lang_left'>" + . debut_boite_info(true) + . rechercher_auteurs_articles($cherche_auteur, $ids, $id_article); + + if ($bouton_creer_auteur) { + + $reponse .="<div style='width: 200px;'>" + . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&nom=" . rawurlencode($cherche_auteur). "&redirect=" . generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) + . "</div> "; + + $bouton_creer_auteur = false; + } + + $reponse .= fin_boite_info(true) + . '</p>'; + } else $reponse =''; + +// +// Afficher les auteurs +// + $les_auteurs = array(); + + $result = spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article"); + + while ($row = spip_fetch_array($result)) + $les_auteurs[]= $row['id_auteur']; + + if ($les_auteurs = join(',', $les_auteurs)) + $reponse .= afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs); + +// +// Ajouter un auteur +// + + $res = ''; + if ($flag_editable AND $options == 'avancees') { + + if ($bouton_creer_auteur) { + + $res = "<div style='width:170px;'><span class='verdana1'><b>" + . icone_horizontale(_T('icone_creer_auteur'), generer_url_ecrire("auteur_infos","ajouter_id_article=$id_article&redirect=" .generer_url_retour("articles","id_article=$id_article")), "redacteurs-24.gif", "creer.gif", false) + . "</b></span></div>\n"; + } + + $res = "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>" + . ajouter_auteurs_articles($id_article, $les_auteurs, $bouton_creer_auteur) + ."</div>\n" + . $res; + + } + + $bouton = (!$flag_editable + ? '' + : (($flag_editable === 'ajax') + ? bouton_block_visible("auteursarticle") + : bouton_block_invisible("auteursarticle"))) + . _T('texte_auteurs') +. aide("artauteurs"); + + $res = '<div> </div>' // pour placer le gif patienteur + . debut_cadre_enfonce("auteur-24.gif", true, "", $bouton) + . $reponse + . ($flag_editable === 'ajax' ? + debut_block_visible("auteursarticle") : + debut_block_invisible("auteursarticle")) + . $res + . fin_block() + . fin_cadre_enfonce(true); + + return ($flag_editable === 'ajax') + ? $res + : "\n<div id='editer_auteurs-$id_article'>$res</div>"; +} + +// http://doc.spip.org/@rechercher_auteurs_articles +function rechercher_auteurs_articles($cherche_auteur, $ids, $id_article) +{ + if (!$ids) { + return "<B>"._T('texte_aucun_resultat_auteur', array('cherche_auteur' => $cherche_auteur)).".</B><BR />"; + } + elseif ($ids == -1) { + return "<B>"._T('texte_trop_resultats_auteurs', array('cherche_auteur' => $cherche_auteur))."</B><BR />"; + } + elseif (preg_match('/^\d+$/',$ids)) { + + $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$ids")); + return "<B>"._T('texte_ajout_auteur')."</B><BR /><UL><LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><B><FONT SIZE=3>".typo($row['nom'])."</FONT></B></UL>"; + } + else { + $ids = preg_replace('/[^0-9,]/','',$ids); // securite + $result = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN ($ids) ORDER BY nom"); + + $res = "<B>" + . _T('texte_plusieurs_articles', array('cherche_auteur' => $cherche_auteur)) + . "</B><BR />" + . "<UL class='verdana1'>"; + while ($row = spip_fetch_array($result)) { + $id_auteur = $row['id_auteur']; + $nom_auteur = $row['nom']; + $email_auteur = $row['email']; + $bio_auteur = $row['bio']; + + $res .= "<li><b>".typo($nom_auteur)."</b>"; + + if ($email_auteur) $res .= " ($email_auteur)"; + + $res .= " | " + . ajax_action_auteur('editer_auteurs', "$id_article,$id_auteur","articles","id_article=$id_article", array(_T('lien_ajouter_auteur'))); + + if (trim($bio_auteur)) { + $res .= "<br />".couper(propre($bio_auteur), 100)."\n"; + } + $res .= "</li>\n"; + } + $res .= "</UL>"; + return $res; + } +} + +// http://doc.spip.org/@afficher_auteurs_articles +function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs) +{ + global $connect_statut, $options,$connect_id_auteur; + + $table = array(); + + $result = spip_query("SELECT * FROM spip_auteurs AS A WHERE A.id_auteur IN ($les_auteurs) ORDER BY A.nom"); + + while ($row = spip_fetch_array($result)) { + $vals = array(); + $id_auteur = $row["id_auteur"]; + $nom_auteur = $row["nom"]; + $email_auteur = $row["email"]; + if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100)))) + $bio_auteur = " TITLE=\"$bio_auteur\""; + $url_site_auteur = $row["url_site"]; + $statut_auteur = $row["statut"]; + if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non'; + + $vals[] = bonhomme_statut($row); + + $vals[] = "<a href='" . generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur") . "' $bio_auteur>".typo($nom_auteur)."</a>"; + + $vals[] = bouton_imessage($id_auteur); + + if ($email_auteur) $vals[] = "<A href='mailto:$email_auteur'>"._T('email')."</A>"; + else $vals[] = " "; + + if ($url_site_auteur) $vals[] = "<A href='$url_site_auteur'>"._T('info_site_min')."</A>"; + else $vals[] = " "; + + $cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur")); + + $nombre_articles = intval($cpt['n']); + + if ($nombre_articles > 1) $vals[] = $nombre_articles.' '._T('info_article_2'); + elseif ($nombre_articles == 1) $vals[] = _T('info_1_article'); + else $vals[] = " "; + + if ($flag_editable AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo') AND $options == 'avancees') { + $vals[] = ajax_action_auteur('editer_auteurs', "$id_article,-$id_auteur",'articles', "id_article=$id_article", array(_T('lien_retirer_auteur')." ". http_img_pack('croix-rouge.gif', "X", "width='7' height='7' border='0' align='middle'"))); + } else { + $vals[] = ""; + } + + $table[] = $vals; + } + + $largeurs = array('14', '', '', '', '', '', ''); + $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial11', 'arial1'); + + return "<div class='liste'><table width='100%' cellpadding='3' cellspacing='0' border='0' background=''>" + . afficher_liste($largeurs, $table, $styles) + . "</table></div>\n"; +} + + +// http://doc.spip.org/@ajouter_auteurs_articles +function ajouter_auteurs_articles($id_article, $les_auteurs) +{ + $result = spip_query("SELECT * FROM spip_auteurs WHERE " . (!$les_auteurs ? '' : "id_auteur NOT IN ($les_auteurs) AND ") . "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY statut, nom"); + + if (!$num = spip_num_rows($result)) return ''; + + $js = "\"findObj_forcer('valider_ajouter_auteur').style.visibility='visible';\""; + + return ajax_action_auteur('editer_auteurs', $id_article,'articles', "id_article=$id_article", + ( + "<span class='verdana1'><B>"._T('titre_cadre_ajouter_auteur')." </B></span>\n" . + + ($num > 200 + ? ("<input type='text' name='cherche_auteur' onClick=$js CLASS='fondl' VALUE='' SIZE='20' />" . + "<span class='visible_au_chargement' id='valider_ajouter_auteur'>\n<input type='submit' value='"._T('bouton_chercher')."' CLASS='fondo' /></span>") + : ("<select name='nouv_auteur' size='1' style='width:150px;' CLASS='fondl' onChange=$js>" . + articles_auteur_select($result) . + "</select>" . + "<span class='visible_au_chargement' id='valider_ajouter_auteur'>" . + " <input type='submit' value='"._T('bouton_ajouter')."' CLASS='fondo'>" . + "</span>")))); +} + +// http://doc.spip.org/@articles_auteur_select +function articles_auteur_select($result) +{ + global $couleur_claire ; + + $statut_old = $premiere_old = $res = ''; + + while ($row = spip_fetch_array($result)) { + $id_auteur = $row["id_auteur"]; + $nom = $row["nom"]; + $email = $row["email"]; + $statut = $row["statut"]; + + $statut=str_replace("0minirezo", _T('info_administrateurs'), $statut); + $statut=str_replace("1comite", _T('info_redacteurs'), $statut); + $statut=str_replace("6visiteur", _T('info_visiteurs'), $statut); + + $premiere = strtoupper(substr(trim($nom), 0, 1)); + + if ($connect_statut != '0minirezo') + if ($p = strpos($email, '@')) + $email = substr($email, 0, $p).'@...'; + if ($email) + $email = " ($email)"; + + if ($statut != $statut_old) { + $res .= "\n<OPTION VALUE=\"x\">"; + $res .= "\n<OPTION VALUE=\"x\" style='background-color: $couleur_claire;'> $statut"; + } + + if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old)) + $res .= "\n<OPTION VALUE=\"x\">"; + + $res .= "\n<OPTION VALUE=\"$id_auteur\"> " . supprimer_tags(couper(typo("$nom$email"), 40)); + $statut_old = $statut; + $premiere_old = $premiere; + } + return $res; +} + +?> diff --git a/ecrire/inc/referencer_traduction.php b/ecrire/inc/referencer_traduction.php new file mode 100644 index 0000000000000000000000000000000000000000..088eaec3c1ee3a2741d8f9af6e6f85bce6921ea5 --- /dev/null +++ b/ecrire/inc/referencer_traduction.php @@ -0,0 +1,188 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/presentation'); + +function inc_referencer_traduction_dist($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err='') +{ + global $connect_statut, $couleur_claire, $options, $connect_toutes_rubriques, $spip_lang_right, $dir_lang; + + $langue_article = spip_fetch_array(spip_query("SELECT lang FROM spip_articles WHERE id_article=$id_article")); + + $langue_article = $langue_article['lang']; + + $reponse = ''; + // Choix langue article + if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $flag_editable) { + + $row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); + $langue_parent = $row['lang']; + + if (!$langue_parent) + $langue_parent = $GLOBALS['meta']['langue_site']; + if (!$langue_article) + $langue_article = $langue_parent; + + $menu = menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, 'ajax'); + + $menu = ajax_action_auteur('referencer_traduction', "$id_article,$id_rubrique","articles","id_article=$id_article", $menu); + + $reponse .= debut_cadre_couleur('',true) + . "\n<div style='text-align: center;'>" + . $menu + . "</div>\n" + . fin_cadre_couleur(true); + } + + if ($trad_err) + $reponse .= "<div><font color='red' size='2' face='verdana,arial,helvetica,sans-serif'>"._T('trad_deja_traduit'). "</font></div>"; + + // Afficher la liste des traductions + $table = !$id_trad ? array() : articles_traduction($id_article, $id_trad); + + // bloc traductions + if (count($table) > 0) { + + $largeurs = array(7, 12, '', 100); + $styles = array('', '', 'arial2', 'arial2'); + + $liste = "\n<div class='liste'>" + . bandeau_titre_boite2(_T('trad_article_traduction'),'', 'white', 'black', false) + . "<table width='100%' cellspacing='0' border='0' cellpadding='2'>" + . afficher_liste ($largeurs, $table, $styles) + . "</table>" + . "</div>"; + } + + // changer les globales $dir_lang etc + changer_typo($langue_article); + + $form = "<table width='100%'><tr>"; + + if ($flag_editable AND $options == "avancees" AND !$table) { + // Formulaire pour lier a un article + $form .= "<td class='arial2' width='60%'>" + . ajax_action_auteur("referencer_traduction", + $id_article, + 'articles', + "id_article=$id_article", + (_T('trad_lier') . + "\n<input type='text' class='fondl' name='lier_trad' size='5' />\n<input type='submit' value='"._T('bouton_valider')."' class='fondl' />")) + . "</td>\n" + . "<td background='' width='10'> </td>" + . "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" + . "<td background='' width='10'> </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_editable AND $options == "avancees" AND $table) { + $clic = _T('trad_delier'); + $form .= "<td background='' width='10'> </td>" + . "<td background='" . _DIR_IMG_PACK . "tirets-separation.gif' width='2'>". http_img_pack('rien.gif', " ", "width='2' height='2'") . "</td>" + . "<td background='' width='10'> </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).")"; + + return ($flag_editable === 'ajax') + ? + (debut_cadre_enfonce('langues-24.gif', true, "", + bouton_block_visible('languearticle,lier_traductions') + . $bouton) + . debut_block_visible('languearticle') + . $reponse + . fin_block() + . $liste + . debut_block_visible('lier_traductions') + . $form + . fin_block() + . fin_cadre_enfonce(true) + . fin_block()) + : ("<div id='referencer_traduction-$id_article'>" + . debut_cadre_enfonce('langues-24.gif', true, "", + bouton_block_invisible('languearticle,lier_traductions') + . $bouton) + . debut_block_invisible('languearticle') + . $reponse + . fin_block() + . $liste + . debut_block_invisible('lier_traductions') + . $form + . fin_block() + . fin_cadre_enfonce(true) + . "</div>"); +} + + +// http://doc.spip.org/@articles_traduction +function articles_traduction($id_article, $id_trad) +{ + global $connect_toutes_rubriques, $dir_lang; + + $result_trad = spip_query("SELECT id_article, id_rubrique, titre, lang, statut FROM spip_articles WHERE id_trad = $id_trad"); + + $table= array(); + + while ($row = spip_fetch_array($result_trad)) { + $vals = array(); + $id_article_trad = $row["id_article"]; + $id_rubrique_trad = $row["id_rubrique"]; + $titre_trad = $row["titre"]; + $lang_trad = $row["lang"]; + $statut_trad = $row["statut"]; + + changer_typo($lang_trad); + $titre_trad = "<span $dir_lang>$titre_trad</span>"; + + $vals[] = http_img_pack("puce-".puce_statut($statut_trad).'.gif', "", "width='7' height='7' border='0' NAME='statut'"); + + if ($id_article_trad == $id_trad) { + $vals[] = http_img_pack('langues-12.gif', "", "width='12' height='12' border='0'"); + $titre_trad = "<b>$titre_trad</b>"; + } else { + if (!$connect_toutes_rubriques) + $vals[] = http_img_pack('langues-off-12.gif', "", "width='12' height='12' border='0'"); + else + $vals[] = ajax_action_auteur("referencer_traduction", "$id_article,$id_trad,$id_article_trad", 'articles', "id_article=$id_article", array(http_img_pack('langues-off-12.gif', _T('trad_reference'), "width='12' height='12' border='0'"), ' title="' . _T('trad_reference') . '"')); + } + + $s = typo($titre_trad); + if ($id_article_trad != $id_article) + $s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad") . "'>$s</a>"; + if ($id_article_trad == $id_trad) + $s .= " "._T('trad_reference'); + + $vals[] = $s; + $vals[] = traduire_nom_langue($lang_trad); + $table[] = $vals; + } + + return $table; +} +?> diff --git a/ecrire/inc/virtualiser.php b/ecrire/inc/virtualiser.php new file mode 100644 index 0000000000000000000000000000000000000000..4ce28b65f417bf5f4443c8433115ed1323ee141b --- /dev/null +++ b/ecrire/inc/virtualiser.php @@ -0,0 +1,40 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; +include_spip('inc/actions'); + +// http://doc.spip.org/@formulaire_virtualiser +function inc_virtualiser_dist($id_article, $flag, $virtuel, $script, $args) +{ + global $spip_lang_right; + + $http = ($virtuel ? "" : "http://"); + + $res = "<input type='text' name='virtuel' class='formo' style='font-size:9px;' value='" + . $http + . $virtuel + . "' size='40' /><br />\n" + . "<font face='Verdana,Arial,Sans,sans-serif' size='2'>" + . "(<b>"._T('texte_article_virtuel') + . " :</b> " + . _T('texte_reference_mais_redirige') + . ")</font>" + . "\n<div align='$spip_lang_right'><input type='submit' class='fondo' value='" + . _T('bouton_changer') + . "' style='font-size:10px' /></div>"; + + $res = ajax_action_auteur('virtualiser', $id_article, $script, $args, $res); + return ($flag=='ajax') ? $res : "<div id='virtualiser-$id_article'>$res</div>"; +} + +?>