免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2237 | 回复: 1
打印 上一主题 下一主题

fix arabic cross_site_rss with ajaxcrud [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-02 14:23 |只看该作者 |倒序浏览

fix arabic cross_site_rss with ajaxcrud









1. change the mysql table / fields to utf8_general_ci and add a line on preheader.php
mysql_query("SET NAMES utf8");
apply utf-8 for all relative php/js files.


2. add tinyMCE in php page.

Html代码
  1. 1.<script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>  
  2. 2.<link rel="stylesheet" href="tiny_mce/themes/advanced/skins/default/ui.css">  
  3. 3.  
  4. 4.<script xmlns="http://www.w3.org/1999/xhtml" language="javascript" type="text/javascript">  
  5. 5.       tinyMCE.init({   
  6. 6.        mode : "textareas",   
  7. 7.        theme : "advanced",   
  8. 8.        gecko_spellcheck : true,   
  9. 9.        remove_linebreaks : true,   
  10. 10.        width : "640",   
  11. 11.        plugins : "table,advimage,advlink,emotions,iespell,insertdatetime,preview,searchreplace,xhtmlxtras,media,directionality",   
  12. 12.        theme_advanced_buttons1 : "justifyleft,ltr,|,justifyright,rtl,|,justifycenter",   
  13. 13.        theme_advanced_buttons2 : "bold,italic,underline,strikethrough,|,fontsizeselect,forecolor,backcolor,|,sub,sup",   
  14. 14.        theme_advanced_buttons3 : "cut,copy,paste,pastetext,pasteword,removeformat,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,preview",   
  15. 15.        theme_advanced_disable : "charmap",   
  16. 16.        theme_advanced_toolbar_location : "top",   
  17. 17.        theme_advanced_toolbar_align : "left",   
  18. 18.        theme_advanced_path_location : "bottom"   
  19. 19.        });   
  20. 20.</script>  
  21.         <script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
  22.         <link rel="stylesheet" href="tiny_mce/themes/advanced/skins/default/ui.css">

  23.         <script xmlns="http://www.w3.org/1999/xhtml" language="javascript" type="text/javascript">
  24.         tinyMCE.init({
  25.                         mode : "textareas",
  26.                         theme : "advanced",
  27.                         gecko_spellcheck : true,
  28.                         remove_linebreaks : true,
  29.                         width : "640",
  30.                         plugins : "table,advimage,advlink,emotions,iespell,insertdatetime,preview,searchreplace,xhtmlxtras,media,directionality",
  31.                         theme_advanced_buttons1 : "justifyleft,ltr,|,justifyright,rtl,|,justifycenter",
  32.                         theme_advanced_buttons2 : "bold,italic,underline,strikethrough,|,fontsizeselect,forecolor,backcolor,|,sub,sup",
  33.                         theme_advanced_buttons3 : "cut,copy,paste,pastetext,pasteword,removeformat,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,preview",
  34.                         theme_advanced_disable : "charmap",
  35.                         theme_advanced_toolbar_location : "top",
  36.                         theme_advanced_toolbar_align : "left",
  37.                         theme_advanced_path_location : "bottom"
  38.                         });
  39.         </script>
复制代码
3. remember to trigger the save function before submit on page ajaxCRUD.class.php function insertHeader and function makeAjaxEditor
tinyMCE.triggerSave();

4. decode the fields on function doAction

Php代码
  1. 1.foreach($submitted_array as $field){   
  2. 2.    $submitted_values[] = urldecode($field);   
  3. 3.}  
  4.                         foreach($submitted_array as $field){
  5.                             $submitted_values[] = urldecode($field);
  6.                         }
复制代码
5. encodeURIComponent on function makeAjaxEditor

Php代码
  1. 1.     $return_html .= "<span class=\"editable hand_cursor\" id=\"" . $prefield ."_show\" onClick=\"  
  2. 2.document.getElementById('" . $prefield . "_edit').style.display = '';   
  3. 3.document.getElementById('" . $prefield . "_show').style.display = 'none';   
  4. 4.document.getElementById('" . $input_name . "').focus();   
  5. 5.         \">" . $field_text . "</span>   
  6. 6.     <span id=\"" . $prefield ."_edit\" style=\"display: none;\">   
  7. 7.         <form style=\"display: inline;\" name=\"form_" . $prefield . "\" id=\"form_" . $prefield . "\" onsubmit=\"  
  8. 8.    tinyMCE.triggerSave();   
  9. 9.    document.getElementById('" . $prefield . "_edit').style.display='none';   
  10. 10.    document.getElementById('" . $prefield . "_save').style.display='';   
  11. 11.             var req = '" . $this->ajax_file . "?ajaxAction=update&id=" . $unique_id . "&field=" . $field_name . "&table=" . $this->db_table . "&pk=" . $this->db_table_pk . "&val=' + encodeURIComponent(document.getElementById('" . $input_name . "').value);   
  12. 12.    sndUpdateReq(req);   
  13. 13.    return false;   
  14. 14.\">";  
  15.         $return_html .= "<span class=\"editable hand_cursor\" id=\"" . $prefield ."_show\" onClick=\"
  16.                         document.getElementById('" . $prefield . "_edit').style.display = '';
  17.                         document.getElementById('" . $prefield . "_show').style.display = 'none';
  18.                         document.getElementById('" . $input_name . "').focus();
  19.             \">" . $field_text . "</span>
  20.         <span id=\"" . $prefield ."_edit\" style=\"display: none;\">
  21.             <form style=\"display: inline;\" name=\"form_" . $prefield . "\" id=\"form_" . $prefield . "\" onsubmit=\"
  22.                                 tinyMCE.triggerSave();
  23.                                 document.getElementById('" . $prefield . "_edit').style.display='none';
  24.                                 document.getElementById('" . $prefield . "_save').style.display='';
  25.                 var req = '" . $this->ajax_file . "?ajaxAction=update&id=" . $unique_id . "&field=" . $field_name . "&table=" . $this->db_table . "&pk=" . $this->db_table_pk . "&val=' + encodeURIComponent(document.getElementById('" . $input_name . "').value);
  26.                                 sndUpdateReq(req);
  27.                                 return false;
  28.                         \">";
复制代码
6. on file javascript_functions.js
change the charset
http_request.overrideMimeType('text/plain;charset=utf-8');

replace escape to encodeURIComponent for function getFormValues

Javascript代码
  1. 1.str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";   
  2. 2.  
  3. 3.    var chkValue = encodeURIComponent(fobj.elements[i].value);  
  4.                         str += fobj.elements[i].name + "=" + encodeURIComponent(fobj.elements[i].value) + "&";

  5.                                 var chkValue = encodeURIComponent(fobj.elements[i].value);
复制代码
7. add <![CDATA[]]> to rss files - announcement_.php

Php代码
  1. 1.echo "      <title><![CDATA[" . $row['announcement_title'] . "]]></title>";   
  2. 2.echo "      <description><![CDATA[" . $row['announcement_description'] . "]]></description>";  
  3.         echo "                <title><![CDATA[" . $row['announcement_title'] . "]]></title>";
  4.         echo "                <description><![CDATA[" . $row['announcement_description'] . "]]></description>";
复制代码
8. summary
use javascript function encodeURIComponent but escape to encode value
use php function urldecode to decode value

Java代码
  1. 1.// raw value   
  2. 2.// <p>شعبية (بالصيني</p>   
  3. 3.$str = urldecode('%3Cp%3E%D8%B4%D8%B9%D8%A8%D9%8A%D8%A9%20(%D8%A8%D8%A7%D9%84%D8%B5%D9%8A%D9%86%D9%8A%3C%2Fp%3E');   
  4. 4.echo $str;  
  5. // raw value
  6. // <p>شعبية (بالصيني</p>
  7. $str = urldecode('%3Cp%3E%D8%B4%D8%B9%D8%A8%D9%8A%D8%A9%20(%D8%A8%D8%A7%D9%84%D8%B5%D9%8A%D9%86%D9%8A%3C%2Fp%3E');
  8. echo $str;
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-12-21 22:11 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP