Ticket #2432: 2432.patch

File 2432.patch, 9.3 KB (added by arczi, 19 months ago)
  • FCKeditorParser.body.php

     
    111111        * @param array $argv Arguments 
    112112        * @return string 
    113113        */ 
    114         function fck_wikiTag( $tagName, $str, $argv = array()) { 
     114        function fck_wikiTag( $tagName, $str, $argv = array(), $class= NULL) { 
     115                if (!$class) { 
     116                        $class = $tagName; 
     117                } 
    115118                if (empty($argv)) { 
    116                         $ret = "<span class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
     119                        $ret = "<span class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
    117120                } 
    118121                else { 
    119                         $ret = "<span class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
     122                        $ret = "<span class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\""; 
    120123                        foreach ($argv as $key=>$value) { 
    121124                                $ret .= " ".$key."=\"".$value."\""; 
    122125                        } 
     
    153156         * @private 
    154157         */ 
    155158        function strip( $text, $state, $stripcomments = false , $dontstrip = array () ) { 
    156                 global $wgContLang, $wgUseTeX, $wgScriptPath; 
     159                global $wgContLang, $wgUseTeX, $wgScriptPath, $RTEprotectedTags; 
    157160 
    158161                wfProfileIn( __METHOD__ ); 
    159162                $render = ($this->mOutputType == OT_HTML); 
     
    163166                $nowikiItems = array(); 
    164167                $generalItems = array(); 
    165168 
     169                if(!isset($RTEprotectedTags)){$RTEprotectedTags=array();} 
    166170                $elements = array_merge( 
    167171                array( 'nowiki', 'gallery', 'math' ), 
     172                array_keys( $RTEprotectedTags ), 
    168173                array_keys( $this->mTagHooks ) ); 
    169174                global $wgRawHtml; 
    170175                if( $wgRawHtml ) { 
     
    215220                                                //$output = $this->renderImageGallery( $content, $params ); 
    216221                                                break; 
    217222                                        default: 
    218                                                 if( isset( $this->mTagHooks[$tagName] ) ) { 
     223                                                if ( in_array($tagName, array_keys($RTEprotectedTags)) && ($RTEprotectedTags[$tagName]['protect'])) { 
     224                                                        $output = $this->fck_wikiTag($tagName, $content, $params, 'special'); 
     225                                                } else if( isset( $this->mTagHooks[$tagName] ) ) { 
    219226                                                        $this->fck_mw_taghook = $tagName; //required by FCKeditor 
    220227                                                        $output = call_user_func_array( $this->mTagHooks[$tagName], 
    221228                                                        array( $content, $params, $this ) ); 
  • FCKeditorSajax.body.php

     
    3737} 
    3838 
    3939function wfSajaxSearchSpecialTagFCKeditor($empty) { 
    40         global $wgParser, $wgRawHtml; 
     40        global $wgParser, $RTEprotectedTags, $wgRawHtml; 
    4141 
    42         $ret = "nowiki\nincludeonly\nonlyinclude\nnoinclude\ngallery\n"; 
    43         if( $wgRawHtml ) 
     42        $ret = array("nowiki", "includeonly", "onlyinclude", "noinclude", "gallery"); 
     43         
     44        foreach ($RTEprotectedTags as $key => $h) {     //2432 
     45                $customtag = $key; 
     46 
     47                if (!empty($RTEprotectedTags[$key]['args'])) { 
     48                                $customtag.=':'. implode(":", $RTEprotectedTags[$key]['args']); 
     49                } 
     50                $ret[] = $customtag; 
     51        } 
     52         
     53        if( $wgRawHtml && !in_array('html', $ret)) 
    4454        { 
    45                 $ret.="html\n"; 
     55                $ret[] = 'html'; 
    4656        } 
    4757        foreach ($wgParser->getTags() as $h) { 
    4858                if (!in_array($h, array("pre", "math", "ref", "references"))) { 
    49                         $ret .= $h ."\n"; 
     59                        $ret[] = $h; 
    5060                } 
    5161        } 
     62         
     63        sort($ret); 
     64        $ret = implode("\n", $ret); 
    5265        return $ret; 
    5366} 
    5467 
  • mw12/FCKeditorParser_OldPP.body.php

     
    112112        * @param array $argv Arguments 
    113113        * @return string 
    114114        */ 
    115         function fck_wikiTag( $tagName, $str, $argv = array()) { 
     115        function fck_wikiTag( $tagName, $str, $argv = array(), $class= NULL) { 
     116                if (!$class) { 
     117                        $class = $tagName; 
     118                } 
    116119                if (empty($argv)) { 
    117                         $ret = "<span class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
     120                        $ret = "<span class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
    118121                } 
    119122                else { 
    120                         $ret = "<span class=\"fck_mw_".$tagName."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\">"; 
     123                        $ret = "<span class=\"fck_mw_".$class."\" _fck_mw_customtag=\"true\" _fck_mw_tagname=\"".$tagName."\""; 
    121124                        foreach ($argv as $key=>$value) { 
    122125                                $ret .= " ".$key."=\"".$value."\""; 
    123126                        } 
     
    154157         * @private 
    155158         */ 
    156159        function strip( $text, $state, $stripcomments = false , $dontstrip = array () ) { 
    157                 global $wgContLang, $wgUseTeX, $wgScriptPath; 
     160                global $wgContLang, $wgUseTeX, $wgScriptPath, $RTEprotectedTags; 
    158161 
    159162                wfProfileIn( __METHOD__ ); 
    160163                $render = ($this->mOutputType == OT_HTML); 
     
    164167                $nowikiItems = array(); 
    165168                $generalItems = array(); 
    166169 
     170                if(!isset($RTEprotectedTags)){$RTEprotectedTags=array();} 
    167171                $elements = array_merge( 
    168172                array( 'nowiki', 'gallery', 'math' ), 
     173                array_keys( $RTEprotectedTags ), 
    169174                array_keys( $this->mTagHooks ) ); 
    170175                global $wgRawHtml; 
    171176                if( $wgRawHtml ) { 
     
    216221                                                //$output = $this->renderImageGallery( $content, $params ); 
    217222                                                break; 
    218223                                        default: 
    219                                                 if( isset( $this->mTagHooks[$tagName] ) ) { 
     224                                                if ( in_array($tagName, array_keys($RTEprotectedTags)) && ($RTEprotectedTags[$tagName]['protect'])) { 
     225                                                        $output = $this->fck_wikiTag($tagName, $content, $params, 'special'); 
     226                                                } else if( isset( $this->mTagHooks[$tagName] ) ) { 
    220227                                                        $this->fck_mw_taghook = $tagName; //required by FCKeditor 
    221228                                                        $output = call_user_func_array( $this->mTagHooks[$tagName], 
    222229                                                        array( $content, $params, $this ) ); 
  • plugins/mediawiki/dialogs/special.html

     
    4545var oTemplateSpan ; 
    4646var sFakeClass = 'FCK__MWSpecial'; 
    4747var sSelectedTag = ""; 
     48var tagData = Array(); 
    4849 
    4950if ( oFakeImage ) 
    5051{ 
     
    113114 
    114115        if ( results.length > 0 && !( results.length == 1 && results[0].length == 0 ) ) 
    115116        { 
    116                 for ( var i = 0 ; i < results.length ; i++ ) 
    117                         FCKTools.AddSelectOption( select, results[i], results[i] ) ; 
     117                for ( var i = 0 ; i < results.length ; i++ ) { 
     118                        var tagName = results[i].toString().split( ':' ); 
     119                        tagData[tagName[0]] = tagName; 
     120                        FCKTools.AddSelectOption( select, tagName[0], tagName[0] ) ; 
     121 
     122                        if ((sSelectedTag == tagName[0]) && (tagName.length>1)) {               //2432 
     123                                var argsDiv = GetE( 'args' ); 
     124                                var argsHTML='<table cellpadding=0 border=0>'; 
     125 
     126                                for( var j=1 ; j < tagName.length; j++ ) { 
     127                                        var args = tagName[j].toString().split( ';' ); 
     128                                        var argValue = ""; 
     129                                        if(oTemplateSpan){ 
     130                                                 argValue = oTemplateSpan.getAttribute( args[0] ); 
     131                                        } 
     132                                        if (argValue == null) argValue=""; 
     133                                        argsHTML+='<tr><td>'+args[0]+':</td> <td><input id="'+ args[0] +'" type="text" value="'+ argValue +'"></td></tr>'; 
     134                                } 
     135                                argsHTML+="</table>"; 
     136                                argsDiv.innerHTML=argsHTML; 
     137                        } 
     138                } 
    118139        } 
     140 
    119141         
    120142        if ( sSelectedTag ) { 
    121143                select.value = sSelectedTag ; 
     
    142164function LoadDocumentation() 
    143165{ 
    144166        var tagName = GetE('xSelectTag').value; 
     167        var argsDiv = GetE( 'args' ); 
     168        var argsHTML='<table  cellpadding=0 cellspacing=0 border=0>'; 
     169        var selTagData = tagData[tagName]; 
     170        if (selTagData) {                       //2432 
     171 
     172                for( var j=1 ; j < selTagData.length; j++ ) { 
     173                        var args = selTagData[j].toString().split( ';' ); 
     174                        var argValue = ""; 
     175                        if(oTemplateSpan){ 
     176                                 argValue = oTemplateSpan.getAttribute( args[0] ); 
     177                        } 
     178                        if(argValue == null) argValue=""; 
     179                        argsHTML+='<tr><td>'+args[0]+':</td> <td><input id="'+ args[0] +'" type="text" value="'+ argValue +'"></td></tr>'; 
     180                } 
     181        } 
     182        argsHTML+="</table>"; 
     183        argsDiv.innerHTML=argsHTML; 
     184                                 
    145185        if (tagName == 'dpl') 
    146186                GetE('xDefinition').innerHTML = 'DPL stands for Dynamic Page List, and allows to generate a formatted list of pages based on selection criteria. See <a href="#" onclick="javascript:window.open(\'http://semeb.com/dpldemo/index.php?title=Dynamic_Page_List\')">manual</a> for details'; 
    147187                 
     
    161201         
    162202        var templateData = FCKTools.HTMLEncode(GetE('xTemplateRaw').value.Trim().replace(/(\r\n|\n)/g, 'fckLR' )).replace( /"/g, '&quot;' ) ; 
    163203         
     204        var selTagData = tagData[GetE('xSelectTag').value];             //2432 add custom attributes 
     205        if (selTagData) { 
     206                for( var j=1 ; j < selTagData.length; j++ ) { 
     207                        var args = selTagData[j].toString().split( ';' ); 
     208                        argObj = GetE(args[0]); 
     209                        if(argObj){ 
     210                                argValue = argObj.value; 
     211                                if ( argValue != "" ) 
     212                                        oTemplateSpan.setAttribute(args[0], FCKTools.HTMLEncode(argValue),0); 
     213                                else 
     214                                        oTemplateSpan.removeAttribute(args[0]); 
     215                        } 
     216                } 
     217        } 
     218 
    164219        oTemplateSpan.innerHTML = templateData ; 
    165220        SetAttribute( oTemplateSpan, '_fck_mw_tagname', GetE('xSelectTag').value ) ;    
    166221 
     
    203258 
    204259        </script> 
    205260</head> 
    206 <body style="overflow: hidden"> 
     261<body > 
    207262        <div id="divInfo"> 
    208263                <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"> 
    209264                        <tr> 
     
    225280                                                cols="50" rows="10" wrap="off"></textarea> 
    226281                                </td> 
    227282                        </tr> 
     283                        <tr> 
     284                                <td> 
     285                                        <div id="args"></div> 
     286                                </td> 
     287                        </tr> 
    228288                </table> 
    229289        </div> 
    230290</body>