Browse Source

Introduction d'un selecteur Ajax pour le bouton "Ajouter un auteur à cet article". Ce sélecteur partage le code du sélecteur de rubrique, savoir un mode de recherche interactive à chaque frappe de clavier, et un mode de sélection sur la liste des items en base. Cliquer sur un nom fait apparaitre l'icone de son statut, sa biographie, son logo et un lien vers son mail. Un double-clic provoque la sélectioon avec ajout immédiat, également en Ajax, dans la liste des auteurs.

A noter qu'au passage disparait la dernière URL codée en dur dans le code JavaScript. Il faudra veiller à ne pas en réintroduire, afin que d'éventuels changements de generer_url_ecrire soient bien intégralement répercutés.
1.9.2
Committo,Ergo:sum 17 years ago
parent
commit
30353bdd75
  1. 5
      .gitattributes
  2. 25
      dist/javascript/layer.js
  3. 4
      dist/javascript/presentation.js
  4. 25
      ecrire/exec/informer_auteur.php
  5. 8
      ecrire/exec/rechercher.php
  6. 33
      ecrire/exec/rechercher_auteur.php
  7. 25
      ecrire/exec/selectionner_auteur.php
  8. 15
      ecrire/inc/chercher_rubrique.php
  9. 67
      ecrire/inc/editer_auteurs.php
  10. 2
      ecrire/inc/informer.php
  11. 67
      ecrire/inc/informer_auteur.php
  12. 7
      ecrire/inc/plonger.php
  13. 36
      ecrire/inc/selectionner.php
  14. 93
      ecrire/inc/selectionner_auteur.php

5
.gitattributes vendored

@ -390,6 +390,7 @@ ecrire/exec/grouper_mots.php -text
ecrire/exec/iconifier.php -text
ecrire/exec/import_all.php -text
ecrire/exec/informer.php -text
ecrire/exec/informer_auteur.php -text
ecrire/exec/install.php -text
ecrire/exec/instituer_auteur.php -text
ecrire/exec/lang_raccourcis.php -text
@ -408,10 +409,12 @@ ecrire/exec/plonger.php -text
ecrire/exec/poster.php -text
ecrire/exec/recherche.php -text
ecrire/exec/rechercher.php -text
ecrire/exec/rechercher_auteur.php -text
ecrire/exec/referencer_traduction.php -text
ecrire/exec/rubriquer.php -text
ecrire/exec/rubriques_edit.php -text
ecrire/exec/selectionner.php -text
ecrire/exec/selectionner_auteur.php -text
ecrire/exec/sites_edit.php -text
ecrire/exec/sites_tous.php -text
ecrire/exec/statistiques_lang.php -text
@ -449,6 +452,7 @@ ecrire/inc/import_0_0.php -text
ecrire/inc/import_1_2.php -text
ecrire/inc/import_1_3.php -text
ecrire/inc/informer.php -text
ecrire/inc/informer_auteur.php -text
ecrire/inc/instituer_article.php -text
ecrire/inc/instituer_auteur.php -text
ecrire/inc/joindre.php -text
@ -465,6 +469,7 @@ ecrire/inc/popularites.php -text
ecrire/inc/poster.php -text
ecrire/inc/referencer_traduction.php -text
ecrire/inc/selectionner.php -text
ecrire/inc/selectionner_auteur.php -text
ecrire/inc/sites_voir.php -text
ecrire/inc/suivi_versions.php -text
ecrire/inc/syndic.php -text

25
dist/javascript/layer.js vendored

@ -111,31 +111,31 @@ function changerhighlight (couche) {
couche.className = "highlight";
}
function aff_selection (type, rac, id) {
findObj_forcer(rac+"_selection").style.display = "none";
charger_id_url("./?exec=informer&type="+type+"&id="+id+"&rac="+rac, rac+"_selection");
function aff_selection (arg, idom, url)
{
noeud = findObj_forcer(idom);
if (noeud) {
noeud.style.display = "none";
charger_node_url(url+arg, noeud);
}
}
// selecteur de rubrique et affichage de son titre dans le bandeau
function aff_selection_titre(titre, id_rubrique)
function aff_selection_titre(titre, id, idom)
{
findObj_forcer('titreparent').value=titre;
findObj_forcer('id_parent').value=id_rubrique;
findObj_forcer('selection_rubrique').style.display='none';
findObj_forcer('id_parent').value=id;
findObj_forcer(idom).style.display='none';
}
function aff_selection_provisoire(id_rubrique, racine, url, col, sens)
function aff_selection_provisoire(id, racine, url, col, sens,informer)
{
charger_id_url(url.href,
racine + '_col_' + (col+1),
function() {
slide_horizontal(racine + 'principal', ((col-1)*150), sens);
// afficher le descriptif de la rubrique dans la div du dessous?
// si trop lent, commenter la ligne ci-dessous
aff_selection('rubrique',racine,id_rubrique);
aff_selection (id, racine + "_selection", informer);
}
);
// empecher le chargement non Ajax
@ -276,6 +276,7 @@ function AjaxSqueezeNode(trig, noeud, f)
function charger_id_url(myUrl, myField, jjscript)
{
var Field = findObj_forcer(myField);
// alert(myField + Field + myUrl);
if (!Field) return true;
if (!myUrl) {

4
dist/javascript/presentation.js vendored

@ -170,10 +170,10 @@ function lancer_recherche(champ, cible) {
*/
}
function lancer_recherche_rub(champ, rac, exclus) {
function onkeypress_rechercher(champ, rac, url) {
valeur = findObj(champ).value;
if (valeur.length > 0) {
charger_id_url('./?exec=rechercher&type='+valeur+'&exclus='+exclus+'&rac='+rac, rac+'_col_1');
charger_id_url(url+valeur, rac);
}
}

25
ecrire/exec/informer_auteur.php

@ -0,0 +1,25 @@
<?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;
# Les informations d'une rubrique selectionnee dans le mini navigateur
function exec_informer_auteur_dist()
{
$id = intval(_request('id'));
$informer_auteur = charger_fonction('informer_auteur', 'inc');
ajax_retour($informer_auteur($id));
}
?>

8
ecrire/exec/rechercher.php

@ -21,6 +21,7 @@ function exec_rechercher_dist()
$id = intval($id);
$exclus = intval($exclus);
$rac = htmlentities($rac);
include_spip('inc/texte');
$where = split("[[:space:]]+", $type);
@ -75,15 +76,14 @@ function exec_rechercher_dist()
// Eviter une premiere fois d'afficher la rubrique exclue
if ($id_parent == 0) $style = "style='background-image: url(" . _DIR_IMG_PACK . "secteur-12.gif)'";
else $style = "";
$onClick = " aff_selection('rubrique','" .
htmlentities($rac) .
"','$id_rubrique');";
$info = generer_url_ecrire('informer', "type=rubrique&rac=$rac&id=");
$onClick = " aff_selection($id_rubrique, '$rac" ."_selection', '$info');";
$btitre = strtr(str_replace("'", "&#8217;",
str_replace('"', "&#34;", textebrut($titre))),
"\n\r", " ");
$ondbClick = "aff_selection_titre('$btitre',$id_rubrique;);";
$ondbClick = "aff_selection_titre('$btitre',$id_rubrique,'selection_rubrique');";
$ret .= "<div class='pashighlight' onClick=\"changerhighlight(this); $onClick\" ondblclick=\"$ondbClick$onClick\"><div class='arial11 petite-rubrique'$style>";
$ret .= "&nbsp; $titre";
$ret .= "</div></div>";

33
ecrire/exec/rechercher_auteur.php

@ -0,0 +1,33 @@
<?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;
# gerer un charset minimaliste en convertissant tout en unicode &#xxx;
// http://doc.spip.org/@exec_rechercher_dist
function exec_rechercher_auteur_dist()
{
$idom = _request('idom');
if (!preg_match('/\w+/',$idom)) die('Tu nous prend pour qui?');
$where = split("[[:space:]]+", _request('nom'));
if ($where) {
foreach ($where as $k => $v)
$where[$k] = "'%" . substr(str_replace("%","\%", spip_abstract_quote($v)),1,-1) . "%'";
$where= ("(nom LIKE " . join(" AND nom LIKE ", $where) . ")");
}
$q = spip_query("SELECT * FROM spip_auteurs WHERE $where");
include_spip('inc/selectionner_auteur');
ajax_retour(selectionner_auteur_boucle($q, $idom));
}
?>

25
ecrire/exec/selectionner_auteur.php

@ -0,0 +1,25 @@
<?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;
# afficher un mini-navigateur de rubriques
// http://doc.spip.org/@exec_selectionner_dist
function exec_selectionner_auteur_dist()
{
$id = intval(_request('id_article'));
$selectionner_auteur = charger_fonction('selectionner_auteur', 'inc');
ajax_retour($selectionner_auteur($id));
}
?>

15
ecrire/inc/chercher_rubrique.php

@ -12,7 +12,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
define(_SPIP_SELECT_RUBRIQUES, 20); /* mettre 100000 pour desactiver ajax */
define('_SPIP_SELECT_RUBRIQUES', 20); /* mettre 100000 pour desactiver ajax */
//
// Selecteur de rubriques pour l'espace prive
@ -204,10 +204,11 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) {
$titre = _T('info_racine_site');
$titre = str_replace('&amp;', '&', entites_html(textebrut(typo($titre))));
$titre = "<input type='text' id='titreparent' name='titreparent' disabled='disabled' class='forml' value=\"" . $titre . "\" />";
$url = generer_url_ecrire('selectionner',"id=$id_rubrique&type=$type" . (!$idem ? '' : ("&exclus=$idem&racine=" . ($restreint ? 'non' : 'oui'))));
return construire_selecteur($url, 'selection_rubrique', $id_rubrique, 'id_parent', $titre);
return construire_selecteur($url, '', 'selection_rubrique', 'id_parent', $titre, $id_rubrique);
}
// construit un bloc comportant une icone clicable avec image animee a cote
@ -216,9 +217,11 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) {
// (la fonction JS charger_node ignore l'attribut id qui ne sert en fait pas;
// getElement en mode Ajax est trop couteux).
function construire_selecteur($url, $idom, $id, $name, $titre)
function construire_selecteur($url, $js, $idom, $name, $titre='', $id=0)
{
return "<table width='100%'><tr width='100%'><td width='45'><a href='#'\nonclick=\"charger_node_url_si_vide('"
return "<table width='100%'><tr width='100%'><td width='45'><a href='#'\nonclick=\""
. $js
. "charger_node_url_si_vide('"
. $url
. "', this.parentNode.parentNode.parentNode.parentNode.nextSibling, this.nextSibling)\"><img src='"
. _DIR_IMG_PACK
@ -226,9 +229,9 @@ function construire_selecteur($url, $idom, $id, $name, $titre)
. _DIR_IMG_PACK
. "searching.gif' id='img_"
. $idom
. "' style='visibility: hidden;' /></td><td><input type='text' id='titreparent' name='titreparent' disabled='disabled' class='forml' value=\""
. "' style='visibility: hidden;' /></td><td>"
. $titre
."\" /><input type='hidden' id='$name' name='$name' value='"
. "<input type='hidden' id='$name' name='$name' value='"
. $id
. "' /></td></tr></table><div id='"
. $idom

67
ecrire/inc/editer_auteurs.php

@ -15,6 +15,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('inc/actions');
define('_SPIP_SELECT_AUTEURS', 20); /* mettre 100000 pour desactiver ajax */
// http://doc.spip.org/@inc_editer_auteurs_dist
function inc_editer_auteurs_dist($id_article, $flag, $cherche_auteur, $ids)
{
@ -22,8 +24,7 @@ function inc_editer_auteurs_dist($id_article, $flag, $cherche_auteur, $ids)
$les_auteurs = join(',', determiner_auteurs_article($id_article));
if ($flag AND $options == 'avancees') {
$r = 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");
$futurs = ajouter_auteurs_articles($id_article, $r);
$futurs = ajouter_auteurs_articles($id_article, $les_auteurs);
} else $futurs = '';
return editer_auteurs_article($id_article, $flag, $cherche_auteur, $ids, $les_auteurs, $futurs);
@ -181,7 +182,7 @@ function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs)
$nom_auteur = $row["nom"];
$email_auteur = $row["email"];
if ($bio_auteur = attribut_html(propre(couper($row["bio"], 100))))
$bio_auteur = " TITLE=\"$bio_auteur\"";
$bio_auteur = " title=\"$bio_auteur\"";
$url_site_auteur = $row["url_site"];
$statut_auteur = $row["statut"];
if ($row['messagerie'] == 'non' OR $row['login'] == '') $messagerie = 'non';
@ -225,27 +226,40 @@ function afficher_auteurs_articles($id_article, $flag_editable, $les_auteurs)
// http://doc.spip.org/@ajouter_auteurs_articles
function ajouter_auteurs_articles($id_article, $query)
function ajouter_auteurs_articles($id_article, $les_auteurs)
{
$query = determiner_non_auteurs($les_auteurs, "statut, nom");
if (!$num = spip_num_rows($query)) 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')."&nbsp; </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($query) .
"</select>" .
"<span class='visible_au_chargement' id='valider_ajouter_auteur'>" .
" <input type='submit' value='"._T('bouton_ajouter')."' CLASS='fondo'>" .
"</span>"))));
$js = "findObj_forcer('valider_ajouter_auteur').style.visibility='visible';";
$text = "<span class='verdana1'><b>"
. _T('titre_cadre_ajouter_auteur')
. "</b></span>\n";
$sel = ($num <= _SPIP_SELECT_AUTEURS
? ("$text<select name='nouv_auteur' size='1' style='width:150px;' CLASS='fondl' onchange=\"$js\">" .
articles_auteur_select($query) .
"</select>" .
"<span class='visible_au_chargement' id='valider_ajouter_auteur'>" .
" <input type='submit' value='"._T('bouton_ajouter')."' class='fondo'>" .
"</span>")
: (($_COOKIE['spip_accepte_ajax'] < 1)
? ("$text <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>")
: (selecteur_auteur_ajax($id_article, $js, $text)
. "<span class='visible_au_chargement' id='valider_ajouter_auteur'>"
. " <input type='submit' value='"._T('bouton_ajouter')."' class='fondo'>"
. "</span>")));
return ajax_action_auteur('editer_auteurs', $id_article,'articles', "id_article=$id_article", $sel);
}
function determiner_non_auteurs($les_auteurs, $order)
{
return 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 $order");
}
// http://doc.spip.org/@articles_auteur_select
function articles_auteur_select($result)
{
@ -272,18 +286,25 @@ function articles_auteur_select($result)
$email = " ($email)";
if ($statut != $statut_old) {
$res .= "\n<OPTION VALUE=\"x\">";
$res .= "\n<OPTION VALUE=\"x\" style='background-color: $couleur_claire;'> $statut";
$res .= "\n<option value=\"x\" />";
$res .= "\n<option value=\"x\" style='background-color: $couleur_claire;'> $statut</option>";
}
if ($premiere != $premiere_old AND ($statut != _T('info_administrateurs') OR !$premiere_old))
$res .= "\n<OPTION VALUE=\"x\">";
$res .= "\n<option value=\"x\" />";
$res .= "\n<OPTION VALUE=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;" . supprimer_tags(couper(typo("$nom$email"), 40));
$res .= "\n<option value=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;" . supprimer_tags(couper(typo("$nom$email"), 40)) . '</option>';
$statut_old = $statut;
$premiere_old = $premiere;
}
return $res;
}
function selecteur_auteur_ajax($id_article, $js, $text)
{
include_spip('inc/chercher_rubrique');
$url = generer_url_ecrire('selectionner_auteur',"id_article=$id_article");
return construire_selecteur($url, $js, 'selection_auteur', 'nouv_auteur', $text);
}
?>

2
ecrire/inc/informer.php

@ -63,7 +63,7 @@ function inc_informer_dist($id, $col, $exclus, $rac, $type)
. "<div style='text-align: $spip_lang_right;'>"
. "<input type='submit' class='fondo' value='"
. _T('bouton_choisir')
. "'\nonClick=\"aff_selection_titre('$titre',$id); return false;\" />"
. "'\nonclick=\"aff_selection_titre('$titre',$id),'selection_rubrique'; return false;\" />"
. "</div>"
. "</div>";
}

67
ecrire/inc/informer_auteur.php

@ -0,0 +1,67 @@
<?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;
# Les information d'une rubrique selectionnee dans le mini navigateur
// http://doc.spip.org/@inc_informer_dist
function inc_informer_auteur_dist($id)
{
global $couleur_foncee,$spip_display,$spip_lang_right ;
include_spip('inc/presentation');
$res = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur = $id");
if ($row = spip_fetch_array($res)) {
$nom = typo(extraire_multi($row["nom"]));
$bio = propre($row["bio"]);
$mail = $row['email'];
if (!email_valide($mail))
$mail = "<span style='color:red'>"
. _T('info_email_invalide')
. '</span>';
else $mail = "<a href='mailto:$mail'>"
. _T('info_ecire_message_prive')
. "</a>";
$mail = "<br /> ($mail)<br />";
} else {
$nom = "<span style='color:red'>"
. _T('texte_vide')
. '</span>';
$bio = $mail = '';
}
$res = '';
if ($spip_display != 1 AND $spip_display!=4 AND $GLOBALS['meta']['image_process'] != "non") {
$logo_f = charger_fonction('chercher_logo', 'inc');
if ($res = $logo_f($id, 'id_auteur', 'on')) {
list($fid, $dir, $n, $format) = $res;
$res = ratio_image($fid, $n, $format, 100, 48, "alt=''");
if ($res)
$res = "<div style='float: $spip_lang_right; margin-$spip_lang_right: -5px; margin-top: -5px;'>$res</div>";
}
}
return "<div class='arial2' style='padding: 5px; background-color: white; border: 1px solid $couleur_foncee; border-top: 0px;'>"
. (!$res ? '' : $res)
. "<div>"
. bonhomme_statut($row)
. " <b>"
. $nom
. "</b>"
. $mail
. "</div>"
. "<div>$bio</div>"
. "</div>";
}
?>

7
ecrire/inc/plonger.php

@ -33,12 +33,12 @@ function inc_plonger_dist($id_rubrique, $idom="", $list=array(), $col = 1, $excl
. (($row['langue_choisie'] != 'oui')
? '' : (' [' . $row['lang'] . ']'));
}
$next = $list[$col];
if ($ordre) {
asort($ordre);
$rec = generer_url_ecrire('plonger',"rac=$idom&exclus=$exclu&col=".($col+1));
$args = "'$idom',this,$col,'$spip_lang_left'";
$info = generer_url_ecrire('informer', "type=rubrique&rac=$idom&id=");
$args = "'$idom',this,$col,'$spip_lang_left','$info'";
while (list($id, $titrebrut) = each($ordre)) {
$titre = "<div class='"
@ -49,7 +49,6 @@ function inc_plonger_dist($id_rubrique, $idom="", $list=array(), $col = 1, $excl
if (isset($rub[$id]["enfants"])) {
$titre = "<div class='rub-ouverte'>$titre</div>";
$acces = "firstChild.";
$url = "\nhref='$rec&amp;id=$id'" ;
} else { $url = $acces = ''; }
@ -66,7 +65,7 @@ function inc_plonger_dist($id_rubrique, $idom="", $list=array(), $col = 1, $excl
. "\"\nondblclick=\""
. "aff_selection_titre(this."
. $acces
. "firstChild.firstChild.nodeValue,$id);"
. "firstChild.firstChild.nodeValue,$id,'selection_rubrique');"
. "return aff_selection_provisoire($id,$args);"
. "\">$titre</a>";
}

36
ecrire/inc/selectionner.php

@ -28,36 +28,40 @@ function inc_selectionner_dist ($sel, $idom="",$fonction="", $exclus=0, $aff_rac
if ($recur) $recur = mini_hier($sel); else $sel = 0;
$idom1 = $idom . "_champ_recherche";
$idom2 = $idom . "_principal";
$idom3 = $idom . "_selection";
$idom4 = $idom . "_col_1";
$idom5 = 'img_' . $idom4;
$idom6 = $idom."_fonc";
if ($aff_racine) {
$onClick = " aff_selection('rubrique','$idom', '0');";
$info = generer_url_ecrire('informer', "type=rubrique&rac=$idom&id=");
$onClick = " aff_selection(0,'$idom3', '$info');";
$titre = strtr(str_replace("'", "&#8217;",
$ondbClick = strtr(str_replace("'", "&#8217;",
str_replace('"', "&#34;",
textebrut(_T('info_racine_site')))),
"\n\r", " ");
$ondbClick = "aff_selection_titre('$titre',0);";
$ondbClick = "aff_selection_titre('$ondbClick',0,'selection_rubrique');";
}
$idom1 = $idom . "_champ_recherche";
$idom2 = $idom . "_principal";
$idom3 = $idom . "_selection"; // utiliser par aff_selection
$idom4 = $idom . "_col_1";
$idom5 = 'img_' . $idom4;
$idom6 = $idom."_fonc";
if ($recur) {
$plonger = generer_url_ecrire('plonger',"rac=$idom&exclus=$exclus&id=0&col=1", true);
$onClick .= "charger_id_url('$plonger', '$idom4');";
}
$plonger = charger_fonction('plonger', 'inc');
$plonger = $plonger($sel, $idom, $recur, 1, $exclus);
// url completee par la fonction JS onkeypress_rechercher
$url = generer_url_ecrire('rechercher', "exclus=$exclus&rac=$idom&type=");
return "<div id='$idom'>"
. "<div style='display: none;'>"
. "<input type='text' id='$idom6' value=\"$fonction\" />"
. "</div>\n"
. "<table width='100%' cellpadding='0' cellspacing='0'>"
. "<tr>"
. "<table width='100%' cellpadding='0' cellspacing='0'><tr>"
. "<td style='vertical-align: bottom;'>"
. "\n<div class='arial11 petite-racine'\nonclick=\""
. $onClick
@ -71,17 +75,17 @@ function inc_selectionner_dist ($sel, $idom="",$fonction="", $exclus=0, $aff_rac
. "</td>"
. "\n<td style='text-align: $spip_lang_right'>"
. "<input style='width: 100px;' type='search' id='$idom1'"
. "\nonkeypress=\"t=setTimeout('lancer_recherche_rub(\'"
. "\nonkeypress=\"t=setTimeout('onkeypress_rechercher(\'"
. $idom1
. "\',\'"
. $idom
. $idom4
. "\',\'"
. $exclus
. $url
. "\')', 200); key = event.keyCode; if (key == 13 || key == 3) { return false;} \" />"
. "</td></tr></table>\n<div id='$idom2'"
. " style='position: relative; height: 170px; background-color: white; border: 1px solid $couleur_foncee; overflow: auto;'><div id='$idom4'"
. " class='arial1'>"
. $plonger($sel, $idom, $recur, 1, $exclus)
. $plonger
. "</div></div>\n<div id='$idom3'></div></div>\n";
}

93
ecrire/inc/selectionner_auteur.php

@ -0,0 +1,93 @@
<?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/editer_auteurs');
//
// Affiche un mini-navigateur ajax sur les auteurs
//
function inc_selectionner_auteur_dist($id_article)
{
global $spip_lang_right;
$idom = 'bloc_selectionner_auteur';
$idom1 = $idom . "_champ_recherche";
$idom2 = $idom . "_principal";
$idom3 = $idom . "_selection";
$idom4 = $idom . "_col_1";
$idom5 = 'img_' . $idom4;
$idom6 = $idom."_fonc";
$les_auteurs = join(',', determiner_auteurs_article($id_article));
$futurs = selectionner_auteur_boucle(determiner_non_auteurs($les_auteurs, "nom, statut"), $idom);
// url completee par la fonction JS onkeypress_rechercher
$url = generer_url_ecrire('rechercher_auteur', "idom=$idom&nom=");
return "<div id='$idom'>"
. "<input style='width: 100px;' type='search' id='$idom1'"
. "\nonkeypress=\"t=setTimeout('onkeypress_rechercher(\'"
. $idom1
. "\',\'"
. $idom4
. "\',\'"
. $url
. "\')', 200); key = event.keyCode; if (key == 13 || key == 3) { return false;} \" />"
. http_img_pack("searching.gif", "*", "style='visibility: hidden;' id='$idom5'")
. "<div id='$idom2'"
. " style='position: relative; height: 170px; background-color: white; border: 1px solid $couleur_foncee; overflow: auto;'><div id='$idom4'"
. " class='arial1'>"
. $futurs
. "</div></div>\n<div id='$idom3'></div></div>\n";
}
function selectionner_auteur_boucle($query, $idom)
{
global $spip_lang_left;
$info = generer_url_ecrire('informer_auteur', "id=");
# $args = "'$idom',this, '$col', '$spip_lang_left', '$info'";
$args = "'$idom" . "_selection', '$info'";
$res = '';
while ($row = spip_fetch_array($query)) {
$id = $row["id_auteur"];
$titre = typo(extraire_multi($row["nom"]));
$email = $row["email"];
$statut = $row["statut"];
$commun = "findObj_forcer('nouv_auteur').value="
. $id;
// attention, les <a></a> doivent etre au premier niveau
// et se suivrent pour que changerhighligth fonctionne
$res .= "<a class='pashighlight'"
. "\nonclick=\"changerhighlight(this);"
. $commun
. "; aff_selection($id,$args); return false;"
. "\"\nondbclick=\""
. $commun
. ";findObj_forcer('selection_auteur').style.display="
. "'none'; return false"
. "\">$titre</a>";
}
return $res;
}
?>
Loading…
Cancel
Save