%k25u25%fgd5n!?%k25u25%fgd5n!%k25u25%fgd5n!?%k25u25%fgd5n!tableau_edit.html000066600000002433151521515340010064 0ustar00#CACHE{24*3600} Editeur de table #INSERT_HEAD

<:enlumtypo:tableau_prem_ligne:>

<:enlumtypo:tableau_enregistrer:> table.css000066600000001375151521515340006361 0ustar00body{ padding: 1em 2em 1em 1em; text-align:center; font: 12px Verdana, Geneva, Arial, Helvetica, sans-serif; } a img{border:none} #enregistrer{ display:block; width:10em; margin:1em auto; padding:0.5em; font-size:14px; text-align:center; text-decoration:none; background:#eee; border:1px outset #aaa; } div{text-align:left;margin-bottom:0.5em;} div span{float:left;width:10em} input{width:60%} #ihm{ border-collapse:collapse; border:3px ridge gray; width:85%; } #ihm td{border:3px ridge gray;text-align:center} #ihm td td{border:none} #ihm img{margin:4px} textarea{ width:100%} .first_c a img {display:block} .last_l, .last_c {background:#eee} .first_l, .first_c {background: #F0E68C} .first_c, .last_c {width:24px;} supprimer_ligne.png000066600000001217151521515340010465 0ustar00PNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<!IDAT8˕NQɉϠVȑB[( &^M6M| Dްҙv:官J-%Nd LB>w_3:*WrlNC/-좕B'{ u_a46ҽbߡE%D47;ٻƩ;8ˣ}>6[ӕS@*Z Qk>~͵hB\9uxZvYb J Cيٽ?BYvn&kft$,d9Zap\^ Y7 QJF 9=Q4 ؜Io SBpsI) Fv(@yՎވc\@ %% Z2h'@d(<|áaJuM@O⤁LGjd!X8Af 5J i K->w62ƾWH}:mP]XB0QX=ib_g=!Ftt…clrIENDB`table_rtl.js000066600000041163151521515340007065 0ustar00/* ce code s'inspire du travail de http://www.spip-contrib.net/_courcy_ * il a été en grande partie ré-écrit pour : * - générer une syntaxe de tableau SPIP et non HTML (l'éditeur de couleur de cellules disparaît donc aussi) * - pour permettre non seulement de créer un tableau mais aussi de modifier un tableau existant * - pour intégrer les éléments HTML titre et résumé de tableau */ /****************************************** * FONCTIONNEMENT Général *********************BUT**************************************** * Le but de ce script est de permettre à l'utilisateur de créer son propre * tableau sans s'encombrer de la syntaxe SPIP. Si un tableau à syntaxe SPIP est * sélectionné avant l'appel de l'assistant, les données sont récupérées par l'assistant. * Si rien n'est sélectionné l'appel de l'assistant, un nouveau tableau est créé au point * d'insertion. ************Structure de donnees *********************************** * * Classe ihm qui gère l'interface homme-machine de l'assistant et sa construction * On trouve en autres les méthodes permettant d'insérer et de supprimer lignes et colonnes * * Classe Cellule qui contient les informations relatives à une cellule * Ses attributs sont des informations relatives a une cellule (contenu) * chaque objet cellule est contenu dans le tableau lc qui est un tableau bidimensionnel de cellules * ce tableau a autant d'éléments que de ligne * colonne dans le tableau * * *******************ALGORITHME************************************* * Le tableau est sauvé en mémoire dans la variable lc * La fonction construit_tableau( ) de la classe ihm construit l'interface pour manipuler les données du tableau * qui (re)initialisera la valeur innerHTML de
* toute modification des valeurs dans l'assistant modifie lc * toute modification de l'interface (ajout/suppression de ligne/colonne) modifie lc puis appelle la fonction construit_tableau * simple mais efficace+ * * La validation des modifications déclenche construit_code_tableau qui construit le code SPIP du tableau */ /********INITIALISATION**************/ //classe ihm : classe générique de gestion de tableau function ihm() { this.titre_t = ""; this.resume_t = ""; /* méthodes */ this.construit_tableau = construit_tableau; this.bouton_insere_ligne = bouton_insere_ligne; this.bouton_supprime_ligne = bouton_supprime_ligne; this.bouton_insere_colonne = bouton_insere_colonne; this.bouton_supprime_colonne = bouton_supprime_colonne; this.insere_commande_ligne = insere_commande_ligne; this.insere_commande_colonne = insere_commande_colonne; this.insere_ligne = insere_ligne; this.supprime_ligne = supprime_ligne; this.insere_colonne = insere_colonne; this.supprime_colonne = supprime_colonne; /*******CONStrUIT tableAU**********/ function construit_tableau(){ var texte = ""; texte+="\n"; for (i=0;i0) position = "1st_l"; //on est sur la premiere ligne on insere des colonnes if (i>0 && j==0) position = "1st_c"; //on est sur la premiere colonne on insere des lignes if (i==nl+1 && j>0) position = "last_l"; //on est dans la zone non éditée de la derniere ligne if (i>0 && j==nc+1) position = "last_c"; //on est dans la zone non éditée la derniere colonne switch (position) { case "coin" : texte+="\n"; break; case "1st_l" : texte+="\n"; break; case "1st_c" : texte+="\n"; break; case "last_l" : texte+="\n"; break; case "last_c" : texte+="\n"; break; default: //on est dans la partie éditable du tableau texte+="\n"; } }//fin du for j texte+=""; }//fin du for i texte+="
"+this.insere_commande_colonne(j-1)+""+this.insere_commande_ligne(i-1)+""+ lc[i-1][j-1].insere() +"
"; //win=window.open(''); //win.document.write(""); table.innerHTML=texte;//on modifie le texte de ce noeud } /** *cette fonction crée un bouton pour l'insertion d'une ligne */ function bouton_insere_ligne(ligne){ var texte = "\n"; return texte; } /** *cette fonction crée un bouton pour la supression d'une ligne */ function bouton_supprime_ligne(ligne){ if (nl == 1) return ""; var texte="\n"; return texte; } /** *cette fonction crée un bouton pour l'insertion d'une colonne */ function bouton_insere_colonne(colonne){ var texte=" \n"; return texte; } /** *cette fonction crée un bouton pour la supression d'une colonne */ function bouton_supprime_colonne(colonne){ if (nc == 1) return ""; var texte="\n"; return texte; } /** *cette fonction met en forme les commandes pour une ligne */ function insere_commande_ligne(ligne){ var texte; texte = this.bouton_insere_ligne(ligne); if (lignenum_ligne){ //on incrémente de 1 this.t[i][j]=lc[i-1][j]; this.t[i][j].setL(i); } } } } this.supL = function(num_ligne){ for (i=0;inum_colonne){ //on incrémente de 1 this.t[i][j]=lc[i][j-1]; this.t[i][j].setC(j); } } } } this.supC = function(num_colonne){ for (i=0;i= 4) && is_ie && is_win) { var theSelection = false; theSelection = top.opener.document.selection.createRange().text; // Get text selection if (theSelection) { this.s2 = theSelection; } else { this.s1 = top.opener.document.getElementById("text_area").value; } } else { var selLength = zone.textLength; var selStart = zone.selectionStart; var selEnd = zone.selectionEnd; if (selEnd == 1 || selEnd == 2) selEnd = selLength; // Raccourcir la selection par double-clic si dernier caractere est espace if (selEnd - selStart > 0 && (zone.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1; this.s1 = (zone.value).substring(0,selStart); this.s2 = (zone.value).substring(selStart, selEnd) this.s3 = (zone.value).substring(selEnd, selLength); } lignes = this.s2.split("\n"); if (this.avec_entete()) init_i = 1; for (i=init_i;i= 4) && is_ie && is_win) { top.opener.document.selection.createRange().text = construit_code_tableau(); } else { top.opener.zone_selection.value = ancien_tableau.s1 + construit_code_tableau() + ancien_tableau.s3; } } else { //insertion d'un nouveau tableau if (top.opener.zone_selection.createTextRange && top.opener.zone_selection.caretPos) { //IE var caretPos = top.opener.zone_selection.caretPos; caretPos.text = caretPos.text + construit_code_tableau(); top.opener.zone_selection.focus(); } else { top.opener.zone_selection.value = ancien_tableau.s1 + construit_code_tableau() + ancien_tableau.s3; } } window.close(); }table_rtl.css000066600000001337151521515340007240 0ustar00body{ padding: 1em 1em 1em 2em; text-align: center; font: 12px Verdana, Geneva, Arial, Helvetica, sans-serif; } a img{border:none} #enregistrer{ display:block; width:10em; margin:1em auto; padding:0.5em; font-size:14px; text-align:center; text-decoration:none; background:#eee; border:1px outset #aaa; } div{text-align:right;margin-bottom:0.5em;} div span{float:right;width:10em} input{width:60%} #ihm{ border-collapse:collapse; border:3px ridge gray; width:85%; } #ihm td{border:3px ridge gray;text-align:center} #ihm td td{border:none} #ihm img{margin:4px} textarea{ width:100%} .first_c a img {display:block} .last_l, .last_c {background:#eee} .first_l, .first_c {background: #F0E68C} .first_c, .last_c {width:24px;} inserer_colonne.gif000066600000000245151521515340010426 0ustar00GIF89aR2Jb]ozr~򂑟!,RIؒbx`WN'OqT BS@n^pHPKB1l+gAÑoE;table.js000066600000041206151521515340006202 0ustar00/* ce code s'inspire du travail de http://www.spip-contrib.net/_courcy_ * il a été en grande partie ré-écrit pour : * - générer une syntaxe de tableau SPIP et non HTML (l'éditeur de couleur de cellules disparaît donc aussi) * - pour permettre non seulement de créer un tableau mais aussi de modifier un tableau existant * - pour intégrer les éléments HTML titre et résumé de tableau */ /****************************************** * FONCTIONNEMENT Général *********************BUT**************************************** * Le but de ce script est de permettre à l'utilisateur de créer son propre * tableau sans s'encombrer de la syntaxe SPIP. Si un tableau à syntaxe SPIP est * sélectionné avant l'appel de l'assistant, les données sont récupérées par l'assistant. * Si rien n'est sélectionné l'appel de l'assistant, un nouveau tableau est créé au point * d'insertion. ************Structure de donnees *********************************** * * Classe ihm qui gère l'interface homme-machine de l'assistant et sa construction * On trouve en autres les méthodes permettant d'insérer et de supprimer lignes et colonnes * * Classe Cellule qui contient les informations relatives à une cellule * Ses attributs sont des informations relatives a une cellule (contenu) * chaque objet cellule est contenu dans le tableau lc qui est un tableau bidimensionnel de cellules * ce tableau a autant d'éléments que de ligne * colonne dans le tableau * * *******************ALGORITHME************************************* * Le tableau est sauvé en mémoire dans la variable lc * La fonction construit_tableau( ) de la classe ihm construit l'interface pour manipuler les données du tableau * qui (re)initialisera la valeur innerHTML de
* toute modification des valeurs dans l'assistant modifie lc * toute modification de l'interface (ajout/suppression de ligne/colonne) modifie lc puis appelle la fonction construit_tableau * simple mais efficace+ * * La validation des modifications déclenche construit_code_tableau qui construit le code SPIP du tableau */ /********INITIALISATION**************/ //classe ihm : classe générique de gestion de tableau function ihm() { this.titre_t = ""; this.resume_t = ""; /* méthodes */ this.construit_tableau = construit_tableau; this.bouton_insere_ligne = bouton_insere_ligne; this.bouton_supprime_ligne = bouton_supprime_ligne; this.bouton_insere_colonne = bouton_insere_colonne; this.bouton_supprime_colonne = bouton_supprime_colonne; this.insere_commande_ligne = insere_commande_ligne; this.insere_commande_colonne = insere_commande_colonne; this.insere_ligne = insere_ligne; this.supprime_ligne = supprime_ligne; this.insere_colonne = insere_colonne; this.supprime_colonne = supprime_colonne; /*******CONStrUIT tableAU**********/ function construit_tableau(){ var texte = ""; texte+="\n"; for (i=0;i0) position = "1st_l"; //on est sur la premiere ligne on insere des colonnes if (i>0 && j==0) position = "1st_c"; //on est sur la premiere colonne on insere des lignes if (i==nl+1 && j>0) position = "last_l"; //on est dans la zone non éditée de la derniere ligne if (i>0 && j==nc+1) position = "last_c"; //on est dans la zone non éditée la derniere colonne switch (position) { case "coin" : texte+="\n"; break; case "1st_l" : texte+="\n"; break; case "1st_c" : texte+="\n"; break; case "last_l" : texte+="\n"; break; case "last_c" : texte+="\n"; break; default: //on est dans la partie éditable du tableau texte+="\n"; } }//fin du for j texte+=""; }//fin du for i texte+="
"+this.insere_commande_colonne(j-1)+""+this.insere_commande_ligne(i-1)+""+ lc[i-1][j-1].insere() +"
"; //win=window.open(''); //win.document.write(""); table.innerHTML=texte;//on modifie le texte de ce noeud } /** *cette fonction crée un bouton pour l'insertion d'une ligne */ function bouton_insere_ligne(ligne){ var texte = "\n"; return texte; } /** *cette fonction crée un bouton pour la supression d'une ligne */ function bouton_supprime_ligne(ligne){ if (nl == 1) return ""; var texte="\n"; return texte; } /** *cette fonction crée un bouton pour l'insertion d'une colonne */ function bouton_insere_colonne(colonne){ var texte=" \n"; return texte; } /** *cette fonction crée un bouton pour la supression d'une colonne */ function bouton_supprime_colonne(colonne){ if (nc == 1) return ""; var texte="\n"; return texte; } /** *cette fonction met en forme les commandes pour une ligne */ function insere_commande_ligne(ligne){ var texte; texte = this.bouton_insere_ligne(ligne); if (lignenum_ligne){ //on incrémente de 1 this.t[i][j]=lc[i-1][j]; this.t[i][j].setL(i); } } } } this.supL = function(num_ligne){ for (i=0;inum_colonne){ //on incrémente de 1 this.t[i][j]=lc[i][j-1]; this.t[i][j].setC(j); } } } } this.supC = function(num_colonne){ for (i=0;i= 4) && is_ie && is_win) { var theSelection = false; theSelection = top.opener.document.selection.createRange().text; // Get text selection if (theSelection) { this.s2 = theSelection; } else { this.s1 = top.opener.document.getElementById("text_area").value; } } else { var selLength = zone.textLength; var selStart = zone.selectionStart; var selEnd = zone.selectionEnd; if (selEnd == 1 || selEnd == 2) selEnd = selLength; // Raccourcir la selection par double-clic si dernier caractere est espace if (selEnd - selStart > 0 && (zone.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1; this.s1 = (zone.value).substring(0,selStart); this.s2 = (zone.value).substring(selStart, selEnd) this.s3 = (zone.value).substring(selEnd, selLength); } lignes = this.s2.split("\n"); if (this.avec_entete()) init_i = 1; for (i=init_i;i= 4) && is_ie && is_win) { top.opener.document.selection.createRange().text = construit_code_tableau(); } else { top.opener.zone_selection.value = ancien_tableau.s1 + construit_code_tableau() + ancien_tableau.s3; } } else { //insertion d'un nouveau tableau if (top.opener.zone_selection.createTextRange && top.opener.zone_selection.caretPos) { //IE var caretPos = top.opener.zone_selection.caretPos; caretPos.text = caretPos.text + construit_code_tableau(); top.opener.zone_selection.focus(); } else { top.opener.zone_selection.value = ancien_tableau.s1 + construit_code_tableau() + ancien_tableau.s3; } } window.close(); }inserer_ligne.gif000066600000000237151521515340010070 0ustar00GIF89aR2Jb]ozr~򂑟!,LI8mKa AlT,L)!+]s1?J#AB8*qyx@1L|&Bln[";