Trac

出自Gea-Suan Lin's Wiki
於 2018年3月1日 (四) 00:26 由 Gslin留言 | 貢獻 所做的修訂 →‎JavaScript
跳至導覽 跳至搜尋

Trac是一套問題追蹤系統英語:Issue tracking system)。

簡介

優點

  • 簡單,專注在事情的記錄上,而不是限制行為上。

缺點

  • 目前還是不支援Python 3。

安裝

目前有安裝的

除了基本安裝外,還會安裝這些套件:

以前有安裝的

以前會安裝,但現在因為自己用而沒有裝上:

看到的

看過但還沒用過的:

設定

trac.ini

讓系統吃code.jquery.com所提供的jQuery以及jQuery UI[1],稍微降低伺服器的負載,另外也有機會與外部網站共用cache:

[trac]
jquery_location = https://code.jquery.com/jquery-1.12.4.min.js
jquery_ui_location = https://code.jquery.com/ui/1.12.1/jquery-ui.min.js
jquery_ui_theme_location = https://code.jquery.com/ui/1.12.1/themes/start/jquery-ui.css

site.html

templates/site.html裡做了一些事情進行客製化。

CSS

  • 全部使用sans-serif字型。
  • 修正button因為CSS效果而有時會按不到的問題。
  • 針對今天到期與過期的票用不同的標示標出。
  • 將已經關掉的票變淡。
  • 讓編輯區域使用等寬字型。
  • 讓可用範圍變寬。
    <style type="text/css">
    <!--
    body, th, tr {
        font-family: sans-serif;
    }
    input[type=button]:active, input[type=submit]:active,
    input[type=reset]:active {
        position: relative;
        top: 0;
        left: 0;
    }
    table.tickets tr.duedate_overdue {
        font-weight: bold;
    }
    table.tickets tr.duedate_today {
        border: 2px solid;
    }
    table.subtickets tr.ticket_closed, .closed.ticket {
        opacity: 0.5;
    }
    textarea {
        font-family: monospace;
    }
    #content.ticket {
        width: 78em;
    }
    -->
    </style>

JavaScript

  • 用JavaScript針對今天到期以及過期的票增加CSS。
  • 將新票裡的Due Date改為零點零分零秒。
  • 將票裡的attachments與modify內容展開。
  • 將日曆選擇器中,關閉動畫效果[2],另外將每週的第一天設為星期天[2],並且允許選擇其他月份的日期[2]
    <script>
    <!--
    // Run immediately.
    (function() {
        // Due date css handling
        var d = new Date();
        var today = (new Date(d.getTime() - d.getTimezoneOffset() * 60000)).toISOString().slice(0, 10);
        document.querySelectorAll('table.tickets td.due_date').forEach(function(el) {
            var due = el.innerText.trim();
            if (due < today) {
                el.parentElement.classList.add('duedate_overdue');
            } else if (due === today) {
                el.parentElement.classList.add('duedate_today');
            }
        });

        // Due date (newticket) set to 00:00:00
        if ('/newticket' === document.location.pathname) {
            var el = jQuery('#field-due_date');
            el.val(el.val().replace(/T.+Z/, 'T00:00:00Z'));
        }

        // Closed tickets handling
        jQuery('tr:has(a.closed)').addClass('ticket_closed');

        // Datepicker
        if (jQuery.datepicker) {
            jQuery.datepicker.setDefaults({
                firstDay: 0,
                selectOtherMonths: true,
                showAnim: '',
                showOtherMonths: true
            });
        }
    })();

    // Run after content loaded.
    jQuery(function() {
        // Layout
        jQuery('#attachments').removeClass('collapsed');
        jQuery('#modify').parent().removeClass('collapsed');
    });
    //-->
    </script>

參考資料

外部連結