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
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
//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="<input type=\"checkbox\" name=\"notifyWrite\" value=\"true\">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").
"<center><a title=\"Gras\" href='#' onclick='insertTags(\"**\",\"**\",\"\")'><img alt=\"Gras\" src=\"images/gras.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Italique\" href='#' onclick='insertTags(\"//\",\"//\",\"\")'><img alt=\"Italique\" src=\"images/italique.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Rouge\" href='#' onclick='insertTags(\"#R#\",\"#R#\",\"Rouge\")'><img alt=\"Rouge\" src=\"images/rouge.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Bleu\" href='#' onclick='insertTags(\"#B#\",\"#B#\",\"\")'><img alt=\"Bleu\" src=\"images/bleu.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Surbrillance\" href='#' onclick='insertTags(\"~~\",\"~~\",\"\")'><img alt=\"Surbrillance\" src=\"images/surbrillance.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Encadrer\" href='#' onclick='insertTags(\":::\",\":::\",\"\")'><img alt=\"Encadrer\" src=\"images/cadre.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Lien\" href='#' onclick='insertTags(\"[[\",\"]]\",\"\")'><img alt=\"Lien\" src=\"images/lien.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Centrer\" href='#' onclick='insertTags(\"#C#\",\"#C#\",\"\")'><img alt=\"Centrer\" src=\"images/centre.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Souliger\" href='#' onclick='insertTags(\"__\",\"__\",\"\")'><img alt=\"Souligner\" src=\"images/souligne.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Liste\" href='#' onclick='insertTags(\" -\",\"\",\"\")'><img alt=\"Liste\" src=\"images/puce.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Liste #\" href='#' onclick='insertTags(\" 1)\",\"\",\"\")'><img alt=\"Liste #\" src=\"images/numero.png\" style=\"border: 0px solid ;\"></a>
<a title=\"Ligne\" href='#' onclick='insertTags(\"----\",\"\",\"\")'><img alt=\"Ligne\" src=\"images/ligne.png\" style=\"border: 0px solid ;\"></a> </center><p>".
- Fichier wakka.php ligne 366 modifier la fonction FormOpen par
function FormOpen($method = "", $tag = "", $formMethod = "post", $formname= "")
{
$result = "<form name=\"".$formname."\" action=\"".$this->href($method, $tag)."\" method=\"".$formMethod."\">\n";
if (!$this->config["rewrite_mode"]) $result .= "<input type=\"hidden\" name=\"wiki\" value=\"".$this->MiniHref($method, $tag)."\" />\n";
return $result;
}
- Ajout de ceci dans /actions/header.php
<script type="text/javascript">
function fKeyDown() { if (event.keyCode == 9) {
event.returnValue= false;
document.selection.createRange().text = String.fromCharCode(9) } }
function escapeQuotes(text) {
text=text.replace(/'/g,"\\'");
text=text.replace(/\n/g,"\\n");
return text;
}
// apply tagOpen/tagClose to selection in textarea,
// use sampleText instead of selection if there is none
// copied and adapted from phpBB
function insertTags(tagOpen, tagClose, sampleText) {
var txtarea = document.wikini.body;
// IE
if(document.selection) {
var theSelection = document.selection.createRange().text;
if(!theSelection) { theSelection=sampleText;}
txtarea.focus();
if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
theSelection = theSelection.substring(0, theSelection.length - 1);
document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
} else {
document.selection.createRange().text = tagOpen + theSelection + tagClose;
}
// Mozilla
} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
var myText = (txtarea.value).substring(startPos, endPos);
if(!myText) { myText=sampleText;}
if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
} else {
subst = tagOpen + myText + tagClose;
}
txtarea.value = txtarea.value.substring(0, startPos) + subst + txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
txtarea.selectionStart=cPos;
txtarea.selectionEnd=cPos;
// All others
} else {
// Append at the end: Some people find that annoying
//txtarea.value += tagOpen + sampleText + tagClose;
//txtarea.focus();
tagOpen=tagOpen.replace(/\n/g,"");
tagClose=tagClose.replace(/\n/g,"");
document.infoform.infobox.value=tagOpen+sampleText+tagClose;
txtarea.focus();
}
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}
</script>
- 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
<i>Pour chaque droit d'accès, les règles sont lues de bas en
haut, à raison de <b>exactement une seule règle par ligne</b>. En l'absence
de règle, l'accès est refusé à tout le monde. Syntaxe :
<ul>
<li><tt>NomUtilisateur</tt> : Droit d'accès
(lecture/écriture/commentaires) accordé à
<tt>NomUtilisteur</tt></li>
<li><tt>@legroupe</tt> : Droit d'accès accordé au groupe
<tt>legroupe</tt></li>
<li><tt>*</tt> : Droit d'accès accordé à tout le monde</li>
<li><tt>+</tt> : Droit d'accès accordé uniquement aux personnes
identifiées</li>
<li><tt>!NomUtilisateur</tt> : Droit d'accès refusé à
<tt>NomUtilisteur</tt></li>
<li><tt>!@legroupe</tt> : Droit d'accès refusé au groupe
<tt>legroupe</tt></li>
<li><tt>!*</tt> : Droit d'accès refusé à tout le monde</li>
<li><tt>!+</tt> : Droit d'accès refusé aux personnes
identifiées</li>
</ul>
</i>
// 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
- 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
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
<script type="text/javascript" src="ACeditor.js"></script>
par
<?php if ($this->GetMethod() == "edit") {
echo "<script type=\"text/javascript\" src=\"ACeditor.js\"></script>";
}
?> 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).
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
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 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="<input name=\"submit\" type=\"submit\" value=\"Correction\" />\n";
}
elseif ($_POST["submit"] == "Correction")
{
echo "<div class=\"prev_alert\"><strong>À corriger</strong></div>";
$pl=$this->Format($body);
require_once("correction.php");
$output .=
$this->FormOpen("edit").
"<input type=\"hidden\" name=\"previous\" value=\"".$previous."\" />\n".
"<input type=\"hidden\" name=\"body\" value=\"".htmlentities($body)."\" />\n".
"<br />\n".
"<input name=\"submit\" type=\"submit\" value=\"Enregistrer\" accesskey=\"s\" />\n".
"<input name=\"submit\" type=\"submit\" value=\"Rééditer \" accesskey=\"p\" />\n".
"<input type=\"button\" value=\"Annulation\" onclick=\"document.location='".$this->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.
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).
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
- 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:
<?php
/*
Copyright 2004 .... OF SUCH DAMAGE.
*/
$texte = $this->getParameter("texte");
$ici = $this->getParameter("ici");
$voir = $this->getParameter("voir");
$haut = $this->getParameter("haut");
$bas = $this->getParameter("bas");
echo "<div class=\"ancrer\">";
if(!empty($haut)) echo '<a href="#'. $haut .'">Haut</a> ';
if(!empty($bas)) echo '<a href="#'. $bas .'">Bas</a> ';
echo "</div>";
echo "<div class=\"ancre\">";
if(!empty($ici)) echo '<b><A NAME="'.$ici.'"></A></b> ';
if(!empty($voir)) echo '<a href="#'. $voir .'">'. $voir .'</a> ';
if(!empty($texte) ) echo '<b><A NAME="'.$texte.'"></A></b> '. $this->Format($texte);
echo "</div>";
?>
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 =
"<applet code=\"freemind.main.FreeMindApplet.class\" archive=\"freemindbrowser.jar\" width=\"100%\" height=\"$height\">\n".
" <param name=\"type\" value=\"application/x-java-applet;version=1.4\" />\n".
" <param name=\"scriptable\" value=\"false\" />\n".
" <param name=\"modes\" value=\"freemind.modes.browsemode.BrowseMode\" />\n".
" <param name=\"browsemode_initial_map\" value=\"$mindmap_url\" />\n".
" <param name=\"initial_mode\" value=\"Browse\" />\n".
" <param name=\"selection_method\" value=\"selection_method_direct\" />\n".
"</applet>\n".
"<br />\n".
"<span class=\"floatr\"><a href=\"$mindmap_url\">Télécharger ce réseau de concept</a> :: Utiliser <a href=\"http://freemind.sourceforge.net/\">Freemind</a> pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.</span><div style=\"clear:both;\"></div>\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 =
"<applet code=\"geogebra.GeoGebraApplet\" archive=\"geogebra.jar\" width=\"100%\" height=\"450\">\n".
" <param name=\"filename\" value=\"$geogebra_url\" />\n".
" <param name=\"framePossible\" value=\"false\" />\n".
"</applet>\n".
"<br />\n".
"<span class=\"floatr\"><a href=\"$geogebra_url\">Télécharger ce fichier GeoGebra</a> :: Utiliser <a href=\"http://www.geogebra.at/\">GeoGebra</a> pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.</span><div style=\"clear:both;\"></div>\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 =
"<applet id=\"umf_rect\" code=\"geonext.Geonext.class\" archive=\"geonext.jar\" width=\"100%\" height=\"500\">\n".
" <param name=\"geonext\" value=\"file:$fullFilename\" />\n".
" <param name=\"scriptable\" value=\"true\" />\n".
" <param name=\"MAYSCRIPT\" value=\"true\" />\n".
"</applet>\n".
"<br />\n".
"<span class=\"floatr\"><a href=\"$geonext_url\">Télécharger ce fichier GeoNext</a> :: Utiliser <a href=\"http://www.geogebra.at/\">GeoNext</a> pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.</span><div style=\"clear:both;\"></div>\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 =
"<applet code=\"geolabo.geoweb.class\" codebase=\".\" archive=\"geoweb.jar\" width=\"100%\" height=\"450\">\n".
" <param name=\"figure\" value=\"$fullFilename\" />\n".
" <param name=\"framePossible\" value=\"false\" />\n".
"</applet>\n".
"<br />\n".
"<span class=\"floatr\"><a href=\"$geogebra_url\">Télécharger ce fichier Geolabo</a> :: Utiliser <a href=\"http://www.bibmath.net/geolabo/index.php3/\">Geolabo</a> pour l'éditer. Plein écran: cliquer sur Imprimer ci-dessous.</span><div style=\"clear:both;\"></div>\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
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 '<div class="commenteditlink">';
if ($this->HasAccess('write', $comment['tag']))
{
echo '<a href="',$this->href('edit',$comment['tag']),'">Éditer ce commentaire</a>';
}
if ($this->UserIsOwner($comment['tag'])
|| $this->UserIsOwner() || ($this->GetUserName()== $this->config[admin_wiki]))
{
echo '<br />','<a href="',$this->href('deletecomment',$comment['tag']),'">Supprimer ce commentaire</a>';
}
//echo "$comment[comment_on]";
echo "</div>\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 =
"<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" width=\"$haut\" height=\"$large\">
<param name=\"movie\" value=\"$fullFilename\">
<param name=\"quality\" value=\"high\">
<param name=\"LOOP\" value=\"false\">
<param name=\"menu\" value=\"false\">\n".
"<embed src=\"$fullFilename\" loop=\"false\" width=\"$haut\" height=\"$large\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" menu=\"false\"></embed>\n".
"</object>\n".
"<br />\n".
"<span class=\"floatr\"><a href=\"$flash_url\">Télécharger ce fichier Flash</a> Plein écran: cliquer sur Imprimer ci-dessous.</span><div style=\"clear:both;\"></div>\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 =
"<object type=\"application/x-shockwave-flash\" data=\"xspf.swf?song_url=$fullFilename&song_title=$titre\" width=\"200\" height=\"20\"><param name=\"quality\" value=\"low\" /><param name=\"movie\" value=\"xspf.swf?song_url=$fullFilename&song_title=$titre\" /> </object>\n".
"<br />\n".
"<a href=\"$mp3_url\">Télécharger $this->desc</a>\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 <head> de la page:
<?php if ($this->HasAccess('write', $comment['tag'])) { ?>
<style type="text/css">
.handout { }
</style>
<?php
}
else { ?>
<style type="text/css">
.handout { display: none; }
</style>
<?php
} ?>
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 "<a href=\"$csv_url\">Télécharger $this->desc</a>";
$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:
<?php
/*
note action
Displays a sidebar note (like a post-it)
Syntax: {{note text="text"}}
*/
$text = htmlspecialchars($vars['texte']);
if ($vars['titre']=="") { $title="Note";}
else { $title = htmlspecialchars($vars['titre']);}
?>
<div id="note">
<div class="title"><?php echo $title; ?></div>
<div id="text">
<?php echo $text; ?>
</div>
</div>
Ajout formatage tableau+csv
Ajout de ce code dans le fichier /formatters/wakka.php
// Tables
else if (preg_match("/^(\|\|)(.*?)(\|\|)$/s", $thing, $matches))
{
$result = "\n<table id=\"csvtable\">\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 .= "<tr>\n";
$colonnes = split (";", $ligne);
foreach ($colonnes as $colonne) {
$result .= "<th>".$colonne."</th>\n";
}
$result .= "</tr>\n";
$n++;
}
else {
$result .= "<tr>\n";
$colonnes = split (";", $ligne);
foreach ($colonnes as $colonne) {
$result .= "<td>".$colonne."</td>\n";
}
$result .= "</tr>\n";
$n++;
}
}
$result .= "</table>\n\n";
$result .="<form action=\"$lien/grabcode\" method=\"post\">
<br /><input type=\"submit\" name=\"save\" class=\"grabcodebutton\" value=\"-> .csv\" title=\"Télécharger le contenu du tableau (csv)\" />
<input type=\"hidden\" name=\"contenu\" value=\"$code\" /></form>\n";
return $result;
}
// fin Tables
Ajout du fichier /handlers/page/grabcode.php pour télécharger le fichier csv:
<?php
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) {
die ("accès direct interdit");
}
$contenu = $_POST[contenu];
header('Content-type: application/force-download');
header("Content-type: text/plain");
header('Content-Disposition: attachment; filename="tableau.csv"');
// display raw page
echo $contenu;
?>
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";
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).
On fait calculer la somme de 2 nombres aléatoires (entre 0 et 9).
Ajout dans le CSS: .question {color:#c71f1f; font-weight: bold;}
Action lien
<?php
/*
lien action
{{lien url="http://lien.com" texte="Texte du lien" titre="Titre du lien" image="http://lienversimage"}}
*/
if (empty($vars['url'])) echo "Pas de critère url!";
else {
$url = htmlspecialchars($vars['url']);
$text = htmlspecialchars($vars['texte']);
$image = htmlspecialchars($vars['image']);
$title = htmlspecialchars($vars['titre']);
if (!preg_match("/:\/\//", $url))
{
$url = "http://".$url; //Very important for xss (avoid javascript:() hacking)
}
if (empty($text)) $text = $url;
if (!preg_match("/:\/\//", $image))
{
$image = "http://".$image;
}
if (!empty($vars['image'])) $text = "<img src=\"$image\" border=\"0\" alt=\"$text\">";
echo '<a href="' . $url . '" title="' . $title . '">' . $text . '</a>';
}
?>
Il n'y a pas de commentaire sur cette page.
[Afficher commentaires/formulaire]

