Browse Source

intégration de generer_url_site() partout, possibilité de faire un "preview" sur les sites, etc. A noter que pour afficher l'adresse de la page qui présnete le site x, on ne peut pas utiliser #URL_SITE ni #URLSYNDIC, car ce sont respectivement l'adresse réelle du site et celle de son backend. Il faut utiliser [(#ID_SYNDIC|generer_url_site)]

spip-1.8
Fil 18 years ago
parent
commit
182155fd55
  1. 3
      ecrire/inc_forum.php3
  2. 1
      ecrire/inc_presentation.php3
  3. 8
      ecrire/inc_texte.php3
  4. 5
      ecrire/inc_urls.php3
  5. 14
      ecrire/inc_version.php3
  6. 6
      ecrire/sites.php3
  7. 4
      formulaires/formulaire_admin.html
  8. 19
      formulaires/inc-formulaire_admin.php3
  9. 4
      htaccess.txt
  10. 6
      inc-balises.php3
  11. 12
      inc-boucles.php3
  12. 11
      inc-urls-html.php3
  13. 28
      inc-urls-propres.php3
  14. 11
      inc-urls-standard.php3
  15. 3
      spip_redirect.php3

3
ecrire/inc_forum.php3

@ -247,6 +247,9 @@ function generer_url_forum_dist($id_forum, $show_thread=false) {
case 'rubrique':
return generer_url_rubrique($id)."#forum$id_forum";
break;
case 'site':
return generer_url_site($id)."#forum$id_forum";
break;
default:
return "forum.php3?id_forum=".$id_forum;
}

1
ecrire/inc_presentation.php3

@ -3116,6 +3116,7 @@ function voir_en_ligne ($type, $id, $statut=false, $image='racine-24.gif') {
break;
case 'breve':
case 'auteur':
case 'site':
if ($statut == 'publie')
$en_ligne = 'recalcul';
else if ($statut == 'prop')

8
ecrire/inc_texte.php3

@ -617,7 +617,8 @@ function extraire_lien ($regs) {
case 'do':
$lien_url = generer_url_document($id_lien);
if (!$lien_texte) {
$req = "select titre,fichier from spip_documents where id_document=$id_lien";
$req = "select titre,fichier from spip_documents
WHERE id_document=$id_lien";
$row = @spip_fetch_array(@spip_query($req));
$lien_texte = $row['titre'];
if (!$lien_texte)
@ -625,7 +626,10 @@ function extraire_lien ($regs) {
}
break;
case 'si':
$row = @spip_fetch_array(@spip_query("SELECT nom_site,url_site FROM spip_syndic WHERE id_syndic=$id_lien"));
# attention dans le cas des sites le lien pointe non pas sur
# la page locale du site, mais directement sur le site lui-meme
$row = @spip_fetch_array(@spip_query("SELECT nom_site,url_site
FROM spip_syndic WHERE id_syndic=$id_lien"));
if ($row) {
$lien_url = $row['url_site'];
if (!$lien_texte)

5
ecrire/inc_urls.php3

@ -54,6 +54,11 @@ function generer_url_mot($id_mot) {
return $url;
}
function generer_url_site($id_syndic) {
$url = "../spip_redirect.php3?id_syndic=$id_syndic";
return $url;
}
function generer_url_auteur($id_auteur) {
$url = "../spip_redirect.php3?id_auteur=$id_auteur";
return $url;

14
ecrire/inc_version.php3

@ -921,11 +921,21 @@ $spip_lang = $langue_site;
// Nommage bizarre des tables d'objets
function table_objet($type) {
if ($type == 'syndic' OR $type == 'forum')
return $type;
if ($type == 'site' OR $type == 'syndic')
return 'syndic';
else if ($type == 'forum')
return 'forum';
else
return $type.'s';
}
function id_table_objet($type) {
if ($type == 'site' OR $type == 'syndic')
return 'id_syndic';
else if ($type == 'forum')
return 'id_forum';
else
return 'id_'.$type;
}
//

6
ecrire/sites.php3

@ -241,7 +241,11 @@ debut_gauche();
debut_boite_info();
echo "<center>";
echo "<font face='Verdana,Arial,Sans,sans-serif' size=1><b>"._T('titre_site_numero')."</b></font>";
echo "<br><font face='Verdana,Arial,Sans,sans-serif' size=6><b>$id_syndic</b></font>";
echo "<br><font face='Verdana,Arial,Sans,sans-serif' size=6><b>$id_syndic</b></font>\n";
voir_en_ligne ('site', $id_syndic, $statut);
echo "</center>";
fin_boite_info();

4
formulaires/formulaire_admin.html

@ -4,7 +4,9 @@
<li><a href='ecrire/articles.php3?id_article=(#ENV{id_article})' class='spip-admin-boutons'><:admin_modifier_article:> ([(#ENV{id_article})])</a></li>][
<li><a href='ecrire/breves_voir.php3?id_breve=(#ENV{id_breve})' class='spip-admin-boutons'><:admin_modifier_breve:> ([(#ENV{id_breve})])</a></li>][
<li><a href='ecrire/naviguer.php3?id_rubrique=(#ENV{id_rubrique})' class='spip-admin-boutons'><:admin_modifier_rubrique:> ([(#ENV{id_rubrique})])</a></li>][
<li><a href='ecrire/mots_edit.php3?id_mot=(#ENV{id_mot})' class='spip-admin-boutons'><:admin_modifier_mot:> ([(#ENV{id_mot})])</a></li>][
<li><a href='ecrire/mots_edit.php3?id_mot=(#ENV{id_mot})' class='spip-admin-boutons'><:admin_modifier_mot:>
([(#ENV{id_mot})])</a></li>][
<li><a href='ecrire/sites.php3?id_syndic=(#ENV{id_syndic})' class='spip-admin-boutons'><:icone_modifier_site:> ([(#ENV{id_syndic})])</a></li>][
<li><a href='ecrire/auteurs_edit.php3?id_auteur=(#ENV{id_auteur})' class='spip-admin-boutons'><:admin_modifier_auteur:> ([(#ENV{id_auteur})])</a></li>][
<li><a href='(#ENV{ecrire})/' class='spip-admin-boutons'><:espace_prive:></a></li>]
<li><a href='[(#ENV{action})]var_mode=recalcul' class='spip-admin-boutons'><:admin_recalculer:>[(#ENV{use_cache})]</a></li>[

19
formulaires/inc-formulaire_admin.php3

@ -20,7 +20,7 @@ function balise_FORMULAIRE_ADMIN_stat($args, $filtres) {
function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
global $var_preview, $use_cache, $forcer_debug;
global $id_article, $id_breve, $id_rubrique, $id_mot, $id_auteur;
global $id_article, $id_breve, $id_rubrique, $id_mot, $id_auteur, $id_syndic;
static $dejafait = false;
if (!$GLOBALS['spip_admin'])
@ -50,11 +50,12 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
$action = ($action . ((strpos($action, '?') === false) ? '?' : '&'));
// Ne pas afficher le bouton 'Modifier ce...' si l'objet n'existe pas
foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur') as $type) {
$id_type = 'id_'.$type;
foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur', 'syndic') as $type) {
$id_type = id_table_objet($type);
if (!($$id_type = intval($$id_type)
AND $s = spip_query(
"SELECT $id_type FROM spip_${type}s WHERE $id_type=".$$id_type)
"SELECT $id_type FROM spip_".table_objet($type)."
WHERE $id_type=".$$id_type)
AND spip_num_rows($s)))
$$id_type=0;
else {
@ -95,7 +96,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
if ($id_article OR $id_breve) unset ($id_rubrique);
// Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
if (!($id_article || $id_rubrique || $id_auteur || $id_breve || $id_mot))
if (!($id_article || $id_rubrique || $id_auteur || $id_breve || $id_mot || $id_syndic))
$ecrire = 'ecrire';
// Bouton "preview" si l'objet demande existe et est previsualisable
@ -107,10 +108,11 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
)) {
if ($objet_affiche == 'article'
OR $objet_affiche == 'breve'
OR $objet_affiche == 'rubrique')
OR $objet_affiche == 'rubrique'
OR $objet_affiche == 'syndic')
if (spip_num_rows(spip_query(
"SELECT id_$objet_affiche FROM spip_".$objet_affiche."s
WHERE id_$objet_affiche=".${"id_".$objet_affiche}."
"SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)."
WHERE ".id_table_objet($objet_affiche)."=".$$id_type."
AND statut IN ('prop', 'prive')")))
$preview = 'preview';
}
@ -122,6 +124,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
'id_auteur' => $id_auteur,
'id_breve' => $id_breve,
'id_mot' => $id_mot,
'id_syndic' => $id_syndic,
'ecrire' => $ecrire,
'action' => $action,
'preview' => $preview,

4
htaccess.txt

@ -74,6 +74,7 @@ RewriteRule ^article([0-9]+)\.html$ article.php3?id_article=$1 [QSA,L]
RewriteRule ^breve([0-9]+)\.html$ breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^mot([0-9]+)\.html$ mot.php3?id_mot=$1 [QSA,L]
RewriteRule ^auteur([0-9]+)\.html$ auteur.php3?id_auteur=$1 [QSA,L]
RewriteRule ^site([0-9]+)\.html$ site.php3?id_syndic=$1 [QSA,L]
# Fin compatibilite
###
@ -95,6 +96,9 @@ RewriteRule ^-[^/\.]+-?(\.html)?$ rubrique.php3 [QSA,E=url_propre:$0,L]
# les auteurs
RewriteRule ^_[^/\.]+_?(\.html)?$ auteur.php3 [QSA,E=url_propre:$0,L]
# Les sites
RewriteRule ^@[^/\.]+@?(\.html)?$ site.php3 [QSA,E=url_propre:$0,L]
# Les articles (en dernier car expression plus "large")
RewriteRule ^[^/\.]+(\.html)?$ article.php3 [QSA,E=url_propre:$0,L]

6
inc-balises.php3

@ -246,6 +246,12 @@ function balise_URL_MOT_dist($p) {
return $p;
}
# remarque : URL_SITE ne figure pas ici car c'est une donnee 'brute'
# correspondant a l'URL du site reference ; URL_SYNDIC correspond
# pour sa part a l'adresse de son backend.
# Il n'existe pas de balise pour afficher generer_url_site($id_syndic),
# a part [(#ID_SYNDIC|generer_url_site)]
function balise_URL_FORUM_dist($p) {
$p->code = "generer_url_forum(" .
champ_sql('id_forum',$p) .")";

12
inc-boucles.php3

@ -220,7 +220,10 @@ function boucle_SYNDICATION_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table;
$boucle->from[] = "spip_syndic AS $id_table";
$boucle->where[] = "$id_table.statut='publie'";
if (!$GLOBALS['var_preview']) {
$boucle->where[] = "$id_table.statut='publie'";
} else
$boucle->where[] = "$id_table.statut IN ('publie','prop')";
return calculer_boucle($id_boucle, $boucles);
}
@ -234,8 +237,11 @@ function boucle_SYNDIC_ARTICLES_dist($id_boucle, &$boucles) {
$boucle->from[] = "spip_syndic_articles AS $id_table";
$boucle->from[] = "spip_syndic AS syndic";
$boucle->where[] = "$id_table.id_syndic=syndic.id_syndic";
$boucle->where[] = "$id_table.statut='publie'";
$boucle->where[] = "syndic.statut='publie'";
if (!$GLOBALS['var_preview']) {
$boucle->where[] = "$id_table.statut='publie'";
$boucle->where[] = "syndic.statut='publie'";
} else
$boucle->where[] = "$id_table.statut IN ('publie','prop')";
$boucle->select[]='syndic.nom_site AS nom_site'; # derogation zarbi
$boucle->select[]='syndic.url_site AS url_site'; # idem
return calculer_boucle($id_boucle, $boucles);

11
inc-urls-html.php3

@ -53,6 +53,10 @@ function generer_url_mot($id_mot) {
return "mot$id_mot.html";
}
function generer_url_site($id_syndic) {
return "site$id_syndic.html";
}
function generer_url_auteur($id_auteur) {
return "auteur$id_auteur.html";
}
@ -81,13 +85,14 @@ function recuperer_parametres_url($fond, $url) {
// on ne redirige pas, on assume le nouveau contexte (si possible)
if ($url_propre = $GLOBALS['_SERVER']['REDIRECT_url_propre']
OR $url_propre = $GLOBALS['HTTP_ENV_VARS']['url_propre']
AND preg_match(',^(article|breve|rubrique|mot|auteur)$,', $fond)) {
AND preg_match(',^(article|breve|rubrique|mot|auteur|site)$,', $fond)) {
$url_propre = preg_replace('/^[_+-]{0,2}(.*?)[_+-]{0,2}(\.html)?$/',
'$1', $url_propre);
if ($r = spip_query("SELECT id_$fond AS id FROM spip_".$fond."s
if ($r = spip_query("SELECT ".id_table_objet($fond)." AS id
FROM spip_".table_objet($fond)."
WHERE url_propre = '".addslashes($url_propre)."'")
AND $t = spip_fetch_array($r))
$contexte["id_$fond"] = $t['id'];
$contexte[id_table_objet($fond)] = $t['id'];
}
/* Fin du bloc compatibilite url-propres */

28
inc-urls-propres.php3

@ -39,12 +39,14 @@ if (!defined('_terminaison_urls_propres'))
define ('_terminaison_urls_propres', '');
function _generer_url_propre($type, $id_objet) {
$table = "spip_".$type."s";
$col_id = "id_".$type;
$table = "spip_".table_objet($type);
$col_id = id_table_objet($type);
// Auteurs : on prend le nom
if ($type == 'auteur')
$champ_titre = 'nom AS titre';
else if ($type == 'site' OR $type=='syndic')
$champ_titre = 'nom_site AS titre';
else
$champ_titre = 'titre';
@ -165,6 +167,14 @@ function generer_url_auteur($id_auteur) {
return "auteur.php3?id_auteur=$id_auteur";
}
function generer_url_site($id_syndic) {
$url = _generer_url_propre('site', $id_syndic);
if ($url)
return '@'.$url.'@'._terminaison_urls_propres;
else
return "site.php3?id_syndic=$id_syndic";
}
function generer_url_document($id_document) {
if (intval($id_document) <= 0)
return '';
@ -180,9 +190,9 @@ function recuperer_parametres_url($fond, $url) {
// Migration depuis anciennes URLs ?
if ($GLOBALS['_SERVER']['REQUEST_METHOD'] != 'POST' &&
preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&].*)?)$,', $url, $regs)) {
preg_match(',(^|/)((article|breve|rubrique|mot|auteur|site)(\.php3?|[0-9]+\.html)([?&].*)?)$,', $url, $regs)) {
$type = $regs[3];
$id_objet = intval($GLOBALS['id_'.$type]);
$id_objet = intval($GLOBALS[$id_table_objet = id_table_objet($type)]);
if ($id_objet) {
$func = "generer_url_$type";
$url_propre = $func($id_objet);
@ -191,7 +201,7 @@ preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&
http_status(301);
// recuperer les arguments supplementaires (&debut_xxx=...)
$reste = preg_replace('/^&/','?',
preg_replace("/[?&]id_$type=$id_objet/",'',$regs[5]));
preg_replace("/[?&]$id_table_objet=$id_objet/",'',$regs[5]));
Header("Location: $url_propre$reste");
exit;
}
@ -224,14 +234,18 @@ preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&
$type = 'auteur';
$url_propre = $regs[1];
}
else if (preg_match(',^@(.*?)@?$,', $url_propre, $regs)) {
$type = 'syndic';
$url_propre = $regs[1];
}
else {
$type = 'article';
preg_match(',^(.*)$,', $url_propre, $regs);
$url_propre = $regs[1];
}
$table = "spip_".$type."s";
$col_id = "id_".$type;
$table = "spip_".table_objet($type);
$col_id = id_table_objet($type);
$query = "SELECT $col_id FROM $table
WHERE url_propre='".addslashes($url_propre)."'";
$result = spip_query($query);

11
inc-urls-standard.php3

@ -31,6 +31,10 @@ function generer_url_mot($id_mot) {
return "mot.php3?id_mot=$id_mot";
}
function generer_url_site($id_syndic) {
return "site.php3?id_syndic=$id_syndic";
}
function generer_url_auteur($id_auteur) {
return "auteur.php3?id_auteur=$id_auteur";
}
@ -59,13 +63,14 @@ function recuperer_parametres_url($fond, $url) {
// on ne redirige pas, on assume le nouveau contexte (si possible)
if ($url_propre = $GLOBALS['_SERVER']['REDIRECT_url_propre']
OR $url_propre = $GLOBALS['HTTP_ENV_VARS']['url_propre']
AND preg_match(',^(article|breve|rubrique|mot|auteur)$,', $fond)) {
AND preg_match(',^(article|breve|rubrique|mot|auteur|site)$,', $fond)) {
$url_propre = preg_replace('/^[_+-]{0,2}(.*?)[_+-]{0,2}(\.html)?$/',
'$1', $url_propre);
if ($r = spip_query("SELECT id_$fond AS id FROM spip_".$fond."s
if ($r = spip_query("SELECT ".id_table_objet($fond)." AS id
FROM spip_".table_objet($fond)."
WHERE url_propre = '".addslashes($url_propre)."'")
AND $t = spip_fetch_array($r))
$contexte["id_$fond"] = $t['id'];
$contexte[id_table_objet($fond)] = $t['id'];
}
/* Fin du bloc compatibilite url-propres */

3
spip_redirect.php3

@ -42,6 +42,9 @@ else if ($id_mot) {
else if ($id_auteur) {
$url = generer_url_auteur($id_auteur);
}
else if ($id_syndic OR $id_syndic = $id_site) {
$url = generer_url_site($id_syndic);
}
else {
$url = _DIR_RESTREINT_ABS;
}

Loading…
Cancel
Save