Changeset 150

Show
Ignore:
Timestamp:
09/15/07 03:45:37 (7 years ago)
Author:
mayuki
Message:

websites/coderepos.org/trac/share/js/HatenaStarTrac.js: refactoring / add options.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • websites/coderepos.org/trac/share/js/HatenaStarTrac.js

    r135 r150  
    11// $Id$ 
     2// 
     3// Options: 
     4// 
     5//  * Hatena.Star.EntryLoader.DisableTracTimeline 
     6//  * Hatena.Star.EntryLoader.DisableTracBrowser 
     7//  * Hatena.Star.EntryLoader.DisableTracBrowserDirList 
     8//  * Hatena.Star.EntryLoader.DisableTracBrowserSourceCode 
     9//  * Hatena.Star.EntryLoader.DisableTracChangeset 
     10// 
    211Hatena.Star.EntryLoader.loadEntries = function () { 
    312    var entries = []; 
    413 
    514    var content = document.getElementById('content'); 
     15    if (content == null) 
     16        return; 
    617 
    718    // timeline 
    8     var elements = Ten.DOM.getElementsByTagAndClassName('dt', 'changeset', document.body); 
    9     for (var i = 0; i < elements.length; i++) { 
    10         entries.push(new Hatena.Star.Entry.TracTimeline(elements[i])); 
     19    if (!Hatena.Star.EntryLoader.DisableTracTimeline && content.className == "timeline") { 
     20        var elements = Ten.DOM.getElementsByTagAndClassName('dt', 'changeset', document.body); 
     21        for (var i = 0; i < elements.length; i++) { 
     22            entries.push(new Hatena.Star.Entry.TracTimeline(elements[i])); 
     23        } 
    1124    } 
    1225 
    1326    // browser 
    14     if (content != null && content.className == "browser") { 
    15         elements = Ten.DOM.getElementsByTagAndClassName('td', 'name', document.body); 
    16         if (elements.length > 0) { 
    17             var thead = document.getElementById('dirlist').getElementsByTagName('thead')[0]; 
    18             var tr = thead.getElementsByTagName('tr')[0]; 
    19             var th = document.createElement('th'); 
    20             th.className = 'hatenastar'; 
    21             tr.appendChild(th); 
     27    else if (!Hatena.Star.EntryLoader.DisableTracBrowser && content.className == "browser") { 
     28        // dir list 
     29        if (!Hatena.Star.EntryLoader.DisableTracBrowserDirList) { 
     30            elements = Ten.DOM.getElementsByTagAndClassName('td', 'name', document.body); 
     31            if (elements.length > 0) { 
     32                var thead = document.getElementById('dirlist').getElementsByTagName('thead')[0]; 
     33                var tr = thead.getElementsByTagName('tr')[0]; 
     34                var th = document.createElement('th'); 
     35                th.className = 'hatenastar'; 
     36                tr.appendChild(th); 
    2237 
    23             for (var i = 0; i < elements.length; i++) { 
    24                 entries.push(new Hatena.Star.Entry.TracBrowserDirList(content, elements[i])); 
     38                for (var i = 0; i < elements.length; i++) { 
     39                    entries.push(new Hatena.Star.Entry.TracBrowserDirList(content, elements[i])); 
     40                } 
     41 
    2542            } 
    26  
    2743        } 
    28  
     44         
    2945        entries.push(new Hatena.Star.Entry.TracBrowser(content)); 
    3046 
    3147        // source code 
    32         // info 
    33         var info = document.getElementById('info'); 
    34         if (info != null) { 
    35             entries.push(new Hatena.Star.Entry.TracBrowserSourceLog(info)); 
    36         } 
    37         // code lines 
    38         var preview = document.getElementById('preview'); 
    39         if (preview != null) { 
    40             var codeTable = Ten.DOM.getElementsByTagAndClassName('table', 'code', preview); 
    41             if (codeTable != null && codeTable.length > 0) { 
    42                 var lines = codeTable[0].getElementsByTagName('th'); 
    43                 for (var i = 1, n = lines.length; i < n; i++) { 
    44                     if (lines[i].id.match(/^L\d+/)) { 
    45                         entries.push(new Hatena.Star.Entry.TracBrowserCode(content, lines[i], info)); 
     48        if (!Hatena.Star.EntryLoader.DisableTracBrowserSourceCode) { 
     49            // info 
     50            var info = document.getElementById('info'); 
     51            if (info != null) { 
     52                entries.push(new Hatena.Star.Entry.TracBrowserSourceLog(info)); 
     53            } 
     54            // code lines 
     55            var preview = document.getElementById('preview'); 
     56            if (preview != null) { 
     57                var codeTable = Ten.DOM.getElementsByTagAndClassName('table', 'code', preview); 
     58                if (codeTable != null && codeTable.length > 0) { 
     59                    var lines = codeTable[0].getElementsByTagName('th'); 
     60                    for (var i = 1, n = lines.length; i < n; i++) { 
     61                        if (lines[i].id.match(/^L\d+/)) { 
     62                            entries.push(new Hatena.Star.Entry.TracBrowserCode(content, lines[i], info)); 
     63                        } 
    4664                    } 
    4765                } 
     
    5169 
    5270    // changeset 
    53     if (content != null && content.className == "changeset") { 
     71    else if (!Hatena.Star.EntryLoader.DisableTracChangeset && content.className == "changeset") { 
    5472        entries.push(new Hatena.Star.Entry.TracChangeset(content)); 
    5573    } 
     74     
    5675    return entries; 
    5776} 
     
    97116Hatena.Star.Entry.TracTimeline = new Ten.Class({ 
    98117    initialize: function(dt) { 
    99         this.dt = dt; 
    100118        var a = dt.getElementsByTagName('a')[0]; 
    101119        this.title = Ten.DOM.scrapeText(a); 
     
    141159    initialize: function(content, td) { 
    142160        var h1 = content.getElementsByTagName('h1')[0]; 
    143         this.td = td; 
    144161        var tr = td.parentNode; 
    145162        var a = td.getElementsByTagName('a')[0];