SourceForge logo
SourceForge logo
Menu

phpwiki-checkins

Update of /cvsroot/phpwiki/phpwiki/lib
In directory usw-pr-cvs1:/tmp/cvs-serv4186/lib
Modified Files:
	editpage.php interwiki.php loadsave.php prepend.php 
	savepage.php stdlib.php transform.php 
Log Message:
log
Index: editpage.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/editpage.php,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** editpage.php	2001年02月13日 05:54:38	1.12
--- editpage.php	2001年02月14日 05:22:49	1.13
***************
*** 68,72 ****
 				 'name' => 'minor_edit',
 				 'value' => 'yes',
! 				 'checked' => ($do_archive == 'probably')));
 }
 
--- 68,72 ----
 				 'name' => 'minor_edit',
 				 'value' => 'yes',
! 				 'checked' => ($do_archive == 'maybe')));
 }
 
Index: interwiki.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/interwiki.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** interwiki.php	2001年02月12日 01:43:10	1.2
--- interwiki.php	2001年02月14日 05:22:49	1.3
***************
*** 26,57 ****
 
 list( $wiki, $page ) = split( ":", $link );
! 
 $url = $interwikimap[$wiki] . urlencode($page);
! return LinkURL($url, $linktext ? $linktext : $link);
 }
 
 // Link InterWiki links
 // These can be protected by a '!' like Wiki words.
! function wtt_interwikilinks($line, &$trfrm)
 {
 global $InterWikiLinkRegexp, $WikiNameRegexp;
- 
- $n = $ntok = $trfrm->tokencounter;
- 
- // FIXME: perhaps WikiNameRegexp is a bit too restrictive?
- $line = wt_tokenize($line, "!?(?<![A-Za-z0-9])$InterWikiLinkRegexp:$WikiNameRegexp",
- 		 $trfrm->replacements, $ntok);
- while ($n < $ntok) {
- $old = $trfrm->replacements[$n];
- if ($old[0] == '!') {
- 	 $trfrm->replacements[$n] = substr($old,1);
- } else {
- 	 $trfrm->replacements[$n] = LinkInterWikiLink($old);
- }
- $n++;
- }
 
! $trfrm->tokencounter = $ntok;
! return $line;
 }
 
--- 26,53 ----
 
 list( $wiki, $page ) = split( ":", $link );
! 
 $url = $interwikimap[$wiki] . urlencode($page);
! 
! if ($linktext)
! $linktext = htmlspecialchars($linktext);
! else
! $linktext = Element('span', array('class' => 'interwiki'),
! 			 htmlspecialchars("$wiki:") .
! 			 QElement('span', array('class' => 'wikiword'), $page));
! 
! return Element('a', array('href' => $url,
! 			 'class' => 'interwikilink'),
! 		 $linktext);
 }
 
 // Link InterWiki links
 // These can be protected by a '!' like Wiki words.
! function wtt_interwikilinks($match, &$trfrm)
 {
 global $InterWikiLinkRegexp, $WikiNameRegexp;
 
! if ($match[0] == "!")
! return htmlspecialchars(substr($match,1));
! return LinkInterWikiLink($match);
 }
 
Index: loadsave.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/loadsave.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** loadsave.php	2001年02月13日 05:54:38	1.2
--- loadsave.php	2001年02月14日 05:22:49	1.3
***************
*** 373,379 ****
 echo "<dl>\n";
 
! LoadAny($dbi, SearchPath(WIKI_PGSRC));
 if ($LANG != "C")
! LoadAny($dbi, SearchPath(DEFAULT_WIKI_PGSRC), $GenericPages);
 
 echo "</dl>\n";
--- 373,381 ----
 echo "<dl>\n";
 
! $ignore = array(gettext('RecentChanges'));
! 
! LoadAny($dbi, SearchPath(WIKI_PGSRC), false, $ignore);
 if ($LANG != "C")
! LoadAny($dbi, SearchPath(DEFAULT_WIKI_PGSRC), $GenericPages, $ignore);
 
 echo "</dl>\n";
Index: prepend.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/prepend.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** prepend.php	2001年02月13日 05:54:38	1.1
--- prepend.php	2001年02月14日 05:22:49	1.2
***************
*** 2,6 ****
 /* lib/prepend.php
 *
! * Things which must be done before all else.
 */
 $RCS_IDS = '';
--- 2,6 ----
 /* lib/prepend.php
 *
! * Things which must be done and defined before anything else.
 */
 $RCS_IDS = '';
***************
*** 113,116 ****
--- 113,135 ----
 
 PostponeErrorMessages(E_ALL);
+ 
+ 
+ function SearchPath ($file, $missing_ok = false, $path = false) 
+ {
+ if (ereg('^/', $file))
+ return $file;		// absolute path.
+ 
+ if (!$path)
+ $path = $GLOBALS['DataPath'];
+ 
+ while (list($i, $dir) = each($path))
+ {
+ if (file_exists("$dir/$file"))
+ 	 return "$dir/$file";
+ }
+ if ($missing_ok)
+ return false;
+ ExitWiki("$file: file not found");
+ }
 
 // For emacs users
Index: savepage.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/savepage.php,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** savepage.php	2001年02月13日 05:54:38	1.12
--- savepage.php	2001年02月14日 05:22:49	1.13
***************
*** 77,81 ****
 // create page header
 $html = sprintf(gettext("Thank you for editing %s."),
! 		 WikiURL($pagename));
 $html .= "<br>\n";
 
--- 77,81 ----
 // create page header
 $html = sprintf(gettext("Thank you for editing %s."),
! 		 LinkExistingWikiWord($pagename));
 $html .= "<br>\n";
 
Index: stdlib.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/stdlib.php,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -r1.29 -r1.30
*** stdlib.php	2001年02月13日 05:54:38	1.29
--- stdlib.php	2001年02月14日 05:22:49	1.30
***************
*** 42,62 ****
 }
 
- function SearchPath ($file, $missing_ok = false, $path = false) 
- {
- if (ereg('^/', $file))
- return $file;		// absolute path.
- 
- if (!$path)
- $path = $GLOBALS['DataPath'];
- 
- while (list($i, $dir) = each($path))
- {
- if (file_exists("$dir/$file"))
- 	 return "$dir/$file";
- }
- if ($missing_ok)
- return false;
- ExitWiki("$file: file not found");
- }
 
 function arrays_equal ($a, $b) 
--- 42,45 ----
***************
*** 70,76 ****
 }
 
- 
- 
- 
 
 function DataURL($url) {
--- 53,56 ----
***************
*** 106,109 ****
--- 86,106 ----
 }
 
+ function StartTag($tag, $args = '')
+ {
+ $s = '';
+ if (is_array($args))
+ {
+ while (list($key, $val) = each($args))
+ {
+ 	 if (is_string($val) || is_numeric($val))
+ 	 $s .= sprintf(' %s="%s"', $key, htmlspecialchars($val));
+ 	 else if ($val)
+ 	 $s .= " $key";
+ }
+ }
+ return "<$tag $s>";
+ }
+ 
+ 
 define('NO_END_TAG_PAT',
 	 '/^' . join('|', array('area', 'base', 'basefont',
***************
*** 112,137 ****
 				 'isindex', 'link', 'meta',
 				 'param')) . '$/i');
! 	 
 function Element($tag, $args = '', $content = '')
 {
 $html = "<$tag";
! if (is_array($args))
 {
- 	 while (list($key, $val) = each($args))
- 	 {
- 	 if (is_string($val) || is_numeric($val))
- 	 $html .= sprintf(' %s="%s"', $key, htmlspecialchars($val));
- 	 else if ($val)
- 	 $html .= " $key";
- 	 }
- }
- else
 	 $content = $args;
! 
! $html .= '>';
 if (!preg_match(NO_END_TAG_PAT, $tag))
 {
 	 $html .= $content;
! 	 $html .= "</$tag>\n";//FIXME: newline might not always be desired.
 }
 return $html;
--- 109,126 ----
 				 'isindex', 'link', 'meta',
 				 'param')) . '$/i');
! 
 function Element($tag, $args = '', $content = '')
 {
 $html = "<$tag";
! if (!is_array($args))
 {
 	 $content = $args;
! 	 $args = false;
! }
! $html = StartTag($tag, $args);
 if (!preg_match(NO_END_TAG_PAT, $tag))
 {
 	 $html .= $content;
! 	 $html .= "</$tag>";//FIXME: newline might not always be desired.
 }
 return $html;
***************
*** 154,175 ****
 return "<b><u>BAD URL -- remove all of &lt;, &gt;, &quot;</u></b>";
 }
! return QElement('a', array('href' => $url), ($linktext ? $linktext : $url));
 }
 
! function LinkExistingWikiWord($wikiword, $linktext='', $class = 'wikiword') {
 return Element('a', array('href' => WikiURL($wikiword),
! 				'class' => $class),
! 		 $linktext ? $linktext : $wikiword);
 }
 
! function LinkUnknownWikiWord($wikiword, $linktext='', $class = 'unknownwikiword') {
 if (empty($linktext))
! 	 $linktext = $wikiword;
 
! return Element('span', array('class' => 'unknownwikiword'),
! 		 QElement('u', array('class' => 'unknownwikiword'), $linktext) .
 		 QElement('a',
 			 array('href' => WikiURL($wikiword, array('action' => 'edit')),
! 				 'class' => 'unknownwikiword'),
 			 '?'));
 }
--- 143,180 ----
 return "<b><u>BAD URL -- remove all of &lt;, &gt;, &quot;</u></b>";
 }
! 
! 
! if (empty($linktext))
! 	 $linktext = QElement('span', array('class' => 'rawurl'), $url);
! else
! 	 $linktext = htmlspecialchars($linktext);
! 
! return Element('a',
! 		 array('href' => $url, 'class' => 'linkurl'),
! 		 $linktext);
 }
 
! function LinkExistingWikiWord($wikiword, $linktext='') {
! if (empty($linktext))
! 	 $linktext = QElement('span', array('class' => 'wikiword'), $wikiword);
! else
! 	 $linktext = htmlspecialchars($linktext);
! 
 return Element('a', array('href' => WikiURL($wikiword),
! 				'class' => 'wikilink'),
! 		 $linktext);
 }
 
! function LinkUnknownWikiWord($wikiword, $linktext='') {
 if (empty($linktext))
! 	 $linktext = QElement('span', array('class' => 'wikiword'), $wikiword);
! else
! 	 $linktext = htmlspecialchars($linktext);
 
! return Element('span', array('class' => 'wikiunknown'),
! 		 Element('u', $linktext) .
 		 QElement('a',
 			 array('href' => WikiURL($wikiword, array('action' => 'edit')),
! 				 'class' => 'wikiunknown'),
 			 '?'));
 }
***************
*** 225,232 ****
 
 
! function MakeWikiForm ($pagename, $args, $button_text = '')
 {
 $formargs['action'] = USE_PATH_INFO ? WikiURL($pagename) : SCRIPT_NAME;
 $formargs['method'] = 'post';
 $contents = '';
 $input_seen = 0;
--- 230,239 ----
 
 
! function MakeWikiForm ($pagename, $args, $class, $button_text = '')
 {
 $formargs['action'] = USE_PATH_INFO ? WikiURL($pagename) : SCRIPT_NAME;
 $formargs['method'] = 'post';
+ $formargs['class'] = $class;
+ 
 $contents = '';
 $input_seen = 0;
***************
*** 264,268 ****
 
 return Element('form', $formargs,
! 		 Element('table',
 			 Element('tr', $row)));
 }
--- 271,275 ----
 
 return Element('form', $formargs,
! 		 Element('table', array('cellspacing' => 0, 'cellpadding' => 2, 'border' => 0),
 			 Element('tr', $row)));
 }
***************
*** 301,320 ****
 }
 
 
! // FIXME: ug, don't like this
! 
! if (!empty($args['action']) && !IsSafeAction($args['action']))
 {
 // Don't allow administrative links on unlocked pages.
 	 global $pagehash;
 	 if (($pagehash['flags'] & FLAG_PAGE_LOCKED) == 0)
! 	 return QElement('u', gettext('Lock page to enable link'));
 }
 
 // FIXME: ug, don't like this
 if (preg_match('/=\d*\(/', $qargs))
! 	 return MakeWikiForm($page, $args, $text);
 else
! 	 return LinkURL(WikiURL($page, $args), $text ? $text : $url);
 }
 
--- 308,344 ----
 }
 
+ if ($args['action'] == 'browse')
+ 	 unset($args['action']);
 
! if (empty($args['action']))
! 	 $class = 'wikilink';
! else if (IsSafeAction($args['action']))
! 	 $class = 'wikiaction';
! else
 {
 // Don't allow administrative links on unlocked pages.
+ 	 // FIXME: Ugh: don't like this...
 	 global $pagehash;
 	 if (($pagehash['flags'] & FLAG_PAGE_LOCKED) == 0)
! 	 return QElement('u', array('class' => 'wikiunsafe'),
! 			 gettext('Lock page to enable link'));
! 
! 	 $class = 'wikiadmin';
 }
 
 // FIXME: ug, don't like this
 if (preg_match('/=\d*\(/', $qargs))
! 	 return MakeWikiForm($page, $args, $class, $text);
 else
! {
! 	 if ($text)
! 	 $text = htmlspecialchars($text);
! 	 else
! 	 $text = QElement('span', array('class' => 'rawurl'), $url);
! 			 
! 	 return Element('a', array('href' => WikiURL($page, $args),
! 				 'class' => $class),
! 			$text);
! }
 }
 
***************
*** 520,523 ****
--- 544,548 ----
 _dotoken('PAGE', htmlspecialchars($name), $page);
 _dotoken('LOGO', htmlspecialchars(DataURL($logo)), $page);
+ _dotoken('CSS_URL', htmlspecialchars(DataURL(CSS_URL)), $page);
 
 _dotoken('RCS_IDS', $GLOBALS['RCS_IDS'], $page);
***************
*** 572,585 ****
 // this shouldn't be necessary, since PhpWiki loads 
 // default pages if this is a new baby Wiki
- if ($recentchanges == -1) {
- $recentchanges = array(); 
- }
- 
 $now = time();
 $today = date($dateformat, $now);
 
 if (date($dateformat, $recentchanges['lastmodified']) != $today) {
 $isNewDay = TRUE;
- $recentchanges['lastmodified'] = $now;
 } else {
 $isNewDay = FALSE;
--- 597,622 ----
 // this shouldn't be necessary, since PhpWiki loads 
 // default pages if this is a new baby Wiki
 $now = time();
 $today = date($dateformat, $now);
 
+ if (!is_array($recentchanges)) {
+ $recentchanges = array('version' => 1,
+ 			 'created' => $now,
+ 			 'lastmodified' => $now - 48 * 4600, // force $isNewDay
+ 			 'flags' => FLAG_PAGE_LOCKED,
+ 			 'author' => $GLOBALS['user']->id());
+ $recentchanges['content']
+ 	 = array(gettext("The most recently changed pages are listed below."),
+ 		 '',
+ 		 "____$today " . gettext("(first day for this Wiki)"),
+ 		 '',
+ 		 gettext("Quick title search:"),
+ 		 '[phpwiki:?action=search&searchterm=()]',
+ 		 '----');
+ }
+ $recentchanges['lastmodified'] = $now;
+ 
 if (date($dateformat, $recentchanges['lastmodified']) != $today) {
 $isNewDay = TRUE;
 } else {
 $isNewDay = FALSE;
Index: transform.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/transform.php,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -r1.15 -r1.16
*** transform.php	2001年02月12日 01:43:10	1.15
--- transform.php	2001年02月14日 05:22:49	1.16
***************
*** 1,7 ****
 <?php rcs_id('$Id$');
 
 define('WT_TOKENIZER', 1);
! define('WT_SIMPLE_MARKUP', 2);
! define('WT_MODE_MARKUP', 3);
 
 define("ZERO_LEVEL", 0);
--- 1,7 ----
 <?php rcs_id('$Id$');
 
+ define('WT_SIMPLE_MARKUP', 0);
 define('WT_TOKENIZER', 1);
! define('WT_MODE_MARKUP', 2);
 
 define("ZERO_LEVEL", 0);
***************
*** 13,27 ****
 function WikiTransform() -- init
 
! function register($type, $function)
 	Registers transformer functions
 	This should be done *before* calling do_transform
 
! 	$type ... one of WT_TOKENIZER, WT_SIMPLE_MARKUP, WT_MODE_MARKUP
! 		 Currently on WT_MODE_MARKUP has a special meaning.
! 		 If one WT_MODE_MARKUP really sets the html mode, then
 		 all successive WT_MODE_MARKUP functions are skipped
! 
! 	$function ... function name
! 
 function SetHTMLMode($tag, $tagtype, $level)
 	Wiki HTML output can, at any given time, be in only one mode.
--- 13,35 ----
 function WikiTransform() -- init
 
! function register($type, $function, [$regexp])
 	Registers transformer functions
 	This should be done *before* calling do_transform
 
! 	$type:
! 	 WT_MODE_MARKUP
! 	 If one WT_MODE_MARKUP really sets the html mode, then
 		 all successive WT_MODE_MARKUP functions are skipped
! WT_TOKENIZER
! 		 The transformer function is called once for each match
! 		 of the $regexp in the line. The matched values are tokenized
! 		 to protect them from further transformation.
! 
! 	$function: function name
! 
! $regexp: Required for WT_TOKENIZER functions. Optional for others.
! 	 If given, the transformer function will only be called if the
! 		 line matches the $regexp.
! 	
 function SetHTMLMode($tag, $tagtype, $level)
 	Wiki HTML output can, at any given time, be in only one mode.
***************
*** 32,35 ****
--- 40,45 ----
 
 	$tag ... HTML tag to insert
+ 	 If $tag is an array, first element give tag, second element
+ 		 is a hash containing arguments for the tag.
 	$tagtype ... ZERO_LEVEL - close all open tags before inserting $tag
 		 NESTED_LEVEL - close tags until depths match
***************
*** 48,53 ****
 var $linenumber;	// current linenumber
 var $replacements;	// storage for tokenized strings of current line
! var $tokencounter;	// counter of $replacements array
! 
 // private variables
 var $content;	// wiki markup, array of lines
--- 58,64 ----
 var $linenumber;	// current linenumber
 var $replacements;	// storage for tokenized strings of current line
! var $user_data;	// can be used by the transformer functions
! // to store miscellaneous data.
! 
 // private variables
 var $content;	// wiki markup, array of lines
***************
*** 64,70 ****
 
 // register transformation functions
! function register($type, $function)
 {
! $this->trfrm_func[] = array ($type, $function);
 }
 
--- 75,81 ----
 
 // register transformation functions
! function register($type, $function, $regexp = false)
 {
! $this->trfrm_func[] = array ($type, $function, $regexp);
 }
 
***************
*** 73,80 ****
 function SetHTMLMode($tag, $tagtype, $level)
 {
 $this->mode_set = 1;	// in order to prevent other mode markup
 				// to be executed
 $retvar = '';
! 
 if ($tagtype == ZERO_LEVEL) {
 // empty the stack until $level == 0;
--- 84,99 ----
 function SetHTMLMode($tag, $tagtype, $level)
 {
+ if (is_array($tag)) {
+ 	 $args = $tag[1];
+ 	 $tag = $tag[0];
+ }
+ else {
+ 	 $args = array();
+ }
+ 
 $this->mode_set = 1;	// in order to prevent other mode markup
 				// to be executed
 $retvar = '';
! 	 
 if ($tagtype == ZERO_LEVEL) {
 // empty the stack until $level == 0;
***************
*** 88,92 ****
 
 if ($tag) {
! $retvar .= "<$tag>\n";
 $this->stack->push($tag);
 }
--- 107,111 ----
 
 if ($tag) {
! $retvar .= StartTag($tag, $args) . "\n";
 $this->stack->push($tag);
 }
***************
*** 110,114 ****
 	 if ($tag != $this->stack->top()) {
 	 $closetag = $this->stack->pop();
! 	 $retvar .= "</$closetag><$tag>\n";
 	 $this->stack->push($tag);
 	 }
--- 129,133 ----
 	 if ($tag != $this->stack->top()) {
 	 $closetag = $this->stack->pop();
! 	 $retvar .= "</$closetag>" . StartTag($tag, $args) . "\n";
 	 $this->stack->push($tag);
 	 }
***************
*** 118,122 ****
 // stack might be zero
 while ($this->stack->cnt() < $level) {
! $retvar .= "<$tag>\n";
 $this->stack->push($tag);
 if ($this->stack->cnt() > 10) {
--- 137,141 ----
 // stack might be zero
 while ($this->stack->cnt() < $level) {
! $retvar .= StartTag($tag, $args) . "\n";
 $this->stack->push($tag);
 if ($this->stack->cnt() > 10) {
***************
*** 131,135 ****
 }
 
! return $retvar;
 }
 // end SetHTMLMode
--- 150,154 ----
 }
 
! return $this->token($retvar);
 }
 // end SetHTMLMode
***************
*** 143,153 ****
 
 $this->content = $content;
! 
 // Loop over all lines of the page and apply transformation rules
 $numlines = count($this->content);
 for ($lnum = 0; $lnum < $numlines; $lnum++)
 {
! 	 $this->tokencounter = 0;
! 	 $this->replacements = array();
 	 $this->linenumber = $lnum;
 	 $line = $this->content[$lnum];
--- 162,173 ----
 
 $this->content = $content;
! $this->replacements = array();
! $this->user_data = array();
! 
 // Loop over all lines of the page and apply transformation rules
 $numlines = count($this->content);
 for ($lnum = 0; $lnum < $numlines; $lnum++)
 {
! 	 
 	 $this->linenumber = $lnum;
 	 $line = $this->content[$lnum];
***************
*** 164,181 ****
 	 // tokenizers, markup, html mode, ...
 	 // functions are executed in order of registering
! 	 for ($func = 0; $func < count($this->trfrm_func); $func++) {
 	 // if HTMLmode is already set then skip all following
 	 // WT_MODE_MARKUP functions
! 	 if ($this->mode_set &&
! 	 ($this->trfrm_func[$func][0] == WT_MODE_MARKUP)) {
 	 continue;
- 	 }
- 	 // call registered function
- 	 $line = $this->trfrm_func[$func][1]($line, $this);
- 	 }
 
! 	 // Replace tokens ($replacements was filled by wtt_* functions)
! 	 for ($i = 0; $i < $this->tokencounter; $i++) {
! 	 $line = str_replace($FieldSeparator.$FieldSeparator.$i.$FieldSeparator, $this->replacements[$i], $line);
 	 }
 
--- 184,204 ----
 	 // tokenizers, markup, html mode, ...
 	 // functions are executed in order of registering
! 	 for (reset($this->trfrm_func);
! 	 list($flags, $func, $regexp) = current($this->trfrm_func);
! 	 next($this->trfrm_func)) {
! 
 	 // if HTMLmode is already set then skip all following
 	 // WT_MODE_MARKUP functions
! 	 if ($this->mode_set && ($flags & WT_MODE_MARKUP) != 0) 
 	 continue;
 
! 	 if (!empty($regexp) && !preg_match("/$regexp/", $line))
! 	 continue;
! 
! 	 // call registered function
! 	 if (($flags & WT_TOKENIZER) != 0)
! 	 $line = $this->tokenize($line, $regexp, $func);
! 	 else
! 	 $line = $func($line, $this);
 	 }
 
***************
*** 185,210 ****
 $html .= $this->SetHTMLMode('', ZERO_LEVEL, 0);
 
! return $html;
 }
 // end do_transfrom()
 
 }
 // end class WikiTransform
 
 
! //////////////////////////////////////////////////////////
 
! $transform = new WikiTransform;
 
! // register functions
! // functions are applied in order of registering
 
! $transform->register(WT_TOKENIZER, 'wtt_bracketlinks');
! $transform->register(WT_TOKENIZER, 'wtt_urls');
! if (function_exists('wtt_interwikilinks')) {
! $transform->register(WT_TOKENIZER, 'wtt_interwikilinks');
! }
! $transform->register(WT_TOKENIZER, 'wtt_bumpylinks');
 
 $transform->register(WT_SIMPLE_MARKUP, 'wtm_htmlchars');
 $transform->register(WT_SIMPLE_MARKUP, 'wtm_linebreak');
--- 208,275 ----
 $html .= $this->SetHTMLMode('', ZERO_LEVEL, 0);
 
! return $this->untokenize($html);
 }
 // end do_transfrom()
 
+ // Register a new token.
+ function token($repl) {
+ global $FieldSeparator;
+ $tok = $FieldSeparator . sizeof($this->replacements) . $FieldSeparator;
+ $this->replacements[] = $repl;
+ return $tok;
+ }
+ 
+ // helper function which does actual tokenizing
+ function tokenize($str, $pattern, $func) {
+ // Find any strings in $str that match $pattern and
+ // store them in $orig, replacing them with tokens
+ // starting at number $ntokens - returns tokenized string
+ $new = ''; 
+ while (preg_match("/^(.*?)($pattern)/", $str, $matches)) {
+ 	 $str = substr($str, strlen($matches[0]));
+ 	 $new .= $matches[1] . $this->token($func($matches[2], $this));
+ }
+ return $new . $str;
+ }
+ 
+ function untokenize($line) {
+ global $FieldSeparator;
+ 
+ $chunks = explode ($FieldSeparator, "$line ");
+ $line = $chunks[0];
+ for ($i = 1; $i < count($chunks); $i += 2)
+ {
+ 	 $tok = $chunks[$i];
+ 	 $line .= $this->replacements[$tok] . $chunks[$i + 1];
+ }
+ return $line;
+ }
 }
 // end class WikiTransform
 
 
! //////////////////////////////////////////////////////////
 
! $transform = new WikiTransform;
 
! // register functions
! // functions are applied in order of registering
 
! $transform->register(WT_TOKENIZER, 'wtt_doublebrackets', '\[\[');
! $transform->register(WT_TOKENIZER, 'wtt_footnotes', '^\[\d+\]');
! $transform->register(WT_TOKENIZER, 'wtt_footnoterefs', '\[\d+\]');
! $transform->register(WT_TOKENIZER, 'wtt_bracketlinks', '\[.+?\]');
! $transform->register(WT_TOKENIZER, 'wtt_urls',
! 		 "!?\b($AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]");
! 
! if (function_exists('wtt_interwikilinks')) {
! $transform->register(WT_TOKENIZER, 'wtt_interwikilinks',
! 			"!?(?<![A-Za-z0-9])$InterWikiLinkRegexp:$WikiNameRegexp");
! }
! $transform->register(WT_TOKENIZER, 'wtt_bumpylinks', "!?$WikiNameRegexp");
 
+ if (function_exists('wtm_table')) {
+ $transform->register(WT_MODE_MARKUP, 'wtm_table', '^\|');
+ }
 $transform->register(WT_SIMPLE_MARKUP, 'wtm_htmlchars');
 $transform->register(WT_SIMPLE_MARKUP, 'wtm_linebreak');
***************
*** 224,228 ****
 $html = $transform->do_transform($html, $pagehash['content']);
 
- 
 /*
 Requirements for functions registered to WikiTransform:
--- 289,292 ----
***************
*** 249,357 ****
 // Tokenizer functions
 
- // helper function which does actual tokenizing and is
- // called by other wtt_* functions
- function wt_tokenize($str, $pattern, &$orig, &$ntokens) {
- global $FieldSeparator;
- // Find any strings in $str that match $pattern and
- // store them in $orig, replacing them with tokens
- // starting at number $ntokens - returns tokenized string
- $new = ''; 
- while (preg_match("/^(.*?)($pattern)/", $str, $matches)) {
- $linktoken = $FieldSeparator . $FieldSeparator . ($ntokens++) . $FieldSeparator;
- $new .= $matches[1] . $linktoken;
- 	 $orig[] = $matches[2];
- $str = substr($str, strlen($matches[0]));
- }
- $new .= $str;
- return $new;
- }
- 
 
! // New linking scheme: links are in brackets. This will
! // emulate typical HTML linking as well as Wiki linking.
! function wtt_bracketlinks($line, &$trfrm)
! {
! static $footnotes = array();
 
! // protecting [[
! $n = $ntok = $trfrm->tokencounter;
! $line = wt_tokenize($line, '\[\[', $trfrm->replacements, $ntok);
! while ($n < $ntok) {
! $trfrm->replacements[$n++] = '[';
! }
! 
! // match anything else between brackets 
! $line = wt_tokenize($line, '\[.+?\]', $trfrm->replacements, $ntok);
! while ($n < $ntok) {
! 	$link = ParseAndLink($trfrm->replacements[$n]);
! 	if (strpos($link['type'], 'footnote') === false) {
! 	 $trfrm->replacements[$n] = $link['link'];
! 	} else {
! 	 $ftnt = $link['link'];
! 	 if (isset($footnotes[$ftnt])) {
! 	 $trfrm->replacements[$n] = "<A NAME=\"footnote-$ftnt\"></A><A HREF=\"#footnote-rev-$ftnt\">[$ftnt]</A>";
! 	 } else { // first encounter of [x]
! 	 $trfrm->replacements[$n] = "<A NAME=\"footnote-rev-$ftnt\"></A><SUP><A HREF=\"#footnote-$ftnt\">[$ftnt]</A></SUP>";
! 	 $footnotes[$ftnt] = 1;
! 	 }
! 	}
! 	$n++;
! }
 
! $trfrm->tokencounter = $ntok;
! return $line;
 }
 
 
! // replace all URL's with tokens, so we don't confuse them
! // with Wiki words later. Wiki words in URL's break things.
! // URLs preceeded by a '!' are not linked
! function wtt_urls($line, &$trfrm)
! {
! global $AllowedProtocols;
 
! $n = $ntok = $trfrm->tokencounter;
! $line = wt_tokenize($line, "!?\b($AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]", $trfrm->replacements, $ntok);
! while ($n < $ntok) {
! if($trfrm->replacements[$n][0] == '!')
! 	 $trfrm->replacements[$n] = substr($trfrm->replacements[$n], 1);
! 	else
! 	 $trfrm->replacements[$n] = LinkURL($trfrm->replacements[$n]);
! $n++;
! }
 
! $trfrm->tokencounter = $ntok;
! return $line;
 }
! 
 
 
 
- // Link Wiki words (BumpyText)
- // Wikiwords preceeded by a '!' are not linked
- function wtt_bumpylinks($line, &$trfrm)
- {
- global $WikiNameRegexp, $dbi;
 
! $n = $ntok = $trfrm->tokencounter;
! $line = wt_tokenize($line, "!?$WikiNameRegexp", $trfrm->replacements, $ntok);
! while ($n < $ntok) {
! $old = $trfrm->replacements[$n];
! if ($old[0] == '!') {
! 	 $trfrm->replacements[$n] = substr($old,1);
! 	} elseif (IsWikiPage($dbi, $old)) {
! 	 $trfrm->replacements[$n] = LinkExistingWikiWord($old);
! 	} else {
! 	 $trfrm->replacements[$n] = LinkUnknownWikiWord($old);
! 	}
! 	$n++;
! }
 
! $trfrm->tokencounter = $ntok;
! return $line;
! }
 
! // end of tokenizer functions
! //////////////////////////////////////////////////////////
 
 
--- 313,405 ----
 // Tokenizer functions
 
 
! function wtt_doublebrackets($match, &$trfrm)
! {
! return '[';
! }
 
! function wtt_footnotes($match, &$trfrm)
! {
! // FIXME: should this set HTML mode?
! $ftnt = trim(substr($match,1,-1)) + 0;
! $fntext = "[$ftnt]";
! $html = "<br>";
! 
! $fnlist = $trfrm->user_data['footnotes'][$ftnt];
! if (!is_array($fnlist))
! return $html . $fntext;	
! 
! $trfrm->user_data['footnotes'][$ftnt] = 'footnote_seen';
 
! while (list($k, $anchor) = each($fnlist))
! {
! $html .= Element("a", array("name" => "footnote-$ftnt",
! 				 "href" => "#$anchor",
! 				 "class" => "footnote-rev"),
! 			$fntext);
! $fntext = '+';
 }
+ return $html;
+ }
 
+ function wtt_footnoterefs($match, &$trfrm)
+ {
+ $ftnt = trim(substr($match,1,-1)) + 0;
 
! $footnote_definition_seen = false;
 
! if (empty($trfrm->user_data['footnotes']))
! $trfrm->user_data['footnotes'] = array();
! if (empty($trfrm->user_data['footnotes'][$ftnt]))
! $trfrm->user_data['footnotes'][$ftnt] = array();
! else if (!is_array($trfrm->user_data['footnotes'][$ftnt]))
! $footnote_definition_seen = true;
! 
 
! $args['href'] = "#footnote-$ftnt";
! if (!$footnote_definition_seen)
! {
! $args['name'] = "footrev-$ftnt-" .
! 	 count($trfrm->user_data['footnotes'][$ftnt]);
! $trfrm->user_data['footnotes'][$ftnt][] = $args['name'];
 }
! 
! return Element('sup', array('class' => 'footnote'),
! 		 QElement("a", $args, "[$ftnt]"));
! }
 
+ function wtt_bracketlinks($match, &$trfrm)
+ {
+ $link = ParseAndLink($match);
+ return $link["link"];
+ }
 
 
 
! // replace all URL's with tokens, so we don't confuse them
! // with Wiki words later. Wiki words in URL's break things.
! // URLs preceeded by a '!' are not linked
! function wtt_urls($match, &$trfrm)
! {
! if ($match[0] == "!")
! return htmlspecialchars(substr($match,1));
! return LinkURL($match);
! }
 
! // Link Wiki words (BumpyText)
! // Wikiwords preceeded by a '!' are not linked
! function wtt_bumpylinks($match, &$trfrm)
! {
! global $dbi;
! if ($match[0] == "!")
! return htmlspecialchars(substr($match,1));
! // FIXME: make a LinkWikiWord() function?
! if (IsWikiPage($dbi, $match))
! return LinkExistingWikiWord($match);
! return LinkUnknownWikiWord($match);
! }
 
! // end of tokenizer functions
! //////////////////////////////////////////////////////////
 
 
***************
*** 491,494 ****
--- 539,579 ----
 return $line;
 }
+ 
+ // markup for tables
+ function wtm_table($line, &$trfrm)
+ {
+ $row = '';
+ while (preg_match('/^(\|+)(v*)([<>^]?)([^|]*)/', $line, $m))
+ {
+ $line = substr($line, strlen($m[0]));
+ $td = array();
+ 
+ if (strlen($m[1]) > 1)
+ 	 $td['colspan'] = strlen($m[1]);
+ if (strlen($m[2]) > 0)
+ 	 $td['rowspan'] = strlen($m[2]) + 1;
+ 
+ if ($m[3] == '<')
+ 	 $td['align'] = 'left';
+ else if ($m[3] == '>')
+ 	 $td['align'] = 'right';
+ else
+ 	 $td['align'] = 'center';
+ 
+ $row .= $trfrm->token(StartTag('td', $td) . "&nbsp;");
+ $row .= trim($m[4]);
+ $row .= $trfrm->token("&nbsp;</td>");
+ }
+ assert(empty($line));
+ $row = $trfrm->token("<tr>") . $row . $trfrm->token("</tr>");
+ 
+ return $trfrm->SetHTMLMode(array('table',
+ 				 array('align' => 'center',
+ 					 'cellpadding' => 1,
+ 					 'cellspacing' => 1,
+ 					 'border' => 1)),
+ 			 ZERO_LEVEL, 0) .
+ $row;
+ }
 
 // four or more dashes to <hr>
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /