{17} Completed Tickets by Milestone (Full Description) (654 matches)

Release Notes: List verified and closed tickets, group by milestone, include description.

Results (1 - 100 of 654)

1 2 3 4 5 6 7

Not Assigned (90 matches)

Ticket Summary Component Status Version Type Severity Created
Description
#275 (SPAM) 3rdparty closed defect blocker 07/13/2006

#284 (SPAM) 3rdparty closed defect blocker 07/15/2006

#304 SPAM 3rdparty closed defect blocker 08/12/2006

SPAM


#306 (SPAM) 3rdparty closed defect blocker 08/17/2006

#316 (SPAM) 3rdparty closed defect blocker 08/29/2006

#322 (SPAM) 3rdparty closed defect blocker 09/10/2006

#350 (SPAM) 3rdparty closed defect blocker 10/12/2006

#351 (SPAM) 3rdparty closed defect blocker 10/12/2006

#282 Compare Versions core closed 1.1.6.2 enhancement critical 07/14/2006

Dear Wikkawiki Team,

First I would like to thank the team for the wonderful work done in developing this tool. I downloaded the same and enhanced it for my requirements.

Im facing a problem with the compare versions. Hope the team can help me in this.

The compare version page take two versions of a content as arguments and displays the added/deleted and Changed lines. The modification I have done is :

1. The contents will be shown in the left and right frame, so that the user will get the best visualization effect, when he sees the difference. 2. Comparison is considered for the entire line.(no world level comparison)

So, say for example I have a file called "sample" which has 7 versions.

content of version 1:


It will be grateful if you can let me know. Or else I would have to break my head.

content of version 2:


I hope you can help me. It will be grateful if you can let me know. Or else I would have to break my head.

content of version 3:


I hope you can help me. It will be grateful if you can let me know. Or else I would have to break my head. No .. No .. Im sure you guys can help me.

content of version 4:


Your Help is very much needed. It will be grateful if you can let me know. Or else I would have to break my head. No .. No .. Im sure you guys can help me.

content of version 5:


Im looking for your help. Your Help is very much needed. It will be grateful if you can help me in this. Or else I would have to break my head. Yes .. Im sure you guys can help me. Can you do it for me ?

content of version 6:


Your Help is very much needed. It will be grateful if you can help me in this. Yes .. Im sure you guys can help me. Can you do it for me ?

content of version 7:


Im looking for your help. Your Help in this topic is very much needed. It will be grateful if you can help me in this. Yes .. Im sure you guys can help me. I think you will do this for me ! Can you do it for me please ...?

Now I come to the explanation.

1. If I compare version 1 and 2, then the system will mark "I hope you can help me." in green color which indicates addition.

2. If I compare version 2 and 3, then the system will mark "No .. No .. Im sure you guys can help me." in green color which indicates addition

3. If I compare version 3 and 4, then the system will mark "Your Help is very much needed." in new file and "I hope you can help me." in yellow color to indicate that the content of the line is changed.

4. If I compare version 4 and 5, then the system will mark "Im looking for your help." in green color (addition) "Yes .. Im sure you guys can help me." and "No .. No .. Im sure you guys can help me." in yellow color. and "Can you do it for me ?" in green color.

5. If I compare version 5 and 6, then the system will mark "Im looking for your help." in red (deleted) "Or else I would have to break my head." in red (deleted)

6. If I compare version 6 and 7, then the system will mark

"Your Help is very much needed." and "I’m looking for your help." in yellow (changed) "Your Help in this topic is very much needed." in green (addition) "I think you will do this for me !" and "Can you do it for me ?" in yellow (changed) "Can you do it for me please ...?" in green (addition)

Only this scenario is wrong. According to my requirements If I compare version 6 and 7, then the system should mark:

"Your Help is very much needed." and "Your Help in this topic is very much needed." in yellow (changed) "I’m looking for your help." in green (addition) "Can you do it for me please ...?" and "Can you do it for me?" in yellow (changed) "I think you will do this for me !" in green (addition)

Modified Soure code is :

" <div class="page"> <?php

if ($this->HasAccess("read",$_GETmenueId?)){

/* A php wdiff (word diff) for wakka, adapted by David Delon

based on wdiff and phpwiki diff (copyright below). TODO : Since wdiff use only directive lines, all stuff in diff class related to line and context display should be removed.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. */

/* A PHP diff engine for phpwiki.

Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@…> You may copy this code freely under the conditions of the GPL.

*/

/* wdiff -- front end to diff for comparing on a word per word basis.

Copyright (C) 1992 Free Software Foundation, Inc. Francois Pinard <pinard@…>.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

*/

// If asked, call original diff

if ($_REQUESTfastdiff?) {

/* NOTE: This is a really cheap way to do it. I think it may be more intelligent to write the two pages to temporary files and run /usr/bin/diff over them. Then again, maybe not. */ // load pages $pageA = $this->LoadPageById($_REQUESTa?); $pageB = $this->LoadPageById($_REQUESTb?);

$bodyA = explode("\n", $pageAbody?); $bodyB = explode("\n", $pageBbody?);

$added = array_diff($bodyA, $bodyB); $deleted = array_diff($bodyB, $bodyA);

$output .= "<b>Comparison of <a href=\"".$this->Href("", "", "time=".urlencode($pageAtime?))."\">".date("d.m.Y H:i:s", strtotime($pageAtime?))."</a> &amp; <a href=\"".$this->Href("", "", "time=".urlencode($pageBtime?))."\">".date("d.m.Y H:i:s", strtotime($pageBtime?))."</a></b><br />\n";

if ($added) {

// remove blank lines $output .= "<br />\n<b>Additions:</b><br />\n"; $output .= "<span class=\"additions\">".$this->Format(implode("\n", $added))."</span>";

}

if ($deleted) {

$output .= "<br />\n<b>Deletions:</b><br />\n"; $output .= "<span class=\"deletions\">".$this->Format(implode("\n", $deleted))."</span>";

}

if (!$added && !$deleted) {

$output .= "<br />\nNo Differences.";

} echo $output;

}else {

// load pages

$pageA = $this->LoadPageById($_REQUESTb?); $pageB = $this->LoadPageById($_REQUESTa?);

// extract text from bodies $textA = $pageAbody?."\n"; $textB = $pageBbody?."\n"; ////error_log(" A : ".$textA." B : ".$textB, 0);

if($textA == "\n"){

$textA = ""; ////error_log(" A : ".$textA." B : ".$textB, 0);

} if($textB == "\n"){

$textB = ""; ////error_log(" A : ".$textA." B : ".$textB, 0);

}

$sideA = new Side($textA); $sideB = new Side($textB);

$bodyA = str_replace("\n","@lb\n",$textA); $bodyB = str_replace("\n","@lb\n",$textB);

// diff on these two file // Always treat the latest file as latest even if it is on the left or right of // the comparison screen.

if(strtotime($pageBtime?) > strtotime($pageAtime?)){

//echo " B is Latest"; $diff = new Diff(split("\n",$bodyA),split("\n",$bodyB));

}else{

//echo " A is Latest"; $diff = new Diff(split("\n",$bodyB),split("\n",$bodyA));

}

$output= '<table width=100% border=0>'.

'<tr>'.

'<td width=50% class="restText">Seitenname / Navigationspunkt: </td>'.

'<td class="restText"><b>'.$this->pagelabel?.'&nbsp;</b></td>'.

'</tr>'. '<tr>'.

'<td width=50% class="restText">Kurzbeschreibung:</td>'. '<td class="restText">'.$this->pagenote?.'</td>'.

'</tr></table><br>';

echo $output;

echo "<table>".

"<tr>".

"<td>Legende: </td>". "<td class=additions>Hinzugefügte Abschnitte</td>". "<td class=changes>Geänderte Abschnitte</td>". "<td class=deletions>Gestrichene Abschnitte</td>".

"</tr>".

"</table>". "<br>";

if($GLOBALS[objAccess]->getGroupIdAccess($_GETmenueId?,4) != "blocked" && $this->IsConfirmationNeeded()){

if ($pageBconfirm_time?){

$confirm_time_B="[".date("d.m.Y H:i:s", strtotime($pageBconfirm_time?))."]";

}else{

$confirm_time_B ="Noch nicht erfolgt";

} if($pageAconfirm_time?){

$confirm_time_A ="[".date("d.m.Y H:i:s", strtotime($pageAconfirm_time?))."]";

}else{

$confirm_time_A ="Noch nicht erfolgt";

}

}else{

$confirm_time_A = $confirm_time_B ="Nicht erforderlich.";

}

//$output = "<div class=\"scrollWrapper\"><table class=\"scrollable\" width=100% valign=top cellpadding=0 cellspacing=0 border=0><tbody><tr></td>";

$output = "<table width=100% valign=top cellpadding=0 cellspacing=0 border=0>".

"<tr>".

"<td><img src='./images/spacer.gif' width=360 height=0></td>". "<td><img src='./images/spacer.gif' width=360 height=0></td>".

"</tr>". "<tr align=center >".

"<td colspan=2 style='border: 1px solid black;'>Version". "</td></tr>".

"<tr align=center >".

"<td >\n".

"<a \n".

"href=\"".$this->Href("", "", "time=".urlencode($pageBtime?))."\">\n". "".date("d.m.Y H:i:s", strtotime($pageBtime?))." \n".

"</a>\n".

"</td>\n". "<td>\n".

"<a \n".

"href=\"".$this->Href("", "", "time=".urlencode($pageAtime?))."\">\n". "".date("d.m.Y H:i:s", strtotime($pageAtime?))."\n".

"</a>\n".

"</td>\n".

"</tr>\n".

"<tr align=center >".

"<td colspan=2 style='border: 1px solid black;'>Bestätigung durch die PV". "</td></tr>". "<tr align=center >". "<td >\n$confirm_time_B".

"</td>\n". "<td>\n$confirm_time_A". "</td>\n".

"</tr>\n".

"<tr align=center >".

"<td colspan=2 style='border: 1px solid black;'>Inhalt der Versionen". "</td></tr><table>";

echo $output;

$output .= "<table width=100% valign=top cellpadding=0 cellspacing=0 border=0>".

"<tr>".

"<td width=49%>&nbsp;</td>". "<td width=2%>&nbsp;</td>". "<td width=49%>&nbsp;<img src='./images/spacer.gif' width=350 height=0></td>".

"</tr>";

$strColorLeft = "#D7D9D9"; $strColorRight = "#BEC0C0";

$strColorAdd = "#ccffcc"; $strColorDel = "#FFCC99"; $strColorChg = "#ffff00";

$output .="<tr><td width=49%>&nbsp;</td><td width=2%>&nbsp;</td><td width=49%>&nbsp;</td></tr>";

$outputLeft = ""; $outputRight = "";

foreach ( $diff->edits as $action ){

if(strtotime($pageAtime?) > strtotime($pageBtime?)){

$temp = $action->orig; $action->orig = $action->final; $action->final = $temp;

}

if(is_array($action->orig)){

$output .="<tr><td colspan=2>origis array</td></tr>"; //$orig = $this->Format(implode(" ",$action->orig)); $orig = implode(" ",$action->orig); ////error_log("orig : ".$orig);

}

$final = "X"; if(is_array($action->final)){

$output .="<tr><td colspan=2>final array</td></tr>"; $final = $this->Format(implode(" ",$action->final)); $final = implode(" ",$action->final); ////error_log("final : ".$final); if($final==""){

$final = "X";

}

}

//echo "<tr><td colspan=2>".get_class($action)."</td></tr>"; if ( strtolower(get_class($action)) == "_diffop_copy" ){

$orgLen = strlen($orig); /*if($orgLen > 41){

$loopvar = true; $start = 0; $end = 40; $output .= "<tr valign=top><td width=49% bgcolor=$strColorLeft>"; $temp_orig = ""; while ($end <= $orgLen){

//error_log("end is : ".$end); //error_log("start is : ".$start); $temp_orig .= substr($orig,$start,40); //error_log("temp_orig is : ".$temp_orig); $start = $end+1; if(strlen(substr($orig,$end)) >41){

$end = $end+40;

}else{

$end = $orgLen;

}

} $output .=$temp_orig; $temp_orig = ""; $output .="</td><td width=2%>&nbsp;</td>". "<td width=49% bgcolor=$strColorRight>"; $start = 0; $end = 40; while ($end <= $orgLen){

//error_log("end is : ".$end); //error_log("start is : ".$start); $temp_orig .= substr($orig,$start,40); //error_log("temp_orig is : ".$temp_orig); $start = $end+1; if(strlen(substr($orig,$end)) >41){

$end = $end+40;

}else{

$end = $orgLen;

}

} $output .=$temp_orig; $output .="</td></tr>";

}else{*/

$output .= "<tr valign=top><td bgcolor=$strColorLeft><div class=\"scrollWrapper\">".$orig."</div></td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorRight><div class=\"scrollWrapper\">".$orig."</div></td></tr>"; //"<div id='locator' style='position:relative; top:10px; left:10px; width:25px; height:25px; border:solid 2px ">&nbsp;</div> $outputLeft .= "<tr valign=top><td bgcolor=$strColorLeft>".$orig."</td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=$strColorRight>".$orig."</td></tr>";

//}

}elseif ( get_class($action) == "_DiffOp_Change" ){

//$output .="<tr><td >Final is:".$final."</td><td>Org is :".$orig."</td></tr>"; if ( ($final == "X") && (strlen($orig) > 0) ){

$output .= "<tr valign=top><td bgcolor=$strColorLeft><div class=\"scrollWrapper\">&nbsp;</div></td>". "<td >&nbsp;</td>". "<td bgcolor=#FFCC99><div class=\"scrollWrapper\"><span class='deletions'>".$orig."</span></div></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=$strColorLeft>&nbsp;</td></tr>". $outputRight .= "<tr valign=top><td bgcolor=#FFCC99><span class='deletions'>".$orig."</span></div></td></tr>";

}else{

if(is_array($action->orig) && is_array($action->final)){

//$output .= "</table><table width=100% valign=top cellpadding=0 cellspacing=0 >"; if(sizeof($action->orig) > sizeof($action->final)){

$loop = sizeof($action->orig);

}else{

$loop = sizeof($action->final);

} for ($ll=0;$ll<$loop;$ll++){

$output .= "<tr valign=top style='border-top: 1';><td bgcolor=$strColorChg><div class=\"scrollWrapper\"><span class='changes'>".$action->final[$ll]."</span></div></td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorChg><div class=\"scrollWrapper\"><span class='changes'>".$action->orig[$ll]."</span></div></td></tr>"; $outputLeft .= "<tr valign=top style='border-top: 1';><td bgcolor=$strColorChg><span class='changes'>".$action->final[$ll]."</span></td></tr>"; $outputRight .= "<tr valign=top style='border-top: 1';><td bgcolor=$strColorChg><span class='changes'>".$action->orig[$ll]."</span></td></tr>";

} //$output .= "<table width=100% valign=top cellpadding=0 cellspacing=0 >";

}else{

$output .= "<tr valign=top><td bgcolor=$strColorChg><div class=\"scrollWrapper\"><span class='changes'>".$final."</span></div></td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorChg><div class=\"scrollWrapper\"><span class='changes'>".$orig."</span></div></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=$strColorChg><span class='changes'>".$final."</span></td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=$strColorChg><span class='changes'>".$orig."</span></td></tr>";

}

}

}elseif ( get_class($action) == "_DiffOp_Delete" ){

//$output .="<tr><td >Final is:".$final."</td><td>Org is :".$orig."</td></tr>"; if(strtotime($pageAtime?) > strtotime($pageBtime?)){

$output .= "<tr valign=top><td bgcolor=#FFCC99><div class=\"scrollWrapper\"><span class='deletions'>".$final."</span></div></td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorRight><div class=\"scrollWrapper\">&nbsp;</div></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=#FFCC99><span class='deletions'>".$final."</span></td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=$strColorRight>&nbsp;</td></tr>";

}else{

$output .= "<tr valign=top><td bgcolor=$strColorLeft><div class=\"scrollWrapper\">&nbsp;</div></td>". "<td >&nbsp;</td>". "<td bgcolor=#FFCC99><div class=\"scrollWrapper\"><span class='deletions'>".$orig."</span></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=$strColorLeft>&nbsp;</td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=#FFCC99><span class='deletions'>".$orig."</span></td></tr>";

}

}elseif ( get_class($action) == "_DiffOp_Add" ){

if(strtotime($pageAtime?) > strtotime($pageBtime?)){

$output .="<tr><td >Final is:".$final."</td><td>Org is :".$orig."</td></tr>"; $output .= "<tr valign=top><td bgcolor=$strColorLeft>&nbsp;</td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorAdd><span class='additions'>".$orig."</span></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=$strColorLeft>&nbsp;</td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=$strColorAdd><span class='additions'>".$orig."</span></td></tr>";

}else{

$output .= "<tr valign=top><td bgcolor=$strColorAdd><div class=\"scrollWrapper\"><span class='additions'>".$final."</span></div></td>". "<td >&nbsp;</td>". "<td bgcolor=$strColorRight><div class=\"scrollWrapper\">&nbsp;</div></td></tr>"; $outputLeft .= "<tr valign=top><td bgcolor=$strColorAdd><span class='additions'>".$final."</span></td></tr>"; $outputRight .= "<tr valign=top><td bgcolor=$strColorRight>&nbsp;</td></tr>";

}

}

}//end foreach $diff->edits

$output .= "</table>";

$output = str_replace("@lb"," <br>",$output);

//echo $output;

echo "<table width=100% valign=top cellpadding=0 cellspacing=0 border=0>".

"<tr>".

"<td width=49%>&nbsp;</td>". "<td width=2%>&nbsp;</td>". "<td width=49%>&nbsp;</td>".

"</tr><tr valign=top>";

$outputLeft = str_replace("@lb"," <br>",$outputLeft); $outputRight = str_replace("@lb"," <br>",$outputRight); echo "<td valign=top><div class=\"scrollWrapper\"><table width=100% border=0>".$outputLeft."</table></div></td>"; echo "<td>&nbsp;</td>"; echo "<td valign=top><div class=\"scrollWrapper\"><table width=100% border=0>".$outputRight."</table></div></td>"; ////error_log("outputLeft".$outputLeft,0); //echo $outputRight; echo "</tr></table>";

// format output /* $fmt = new DiffFormatter();

$sideO = new Side($fmt->format($diff));

$resync_left=0; $resync_right=0;

$count_total_right=$sideB->getposition() ;

$sideA->init(); $sideB->init();

$output=;

while (1) {

$sideO->skip_line(); if ($sideO->isend()) {

break;

}

if ($sideO->decode_directive_line()) {

$argument=$sideO->getargument();

$letter=$sideO->getdirective(); switch ($letter) {

case 'a': $resync_left = $argument[0]; $resync_right = $argument[2] - 1; break;

case 'd': $resync_left = $argument[0] - 1; $resync_right = $argument[2]; break;

case 'c': $resync_left = $argument[0] - 1; $resync_right = $argument[2] - 1; break;

}

$sideA->skip_until_ordinal($resync_left); $sideB->copy_until_ordinal($resync_right,$output);

// deleted word

if (($letter=='d')

($letter=='c')) {

$sideA->copy_whitespace($output); $output .="&yen;&yen;"; $sideA->copy_word($output); $sideA->copy_until_ordinal($argument[1],$output); $output .=" &yen;&yen;";

}

// inserted word

if ($letter == 'a'

$letter == 'c') {

$sideB->copy_whitespace($output); $output .="&pound;&pound;"; $sideB->copy_word($output); $sideB->copy_until_ordinal($argument[3],$output); $output .=" &pound;&pound;";

}

}

}

$sideB->copy_until_ordinal($count_total_right,$output); $sideB->copy_whitespace($output); $out=$this->Format($output); echo $out;*/

} echo "<br>";

echo "<div class=\"footer\">"; echo printMenueLink($this->href("revisions")."&menueId=".$_GETmenueId?,'Versionen',"");

}else{

print("<p>Die Seite kann nicht angezeigt werden<br>"); print("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); print("<input type='button' value=' OK ' onclick='history.back();' /></p>");

}

// Side : a string for wdiff

class Side {

var $position; var $cursor; var $content; var $character; var $directive; var $argument; var $length;

function Side($content) {

$this->content=$content; $this->position=0; $this->cursor=0; $this->directive=; $this->argument=array(); $this->length=strlen($this->content); $this->character=substr($this->content,0,1);

}

function getposition() {

return $this->position;

}

function getcharacter() {

return $this->character;

}

function getdirective() {

return $this->directive;

}

function getargument() {

return $this->argument;

}

function nextchar() {

$this->cursor++; $this->character=substr($this->content,$this->cursor,1);

}

function copy_until_ordinal($ordinal,&$out) {

while ($this->position < $ordinal) {

$this->copy_whitespace($out); $this->copy_word($out);

}

}

function skip_until_ordinal($ordinal) {

while ($this->position < $ordinal) {

$this->skip_whitespace(); $this->skip_word();

}

}

function split_file_into_words (&$out) {

while (!$this->isend()) {

$this->skip_whitespace(); if ($this->isend()) {

break;

} $this->copy_word($out); $out .="\n";

}

}

function init() {

$this->position=0; $this->cursor=0; $this->directive=; $this->argument=array(); $this->character=substr($this->content,0,1);

}

function isspace($char) {

if (ereg('[[:space:]]',$char)) {

return true;

} else {

return false;

}

}

function isdigit($char) {

if (ereg('[[:digit:]]',$char)) {

return true;

} else {

return false;

}

}

function isend() {

if (($this->cursor)>=($this->length)) {

return true;

} else {

return false;

}

}

function copy_whitespace(&$out) {

while (!$this->isend() && $this->isspace($this->character)) {

$out .=$this->character; $this->nextchar();

}

}

function skip_whitespace() {

while (!$this->isend() && $this->isspace($this->character)) {

$this->nextchar();

}

}

function skip_line() {

while (!$this->isend() && !$this->isdigit($this->character)) {

while (!$this->isend() && $this->character!="\n") $this->nextchar(); if($this->character=="\n")

$this->nextchar();

}

}

function copy_word(&$out) {

while (!$this->isend() && !($this->isspace($this->character))) {

$out.=$this->character; $this->nextchar();

} $this->position++;

}

function skip_word() {

while (!$this->isend() && !($this->isspace($this->character))) {

$this->nextchar();

} $this->position++;

}

function decode_directive_line() {

$value=0; $state=0; $error=0;

while (!$error && $state < 4) {

if ($this->isdigit($this->character)) {

$value = 0; while($this->isdigit($this->character)) {

$value = 10 * $value + $this->character - '0'; $this->nextchar();

}

} else if ($state != 1 && $state != 3) $error = 1;

/* Assign the proper value. */

$this->argument[$state] = $value;

/* Skip the following character. */

switch ($state) {

case 0: case 2:

if ($this->character == ',')

$this->nextchar();

break;

case 1:

if ($this->character == 'a'

$this->character == 'd' $this->character == 'c') {

$this->directive = $this->character; $this->nextchar();

}

else

$error = 1;

break;

case 3: if ($this->character != "\n")

$error = 1; break;

}

$state++;

}

/* Complete reading of the line and return success value. */

while ((!$this->isend()) && ($this->character != "\n")) {

$this->nextchar();

} if ($this->character == "\n")

$this->nextchar();

return !$error;

}

}

// difflib // // A PHP diff engine for phpwiki. // // Copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki@…> // You may copy this code freely under the conditions of the GPL. //

// PHP3 does not have assert() define('USE_ASSERTS', function_exists('assert'));

class _DiffOp {

var $type; var $orig; var $final;

function norig() {

return $this->orig ? sizeof($this->orig) : 0;

}

function nfinal() {

return $this->final ? sizeof($this->final) : 0;

}

}

class _DiffOp_Copy extends _DiffOp {

var $type = 'copy';

function _DiffOp_Copy ($orig, $final = false) {

if (!is_array($final))

$final = $orig;

$this->orig = $orig; $this->final = $final;

}

}

class _DiffOp_Delete extends _DiffOp {

var $type = 'delete';

function _DiffOp_Delete ($lines) {

$this->orig = $lines; $this->final = false;

}

}

class _DiffOp_Add extends _DiffOp {

var $type = 'add';

function _DiffOp_Add ($lines) {

$this->final = $lines; $this->orig = false;

}

}

class _DiffOp_Change extends _DiffOp {

var $type = 'change';

function _DiffOp_Change ($orig, $final) {

$this->orig = $orig; $this->final = $final;

}

}

/**

class _DiffEngine {

function diff ($from_lines, $to_lines) {

$n_from = sizeof($from_lines); $n_to = sizeof($to_lines);

$this->xchanged = $this->ychanged = array(); $this->xv = $this->yv = array(); $this->xind = $this->yind = array(); unset($this->seq); unset($this->in_seq); unset($this->lcs);

// Skip leading common lines. ////error_log(" n_from : ".$n_from." n to : ".$n_to, 0); for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {

////error_log(" from_lines: ".$from_lines[$skip]." to_lines[skip] : ".$to_lines[$skip], 0);

if ($from_lines[$skip] != $to_lines[$skip])

break;

$this->xchanged[$skip] = $this->ychanged[$skip] = false;

} // Skip trailing common lines. $xi = $n_from; $yi = $n_to; for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {

////error_log(" vfrom_lines: ".$from_lines[$xi]." to_lines[skip] : ".$to_lines[$yi], 0); if ($from_lines[$xi] != $to_lines[$yi])

break;

$this->xchanged[$xi] = $this->ychanged[$yi] = false;

}

/*//error_log("skip is ".$skip,0); //error_log("endskip is ".($endskip),0); //error_log("n_from ".($n_from),0); //error_log("n_from - endskip is ".($n_from - $endskip),0); */

// Ignore lines which do not exist in both files. for ($xi = $skip; $xi < $n_from - $endskip; $xi++){

$xhash[$from_lines[$xi]] = 1; ////error_log(" xhash[line] is : ".$from_lines[$xi],0);

}

for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {

$line = $to_lines[$yi]; ////error_log(" line: ".$line." this->ychanged[yi] : ".$this->ychanged[$yi], 0); ////error_log(" xhash[line]: ".$xhash[$line]." empty() : ".empty($xhash[$line]), 0);

if ( ($this->ychanged[$yi] = empty($xhash[$line])) )

continue;

////error_log("not continuing in y : ", 0); $yhash[$line] = 1; $this->yv[] = $line; $this->yind[] = $yi;

} for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {

$line = $from_lines[$xi]; ////error_log(" line: ".$line." this->xchanged[xi] : ".$this->xchanged[$xi], 0); ////error_log(" yhash[line]: ".$yhash[$line]." empty() : ".empty($yhash[$line]), 0); if ( ($this->xchanged[$xi] = empty($yhash[$line])) )

continue;

////error_log("not continuing in x : ", 0); $this->xv[] = $line; $this->xind[] = $xi;

}

// Find the LCS. $this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv));

// Merge edits when possible $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged); $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged);

// Compute the edit operations. $edits = array(); $xi = $yi = 0; //echo "n_from is :".$n_from." n to is : ".$n_to;

/*while ($xi < $n_from ) {

echo "<tr><td>X changed :".$this->xchanged[$xi++]."</td></tr>";

}

while ($yi < $n_to ) {

echo "<tr><td>Y changed :".$this->ychanged[$yi++]."</td></tr>";

}*/

$xi = $yi = 0;

while ($xi < $n_from

$yi < $n_to) {

//echo "\nXi is :".$xi." Yi is : ".$xi;

USE_ASSERTS && assert($yi < $n_to

$this->xchanged[$xi]);

USE_ASSERTS && assert($xi < $n_from

$this->ychanged[$yi]);

//echo "\nX changed :".$this->xchanged[$xi]." Y changed : ".$this->ychanged[$yi];

// Skip matching "snake". $copy = array(); while ( $xi < $n_from && $yi < $n_to

&& !$this->xchanged[$xi] && !$this->ychanged[$yi]) {

$copy[] = $from_lines[$xi++]; ++$yi;

} if ($copy)

$edits[] = new _DiffOp_Copy($copy);

// Find deletes & adds. $delete = array(); while ($xi < $n_from && $this->xchanged[$xi])

$delete[] = $from_lines[$xi++];

$add = array(); while ($yi < $n_to && $this->ychanged[$yi]){

$add[] = $to_lines[$yi++]; //echo "<tr><td>to line :".$to_lines[$yi-1]."</td></tr>";

}

if ($delete && $add){

$iDeleteSize = sizeof($delete); $iAddSize = sizeof($add);

if($iAddSize < $iDeleteSize){

$iMin = $iAddSize;

}else{

$iMin = $iDeleteSize;

} for($iVar=0;$iVar<$iMin;$iVar++){

$edits[] = new _DiffOp_Change(array($delete[$iVar]), array($add[$iVar]));

}

$iVar =0; foreach ($delete as $del) {

if($iVar >($iMin-1)){

//echo "<tr><td>sizse is :".$del."</td></tr>"; $ddeell[$iVar-1] = $del;

} $iVar++;

} if($iDeleteSize >$iMin){

$edits[] = new _DiffOp_Delete($ddeell);

}

$iVar =0; foreach ($add as $aad) {

if($iVar >($iMin-1)){

//echo "<tr><td>elt is :".$aad."</td></tr>"; $aaaadd[$iVar-1] = $aad;

} $iVar++;

} if($iAddSize > $iMin){

$edits[] = new _DiffOp_Add($aaaadd);

}

/*

$iVar =0; foreach ($delete as $del) {

if($iVar < sizeof($delete)-1){

//echo "<tr><td>sizse is :".$del."</td></tr>"; $ddeell[$iVar] = $del;

} $iVar++;

} if(sizeof($ddeell) >0){

$edits[] = new _DiffOp_Delete($ddeell);

}

$iVar =0; foreach ($add as $aad) {

if($iVar < sizeof($add)-1){

//echo "<tr><td>elt is :".$aad."</td></tr>"; $aaaadd[$iVar] = $aad;

} $iVar++;

} //echo "sizeof ".sizeof($aaaadd); if(sizeof($aaaadd) >0){

$edits[] = new _DiffOp_Add($aaaadd);

} $edits[] = new _DiffOp_Change(array($delete[sizeof($delete)-1]), array($add[sizeof($add)-1])); */

// $edits[] = new _DiffOp_Change($delete, $add);

}elseif ($delete)

$edits[] = new _DiffOp_Delete($delete);

elseif ($add)

$edits[] = new _DiffOp_Add($add);

} return $edits;

}

/* Divide the Largest Common Subsequence (LCS) of the sequences

  • [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally
  • sized segments. *
  • Returns (LCS, PTS). LCS is the length of the LCS. PTS is an
  • array of NCHUNKS+1 (X, Y) indexes giving the diving points between
  • sub sequences. The first sub-sequence is contained in [X0, X1),
  • [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note
  • that (X0, Y0) == (XOFF, YOFF) and
  • (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM). *
  • This function assumes that the first lines of the specified portions
  • of the two files do not match, and likewise that the last lines do not
  • match. The caller must trim matching lines from the beginning and end
  • of the portions it is going to specify. */

function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {

$flip = false;

if ($xlim - $xoff > $ylim - $yoff) {

// Things seems faster (I'm not sure I understand why) // when the shortest sequence in X. $flip = true; list ($xoff, $xlim, $yoff, $ylim)

= array( $yoff, $ylim, $xoff, $xlim);

}

if ($flip)

for ($i = $ylim - 1; $i >= $yoff; $i--)

$ymatches[$this->xv[$i]][] = $i;

else

for ($i = $ylim - 1; $i >= $yoff; $i--)

$ymatches[$this->yv[$i]][] = $i;

$this->lcs = 0; $this->seq[0]= $yoff - 1; $this->in_seq = array(); $ymids[0] = array();

$numer = $xlim - $xoff + $nchunks - 1; $x = $xoff; for ($chunk = 0; $chunk < $nchunks; $chunk++) {

if ($chunk > 0)

for ($i = 0; $i <= $this->lcs; $i++)

$ymids[$i][$chunk-1] = $this->seq[$i];

$x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks); for ( ; $x < $x1; $x++) {

$line = $flip ? $this->yv[$x] : $this->xv[$x]; if (empty($ymatches[$line]))

continue;

$matches = $ymatches[$line]; reset($matches); while (list ($junk, $y) = each($matches))

if (empty($this->in_seq[$y])) {

$k = $this->_lcs_pos($y); USE_ASSERTS && assert($k > 0); $ymids[$k] = $ymids[$k-1]; break;

}

while (list ($junk, $y) = each($matches)) {

if ($y > $this->seq[$k-1]) {

USE_ASSERTS && assert($y < $this->seq[$k]); // Optimization: this is a common case: // next match is just replacing previous match. $this->in_seq[$this->seq[$k]] = false; $this->seq[$k] = $y; $this->in_seq[$y] = 1;

} else if (empty($this->in_seq[$y])) {

$k = $this->_lcs_pos($y); USE_ASSERTS && assert($k > 0); $ymids[$k] = $ymids[$k-1];

}

}

}

}

$seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff); $ymid = $ymids[$this->lcs]; for ($n = 0; $n < $nchunks - 1; $n++) {

$x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks); $y1 = $ymid[$n] + 1; $seps[] = $flip ? array($y1, $x1) : array($x1, $y1);

} $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim);

return array($this->lcs, $seps);

}

function _lcs_pos ($ypos) {

$end = $this->lcs;

if ($end == 0

$ypos > $this->seq[$end]) {

$this->seq[++$this->lcs] = $ypos; $this->in_seq[$ypos] = 1; return $this->lcs;

}

$beg = 1; while ($beg < $end) {

$mid = (int)(($beg + $end) / 2); if ( $ypos > $this->seq[$mid] )

$beg = $mid + 1;

else

$end = $mid;

}

USE_ASSERTS && assert($ypos != $this->seq[$end]);

$this->in_seq[$this->seq[$end]] = false; $this->seq[$end] = $ypos; $this->in_seq[$ypos] = 1; return $end;

}

/* Find LCS of two sequences.

*

  • The results are recorded in the vectors $this->{x,y}changed[], by
  • storing a 1 in the element for each line that is an insertion
  • or deletion (ie. is not in the LCS). *
  • The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. *
  • Note that XLIM, YLIM are exclusive bounds.
  • All line numbers are origin-0 and discarded lines are not counted. */

function _compareseq ($xoff, $xlim, $yoff, $ylim) {

// Slide down the bottom initial diagonal. //////error_log(" xoff : ".$xoff." xlim : ".$xlim." yoff : ".$yoff." ylim: ".$ylim, 0); //////error_log(" xv off : ".$this->xv[$xoff]." yv off : ".$this->yv[$yoff], 0); while ($xoff < $xlim && $yoff < $ylim

&& $this->xv[$xoff] == $this->yv[$yoff]) {

//////error_log(" came here exactly .. : ", 0);

++$xoff; ++$yoff;

}

// Slide up the top initial diagonal. while ($xlim > $xoff && $ylim > $yoff

&& $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {

//////error_log(" came here exactly 2.. : ", 0); --$xlim; --$ylim;

}

if ($xoff == $xlim

$yoff == $ylim){

$lcs = 0; //////error_log(" came here exactly 3.. : ", 0);

}else {

//////error_log(" came here exactly 4.. : ", 0);

// This is ad hoc but seems to work well. //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); //$nchunks = max(2,min(8,(int)$nchunks)); $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; list ($lcs, $seps)

= $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks);

}

if ($lcs == 0) {

// X and Y sequences have no common subsequence: // mark all changed. while ($yoff < $ylim)

$this->ychanged[$this->yind[$yoff++]] = 1;

while ($xoff < $xlim)

$this->xchanged[$this->xind[$xoff++]] = 1;

} else {

// Use the partitions to split this problem into subproblems. reset($seps); $pt1 = $seps[0]; while ($pt2 = next($seps)) {

$this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]); $pt1 = $pt2;

}

}

}

/* Adjust inserts/deletes of identical lines to join changes

  • as much as possible. *
  • We do something when a run of changed lines include a
  • line at one end and has an excluded, identical line at the other.
  • We are free to choose which identical line is included.
  • `compareseq' usually chooses the one at the beginning,
  • but usually it is cleaner to consider the following identical line
  • to be the "change". *
  • This is extracted verbatim from analyze.c (GNU diffutils-2.7). */

function _shift_boundaries ($lines, &$changed, $other_changed) {

$i = 0; $j = 0;

USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)'); $len = sizeof($lines); $other_len = sizeof($other_changed);

while (1) {

/*

  • Scan forwards to find beginning of another run of changes.
  • Also keep track of the corresponding point in the other file. *
  • Throughout this code, $i and $j are adjusted together so that
  • the first $i elements of $changed and the first $j elements
  • of $other_changed both contain the same number of zeros
  • (unchanged lines).
  • Furthermore, $j is always kept so that $j == $other_len or
  • $other_changed[$j] == false. */

while ($j < $other_len && $other_changed[$j])

$j++;

while ($i < $len && ! $changed[$i]) {

USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); $i++; $j++; while ($j < $other_len && $other_changed[$j])

$j++;

}

if ($i == $len)

break;

$start = $i;

// Find the end of this run of changes. while (++$i < $len && $changed[$i])

continue;

do {

/*

  • Record the length of this run of changes, so that
  • we can later determine whether the run has grown. */

$runlength = $i - $start;

/*

  • Move the changed region back, so long as the
  • previous unchanged line matches the last changed one.
  • This merges with previous changed regions. */

while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) {

$changed[--$start] = 1; $changed[--$i] = false; while ($start > 0 && $changed[$start - 1])

$start--;

USE_ASSERTS && assert('$j > 0'); while ($other_changed[--$j])

continue;

USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');

}

/*

  • Set CORRESPONDING to the end of the changed run, at the last
  • point where it corresponds to a changed run in the other file.
  • CORRESPONDING == LEN means no such point has been found. */

$corresponding = $j < $other_len ? $i : $len;

/*

  • Move the changed region forward, so long as the
  • first changed line matches the following unchanged one.
  • This merges with following changed regions.
  • Do this second, so that if there are no merges,
  • the changed region is moved forward as far as possible. */

while ($i < $len && $lines[$start] == $lines[$i]) {

$changed[$start++] = false; $changed[$i++] = 1; while ($i < $len && $changed[$i])

$i++;

USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); $j++; if ($j < $other_len && $other_changed[$j]) {

$corresponding = $i; while ($j < $other_len && $other_changed[$j])

$j++;

}

}

} while ($runlength != $i - $start);

/*

  • If possible, move the fully-merged run of changes
  • back to a corresponding run in the other file. */

while ($corresponding < $i) {

$changed[--$start] = 1; $changed[--$i] = 0; USE_ASSERTS && assert('$j > 0'); while ($other_changed[--$j])

continue;

USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');

}

}

}

}

/**

  • Class representing a 'diff' between two sequences of strings. */

class Diff {

var $edits;

/**

  • Constructor.
  • Computes diff between sequences of strings. *
  • @param $from_lines array An array of strings.
  • (Typically these are lines from a file.)
  • @param $to_lines array An array of strings. */

function Diff($from_lines, $to_lines) {

$eng = new _DiffEngine; $this->edits = $eng->diff($from_lines, $to_lines);

}

}

/**

  • A class to format Diffs *
  • This class formats the diff in classic diff format.
  • It is intended that this class be customized via inheritance,
  • to obtain fancier outputs. */

class DiffFormatter {

/**

  • Format a diff. *
  • @param $diff object A Diff object.
  • @return string The formatted output. */

function format($diff) {

$xi = $yi = 1; $block = false; $context = array();

$this->_start_diff();

foreach ($diff->edits as $edit) {

if ($edit->type == 'copy') {

if (is_array($block)) {

if (sizeof($edit->orig) <= 0) {

$block[] = $edit;

} else{

$this->_block($x0, + $xi - $x0,

$y0, + $yi - $y0, $block);

$block = false;

}

}

} else {

if (! is_array($block)) {

$x0 = $xi; $y0 = $yi; $block = array();

} $block[] = $edit;

}

if ($edit->orig)

$xi += sizeof($edit->orig);

if ($edit->final)

$yi += sizeof($edit->final);

}

if (is_array($block))

$this->_block($x0, $xi - $x0,

$y0, $yi - $y0, $block);

return $this->_end_diff();

}

function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) {

$this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen));

}

function _start_diff() {

ob_start();

}

function _end_diff() {

$val = ob_get_contents(); ob_end_clean(); return $val;

}

function _block_header($xbeg, $xlen, $ybeg, $ylen) {

if ($xlen > 1)

$xbeg .= "," . ($xbeg + $xlen - 1);

if ($ylen > 1)

$ybeg .= "," . ($ybeg + $ylen - 1);

return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;

}

function _start_block($header) {

echo $header."\n";

}

}

?> </div> "


#1092 Ticket, Browser and Forum unspecified closed 1.3 defect normal 09/24/2011

Hey. My asking is your ticket system and allright yours Browse Source. How can i add or coding those on my wikka?

Finally i want to code a forum. How can i do that?


#319 SPAM 3rdparty closed defect trivial 09/04/2006

SPAM


#277 File uploads (1.1.6.2) working but deletion and downloads not... actions closed 1.1.6.2 defect blocker 07/14/2006

I've sucessfully added the {{files}} tag and uploaded files. Now I'd like to be able to download the files or delete them.

When I do I get the following errors: Unknown method "page/files.xml?action=download.php" Unknown method "page/files.xml?action=delete.php"

I'm using a clean install on a test system. I've uploaded large files and small files alike (after editing the max file size in actions/files.php and updating my .htaccess to handle large uploads as well as removing the modifications and attempting small uploads).

find ./ -type f -name download.php

Yields no such file so I'm guessing its either a file thats been changed but not updated in the files.xml.php script or a missing file.

**I'll trying pulling down a older copy and see if adding the file fixes the problem.**

Scratch that. I've browsed your svn repos and haven't found any file that matches.

Perhaps I'll try downgrading for now.

Related tickets

#72


#390 Perfect install but unable to login either as admin or register as a new user unspecified closed 1.1.6.2 defect blocker 12/06/2006

Using Wikka 1.1.6.2, php 5.2.0, MySQL 5.0.27.0 (RedHat 4 i386 rpm's) and I had a flawless looking install (i.e. all messages from the installer indicated everything was perfect).

When I go to the Homepage I see the "Thanks for installing Wikka" page but there are no links for editing the page and clicking on the WikkiAdmin page (this corresponds to the admin ID I chose) tells me I do not have the authority to edit the page. At this point I proceed to login/register.

When I try to login/register as the admin using the correct admin password nothing happens, I'm returned to the same registration page and still have no authority (am not logged in). The same thing happens when I try to register as a new user with a different, valid wikiname.

What could be wrong?

As a side note, I also tried logging into the official Wikka main page as a new user with the same results (I was not being logged in). I could not, for example, edit the WikkaTroubleShooting page as it suggests to report the problem.

My page is viewable at www.compsysbio.org/Wikka


#397 How to turn off commenbt function ? comments closed 1.1.6.2 enhancement critical 12/15/2006

Hello,

by the way, I won't get registration email..

Is there any chance to deactivate the comment function so also spam bots can't find it without page link ?

Regards Frank


#276 Action= URLs not generated correctly. core closed 1.1.6.2 defect major 07/13/2006

The wiki doesn't generate URLs correctly. If I try to log out, the URL generated is:

 http://itcomm.arts.ubc.ca/sparrow/wikka.php?wakka=UserSettings?action=logout

When it should be:

 http://itcomm.arts.ubc.ca/sparrow/wikka.php?wakka=UserSettings**&**action=logout

i.e. the question mark should be replaced with an ampersand.

Possibly related/addressed by this ticket: #78


#399 Text search miss some page actions closed 1.1.6.2 defect major 12/21/2006

When search some short text string some page are missing. It happens on the last release when search for PHP and with PDF on 1.1.6.0 version

For example I have a page wit 4 occurencies of PHP in dfferent place, but the page didn't appear in search result, other 3 page where founded.

Tags: TagCanBeClosed

rels: #455


#663 Trailing / not included in base_url when mod_rewrite detected installer closed 1.1.6.4-rc1 defect major 02/20/2008

Even when mod_rewrite detection is successful during install, the first page of the installer does not correctly append a trailing slash to the base_url. This effectively prevents Wikka from starting up after installation is complete.

Related ticket: #664


#1047 unabl to loginto wiki unspecified closed 1.2 defect major 03/31/2011

I have installed wikkawiki (1.2 ) on a sbs 2008 server running apache 2 and php5.

from firefox(3.6.1.6) and chrome(10.0.648.204) I cannot log in. when I try it stayes on the user page (the only diffrence is that the 'Redirect to homepage after login' text and check box dissappear I can log in sucessfully with internet explorer(8)


#237 handlers/page/edit.php has lost width setting making editing textarea very small handlers closed defect normal 06/19/2006

1.1.6.1 '<textarea id="body" name="body" style="width: 100%; height: 500px">'.htmlspecialchars($body).'</textarea><br />'."\n".

1.1.6.2 '<textarea id="body" name="body">'.htmlspecialchars($body).'</textarea><br />'."\n";

I'd prefer <textarea id="body" name="body" style="width: 100%; height: 400px">

or make it customisable from the  http://www.fsse.info/UserSettings screen

see also ticket http://wush.net/trac/wikka/ticket/43


#286 WikiEdit Function Problem after Upgrade core closed 1.1.6.2 defect normal 07/17/2006

I've updated  http://pclinuxonline.com/wiki

Everything appears well for formatting and appearance. However, you cannot edit any pages at all.

When you edit pages, you only recieve the header to edit...the page content is not displayed.

The installation process was as follows: 1. Backup all files 2. Backup MySQL Database 3. Overwrite all files using ftp 4. Visit setup/install.php and follow wizard 5. Whistle while you work 6. Visit finished upgrade site

Right now, things are flat broke and busted with edits...which pretty much renders the wiki useless since that is what it needs to do...also, I've tested this in opera, firefox, konquerer, and IE 6...it's a cross browser problem.


#289 Help forum unspecified closed 1.1.6.2 enhancement normal 07/19/2006

I've spent the last 4 hours trying to find some simbilance of help on an installation issue I've been having, with no success. The installation documentation is pitifully short, the IRC channel is empty, and worst of all, THERE ARE NO FORUMS. No help desk, no nothing. With such a large project that, unless I am mistaken, is designed to be somewhat easy to use and install, I fail to see how it could have gone on this long without a dedicated support community. At the very least a 'help' type ticket could be created.


#1016 Various PHP errors in trunk unspecified closed trunk defect normal 12/06/2010

After extracted trunk, I've found various error : find -name *.php -exec php -l \{\} \;

Parse error: syntax error, unexpected T_STRING in ./lang/en/en.inc.php on line 640
Errors parsing ./lang/en/en.inc.php

Somes translations contains '

Parse error: syntax error, unexpected T_VARIABLE in ./actions/image/image.php on line 51
Errors parsing ./actions/image/image.php

Missing if ?

Parse error: syntax error, unexpected T_STRING in ./handlers/recentchanges.xml.mm/recentchanges.xml.mm.php on line 60
Errors parsing ./handlers/recentchanges.xml.mm/recentchanges.xml.mm.php

missing string concat operator

Parse error: syntax error, unexpected '*' in ./handlers/edit/edit.php on line 212
Errors parsing ./handlers/edit/edit.php

- A ' is missing (and was replaced by a *) - PHP complains about 'Fatal error: Can't use method return value in write context in' at line 270

I'm using PHP 5.3.3-4 from Debian Squeeze. In subversion, you can use post-commit hook to check PHP syntax, I've found it very usefull.


#53 JS Error with wikiedit and duplication of text in textarea when using the formating buttons 3rdparty closed 1.1.6.0 defect blocker 12/10/2005

Since the move of the wikka installation on a new server I cannot use the formatting buttons any more. IE 6.0 makes a JS-Error. "Line 522 the object does not support the property or method" (Free Translation from German). It comes when i marked something and press a formatting button . The page code gets completly duplicated. With Firefox it works fine. I did also a fresh installation an have the same symptom. (See  http://designtechniker.de/wikka_new/?wakka=HomePage/edit)

Another fresh installation on annother server did not show the Problem. my phpinfo is here:  http://info.designtechniker.de/info_server.php


#151 Security risk of ActionParsQuoting actions closed defect major 03/23/2006

See  http://wikkawiki.org/ActionParsQuoting By allowing a single quote to be used to delimit action parameters, we create a security hole because most of action-scripts are expecting that no double-quote can be present in parameters. For example, on actions/color.php, the code color c='white"></span><script.../><span style="display:none', passed thru echo "<span style=\"color: $colorcode\">".$mytext."</span>"; will lead to code <span style="color: '''white"></span><script.../><span style="display:none'''"></span>

All action-scripts should be secured before ActionParsQuoting integrated into new version, so I don't put milestone or version here as I don't exactly know when this beta feature is planned to be patched.

Tags: TagCanBeClosed


#318 Extremelly small editing form in WikiEdit 3rdparty closed 1.1.6.2 defect major 09/01/2006

When creating a new page I get an extremely small editing form in WikiEdit. It happens in both my browsers Safari and Firefox. It happened rigth after new installation of 1.1.6.2. Now problems with (earlier versions (1.1.6.0). The width of the editing comment form is OK...


#378 [nul] appended if link texts end with special character core closed defect minor 11/26/2006

If link texts end in special letters like äöüß and probably áéíóú etc. Wikka appends a [nul] character.

With a normal Wikka out of the box like the demo installation it looks like this with Opera:

 http://gio.larp-bb.de/res/MasinAlDujaili/strange_link.png

IE and FF ignore this [nul].

The source code view in Opera:  http://gio.larp-bb.de/res/MasinAlDujaili/sourcecode_view_opera.png

Opera cannot display the source code beyond this position of the [nul].

In my editor, the character is displayed clearly as [nul]:  http://gio.larp-bb.de/res/MasinAlDujaili/sourcecode_view_notepadplusplus.png

Then the saved HTML code delivered by Wikka:  http://gio.larp-bb.de/res/MasinAlDujaili/SandBox.htm

And at last, a check if it's not just Opera and links ending with such characters:  http://gio.larp-bb.de/res/MasinAlDujaili/strange_and_normal_link.png


#461 Writing $_GET somwhere in a page will result in an error. unspecified closed 1.1.6.2 defect minor 03/23/2007

Writing the word $_GET somewhere in when editing a page, will result in an error when saving:

Forbidden
You don't have permission to access /wikka.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

If the underscore or the word $_GET is removed, it works fine.


#581 [trunk] Update for Geshi to 1.0.7.20 3rdparty closed task minor 11/07/2007

To keep in sync with 1.1.6.4. Geshi homepage:  http://qbnz.com/highlighter/


#15 WikiName "alias"es - sort of actions closed 1.1.6.0 enhancement normal 11/18/2005

not sure this feature doesn't already exist, but is there a way for 2 or mor WikiNames to refer to the same, "physical" content? for example, if i have a CategoryDefinitions category set up with WikiPages for CamelCase and WikiName ... they really are pretty much the same content. it would make maintaining that information simpler if both WikiNames "pointed" to the same content.

like in man pages, when you ask for the mailq man pages, it "redirects" to the sendmail man pages.

or (not sure how one would accomplish this with a BLOB) something that functions like a symlink?

is there a way to "redirect" within the wiki - uh - command structure?


#51 page body does not escape & characters formatters closed 1.1.6.0 defect normal 12/08/2005

if the entered text for the body page contains e.g. an "&" sign, it is not escaped when showing the actual page. it should be &amp; and so it breaks the page validation.

< > are ok... so i guess only & is ignored.


#54 Database password should be hashed or encrypted unspecified closed 1.1.6.0 defect normal 12/10/2005

On sourceforge, the database password is readable by anyone, because it has to be in order to be read by the web server process. The password should be hashed or encrypted in some way.


#57 namespaces core closed 1.1.6.0 enhancement normal 12/15/2005

Support to add namespaces to Wikka in exactly the same approach that Wacko uses for their concept of "Clusters"

see:  http://wackowiki.com/WackoDocumentation/WackoClusters?v=txp


#70 separate WikiWord formatting from HTML formatting core closed enhancement normal 01/02/2006

Note the differences when you type

WikiWord

"" <p>WikiWord</p> ""

Doublequotes is being used for both escaping formatting and HTML formatting.

It would be nice if Wikka could parse raw content between html tags and render valid WikiWord links when given html content. This would be helpful in customizing the WYSIWYG editor and well as allow importing and integrating outside content into Wikka.

See also:

#44

#13

Looks like invalid for me! Double-double quote is used to "unwikify" some words like McDonald and to present htmlcode as-is.


#113 On content edit, Help link to FormattingRules doesn't work unspecified closed 1.1.6.1 defect normal 01/17/2006

When editing a page's content, if I click on the "Help" link for "Help on Wikka formatting" it took me to  http://<my-domain>/FormattingRules which does not exist.

My fix is to change a line in this file: 3rdparty/plugins/wikiedit/wikiedit2.js

Where the word "FormattingRules" is, I prefix it with "wikka.php?wakka=" and that fixes the problem.

Cheers Dean.


#115 Order of comments on a page comments closed 1.1.6.1 enhancement normal 01/19/2006

It could be a good idea to let the user choose the order of comments, i.e. if he wants to see the last comments first, or the way it is now.


#117 Faster Page-index actions closed 1.1.6.1 defect normal 01/19/2006

By default PageIndex uses $this->""LoadAllPages""() which reads your **whole site** into one array.

If you would use a new function like $this->""LoadAllPagesInfo""() you will get the same info but without the 'body' content. This should speed up PageIndex a bit on larger sites...

1) Find in ##wikka.php## (Around 33%)

function LoadAllPages() { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' order by tag"); } 

And replace it with:

function LoadAllPages() { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' order by tag"); }

		function LoadAllPagesInfo() { return $this->LoadAll("select id,tag,time,owner,user,latest,note from ".$this->config["table_prefix"]."pages where latest = 'Y' order by tag"); } 

1) Find in ##actions/pageindex.php## (top)

if ($pages = $this->LoadAllPages())

And replace it with:

if ($pages = $this->LoadAllPagesInfo())

1) Same trick as in (2) can be done in ##actions/mypages.php##...

-- OnegWR

See the first item on  http://wikka.jnsx.com/WikkaOptimization, too --NilsLindenberg


#124 external URLs with ?=&~ aren't recognised handlers closed 1.1.6.0 defect normal 01/25/2006

Links to external pages which have ?, =, & or ~ in the URL aren't recognised, while these are valid URL characters. I suggest changing line 635 of wikka.php to

elseif (preg_match("/(http|https|ftp):\/\/[\\w\\d-.&=?~\/]+?$/", $tag))

Lars


#126 Download Problem installer closed 1.1.6.1 defect normal 01/30/2006

So I've got Alphazip running in the background, trying for like the fifth time to unpack the latest greatest Wikka Wikki download. Its telling me that "Temporary file seems to have been modified. (You may choose to save or discard the changes by pressing continue.)" O.K., so I press continue (since it won't do anything at all when I just wait. Believe me, I tried. I also tried deleating and redownloading, as well as restarting the refrigerator, none of which solved the problem) and I'm right back at the controll panel view of the zipped .tar file.

Anything you can do...


#128 Temporary password fails to allow login actions closed defect normal 02/03/2006

After requesting a temporary password from the PasswordForgotten page on our site, the user receives an e-mail with the MD5 hash of the user's password. When pasted into the login page, login fails with a "Wrong password!" message.

I've confirmed the MD5 hash sent to the user is identical to the one stored in the wikka_users table.


#135 bug in newpage.php action actions closed 1.1.6.1 defect normal 02/26/2006

line 21 should read if (!$this->IsWikiName($pagename) )

instead of if (!$wakka->IsWikiName($pagename) )

else it gives OBJECT EXPECTED ERROR


#138 tesearchexpanded does not format results. actions closed 1.1.6.1 enhancement normal 03/06/2006

I have a textsearchexpanded on the homepage. When I do a search, the results that are shown with 'snippets' of the page are not formatted. For example, instead of showing the wiki link, it shows [[WikiLink Description]] in the results.

Some formatting should be processed so that the 'snippets' are shown correctly. Avoid the header processing or convert headers to bold text in the 'snippet' view.

Related ticket: #86


#183 Special characters in the "note on your edit"-field are not escaped unspecified closed 1.1.6.1 defect normal 05/24/2006

Special characters like "&" entered in the "note on your edit"-field are not transformed to e.g. "&amp;". According to XML-specifications,

& (&amp;), < (&lt;), > (&gt;), ' (&apos;) and " (&quot;)

must not be entered directly.

If they appear in a RSS-feed, the feed is broken and the special character has to be replaced manually in the (MySql-)Database.


#186 End of page gets cut off on edit 3rdparty closed defect normal 05/25/2006

Not sure why or exactly what's happening but three times in the last week a page has lost a bunch of the end data on an edit. First I thought maybe I did something wrong but on the third time. We're using a page to edit collaborative information where we have the output from a game battle report at the bottom of the page and then keep track of what we're doing with the data up at the top of the page. An edit at the top will drop the stuff at the bottom.

Further testing shows it loses it when it loads up the edit page not when it's sending. I can refresh the page and sometimes if I scroll to the bottom the rest of the article is missing. Hitting cancel on the edit and re-editing it shows up the full article.


#217 ACL enhancements for 1.1.6.2 administration closed 1.1.6.2 enhancement normal 06/07/2006

Consider implementing tickets #139 (Modify ACL to allow child pages to use parent's ACL) and #189 (Optionally clone ACLs during page cloning).

I've already submitted the code hacks necessary to implement, and would even be willing to assist with integrating these changes into the code base.


#229 change in recentlycommented action file actions closed 1.1.6.2 defect normal 06/15/2006

Code was changed, resulting display includes two copies of somment (snippet) .. one appended to the "commented by" line, the next wrapped up in a 'blockquote' command ... my suggested 'fix' .... %%(php) .../actions/recentlycommented.php

// print entry

// echo '&nbsp;&nbsp;&nbsp;'.$commentlink.COMMENT_AUTHOR_DIVIDER.$comment_by.$comment_preview.'<blockquote>'.$comment_preview.'</blockquote>'."\n";

echo '&nbsp;&nbsp;&nbsp;'.$commentlink.COMMENT_AUTHOR_DIVIDER.$comment_by.'<br />'.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.'<em>'.$comment_preview.'</em>'.'<br />'."\n";

}

%%


#233 A category name that is a substring of another cat. name gets that pages, too actions closed 1.1.6.2 defect normal 06/18/2006

Yes, I know the category system needs to be revamped, but I figured I'd report this anyway. If you have a category name that is a substring of another category name, pages referencing the second category will also appear in the first. In other words...I have a category named '""CategoryBookOne"", and another named ""CategoryBookOneJournal"". Pages that reference ""CategoryBookOneJournal"" also show up in the list of pages for ""CategoryBookOne"", which is not the behavior I expected or wanted. -- TammyCravit

  • I cannot reproduce this on this server, nor on my own development system - at least not with the WikkaBetaFeatures (beta and alpha) versions of the category action. Possibly dependent on the version of PHP used where older versions may use a slightly different database query to find pages referring to a category. Tammy, if you're reading this: which version of PHP are you using? (We should test with the 'lower-PHP version of the query!) --JavaWoman

#242 WYSIWYG layout closed 1.1.6.2 enhancement normal 06/22/2006

WYSIWYG editor like MCE ( http://tinymce.moxiecode.com/)


#243 WYSIWYG layout closed 1.1.6.2 enhancement normal 06/22/2006

WYSIWYG editor like MCE ( http://tinymce.moxiecode.com/)


#248 WikiEdit text area is tiny in Camino 1.0 unspecified closed 1.1.6.2 defect normal 06/25/2006

I would like to be able to attach a screenshot to show you just how hilariously small it is! It only lets me see about 20 columns and 2 lines. Luckily, Camino is not the only browser, just my favorite.

Solution


#253 Distribution over columns in AdvancedColumnAction still not working quite right actions closed 1.1.6.2 defect normal 06/28/2006

 AdvancedColumnAction still doesn't correctly distribute items over three columns when the remainder is one, or the remainder is two over four columns, etc. For example, I have a list of 64 counties to be listed in three columns; instead of distributing 22-21-21 as expected, it displays 22-22-20. (The same problem was happening a while back on  PageAndCategoryDivisionInACategory, but that got fixed. Not sure what the fix was.)


#260 Install on USB tutorial needed 3rdparty closed enhancement normal 06/30/2006

As a total newbie (no php, mysql experience) I want to install on a USB stick using Universal Server as suggested in the Install docs. But the article and comments are not enough for me. I can't find any step by step directions to do this and I can't find a forum where I can ask for help.


#285 parsing of URL inside code blocks formatters closed 1.1.6.2 defect normal 07/16/2006

##foo(" http://some/url")## parses  http://some/url")## as the URL, so that the rest of the page after that is still rendered as a code block.


#291 Logout link do a logout 3rdparty closed defect normal 07/22/2006

Could the logout link do a logout?

The 2-step process is inconvenient.


#293 https 3rdparty closed 1.1.6.2 enhancement normal 07/22/2006

I'd like to see a configuration parameter to force the use of https.

This would be particularly useful for an 'intranet wiki' accessed over the internet. E.g., an 'internal wiki' for a nonprofit's volunteers hosted on a shared server.


#297 Missing include files unspecified closed 1.1.6.2 defect normal 07/25/2006

I get the following errors on a single page after installation. Any help would be greatly appreciated.

Thanks, Jay

Warning: includebuffered(actions/header.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'actions/header.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered(handlers/page/show.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'handlers/page/show.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered(actions/footer.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'actions/footer.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Page was generated in 0.0206 seconds


#298 Need system for banning users unspecified closed 1.1.6.2 enhancement normal 07/25/2006

There really needs to be a way to easily ban an existing user, or at least the write access of someone. I have a member of my wiki who has been disruptive to our collaborative group, and I am now finding that I may need to remove him as a registered user. I don't wish to remove his content, nor restrict his read access, but I really do need to keep him from being able to modify or create any more pages.


#299 Install Error - php include installer closed 1.1.6.2 defect normal 07/26/2006

I get the following errors after installing on a single page:

Warning: includebuffered(actions/header.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'actions/header.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered(handlers/page/show.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'handlers/page/show.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered(actions/footer.php) [function.includebuffered]: failed to open stream: No such file or directory in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Warning: includebuffered() [function.include]: Failed opening 'actions/footer.php' for inclusion (include_path='/usr/share/php') in /srv/www/htdocs/Wikka/libs/Wakka.class.php on line 116

Page was generated in 0.0677 seconds


#308 backlinks in page header actions closed 1.1.6.2 enhancement normal 08/19/2006

I browse into my Wikka site, but there is no way, on every page, to return to the linking page without manually adding the backlinks action to each page I create. Can we add the backlinks action to the header that is output above each page?


#321 Any search returns to HomePage unspecified closed 1.1.6.2 defect normal 09/09/2006

Any search takes me back to my home page instead of a list of matching pages

  • Wikka version: 1.1.6.2
    • PHP version: 4.3.4
    • MySQL version: 4.0.18-Max
    • GeSHi version: 1.0.7.10
    • Server:

o Host: bilbo o Operative System: Linux 2.6.4-52-default #1 Wed Apr 7 02:08:30 UTC 2004 o Machine: i686


#335 RSS feed for comments on a per-page-basis (handler) handlers closed 1.1.6.2 enhancement normal 09/25/2006

I guess it would be a nice feature to have an rss feed for comments on a certain page just like for the revisions of each page. This way you can easily keep track of comments if you're only interested in certain pages and don't want to use the global RecentComments feature.


#342 spaces should not be converted to tabs within code blocks unspecified closed 1.1.6.2 defect normal 10/04/2006

When preceding a line with 4 or more spaces within a code block, those spaces should be left as spaces and not converted to a tab. Converting to a tab makes it had to have correctly preformatted text.


#346 WantedPages shows only 1 entry with sum of links of all wanted pages database closed 1.1.6.0 defect normal 10/08/2006

In one of our Wikkas there occured a change in the behavior of this action: the wanted pages aren't listed anymore. There's only one page name listed and for the number of links Wikka outputs the sum of all missing links. See here:  http://www.kindred.de/wiki/wikka.php?wakka=WantedPages

There should be about 200 wanted pages listed. We know that it has worked as expected some time ago ...

Perhaps the problem has something to do with #309?


#347 Captcha for Spam Prevention unspecified closed 1.1.6.2 enhancement normal 10/11/2006

Hi!

I had in my Wiki massivley Spam with Viagra and so on... A good idea to stop this is a captcha skript for the forms in Registration and for the Edit pages. So bots cannot use this forms. At the moment i allow only registered users to post but thats not the best solution.

Regards Christian


#349 New Feature formatters closed 1.1.6.2 enhancement normal 10/12/2006

It can be useful if the comments are processed in the same way as the notes so you can use WikiFormating in them.


#354 Graph visualization for Wikka 3rdparty closed 1.1.6.2 enhancement normal 10/19/2006

Good morning,

I was asked to write a network adapter for 34all, which connects this tool with wikkawiki wikis and visualizes their network structure. Thus I have done. Since I was not sure if I am supposed to promote tools like that on wikkawiki itself, I thought of dropping you a node. I personally (of course) like graph visualizations I find them helpful. If you like it also, you might call the attention of your users to it.

You find the 34all tool under  http://goosebumps4all.net/34all/ (you have to download the adapter for wikkawikis in addition, you find it in the web section of the network adapter pool (nap))

Cheers and all the best

martin


#385 I obtain different outputs if I use "localhost" or "PC's network IP address" in base_url installer closed 1.1.6.2 defect normal 11/27/2006

Hi,

I've installed wikka 1.1.6.2 with Apache / MySQL, on my PC, and everything works fine when I use localhost in 'base_url' => ' http://localhost/wiki/wikka.php?wakka='. When I change localhost by my PC's IP address to give access to somebody else, I lost some components of the pages: "Edit page"; "Edit ACLs", "Referrers", "Change settings/logout", ...

It's a bug? I'm doing some mistake?

Thanks for your help.

Regards, Venceslau Parreira


#394 long page character soup in FIrefox Mac 2.x core closed 1.1.6.2 defect normal 12/11/2006

I get character soup (looks like binary) loading longish pages in Firefox 2.x Mac from my server (running Apache). Ex: The full-length FormattingRules page is character soup. But when I remove the last 1/3, it reads fine. The same pages read fine in Safari 2.x and IE 5.2.

I see the same problem in Flock .07, Netscape 7.1.

I've re-created the problem with other pages, and on three servers running the same versions of Apache, PHP, and MySQL.

See examples [ here]

- Wikka version: 1.1.6.2 - PHP version: 4.3.6 - MySQL version: 4.0.18 - GeSHi version: 1.0.7.10 - Server: Apache/2.0.49 - Host: biro.bemidjistate.edu - Operative System: Darwin 8.0.0 Darwin Kernel Version 8.0.0: Sat Mar 26 14:15:22 PST 2005; root:xnu-792.obj~1/RELEASE_PPC Machine: Power Macintosh


#413 how do you uninstall wikka?? 3rdparty closed defect normal 02/02/2007

Please provide answer ASAP


#455 search string case sensitivity problem with word "like" handlers closed 1.1.6.2 defect normal 03/14/2007

Procedure:

  1. in Search box, type in 'Like' hit 'Search' button
  2. in Search box, type in 'LIKE' hit 'Search' button
  3. in Search box, type in 'like' hit 'Search' button

Observed:
Only 'like' returns results. 'Like' and 'LIKE' do not.

Expected:
Other search terms that I enter do not have this case sensitivity problem. Is it because 'Like' is a SQL query operator / reserved word perhaps?


#725 Create tag for 1.1.6.4 release unspecified closed 1.1.6.4 task normal 04/01/2008

Unless I'm missing it, there's no SVN tag for the 1.1.6.4 release.


#756 Problem after installation unspecified closed 1.1.6.4 defect normal 05/06/2008

After installing Wikkawiki properly, I have an error 404:

The requested URL /gael.enix.org/zob/wikka.php was not found on this server.

Whereas it is actually there.

The wiki runs on: Linux, Apache, MySQL, PHP4.4


#794 Support for edit caching editor closed trunk enhancement normal 07/10/2008

Note: This code has been converted to a Wikka plugin. More details here:  http://www.wikkacase.org/wiki/EditCache

WordPress and other CMSes offer a feature that permits the user to cache their edits for later retrieval. This enhancement provides similar functionality for WikkaWiki. Specifically, each user has the option of saving their edits (on a per-page basis) for future retrieval in the edit window. To keep things simple, the following design criteria is used:

  • Only one edit cache object per user per page
  • Any existing edit cache is deleted when page is published (i.e., saved as a new page)
  • To differentiate between "saving" an edit for later retrieval and "saving" a page for display, a new term, "publish," has been adopted to indicate a page save that will make the page publicly viewable. "Save" (such as "save and continue", "save and quit") refers to an edit draft that will not be made public until it is published.

Further enhancements might include:

  • Auto-purging of caches after a specified time period
  • An auto-save feature
  • A diff display between an edit cache and the current page contents
  • Support for multiple drafts in association with a single user and a single page

Related tickets

  • #676 page drafts (ACL)

#824 Redundant HomePage links on doc server pages unspecified closed 1.1.7-docs task normal 11/01/2008

The HomePage links at the top of many pages on the docs server is redundant, since there is also a HomePage link in the nav bar.


#971 Constants in en.inc.php are incorrectly escaped localization closed trunk defect normal 05/09/2010

en.inc.php in trunk uses single quotes around constants, but omits backslashes before apostrophes within the constants.

Example:

define('ERROR_NON_EXISTENT_USERNAME', 'Sorry, this user name doesn't exist.');

#1015 gettext test implementation localization closed 1.3 enhancement normal 11/07/2010

Ticket for issues related to gettext test implementation

Related tickets

  • #519 Language Packs (obsolete -- needs to be redone for gettext)

#1033 Login not taking unspecified closed 1.2 defect normal 02/08/2011

I got the software installed, but it was kind of annoying because I installed it on a box that I don't have admin privileges on, so I couldn't do anything with RewriteEngine or SetEnvIfNoCase. So after going through every .htaccess file and removing any code referencing it, I got the stylesheets loaded. So I tried to log in to the admin account, but it just brings me back to the login page.

The php is version 4.3.3 (yeah, i know)  http://cgi.ccs.neu.edu/~pquinn/test.php < for the phpinfo()

The wiki location  http://cgi.ccs.neu.edu/~pquinn/wikka/wikka.php?wakka=HomePage

I'm really rather new to php and other internet stuff, so it could be something stupid, but I really don't know.

Also, I checked for tickets similar to this one. I found one that was having the exact same problem, but none of the steps in it remedied my problem.


#1077 Links containing U+007C VERTICAL LINE ("|") unspecified closed 1.3.1 defect normal 06/23/2011

You get some problems if an URI contains a | character (U+007C VERTICAL LINE).

For example links to a download at rapidshare.com; a (random, not existent) URI might look like:

https://rs123dt.rapidshare.com/#!download|123dt|123456789|filename.tar.gz|98765|R~123456567ABX987654321ABC

I can't find a way to format this link in any way at WikkaWiki:

  • if i post it without any syntax, only this part is clickable: https://rs123dt.rapidshare.com/
  • if I enclose the URI in [[…]], it becomes this URI: https://rs123dt.rapidshare.com/#!download, and the rest of it becomes the visible anchor text
  • if I enclose the URI in [[… Download!]] (a space limiter), it becomes the same URI as above, but with " Download!" added to the anchor text
  • if I enclose the URI in [[…|Download!]] (a | limiter, without any space), it's the same behaviour as above: "|Download!" added to the anchor text

#1090 Error in URInviteCodeModule::URAuthTmplVerify authentication closed 1.3.1 defect normal 09/12/2011

URInviteCodeModule::URAuthTmplVerify uses $this->GetSafeVar although the class does not have this method. Fix: use $this->wakka->GetSafeVar instead.

broken:

            if($this->GetSafeVar('UR_inviteCode', 'post') === $this->inviteCode)

fixed:

            if($this->wakka->GetSafeVar('UR_inviteCode', 'post') === $this->inviteCode)

#109 Code display problem (multi-line comments and empty lines) 3rdparty closed 1.1.6.1 defect trivial 01/10/2006

The following combination of conditions triggers the problem:

-multi-line comment (for instance a multi-line /*........*/ block in php)

-empty lines within such a comment

-line numbering turned on

When viewed in Mozilla or Firefox (at least - possibly others), the empty lines **overlap** the preceding lines, as can be seen by the line numbers.

Looking at the generated code, an empty line within a multi-line comment (with line numbers) results in this code:

%%(html4strict)<li><div class="de1"><span class="coMULTI"></span></div></li>%%

while an empty line elsewhere results in %%(html4strict)<li><div class="de1"> </div></li>%%

Note the ##&nbsp;## in the latter case (which gives the div actual content) while the empty multi-comment line has nothing but an **empty** span, and no actual content.

This seems to be a combination of a **GeSHi** bug (there should at least a ##&nbsp;## be generated as content) combined with a **gecko** oddity (or bug?) that will render a number for an ordered list item but not give it a normal line height if the list item is empty.

**Workaround:** add some whitespace to the empty lines - a single tab works (a space probably will as well).

--JavaWoman


#140 ACL alteration problem when using MySQL 5 handlers closed 1.1.6.1 defect major 03/10/2006

Host system details:

Windows 2003 Server, IIS5,

MySQL 5 (msi), PHP 5 (msi)

Brand new Wikka installation, problem occurs when editing the ACLs of any page. Initial ACL interface appears, but upon submittal of the form to Store ACLs, an SQL error is returned:

Query failed: INSERT INTO wikka_acls SET page_tag = 'HomePage', read_acl = '*' (Field 'write_acl' doesn't have a default value)

Workaround:

Set allow NULLs to yes on the read_acl, write_acl, comment_acl columns.

Further wikka operations seem unnafected. Perhaps a bit of code chould go into the SaveACLs method of wikka.php?


#181 NewPages action to show up only new pages of the last x days actions closed 1.1.6.1 task minor 05/23/2006

I would like to see a feature (maybe an action?) to show up only new pages somewhere in a place on a page. Users should then see a list of only new pages which were created within a time of, lets say, the last 7 days, for example. (The amount of time should be configurable by a parameter or just within the php-code.) As an addition it should be possible to add the username and the creation date next to the pagename.

It would be very similar to the RecentChanges action; so I guess it wouldn't be too hard to come up with a code like that. Unfortunately I'm not a developer and don't understand a lot of php, so ...


#223 Installation ooops installer closed 1.1.6.2 defect minor 06/12/2006

Alpha installed clean .. no problem. Beta installed over the top of the Alpha .. no problem. Backed up the 1.1.6.1 database ... made a 'new' wikka2 database from that data. Installed the 1.1.6.2 files into a wikka2 folder. Had not modified apache.cnf to allow the mod_rewrite action for this wikka2 folder, so decided to 'run' the install and 'build' a new wikka_config.php file. (touch'd and chmod it to 777 for the install routine) OK, the install routine complained about the Tables already existing .. no problem (though there'd be the question in a future install as to whether the database configuration had changed) However, the "adding defailt pages" action 'worked' just fine. Results were that the 'default' pages ended up being duplicated .. specifically, two database entries with the same 'tag' .. 'latest=Y' .. etc. Body content for most of them hasn't changed, but the FormattingRules page definitely has ....

Technically, this wouldn't be called a 'new' install and isn't the same path as suggested for an 'upgrade' .... so can't really call this a bug .... more of an "unexpected results" thing .. but ... added here in case it's something worth looking into.


#655 Query broken in countowned action actions closed 1.1.7-docs defect minor 02/17/2008

Args in WHERE clause are missing quotes, causing the query to fail.


#163 Enhanced RecentComments Action actions closed 1.1.6.1 enhancement normal 04/26/2006

The wiki run on the server has an improved  RecentComments action.


#425 .htaccess turning RewriteEngine off in /docs/ core closed 1.1.6.2 enhancement trivial 02/15/2007

The natural location for static docs is /docs/, where RewriteEngine should be off.


#153 Install Problem installer closed defect minor 03/25/2006

I'm having a rough time getting WikkaWikki off the ground. I've installed the files per the installation instructions at  http://www.turnintostone.org/Wikka_hm/Wikka/. However, when I point my browser to the directory, nothing happens (I was expecting the installer). Anything you can do...


#155 AJAX 'Sticky' notes for inline Wiki page annotations. comments closed 1.1.6.1 enhancement minor 03/30/2006

I've found myself many times wanting to put some sort of comment in a Wiki page regarding something that I wanted somebody else to catch and review. Currently, I've been entering this notes inline with the body of the page {This is how I try to annotate something line} which isn't all that sexy.

It seems that there is currently no elegant way to enter annotations inline with Wiki content. Perhaps that could all change by something as simple as:

<comment>This is a note about something in this page. A small icon will appear here and when a person mouses over it, they will be able to "popup" the sticky note with the comment</comment>

As this "note" says, a small icon could appear or an entire sticky note could appear over where I entered the tag.


#130 Can't show freemind mindmaps with Wikka 1.1.6.1 3rdparty closed 1.1.6.1 defect trivial 02/19/2006

I recently installed Wikka and everything seemed to work fine, except viewing Freemind mindmaps (neither embedded nor using a link). Using Firefox 1.0.7 there's no problem viewing the examples on wikkawiki.org. I could view your example  http://wikkawiki.org/RecentChanges/recentchanges.xml.mm on your homepage ( http://wikkawiki.org/MindMapRecentChanges), but when I paste it in a page on my installation of Wikka, the status bar (in Firefox) shows the following text: "Applet freemind.main.FreeMindApplet notinited" I tried pasting other Freemind code too (embedded mindmap) both from Freemind 0.7.1-r1 and 0.8.0, with the same result.

I'm using Gentoo Linux, with kernel linux-2.6.14-gentoo-r5 and the following java packages installed: dev-java/blackdown-jdk-1.4.2.03 (1.4.2) dev-java/blackdown-jre-1.4.2.03 (1.4.2) dev-java/java-config-1.2.11-r1 dev-java/javacup-0.10k dev-java/libreadline-java-0.8.0-r1 dev-java/xjavac-20041208-r1


#179 Limit display of comments by user rights actions closed 1.1.6.1 enhancement trivial 05/22/2006

One suggestion for a modification of the recentlycommented action to limit the display of comments to those pages the user has access to.

I guess it will look something like this:

<?php

if ($comments = $this->LoadRecentlyCommented())
{
	$curday = "";
	foreach ($comments as $comment)
	{
	  if (this->HasAccess("comment",$comment["page_tag"])
		{
			// day header
			list($day, $time) = explode(" ", $comment["time"]);
			if ($day != $curday)
			{
			  $dateformatted = date("D, d M Y", strtotime($day));

				if ($curday) print("<br />\n");
				print("<strong>$dateformatted:</strong><br />\n");
				$curday = $day;
			}

			$timeformatted = date("H:i T", strtotime($comment["time"]));

			$max_preview_length = 122;
			$comment_preview = str_replace("<br />", "", $comment["comment"]);
			if (strlen($comment_preview) > $max_preview_length) {
				$comment_spillover_link = "<a href=\"".$this->href("", $comment["page_tag"], "show_comments=1")."#comment_".$comment["id"]."\" title=\"View comment\">[.... ]</a>";		
				$comment_preview = substr($comment_preview, 0, $max_preview_length).$comment_spillover_link;
			}
			$commentlink = "<a href=\"".$this->href("", $comment["page_tag"], "show_comments=1")."#comment_".$comment["id"]."\" title=\"View comment\">".$comment["page_tag"]."</a>";		
		
			$comment_by = $comment["user"];	
			if (!$this->LoadUser($comment_by)) $comment_by .= " (unregistered user)";

			// print entry
			print("&nbsp;&nbsp;&nbsp; $commentlink, comment by $comment_by: <br />\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>$comment_preview</em><br />\n");
		}
	}
}
else
{
	print("<em>There are no recently commented pages.</em>");
}

?>

just two more lines ... I don't know which right should apply, comment or read, as I cannot test in the moment which is more important.


#648 Delete old '1.1.6.1-intl' branch unspecified closed task trivial 02/10/2008

Since the 1.1.6.1-intl branch is based on 1.1.6.1 it isn't usefull anymore as a testing branch. If we need a branch fr testing i18n nad l10n, we can create a new one based on 1.1.6.4 / trunk.


1.1.6.1 Release (4 matches)

Ticket Summary Component Status Version Type Severity Created
Description
#9 Bug in Textsearch (expanded) actions closed 1.1.6.0 defect major 11/14/2005

As DotMG has pointed out, the input for this two actions isn't validated, making it a security-hole. You can fix it by changing the line

$phrase = stripslashes($phrase);

into

$phrase = preg_quote($this->htmlspecialchars_ent(stripslashes($phrase)), "/");

You have to change both files (textsearch and textsearchexpanded).

ref


#14 Default write privileges core closed 1.1.6.0 defect major 11/14/2005

Default write privileges should be changed so that only registered users have write-access after a fresh install.

     "default_write_acl"                => "*", 

in source:trunk/wikka.php should be replaced by:

     "default_write_acl"                => "+", 

#16 TextSearchExpanded warning (preg_replace(): Compilation failed) actions closed 1.1.6.0 defect normal 11/20/2005

As reported by NilsLindenberg: I tried an expanded Text-Search for +parameter +link and got the following error:

"Warning: Compilation failed: nothing to repeat at offset 1 in /.../actions/textsearchexpanded.php on line 33"


Proposed solution: Add this line...

	$phrase = preg_quote($phrase, "/");

#17 TextSearchExpanded code cleanup actions closed 1.1.6.0 defect normal 11/20/2005

Using code submitted by IanAndolina on the bottom of page  http://wikka.jsnx.com/DotMGTextSearchExpanded, the code for the textsearchexpanded action has been greatly reduced.

New code:

	$matchText = "&hellip;".$highlightMatch."&hellip;";
	$output .= "\n<p>".($i+1)." ".$this->Link($page["tag"])." &mdash; ".$page[time]."</p>";
	$output .= "\n<blockquote>".$matchText."</blockquote>\n";

1.1.6.2 Release (6 matches)

Ticket Summary Component Status Version Type Severity Created
Description
#36 Security issue with the Method() method core closed 1.1.6.0 defect major 11/24/2005

Bug reported on the Wikka website by PhilippAHartmann and MunehiroYamakawa.

There's a bug in the Method()-method in wikka.php. The calls to strstr() and strrpos() have a wrong order of arguments. I think, it can be a security issue, since we have access to arbitrary .php-files on the server. Even user-uploaded ones...

Patch suggested at:  http://wikka.jsnx.com/WikkaBugs#hn_Problem_with_handlers


#12 Special char encoding formatters closed 1.1.6.0 defect major 11/14/2005

Special char encoding for page revisions (handler), RecentChanges, Wikiping and RSS-feeds. < and > (+ other [for xml] special chars) appearing in the note-field cause problems: wrong display on web pages, invalid XML in feeds and ping data.

This applies to all special characters, not just those used for tags: & as well. htmlspecialchars() should do it. --JW

* See also the comments on  MindMapRecentchanges where the same problem is reported

Status Tested and installed as BETA

Code changes in wikka.php (GetPingParams()), actions/recentchanges.php, handlers/page/recentchanges.xml.php, handlers/page/recentchanges.xml.mm.php, handlers/page/revisions.php and handlers/page/revisions.xml.php. (Unfortunately the WikiPing feed already has an incorrect item so the feed will stay invalid untill this item "scrolls off". Solved by now.) --JavaWoman

See also

Ref


#32 Page titles from headings with links core closed 1.1.6.0 defect major 11/22/2005

Headings with embedded links should be correctly handled to derive a document title ("smart title").

Status

coded

Refs

See source of wikka.php on the wikka website.


#65 Refactor default pages in the WIkka installer installer closed 1.1.6.1 defect major 12/25/2005

The milestone:1.1.6.1 release has an annoying inconsistency: since we changed the default write-ACL settings to + to prevent spam (see #14), the welcome text in the homepage does not provide any more accurate information on how to get started.

It should at least suggest that the user must log in in order to be able to edit pages. I think a general overhaul of the content of default pages (to use in a consistent way headings and style conventions) is badly needed.


#142 Javascript not stripped from forced links core closed 1.1.6.1 defect major 03/17/2006

On the sandbox, try the following:

[["id="q" Hello]] [["onmouseover="eval(String.fromCharCode(100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,34,113,34,41,46,105,110,110,101,114,72,84,77,76,61,34,60,70,79,78,84,32,83,84,89,76,69,61,92,34,102,111,110,116,58,110,111,114,109,97,108,32,110,111,114,109,97,108,32,98,111,108,100,32,49,50,56,112,120,32,65,114,105,97,108,59,116,101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,98,108,105,110,107,59,92,34,62,33,33,68,65,78,71,69,82,33,33,60,47,70,79,78,84,62,34,59,100,111,99,117,109,101,110,116,46,98,111,100,121,46,97,112,112,101,110,100,67,104,105,108,100,40,100,111,99,117,109,101,110,116,46,99,114,101,97,116,101,69,108,101,109,101,110,116,40,34,68,73,86,34,41,41,59,100,111,99,117,109,101,110,116,46,98,111,100,121,46,108,97,115,116,67,104,105,108,100,46,105,110,110,101,114,72,84,77,76,61,34,60,70,79,78,84,32,83,84,89,76,69,61,92,34,102,111,110,116,58,110,111,114,109,97,108,32,110,111,114,109,97,108,32,98,111,108,100,32,49,50,56,112,120,32,65,114,105,97,108,59,116,101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,98,108,105,110,107,59,92,34,62,72,79,79,87,69,69,33,33,60,47,70,79,78,84,62,34))" Interesting]] [["onmouseover="eval(String.fromCharCode(119,105,110,100,111,119,46,115,104,97,107,101,61,110,101,119,32,102,117,110,99,116,105,111,110,40,41,123,119,105,110,100,111,119,46,109,111,118,101,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,119,105,110,100,111,119,46,114,101,115,105,122,101,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,119,105,110,100,111,119,46,115,99,114,111,108,108,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,115,101,116,84,105,109,101,111,117,116,40,34,119,105,110,100,111,119,46,115,104,97,107,101,34,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,49,48,48,41,41,59,125,59,119,105,110,100,111,119,46,115,104,97,107,101,59))" Shake]]

The two below work together to do something annoying [["id="w"title="eval(String.fromCharCode(119,105,110,100,111,119,46,109,111,118,101,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,119,105,110,100,111,119,46,114,101,115,105,122,101,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,119,105,110,100,111,119,46,115,99,114,111,108,108,66,121,40,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,53,48,45,50,53,41,41,59,115,101,116,84,105,109,101,111,117,116,40,34,101,118,97,108,40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,92,34,119,92,34,41,46,116,105,116,108,101,41,34,44,77,97,116,104,46,114,111,117,110,100,40,77,97,116,104,46,114,97,110,100,111,109,40,41,42,49,48,48,41,41,59))" Hello]] [["onmouseover="eval(String.fromCharCode(101,118,97,108,40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,34,119,34,41,46,116,105,116,108,101,41))" Testing]]

I believe htmlentities() can fix this, as sakaru [at] gmail [dot] com said on the sandbox.

Dependencies

#148


#206 Redirect() doesn't support URL parameters core closed 1.1.6.2 defect major 06/03/2006

The last version of usersettings wrongly assumes that the Redirect() method accepts URL parameters, thus generating errors in fresh installs running with rewrite_mode set to 1, like escaped &'s; e.g.:

http://trunk/wikka.php?wakka=UserSettings&amp;out=true

This issue needs to be fixed before the official release of 1.1.6.2


1 2 3 4 5 6 7
Note: See TracReports for help on using and creating reports.