Trac:修订间差异

来自Gea-Suan Lin's Wiki
跳到导航 跳到搜索
此页面具有访问限制。如果您看见此消息,则说明您没有权限访问此页面。
(未显示同一用户的4个中间版本)
第32行: 第32行:


== 設定 ==
== 設定 ==
 在<code>templates/site.html</code>裡做了一些事情。
 在<code>templates/site.html</code>裡做了一些事情 進行客製化


JavaScript的部份:
=== CSS ===
* 用JavaScript針對今天到期以及過期的票增加CSS。
* 將票裡的attachments與modify內容展開。
 
CSS 的部份:
* 全部使用sans-serif字型。
* 全部使用sans-serif字型。
* 修正button因為CSS效果而有時會按不到的問題。
* 修正button因為CSS效果而有時會按不到的問題。
第47行: 第43行:


<pre>
<pre>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:py="http://genshi.edgewall.org/"
    py:strip="">
  <!--! Add site-specific style sheet -->
  <head py:match="head" py:attrs="select('@*')">
   ${select('*|comment()|text()')}
    <style type="text/css">
    <style type="text/css">
    <!--
    <!--
第82行: 第71行:
    -->
    -->
    </style>
    </style>
  </head>
</pre>


  <body py:match="body" py:attrs="select('@*')">
=== JavaScript ===
   ${select('*|text()')}
* 用JavaScript針對今天到期以及過期的票增加CSS。
* 將新票裡的Due Date改為零點零分零秒。
* 將票裡的attachments與modify內容展開。


<pre>
    <script>
    <script>
    <!--
    <!--
   // Run immediately.
    (function() {
    (function() {
     // Due date css handling
      var d = new Date();
      var d = new Date();
      var today = (new Date(d.getTime() - d.getTimezoneOffset() * 60000)).toISOString().slice(0, 10);
      var today = (new Date(d.getTime() - d.getTimezoneOffset() * 60000)).toISOString().slice(0, 10);
      document.querySelectorAll('table.tickets td.due_date').forEach(function(el) {
      document.querySelectorAll('table.tickets td.due_date').forEach(function(el) {
        var due = el.innerText.trim();
        var due = el.innerText.trim();
第101行: 第94行:
        }
        }
      });
      });
     // 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'));
     }


      jQuery('tr:has(a.closed)').addClass('ticket_closed');
      jQuery('tr:has(a.closed)').addClass('ticket_closed');
    })();
    })();


   // Run after content loaded.
    jQuery(function() {
    jQuery(function() {
      jQuery('#attachments').removeClass('collapsed');
      jQuery('#attachments').removeClass('collapsed');
第111行: 第111行:
    //-->
    //-->
    </script>
    </script>
  </body>
</html>
</pre>
</pre>



2018年2月22日 (四) 09:04的版本

Trac是一套问题追踪系统英语:Issue tracking system)。

简介

优点

  • 简单,专住在事情的记录上,而不是限制行为上。

缺点

  • 目前还是不支援Python 3。

安装

除了基本安装外,还会安装这些套件:

以前会安装的:

  • DefaultCcPlugin – Trac Hacks - Plugins Macros etc.
    • 针对不同的Component设定Cc列表,对于企业内还蛮有用的。像是专案可以开Proj.开头的Component,而组织可以开Org.开头的Component,这些类型可以设定对应的Cc列表。

看过但还没用过的:

设定

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内容展开。
    <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'));
        }

        jQuery('tr:has(a.closed)').addClass('ticket_closed');
    })();

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

外部链接