{{backlinks}} **Modifications apportées au Wikini 0.4.3 vers le WikiniMST** Fonction attacher -Notes du développeurs (http://www.wikini.net/wakka.php?wiki=ActionAttach) -Modifié le fichier attach.class.php, ligne 237 pour franciser la commande. -Renommer le fichier attach.php par attacher.php -On doit avoir une config "upload_permission" => "oui", pour pouvoir utiliser la fonction. Ajouté dans /setup/writeconfig.php pour automatiser à l'installation. Ajouts formatages -http://www.gillesjobin.org/wikini/wakka.php?wiki=ReglesDeFormatage Tableaux -http://codedb.delphicenter.com/wiki/wakka.php?wiki=WikiTableau -Notes Tableaux dans le fichier /formatters/wakka.php Notification mail -On doit avoir une config notifier_mail dans le fichier wakka.config.php -On ajoute dans le fichier /setup/writeconfig.php la config pour une installation automatique. -Fichier /handlers/page/edit.php -> On y ajoute à la ligne 57 %%(php) //send e-mail notifications==================================== if ($this->config[notifier_mail]=="oui") { if ($_POST["notifyWrite"] == "true") { $writeACL = $this->LoadAcl($this->GetPageTag(), "write"); $allUsers = explode("\n", $writeACL["list"]); foreach ($allUsers as $userName) { $user = $this->LoadUser($userName); $mailTo = $user["email"]; $mailSubject = "Avis de modification de la page ".$this->GetPageTag(); $mailHeaders = "From: wikini@recitmst.qc.ca\r\n". "X-Mailer: PHP/" . phpversion(); $mailMessage = "La page ".$this->GetPageTag()." a été modifiée\n". "\nPour voir les modifications suivez ce lien: ". $this->href("", "", "")."\n". "\nSi vous ne désirez plus recevoir de notification, veuillez en avertir le propriétaire de la page ".$this->GetPageTag()."."; mail($mailTo, $mailSubject, $mailMessage, $mailHeaders); } } }//fin send e-mail notifications============================== %% et aussi à la ligne 112 %% //Vérifie si on peut envoyer un avis de modification et met le formulaire dasn une variable pour l'afficher plus bas. if ($this->config[notifier_mail]=="oui") { $notifier_mail="Envoyer un avis de modification\n"; } %% puis """$notifier_mail". //pour le mail"" à la ligne 130 et 156 Les boutons de mise en page -edit.php -> ajout de ceci à la ligne 148 %% $this->FormOpen("edit","","post","wikini"). "
\"Gras\"    \"Italique\"    \"Rouge\"    \"Bleu\"   \"Surbrillance\"    \"Encadrer\"    \"Lien\"   \"Centrer\"    \"Souligner\"    \"Liste\"    \"Liste    \"Ligne\"

". %% -Fichier wakka.php ligne 366 modifier la fonction ""FormOpen"" par %% function FormOpen($method = "", $tag = "", $formMethod = "post", $formname= "") { $result = "

href($method, $tag)."\" method=\"".$formMethod."\">\n"; if (!$this->config["rewrite_mode"]) $result .= "MiniHref($method, $tag)."\" />\n"; return $result; } %% -Ajout de ceci dans /actions/header.php %% %% -Ajout des images pour les boutons /images ---- Gestion des groupes -http://www.wikini.net/wakka.php?wiki=ACLGroup -Ajout des fichiers /actions/editgroup.php et /actions/listgroups.php -Modifier le fichier /setup/install.php pour la création de la table wikini_groups -Ajout de ceci à la ligne 73 fichier /handlers/page/acls.php %% Pour chaque droit d'accès, les règles sont lues de bas en haut, à raison de exactement une seule règle par ligne. En l'absence de règle, l'accès est refusé à tout le monde. Syntaxe : %% -Ajout de ceci à la ligne 643 du fichier wakka.php %% // a group entry case "@": { if (! preg_match("/^[@](.*)$/", $line, $matches)) break; $line = $matches[1]; if (!$this->UserInGroup($line)) { return $negate; } else { return !$negate; } } %% -Ajout de ceci à la ligne 560 de wakka.php %% // Return the associative array, key=group name, value=list of // logins in group function LoadGroup($grname = "") { if ($grname) $query = "select * from ".$this->config["table_prefix"]."groups where grname = '".$grname."'order by grname asc, grmember asc"; else $query = "select * from ".$this->config["table_prefix"]."groups order by grname asc, grmember asc"; $r = $this->Query($query); if (! $r) return 0; // Group by lines $grps = array(); while (list ($grname, $grmb) = mysql_fetch_row($r)) $grps[$grname] .= $grmb."\n"; mysql_free_result($r); return $grps; } // Save the list of users in the group function SaveGroup($grname, $userslist) { $grname = trim($grname); $lst = explode("\n", $userslist); $this->Query("delete from ".$this->config["table_prefix"]."groups where grname='".$grname."'", $this->dblink); foreach ($lst as $login) { $login = trim($login); if (! $login) continue; mysql_query("insert into ".$this->config["table_prefix"]."groups set grname = '".mysql_escape_string($grname)."', grmember = '".mysql_escape_string($login)."'", $this->dblink); } } // return true if user is in the given group function UserInGroup($group, $user = "") { if (!$user) $user = $this->GetUserName(); return $this->LoadSingle("select grname from ".$this->config["table_prefix"]."groups where grname = '".mysql_escape_string($group)."' and grmember = '".mysql_escape_string($user)."'"); } %% ---- Calendrier -[[http://www.planete-couleurs.com/wikini/wakka.php?wiki=Calendar_Description Page du développeur]] -Ajout des fichiers /action/calendrier.php et du dossier /calendrier. -Ajout de la config url_site dans wakka.config.php ---- Passage de 0.4.1 à 0.4.2 http://www.wikini.net/wakka.php?wiki=WikiNiChangeLog042 ---- Bogue javascript - La page ParametresUtilisateur provoque des erreurs javascript dès qu'on tape une lettre dans les champs textbox (avec Internet Explorer). Solution : %%dans header.php remplacer par GetMethod() == "edit") { echo ""; } ?> BouiaW, 21 nov. 2004 #R#%% ---- Désactivation des commentaires. Ajout d'une condition au fichier /handlers/page/show.php ->""if ($this->config[comments_disable]=="0")"" Ajout de la variable dans le fichier wakka.config.php et dans writeconfig.php (lors de l'installation). ---- Action nbrpages Ajout du fichier /actions/nbrpages.php Page du développeur: http://www.wikini.net/wakka.php?wiki=JeanYves ---- Correcteur orthographique Code de départ: http://www.cscv.qc.ca/recit/cyberediteur/ Ajout du fichier /handlers/page/correction.php Modification du fichier /handlers/page/edit.php %% //Ajout ou non du bouton pour la correction--PL if ($this->config[correction_disable]=="0") { $correction="\n"; } elseif ($_POST["submit"] == "Correction") { echo "
À corriger
"; $pl=$this->Format($body); require_once("correction.php"); $output .= $this->FormOpen("edit"). "\n". "\n". "
\n". "\n". "\n". "href("")."';\" />\n". "$notifier_mail". //pour le mail $this->FormClose()."\n"; } %% ---- Retrait de la fonction referrers wakka.php: effacer les fonctions faisant références au referrers (LogReferrer, LoadReferrers, PurgeReferrers), effacer ""$this->PurgeReferrers();"" et "" $this->LogReferrer();"". Supprimer les fichiers referrers.php et referrers_sites.php du répertoire /handlers/page/ Dans /setup/install.php, on retire la création de la table referrers. ---- Imprimer une page Ajout du fichier /handlers/page/imprime.php Ajout d'un fichier wakka.imprime.css Modification du /actions/footer.php (ajout lien vers page/imprime). ---- Action ""UserLogin"" Retrait du formulaire d'enregistrement de nouveaux utilisateurs dans /actions/usersettings.php et enregistrement sous le nom de userlogin.php. ---- Handler prez{{indiquer ici="prez"}} -Modification du fichier /formatters/wakka.php pour prendre en considération: ""#F#, #D#, ~"" -Ajout des fichiers prez.php, prez2.php, prez3.php dans /handlers/page/ (contrôle la sortie). -Ajout d'une action prez (fichier /action/prez.php) pour afficher un lien vers les 3 styles différents. -Modification du fichier /actions/attach.class.php afin que l'image update.png ne soit pas visible dans la présentation. ---- Action indiquer -Ajout du fichier indiquer.php dans /actions -Voici le code de ce fichier et des ajouts à faire dans wakka.css: %% getParameter("texte"); $ici = $this->getParameter("ici"); $voir = $this->getParameter("voir"); $haut = $this->getParameter("haut"); $bas = $this->getParameter("bas"); echo "
"; if(!empty($haut)) echo 'Haut '; if(!empty($bas)) echo 'Bas '; echo "
"; echo "
"; if(!empty($ici)) echo '  '; if(!empty($voir)) echo ''. $voir .' '; if(!empty($texte) ) echo '  '. $this->Format($texte); echo "
"; ?> Voici le style correspondant. À noter que les lien Haut et Bas seront situés à droite pour différencier. .ancrer { float: right; } .ancre a { color: red; } %% ---- Commentaires + groupe %% ligne 208 du fichier wakka.php -de if ($this->HasAccess("write", $tag)) à if ($this->HasAccess("write", $tag) OR $comment_on != "") %% ---- Fonction Freemind (code utilisé: http://wikka.jsnx.com/FreeMind) %% on met le fichier freemindbrowser.jar dans la racine du wikinimst. ajouté des styles dans wakka.css (.floatr {float: right; width: 48%; margin: 0.5%; padding: 0.5%; background: #EEE;}) et imprime.css (.floatr {display: none;}) ======================================================================== ajouté dans attach.class.php function showAsMindmap($fullFilename){//pour freemind $mindmap_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); $height = "550"; $mindmap_url_fullscreen = "3rdparty/plugins/freemind/fullscreen.php?url=$mindmap_url"; $output = "\n". " \n". " \n". " \n". " \n". " \n". " \n". "\n". "
\n". "Télécharger ce réseau de concept :: Utiliser Freemind pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.
\n"; print($output); } function isFreemind(){//pour freemind return preg_match("/.(mm)$/i",$this->file)==1; } ========================================================================= et modifié la fonction doAttach de ça: function doAttach(){ $this->CheckParams(); if ($this->attachErr) { echo $this->attachErr; return; } $fullFilename = $this->GetFullFilename(); //test d'existance du fichier if((!file_exists($fullFilename))||($fullFilename=='')){ $this->showFileNotExits(); return; } //le fichier existe : affichage en fonction du type if($this->isPicture()){ $this->showAsImage($fullFilename); } else{ $this->showAsLink($fullFilename); } } à ça: function doAttach(){ $this->CheckParams(); if ($this->attachErr) { echo $this->attachErr; return; } $fullFilename = $this->GetFullFilename(); //test d'existance du fichier if((!file_exists($fullFilename))||($fullFilename=='')){ $this->showFileNotExits(); return; } //le fichier existe : affichage en fonction du type if($this->isPicture()){ $this->showAsImage($fullFilename); } elseif($this->isFreemind()){//pour freemind $this->showAsMindmap($fullFilename); } else{ $this->showAsLink($fullFilename); } } %% ---- Fontion Geogebra %% Mettre geogebra.jar à la racine du WikiNiMST. Ajouter la fonction suivante dans attach.class.php /** * Affiche le fichier geogebra dans une boite. */ function showAsGeogebra($fullFilename){//pour geogebra $geogebra_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); //$height = "550"; //$mindmap_url_fullscreen = "3rdparty/plugins/freemind/fullscreen.php?url=$mindmap_url"; $output = "\n". " \n". " \n". "\n". "
\n". "Télécharger ce fichier GeoGebra :: Utiliser GeoGebra pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.
\n"; print($output); $this->showUpdateLink(); } puis modifié la fonction suivante /** * Affiche l'attachement */ function doAttach(){ $this->CheckParams(); if ($this->attachErr) { echo $this->attachErr; return; } $fullFilename = $this->GetFullFilename(); //test d'existance du fichier if((!file_exists($fullFilename))||($fullFilename=='')){ $this->showFileNotExits(); return; } //le fichier existe : affichage en fonction du type if($this->isPicture()){ $this->showAsImage($fullFilename); } elseif($this->isFreemind()){//pour freemind $this->showAsMindmap($fullFilename); } elseif($this->isGeogebra()){//pour geogebra $this->showAsGeogebra($fullFilename); } else{ $this->showAsLink($fullFilename); } } Finalement pour reconnaître que c'est un fichier geogebra on cré la fonction function isGeogebra(){//pour geogebra return preg_match("/.(ggb)$/i",$this->file)==1; } %% ---- Fonction Geonext Mettre geonext.jar à la racine du WikiNiMST. %% ajouter dans attach.class.php /** * Affiche le fichier geonext dans une boite. */ function showAsGeonext($fullFilename){//pour geogebra $geonext_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); //$height = "550"; //$mindmap_url_fullscreen = "3rdparty/plugins/freemind/fullscreen.php?url=$mindmap_url"; $output = "\n". " \n". " \n". " \n". "\n". "
\n". "Télécharger ce fichier GeoNext :: Utiliser GeoNext pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.
\n"; print($output); $this->showUpdateLink(); } ainsi que function isGeonext(){//pour geogebra return preg_match("/.(gxt)$/i",$this->file)==1; } et on ajoute dans la fonction doAttach elseif($this->isGeonext()){//pour geogebra $this->showAsGeonext($fullFilename); } %% ---- Fonction Geolabo Ajouter geoweb.jar à la racine du WikiNiMST %% Ajout de la fonction suivante dasn attach.class.php: /** * Affiche le fichier geolabo dans une boite. */ function showAsGeolabo($fullFilename){//pour geolabo $geolabo_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); //$height = "550"; //$mindmap_url_fullscreen = "3rdparty/plugins/freemind/fullscreen.php?url=$mindmap_url"; $output = "\n". " \n". " \n". "\n". "
\n". "Télécharger ce fichier Geolabo :: Utiliser Geolabo pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.
\n"; print($output); $this->showUpdateLink(); } ajout de cette fonction: function isGeolabo(){//pour geogebra return preg_match("/.(glb)$/i",$this->file)==1; } et modification de doAttach: elseif($this->isGeolabo()){//pour geolabo $this->showAsGeolabo($fullFilename); } %% ---- Édition suppression des commentaires{{indiquer ici="commentaires"}} %% Ajout d'un handler/deletecomment.php et modification du fichier /handler/page/show.php //Ajouter pour l'édition et suppression des commentaires if ($this->HasAccess('write', $comment['tag']) || $this->UserIsOwner($comment['tag']) || $this->UserIsOwner() || ($this->GetUserName()== $this->config[admin_wiki]) ) { echo '\n"; } //FIn de edition suppression commentaire Modification de la fonction suivante dans wakka.php function SavePage($tag, $body, $comment_on = "") { // get current user $user = $this->GetUserName(); //die($tag); // TODO: check write privilege if ($comment_on ? $this->HasAccess("comment", $comment_on) : $this->HasAccess("write", $tag)) { // is page new? if (!$oldPage = $this->LoadPage($tag)) { // create default write acl. store empty write ACL for comments. $this->SaveAcl($tag, "write", ($comment_on ? $user : $this->GetConfigValue("default_write_acl"))); // create default read acl $this->SaveAcl($tag, "read", $this->GetConfigValue("default_read_acl")); // create default comment acl. $this->SaveAcl($tag, "comment", ($comment_on ? "" : $this->GetConfigValue("default_comment_acl"))); // current user is owner; if user is logged in! otherwise, no owner. if ($this->GetUser()) $owner = $user; else $owner = ''; } else { // aha! page isn't new. keep owner! $owner = $oldPage["owner"]; // ...and comment_on, eventualy? if ($comment_on == '') $comment_on = $oldPage['comment_on']; } // set all other revisions to old $this->Query("update ".$this->config["table_prefix"]."pages set latest = 'N' where tag = '".mysql_Escape_string($tag)."'"); // add new revision $this->Query("insert into ".$this->config["table_prefix"]."pages set ". "tag = '".mysql_escape_string($tag)."', ". ($comment_on ? "comment_on = '".mysql_escape_string($comment_on)."', " : ""). "time = now(), ". "owner = '".mysql_escape_string($owner)."', ". "user = '".mysql_escape_string($user)."', ". "latest = 'Y', ". "body = '".mysql_escape_string(chop($body))."'"); } } Ajout dans wakka.css de : .commenteditlink { float: right; margin: 2; } Modification du forward dans /handler/page/edit.php: // forward if ($this->page['comment_on']) { $this->Redirect($this->href('', $this->page['comment_on']).'#'.$this->tag); } else { $this->Redirect($this->href()); } %% ---- Ajout de la fonction flash %% Ajout flash dans attach.class.php var $haut = ''; //hauteur swf var $large = ''; //largeur swf function isFlash(){//pour geogebra return preg_match("/.(swf)$/i",$this->file)==1; } dans la fonction doAttach: elseif($this->isFlash()){//pour geolabo $this->showAsFlash($fullFilename); } pour vérifier si les valeur de haut et large sont ok, dans CheckParams: if ($this->isFlash() && empty($this->haut)){ $this->attachErr .= $this->wiki->Format("//action attacher : paramètre **haut** obligatoire pour une animation flash//---"); } if ($this->isFlash() && empty($this->large)){ $this->attachErr .= $this->wiki->Format("//action attacher : paramètre **large** obligatoire pour une animation flash//---"); } et finalement pour faire afficher le code html: /** * Affiche le fichier flasho dans une boite. */ function showAsFlash($fullFilename){//pour geolabo $flash_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); //$height = "550"; //$mindmap_url_fullscreen = "3rdparty/plugins/freemind/fullscreen.php?url=$mindmap_url"; $haut=$this->haut; $large=$this->large; $output = " \n". "\n". "\n". "
\n". "Télécharger ce fichier Flash Plein écran: cliquer sur Imprimer ci-dessous.
\n"; print($output); $this->showUpdateLink(); } %% ---- Fonction lecteur Mp3: on ajoute à la racine du wikinimst le lecteur xspf.swf http://musicplayer.sourceforge.net/ %% Ajout de cette fonction dans attach.class.php: /** * Affiche le fichier mp3 dans un player flash. */ function showAsMp3($fullFilename){ $titre=$this->desc; $mp3_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); $output = " \n". "
\n". "Télécharger $this->desc\n"; print($output); $this->showUpdateLink(); } et celle-ci: function isMp3(){//pour mp3 dans player flash return preg_match("/.(mp3)$/i",$this->file)==1; } et ajouter à la fonction doAttach: elseif($this->isMp3()){//pour lecteur mp3 $this->showAsMp3($fullFilename); } %% ---- Cacher l'image upload.png si pas accès en écriture sur la page: %% Ajout de ce code dans le de la page: HasAccess('write', $comment['tag'])) { ?> %% ---- Fonction CSV http://wikkawiki.org/ShowCsv On ajoute le fichier /handlers/page/handlecsvdata.php On modifie le fichier /action/attach.class.php %% var $separateur = ''; //séparateur pour csv var $entete = ''; //entete pour csv $this->separateur = $this->wiki->GetParameter("separateur"); if (empty($this->separateur)) $this->separateur = $this->wiki->GetParameter("separateur"); $this->entete = $this->wiki->GetParameter("entete"); if (empty($this->entete)) $this->entete = $this->wiki->GetParameter("entete"); dans la fonctione doAttach: elseif($this->isCsv()){//pour csv $this->showAsCsv($fullFilename); } Et pour l'affichage: function isCsv(){//pour csv dans un tableau return preg_match("/.(csv)$/i",$this->file)==1; } /** * Affiche le fichier csv dans un tableau. */ function showAsCsv($fullFilename){ require_once('handlers/page/handlecsvdata.php'); $csv_url = $this->wiki->href("download",$this->wiki->GetPageTag(),"file=$this->file"); // ***Get the params *** $header= 'on'; $separator = ","; $filename = $fullFilename; //$tableclass = $vars['tableclass']; if ($this->separateur) $separator = $this->separateur; if ($this->entete) $header = $this->entete; // *** Get the data and print the table *** if (is_array($table = GetCsvData($filename, $separator, $tableclass))) PrintCsvTable($table, $header); echo "Télécharger $this->desc"; $this->showUpdateLink(); } Ajout dans le CSS #csvtable { border: thin solid #6495ed; border-collapse: collapse; text-align: center; } #csvtable th { font-family: monospace; border: thin solid #6495ed; padding: 5px; background-color: #D0E3FA; } #csvtable td { font-family: monospace; border: thin solid #6495ed; padding: 5px; background-color: #fff; } %% ---- Ajout du formatage (action) note: http://wikkawiki.org/SidenoteActions %% Ajout dans le CSS: /* sidenote.css */ /* Contains css for tip, note and warn actions. */ /* postit note-style information box */ #note { clear: both; font-size: 10pt; float: right; width: 200px; border: 1px solid #AAAAAA; margin: 15px 10px 0px 0px; padding: 0px; background-color: #FFF900; text-align: justify; vertical-align: top; } #note hr { height: 1px; border: 1px solid #AAAAAA; width: 100%; } #note .title { text-align: center; font-weight: bold; background-color: #EEE800; border-bottom: 1px solid #AAAAAA; color: #000000; } #note #text { padding: 4px; color: #000000; } Ajout de l'Action note.php:
%% ---- Ajout formatage tableau+csv %% Ajout de ce code dans le fichier /formatters/wakka.php // Tables else if (preg_match("/^(\|\|)(.*?)(\|\|)$/s", $thing, $matches)) { $result = "\n\n"; $matches[2] = trim($matches[2]); $lignes = split ("\n", $matches[2]); $code=$matches[2]; $lien=$wiki->href(); $n = 0; foreach ($lignes as $ligne) { if ($n==0) { $result .= "\n"; $colonnes = split (";", $ligne); foreach ($colonnes as $colonne) { $result .= "\n"; } $result .= "\n"; $n++; } else { $result .= "\n"; $colonnes = split (";", $ligne); foreach ($colonnes as $colonne) { $result .= "\n"; } $result .= "\n"; $n++; } } $result .= "
".$colonne."
".$colonne."
\n\n"; $result .="
.csv\" title=\"Télécharger le contenu du tableau (csv)\" />
\n"; return $result; } // fin Tables Ajout du fichier /handlers/page/grabcode.php pour télécharger le fichier csv: %% ---- Désactivation des lecteurs (geonext, mp3, ...) par admin et utilisateur: %% Modification du fichier attach.class.php On ajoute au haut du fichier: var $voir = ''; //pour afficher contenu fichier et dans checkparams: $this->voir = $this->wiki->GetParameter("voir"); if (empty($this->voir)) $this->voir = "oui"; On ajoute à chaque fonction comme isFreemind: if ($this->wiki->config[view_freemind]==1 && $this->voir==oui) Aussi, ajouter dans le fichier /setup/writeconfig.php ceci: $config["view_geonext"] = "1"; $config["view_geogebra"] = "1"; $config["view_geolabo"] = "1"; $config["view_flash"] = "1"; $config["view_mp3"] = "1"; $config["view_csv"] = "1"; $config["view_freemind"] = "1"; %% ---- {{indiquer ici="captcha"}} Ajout d'une question avant enregistrement d'une page et d'un commentaire. Modification des pages /handlers/page/show.php, addcomment.php, edit.php. On fait calculer la somme de 2 nombres aléatoires (entre 0 et 9). Ajout dans le CSS: .question {color:#c71f1f; font-weight: bold;} ---- {{indiquer ici="actionlien"}} **Action lien** %% "; echo '' . $text . ''; } ?> %%