Ticket #3281: 3281.patch
File 3281.patch, 18.0 KB (added by , 16 years ago) |
---|
-
FCKeditorParser.body.php
33 33 * @param string $text 34 34 * @return string 35 35 */ 36 private function fck_addToStrtr($text , $replaceLineBreaks = true) {36 private function fck_addToStrtr($text) { 37 37 $key = 'Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw'; 38 38 $this->fck_mw_strtr_span_counter++; 39 if ($replaceLineBreaks) { 40 $this->fck_mw_strtr_span[$key] = str_replace(array("\r\n", "\n", "\r"),"fckLR",$text); 41 } 42 else { 43 $this->fck_mw_strtr_span[$key] = $text; 44 } 39 $this->fck_mw_strtr_span[$key] = $text; 45 40 return $key; 46 41 } 47 42 … … 83 78 } 84 79 85 80 if (empty($argv)) { 86 $ret = "< spanclass=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$this->fck_mw_taghook."\">";81 $ret = "<pre class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$this->fck_mw_taghook."\">"; 87 82 } 88 83 else { 89 $ret = "< spanclass=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$this->fck_mw_taghook."\"";84 $ret = "<pre class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$this->fck_mw_taghook."\""; 90 85 foreach ($argv as $key=>$value) { 91 86 $ret .= " ".$key."=\"".$value."\""; 92 87 } … … 97 92 } 98 93 else { 99 94 $ret .= htmlspecialchars($str); 100 $ret .= "</ span>";95 $ret .= "</pre>"; 101 96 } 102 97 103 98 $replacement = $this->fck_addToStrtr($ret); … … 114 109 */ 115 110 function fck_wikiTag( $tagName, $str, $argv = array()) { 116 111 if (empty($argv)) { 117 $ret = "< spanclass=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">";112 $ret = "<pre class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 118 113 } 119 114 else { 120 $ret = "< spanclass=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\"";115 $ret = "<pre class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\""; 121 116 foreach ($argv as $key=>$value) { 122 117 $ret .= " ".$key."=\"".$value."\""; 123 118 } … … 128 123 } 129 124 else { 130 125 $ret .= htmlspecialchars($str); 131 $ret .= "</ span>";126 $ret .= "</pre>"; 132 127 } 133 128 134 129 $replacement = $this->fck_addToStrtr($ret); … … 312 307 if (substr($text, $spaceStart, 1) === "\n" and substr($text, $spaceStart + $spaceLen, 1) === "\n") { 313 308 # Remove the comment, leading and trailing 314 309 # spaces, and leave only one newline. 315 $replacement = $this->fck_addToStrtr(substr($text, $spaceStart, $spaceLen+1) , false);310 $replacement = $this->fck_addToStrtr(substr($text, $spaceStart, $spaceLen+1)); 316 311 $text = substr_replace($text, $replacement."\n", $spaceStart, $spaceLen + 1); 317 312 } 318 313 else { 319 314 # Remove just the comment. 320 $replacement = $this->fck_addToStrtr(substr($text, $start, $end - $start) , false);315 $replacement = $this->fck_addToStrtr(substr($text, $start, $end - $start)); 321 316 $text = substr_replace($text, $replacement, $start, $end - $start); 322 317 } 323 318 } … … 416 411 $inner = htmlspecialchars(strtr(substr($text, $startingPos, $pos - $startingPos + 19), $strtr)); 417 412 $this->fck_mw_strtr_span['href="Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw"'] = 'href="'.$inner.'"'; 418 413 if($opened <= $closed) { // {{template}} is NOT in [] or [[]] 419 $this->fck_mw_strtr_span['Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw'] = '< span class="fck_mw_template">'.str_replace(array("\r\n", "\n", "\r"),"fckLR",$inner).'</span>';414 $this->fck_mw_strtr_span['Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw'] = '<pre class="fck_mw_template">'.$inner.'</pre>'; 420 415 }else{ 421 $this->fck_mw_strtr_span['Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw'] = str_replace(array("\r\n", "\n", "\r"),"fckLR",$inner);416 $this->fck_mw_strtr_span['Fckmw'.$this->fck_mw_strtr_span_counter.'fckmw'] = $inner; 422 417 } 423 418 $startingPos = $pos + 19; 424 419 $this->fck_mw_strtr_span_counter++; … … 468 463 function replaceFreeExternalLinks( $text ) { return $text; } 469 464 function stripNoGallery(&$text) {} 470 465 function stripToc( $text ) { 471 //$prefix = '< spanclass="fck_mw_magic">';472 //$suffix = '</ span>';466 //$prefix = '<pre class="fck_mw_magic">'; 467 //$suffix = '</pre>'; 473 468 $prefix = ''; 474 469 $suffix = ''; 475 470 … … 512 507 global $leaveRawTemplates; 513 508 if (!empty($leaveRawTemplates)) { 514 509 foreach ($leaveRawTemplates as $l) { 515 $this->fck_mw_strtr_span[$l] = substr($this->fck_mw_strtr_span[$l], 30, -7);510 $this->fck_mw_strtr_span[$l] = substr($this->fck_mw_strtr_span[$l], 29, -6); 516 511 } 517 512 } 518 513 $text = strtr($parserOutput->getText(), $this->fck_mw_strtr_span); -
plugins/mediawiki/dialogs/ref.html
79 79 { 80 80 if ( !oRef ) 81 81 { 82 oRef = FCK.EditorDocument.createElement( ' SPAN' ) ;82 oRef = FCK.EditorDocument.createElement( 'PRE' ) ; 83 83 oRef.className = 'fck_mw_ref' ; 84 84 } 85 85 -
plugins/mediawiki/dialogs/source.html
34 34 var FCKConfig = oEditor.FCKConfig ; 35 35 var FCKRegexLib = oEditor.FCKRegexLib ; 36 36 var FCKTools = oEditor.FCKTools ; 37 var FCKBrowserInfo = oEditor.FCKBrowserInfo ; 37 38 38 39 document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ; 39 40 … … 73 74 { 74 75 if ( !oSource ) return ; 75 76 76 GetE('xSourceText').value = FCKTools.HTMLDecode( oSource.innerHTML ).replace(/ fckLR/g,'\r\n').replace( /"/g, '"' );77 GetE('xSourceText').value = FCKTools.HTMLDecode( oSource.innerHTML ).replace(/<br>/g,'\r\n').replace( /"/g, '"' ); 77 78 GetE('xSourceLang').value = oSource.getAttribute( 'lang' ) ; 78 79 } 79 80 … … 84 85 85 86 if ( !oSource ) 86 87 { 87 oSource = FCK.EditorDocument.createElement( ' SPAN' ) ;88 oSource = FCK.EditorDocument.createElement( 'PRE' ) ; 88 89 oSource.className = 'fck_mw_source' ; 89 90 } 90 91 91 var sourceData = FCKTools.HTMLEncode(GetE('xSourceText').value.Trim() .replace(/(\r\n|\n)/g, 'fckLR')).replace( /"/g, '"' ) ;92 var sourceData = FCKTools.HTMLEncode(GetE('xSourceText').value.Trim()).replace( /"/g, '"' ) ; 92 93 var lang = GetE('xSourceLang').value.Trim().toLowerCase(); 93 94 94 95 if ( lang.length && supportedLanguages.indexOf( ',' + lang + ',' ) == -1) { … … 96 97 return false; 97 98 } 98 99 99 oSource.innerHTML = sourceData ; 100 if ( FCKBrowserInfo.IsIE ) 101 { 102 var className = oSource.className; 103 var temp = FCK.EditorDocument.createElement( 'div' ) ; 104 temp.appendChild( oSource ) ; 105 oSource.outerHTML = '<pre>\n' + sourceData + '</pre>' ; 106 oSource = temp.removeChild( temp.firstChild ) ; 107 oSource.className = className; 108 } 109 else 110 { 111 oSource.innerHTML = sourceData ; 112 } 113 100 114 oSource.setAttribute( 'lang', lang ) ; 101 115 102 if ( !oFakeImage )116 if ( !oFakeImage || FCKBrowserInfo.IsIE ) 103 117 { 104 118 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWSource', oSource ) ; 105 119 oFakeImage.setAttribute( '_fck_mw_source', 'true', 0 ) ; -
plugins/mediawiki/dialogs/special.html
34 34 var FCKConfig = oEditor.FCKConfig ; 35 35 var FCKRegexLib = oEditor.FCKRegexLib ; 36 36 var FCKTools = oEditor.FCKTools ; 37 var FCKBrowserInfo = oEditor.FCKBrowserInfo ; 37 38 38 39 document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ; 39 40 … … 42 43 43 44 // Get the selected flash embed (if available). 44 45 var oFakeImage = FCK.Selection.GetSelectedElement() ; 45 var o TemplateSpan;46 var oSpecialTag ; 46 47 var sFakeClass = 'FCK__MWSpecial'; 47 48 var sSelectedTag = ""; 48 49 … … 52 53 { 53 54 if ( oFakeImage.getAttribute('_fck_mw_special') ) 54 55 { 55 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;56 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 56 57 sFakeClass = 'FCK__MWSpecial'; 57 58 } 58 59 else if ( oFakeImage.getAttribute('_fck_mw_html') ) 59 60 { 60 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;61 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 61 62 sFakeClass = 'FCK__MWHtml'; 62 63 } 63 64 else if ( oFakeImage.getAttribute('_fck_mw_nowiki') ) 64 65 { 65 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;66 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 66 67 sFakeClass = 'FCK__MWNowiki'; 67 68 } 68 69 else if ( oFakeImage.getAttribute('_fck_mw_noinclude') ) 69 70 { 70 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;71 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 71 72 sFakeClass = 'FCK__MWNoinclude'; 72 73 } 73 74 else if ( oFakeImage.getAttribute('_fck_mw_gallery') ) 74 75 { 75 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;76 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 76 77 sFakeClass = 'FCK__MWGallery'; 77 78 } 78 79 else if ( oFakeImage.getAttribute('_fck_mw_onlyinclude') ) 79 80 { 80 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;81 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 81 82 sFakeClass = 'FCK__MWOnlyinclude'; 82 83 } 83 84 else if ( oFakeImage.getAttribute('_fck_mw_includeonly') ) 84 85 { 85 o TemplateSpan= FCK.GetRealElement( oFakeImage ) ;86 oSpecialTag = FCK.GetRealElement( oFakeImage ) ; 86 87 sFakeClass = 'FCK__MWIncludeonly'; 87 88 } 88 89 else … … 131 132 oEditor.window.parent.sajax_request_type = 'GET' ; 132 133 oEditor.window.parent.sajax_do_call( 'wfSajaxSearchSpecialTagFCKeditor',[empty], LoadSearchResults ) ; 133 134 134 if ( !oTemplateSpan ) return ; 135 if ( !oSpecialTag ) { 136 return ; 137 } 135 138 136 GetE('xTemplateRaw').value = FCKTools.HTMLDecode(o TemplateSpan.innerHTML).replace(/fckLR/g,'\r\n' ).replace( /"/g, '"' ) ;137 var tagName = o TemplateSpan.getAttribute('_fck_mw_tagname').toLowerCase();139 GetE('xTemplateRaw').value = FCKTools.HTMLDecode(oSpecialTag.innerHTML).replace(/<br>/g,'\r\n' ).replace( /"/g, '"' ) ; 140 var tagName = oSpecialTag.getAttribute('_fck_mw_tagname').toLowerCase(); 138 141 139 142 sSelectedTag = tagName ; 140 143 GetE('xSelectTag').value = tagName; … … 158 161 //#### The OK button was hit. 159 162 function Ok() 160 163 { 161 if ( !o TemplateSpan)164 if ( !oSpecialTag ) 162 165 { 163 oTemplateSpan = FCK.EditorDocument.createElement( 'SPAN' ) ; 164 oTemplateSpan.className = 'fck_mw_special' ; 165 SetAttribute( oTemplateSpan, '_fck_mw_customtag', 'true' ) ; 166 oSpecialTag = FCK.EditorDocument.createElement( 'PRE' ) ; 167 oSpecialTag.className = 'fck_mw_special' ; 166 168 } 167 169 168 var templateData = FCKTools.HTMLEncode(GetE('xTemplateRaw').value.Trim() .replace(/(\r\n|\n)/g, 'fckLR' )).replace( /"/g, '"' ) ;170 var templateData = FCKTools.HTMLEncode(GetE('xTemplateRaw').value.Trim()).replace( /"/g, '"' ) ; 169 171 170 oTemplateSpan.innerHTML = templateData ; 171 SetAttribute( oTemplateSpan, '_fck_mw_tagname', GetE('xSelectTag').value ) ; 172 if ( FCKBrowserInfo.IsIE ) 173 { 174 var className = oSpecialTag.className; 175 var temp = FCK.EditorDocument.createElement( 'div' ) ; 176 temp.appendChild( oSpecialTag ) ; 177 oSpecialTag.outerHTML = '<pre>\n' + templateData + '</pre>' ; 178 oSpecialTag = temp.removeChild( temp.firstChild ) ; 179 oSpecialTag.className = className; 180 } 181 else 182 { 183 oSpecialTag.innerHTML = templateData ; 184 } 172 185 186 SetAttribute( oSpecialTag, '_fck_mw_tagname', GetE('xSelectTag').value ) ; 187 SetAttribute( oSpecialTag, '_fck_mw_customtag', 'true' ) ; 188 173 189 switch (GetE('xSelectTag').value) 174 190 { 175 191 case 'noinclude': … … 195 211 break; 196 212 } 197 213 198 if ( !oFakeImage )214 if ( !oFakeImage || FCKBrowserInfo.IsIE ) 199 215 { 200 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( sFakeClass, o TemplateSpan) ;216 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( sFakeClass, oSpecialTag ) ; 201 217 oFakeImage.setAttribute( '_fck_mw_special', 'true', 0 ) ; 202 218 oFakeImage = FCK.InsertElement( oFakeImage ) ; 203 219 } -
plugins/mediawiki/dialogs/template.html
34 34 var FCKConfig = oEditor.FCKConfig ; 35 35 var FCKRegexLib = oEditor.FCKRegexLib ; 36 36 var FCKTools = oEditor.FCKTools ; 37 var FCKBrowserInfo = oEditor.FCKBrowserInfo ; 37 38 38 39 document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ; 39 40 … … 103 104 inputText = FCKConfig.ProtectedSource.Revert(inputText, 0); //#2509 104 105 if (inputText.length>0 && inputText.indexOf('{{#')<0 && inputText.indexOf('{{:')<0 ) 105 106 { 106 var templateName = inputText.substring(2,inputText.indexOf(' fckLR'));107 if (inputText.indexOf(' fckLR')<1)107 var templateName = inputText.substring(2,inputText.indexOf('<br>')); 108 if (inputText.indexOf('<br>')<1) 108 109 templateName = inputText.substring(2,inputText.indexOf('|')); 109 110 if (inputText.indexOf('|')<1) 110 111 templateName = inputText.substring(2,inputText.indexOf('}}')); 111 112 112 113 SetUrl(templateName.charAt(0).toUpperCase() + templateName.substr(1)); 113 114 } 114 GetE('xTemplateRaw').value = inputText.replace(/ fckLR/g,'\r\n').replace( /"/g, '"' );115 GetE('xTemplateRaw').value = inputText.replace(/<br>/g,'\r\n').replace( /"/g, '"' ); 115 116 } 116 117 117 118 function SetUrl(link) … … 126 127 { 127 128 if ( !oTemplateSpan ) 128 129 { 129 oTemplateSpan = FCK.EditorDocument.createElement( ' SPAN' ) ;130 oTemplateSpan = FCK.EditorDocument.createElement( 'PRE' ) ; 130 131 oTemplateSpan.className = 'fck_mw_template' ; 131 132 } 132 133 133 134 var protectedValue = FCKConfig.ProtectedSource.Protect(GetE('xTemplateRaw').value); 134 var templateData = FCKTools.HTMLEncode(protectedValue.toString().Trim() .replace(/(\r\n|\n)/g, 'fckLR')).replace( /"/g, '"' ) ;135 var templateData = FCKTools.HTMLEncode(protectedValue.toString().Trim()).replace( /"/g, '"' ) ; 135 136 136 137 if ( !( /^{{[\s\S]+}}$/.test( templateData ) ) ) 137 138 { … … 139 140 return false ; 140 141 } 141 142 142 oTemplateSpan.innerHTML = templateData ; 143 if ( FCKBrowserInfo.IsIE ) 144 { 145 var className = oTemplateSpan.className; 146 var temp = FCK.EditorDocument.createElement( 'div' ) ; 147 temp.appendChild( oTemplateSpan ) ; 148 oTemplateSpan.outerHTML = '<pre>\n' + templateData + '</pre>' ; 149 oTemplateSpan = temp.removeChild( temp.firstChild ) ; 150 oTemplateSpan.className = className; 151 } 152 else 153 { 154 oTemplateSpan.innerHTML = templateData ; 155 } 143 156 144 if ( !oFakeImage )157 if ( !oFakeImage || FCKBrowserInfo.IsIE ) 145 158 { 146 159 oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWTemplate', oTemplateSpan ) ; 147 160 oFakeImage.setAttribute( '_fck_mw_template', 'true', 0 ) ; -
plugins/mediawiki/fckplugin.js
608 608 609 609 break ; 610 610 611 case ' span' :611 case 'pre' : 612 612 switch ( htmlNode.className ) 613 613 { 614 case 'fck_mw_source' 614 case 'fck_mw_source': 615 615 var refLang = htmlNode.getAttribute( 'lang' ) ; 616 616 617 617 stringBuilder.push( '<source' ) ; 618 618 stringBuilder.push( ' lang="' + refLang + '"' ) ; 619 619 stringBuilder.push( '>' ) ; 620 stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') ) ; 620 this._inPre = true ; 621 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 622 this._inPre = false ; 621 623 stringBuilder.push( '</source>' ) ; 622 return 624 return; 623 625 624 626 case 'fck_mw_ref' : 625 627 var refName = htmlNode.getAttribute( 'name' ) ; … … 634 636 else 635 637 { 636 638 stringBuilder.push( '>' ) ; 637 stringBuilder.push( htmlNode.innerHTML ) ; 639 this._inPre = true ; 640 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 641 this._inPre = false ; 638 642 stringBuilder.push( '</ref>' ) ; 639 643 } 640 644 return ; … … 648 652 return ; 649 653 650 654 case 'fck_mw_template' : 651 stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') ) ; 655 this._inPre = true ; 656 this._AppendChildNodes( htmlNode, stringBuilder, prefix ) ; 657 this._inPre = false ; 652 658 return ; 653 659 654 660 case 'fck_mw_magic' : … … 677 683 678 684 case 'fck_mw_onlyinclude' : 679 685 sNodeName = 'onlyinclude' ; 686 break ; 680 687 681 break ; 688 case 'fck_mw_special' : 689 if ( htmlNode.getAttribute( '_fck_mw_customtag' ) ) 690 sNodeName = htmlNode.getAttribute( '_fck_mw_tagname' ) ; 691 break; 692 682 693 } 683 694 684 // Change the node name and fell in the "default" case.685 if ( htmlNode.getAttribute( '_fck_mw_customtag' ) )686 sNodeName = htmlNode.getAttribute( '_fck_mw_tagname' ) ;687 688 case 'pre' :689 695 var attribs = this._GetAttributesStr( htmlNode ) ; 690 691 696 if ( htmlNode.className == "_fck_mw_lspace") 692 697 { 693 698 stringBuilder.push( "\n " ) ; … … 729 734 stringBuilder.push( '>' ) ; 730 735 } 731 736 } 737 break ; 732 738 733 break ;734 739 default : 735 740 var attribs = this._GetAttributesStr( htmlNode ) ; 736 741 … … 811 816 } 812 817 else 813 818 { 814 textValue = FCKTools.HTMLDecode(textValue) .replace(/fckLR/g,'\r\n');819 textValue = FCKTools.HTMLDecode(textValue); 815 820 } 816 821 817 822 stringBuilder.push( textValue ) ; … … 1000 1005 } 1001 1006 1002 1007 // Templates and magic words. 1003 var aSpans = document.getElementsByTagName( ' SPAN' ) ;1008 var aSpans = document.getElementsByTagName( 'PRE' ) ; 1004 1009 1005 1010 var eSpan ; 1006 1011 var i = aSpans.length - 1 ;