|
From: <var...@us...> - 2008-08-22 14:14:27
|
Revision: 6190
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6190&view=rev
Author: vargenau
Date: 2008-08-22 14:14:37 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
CreateToc takes into account Wikicreole headers
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-08-22 13:18:48 UTC (rev 6189)
+++ trunk/lib/plugin/CreateToc.php 2008-08-22 14:14:37 UTC (rev 6190)
@@ -25,8 +25,7 @@
* CreateToc: Create a Table of Contents and automatically link to headers
*
* Usage:
- * <?plugin CreateToc headers=!!!,!! with_toclink||=1
- * jshide||=1 ?>
+ * <?plugin CreateToc arguments ?>
* @author: Reini Urban, Marc-Etienne Vargenau
*
* Known problems:
@@ -58,8 +57,8 @@
function getDefaultArguments() {
return array( 'pagename' => '[pagename]', // TOC of another page here?
- // or headers=1,2,3 is also possible.
- 'headers' => "!!!,!!,!", // "!!!"=>h1, "!!"=>h2, "!"=>h3
+ 'headers' => "1,2,3,4,5", // "!!!"=>h2, "!!"=>h3, "!"=>h4
+ // "1"=>h2, "2"=>h3, "3"=>h4, "4"=>h5, "5"=>h6
'noheader' => 0, // omit "Table of Contents" header
'notoc' => 0, // do not display TOC, only number headers
'position' => 'right', // or left
@@ -74,15 +73,14 @@
}
// Initialisation of toc counter
function _initTocCounter() {
- $counter = array(1=>0, 2=>0, 3=>0);
+ $counter = array(1=>0, 2=>0, 3=>0, 4=>0, 5=>0);
return $counter;
}
// Update toc counter with a new title
function _tocCounter(&$counter, $level) {
$counter[$level]++;
- $level--;
- for($i = $level; $i > 0; $i--) {
+ for($i = $level+1; $i <= 5; $i++) {
$counter[$i] = 0;
}
}
@@ -114,13 +112,13 @@
// Get string corresponding to the current title
function _getCounter(&$counter, $level, $firstlevelstyle) {
if ($firstlevelstyle == 'roman') {
- $str= $this->_roman_counter($counter[3]);
+ $str= $this->_roman_counter($counter[1]);
} else if ($firstlevelstyle == 'letter') {
- $str= $this->_letter_counter($counter[3]);
+ $str= $this->_letter_counter($counter[1]);
} else {
- $str=$counter[3];
+ $str=$counter[1];
}
- for($i = 2; $i > 0; $i--) {
+ for($i = 2; $i <= 5; $i++) {
if($counter[$i] != 0)
$str .= '.'.$counter[$i];
}
@@ -132,15 +130,24 @@
array('\/','\.','\?','\*'), $heading);
}
- // Get HTML header corresponding to current level (level is set of !)
+ // Get HTML header corresponding to current level (level is set of ! or =)
function _getHeader($level) {
- $count = substr_count($level,'!');
- switch ($count) {
- case 1: $h = "h4"; break;
- case 2: $h = "h3"; break;
- case 3: $h = "h2"; break;
- }
- return $h;
+
+ $count = substr_count($level,'!');
+ switch ($count) {
+ case 3: return "h2";
+ case 2: return "h3";
+ case 1: return "h4";
+ }
+ $count = substr_count($level,'=');
+ switch ($count) {
+ case 2: return "h2";
+ case 3: return "h3";
+ case 4: return "h4";
+ case 5: return "h5";
+ case 6: return "h6";
+ }
+ return "";
}
function _quote($heading) {
@@ -242,9 +249,12 @@
$j = 0;
for ($i=0; $i<count($content); $i++) {
foreach ($levels as $level) {
- if ($level < 1 or $level > 3) continue;
- if (preg_match('/^\s*(!{'.$level.','.$level.'})([^!].*)$/',
- $content[$i], $match))
+ if ($level < 1 or $level > 5) continue;
+ $phpwikiclassiclevel = 4 -$level;
+ $wikicreolelevel = $level + 1;
+ if ($phpwikiclassiclevel < 1 or $phpwikiclassiclevel > 3) continue;
+ if ((preg_match('/^\s*(!{'.$phpwikiclassiclevel.','.$phpwikiclassiclevel.'})([^!].*)$/', $content[$i], $match))
+ or (preg_match('/^\s*(={'.$wikicreolelevel.','.$wikicreolelevel.'})([^=].*)$/', $content[$i], $match)) )
{
$this->_tocCounter($tocCounter, $level);
if (!strstr($content[$i],'#[')) {
@@ -378,7 +388,7 @@
$level = min(max(1, $hcount),3);
$levels[] = $level;
} else {
- $level = min(max(1, (int) $h), 3);
+ $level = min(max(1, (int) $h), 5);
$levels[] = $level;
}
}
@@ -391,7 +401,7 @@
foreach ($headers as $h) {
// proper heading indent
$level = $h['level'];
- $indent = 3 - $level;
+ $indent = $level - 1;
$link = new WikiPageName($pagename,$page,$h['anchor']);
$li = WikiLink($link,'known',$h['text']);
if ($liststyle == 'dl')
@@ -454,135 +464,6 @@
}
};
-// $Log: not supported by cvs2svn $
-// Revision 1.43 2008/08/19 18:29:12 vargenau
-// Correct TOC numbering
-//
-// Revision 1.42 2008/08/19 18:27:06 vargenau
-// Implement "noheader" parameter
-//
-// Revision 1.41 2008/08/19 18:25:18 vargenau
-// Use p with id=toctitle instead of h4 for TOC (easier to style)
-//
-// Revision 1.40 2008/08/19 18:21:35 vargenau
-// Do not force height and width of image
-//
-// Revision 1.39 2008/08/19 18:19:01 vargenau
-// Implement "firstlevelstyle" parameter
-//
-// Revision 1.38 2008/08/19 18:15:28 vargenau
-// Implement "notoc" parameter
-//
-// Revision 1.37 2008/05/04 08:37:42 vargenau
-// Add alt attribute
-//
-// Revision 1.36 2007/07/19 12:41:25 labbenes
-// Correct TOC numbering. It should start from '1' not from '1.1'.
-//
-// Revision 1.35 2007/02/17 14:17:48 rurban
-// declare vars for IE6
-//
-// Revision 1.34 2007/01/28 22:47:06 rurban
-// fix # back link
-//
-// Revision 1.33 2007/01/28 22:37:04 rurban
-// beautify +/- collapse icon
-//
-// Revision 1.32 2007/01/20 11:25:30 rurban
-// remove align
-//
-// Revision 1.31 2007/01/09 12:35:05 rurban
-// Change align to position. Add extracollapse. js now always active, jshide just denotes the initial state.
-//
-// Revision 1.30 2006/12/22 17:49:38 rurban
-// fix quoting
-//
-// Revision 1.29 2006/04/15 12:26:54 rurban
-// need basepage for subpages like /Remove (within CreateTOC)
-//
-// Revision 1.28 2005/10/12 06:15:25 rurban
-// just aesthetics
-//
-// Revision 1.27 2005/10/10 19:50:45 rurban
-// fix the missing formatting problems, add with_counter arg by ?? (20050106), Thanks to ManuelVacelet for the testcase
-//
-// Revision 1.26 2004/09/20 14:07:16 rurban
-// fix Constant toc_full_syntax already defined warning
-//
-// Revision 1.25 2004/07/08 20:30:07 rurban
-// plugin->run consistency: request as reference, added basepage.
-// encountered strange bug in AllPages (and the test) which destroys ->_dbi
-//
-// Revision 1.24 2004/06/28 13:27:03 rurban
-// CreateToc disabled for old markup and Apache2 only
-//
-// Revision 1.23 2004/06/28 13:13:58 rurban
-// CreateToc disabled for old markup
-//
-// Revision 1.22 2004/06/15 14:56:37 rurban
-// more allow_call_time_pass_reference false fixes
-//
-// Revision 1.21 2004/06/13 09:45:23 rurban
-// display bug workaround for MacIE browsers, jshide: 0
-//
-// Revision 1.20 2004/05/11 13:57:46 rurban
-// enable TOC_FULL_SYNTAX per default
-// don't <a name>$header</a> to disable css formatting for such anchors
-// => <a name></a>$header
-//
-// Revision 1.19 2004/05/08 16:59:27 rurban
-// requires optional TOC_FULL_SYNTAX constnat to enable full link and
-// wikiword syntax in headers.
-//
-// Revision 1.18 2004/04/29 21:55:15 rurban
-// fixed TOC backlinks with USE_PATH_INFO false
-// with_toclink=1, sf.net bug #940682
-//
-// Revision 1.17 2004/04/26 19:43:03 rurban
-// support most cases of header markup. fixed duplicate MangleXmlIdentifier name
-//
-// Revision 1.16 2004/04/26 14:46:14 rurban
-// better comments
-//
-// Revision 1.14 2004/04/21 04:29:50 rurban
-// write WikiURL consistently (not WikiUrl)
-//
-// Revision 1.12 2004/03/22 14:13:53 rurban
-// fixed links to equal named headers
-//
-// Revision 1.11 2004/03/15 09:52:59 rurban
-// jshide button: dynamic titles
-//
-// Revision 1.10 2004/03/14 20:30:21 rurban
-// jshide button
-//
-// Revision 1.9 2004/03/09 19:24:20 rurban
-// custom indentstr
-// h2 toc header
-//
-// Revision 1.8 2004/03/09 19:05:12 rurban
-// new liststyle arg. default: dl (no bullets)
-//
-// Revision 1.7 2004/03/09 11:51:54 rurban
-// support jshide=1: DHTML button hide/unhide TOC
-//
-// Revision 1.6 2004/03/09 10:25:37 rurban
-// slightly better formatted TOC indentation
-//
-// Revision 1.5 2004/03/09 08:57:10 rurban
-// convert space to "_" instead of "x20." in anchors
-// proper heading indent
-// handle duplicate headers
-// allow multiple headers like "!!!,!!" or "1,2"
-//
-// Revision 1.4 2004/03/02 18:21:29 rurban
-// typo: ref=>href
-//
-// Revision 1.1 2004/03/01 18:10:28 rurban
-// first version, without links, anchors and jscript folding
-//
-//
-
// For emacs users
// Local Variables:
// mode: php
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2008-08-28 18:18:40
|
Revision: 6219
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6219&view=rev
Author: vargenau
Date: 2008-08-28 18:18:50 +0000 (Thu, 28 Aug 2008)
Log Message:
-----------
getDefaultArguments: same order as in documentation
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-08-28 18:16:28 UTC (rev 6218)
+++ trunk/lib/plugin/CreateToc.php 2008-08-28 18:18:50 UTC (rev 6219)
@@ -56,20 +56,20 @@
}
function getDefaultArguments() {
- return array( 'pagename' => '[pagename]', // TOC of another page here?
- 'headers' => "1,2,3,4,5", // "!!!"=>h2, "!!"=>h3, "!"=>h4
- // "1"=>h2, "2"=>h3, "3"=>h4, "4"=>h5, "5"=>h6
- 'noheader' => 0, // omit "Table of Contents" header
- 'notoc' => 0, // do not display TOC, only number headers
- 'position' => 'right', // or left
- 'with_toclink' => 0, // link back to TOC
- 'jshide' => 0, // collapsed TOC as DHTML button
- 'extracollapse' => 1, // provide an entry +/- link to collapse
- 'liststyle' => 'dl', // 'dl' or 'ul' or 'ol'
- 'indentstr' => ' ',
- 'with_counter' => 0,
- 'firstlevelstyle' => 'number' // 'number', 'letter' or 'roman'
- );
+ return array('extracollapse' => 1, // provide an entry +/- link to collapse
+ 'firstlevelstyle' => 'number', // 'number', 'letter' or 'roman'
+ 'headers' => "1,2,3,4,5", // "!!!"=>h2, "!!"=>h3, "!"=>h4
+ // "1"=>h2, "2"=>h3, "3"=>h4, "4"=>h5, "5"=>h6
+ 'indentstr' => ' ',
+ 'jshide' => 0, // collapsed TOC as DHTML button
+ 'liststyle' => 'dl', // 'dl' or 'ul' or 'ol'
+ 'noheader' => 0, // omit "Table of Contents" header
+ 'notoc' => 0, // do not display TOC, only number headers
+ 'pagename' => '[pagename]', // TOC of another page here?
+ 'position' => 'full', // full, right or left
+ 'with_counter' => 0,
+ 'with_toclink' => 0, // link back to TOC
+ );
}
// Initialisation of toc counter
function _initTocCounter() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2008-08-29 15:16:11
|
Revision: 6223
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6223&view=rev
Author: vargenau
Date: 2008-08-29 15:16:20 +0000 (Fri, 29 Aug 2008)
Log Message:
-----------
Allow Wikicreole syntax with '='s at the end
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-08-29 13:52:09 UTC (rev 6222)
+++ trunk/lib/plugin/CreateToc.php 2008-08-29 15:16:20 UTC (rev 6223)
@@ -259,6 +259,11 @@
$this->_tocCounter($tocCounter, $level);
if (!strstr($content[$i],'#[')) {
$s = trim($match[2]);
+ // If it is Wikicreole syntax, remove '='s at the end
+ if (string_starts_with($match[1], "=")) {
+ $s = trim($s, "=");
+ $s = trim($s);
+ }
$anchor = $this->_nextAnchor($s);
$manchor = MangleXmlIdentifier($anchor);
$texts = $s;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2008-08-29 15:19:01
|
Revision: 6224
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6224&view=rev
Author: vargenau
Date: 2008-08-29 15:19:11 +0000 (Fri, 29 Aug 2008)
Log Message:
-----------
Implement 'position' and 'width' arguments
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-08-29 15:16:20 UTC (rev 6223)
+++ trunk/lib/plugin/CreateToc.php 2008-08-29 15:19:11 UTC (rev 6224)
@@ -374,6 +374,9 @@
if ($notoc) {
$html->setAttr('style','display:none;');
}
+ if (($position == "left") or ($position == "right")) {
+ $html->setAttr('style','float:'.$position.'; width:'.$width.';');
+ }
if ($liststyle == 'dl')
$list = HTML::dl(array('id'=>'toclist','class' => 'toc'));
elseif ($liststyle == 'ul')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2008-08-29 15:22:22
|
Revision: 6225
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6225&view=rev
Author: vargenau
Date: 2008-08-29 15:22:32 +0000 (Fri, 29 Aug 2008)
Log Message:
-----------
Use paragraphs instead of lists
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-08-29 15:19:11 UTC (rev 6224)
+++ trunk/lib/plugin/CreateToc.php 2008-08-29 15:22:32 UTC (rev 6225)
@@ -377,12 +377,7 @@
if (($position == "left") or ($position == "right")) {
$html->setAttr('style','float:'.$position.'; width:'.$width.';');
}
- if ($liststyle == 'dl')
- $list = HTML::dl(array('id'=>'toclist','class' => 'toc'));
- elseif ($liststyle == 'ul')
- $list = HTML::ul(array('id'=>'toclist','class' => 'toc'));
- elseif ($liststyle == 'ol')
- $list = HTML::ol(array('id'=>'toclist','class' => 'toc'));
+ $list = HTML::div(array('id'=>'toclist'));
if (!strstr($headers,",")) {
$headers = array($headers);
} else {
@@ -412,12 +407,8 @@
$indent = $level - 1;
$link = new WikiPageName($pagename,$page,$h['anchor']);
$li = WikiLink($link,'known',$h['text']);
- if ($liststyle == 'dl')
- $list->pushContent(HTML::dt(HTML::raw
- (str_repeat($indentstr,$indent)),$li));
- else
- $list->pushContent(HTML::li(HTML::raw
- (str_repeat($indentstr,$indent)),$li));
+ $list->pushContent(HTML::p(HTML::raw
+ (str_repeat($indentstr,$indent)),$li));
}
}
$list->setAttr('style','display:'.($jshide?'none;':'block;'));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2008-09-04 16:01:25
|
Revision: 6230
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6230&view=rev
Author: vargenau
Date: 2008-09-04 16:01:29 +0000 (Thu, 04 Sep 2008)
Log Message:
-----------
width was missing in getDefaultArguments
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2008-09-02 15:21:42 UTC (rev 6229)
+++ trunk/lib/plugin/CreateToc.php 2008-09-04 16:01:29 UTC (rev 6230)
@@ -67,6 +67,7 @@
'notoc' => 0, // do not display TOC, only number headers
'pagename' => '[pagename]', // TOC of another page here?
'position' => 'full', // full, right or left
+ 'width' => '200px',
'with_counter' => 0,
'with_toclink' => 0, // link back to TOC
);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2009-02-26 16:34:23
|
Revision: 6586
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=6586&view=rev
Author: vargenau
Date: 2009-02-26 16:34:14 +0000 (Thu, 26 Feb 2009)
Log Message:
-----------
Missing quotes
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2009-02-26 16:31:19 UTC (rev 6585)
+++ trunk/lib/plugin/CreateToc.php 2009-02-26 16:34:14 UTC (rev 6586)
@@ -379,7 +379,7 @@
$html->setAttr('style','float:'.$position.'; width:'.$width.';');
}
$toclistid = GenerateId("toclist");
- $list = HTML::div(array('id'=>$toclistid, 'class'=>toclist));
+ $list = HTML::div(array('id'=>$toclistid, 'class'=>'toclist'));
if (!strstr($headers,",")) {
$headers = array($headers);
} else {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2009-10-28 17:14:29
|
Revision: 7240
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7240&view=rev
Author: vargenau
Date: 2009-10-28 17:14:18 +0000 (Wed, 28 Oct 2009)
Log Message:
-----------
Fix problem between MediawikiTable and CreateToc plugins
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2009-10-28 17:08:09 UTC (rev 7239)
+++ trunk/lib/plugin/CreateToc.php 2009-10-28 17:14:18 UTC (rev 7240)
@@ -2,7 +2,7 @@
rcs_id('$Id$');
/*
Copyright 2004,2005 $ThePhpWikiProgrammingTeam
- Copyright 2008 Marc-Etienne Vargenau, Alcatel-Lucent
+ Copyright 2008-2009 Marc-Etienne Vargenau, Alcatel-Lucent
This file is part of PhpWiki.
@@ -24,16 +24,18 @@
/**
* CreateToc: Create a Table of Contents and automatically link to headers
*
- * Usage:
- * <?plugin CreateToc arguments ?>
+ * Usage:
+ * <<CreateToc arguments>>
* @author: Reini Urban, Marc-Etienne Vargenau
*
- * Known problems:
+ * Known problems:
* - MacIE will not work with jshide.
* - it will crash with old markup and Apache2 (?)
- * - Certain corner-edges will not work with TOC_FULL_SYNTAX.
+ * - Certain corner-edges will not work with TOC_FULL_SYNTAX.
* I believe I fixed all of them now, but who knows?
* - bug #969495 "existing labels not honored" seems to be fixed.
+ * - some constructs might incorrectly be recognized as a header
+ * (e.g. lines starting with "!!!" or "==" inside <verbatim>)
*/
if (!defined('TOC_FULL_SYNTAX'))
@@ -130,7 +132,7 @@
return str_replace(array("/",".","?","*"),
array('\/','\.','\?','\*'), $heading);
}
-
+
// Get HTML header corresponding to current level (level is set of ! or =)
function _getHeader($level) {
@@ -156,18 +158,18 @@
$theading = TransformInline($heading);
if ($theading)
return preg_quote($theading->asXML(), "/");
- else
+ else
return XmlContent::_quote(preg_quote($heading, "/"));
} else {
return XmlContent::_quote(preg_quote($heading, "/"));
}
}
-
+
/*
* @param $hstart id (in $content) of heading start
* @param $hend id (in $content) of heading end
*/
- function searchHeader ($content, $start_index, $heading,
+ function searchHeader ($content, $start_index, $heading,
$level, &$hstart, &$hend, $basepage=false) {
$hstart = 0;
$hend = 0;
@@ -175,7 +177,7 @@
$qheading = $this->_quote($heading);
for ($j=$start_index; $j < count($content); $j++) {
if (is_string($content[$j])) {
- if (preg_match("/<$h>$qheading<\/$h>/",
+ if (preg_match("/<$h>$qheading<\/$h>/",
$content[$j]))
return $j;
}
@@ -188,19 +190,19 @@
$content[$j] = $content[$j]->asString();
// shortcut for single wikiword or link headers
if ($content[$j] == $heading
- and substr($content[$j-1],-4,4) == "<$h>"
- and substr($content[$j+1],0,5) == "</$h>")
+ and substr($content[$j-1],-4,4) == "<$h>"
+ and substr($content[$j+1],0,5) == "</$h>")
{
$hstart = $j-1;
$hend = $j+1;
return $j; // single wikiword
- }
+ }
elseif (TOC_FULL_SYNTAX) {
//DONE: To allow "!! WikiWord link" or !! http://anylink/
// Check against joined content (after cached_plugininvocation).
// The first link is the anchor then.
if (preg_match("/<$h>(?!.*<\/$h>)/", $content[$j-1])) {
- $hstart = $j-1;
+ $hstart = $j-1;
$joined = '';
for ($k=max($j-1,$start_index);$k<count($content);$k++) {
if (is_string($content[$k]))
@@ -237,18 +239,38 @@
$anchors[$anchor] = $i;
return $anchor;
}
-
+
+ // We have to find headers in both:
+ // - classic Phpwiki syntax (lines starting with "!", "!!" or "!!!")
+ // - Wikicreole syntax (lines starting with "==", "===", etc.)
+ // We must omit lines starting with "!" if inside a Mediawiki table
+ // (they represent a table header)
+ // Some constructs might incorrectly be recognized as a header
+ // (e.g. lines starting with "!!!" or "==" inside <verbatim>)
// Feature request: proper nesting; multiple levels (e.g. 1,3)
- function extractHeaders (&$content, &$markup, $backlink=0,
+ function extractHeaders (&$content, &$markup, $backlink=0,
$counter=0, $levels=false, $firstlevelstyle='number', $basepage='')
{
+
if (!$levels) $levels = array(1,2);
- $tocCounter = $this->_initTocCounter();
+ $tocCounter = $this->_initTocCounter();
reset($levels);
sort($levels);
$headers = array();
$j = 0;
+ $insidetable = false;
for ($i=0; $i<count($content); $i++) {
+ if (preg_match('/^\s*{\|/', $content[$i])) {
+ $insidetable = true;
+ continue;
+ }
+ if (preg_match('/^\s*\|}/', $content[$i])) {
+ $insidetable = false;
+ continue;
+ }
+ if ($insidetable) {
+ continue;
+ }
foreach ($levels as $level) {
if ($level < 1 or $level > 5) continue;
$phpwikiclassiclevel = 4 -$level;
@@ -257,7 +279,7 @@
if ((preg_match('/^\s*(!{'.$phpwikiclassiclevel.','.$phpwikiclassiclevel.'})([^!].*)$/', $content[$i], $match))
or (preg_match('/^\s*(={'.$wikicreolelevel.','.$wikicreolelevel.'})([^=].*)$/', $content[$i], $match)) )
{
- $this->_tocCounter($tocCounter, $level);
+ $this->_tocCounter($tocCounter, $level);
if (!strstr($content[$i],'#[')) {
$s = trim($match[2]);
// If it is Wikicreole syntax, remove '='s at the end
@@ -271,8 +293,8 @@
if($counter) {
$texts = $this->_getCounter($tocCounter, $level, $firstlevelstyle).' '.$s;
}
- $headers[] = array('text' => $texts,
- 'anchor' => $anchor,
+ $headers[] = array('text' => $texts,
+ 'anchor' => $anchor,
'level' => $level);
// Change original wikitext, but that is useless art...
$content[$i] = $match[1]." #[|$manchor][$s|#TOC]";
@@ -280,8 +302,9 @@
// Search <hn>$s</hn> line in markup
/* Url for backlink */
$url = WikiURL(new WikiPageName($basepage,false,"TOC"));
- $j = $this->searchHeader($markup->_content, $j, $s,
- $match[1], $hstart, $hend,
+
+ $j = $this->searchHeader($markup->_content, $j, $s,
+ $match[1], $hstart, $hend,
$markup->_basepage);
if ($j and isset($markup->_content[$j])) {
$x = $markup->_content[$j];
@@ -313,9 +336,9 @@
$h = $this->_getHeader($match[1]);
if ($backlink) {
- if ($counter)
+ if ($counter) {
$anchorString = "\$1<a href=\"$url\" name=\"$manchor\">$counterString</a> - ";
- else {
+ } else {
/* Not possible to make a backlink on a
* title with a WikiWord */
$anchorString = "\$1<a name=\"$manchor\"></a>";
@@ -326,10 +349,10 @@
if ($counter)
$anchorString .= "$counterString - ";
}
- $x = preg_replace("/(<$h>)(?!.*<\/$h>)/",
+ $x = preg_replace("/(<$h>)(?!.*<\/$h>)/",
$anchorString, $x, 1);
if ($backlink) {
- $x = preg_replace("/(<$h>)(?!.*<\/$h>)/",
+ $x = preg_replace("/(<$h>)(?!.*<\/$h>)/",
$anchorString,
$markup->_content[$hstart],1);
}
@@ -342,7 +365,7 @@
}
return $headers;
}
-
+
function run($dbi, $argstr, &$request, $basepage) {
global $WikiTheme;
extract($this->getArgs($argstr, $request));
@@ -388,7 +411,7 @@
$toclistid = GenerateId("toclist");
$list = HTML::div(array('id'=>$toclistid, 'class'=>'toclist'));
if (!strstr($headers,",")) {
- $headers = array($headers);
+ $headers = array($headers);
} else {
$headers = explode(",",$headers);
}
@@ -406,8 +429,8 @@
}
if (TOC_FULL_SYNTAX)
require_once("lib/InlineParser.php");
- if ($headers = $this->extractHeaders($content, $dbi->_markup,
- $with_toclink, $with_counter,
+ if ($headers = $this->extractHeaders($content, $dbi->_markup,
+ $with_toclink, $with_counter,
$levels, $firstlevelstyle, $basepage))
{
foreach ($headers as $h) {
@@ -416,6 +439,8 @@
$indent = $level - 1;
$link = new WikiPageName($pagename,$page,$h['anchor']);
$li = WikiLink($link,'known',$h['text']);
+ // Hack to suppress pagename before #
+ // $li->_attr["href"] = strstr($li->_attr["href"], '#');
$list->pushContent(HTML::p(HTML::raw
(str_repeat($indentstr,$indent)),$li));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-03-31 09:00:33
|
Revision: 7310
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7310&view=rev
Author: vargenau
Date: 2010-03-31 09:00:27 +0000 (Wed, 31 Mar 2010)
Log Message:
-----------
Make all 5 levels work
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-03-30 11:38:23 UTC (rev 7309)
+++ trunk/lib/plugin/CreateToc.php 2010-03-31 09:00:27 UTC (rev 7310)
@@ -2,7 +2,7 @@
rcs_id('$Id$');
/*
* Copyright 2004,2005 $ThePhpWikiProgrammingTeam
- * Copyright 2008-2009 Marc-Etienne Vargenau, Alcatel-Lucent
+ * Copyright 2008-2010 Marc-Etienne Vargenau, Alcatel-Lucent
*
* This file is part of PhpWiki.
*
@@ -275,10 +275,12 @@
if ($level < 1 or $level > 5) continue;
$phpwikiclassiclevel = 4 -$level;
$wikicreolelevel = $level + 1;
- if ($phpwikiclassiclevel < 1 or $phpwikiclassiclevel > 3) continue;
- if ((preg_match('/^\s*(!{'.$phpwikiclassiclevel.','.$phpwikiclassiclevel.'})([^!].*)$/', $content[$i], $match))
- or (preg_match('/^\s*(={'.$wikicreolelevel.','.$wikicreolelevel.'})([^=].*)$/', $content[$i], $match)) )
- {
+ $trim = trim($content[$i]);
+
+ if ((((strpos($trim, '=') === 0))
+ && (preg_match('/^\s*(={'.$wikicreolelevel.','.$wikicreolelevel.'})([^=].*)$/', $content[$i], $match)))
+ or (((strpos($trim, '!') === 0))
+ && ((preg_match('/^\s*(!{'.$phpwikiclassiclevel.','.$phpwikiclassiclevel.'})([^!].*)$/', $content[$i], $match))))) {
$this->_tocCounter($tocCounter, $level);
if (!strstr($content[$i],'#[')) {
$s = trim($match[2]);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-06-25 11:53:02
|
Revision: 7572
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7572&view=rev
Author: vargenau
Date: 2010-06-25 11:52:55 +0000 (Fri, 25 Jun 2010)
Log Message:
-----------
Use "id" instead of "name" for <a>
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-06-24 16:31:07 UTC (rev 7571)
+++ trunk/lib/plugin/CreateToc.php 2010-06-25 11:52:55 UTC (rev 7572)
@@ -311,9 +311,9 @@
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
if ($counter)
- $anchorString = "<a href=\"$url\" name=\"$manchor\">$counterString</a> - \$2";
+ $anchorString = "<a href=\"$url\" id=\"$manchor\">$counterString</a> - \$2";
else
- $anchorString = "<a href=\"$url\" name=\"$manchor\">\$2</a>";
+ $anchorString = "<a href=\"$url\" id=\"$manchor\">\$2</a>";
} else {
$anchorString = "<a id=\"$manchor\"></a>";
if ($counter)
@@ -334,7 +334,7 @@
if ($backlink) {
if ($counter) {
- $anchorString = "\$1<a href=\"$url\" name=\"$manchor\">$counterString</a> - ";
+ $anchorString = "\$1<a href=\"$url\" id=\"$manchor\">$counterString</a> - ";
} else {
/* Not possible to make a backlink on a
* title with a WikiWord */
@@ -457,11 +457,10 @@
'class'=>'wikiaction',
'title'=>_("Click to display to TOC"),
'onclick'=>"toggletoc(this, '".$open."', '".$close."', '".$toclistid."')",
- 'border' => 0,
'alt' => 'toctoggle',
'src' => $jshide ? $close : $open )));
else
- $toclink = HTML::a(array('name'=>'TOC',
+ $toclink = HTML::a(array('id'=>'TOC',
'class'=>'wikiaction',
'title'=>_("Click to display"),
'onclick'=>"toggletoc(this, '".$open."', '".$close."', '".$toclistid."')"),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-06-25 11:56:11
|
Revision: 7573
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7573&view=rev
Author: vargenau
Date: 2010-06-25 11:56:05 +0000 (Fri, 25 Jun 2010)
Log Message:
-----------
Use "id" instead of "name" for <a>
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-06-25 11:52:55 UTC (rev 7572)
+++ trunk/lib/plugin/CreateToc.php 2010-06-25 11:56:05 UTC (rev 7573)
@@ -451,7 +451,7 @@
if ($extracollapse)
$toclink = HTML(_("Table of Contents"),
" ",
- HTML::a(array('name'=>'TOC')),
+ HTML::a(array('id'=>'TOC')),
HTML::img(array(
'id'=>$toctoggleid,
'class'=>'wikiaction',
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-09-17 08:41:16
|
Revision: 7689
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7689&view=rev
Author: vargenau
Date: 2010-09-17 08:41:10 +0000 (Fri, 17 Sep 2010)
Log Message:
-----------
Whitespace only
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-09-13 15:05:24 UTC (rev 7688)
+++ trunk/lib/plugin/CreateToc.php 2010-09-17 08:41:10 UTC (rev 7689)
@@ -246,7 +246,6 @@
function extractHeaders (&$content, &$markup, $backlink=0,
$counter=0, $levels=false, $firstlevelstyle='number', $basepage='')
{
-
if (!$levels) $levels = array(1,2);
$tocCounter = $this->_initTocCounter();
reset($levels);
@@ -374,8 +373,7 @@
if (!$pagename) {
return $this->error(_("no page specified"));
}
- if ($jshide and isBrowserIE() and browserDetect("Mac")) {
- //trigger_error(_("jshide set to 0 on Mac IE"), E_USER_NOTICE);
+ if (isBrowserIE() and browserDetect("Mac")) {
$jshide = 0;
}
if (($notoc) or ($liststyle == 'ol')) {
@@ -384,8 +382,8 @@
// Check if user is allowed to get the Page.
if (!mayAccessPage ('view', $pagename)) {
- return $this->error(sprintf(_("Illegal access to page %s: no read access"),
- $pagename));
+ return $this->error(sprintf(_("Illegal access to page %s: no read access"),
+ $pagename));
}
$page = $dbi->getPage($pagename);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ru...@us...> - 2010-09-21 07:09:03
|
Revision: 7704
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7704&view=rev
Author: rurban
Date: 2010-09-21 07:08:56 +0000 (Tue, 21 Sep 2010)
Log Message:
-----------
revert 7551-7553. we use named anchors to jump to, not internal ids
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-09-21 06:28:07 UTC (rev 7703)
+++ trunk/lib/plugin/CreateToc.php 2010-09-21 07:08:56 UTC (rev 7704)
@@ -311,11 +311,11 @@
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
if ($counter)
- $anchorString = "<a href=\"$url\" id=\"$manchor\">$counterString</a> - \$2";
+ $anchorString = "<a href=\"$url\" name=\"$manchor\">$counterString</a> - \$2";
else
- $anchorString = "<a href=\"$url\" id=\"$manchor\">\$2</a>";
+ $anchorString = "<a href=\"$url\" name=\"$manchor\">\$2</a>";
} else {
- $anchorString = "<a id=\"$manchor\"></a>";
+ $anchorString = "<a name=\"$manchor\"></a>";
if ($counter)
$anchorString .= "$counterString - ";
}
@@ -334,15 +334,15 @@
if ($backlink) {
if ($counter) {
- $anchorString = "\$1<a href=\"$url\" id=\"$manchor\">$counterString</a> - ";
+ $anchorString = "\$1<a href=\"$url\" name=\"$manchor\">$counterString</a> - ";
} else {
/* Not possible to make a backlink on a
* title with a WikiWord */
- $anchorString = "\$1<a id=\"$manchor\"></a>";
+ $anchorString = "\$1<a name=\"$manchor\"></a>";
}
}
else {
- $anchorString = "\$1<a id=\"$manchor\"></a>";
+ $anchorString = "\$1<a name=\"$manchor\"></a>";
if ($counter)
$anchorString .= "$counterString - ";
}
@@ -404,10 +404,9 @@
$r = $page->getCurrentRevision();
}
- $current = $page->getCurrentRevision();
//FIXME: I suspect this only to crash with Apache2
- if (!$current->get('markup') or $current->get('markup') < 2) {
- if (in_array(php_sapi_name(),array('apache2handler','apache2filter'))) {
+ if (!$r->get('markup') or $r->get('markup') < 2) {
+ if (in_array(php_sapi_name(), array('apache2handler','apache2filter'))) {
return $this->error(_("CreateToc disabled for old markup."));
}
}
@@ -467,7 +466,7 @@
if ($extracollapse)
$toclink = HTML(_("Table of Contents"),
" ",
- HTML::a(array('id'=>'TOC')),
+ HTML::a(array('name'=>'TOC')),
HTML::img(array(
'id'=>$toctoggleid,
'class'=>'wikiaction',
@@ -476,7 +475,7 @@
'alt' => 'toctoggle',
'src' => $jshide ? $close : $open )));
else
- $toclink = HTML::a(array('id'=>'TOC',
+ $toclink = HTML::a(array('name'=>'TOC',
'class'=>'wikiaction',
'title'=>_("Click to display"),
'onclick'=>"toggletoc(this, '".$open."', '".$close."', '".$toclistid."')"),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-09-30 15:49:00
|
Revision: 7709
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7709&view=rev
Author: vargenau
Date: 2010-09-30 15:48:54 +0000 (Thu, 30 Sep 2010)
Log Message:
-----------
Fixed: Some constructs might incorrectly be recognized as a header (e.g. lines starting with "!!!" or "==" inside <verbatim>)
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-09-22 18:19:06 UTC (rev 7708)
+++ trunk/lib/plugin/CreateToc.php 2010-09-30 15:48:54 UTC (rev 7709)
@@ -34,8 +34,6 @@
* - Certain corner-edges will not work with TOC_FULL_SYNTAX.
* I believe I fixed all of them now, but who knows?
* - bug #969495 "existing labels not honored" seems to be fixed.
- * - some constructs might incorrectly be recognized as a header
- * (e.g. lines starting with "!!!" or "==" inside <verbatim>)
*/
if (!defined('TOC_FULL_SYNTAX'))
@@ -241,8 +239,6 @@
// - Wikicreole syntax (lines starting with "==", "===", etc.)
// We must omit lines starting with "!" if inside a Mediawiki table
// (they represent a table header)
- // Some constructs might incorrectly be recognized as a header
- // (e.g. lines starting with "!!!" or "==" inside <verbatim>)
// Feature request: proper nesting; multiple levels (e.g. 1,3)
function extractHeaders (&$content, &$markup, $backlink=0,
$counter=0, $levels=false, $firstlevelstyle='number', $basepage='')
@@ -254,16 +250,26 @@
$headers = array();
$j = 0;
$insidetable = false;
+ $insideverbatim = false;
for ($i=0; $i<count($content); $i++) {
if (preg_match('/^\s*{\|/', $content[$i])) {
$insidetable = true;
continue;
- }
- if (preg_match('/^\s*\|}/', $content[$i])) {
+ } else if (preg_match('/^\s*{{{/', $content[$i])
+ || preg_match('/^\s*<pre>/', $content[$i])
+ || preg_match('/^\s*<verbatim>/', $content[$i])) {
+ $insideverbatim = true;
+ continue;
+ } else if (preg_match('/^\s*\|}/', $content[$i])) {
$insidetable = false;
continue;
+ } else if (preg_match('/^\s*}}}/', $content[$i])
+ || preg_match('/^\s*<\/pre>/', $content[$i])
+ || preg_match('/^\s*<\/verbatim>/', $content[$i])) {
+ $insideverbatim = false;
+ continue;
}
- if ($insidetable) {
+ if (($insidetable) || ($insideverbatim)) {
continue;
}
foreach ($levels as $level) {
@@ -311,11 +317,11 @@
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
if ($counter)
- $anchorString = "<a href=\"$url\" name=\"$manchor\">$counterString</a> - \$2";
+ $anchorString = "<a href=\"$url\" id=\"$manchor\">$counterString</a> - \$2";
else
- $anchorString = "<a href=\"$url\" name=\"$manchor\">\$2</a>";
+ $anchorString = "<a href=\"$url\" id=\"$manchor\">\$2</a>";
} else {
- $anchorString = "<a name=\"$manchor\"></a>";
+ $anchorString = "<a id=\"$manchor\"></a>";
if ($counter)
$anchorString .= "$counterString - ";
}
@@ -334,15 +340,15 @@
if ($backlink) {
if ($counter) {
- $anchorString = "\$1<a href=\"$url\" name=\"$manchor\">$counterString</a> - ";
+ $anchorString = "\$1<a href=\"$url\" id=\"$manchor\">$counterString</a> - ";
} else {
/* Not possible to make a backlink on a
* title with a WikiWord */
- $anchorString = "\$1<a name=\"$manchor\"></a>";
+ $anchorString = "\$1<a id=\"$manchor\"></a>";
}
}
else {
- $anchorString = "\$1<a name=\"$manchor\"></a>";
+ $anchorString = "\$1<a id=\"$manchor\"></a>";
if ($counter)
$anchorString .= "$counterString - ";
}
@@ -404,9 +410,10 @@
$r = $page->getCurrentRevision();
}
+ $current = $page->getCurrentRevision();
//FIXME: I suspect this only to crash with Apache2
- if (!$r->get('markup') or $r->get('markup') < 2) {
- if (in_array(php_sapi_name(), array('apache2handler','apache2filter'))) {
+ if (!$current->get('markup') or $current->get('markup') < 2) {
+ if (in_array(php_sapi_name(),array('apache2handler','apache2filter'))) {
return $this->error(_("CreateToc disabled for old markup."));
}
}
@@ -466,7 +473,7 @@
if ($extracollapse)
$toclink = HTML(_("Table of Contents"),
" ",
- HTML::a(array('name'=>'TOC')),
+ HTML::a(array('id'=>'TOC')),
HTML::img(array(
'id'=>$toctoggleid,
'class'=>'wikiaction',
@@ -475,7 +482,7 @@
'alt' => 'toctoggle',
'src' => $jshide ? $close : $open )));
else
- $toclink = HTML::a(array('name'=>'TOC',
+ $toclink = HTML::a(array('id'=>'TOC',
'class'=>'wikiaction',
'title'=>_("Click to display"),
'onclick'=>"toggletoc(this, '".$open."', '".$close."', '".$toclistid."')"),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2010-12-10 09:58:47
|
Revision: 7774
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7774&view=rev
Author: vargenau
Date: 2010-12-10 09:58:41 +0000 (Fri, 10 Dec 2010)
Log Message:
-----------
Remove function preg_quote (it is a standard PHP function)
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2010-12-09 19:41:24 UTC (rev 7773)
+++ trunk/lib/plugin/CreateToc.php 2010-12-10 09:58:41 UTC (rev 7774)
@@ -122,11 +122,6 @@
return $str;
}
- function preg_quote ($heading) {
- return str_replace(array("/",".","?","*"),
- array('\/','\.','\?','\*'), $heading);
- }
-
// Get HTML header corresponding to current level (level is set of ! or =)
function _getHeader($level) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2011-04-11 13:44:22
|
Revision: 8036
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=8036&view=rev
Author: vargenau
Date: 2011-04-11 13:44:13 +0000 (Mon, 11 Apr 2011)
Log Message:
-----------
Do not trigger error, it happens e.g. for "<<CreateToc pagename=AnotherPage>>"
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2011-04-11 12:51:58 UTC (rev 8035)
+++ trunk/lib/plugin/CreateToc.php 2011-04-11 13:44:13 UTC (rev 8036)
@@ -209,7 +209,9 @@
}
}
}
- trigger_error("Heading <$h> $heading </$h> not found\n", E_USER_NOTICE);
+ // Do not trigger error, it happens e.g. for "<<CreateToc pagename=AnotherPage>>"
+ // trigger_error("Heading <$h> $heading </$h> not found\n", E_USER_NOTICE);
+
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2011-05-04 10:22:09
|
Revision: 8062
http://phpwiki.svn.sourceforge.net/phpwiki/?rev=8062&view=rev
Author: vargenau
Date: 2011-05-04 10:22:03 +0000 (Wed, 04 May 2011)
Log Message:
-----------
Check version is a positive integer; check firstlevelstyle is correct
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2011-05-04 10:20:46 UTC (rev 8061)
+++ trunk/lib/plugin/CreateToc.php 2011-05-04 10:22:03 UTC (rev 8062)
@@ -383,6 +383,11 @@
if (($notoc) or ($liststyle == 'ol')) {
$with_counter = 1;
}
+ if ($firstlevelstyle and ($firstlevelstyle != 'number')
+ and ($firstlevelstyle != 'letter')
+ and ($firstlevelstyle != 'roman')) {
+ return $this->error(_("Error: firstlevelstyle must be 'number', 'letter' or 'roman'"));
+ }
// Check if page exists.
if (!($dbi->isWikiPage($pagename))) {
@@ -398,6 +403,9 @@
$page = $dbi->getPage($pagename);
if ($version) {
+ if (!is_whole_number($version) or !($version>0)) {
+ return $this->error(_("Error: version must be a positive integer."));
+ }
$r = $page->getRevision($version);
if ((!$r) || ($r->hasDefaultContents())) {
return $this->error(sprintf(_("%s: no such revision %d."),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2013-04-16 14:29:40
|
Revision: 8750
http://sourceforge.net/p/phpwiki/code/8750
Author: vargenau
Date: 2013-04-16 14:29:36 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Remove underscore for private functions
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2013-04-16 14:17:35 UTC (rev 8749)
+++ trunk/lib/plugin/CreateToc.php 2013-04-16 14:29:36 UTC (rev 8750)
@@ -72,14 +72,14 @@
}
// Initialisation of toc counter
- private function _initTocCounter()
+ private function initTocCounter()
{
$counter = array(1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0);
return $counter;
}
// Update toc counter with a new title
- private function _tocCounter(&$counter, $level)
+ private function tocCounter(&$counter, $level)
{
$counter[$level]++;
for ($i = $level + 1; $i <= 5; $i++) {
@@ -87,7 +87,7 @@
}
}
- private function _roman_counter($number)
+ private function roman_counter($number)
{
$n = intval($number);
@@ -104,7 +104,7 @@
return $result;
}
- private function _letter_counter($number)
+ private function letter_counter($number)
{
if ($number <= 26) {
return chr(ord("A") + $number - 1);
@@ -114,12 +114,12 @@
}
// Get string corresponding to the current title
- private function _getCounter(&$counter, $level, $firstlevelstyle)
+ private function getCounter(&$counter, $level, $firstlevelstyle)
{
if ($firstlevelstyle == 'roman') {
- $str = $this->_roman_counter($counter[1]);
+ $str = $this->roman_counter($counter[1]);
} elseif ($firstlevelstyle == 'letter') {
- $str = $this->_letter_counter($counter[1]);
+ $str = $this->letter_counter($counter[1]);
} else {
$str = $counter[1];
}
@@ -131,7 +131,7 @@
}
// Get HTML header corresponding to current level (level is set of ! or =)
- private function _getHeader($level)
+ private function getHeader($level)
{
$count = substr_count($level, '!');
@@ -159,7 +159,7 @@
return "";
}
- private function _quote($heading)
+ private function quote($heading)
{
if (TOC_FULL_SYNTAX) {
$theading = TransformInline($heading);
@@ -181,8 +181,8 @@
{
$hstart = 0;
$hend = 0;
- $h = $this->_getHeader($level);
- $qheading = $this->_quote($heading);
+ $h = $this->getHeader($level);
+ $qheading = $this->quote($heading);
for ($j = $start_index; $j < count($content); $j++) {
if (is_string($content[$j])) {
if (preg_match("/<$h>$qheading<\/$h>/",
@@ -234,7 +234,7 @@
/** prevent from duplicate anchors,
* beautify spaces: " " => "_" and not "x20."
*/
- private function _nextAnchor($s)
+ private function nextAnchor($s)
{
static $anchors = array();
@@ -258,7 +258,7 @@
$counter = 0, $levels = false, $firstlevelstyle = 'number', $basepage = '')
{
if (!$levels) $levels = array(1, 2);
- $tocCounter = $this->_initTocCounter();
+ $tocCounter = $this->initTocCounter();
reset($levels);
sort($levels);
$headers = array();
@@ -299,7 +299,7 @@
or (((strpos($trim, '!') === 0))
&& ((preg_match('/^\s*(!{' . $phpwikiclassiclevel . ',' . $phpwikiclassiclevel . '})([^!].*)$/', $content[$i], $match))))
) {
- $this->_tocCounter($tocCounter, $level);
+ $this->tocCounter($tocCounter, $level);
if (!strstr($content[$i], '#[')) {
$s = trim($match[2]);
// If it is Wikicreole syntax, remove '='s at the end
@@ -307,11 +307,11 @@
$s = trim($s, "=");
$s = trim($s);
}
- $anchor = $this->_nextAnchor($s);
+ $anchor = $this->nextAnchor($s);
$manchor = MangleXmlIdentifier($anchor);
$texts = $s;
if ($counter) {
- $texts = $this->_getCounter($tocCounter, $level, $firstlevelstyle) . ' ' . $s;
+ $texts = $this->getCounter($tocCounter, $level, $firstlevelstyle) . ' ' . $s;
}
$headers[] = array('text' => $texts,
'anchor' => $anchor,
@@ -328,9 +328,9 @@
$markup->_basepage);
if ($j and isset($markup->_content[$j])) {
$x = $markup->_content[$j];
- $qheading = $this->_quote($s);
+ $qheading = $this->quote($s);
if ($counter)
- $counterString = $this->_getCounter($tocCounter, $level, $firstlevelstyle);
+ $counterString = $this->getCounter($tocCounter, $level, $firstlevelstyle);
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
if ($counter)
@@ -354,7 +354,7 @@
}
} else {
$x = $markup->_content[$hstart];
- $h = $this->_getHeader($match[1]);
+ $h = $this->getHeader($match[1]);
if ($backlink) {
if ($counter) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2013-04-16 14:39:01
|
Revision: 8751
http://sourceforge.net/p/phpwiki/code/8751
Author: vargenau
Date: 2013-04-16 14:38:58 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
More private functions
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2013-04-16 14:29:36 UTC (rev 8750)
+++ trunk/lib/plugin/CreateToc.php 2013-04-16 14:38:58 UTC (rev 8751)
@@ -176,7 +176,7 @@
* @param $hstart id (in $content) of heading start
* @param $hend id (in $content) of heading end
*/
- function searchHeader($content, $start_index, $heading,
+ private function searchHeader($content, $start_index, $heading,
$level, &$hstart, &$hend, $basepage = false)
{
$hstart = 0;
@@ -254,7 +254,7 @@
// We must omit lines starting with "!" if inside a Mediawiki table
// (they represent a table header)
// Feature request: proper nesting; multiple levels (e.g. 1,3)
- function extractHeaders(&$content, &$markup, $backlink = 0,
+ private function extractHeaders(&$content, &$markup, $backlink = 0,
$counter = 0, $levels = false, $firstlevelstyle = 'number', $basepage = '')
{
if (!$levels) $levels = array(1, 2);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2013-04-16 15:53:49
|
Revision: 8760
http://sourceforge.net/p/phpwiki/code/8760
Author: vargenau
Date: 2013-04-16 15:53:47 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Remove unused param in getCounter
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2013-04-16 15:42:21 UTC (rev 8759)
+++ trunk/lib/plugin/CreateToc.php 2013-04-16 15:53:47 UTC (rev 8760)
@@ -114,7 +114,7 @@
}
// Get string corresponding to the current title
- private function getCounter(&$counter, $level, $firstlevelstyle)
+ private function getCounter(&$counter, $firstlevelstyle)
{
if ($firstlevelstyle == 'roman') {
$str = $this->roman_counter($counter[1]);
@@ -311,7 +311,7 @@
$manchor = MangleXmlIdentifier($anchor);
$texts = $s;
if ($counter) {
- $texts = $this->getCounter($tocCounter, $level, $firstlevelstyle) . ' ' . $s;
+ $texts = $this->getCounter($tocCounter, $firstlevelstyle) . ' ' . $s;
}
$headers[] = array('text' => $texts,
'anchor' => $anchor,
@@ -330,7 +330,7 @@
$x = $markup->_content[$j];
$qheading = $this->quote($s);
if ($counter)
- $counterString = $this->getCounter($tocCounter, $level, $firstlevelstyle);
+ $counterString = $this->getCounter($tocCounter, $firstlevelstyle);
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
if ($counter)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2014-08-26 13:05:20
|
Revision: 9051
http://sourceforge.net/p/phpwiki/code/9051
Author: vargenau
Date: 2014-08-26 13:05:08 +0000 (Tue, 26 Aug 2014)
Log Message:
-----------
Fix warnings
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2014-08-26 12:10:14 UTC (rev 9050)
+++ trunk/lib/plugin/CreateToc.php 2014-08-26 13:05:08 UTC (rev 9051)
@@ -160,9 +160,9 @@
if ($theading)
return preg_quote($theading->asXML(), "/");
else
- return XmlContent::_quote(preg_quote($heading, "/"));
+ return htmlspecialchars(preg_quote($heading, "/"), ENT_COMPAT, 'UTF-8');
} else {
- return XmlContent::_quote(preg_quote($heading, "/"));
+ return htmlspecialchars(preg_quote($heading, "/"), ENT_COMPAT, 'UTF-8');
}
}
@@ -245,8 +245,8 @@
// We must omit lines starting with "!" if inside a Mediawiki table
// (they represent a table header)
// Feature request: proper nesting; multiple levels (e.g. 1,3)
- private function extractHeaders(&$content, &$markup, $backlink = 0,
- $counter = 0, $levels = false, $firstlevelstyle = 'number', $basepage = '')
+ private function extractHeaders(&$content, &$markup, $backlink,
+ $counter, $levels, $firstlevelstyle, $basepage)
{
if (!$levels) $levels = array(1, 2);
$tocCounter = $this->initTocCounter();
@@ -425,7 +425,6 @@
$r = $page->getCurrentRevision();
}
- $current = $page->getCurrentRevision();
$content = $r->getContent();
$html = HTML::div(array('class' => 'toc', 'id' => GenerateId("toc")));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2016-12-12 13:52:57
|
Revision: 9993
http://sourceforge.net/p/phpwiki/code/9993
Author: vargenau
Date: 2016-12-12 13:52:55 +0000 (Mon, 12 Dec 2016)
Log Message:
-----------
Add braces
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2016-12-12 13:40:01 UTC (rev 9992)
+++ trunk/lib/plugin/CreateToc.php 2016-12-12 13:52:55 UTC (rev 9993)
@@ -161,10 +161,11 @@
{
if (TOC_FULL_SYNTAX) {
$theading = TransformInline($heading);
- if ($theading)
+ if ($theading) {
return preg_quote($theading->asXML(), "/");
- else
+ } else {
return htmlspecialchars(preg_quote($heading, "/"), ENT_COMPAT, 'UTF-8');
+ }
} else {
return htmlspecialchars(preg_quote($heading, "/"), ENT_COMPAT, 'UTF-8');
}
@@ -191,8 +192,9 @@
if (method_exists($content[$j], 'asXML')) {
$content[$j]->_basepage = $basepage;
$content[$j] = $content[$j]->asXML();
- } else
+ } else {
$content[$j] = $content[$j]->asString();
+ }
// shortcut for single wikiword or link headers
if ($content[$j] == $heading
and substr($content[$j - 1], -4, 4) == "<$h>"
@@ -209,11 +211,13 @@
$hstart = $j - 1;
$joined = '';
for ($k = max($j - 1, $start_index); $k < count($content); $k++) {
- if (is_string($content[$k]))
+ if (is_string($content[$k])) {
$joined .= $content[$k];
- elseif (method_exists($content[$k], 'asXML'))
- $joined .= $content[$k]->asXML(); else
+ } elseif (method_exists($content[$k], 'asXML')) {
+ $joined .= $content[$k]->asXML();
+ } else {
$joined .= $content[$k]->asString();
+ }
if (preg_match("/<$h>$qheading<\/$h>/", $joined)) {
$hend = $k;
return $k;
@@ -328,14 +332,16 @@
$counterString = $this->getCounter($tocCounter, $firstlevelstyle);
if (($hstart === 0) && is_string($markup->_content[$j])) {
if ($backlink) {
- if ($counter)
+ if ($counter) {
$anchorString = "<a href=\"$url\" id=\"$manchor\">$counterString</a> - \$2";
- else
+ } else {
$anchorString = "<a href=\"$url\" id=\"$manchor\">\$2</a>";
+ }
} else {
$anchorString = "<a id=\"$manchor\"></a>";
- if ($counter)
+ if ($counter) {
$anchorString .= "$counterString - ";
+ }
}
if ($x = preg_replace('/(<h\d>)(' . $qheading . ')(<\/h\d>)/',
"\$1$anchorString\$2\$3", $x, 1)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2021-01-09 11:31:25
|
Revision: 10235
http://sourceforge.net/p/phpwiki/code/10235
Author: vargenau
Date: 2021-01-09 11:31:22 +0000 (Sat, 09 Jan 2021)
Log Message:
-----------
lib/plugin/CreateToc.php: check all boolean arguments
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2021-01-08 17:26:59 UTC (rev 10234)
+++ trunk/lib/plugin/CreateToc.php 2021-01-09 11:31:22 UTC (rev 10235)
@@ -51,21 +51,22 @@
function getDefaultArguments()
{
- return array('extracollapse' => 1, // provide an entry +/- link to collapse
+ return array(
+ 'extracollapse' => true, // provide an entry +/- link to collapse
'firstlevelstyle' => 'number', // 'number', 'letter' or 'roman'
'headers' => "1,2,3,4,5", // "!!!"=>h2, "!!"=>h3, "!"=>h4
- // "1"=>h2, "2"=>h3, "3"=>h4, "4"=>h5, "5"=>h6
+ // "1"=>h2, "2"=>h3, "3"=>h4, "4"=>h5, "5"=>h6
'indentstr' => ' ',
- 'jshide' => 0, // collapsed TOC as DHTML button
+ 'jshide' => false, // collapsed TOC as DHTML button
'liststyle' => 'dl', // 'dl' or 'ul' or 'ol'
- 'noheader' => 0, // omit "Table of Contents" header
- 'notoc' => 0, // do not display TOC, only number headers
+ 'noheader' => false, // omit "Table of Contents" header
+ 'notoc' => false, // do not display TOC, only number headers
'pagename' => '[pagename]', // TOC of another page here?
'position' => 'full', // full, right or left
+ 'version' => false, // Most recent version
'width' => '200px',
- 'with_counter' => 0,
- 'with_toclink' => 0, // link back to TOC
- 'version' => false,
+ 'with_counter' => false,
+ 'with_toclink' => false, // link back to TOC
);
}
@@ -398,6 +399,7 @@
{
global $WikiTheme;
extract($this->getArgs($argstr, $request));
+
if ($pagename) {
// Expand relative page names.
$page = new WikiPageName($pagename, $basepage);
@@ -406,6 +408,55 @@
if (!$pagename) {
return $this->error(sprintf(_("A required argument “%s” is missing."), 'pagename'));
}
+
+ if (($extracollapse == '0') || ($extracollapse == 'false')) {
+ $extracollapse = false;
+ } elseif (($extracollapse == '1') || ($extracollapse == 'true')) {
+ $extracollapse = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "extracollapse"));
+ }
+
+ if (($jshide == '0') || ($jshide == 'false')) {
+ $jshide = false;
+ } elseif (($jshide == '1') || ($jshide == 'true')) {
+ $jshide = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "jshide"));
+ }
+
+ if (($noheader == '0') || ($noheader == 'false')) {
+ $noheader = false;
+ } elseif (($noheader == '1') || ($noheader == 'true')) {
+ $noheader = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "noheader"));
+ }
+
+ if (($notoc == '0') || ($notoc == 'false')) {
+ $notoc = false;
+ } elseif (($notoc == '1') || ($notoc == 'true')) {
+ $notoc = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "notoc"));
+ }
+
+ if (($with_counter == '0') || ($with_counter == 'false')) {
+ $with_counter = false;
+ } elseif (($with_counter == '1') || ($with_counter == 'true')) {
+ $with_counter = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "with_counter"));
+ }
+
+ if (($with_toclink == '0') || ($with_toclink == 'false')) {
+ $with_toclink = false;
+ } elseif (($with_toclink == '1') || ($with_toclink == 'true')) {
+ $with_toclink = true;
+ } else {
+ return $this->error(sprintf(_("Argument '%s' must be a boolean"), "with_toclink"));
+ }
+
if (($notoc) or ($liststyle == 'ol')) {
$with_counter = 1;
}
@@ -415,9 +466,6 @@
) {
return $this->error(_("Error: firstlevelstyle must be 'number', 'letter' or 'roman'"));
}
- if ($extracollapse == 'false') {
- $extracollapse = false;
- }
// Check if page exists.
if (!($dbi->isWikiPage($pagename))) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2021-09-20 07:56:54
|
Revision: 10572
http://sourceforge.net/p/phpwiki/code/10572
Author: vargenau
Date: 2021-09-20 07:56:53 +0000 (Mon, 20 Sep 2021)
Log Message:
-----------
Simplify initialisation of toc counter
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2021-09-17 16:35:51 UTC (rev 10571)
+++ trunk/lib/plugin/CreateToc.php 2021-09-20 07:56:53 UTC (rev 10572)
@@ -70,13 +70,6 @@
);
}
- // Initialisation of toc counter
- private function initTocCounter()
- {
- $counter = array(1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0);
- return $counter;
- }
-
// Update toc counter with a new title
private function tocCounter(&$counter, $level)
{
@@ -258,7 +251,7 @@
$counter, $levels, $firstlevelstyle, $basepage)
{
if (!$levels) $levels = array(1, 2);
- $tocCounter = $this->initTocCounter();
+ $tocCounter = array(1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0);
reset($levels);
sort($levels);
$headers = array();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <var...@us...> - 2021-11-19 08:18:00
|
Revision: 10660
http://sourceforge.net/p/phpwiki/code/10660
Author: vargenau
Date: 2021-11-19 08:17:57 +0000 (Fri, 19 Nov 2021)
Log Message:
-----------
Remove unused public
Modified Paths:
--------------
trunk/lib/plugin/CreateToc.php
Modified: trunk/lib/plugin/CreateToc.php
===================================================================
--- trunk/lib/plugin/CreateToc.php 2021-11-18 14:39:10 UTC (rev 10659)
+++ trunk/lib/plugin/CreateToc.php 2021-11-19 08:17:57 UTC (rev 10660)
@@ -42,8 +42,6 @@
class WikiPlugin_CreateToc
extends WikiPlugin
{
- public $_markup;
-
function getDescription()
{
return _("Create a Table of Contents and automatically link to headers.");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|