Ticket #2223: 2223_5.patch

File 2223_5.patch, 9.3 KB (added by Artur Formella, 11 years ago)
  • FCKeditorParser.body.php

     
    305305        }
    306306
    307307        function replaceInternalLinks( $text ) {
    308                 $text = preg_replace("/\[\[([^|\[\]]*?)\]\]/", "[[RTENOTITLE$1|$1]]", $text);   //#2223: [[()]] =>      [[RTENOTITLE%1|%1]]
     308                $text = preg_replace("/\[\[([^|\[\]]*?)\]\]/", "[[$1|RTENOTITLE]]", $text);     //#2223: [[()]] =>      [[%1|RTENOTITLE]]
    309309                $text = preg_replace("/\[\[:(.*?)\]\]/", "[[RTECOLON$1]]", $text);      //change ':' => 'RTECOLON' in links
    310310                $text = parent::replaceInternalLinks($text);
    311                 $text = preg_replace("/<strong class=\"selflink\">(.*?)<\/strong>/", "<a href=\"".$this->mTitle->mDbkeyform."\" class=\"selflink\">$1</a>", $text);                             // #2075
    312                 $text = preg_replace("/\[\[RTENOTITLE(.*?)\|/", "[[", $text);                           // remove unused RTENOTITLE
     311                $text = preg_replace("/\|RTENOTITLE\]\]/", "]]", $text);                                // remove unused RTENOTITLE
    313312
    314313                return $text;
    315314        }
  • FCKeditorSkin.body.php

     
    2424                $imgName = $img->getName();
    2525                $found = $img->getURL();
    2626
     27                if (!is_null($alt) && ( $alt == 'RTENOTITLE' ))  {              //2223
     28                        $alt = '';
     29                }
     30
    2731                if ($found) {
    2832                        //trick to get real Url for image:
    2933                        $originalLink = strip_tags(Linker::makeImageLinkObj($nt, $label, $alt, $align , $params , $framed , $thumb , $manual_thumb , $valign ), "<img>");
     
    125129                $imgName = $img->getName();
    126130                $found = $img->getURL();
    127131
     132                if( $frameParams['alt'] == 'RTENOTITLE' ){      //2223
     133                        $frameParams['alt'] = '';
     134                }
    128135                if ($found) {
    129136                        $linker = new Linker();
    130137                        $originalLink = $linker->makeImageLink2( $nt, $file, $frameParams, $handlerParams);
     
    212219
    213220                return $ret;
    214221        }
     222       
     223        function makeLinkObj( $nt, $text= '', $query = '', $trail = '', $prefix = '' ) {
     224                global $wgUser;
     225               
     226                wfProfileIn( __METHOD__ );
     227                if ( $nt->isExternal() ) {
     228                        $args = '';
     229                        $u = $nt->getFullURL();
     230                        $link = $nt->getPrefixedURL();
     231                        if ( '' == $text ) { $text = $nt->getPrefixedText(); }
     232                        $style = $this->getInterwikiLinkAttributes( $link, $text, 'extiw' );
    215233
     234                        $inside = '';
     235                        if ( '' != $trail ) {
     236                                $m = array();
     237                                if ( preg_match( '/^([a-z]+)(.*)$$/sD', $trail, $m ) ) {
     238                                        $inside = $m[1];
     239                                        $trail = $m[2];
     240                                }
     241                        }
     242                        if( $text == 'RTENOTITLE' ) {   //2223
     243                                $text = $u;
     244                                $args .= '_fcknotitle="true" ';
     245                        }
     246                        $t = "<a {$args}href=\"{$u}\"{$style}>{$text}{$inside}</a>";
     247
     248                        wfProfileOut( __METHOD__ );
     249                        return $t;
     250                }
     251               
     252                return Linker::makeLinkObj($nt, $text, $query, $trail, $prefix);
     253       
     254        }
    216255        function makeKnownLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = '' ) {
    217256                $fname = 'FCKeditorSkin::makeKnownLinkObj';
    218257                wfProfileIn( $fname );
    219258
     259                $args = '';
    220260                if ( !is_object( $nt ) ) {
    221261                        wfProfileOut( $fname );
    222262                        return $text;
     
    249289                }
    250290
    251291                list( $inside, $trail ) = Linker::splitTrail( $trail );
    252                 $r = "<a href=\"{$u}\">{$prefix}{$text}{$inside}</a>{$trail}";
     292                $title = "{$prefix}{$text}{$inside}";
     293
     294                $u = preg_replace("/^RTECOLON/", ":", $u);      //change 'RTECOLON' => ':'
     295                if( $text == 'RTENOTITLE' ){
     296                        $args .= '_fcknotitle="true" ';
     297                        $title = $u;
     298                }
     299
     300                $r = "<a {$args}href=\"{$u}\">{$title}</a>{$trail}";
    253301                wfProfileOut( $fname );
    254302                return $r;
    255303        }
     
    260308                        # throw new MWException();
    261309                        return "<!-- ERROR -->{$prefix}{$text}{$trail}";
    262310                }
     311                $args = '';
    263312
    264313                $fname = 'FCKeditorSkin::makeBrokenLinkObj';
    265314                wfProfileIn( $fname );
     
    274323                }
    275324
    276325                list( $inside, $trail ) = Linker::splitTrail( $trail );
    277                 $s = "<a href=\"{$u}\">{$prefix}{$text}{$inside}</a>{$trail}";
     326                $title = "{$prefix}{$text}{$inside}";
    278327
     328                $u = preg_replace("/^RTECOLON/", ":", $u);      //change 'RTECOLON' => ':'
     329                if( $text == 'RTENOTITLE' ){
     330                        $args .= '_fcknotitle="true" ';
     331                        $title = $u;
     332                }
     333               
     334                $s = "<a {$args}href=\"{$u}\">{$title}</a>{$trail}";
     335
    279336                wfProfileOut( $fname );
    280337                return $s;
    281338        }
    282339
     340        function makeSelfLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
     341                if ( '' == $text ) {
     342                        $text = $nt->mDbkeyform;
     343                }
     344                list( $inside, $trail ) = Linker::splitTrail( $trail );
     345                $title = "{$prefix}{$text}{$inside}";
     346                if( $text == 'RTENOTITLE' ){                    //2223
     347                        $args .= '_fcknotitle="true" ';
     348                        $title = $nt->mDbkeyform;
     349                }
     350                return "<a {$args}href=\"".$nt->mDbkeyform."\" class=\"selflink\">{$title}</a>{$trail}";
     351        }
     352
    283353        /**
    284354         * Create a direct link to a given uploaded file.
    285355         *
     
    295365                        ### HOTFIX. Instead of breaking, return empty string.
    296366                        return $text;
    297367                } else {
     368                        $args = '';
    298369                        $orginal = $title->getPartialURL();
    299370                        // Mediawiki 1.11
    300371                        if ( function_exists('wfFindFile') ) {
     
    324395                        if( $text == '' ) {
    325396                                $text = $alt;
    326397                        }
    327                         $u = htmlspecialchars( $url );
    328                         return "<a href=\"{$orginal}\" class=\"$class\" _fck_mw_filename=\"{$orginal}\" _fck_mw_type=\"media\" title=\"{$alt}\">{$text}</a>";
     398                        $orginal = preg_replace("/^RTECOLON/", ":", $orginal);  //change 'RTECOLON' => ':'
     399                        if( $text == 'RTENOTITLE' ){                    //2223
     400                                $args .= '_fcknotitle="true" ';
     401                                $text = $orginal;
     402                                $alt = $orginal;
     403                        }
     404                        return "<a href=\"{$orginal}\" class=\"$class\" {$args} _fck_mw_filename=\"{$orginal}\" _fck_mw_type=\"media\" title=\"{$alt}\">{$text}</a>";
    329405                }
    330406        }
    331407
     
    334410                if( $escape ) {
    335411                        $text = htmlspecialchars( $text );
    336412                }
     413                $url = preg_replace("/^RTECOLON/", ":", $url);  //change 'RTECOLON' => ':'
    337414                if ($linktype == 'autonumber') {
    338415                        return '<a href="'.$url.'">[n]</a>';
    339416                }
    340                 return '<a href="'.$url.'">'.$text.'</a>';
     417                $args = '';
     418                if( $text == 'RTENOTITLE' ){                                                            //2223
     419                        $args .= '_fcknotitle="true" ';
     420                        $text = $url;
     421                }
     422                return '<a '.$args.'href="'.$url.'">'.$text.'</a>';
    341423        }
    342424
    343425        function __call( $m, $a) {
  • mw12/FCKeditorParser_OldPP.body.php

     
    306306        }
    307307
    308308        function replaceInternalLinks( $text ) {
    309                 $text = preg_replace("/\[\[([^|\[\]]*?)\]\]/", "[[RTENOTITLE$1|$1]]", $text);   //#2223: [[()]] =>      [[RTENOTITLE%1|%1]]
     309                $text = preg_replace("/\[\[([^|\[\]]*?)\]\]/", "[[$1|RTENOTITLE]]", $text);     //#2223: [[()]] =>      [[%1|RTENOTITLE]]
    310310                $text = preg_replace("/\[\[:(.*?)\]\]/", "[[RTECOLON$1]]", $text);      //change ':' => 'RTECOLON' in links
    311311                $text = parent::replaceInternalLinks($text);
    312                 $text = preg_replace("/<strong class=\"selflink\">(.*?)<\/strong>/", "<a href=\"".$this->mTitle->mDbkeyform."\" class=\"selflink\">$1</a>", $text);                             // #2075
    313                 $text = preg_replace("/\[\[RTENOTITLE(.*?)\|/", "[[", $text);                           // remove unused RTENOTITLE
     312                $text = preg_replace("/\|RTENOTITLE\]\]/", "]]", $text);                                // remove unused RTENOTITLE
    314313
    315314                return $text;
    316315        }
    317316
     317
    318318        function makeImage( $nt, $options ) {
    319319                FCKeditorParser::$fkc_mw_makeImage_options = $options;
    320320                return parent::makeImage( $nt, $options );
     
    496496                        }
    497497                        $parserOutput->setText($text);
    498498                }
    499                
     499
    500500                if (!empty($parserOutput->mLanguageLinks)) {
    501501                        foreach ($parserOutput->mLanguageLinks as $l) {
    502502                                $parserOutput->setText($parserOutput->getText() . "\n" . "<a href=\"".$l."\">".$l."</a>") ;
  • plugins/mediawiki/dialogs/link.html

     
    7070                sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
    7171               
    7272        sHRef = FCKConfig.ProtectedSource.Revert(sHRef, 0);             //#2509
    73         if (sHRef.toLowerCase().StartsWith( 'rtenotitle' ) )
    74         {
    75                 sHRef = sHRef.substring(10);
    76                 bLinkEqualsName = true;
    77         }
    7873               
    7974        if ( sHRef == oLink.innerHTML )
    8075                bLinkEqualsName = true ;
     
    189184        var sUri = GetE('txtUrl').value ;
    190185        sUri  = FCKConfig.ProtectedSource.Protect(sUri);                //#2509
    191186        var realUri = sUri;
    192         if ( bLinkEqualsName ) {
    193                 sUri = 'RTENOTITLE'+ sUri;
    194         }
    195187        if (sUri.StartsWith( ':' ) )
    196188                sUri = sUri.replace(/:/, "rtecolon");
    197189        var sInnerHtml ;
  • plugins/mediawiki/fckplugin.js

     
    367367                                                                stringBuilder.push( isWikiUrl ? '[[' : '[' ) ;
    368368                                                        }
    369369                                                        //#2223
    370                                                         if (href.toLowerCase().StartsWith( 'rtenotitle' ))
     370                                                        if (htmlNode.getAttribute( '_fcknotitle' ) && htmlNode.getAttribute( '_fcknotitle' ) == "true")
    371371                                                        {
    372                                                                 href = href.substring(10);
    373                                                                 if ( FCKConfig.ProtectedSource.Revert(htmlNode.innerHTML, 0) == FCKConfig.ProtectedSource.Revert(href, 0) ) pipeline = false;
     372                                                                var testInner = FCKConfig.ProtectedSource.Revert(htmlNode.innerHTML, 0);
     373                                                                testInner = testInner.replace(/&amp;/, "&")
     374                                                                if ( testInner == FCKConfig.ProtectedSource.Revert(href, 0) ) pipeline = false;
    374375                                                        }
    375376                                                        if (href.toLowerCase().StartsWith( 'rtecolon' ))                //change 'rtecolon=' => ':' in links
    376377                                                        {
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy