Changeset 2849

Show
Ignore:
Timestamp:
12/04/07 09:39:54 (1 year ago)
Author:
jun66j5
Message:

refs #2142

  • Fixed a problem that the autolinks generation convert from CamelCase to [CamelCase CamelCase].
  • Fixed a problem that text like CamelCase get [wiki:CamelCase] instead of CamelCase.
  • Fixed some bugs.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracwysiwygplugin/0.10/tests/testcase.js

    r2842 r2849  
    558558 
    559559        unit.add("WikiPageName", function() { 
    560             var dom = element("p", 
    561                 element("a", "CamelCase", { 
    562                     href: "./search?q=" + encodeURIComponent("wiki:CamelCase"), 
    563                     title: "wiki:CamelCase", "tracwysiwyg-link": "wiki:CamelCase", 
    564                     onclick: "return false;" }), 
    565                 " CamelCase FooBarA FOo FoobarA Oneà
    566 ngström OneÃ¥ngström setTextColor"); 
    567             generateFragment.call(this, dom, 
     560            var dom = fragment( 
     561                element("p", 
     562                    a("wiki:CamelCase", "CamelCase"), 
     563                    " CamelCase FooBarA FOo FoobarA Oneà
     564ngström OneÃ¥ngström setTextColor"), 
     565                element("p", 
     566                    a("wiki:WikiStart", "WikiStart"), 
     567                    " Wiki", 
     568                    a("wiki:Start", "Start"), 
     569                    " ", 
     570                    a("wiki:Wiki", "Wiki"), 
     571                    "Start Wiki", 
     572                    a("wiki:Start", "Start"), 
     573                    "Wiki")); 
     574            generate.call(this, dom, [ 
    568575                "CamelCase !CamelCase FooBarA FOo FoobarA Oneà
    569 ngström OneÃ¥ngström setTextColor"); 
    570             generate.call(this, dom, 
    571                 "[wiki:CamelCase] !CamelCase FooBarA FOo FoobarA Oneà
    572 ngström OneÃ¥ngström setTextColor"); 
     576ngström OneÃ¥ngström setTextColor", 
     577                "", 
     578                "WikiStart Wiki[wiki:Start] [wiki:Wiki]Start Wiki[wiki:Start]Wiki" ].join("\n")); 
    573579        }); 
    574580 
  • tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js

    r2842 r2849  
    473473 
    474474    function listenerKeypress(event) { 
    475         if (!self.autolink) { 
    476             return; 
    477         } 
    478475        event = event || self.contentWindow.event; 
    479476        switch (event.charCode || event.keyCode) { 
     
    608605 
    609606TracWysiwyg.prototype.detectTracLink = function(event) { 
     607    if (!this.autolink) { 
     608        return; 
     609    } 
    610610    var range = this.getSelectionRange(); 
    611611    var node = range.startContainer; 
     
    640640    var text = [ node.nodeValue.substring(0, offset) ]; 
    641641    for ( ; ; ) { 
     642        if (/[ \t\r\n\f\v]/.test(text[text.length - 1])) { 
     643            break; 
     644        } 
    642645        node = node.previousSibling; 
    643646        if (!node || node.nodeType == 1) { 
     
    654657 
    655658    var pattern = this.wikiDetectTracLinkPattern; 
    656     pattern.lastIndex = 0
     659    pattern.lastIndex = /[^ \t\r\n\f\v]*$/.exec(text).index
    657660    var match, tmp; 
    658661    for (tmp = pattern.exec(text); tmp; tmp = pattern.exec(text)) { 
     
    663666    } 
    664667 
    665     var label = match[match.length - 1]; 
    666     var link = this.convertWikiSyntax(label); 
     668    var label = match[0]; 
     669    var link = this.normalizeTracLink(label); 
    667670    var id = this.generateDomId(); 
    668671    var anchor = this.createAnchor(link, label, { id: id, "tracwysiwyg-autolink": true }); 
     
    19911994    var wikiSyntaxPattern = this.wikiSyntaxPattern; 
    19921995    var tracLinkPattern = new RegExp("^" + this._tracLink + "$"); 
     1996    var wikiPageNamePattern = new RegExp("^" + this._wikiPageName + "$"); 
    19931997    var decorationTokenPattern = /^(?:'''|''|__|\^|,,)$/; 
    19941998 
     
    21812185        } 
    21822186        var text = null; 
    2183         if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink" 
    2184             ? (wikiSyntaxPattern.test(label) || tracLinkPattern.test(label)) 
    2185             : (link == label && tracLinkPattern.test(label))) 
    2186         { 
    2187             text = label; 
     2187        var traclink = null; 
     2188        if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink") { 
     2189            if (wikiPageNamePattern.test(label)) { 
     2190                text = label; 
     2191                link = "wiki:" + label; 
     2192                traclink = "[wiki:" + label + "]"; 
     2193            } 
     2194            else if (wikiSyntaxPattern.test(label)) { 
     2195                text = label; 
     2196                link = self.convertWikiSyntax(label); 
     2197            } 
     2198            else if (tracLinkPattern.test(label)) { 
     2199                text = link = label; 
     2200            } 
     2201        } 
     2202        else { 
     2203            if (link == label && tracLinkPattern.test(label)) { 
     2204                text = label; 
     2205            } 
    21882206        } 
    21892207        if (!text) { 
     
    21912209            if (match) { 
    21922210                if (label == match[2]) { 
    2193                     text = "[" + link + "]"; 
     2211                    if (match[1] == "wiki" && wikiPageNamePattern.test(match[2])) { 
     2212                        text = match[2]; 
     2213                        traclink = "[wiki:" + text + "]"; 
     2214                    } 
     2215                    else { 
     2216                        text = "[" + link + "]"; 
     2217                    } 
    21942218                } 
    21952219                else { 
     
    22212245            text = tracLinkText(link, label); 
    22222246        } 
    2223         pushTextWithDecorations(text, node, /^[\w.+-]/.test(text) ? tracLinkText(link, label) : null); 
     2247        if (!traclink && /^[\w.+-]/.test(text)) { 
     2248            traclink = tracLinkText(link, label); 
     2249        } 
     2250        pushTextWithDecorations(text, node, traclink); 
    22242251    } 
    22252252 
  • tracwysiwygplugin/0.11/tests/testcase.js

    r2842 r2849  
    558558 
    559559        unit.add("WikiPageName", function() { 
    560             var dom = element("p", 
    561                 element("a", "CamelCase", { 
    562                     href: "./search?q=" + encodeURIComponent("wiki:CamelCase"), 
    563                     title: "wiki:CamelCase", "tracwysiwyg-link": "wiki:CamelCase", 
    564                     onclick: "return false;" }), 
    565                 " CamelCase FooBarA FOo FoobarA Oneà
    566 ngström OneÃ¥ngström setTextColor"); 
    567             generateFragment.call(this, dom, 
     560            var dom = fragment( 
     561                element("p", 
     562                    a("wiki:CamelCase", "CamelCase"), 
     563                    " CamelCase FooBarA FOo FoobarA Oneà
     564ngström OneÃ¥ngström setTextColor"), 
     565                element("p", 
     566                    a("wiki:WikiStart", "WikiStart"), 
     567                    " Wiki", 
     568                    a("wiki:Start", "Start"), 
     569                    " ", 
     570                    a("wiki:Wiki", "Wiki"), 
     571                    "Start Wiki", 
     572                    a("wiki:Start", "Start"), 
     573                    "Wiki")); 
     574            generate.call(this, dom, [ 
    568575                "CamelCase !CamelCase FooBarA FOo FoobarA Oneà
    569 ngström OneÃ¥ngström setTextColor"); 
    570             generate.call(this, dom, 
    571                 "[wiki:CamelCase] !CamelCase FooBarA FOo FoobarA Oneà
    572 ngström OneÃ¥ngström setTextColor"); 
     576ngström OneÃ¥ngström setTextColor", 
     577                "", 
     578                "WikiStart Wiki[wiki:Start] [wiki:Wiki]Start Wiki[wiki:Start]Wiki" ].join("\n")); 
    573579        }); 
    574580 
  • tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js

    r2842 r2849  
    473473 
    474474    function listenerKeypress(event) { 
    475         if (!self.autolink) { 
    476             return; 
    477         } 
    478475        event = event || self.contentWindow.event; 
    479476        switch (event.charCode || event.keyCode) { 
     
    608605 
    609606TracWysiwyg.prototype.detectTracLink = function(event) { 
     607    if (!this.autolink) { 
     608        return; 
     609    } 
    610610    var range = this.getSelectionRange(); 
    611611    var node = range.startContainer; 
     
    640640    var text = [ node.nodeValue.substring(0, offset) ]; 
    641641    for ( ; ; ) { 
     642        if (/[ \t\r\n\f\v]/.test(text[text.length - 1])) { 
     643            break; 
     644        } 
    642645        node = node.previousSibling; 
    643646        if (!node || node.nodeType == 1) { 
     
    654657 
    655658    var pattern = this.wikiDetectTracLinkPattern; 
    656     pattern.lastIndex = 0
     659    pattern.lastIndex = /[^ \t\r\n\f\v]*$/.exec(text).index
    657660    var match, tmp; 
    658661    for (tmp = pattern.exec(text); tmp; tmp = pattern.exec(text)) { 
     
    663666    } 
    664667 
    665     var label = match[match.length - 1]; 
    666     var link = this.convertWikiSyntax(label); 
     668    var label = match[0]; 
     669    var link = this.normalizeTracLink(label); 
    667670    var id = this.generateDomId(); 
    668671    var anchor = this.createAnchor(link, label, { id: id, "tracwysiwyg-autolink": true }); 
     
    19911994    var wikiSyntaxPattern = this.wikiSyntaxPattern; 
    19921995    var tracLinkPattern = new RegExp("^" + this._tracLink + "$"); 
     1996    var wikiPageNamePattern = new RegExp("^" + this._wikiPageName + "$"); 
    19931997    var decorationTokenPattern = /^(?:'''|''|__|\^|,,)$/; 
    19941998 
     
    21812185        } 
    21822186        var text = null; 
    2183         if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink" 
    2184             ? (wikiSyntaxPattern.test(label) || tracLinkPattern.test(label)) 
    2185             : (link == label && tracLinkPattern.test(label))) 
    2186         { 
    2187             text = label; 
     2187        var traclink = null; 
     2188        if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink") { 
     2189            if (wikiPageNamePattern.test(label)) { 
     2190                text = label; 
     2191                link = "wiki:" + label; 
     2192                traclink = "[wiki:" + label + "]"; 
     2193            } 
     2194            else if (wikiSyntaxPattern.test(label)) { 
     2195                text = label; 
     2196                link = self.convertWikiSyntax(label); 
     2197            } 
     2198            else if (tracLinkPattern.test(label)) { 
     2199                text = link = label; 
     2200            } 
     2201        } 
     2202        else { 
     2203            if (link == label && tracLinkPattern.test(label)) { 
     2204                text = label; 
     2205            } 
    21882206        } 
    21892207        if (!text) { 
     
    21912209            if (match) { 
    21922210                if (label == match[2]) { 
    2193                     text = "[" + link + "]"; 
     2211                    if (match[1] == "wiki" && wikiPageNamePattern.test(match[2])) { 
     2212                        text = match[2]; 
     2213                        traclink = "[wiki:" + text + "]"; 
     2214                    } 
     2215                    else { 
     2216                        text = "[" + link + "]"; 
     2217                    } 
    21942218                } 
    21952219                else { 
     
    22212245            text = tracLinkText(link, label); 
    22222246        } 
    2223         pushTextWithDecorations(text, node, /^[\w.+-]/.test(text) ? tracLinkText(link, label) : null); 
     2247        if (!traclink && /^[\w.+-]/.test(text)) { 
     2248            traclink = tracLinkText(link, label); 
     2249        } 
     2250        pushTextWithDecorations(text, node, traclink); 
    22242251    } 
    22252252