viewgit/inc/functions.php:22 Function utf8_encode() is deprecated [8192]
Filename | |
---|---|
controllers/group_controller.php | |
controllers/static_controller.php | |
css/search.css | |
lib/wiki_parser.php | |
models/group_model.php | |
views/layouts/web_layout.php |
diff --git a/controllers/group_controller.php b/controllers/group_controller.php index 4716a347b..a744385e2 100644 --- a/controllers/group_controller.php +++ b/controllers/group_controller.php @@ -80,11 +80,14 @@ class GroupController extends Controller implements CrawlConstants $data[CSRF_TOKEN] = $this->generateCSRFToken($user_id); if(!$token_okay) { $keep_fields = array("a","f","just_group_id","just_user_id", - "just_thread", "limit", "num"); + "just_thread", "limit", "num", "arg", "page_name"); $request = $_REQUEST; $_REQUEST = array(); foreach($keep_fields as $field) { if(isset($request[$field])) { + if($field == "arg" && $request[$field] != "read") { + continue; + } $_REQUEST[$field] = $this->clean($request[$field], "string"); } @@ -240,12 +243,10 @@ class GroupController extends Controller implements CrawlConstants $i++; } if(is_string($page)) { - $page = $_REQUEST['page']; $page = str_replace("'", "'", $page); } if(isset($_REQUEST['group_id'])) { $group_id = $this->clean($_REQUEST['group_id'], "int"); - } else { $group_id = PUBLIC_GROUP_ID; } @@ -262,6 +263,8 @@ class GroupController extends Controller implements CrawlConstants $data["CAN_EDIT"] = true; } } + $read_address = "?c=group&a=wiki&arg=read&group_id=". + "$group_id&page_name="; if(isset($_REQUEST["arg"])) { switch($_REQUEST["arg"]) { @@ -278,7 +281,8 @@ class GroupController extends Controller implements CrawlConstants $group_id, $page_name, $page, $locale_tag, $edit_reason, tl('group_controller_page_created', $page_name), - tl('group_controller_page_discuss_here')); + tl('group_controller_page_discuss_here'), + $read_address); $data['SCRIPT'] .= "doMessage('<h1 class=\"red\" >". tl("group_controller_page_saved"). @@ -303,7 +307,7 @@ class GroupController extends Controller implements CrawlConstants $data["MODE"] = "show"; $default_history = false; $data["PAGE_NAME"] = $page_info["PAGE_NAME"]; - $parser = new WikiParser(); + $parser = new WikiParser($read_address); $parsed_page = $parser->parse($page_info["PAGE"]); $data["PAGE_ID"] = $page_id; $data[CSRF_TOKEN] = @@ -365,7 +369,7 @@ class GroupController extends Controller implements CrawlConstants $page_info["PAGE"], $locale_tag, tl('group_controller_page_revert_to', - date('c', $revert))); + date('c', $revert)), $read_address); $data['SCRIPT'] .= "doMessage('<h1 class=\"red\" >". tl("group_controller_page_reverted"). @@ -460,6 +464,12 @@ class GroupController extends Controller implements CrawlConstants $head = $document_parts[0]; $data["PAGE"] = $document_parts[1]; } + if($data['MODE'] == "read" && strpos($data["PAGE"], "`") !== false){ + if(isset($data["INCLUDE_SCRIPTS"])) { + $data["INCLUDE_SCRIPTS"] = array(); + } + $data["INCLUDE_SCRIPTS"][] = "math"; + } } return $data; } diff --git a/controllers/static_controller.php b/controllers/static_controller.php index 0c315ca24..c68711900 100644 --- a/controllers/static_controller.php +++ b/controllers/static_controller.php @@ -108,6 +108,12 @@ class StaticController extends Controller $page = "404"; $page_string = $this->getPage($page); } + if(strpos($page_string, "`") !== false){ + if(isset($data["INCLUDE_SCRIPTS"])) { + $data["INCLUDE_SCRIPTS"] = array(); + } + $data["INCLUDE_SCRIPTS"][] = "math"; + } $data['page'] = $page; $page_parts = explode("END_HEAD_VARS", $page_string); $static_view = $this->view("static"); diff --git a/css/search.css b/css/search.css index a26f21f02..b4d9b6d5a 100755 --- a/css/search.css +++ b/css/search.css @@ -94,14 +94,65 @@ p .indent { - text-indent:0.25in; + text-indent: 0.25in; +} + +span.indent1 +{ + margin-left: 0.25in; +} + +span.indent2 +{ + margin-left: 0.5in; +} + +span.indent3 +{ + margin-left: 0.75in; +} + +span.indent4 +{ + margin-left: 1in; +} + +span.indent5 +{ + margin-left: 1.25in; } .mobile .indent { - text-indent:10px; + text-indent: 10px; } +.mobile span.indent1 +{ + margin-left: 10px; +} + +.mobile span.indent2 +{ + margin-left: 20px; +} + +.mobile span.indent3 +{ + margin-left: 30px; +} + +.mobile span.indent4 +{ + margin-left: 40px; +} + +.mobile span.indent5 +{ + margin-left: 50px; +} + + .html-ltr .float-opposite { float: right; diff --git a/lib/wiki_parser.php b/lib/wiki_parser.php index 6951bf83a..aebff1f9c 100644 --- a/lib/wiki_parser.php +++ b/lib/wiki_parser.php @@ -55,6 +55,7 @@ class WikiParser implements CrawlConstants */ function __construct($base_address = "") { + //assume substitutions are applied after htmlentities called on string $substitutions = array( array('/(\A|\n)=\s*([^=]+)\s*=/', "\n<h1 id='$2'>$2</h1>"), @@ -99,6 +100,15 @@ class WikiParser implements CrawlConstants array("/{{lang[\||\-](.+?)\|(.+?)}}/si", "$1 → $2"), array("/{{convert\|(.+?)\|(.+?)\|(.+?)}}/si", "$1$2"), array("/{{IPA-(.+?)\|(.+?)}}/si", "(IPA $2)"), + array("/<blockquote>(.+?)<\/blockquote>/s", + "<blockquote>$1</blockquote>"), + array("/<pre>(.+?)<\/pre>/s", "<pre>$1</pre>"), + array("/<tt>(.+?)<\/tt>/s", "<tt>$1</tt>"), + array("/<u>(.+?)<\/u>/s", "<u>$1</u>"), + array("/<s>(.+?)<\/s>/s", "<s>$1</s>"), + array("/<math>(.+?)<\/math>/s", "`$1`"), + array("/<br(\s*\/)?>/", "<br />"), + array("/&nbsp;/", " "), array('/(\A|\n)\*(.+)(\n|\Z)/', "\n<li>$2</li>\n"), array('/(\A|\n)\*(.+)(\n|\Z)/', "\n<li>$2</li>\n"), array('/(\A|[^>])\n<li>/', "$1\n<ul>\n<li>"), @@ -130,6 +140,11 @@ class WikiParser implements CrawlConstants array('@</li></li>@', "</li>\n</ol>\n</li>"), array('/(\A|\n);([^:]+):([^\n]+)/', "<dl><dt>$2</dt>\n<dd>$3</dd></dl>\n"), + array('/(\A|\n):\s/', "<span class='indent1'> </span>"), + array('/(\A|\n)::\s/', "<span class='indent2'> </span>"), + array('/(\A|\n):::\s/', "<span class='indent3'> </span>"), + array('/(\A|\n)::::\s/', "<span class='indent4'> </span>"), + array('/(\A|\n)(:)+::::\s/', "<span class='indent5'> </span>"), array('/(\A|\n)----/', "$1<hr />"), array('/\r/', ""), ); @@ -154,6 +169,9 @@ class WikiParser implements CrawlConstants $head = $document_parts[0]; $document = $document_parts[1]; } + $document = preg_replace_callback( + "/<nowiki>(.+?)<\/nowiki>/s", + "base64EncodeCallback", $document); $toc = $this->makeTableOfContents($document); list($document, $references) = $this->makeReferences($document); $document = preg_replace_callback('/(\A|\n){\|(.*?)\n\|}/s', @@ -174,15 +192,15 @@ class WikiParser implements CrawlConstants $start = substr($part, 0, 2); if(in_array($start[0], $space_like)) { $document .= "\n<pre>\n".ltrim($part)."\n</pre>\n"; - } else if($start == ": " || $start == ":\t") { - $document .= "\n<div class='indent'>\n".substr($part, 2). - "\n</div>\n"; } else { $document .= "\n<div>\n".$part. "\n</div>\n"; } } $document = $this->insertReferences($document, $references); $document = $this->insertTableOfContents($document, $toc); + $document = preg_replace_callback( + "/<nowiki>(.+?)<\/nowiki>/s", + "base64DecodeCallback", $document); if($head != "") { $document = $head . "END_HEAD_VARS" . $document; } @@ -480,4 +498,20 @@ function fixLinksCallback($matches) $out = $matches[2].'"'.str_replace(" ", "_", $matches[3]).'"'; return $out; } + +/** + * + */ +function base64EncodeCallback($matches) +{ + return "<nowiki>".base64_encode($matches[1])."</nowiki>"; +} + +/** + * + */ +function base64DecodeCallback($matches) +{ + return base64_decode($matches[1]); +} ?> diff --git a/models/group_model.php b/models/group_model.php index 82d20290b..c92dcda0b 100644 --- a/models/group_model.php +++ b/models/group_model.php @@ -742,11 +742,11 @@ class GroupModel extends Model * */ function setPageName($user_id, $group_id, $page_name, $page, $locale_tag, - $edit_comment, $thread_title, $tread_description) + $edit_comment, $thread_title, $tread_description, $base_address = "") { $db = $this->db; $pubdate = time(); - $parser = new WikiParser(); + $parser = new WikiParser($base_address); $parsed_page = $parser->parse($page); if($page_id = $this->getPageID($group_id, $page_name, $locale_tag)) { $sql = "UPDATE GROUP_PAGE SET PAGE=? WHERE ID = ?"; diff --git a/views/layouts/web_layout.php b/views/layouts/web_layout.php index 74d79e3a9..09939abbd 100755 --- a/views/layouts/web_layout.php +++ b/views/layouts/web_layout.php @@ -131,9 +131,15 @@ class WebLayout extends Layout <?php if(isset($data['INCLUDE_SCRIPTS'])) { foreach($data['INCLUDE_SCRIPTS'] as $script_name) { - e('<script type="text/javascript" - src="'.$_SERVER["PATH_INFO"].'/scripts/'. - $script_name.'.js" ></script>'); + if($script_name == "math") { + e('<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?'. + 'config=TeX-MML-AM_HTMLorMML"></script>'); + } else { + e('<script type="text/javascript" + src="'.$_SERVER["PATH_INFO"].'/scripts/'. + $script_name.'.js" ></script>'); + } } } if(isset($data['INCLUDE_LOCALE_SCRIPT'])) {