--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/wikiengine/Render/Xhtml/List.php Wed Jun 13 16:07:17 2007 -0400
@@ -0,0 +1,172 @@
+<?php
+// vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
+/**
+ * List rule end renderer for Xhtml
+ *
+ * PHP versions 4 and 5
+ *
+ * @category Text
+ * @package Text_Wiki
+ * @author Paul M. Jones <pmjones@php.net>
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id: List.php,v 1.9 2005/11/06 10:38:22 toggg Exp $
+ * @link http://pear.php.net/package/Text_Wiki
+ */
+
+/**
+ * This class renders bullet and ordered lists in XHTML.
+ *
+ * @category Text
+ * @package Text_Wiki
+ * @author Paul M. Jones <pmjones@php.net>
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/Text_Wiki
+ */
+class Text_Wiki_Render_Xhtml_List extends Text_Wiki_Render {
+
+ var $conf = array(
+ 'css_ol' => null,
+ 'css_ol_li' => null,
+ 'css_ul' => null,
+ 'css_ul_li' => null
+ );
+
+ /**
+ *
+ * Renders a token into text matching the requested format.
+ *
+ * This rendering method is syntactically and semantically compliant
+ * with XHTML 1.1 in that sub-lists are part of the previous list item.
+ *
+ * @access public
+ *
+ * @param array $options The "options" portion of the token (second
+ * element).
+ *
+ * @return string The text rendered from the token options.
+ *
+ */
+
+ function token($options)
+ {
+ // make nice variables (type, level, count)
+ extract($options);
+
+ // set up indenting so that the results look nice; we do this
+ // in two steps to avoid str_pad mathematics. ;-)
+ $pad = str_pad('', $level, "\t");
+ $pad = str_replace("\t", ' ', $pad);
+
+ switch ($type) {
+
+ case 'bullet_list_start':
+
+ // build the base HTML
+ $css = $this->formatConf(' class="%s"', 'css_ul');
+ $html = "<ul$css>";
+
+ /*
+ // if this is the opening block for the list,
+ // put an extra newline in front of it so the
+ // output looks nice.
+ if ($level == 0) {
+ $html = "\n$html";
+ }
+ */
+
+ // done!
+ return $html;
+ break;
+
+ case 'bullet_list_end':
+
+ // build the base HTML
+ $html = "</li>\n$pad</ul>";
+
+ // if this is the closing block for the list,
+ // put extra newlines after it so the output
+ // looks nice.
+ if ($level == 0) {
+ $html .= "\n\n";
+ }
+
+ // done!
+ return $html;
+ break;
+
+ case 'number_list_start':
+ if (isset($format)) {
+ $format = ' type="' . $format . '"';
+ } else {
+ $format = '';
+ }
+ // build the base HTML
+ $css = $this->formatConf(' class="%s"', 'css_ol');
+ $html = "<ol{$format}{$css}>";
+
+ /*
+ // if this is the opening block for the list,
+ // put an extra newline in front of it so the
+ // output looks nice.
+ if ($level == 0) {
+ $html = "\n$html";
+ }
+ */
+
+ // done!
+ return $html;
+ break;
+
+ case 'number_list_end':
+
+ // build the base HTML
+ $html = "</li>\n$pad</ol>";
+
+ // if this is the closing block for the list,
+ // put extra newlines after it so the output
+ // looks nice.
+ if ($level == 0) {
+ $html .= "\n\n";
+ }
+
+ // done!
+ return $html;
+ break;
+
+ case 'bullet_item_start':
+ case 'number_item_start':
+
+ // pick the proper CSS class
+ if ($type == 'bullet_item_start') {
+ $css = $this->formatConf(' class="%s"', 'css_ul_li');
+ } else {
+ $css = $this->formatConf(' class="%s"', 'css_ol_li');
+ }
+
+ // build the base HTML
+ $html = "\n$pad<li$css>";
+
+ // for the very first item in the list, do nothing.
+ // but for additional items, be sure to close the
+ // previous item.
+ if ($count > 0) {
+ $html = "</li>$html";
+ }
+
+ // done!
+ return $html;
+ break;
+
+ case 'bullet_item_end':
+ case 'number_item_end':
+ default:
+ // ignore item endings and all other types.
+ // item endings are taken care of by the other types
+ // depending on their place in the list.
+ return '';
+ break;
+ }
+ }
+}
+?>