Re: RTLizing html_checkboxes

Armen Baghumian <[email protected]> Fri, 30 Mar 2007 19:37:04 +0330
Newsgroups gmane.comp.php.smarty.devel
Message-ID <20070330193704.70a56c88@localhost>
--MP_8jquHbB4LPspmzQf/niundg
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Boots,

> Thanks for the patch and sorry for taking so long to get back to you.
> This is the right place to post patches :) I haven't had a chance to
> review this yet but after a quick look, it seems like a reasonable
> patch to commit.

you are welcome. :)

> I'll try to properly review and test this by the end of the weekend.
> I don't actually use RTL myself, so any suggestions for testing it
> would be appreciated. Any other feedback from RTL users would also be
> grand.

As you want to test it I just patched html_radios and it attached with
this message.

Regards,
Armen
--MP_8jquHbB4LPspmzQf/niundg
Content-Type: application/x-php; name=function.html_radios.php
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=function.html_radios.php

PD9waHAKLyoqCiAqIFNtYXJ0eSBwbHVnaW4KICogQHBhY2thZ2UgU21hcnR5CiAqIEBzdWJwYWNr
YWdlIHBsdWdpbnMKICovCgoKLyoqCiAqIFNtYXJ0eSB7aHRtbF9yYWRpb3N9IGZ1bmN0aW9uIHBs
dWdpbgogKgogKiBGaWxlOiAgICAgICBmdW5jdGlvbi5odG1sX3JhZGlvcy5waHA8YnI+CiAqIFR5
cGU6ICAgICAgIGZ1bmN0aW9uPGJyPgogKiBOYW1lOiAgICAgICBodG1sX3JhZGlvczxicj4KICog
RGF0ZTogICAgICAgMjQuRmViLjIwMDM8YnI+CiAqIFB1cnBvc2U6ICAgIFByaW50cyBvdXQgYSBs
aXN0IG9mIHJhZGlvIGlucHV0IHR5cGVzPGJyPgogKiBJbnB1dDo8YnI+CiAqICAgICAgICAgICAt
IG5hbWUgICAgICAgKG9wdGlvbmFsKSAtIHN0cmluZyBkZWZhdWx0ICJyYWRpbyIKICogICAgICAg
ICAgIC0gdmFsdWVzICAgICAocmVxdWlyZWQpIC0gYXJyYXkKICogICAgICAgICAgIC0gb3B0aW9u
cyAgICAob3B0aW9uYWwpIC0gYXNzb2NpYXRpdmUgYXJyYXkKICogICAgICAgICAgIC0gY2hlY2tl
ZCAgICAob3B0aW9uYWwpIC0gYXJyYXkgZGVmYXVsdCBub3Qgc2V0CiAqICAgICAgICAgICAtIHNl
cGFyYXRvciAgKG9wdGlvbmFsKSAtIGllIDxicj4gb3IgJm5ic3A7CiAqICAgICAgICAgICAtIG91
dHB1dCAgICAgKG9wdGlvbmFsKSAtIHRoZSBvdXRwdXQgbmV4dCB0byBlYWNoIHJhZGlvIGJ1dHRv
bgogKiAgICAgICAgICAgLSBhc3NpZ24gICAgIChvcHRpb25hbCkgLSBhc3NpZ24gdGhlIG91dHB1
dCBhcyBhbiBhcnJheSB0byB0aGlzIHZhcmlhYmxlCiAqICAgICAgICAgICAtIGRpcmVjdGlvbiAg
KG9wdGlvbmFsKSAtIGFkZCBkaXJlY3Rpb24gZm9yIGZpZWxkcyAKICogRXhhbXBsZXM6CiAqIDxw
cmU+CiAqIHtodG1sX3JhZGlvcyB2YWx1ZXM9JGlkcyBvdXRwdXQ9JG5hbWVzfQogKiB7aHRtbF9y
YWRpb3MgdmFsdWVzPSRpZHMgbmFtZT0nYm94JyBzZXBhcmF0b3I9Jzxicj4nIG91dHB1dD0kbmFt
ZXN9CiAqIHtodG1sX3JhZGlvcyB2YWx1ZXM9JGlkcyBjaGVja2VkPSRjaGVja2VkIHNlcGFyYXRv
cj0nPGJyPicgb3V0cHV0PSRuYW1lc30KICogPC9wcmU+CiAqIEBsaW5rIGh0dHA6Ly9zbWFydHku
cGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UuZnVuY3Rpb24uaHRtbC5yYWRpb3MucGhwIHtodG1s
X3JhZGlvc30KICogICAgICAoU21hcnR5IG9ubGluZSBtYW51YWwpCiAqIEBhdXRob3IgICAgIENo
cmlzdG9waGVyIEt2YXJtZSA8Y2hyaXN0b3BoZXIua3Zhcm1lQGZsYXNoamFiLmNvbT4KICogQGF1
dGhvciBjcmVkaXRzIHRvIE1vbnRlIE9ocnQgPG1vbnRlQGlzcGkubmV0PgogKiBAdmVyc2lvbiAg
ICAxLjAKICogQHBhcmFtIGFycmF5CiAqIEBwYXJhbSBTbWFydHkKICogQHJldHVybiBzdHJpbmcK
ICogQHVzZXMgc21hcnR5X2Z1bmN0aW9uX2VzY2FwZV9zcGVjaWFsX2NoYXJzKCkKICovCmZ1bmN0
aW9uIHNtYXJ0eV9mdW5jdGlvbl9odG1sX3JhZGlvcygkcGFyYW1zLCAmJHNtYXJ0eSkKewogICAg
cmVxdWlyZV9vbmNlICRzbWFydHktPl9nZXRfcGx1Z2luX2ZpbGVwYXRoKCdzaGFyZWQnLCdlc2Nh
cGVfc3BlY2lhbF9jaGFycycpOwogICAKICAgICRuYW1lID0gJ3JhZGlvJzsKICAgICR2YWx1ZXMg
PSBudWxsOwogICAgJG9wdGlvbnMgPSBudWxsOwogICAgJHNlbGVjdGVkID0gbnVsbDsKICAgICRz
ZXBhcmF0b3IgPSAnJzsKICAgICRsYWJlbHMgPSB0cnVlOwogICAgJG91dHB1dCA9IG51bGw7CiAg
ICAkZXh0cmEgPSAnJzsKICAgICRkaXJlY3Rpb24gPSAnbHRyJzsgICAgCgogICAgZm9yZWFjaCgk
cGFyYW1zIGFzICRfa2V5ID0+ICRfdmFsKSB7CiAgICAgICAgc3dpdGNoKCRfa2V5KSB7CiAgICAg
ICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgICAgICBjYXNlICdzZXBhcmF0b3InOgogICAgICAg
ICAgICBjYXNlICdkaXJlY3Rpb24nOiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJCRfa2V5
ID0gKHN0cmluZykkX3ZhbDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2Fz
ZSAnY2hlY2tlZCc6CiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdGVkJzoKICAgICAgICAgICAgICAg
IGlmKGlzX2FycmF5KCRfdmFsKSkgewogICAgICAgICAgICAgICAgICAgICRzbWFydHktPnRyaWdn
ZXJfZXJyb3IoJ2h0bWxfcmFkaW9zOiB0aGUgIicgLiAkX2tleSAuICciIGF0dHJpYnV0ZSBjYW5u
b3QgYmUgYW4gYXJyYXknLCBFX1VTRVJfV0FSTklORyk7CiAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICRzZWxlY3RlZCA9IChzdHJpbmcpJF92YWw7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2xhYmVs
cyc6CiAgICAgICAgICAgICAgICAkJF9rZXkgPSAoYm9vbCkkX3ZhbDsKICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnb3B0aW9ucyc6CiAgICAgICAgICAgICAgICAkJF9r
ZXkgPSAoYXJyYXkpJF92YWw7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNh
c2UgJ3ZhbHVlcyc6CiAgICAgICAgICAgIGNhc2UgJ291dHB1dCc6CiAgICAgICAgICAgICAgICAk
JF9rZXkgPSBhcnJheV92YWx1ZXMoKGFycmF5KSRfdmFsKTsKICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgY2FzZSAncmFkaW9zJzoKICAgICAgICAgICAgICAgICRzbWFydHktPnRy
aWdnZXJfZXJyb3IoJ2h0bWxfcmFkaW9zOiB0aGUgdXNlIG9mIHRoZSAicmFkaW9zIiBhdHRyaWJ1
dGUgaXMgZGVwcmVjYXRlZCwgdXNlICJvcHRpb25zIiBpbnN0ZWFkJywgRV9VU0VSX1dBUk5JTkcp
OwogICAgICAgICAgICAgICAgJG9wdGlvbnMgPSAoYXJyYXkpJF92YWw7CiAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2Fzc2lnbic6CiAgICAgICAgICAgICAgICBicmVh
azsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBpZighaXNfYXJyYXkoJF92
YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhIC49ICcgJy4kX2tleS4nPSInLnNtYXJ0
eV9mdW5jdGlvbl9lc2NhcGVfc3BlY2lhbF9jaGFycygkX3ZhbCkuJyInOwogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT50cmlnZ2VyX2Vycm9yKCJo
dG1sX3JhZGlvczogZXh0cmEgYXR0cmlidXRlICckX2tleScgY2Fubm90IGJlIGFuIGFycmF5Iiwg
RV9VU0VSX05PVElDRSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICB9CiAgICB9CgogICAgaWYgKCFpc3NldCgkb3B0aW9ucykgJiYgIWlzc2V0KCR2YWx1
ZXMpKQogICAgICAgIHJldHVybiAnJzsgLyogcmFpc2UgZXJyb3IgaGVyZT8gKi8KCiAgICAkX2h0
bWxfcmVzdWx0ID0gYXJyYXkoKTsKCiAgICBpZiAoaXNzZXQoJG9wdGlvbnMpICYmIGlzX2FycmF5
KCRvcHRpb25zKSkgewoKICAgICAgICBmb3JlYWNoICgoYXJyYXkpJG9wdGlvbnMgYXMgJF9rZXk9
PiRfdmFsKQogICAgICAgICAgICAkX2h0bWxfcmVzdWx0W10gPSBzbWFydHlfZnVuY3Rpb25faHRt
bF9yYWRpb3Nfb3V0cHV0KCRuYW1lLCAkX2tleSwgJF92YWwsICRzZWxlY3RlZCwgJGV4dHJhLCAk
c2VwYXJhdG9yLCAkbGFiZWxzLCAkZGlyZWN0aW9uKTsKCiAgICB9IGVsc2UgewoKICAgICAgICBm
b3JlYWNoICgoYXJyYXkpJHZhbHVlcyBhcyAkX2k9PiRfa2V5KSB7CiAgICAgICAgICAgICRfdmFs
ID0gaXNzZXQoJG91dHB1dFskX2ldKSA/ICRvdXRwdXRbJF9pXSA6ICcnOwogICAgICAgICAgICAk
X2h0bWxfcmVzdWx0W10gPSBzbWFydHlfZnVuY3Rpb25faHRtbF9yYWRpb3Nfb3V0cHV0KCRuYW1l
LCAkX2tleSwgJF92YWwsICRzZWxlY3RlZCwgJGV4dHJhLCAkc2VwYXJhdG9yLCAkbGFiZWxzLCAk
ZGlyZWN0aW9uKTsKICAgICAgICB9CgogICAgfQoKICAgIGlmKCFlbXB0eSgkcGFyYW1zWydhc3Np
Z24nXSkpIHsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sICRfaHRt
bF9yZXN1bHQpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgiXG4iLCRfaHRt
bF9yZXN1bHQpOwogICAgfQoKfQoKZnVuY3Rpb24gc21hcnR5X2Z1bmN0aW9uX2h0bWxfcmFkaW9z
X291dHB1dCgkbmFtZSwgJHZhbHVlLCAkb3V0cHV0LCAkc2VsZWN0ZWQsICRleHRyYSwgJHNlcGFy
YXRvciwgJGxhYmVscywgJGRpcmVjdGlvbikgewogICAgJF9vdXRwdXQgID0gJyc7CiAgICAkX291
dHB1dCAuPSAoJGxhYmVscyk/JzxsYWJlbCBkaXI9Iicuc21hcnR5X2Z1bmN0aW9uX2VzY2FwZV9z
cGVjaWFsX2NoYXJzKCRkaXJlY3Rpb24pLiciPic6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
JzxzcGFuIGRpcj0iJy5zbWFydHlfZnVuY3Rpb25fZXNjYXBlX3NwZWNpYWxfY2hhcnMoJGRpcmVj
dGlvbikuJyI+JzsKICAgIAogICAgJF9vdXRwdXQgLj0gJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFt
ZT0iJwogICAgICAgIC4gc21hcnR5X2Z1bmN0aW9uX2VzY2FwZV9zcGVjaWFsX2NoYXJzKCRuYW1l
KSAuICciIHZhbHVlPSInCiAgICAgICAgLiBzbWFydHlfZnVuY3Rpb25fZXNjYXBlX3NwZWNpYWxf
Y2hhcnMoJHZhbHVlKSAuICciJzsKCiAgICBpZiAoJHZhbHVlPT0kc2VsZWN0ZWQpIHsKICAgICAg
ICAkX291dHB1dCAuPSAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgICRfb3V0cHV0IC49
ICRleHRyYSAuICcgLz4nIC4gJG91dHB1dDsKICAgICRfb3V0cHV0IC49ICgkbGFiZWxzKT8nPC9s
YWJlbD4nOic8L3NwYW4+JzsKICAgICRfb3V0cHV0IC49ICRzZXBhcmF0b3I7ICAgIAoKICAgIHJl
dHVybiAkX291dHB1dDsKfQoKPz4K

--MP_8jquHbB4LPspmzQf/niundg
Content-Type: text/x-patch; name=function.html_radios.php.patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=function.html_radios.php.patch

--- function.html_radios.php.orig	2007-03-30 19:14:50.000000000 +0330
+++ ./webapp/libs/smarty/plugins/function.html_radios.php	2007-03-30 19:22:52.000000000 +0330
@@ -22,6 +22,7 @@
  *           - separator  (optional) - ie <br> or &nbsp;
  *           - output     (optional) - the output next to each radio button
  *           - assign     (optional) - assign the output as an array to this variable
+ *           - direction  (optional) - add direction for fields 
  * Examples:
  * <pre>
  * {html_radios values=$ids output=$names}
@@ -50,11 +51,13 @@
     $labels = true;
     $output = null;
     $extra = '';
+    $direction = 'ltr';    
 
     foreach($params as $_key => $_val) {
         switch($_key) {
             case 'name':
             case 'separator':
+            case 'direction':            
                 $$_key = (string)$_val;
                 break;
 
@@ -106,13 +109,13 @@
     if (isset($options) && is_array($options)) {
 
         foreach ((array)$options as $_key=>$_val)
-            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $direction);
 
     } else {
 
         foreach ((array)$values as $_i=>$_key) {
             $_val = isset($output[$_i]) ? $output[$_i] : '';
-            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
+            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $direction);
         }
 
     }
@@ -125,9 +128,11 @@
 
 }
 
-function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels) {
-    $_output = '';
-    if ($labels) $_output .= '<label>';
+function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $direction) {
+    $_output  = '';
+    $_output .= ($labels)?'<label dir="'.smarty_function_escape_special_chars($direction).'">':
+                          '<span dir="'.smarty_function_escape_special_chars($direction).'">';
+    
     $_output .= '<input type="radio" name="'
         . smarty_function_escape_special_chars($name) . '" value="'
         . smarty_function_escape_special_chars($value) . '"';
@@ -136,8 +141,8 @@
         $_output .= ' checked="checked"';
     }
     $_output .= $extra . ' />' . $output;
-    if ($labels) $_output .= '</label>';
-    $_output .=  $separator;
+    $_output .= ($labels)?'</label>':'</span>';
+    $_output .= $separator;    
 
     return $_output;
 }


--MP_8jquHbB4LPspmzQf/niundg
Content-Type: text/plain; charset=us-ascii

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--MP_8jquHbB4LPspmzQf/niundg--