Re: [PATCH] rtl...

From: Date: Wed, 05 May 2004 17:38:41 +0000
Subject: Re: [PATCH] rtl...
References: 1 2 3  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969360495@lists.php.net to get a copy of this message
Moshe, as I've already told you, your patch had a little bug with GLOBALS. Attached is a correction for your patch. Nuno ----- Original Message ----- > > "Wez Furlong" <wez@thebrainroom.com> wrote in message > news:061101c432c1$8b475000$8e018552@tron... > > > > Now, quit complaining and get coding ;-) > > > > --Wez. > > http://moshe.i-com-it.com/patchs/livedocs-rtl3.patch.txt > > this patch contains: > 1. initial rtl support. > 2. add some missing htmlspecialchars(). > i change the htmlentities(); on <pre> into htmlspecialchars() coz > htmlentities(); doesn't fit well for not english charsets, do i miss > something? > > --/moshe

Index: common.php =================================================================== RCS file: /repository/livedocs/common.php,v retrieving revision 1.12 diff -u -r1.12 common.php --- common.php 5 May 2004 01:37:03 -0000 1.12 +++ common.php 5 May 2004 17:33:36 -0000 @@ -83,5 +83,15 @@ $NOTESDB = false; } +$rtl_langs = array('he','ar'); +define('RTL', isset($rtl_langs[$lang])?1:0); + + +/* TODO: add all languages here */ +$chars = array('ar' => 'ISO-8859-6', + 'he' => 'windows-1255', + 'ja' => 'UTF-8'); + +define('CHARSET', isset($chars[$lang]) ? $chars[$lang] : 'iso-8859-1'); ?> Index: style_mapping.php =================================================================== RCS file: /repository/livedocs/style_mapping.php,v retrieving revision 1.11 diff -u -r1.11 style_mapping.php --- style_mapping.php 1 May 2004 11:34:50 -0000 1.11 +++ style_mapping.php 5 May 2004 17:33:36 -0000 @@ -150,7 +150,11 @@ } } - return sprintf('<div class="copyright">Copyright &copy; %s by %s</div>', implode(", ", $y), $holder); + if(RTL) { + return sprintf('<div dir="ltr" class="copyright">Copyright &copy; %s by <span dir="rtl">%s</span>&nbsp;</div>', implode(", ", $y), $holder); + } else { + return sprintf('<div class="copyright">Copyright &copy; %s by %s</div>', implode(", ", $y), $holder); + } } function format_refpurpose($node) @@ -199,25 +203,28 @@ function format_parameter($node) { - return sprintf('<span class="%s">$%s</span>', $node->tagname, $node->content); + return sprintf('<span class="%s">$%s</span>', $node->tagname, htmlspecialchars($node->content, ENT_NOQUOTES)); } function format_pubdate($node) { - return sprintf('<div class="%s">Published on: %s</div>', $node->tagname, $node->content); + return sprintf('<div class="%s">Published on: %s</div>', $node->tagname, htmlspecialchars($node->content, ENT_NOQUOTES)); } function format_ulink($node) { - return sprintf('<a target="_blank" class="ulink" href="%s">%s</a>', - $node->attributes['url'], - $node->content - ); + $dir = (RTL && !ereg("([à-ú]+)",$node->content)) ? ' dir="ltr"' : ""; + return sprintf('<a target="_blank" class="ulink" href="%s"%s>%s</a>', + $node->attributes['url'], + $dir, + htmlspecialchars($node->content, ENT_NOQUOTES) + ); + } function format_warning_title($node) { - return sprintf('<span class="warning_title">%s</span>', $node->content); + return sprintf('<span class="warning_title">%s</span>', htmlspecialchars($node->content, ENT_NOQUOTES)); } function format_link($node) @@ -232,11 +239,14 @@ $caption = $node->attributes['linkend']; } $url = generate_url_for_id($lang, $node->attributes['linkend']); - return sprintf('<a class="%s" href="%s">%s</a>', - $node->tagname, - $url, - $caption - ); + $dir = isset($node->attributes['dir']) ? ' dir="'.$node->attributes['dir'].'"' : ''; + + return sprintf('<a class="%s" href="%s"%s>%s</a>', + $node->tagname, + $url, + $dir, + $caption + ); } function format_function($node) @@ -262,12 +272,18 @@ return sprintf('<span class="%s">%s()</span>', $class, $node->content); } - $url = generate_url_for_id($lang, $dest); - return sprintf('<a class="%s" href="%s">%s()</a>', - $class, - $url, - $node->content - ); + $dir = RTL ? ' dir="ltr"' : ''; + if ($current_page == $dest) { + return sprintf('<span class="%s"%s>%s()</span>', $class, $dir, $node->content); + } + + $url = generate_url_for_id($lang, $dest); + return sprintf('<a class="%s" href="%s"%s>%s()</a>', + $class, + $url, + $dir, + htmlspecialchars($node->content, ENT_NOQUOTES) + ); } function format_listing($node) @@ -315,13 +331,14 @@ case 'html': case 'xml': case 'c': - $content = '<pre>' . htmlentities($content) . '</pre>'; + $content = '<pre>' . htmlspecialchars($content) . '</pre>'; break; default: $content = htmlspecialchars($content); } - return sprintf('<div class="%scode">%s</div>', $node->attributes['role'], $content); + $dir = RTL ? ' dir="ltr"' : ''; + return sprintf('<div class="%scode"%s>%s</div>', $node->attributes['role'], $dir, $content); } function format_params($node) @@ -395,8 +412,8 @@ $params .= $p; } - - return "<div class=\"methodsynopsis\"><span class=\"type\">$type</span> <span class=\"function\">$fname(</span>$params$optclose<span class=\"function\">)</span></div>"; + $dir = RTL ? ' dir="ltr"' : ''; + return "<div$dir class=\"methodsynopsis\"><span class=\"type\">$type</span> <span class=\"function\">$fname(</span>$params$optclose<span class=\"function\">)</span></div>"; } function format_class_synopsis($node) @@ -545,4 +562,25 @@ return $html . "</div>"; } + +/* RTL support */ +if(RTL) { + $map['emphasis'] = 'format_emphasis'; + $map['literal'] = 'format_ltr_span'; + $map['option'] = 'format_ltr_span'; + $map['term'] = 'format_ltr_span'; + $map['varname'] = 'format_ltr_span'; + $map['filename'] = 'format_ltr_span'; + + function format_em($node) + { + return sprintf('<em class="%s" dir="ltr">%s</em>', $node->tagname, htmlspecialchars($node->content, ENT_NOQUOTES)); + } + + function format_ltr_span($node) + { + return sprintf('<span class="%s" dir="ltr">%s</span>', $node->tagname, htmlspecialchars($node->content, ENT_NOQUOTES)); + } +} + ?> Index: themes/default/html_format.php =================================================================== RCS file: /repository/livedocs/themes/default/html_format.php,v retrieving revision 1.7 diff -u -r1.7 html_format.php --- themes/default/html_format.php 21 Mar 2004 15:06:55 -0000 1.7 +++ themes/default/html_format.php 5 May 2004 17:33:36 -0000 @@ -24,16 +24,20 @@ function manual_page_header() { - global $lang, $title, $css_url; + global $lang, $title, $css_url, $RTL, $CHARSET; + $charset = CHARSET; + $dir = RTL ? ' dir="rtl"' : ''; + $head =<<<HEAD <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="$lang"> <head> +<meta http-equiv="Content-Type" content="text/html; charset="$charset"/> <title>$title</title> <link rel="stylesheet" href="$css_url" /> </head> -<body> +<body$dir> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr><td height="1"></td><td rowspan="2" valign="top"> HEAD;
« previous php.doc (#969360495) next »