| 1 | <?xml version="1.0" encoding="utf-8"?> |
|---|
| 2 | |
|---|
| 3 | <dictionary> |
|---|
| 4 | <item key="custom"><![CDATA[<dtml-return "len(getLangIds())>1">]]></item> |
|---|
| 5 | <item key="data"><![CDATA[<dtml-comment> |
|---|
| 6 | ################################################################################ |
|---|
| 7 | 2011-09-19 [zmsdev] applied fix |
|---|
| 8 | 2011-09-16 [zmsdev] applied fix |
|---|
| 9 | 2011-07-06 [fhoffmann] SESSION based lang settings |
|---|
| 10 | 2011-06-09 [fhoffmann] Save Automatic Pre-Translation |
|---|
| 11 | 2011-06-07 [fhoffmann] Google Translator Element added |
|---|
| 12 | 2011-04-11 [zmsdev] Replaced fancybox by jquery ui dialog. |
|---|
| 13 | 2011-28-01 [fhoffmann] Revised for fancybox transparency css |
|---|
| 14 | 2011-21-01 [fhoffmann] Revised for maximize css |
|---|
| 15 | 2011-01-17 [zmsdev] Revised table-structure: one row per object |
|---|
| 16 | 2010-12-02 [zmsdev] Initial revision |
|---|
| 17 | ################################################################################ |
|---|
| 18 | </dtml-comment> |
|---|
| 19 | |
|---|
| 20 | <dtml-var manage_page_header> |
|---|
| 21 | |
|---|
| 22 | <style type="text/css"> |
|---|
| 23 | .zmi-translate-left { |
|---|
| 24 | padding:4px; |
|---|
| 25 | background-color:#FFFFE8; |
|---|
| 26 | } |
|---|
| 27 | .zmi-translate-left .zmi-translate-element { |
|---|
| 28 | margin:5px 10px 5px 0px; |
|---|
| 29 | border: 1px solid darkgreen; |
|---|
| 30 | } |
|---|
| 31 | .zmi-translate-left .zmi-translate-element-id { |
|---|
| 32 | color:white; |
|---|
| 33 | background-color: darkgreen; |
|---|
| 34 | } |
|---|
| 35 | .zmi-translate-right { |
|---|
| 36 | padding:4px; |
|---|
| 37 | background-color:#FFFFFF; |
|---|
| 38 | } |
|---|
| 39 | .zmi-translate-right .zmi-translate-element { |
|---|
| 40 | margin:5px 10px 5px 0px; |
|---|
| 41 | border: 1px solid red; |
|---|
| 42 | } |
|---|
| 43 | .zmi-translate-right .zmi-translate-element-id { |
|---|
| 44 | color:white; |
|---|
| 45 | background-color: red; |
|---|
| 46 | } |
|---|
| 47 | .zmiRenderShort { |
|---|
| 48 | width:350px!important; |
|---|
| 49 | } |
|---|
| 50 | .zmiRenderShort { |
|---|
| 51 | width:350px!important; |
|---|
| 52 | } |
|---|
| 53 | body.maximized .zmiRenderShort { |
|---|
| 54 | width:auto !important; |
|---|
| 55 | } |
|---|
| 56 | .ui-widget-overlay { |
|---|
| 57 | opacity: 0.2; |
|---|
| 58 | } |
|---|
| 59 | </style> |
|---|
| 60 | |
|---|
| 61 | <script> |
|---|
| 62 | function save(sender) { |
|---|
| 63 | var $container_div = $($(sender).parents("div")[0]); |
|---|
| 64 | var $rendershort_div = $("div.zmiRenderShort div.contentEditable",$container_div); |
|---|
| 65 | var id = $rendershort_div.attr("id"); |
|---|
| 66 | id = id.substr(id.indexOf("_")+1); |
|---|
| 67 | id = id.substr(0,id.lastIndexOf("_")); |
|---|
| 68 | var lang = $rendershort_div.attr("id"); |
|---|
| 69 | lang = lang.substr(lang.lastIndexOf("_")+1); |
|---|
| 70 | var html = $rendershort_div.html(); |
|---|
| 71 | var text = html; |
|---|
| 72 | text = text.replace(/<font(.*?)>/gi,''); |
|---|
| 73 | text = text.replace(/<\/font(.*?)>/gi,''); |
|---|
| 74 | // Handle start-tag. |
|---|
| 75 | var startTag = text.split(">")[0].toLowerCase(); |
|---|
| 76 | startTag = startTag.substr(startTag.indexOf("<")+1); |
|---|
| 77 | if (startTag.indexOf(" ")>0) { |
|---|
| 78 | startTag = startTag.substr(0,startTag.indexOf(" ")); |
|---|
| 79 | } |
|---|
| 80 | var sre = '<'+startTag+'(.*?)>((.|\n|\r|\t)*?)<\/'+startTag+'(.*?)>'; |
|---|
| 81 | var re = new RegExp(sre,'gi'); |
|---|
| 82 | text = text.replace(re,'$2'); |
|---|
| 83 | text = text.replace(/<span class=\"unicode\">(.*?)<\/span>/g,''); |
|---|
| 84 | // Handle sub-tag. |
|---|
| 85 | var subTag = text.split(">")[0].toLowerCase(); |
|---|
| 86 | subTag = subTag.substr(subTag.indexOf("<")+1); |
|---|
| 87 | if (subTag.indexOf(" ")>0) { |
|---|
| 88 | startTag = subTag.substr(0,subTag.indexOf(" ")); |
|---|
| 89 | } |
|---|
| 90 | if (subTag == 'br') { |
|---|
| 91 | re = new RegExp('<'+subTag+'>','gi'); |
|---|
| 92 | text = text.replace(re,'\n'); |
|---|
| 93 | } |
|---|
| 94 | else { |
|---|
| 95 | re = new RegExp('<'+subTag+'(.*?)>','gi'); |
|---|
| 96 | text = text.replace(re,''); |
|---|
| 97 | re = new RegExp('<\/'+subTag+'>','gi'); |
|---|
| 98 | text = text.replace(re,'\n'); |
|---|
| 99 | } |
|---|
| 100 | if (confirm("Save Automatic Pre-Translation?\n\n"+text)) { |
|---|
| 101 | $container_div.addClass('zmiTeaserColor'); |
|---|
| 102 | var params = {}; |
|---|
| 103 | params['lang'] = lang; |
|---|
| 104 | params['text_'+lang] = text; |
|---|
| 105 | $.post(id+'/manage_changeProperties',params,function(data){ |
|---|
| 106 | $container_div.removeClass('zmiTeaserColor'); |
|---|
| 107 | },'html'); |
|---|
| 108 | } |
|---|
| 109 | } |
|---|
| 110 | </script> |
|---|
| 111 | |
|---|
| 112 | </head> |
|---|
| 113 | <dtml-var manage_tabs> |
|---|
| 114 | <dtml-unless fmName><dtml-call "REQUEST.set('fmName', 'form0')"></dtml-unless> |
|---|
| 115 | |
|---|
| 116 | <dtml-call "REQUEST.set('lang1_options',getLangTree(getDCCoverage(REQUEST)[len('global.'):]))"> |
|---|
| 117 | <dtml-if "SESSION.get('lang1','')==''" |
|---|
| 118 | ><dtml-call "SESSION.set('lang1',REQUEST.get('lang1',lang1_options[0][0]))" |
|---|
| 119 | ><dtml-call "REQUEST.set('lang1',SESSION.get('lang1'))" |
|---|
| 120 | ><dtml-elif "REQUEST.get('lang1','')==''" |
|---|
| 121 | ><dtml-call "REQUEST.set('lang1',SESSION.get('lang1',lang1_options[0][0]))" |
|---|
| 122 | ><dtml-else |
|---|
| 123 | ><dtml-call "SESSION.set('lang1',REQUEST.get('lang1'))" |
|---|
| 124 | ></dtml-if> |
|---|
| 125 | <dtml-call "REQUEST.set('lang1_bk',lang1)"> |
|---|
| 126 | |
|---|
| 127 | <dtml-call "REQUEST.set('lang2_options',getLangTree(getDCCoverage(REQUEST)[len('global.'):])[1:])"> |
|---|
| 128 | <dtml-if "SESSION.get('lang2','')==''" |
|---|
| 129 | ><dtml-call "SESSION.set('lang2',REQUEST.get('lang2',lang2_options[0][0]))" |
|---|
| 130 | ><dtml-call "REQUEST.set('lang2',SESSION.get('lang2'))" |
|---|
| 131 | ><dtml-elif "REQUEST.get('lang2','')==''" |
|---|
| 132 | ><dtml-call "REQUEST.set('lang2',SESSION.get('lang2',lang2_options[0][0]))" |
|---|
| 133 | ><dtml-else |
|---|
| 134 | ><dtml-call "SESSION.set('lang2',REQUEST.get('lang2'))" |
|---|
| 135 | ></dtml-if> |
|---|
| 136 | <dtml-call "REQUEST.set('lang2_bk',lang2)"> |
|---|
| 137 | |
|---|
| 138 | <form id="<dtml-var fmName>" method="get"> |
|---|
| 139 | <table cellspacing="0" cellpadding="0" border="0" width="100%"> |
|---|
| 140 | <tr valign="top"> |
|---|
| 141 | <dtml-let childNodes="filter(lambda x: x.isPageElement(),getObjChildren('e',REQUEST))" exclude_langs="[]"> |
|---|
| 142 | <dtml-in "['left','right']"> |
|---|
| 143 | <dtml-let si=sequence-item lang_req_key="{'left':'lang1','right':'lang2'}[si]"> |
|---|
| 144 | <td class="zmi-translate-<dtml-var si> <dtml-var "['translate','notranslate'][si=='left']">" width="50%"> |
|---|
| 145 | <select class="form-small notranslate" name="<dtml-var lang_req_key>" onchange="document.getElementById('<dtml-var fmName>').submit();"> |
|---|
| 146 | <dtml-in "REQUEST.get('%s_options'%lang_req_key)" mapping> |
|---|
| 147 | <option value="<dtml-var sequence-key>" <dtml-if "_['sequence-key']==REQUEST[lang_req_key]">selected="selected"</dtml-if>><dtml-var label></option> |
|---|
| 148 | </dtml-in> |
|---|
| 149 | </select> |
|---|
| 150 | <dtml-call "REQUEST.set(lang_req_key+'_bk',REQUEST.get(lang_req_key))"> |
|---|
| 151 | <dtml-call "REQUEST.set('lang',REQUEST.get(lang_req_key))"> |
|---|
| 152 | <div id="<dtml-var id>" class="zmi-translate-element"> |
|---|
| 153 | <span class="zmi-translate-element-id notranslate"><dtml-var id></span> |
|---|
| 154 | <div class="zmiRenderShort" id="contentEditable_<dtml-var id>_<dtml-var lang>"> |
|---|
| 155 | <dtml-if "meta_id not in ['ZMSDocument','ZMSFolder','ZMS']"> |
|---|
| 156 | <dtml-var "getBodyContent(REQUEST)"> |
|---|
| 157 | <dtml-else> |
|---|
| 158 | <h1><dtml-var "getTitle(REQUEST)"></h1> |
|---|
| 159 | <p class="description"><dtml-var "getDCDescription(REQUEST)" newline_to_br></p> |
|---|
| 160 | </dtml-if> |
|---|
| 161 | </div> |
|---|
| 162 | </div> |
|---|
| 163 | </td> |
|---|
| 164 | </dtml-let> |
|---|
| 165 | </dtml-in> |
|---|
| 166 | <dtml-in childNodes> |
|---|
| 167 | <tr valign="top"> |
|---|
| 168 | <dtml-in "['left','right']"> |
|---|
| 169 | <dtml-let si=sequence-item lang_req_key="{'left':'lang1','right':'lang2'}[si]"> |
|---|
| 170 | <td class="zmi-translate-<dtml-var si> <dtml-var "['translate','notranslate'][si=='left']">"> |
|---|
| 171 | <dtml-call "REQUEST.set('lang',REQUEST.get(lang_req_key+'_bk'))"> |
|---|
| 172 | <div id="<dtml-var id>" class="zmi-translate-element"> |
|---|
| 173 | <span class="zmi-translate-element-id notranslate" <dtml-if "isActive(REQUEST)!=True" |
|---|
| 174 | >title="Inactive" style="background-color:#999"</dtml-if>><dtml-var id><dtml-if "si!='left'"><span title="<dtml-var lang>: Save Automatic Pre-Translation" style="cursor:pointer;" onclick="save(this)"> ⌠</span></dtml-if></span> |
|---|
| 175 | <dtml-var "renderShort(REQUEST)"> |
|---|
| 176 | </div> |
|---|
| 177 | </td> |
|---|
| 178 | </dtml-let> |
|---|
| 179 | </dtml-in> |
|---|
| 180 | </tr> |
|---|
| 181 | </dtml-in> |
|---|
| 182 | </dtml-let> |
|---|
| 183 | </tr> |
|---|
| 184 | </table> |
|---|
| 185 | </form> |
|---|
| 186 | <!-- Google Translate Element --> |
|---|
| 187 | <div id="google_translate_element" style="display:block"></div><script> |
|---|
| 188 | function googleTranslateElementInit() { |
|---|
| 189 | new google.translate.TranslateElement({pageLanguage: "de"}, "google_translate_element"); |
|---|
| 190 | };</script> |
|---|
| 191 | <script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> |
|---|
| 192 | <!-- /Google Translate Element --> |
|---|
| 193 | <dtml-comment> |
|---|
| 194 | <pre title="DEBUG CODE"> |
|---|
| 195 | REQUEST lang1: <dtml-var "REQUEST.get('lang1','')"> |
|---|
| 196 | REQUEST lang2: <dtml-var "REQUEST.get('lang2','')"> |
|---|
| 197 | SESSION lang1: <dtml-var "SESSION.get('lang1','')"> |
|---|
| 198 | SESSION lang2: <dtml-var "SESSION.get('lang2','')"> |
|---|
| 199 | </pre> |
|---|
| 200 | </dtml-comment> |
|---|
| 201 | <dtml-var manage_page_footer>]]> |
|---|
| 202 | </item> |
|---|
| 203 | <item key="description"></item> |
|---|
| 204 | <item key="exec" type="int">0</item> |
|---|
| 205 | <item key="id"><![CDATA[manage_translate]]></item> |
|---|
| 206 | <item key="meta_type"><![CDATA[DTML Method]]></item> |
|---|
| 207 | <item key="meta_types" type="list"> |
|---|
| 208 | <list> |
|---|
| 209 | <item><![CDATA[ZMSDocument]]></item> |
|---|
| 210 | <item><![CDATA[ZMSFolder]]></item> |
|---|
| 211 | <item><![CDATA[ZMS]]></item> |
|---|
| 212 | </list> |
|---|
| 213 | </item> |
|---|
| 214 | <item key="name"><![CDATA[Translate...]]></item> |
|---|
| 215 | <item key="roles" type="list"> |
|---|
| 216 | <list> |
|---|
| 217 | <item><![CDATA[ZMSEditor]]></item> |
|---|
| 218 | <item><![CDATA[ZMSAuthor]]></item> |
|---|
| 219 | <item><![CDATA[ZMSAdministrator]]></item> |
|---|
| 220 | </list> |
|---|
| 221 | </item> |
|---|
| 222 | </dictionary> |
|---|