Changeset 2229 for FCKeditor/branches
- Timestamp:
- 2008-07-17 11:15:46 (5 months ago)
- Location:
- FCKeditor/branches/features/new_samples
- Files:
-
- 86 modified
- 2 copied
-
editor/css/fck_editorarea.css (modified) (3 diffs)
-
editor/dialog/fck_anchor.html (modified) (2 diffs)
-
editor/dialog/fck_div.html (copied) (copied from FCKeditor/trunk/editor/dialog/fck_div.html)
-
editor/dialog/fck_link/fck_link.js (modified) (3 diffs)
-
editor/dialog/fck_paste.html (modified) (7 diffs)
-
editor/dialog/fck_replace.html (modified) (1 diff)
-
editor/fckeditor.html (modified) (1 diff)
-
editor/lang/af.js (modified) (4 diffs)
-
editor/lang/ar.js (modified) (4 diffs)
-
editor/lang/bg.js (modified) (4 diffs)
-
editor/lang/bn.js (modified) (4 diffs)
-
editor/lang/bs.js (modified) (4 diffs)
-
editor/lang/ca.js (modified) (4 diffs)
-
editor/lang/cs.js (modified) (4 diffs)
-
editor/lang/da.js (modified) (4 diffs)
-
editor/lang/de.js (modified) (4 diffs)
-
editor/lang/el.js (modified) (4 diffs)
-
editor/lang/en-au.js (modified) (4 diffs)
-
editor/lang/en-ca.js (modified) (4 diffs)
-
editor/lang/en.js (modified) (4 diffs)
-
editor/lang/en-uk.js (modified) (4 diffs)
-
editor/lang/eo.js (modified) (4 diffs)
-
editor/lang/es.js (modified) (4 diffs)
-
editor/lang/et.js (modified) (4 diffs)
-
editor/lang/eu.js (modified) (4 diffs)
-
editor/lang/fa.js (modified) (4 diffs)
-
editor/lang/fi.js (modified) (4 diffs)
-
editor/lang/fo.js (modified) (4 diffs)
-
editor/lang/fr-ca.js (modified) (4 diffs)
-
editor/lang/fr.js (modified) (4 diffs)
-
editor/lang/gl.js (modified) (4 diffs)
-
editor/lang/gu.js (modified) (4 diffs)
-
editor/lang/he.js (modified) (4 diffs)
-
editor/lang/hi.js (modified) (4 diffs)
-
editor/lang/hr.js (modified) (4 diffs)
-
editor/lang/hu.js (modified) (4 diffs)
-
editor/lang/it.js (modified) (4 diffs)
-
editor/lang/ja.js (modified) (4 diffs)
-
editor/lang/km.js (modified) (4 diffs)
-
editor/lang/ko.js (modified) (4 diffs)
-
editor/lang/lt.js (modified) (4 diffs)
-
editor/lang/lv.js (modified) (4 diffs)
-
editor/lang/mn.js (modified) (4 diffs)
-
editor/lang/ms.js (modified) (4 diffs)
-
editor/lang/nb.js (modified) (4 diffs)
-
editor/lang/nl.js (modified) (4 diffs)
-
editor/lang/no.js (modified) (4 diffs)
-
editor/lang/pl.js (modified) (4 diffs)
-
editor/lang/pt-br.js (modified) (4 diffs)
-
editor/lang/pt.js (modified) (4 diffs)
-
editor/lang/ro.js (modified) (4 diffs)
-
editor/lang/ru.js (modified) (4 diffs)
-
editor/lang/sk.js (modified) (4 diffs)
-
editor/lang/sl.js (modified) (4 diffs)
-
editor/lang/sr.js (modified) (4 diffs)
-
editor/lang/sr-latn.js (modified) (4 diffs)
-
editor/lang/sv.js (modified) (4 diffs)
-
editor/lang/th.js (modified) (4 diffs)
-
editor/lang/_translationstatus.txt (modified) (1 diff)
-
editor/lang/tr.js (modified) (4 diffs)
-
editor/lang/uk.js (modified) (4 diffs)
-
editor/lang/vi.js (modified) (4 diffs)
-
editor/lang/zh-cn.js (modified) (4 diffs)
-
editor/lang/zh.js (modified) (4 diffs)
-
editor/skins/default/fck_strip.gif (modified) (previous)
-
editor/skins/office2003/fck_strip.gif (modified) (previous)
-
editor/skins/silver/fck_strip.gif (modified) (previous)
-
editor/_source/classes/fckcontextmenu.js (modified) (4 diffs)
-
editor/_source/classes/fckdomrange.js (modified) (2 diffs)
-
editor/_source/classes/fckenterkey.js (modified) (1 diff)
-
editor/_source/classes/fckstyle.js (modified) (10 diffs)
-
editor/_source/commandclasses/fckblockquotecommand.js (copied) (copied from FCKeditor/trunk/editor/_source/commandclasses/fckblockquotecommand.js)
-
editor/_source/commandclasses/fckfitwindow.js (modified) (2 diffs)
-
editor/_source/commandclasses/fck_othercommands.js (modified) (2 diffs)
-
editor/_source/commandclasses/fckshowblocks.js (modified) (1 diff)
-
editor/_source/fckeditorapi.js (modified) (1 diff)
-
editor/_source/internals/fckcommands.js (modified) (2 diffs)
-
editor/_source/internals/fck_contextmenu.js (modified) (2 diffs)
-
editor/_source/internals/fckdomtools.js (modified) (3 diffs)
-
editor/_source/internals/fck.js (modified) (5 diffs)
-
editor/_source/internals/fckselection_gecko.js (modified) (1 diff)
-
editor/_source/internals/fcktablehandler.js (modified) (4 diffs)
-
editor/_source/internals/fcktoolbaritems.js (modified) (1 diff)
-
editor/_source/internals/fcktools_ie.js (modified) (1 diff)
-
editor/_source/internals/fckxhtml.js (modified) (1 diff)
-
fckconfig.js (modified) (3 diffs)
-
_samples/sample.css (modified) (1 diff)
-
_whatsnew.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
FCKeditor/branches/features/new_samples/editor/css/fck_editorarea.css
r1565 r2229 27 27 */ 28 28 29 /* 30 The "body" styles should match your editor web site, mainly regarding31 background color and font family and size.32 */29 /** 30 * The "body" styles should match your editor web site, mainly regarding 31 * background color and font family and size. 32 */ 33 33 34 34 body … … 51 51 } 52 52 53 /* 54 Just uncomment the following block if you want to avoid spaces between55 paragraphs. Remember to apply the same style in your output front end page.56 */53 /** 54 * Just uncomment the following block if you want to avoid spaces between 55 * paragraphs. Remember to apply the same style in your output front end page. 56 */ 57 57 58 58 /* … … 64 64 */ 65 65 66 /** 67 * Uncomment the following block, or only selected lines if appropriate, 68 * if you have some style items that would break the styles combo box. 69 * You can also write other CSS overrides inside the style block below 70 * as needed and they will be applied to inside the style combo only. 71 */ 72 66 73 /* 67 The following are some sample styles used in the "Styles" toolbar command. 68 You should instead remove them, and include the styles used by the site 69 you are using the editor in. 74 .SC_Item *, .SC_ItemSelected * 75 { 76 margin: 0px !important; 77 padding: 0px !important; 78 text-indent: 0px !important; 79 clip: auto !important; 80 position: static !important; 81 } 70 82 */ 83 84 /** 85 * The following are some sample styles used in the "Styles" toolbar command. 86 * You should instead remove them, and include the styles used by the site 87 * you are using the editor in. 88 */ 71 89 72 90 .Bold -
FCKeditor/branches/features/new_samples/editor/dialog/fck_anchor.html
r1565 r2229 122 122 { 123 123 // Nothing was selected, so now just create a normal A 124 aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ; 124 if ( FCKBrowserInfo.IsIE ) 125 aNewAnchors.push( oEditor.FCK.InsertElement( '<a name="' + FCKTools.HTMLEncode( sNewName ).replace( '"', '"' ) + '">' ) ) ; 126 else 127 { 128 var n ; 129 aNewAnchors.push( ( n = oEditor.FCK.InsertElement( 'a' ), n.name = sNewName, n ) ) ; 130 } 125 131 } 126 132 else … … 135 141 { 136 142 oAnchor = aNewAnchors[i] ; 137 138 // Set the name139 oAnchor.name = sNewName ;140 143 141 144 // IE does require special processing to show the Anchor's image -
FCKeditor/branches/features/new_samples/editor/dialog/fck_link/fck_link.js
r2043 r2229 78 78 var oParser = new Object() ; 79 79 80 oParser.ParseEMailUrl = function( emailUrl ) 80 // This method simply returns the two inputs in numerical order. You can even 81 // provide strings, as the method would parseInt() the values. 82 oParser.SortNumerical = function(a, b) 83 { 84 return parseInt( a ) - parseInt( b ) ; 85 } 86 87 oParser.ParseEMailParams = function(sParams) 88 { 89 // Initialize the oEMailParams object. 90 var oEMailParams = new Object() ; 91 oEMailParams.Subject = '' ; 92 oEMailParams.Body = '' ; 93 94 var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ; 95 if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ; 96 97 aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ; 98 if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ; 99 100 return oEMailParams ; 101 } 102 103 // This method returns either an object containing the email info, or FALSE 104 // if the parameter is not an email link. 105 oParser.ParseEMailUri = function( sUrl ) 81 106 { 82 107 // Initializes the EMailInfo object. 83 108 var oEMailInfo = new Object() ; 84 oEMailInfo.Address = '' ; 85 oEMailInfo.Subject = '' ; 86 oEMailInfo.Body = '' ; 87 88 var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ; 89 if ( oParts ) 90 { 91 // Set the e-mail address. 92 oEMailInfo.Address = oParts[1] ; 93 94 // Look for the optional e-mail parameters. 95 if ( oParts[2] ) 96 { 97 var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ; 98 if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ; 99 100 oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ; 101 if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ; 102 } 103 } 104 105 return oEMailInfo ; 109 oEMailInfo.Address = '' ; 110 oEMailInfo.Subject = '' ; 111 oEMailInfo.Body = '' ; 112 113 var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ; 114 if ( aLinkInfo && aLinkInfo[1] == 'mailto' ) 115 { 116 // This seems to be an unprotected email link. 117 var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ; 118 if ( aParts ) 119 { 120 // Set the e-mail address. 121 oEMailInfo.Address = aParts[1] ; 122 123 // Look for the optional e-mail parameters. 124 if ( aParts[2] ) 125 { 126 var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ; 127 oEMailInfo.Subject = oEMailParams.Subject ; 128 oEMailInfo.Body = oEMailParams.Body ; 129 } 130 } 131 return oEMailInfo ; 132 } 133 else if ( aLinkInfo && aLinkInfo[1] == 'javascript' ) 134 { 135 // This may be a protected email. 136 137 // Try to match the url against the EMailProtectionFunction. 138 var func = FCKConfig.EMailProtectionFunction ; 139 if ( func != null ) 140 { 141 try 142 { 143 // Escape special chars. 144 func = func.replace( /([/^$*+.?()\[\]])/g, '\\$1' ) ; 145 146 // Define the possible keys. 147 var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ; 148 149 // Get the order of the keys (hold them in the array <pos>) and 150 // the function replaced by regular expression patterns. 151 var sFunc = func ; 152 var pos = new Array() ; 153 for ( var i = 0 ; i < keys.length ; i ++ ) 154 { 155 var rexp = new RegExp( keys[i] ) ; 156 var p = func.search( rexp ) ; 157 if ( p >= 0 ) 158 { 159 sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ; 160 pos[pos.length] = p + ':' + keys[i] ; 161 } 162 } 163 164 // Sort the available keys. 165 pos.sort( oParser.SortNumerical ) ; 166 167 // Replace the excaped single quotes in the url, such they do 168 // not affect the regexp afterwards. 169 aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ; 170 171 // Create the regexp and execute it. 172 var rFunc = new RegExp( '^' + sFunc + '$' ) ; 173 var aMatch = rFunc.exec( aLinkInfo[2] ) ; 174 if ( aMatch ) 175 { 176 var aInfo = new Array(); 177 for ( var i = 1 ; i < aMatch.length ; i ++ ) 178 { 179 var k = pos[i-1].match(/^\d+:(.+)$/) ; 180 aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ; 181 } 182 183 // Fill the EMailInfo object that will be returned 184 oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ; 185 oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ; 186 oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ; 187 188 return oEMailInfo ; 189 } 190 } 191 catch (e) 192 { 193 } 194 } 195 196 // Try to match the email against the encode protection. 197 var aMatch = aLinkInfo[2].match( /^location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'$/ ) ; 198 if ( aMatch ) 199 { 200 // The link is encoded 201 oEMailInfo.Address = eval( aMatch[1] ) ; 202 if ( aMatch[2] ) 203 { 204 var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ; 205 oEMailInfo.Subject = oEMailParams.Subject ; 206 oEMailInfo.Body = oEMailParams.Body ; 207 } 208 return oEMailInfo ; 209 } 210 } 211 return false; 106 212 } 107 213 108 214 oParser.CreateEMailUri = function( address, subject, body ) 109 215 { 110 var sBaseUri = 'mailto:' + address ; 111 112 var sParams = '' ; 113 114 if ( subject.length > 0 ) 115 sParams = '?subject=' + encodeURIComponent( subject ) ; 116 117 if ( body.length > 0 ) 118 { 119 sParams += ( sParams.length == 0 ? '?' : '&' ) ; 120 sParams += 'body=' + encodeURIComponent( body ) ; 121 } 122 123 return sBaseUri + sParams ; 216 // Switch for the EMailProtection setting. 217 switch ( FCKConfig.EMailProtection ) 218 { 219 case 'function' : 220 var func = FCKConfig.EMailProtectionFunction ; 221 if ( func == null ) 222 { 223 if ( FCKConfig.Debug ) 224 { 225 alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ; 226 } 227 return ''; 228 } 229 230 // Split the email address into name and domain parts. 231 var aAddressParts = address.split( '@', 2 ) ; 232 if ( aAddressParts[1] == undefined ) 233 { 234 aAddressParts[1] = '' ; 235 } 236 237 // Replace the keys by their values (embedded in single quotes). 238 func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ; 239 func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ; 240 func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ; 241 func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ; 242 return 'javascript:' + func ; 243 break ; 244 case 'encode' : 245 var aParams = [] ; 246 var aAddressCode = [] ; 247 248 if ( subject.length > 0 ) 249 aParams.push( 'subject='+ encodeURIComponent( subject ) ) ; 250 if ( body.length > 0 ) 251 aParams.push( 'body=' + encodeURIComponent( body ) ) ; 252 for ( var i = 0 ; i < address.length ; i++ ) 253 aAddressCode.push( address.charCodeAt( i ) ) ; 254 255 return 'javascript:location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\'' ; 256 default : // 'none' 257 var sBaseUri = 'mailto:' + address ; 258 259 var sParams = '' ; 260 261 if ( subject.length > 0 ) 262 sParams = '?subject=' + encodeURIComponent( subject ) ; 263 264 if ( body.length > 0 ) 265 { 266 sParams += ( sParams.length == 0 ? '?' : '&' ) ; 267 sParams += 'body=' + encodeURIComponent( body ) ; 268 } 269 270 return sBaseUri + sParams ; 271 } 124 272 } 125 273 … … 264 412 var sProtocol = oRegex.UriProtocol.exec( sHRef ) ; 265 413 266 if ( sProtocol ) 414 // Search for a protected email link. 415 var oEMailInfo = oParser.ParseEMailUri( sHRef ); 416 417 if ( oEMailInfo ) 418 { 419 sType = 'email' ; 420 421 GetE('txtEMailAddress').value = oEMailInfo.Address ; 422 GetE('txtEMailSubject').value = oEMailInfo.Subject ; 423 GetE('txtEMailBody').value = oEMailInfo.Body ; 424 } 425 else if ( sProtocol ) 267 426 { 268 427 sProtocol = sProtocol[0].toLowerCase() ; … … 271 430 // Remove the protocol and get the remaining URL. 272 431 var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ; 273 274 if ( sProtocol == 'mailto:' ) // It is an e-mail link. 275 { 276 sType = 'email' ; 277 278 var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ; 279 GetE('txtEMailAddress').value = oEMailInfo.Address ; 280 GetE('txtEMailSubject').value = oEMailInfo.Subject ; 281 GetE('txtEMailBody').value = oEMailInfo.Body ; 282 } 283 else // It is a normal link. 284 { 285 sType = 'url' ; 286 GetE('txtUrl').value = sUrl ; 287 } 432 sType = 'url' ; 433 GetE('txtUrl').value = sUrl ; 288 434 } 289 435 else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link. -
FCKeditor/branches/features/new_samples/editor/dialog/fck_paste.html
r1565 r2229 65 65 var eFrameSpace = document.getElementById( 'xFrameSpace' ) ; 66 66 eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' + 67 'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff">< /iframe>' ;67 'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ; 68 68 69 69 var oFrame = eFrameSpace.firstChild ; … … 188 188 189 189 html = html.replace(/<o:p>\s*<\/o:p>/g, '') ; 190 html = html.replace(/<o:p> .*?<\/o:p>/g, ' ') ;190 html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, ' ') ; 191 191 192 192 // Remove mso-xxx styles. … … 225 225 html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ; 226 226 227 // Remove style, meta and link tags 228 html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ; 229 html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ; 230 227 231 // Remove empty styles. 228 232 html = html.replace( /\s*style="\s*"/gi, '' ) ; … … 235 239 html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ; 236 240 237 html = html.replace( /<SPAN\s*>( .*?)<\/SPAN>/gi, '$1' ) ;238 239 html = html.replace( /<FONT\s*>( .*?)<\/FONT>/gi, '$1' ) ;241 html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ; 242 243 html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ; 240 244 241 245 // Remove XML elements and declarations 242 246 html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ; 243 247 248 // Remove w: tags with contents. 249 html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ; 250 244 251 // Remove Tags with XML namespace declarations: <o:p><\/o:p> 245 252 html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ; 246 253 247 254 // Remove comments [SF BUG-1481861]. 248 html = html.replace(/<\!-- .*?-->/g, '' ) ;255 html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ; 249 256 250 257 html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ; … … 253 260 254 261 // Remove "display:none" tags. 255 html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none (.*?)<\/\1>/ig, '' ) ;262 html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ; 256 263 257 264 // Remove language tags … … 268 275 269 276 // Word likes to insert extra <font> tags, when using MSIE. (Wierd). 270 html = html.replace( /<(H\d)><FONT[^>]*>( .*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );271 html = html.replace( /<(H\d)><EM>( .*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );277 html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' ); 278 html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' ); 272 279 } 273 280 else … … 283 290 284 291 // Transform <P> to <DIV>