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" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> >
> > 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 © %s by %s</div>',
implode(", ", $y), $holder);
+ if(RTL) {
+ return sprintf('<div dir="ltr" class="copyright">Copyright © %s
by <span dir="rtl">%s</span> </div>', implode(", ", $y), $holder);
+ } else {
+ return sprintf('<div class="copyright">Copyright © %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;