Author: christian_lefebvre@laposte.net
Date: Fri Apr 21 00:27:12 2006
New Revision: 2766
Log:
debut de mots cles en arborescence
Added:
_plugins_/_amelioration_admin_/mots_arbo/
_plugins_/_amelioration_admin_/mots_arbo/action/
_plugins_/_amelioration_admin_/mots_arbo/action/bouger_mots.php
_plugins_/_amelioration_admin_/mots_arbo/exec/
_plugins_/_amelioration_admin_/mots_arbo/exec/install_mots_arbo.php
_plugins_/_amelioration_admin_/mots_arbo/exec/mots_arbo.php
_plugins_/_amelioration_admin_/mots_arbo/js/
_plugins_/_amelioration_admin_/mots_arbo/js/motsArbo.js
_plugins_/_amelioration_admin_/mots_arbo/lang/
_plugins_/_amelioration_admin_/mots_arbo/lang/motsarbo_fr.php
_plugins_/_amelioration_admin_/mots_arbo/mots_arbo.css
_plugins_/_amelioration_admin_/mots_arbo/mots_arbo_admin.php
_plugins_/_amelioration_admin_/mots_arbo/plugin.xml
_plugins_/_amelioration_admin_/mots_arbo/test.html
Modified:
_plugins_/_amelioration_admin_/tinymce/inc/sale.php
Added: _plugins_/_amelioration_admin_/mots_arbo/action/bouger_mots.php
--- _plugins_/_amelioration_admin_/mots_arbo/action/bouger_mots.php (added)
+++ _plugins_/_amelioration_admin_/mots_arbo/action/bouger_mots.php Fri Apr 21 00:27:12 2006
@@ -0,0 +1,139 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/mots');
+include_spip('base/abstract_sql');
+
+function dspip_query($q) {
+ error_log($q);
+ spip_query($q);
+}
+
+error_log("G $from,$after,$into");
+
+function action_bouger_mots() {
+ global $from, $after, $into;
+
+ error_log("$from,$after,$into");
+ if($from) {
+ $res=spip_query("select debut, fin, niveau, id_groupe from spip_mots where id_mot=$from");
+ $row= spip_fetch_array($res);
+ $debut_from= $row['debut']; $fin_from= $row['fin'];
+ $niv_from= $row['niveau'];
+ $groupe_from= $row['id_groupe'];
+ $largeur_from= $fin_from-$debut_from+1;
+ } else {
+ die("from ??");
+ }
+
+ if($after || $into) {
+ if($after) {
+ $to= $after;
+ $quoi='after';
+ } else {
+ $to= $into;
+ $quoi='into';
+ }
+ // déplacer le noeud SOUS le noeud, c'est à dire en première position de
+ // la sous arbo de ce noeud
+ $res=spip_query("SELECT debut, fin, niveau, id_groupe
+ FROM spip_mots WHERE id_mot=$to");
+ $row= spip_fetch_array($res);
+ $debut_to= $row['debut']; $fin_to= $row['fin'];
+ $niv_to= $row['niveau'];
+ if($quoi=='into') {
+ $niv_to++; // +1 puisqu'on deplace sous ce niveau
+ }
+ $groupe_to= $row['id_groupe'];
+
+ error_log("$quoi $debut_from/$fin_from -> $debut_to/$fin_to");
+
+ // déplacement vers le bas ou le haut, mais pas dans ses propres
+ // sous branches
+ if($fin_from<$fin_to || $debut_from>$debut_to) {
+ // determiner le delta de niveaux
+ if($niv_to!=$niv_from) {
+ $delta= $niv_to-$niv_from;
+ dspip_query("update spip_mots
+ set niveau=niveau+$delta
+ where debut>=$debut_from and fin<=$fin_from");
+ }
+
+ // mettre cette branche de cote
+ dspip_query("update spip_mots
+ set debut=-debut, fin=-fin
+ where debut>=$debut_from and fin<=$fin_from");
+ // et la changer de groupe si nécessaire
+ if($groupe_from!=$groupe_to) {
+ dspip_query("update spip_mots
+ set id_groupe=$groupe_to
+ where debut<0");
+ }
+
+ // retasser le trou qu'on vient de laisser
+ dspip_query("update spip_mots
+ set fin=fin-$largeur_from
+ where fin>$fin_from");
+ dspip_query("update spip_mots
+ set debut=debut-$largeur_from
+ where debut>$fin_from");
+
+ if($debut_from<$debut_to) {
+ // déplacement vers le bas => la destination
+ // s'est décalée qaund on a dégagé la branche source
+ $debut_to -= $largeur_from;
+ $fin_to -= $largeur_from;
+ }
+
+ if($quoi=='after') {
+ // faire un trou pour la destination
+ dspip_query("update spip_mots
+ set fin=fin+$largeur_from
+ where fin>$fin_to");
+ dspip_query("update spip_mots
+ set debut=debut+$largeur_from
+ where debut>$fin_to");
+ // y mettre la branche source
+ $delta=$fin_to+1-$debut_from;
+ } else {
+ // faire un trou pour la destination
+ dspip_query("update spip_mots
+ set fin=fin+$largeur_from
+ where fin>$debut_to");
+ dspip_query("update spip_mots
+ set debut=debut+$largeur_from
+ where debut>$debut_to");
+ // y mettre la branche source
+ $delta=$debut_to+1-$debut_from;
+ }
+ dspip_query("update spip_mots
+ set debut=-debut+$delta, fin=-fin+$delta
+ where debut<0");
+
+ if($groupe_from!=$groupe_to) {
+ // dans ce cas, faut renuméroter les groupes
+ // (même si ça sert peut être à rien ?)
+ // A REVOIR : cette requète est pourrie, comment la faire mieux ?
+ dspip_query("UPDATE spip_groupes_mots
+ SET debut=(
+ SELECT debut FROM spip_mots
+ WHERE spip_mots.id_groupe = spip_groupes_mots.id_groupe
+ AND niveau=0),
+ fin=(
+ SELECT fin FROM spip_mots
+ WHERE spip_mots.id_groupe = spip_groupes_mots.id_groupe
+ AND niveau=0)");
+ }
+ } else {
+ die("ça, on peut pas ... : $debut_from/$fin_from -> $debut_to/$fin_to");
+ }
+ } else {
+ die('???');
+ }
+
+ redirige_par_entete("ecrire?exec=mots_arbo");
+}
+
+?>
Added: _plugins_/_amelioration_admin_/mots_arbo/exec/install_mots_arbo.php
--- _plugins_/_amelioration_admin_/mots_arbo/exec/install_mots_arbo.php (added)
+++ _plugins_/_amelioration_admin_/mots_arbo/exec/install_mots_arbo.php Fri Apr 21 00:27:12 2006
@@ -0,0 +1,63 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/mots');
+include_spip('base/abstract_sql');
+
+function exec_install_mots_arbo() {
+
+ $requetes=array(
+ // ajouter les colonnes
+// "ALTER TABLE spip_groupes_mots
+// ADD debut MEDIUMINT NOT NULL DEFAULT '0',
+// ADD fin MEDIUMINT NOT NULL DEFAULT '0';",
+
+// "ALTER TABLE spip_mots
+// ADD debut MEDIUMINT NOT NULL DEFAULT '0',
+// ADD fin MEDIUMINT NOT NULL DEFAULT '0',
+// ADD niveau TINYINT NOT NULL DEFAULT '1';",
+
+ // ajouter des index sur debut et fin ?
+
+ // d'abord compter les groupes
+ "SET @pos:=-1;",
+ "UPDATE spip_groupes_mots SET debut=(@pos:=@pos+2) ORDER BY titre;",
+
+ // puis numéroter les mots en profitant de la num des groupe
+ // pour savoir qaund ca se décale
+ "SET @pos:=-1;",
+ "UPDATE spip_mots
+ SET spip_mots.debut=(@pos:=@pos+2)+(
+ SELECT spip_groupes_mots.debut
+ FROM spip_groupes_mots
+ WHERE spip_mots.id_groupe = spip_groupes_mots.id_groupe),
+ spip_mots.fin= spip_mots.debut+1,
+ spip_mots.niveau=1
+ ORDER BY id_groupe,titre;",
+
+ // reste plus qu'a mettre les vraies valeurs pour les groupes
+ "UPDATE spip_groupes_mots
+ SET debut=(
+ SELECT min(debut) FROM spip_mots
+ WHERE spip_mots.id_groupe = spip_groupes_mots.id_groupe)-1,
+ fin=(
+ SELECT max(fin) FROM spip_mots
+ WHERE spip_mots.id_groupe = spip_groupes_mots.id_groupe)+1;",
+
+ // et les repercuter dans des mots cle
+ "REPLACE INTO spip_mots
+ (id_mot, id_groupe, titre, descriptif, texte, debut, fin, niveau)
+ SELECT id_groupe+100000, id_groupe, titre, descriptif, texte, debut, fin, 0
+ FROM spip_groupes_mots",
+
+ );
+
+ foreach($requetes as $requete) {
+ if(!spip_query($requete)) die("Echec sur $requete : ".mysql_error());
+ }
+ echo "OK";
+}
+
+?>
Added: _plugins_/_amelioration_admin_/mots_arbo/exec/mots_arbo.php
--- _plugins_/_amelioration_admin_/mots_arbo/exec/mots_arbo.php (added)
+++ _plugins_/_amelioration_admin_/mots_arbo/exec/mots_arbo.php Fri Apr 21 00:27:12 2006
@@ -0,0 +1,275 @@
+<?php
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/mots');
+include_spip('base/abstract_sql');
+
+function exec_mots_arbo_dist() {
+ global $acces_comite, $acces_forum, $acces_minirezo, $ancien_type, $articles, $breves, $change_type, $conf_mot, $connect_statut, $connect_toutes_rubriques, $descriptif, $id_groupe, $modifier_groupe, $obligatoire, $rubriques, $spip_lang, $spip_lang_right, $supp_group, $syndic, $texte, $unseul;
+
+ $id_groupe = intval($id_groupe);
+
+ if ($conf_mot = intval($conf_mot)) {
+ $result = spip_query("SELECT * FROM spip_mots WHERE id_mot=$conf_mot");
+ if ($row = spip_fetch_array($result)) {
+ $id_mot = $row['id_mot'];
+ $titre_mot = typo($row['titre']);
+ $type_mot = typo($row['type']);
+
+ if ($connect_statut=="0minirezo") $aff_articles="prepa,prop,publie,refuse";
+ else $aff_articles="prop,publie";
+
+ list($nb_articles) = spip_fetch_array(spip_query("SELECT COUNT(*) FROM spip_mots_articles AS lien, spip_articles AS article WHERE lien.id_mot=$conf_mot AND article.id_article=lien.id_article AND FIND_IN_SET(article.statut,'$aff_articles')>0 AND article.statut!='refuse'"));
+
+ list($nb_rubriques) = spip_fetch_array(spip_query("SELECT COUNT(*) FROM spip_mots_rubriques AS lien, spip_rubriques AS rubrique WHERE lien.id_mot=$conf_mot AND rubrique.id_rubrique=lien.id_rubrique"));
+ list($nb_breves) = spip_fetch_array(spip_query("SELECT COUNT(*) FROM spip_mots_breves AS lien, spip_breves AS breve WHERE lien.id_mot=$conf_mot AND breve.id_breve=lien.id_breve AND FIND_IN_SET(breve.statut,'$aff_articles')>0 AND breve.statut!='refuse'"));
+
+ list($nb_sites) = spip_fetch_array(spip_query("SELECT COUNT(*) FROM spip_mots_syndic AS lien, spip_syndic AS syndic WHERE lien.id_mot=$conf_mot AND syndic.id_syndic=lien.id_syndic AND FIND_IN_SET(syndic.statut,'$aff_articles')>0 AND syndic.statut!='refuse'"));
+
[... 456 lines stripped ...]