2014-03-27 43 views
1

我需要通過化石-SCM的timelineTableCell類TD元素內部生成的時間表頁面的HTML變化。該TD元素的當前內容如下更改化石SCM時間軸頁面HTML

<td class="timelineTableCell" style="FOO"> 
    <a class="timelineHistLink" href="FOO">[DF45GH67MD]</a> 
    <span class="timelineLeaf">Leaf:</span> 
    <span class="timelineComment">Any comment goes here</span> 
    (user: <a href="FOO">User Name</a>,tags: <a href="FOO">Lyca+ HLR</a>) 
</td> 

我需要在個別TD每個元素如下

<td><a class="timelineHistLink" href="FOO">[DF45GH67MD]</a></td> 
<td><span class="timelineLeaf">Leaf(empty if not leaf)</span></td> 
<td><span class="timelineComment">Any comment goes here</span></td> 
<td>User: <a href="FOO">Usr_Name</a></td> 
<td>Tags: <a href="FOO">Tag_Name</a></td> 

因此,通過該頁面會更好看排列,更具可讀性。我怎樣才能做到這一點?

回答

2

我能想到的方法有兩種:

  1. 通過建立自己的化石的版本。克隆化石repository,並創建一個(私人)分支,您可以在其中更改source code,並編譯您自己的Fossil版本。這確實意味着每次你想更新化石時,都需要將樹幹合併到你的分支中,然後重新編譯。
  2. 通過使用CSS和Javascript。在Admin頁面下,您可以在爲每個頁面生成的頁眉和頁腳部分插入內容。

    • 尋找CSS頁面。在那裏,你可以指定display: table-cell;.timelineHistLink, .timelineLeaf, .timelineComment。這應該將這三個元素轉換爲單獨的表格單元格。請注意,我沒有對此進行測試,並且它可能無法正常工作,因爲它們已經在內部的表格單元格中。無論如何,這不會將用戶和標籤變成單獨的單元格。這是你必須用Javascript做的事情。
    • Footer頁面中,您可以插入一段Javascript,以您喜歡的方式更改頁面。下面是我曾經寫過擺脫每個簽入的UUID,而轉向提交文本鏈接有點腳本的例子:

(TH1是化石的服務器端語言,我在這裏使用它來表示這個腳本只應該在時間線頁面而不是每個頁面上生成)。

<th1> 
    if {$current_page eq "timeline"} { 
     enable_output 1 
    } else { 
     enable_output 0 
    } 
</th1> 
<script> 
(function() { 
     var cells = document.getElementsByClassName('timelineTableCell'); 
     for (var i = 0; i < cells.length; i++) { 
       cells[i].innerHTML = cells[i].innerHTML.replace(/^[^<]*<a href="([^"]*)">[^<]*<\/a>\]\s*(.*)\s+(\(user:[^\0]*\))\s*$/, '<a href="$1">$2</a><br> <span style="font-size: smaller; font-style: italic; opacity: 0.75">$3</span>'); 
     } 
})(); 
</script> 
<th1> 
    enable_output 1 
</th1> 
+1

第二種將JavaScript添加到頁腳的方法適用於我的需要,謝謝。 – Dinesh