# HG changeset patch # User Christophe Lincoln # Date 1389744453 -3600 # Node ID 119091d34ff2c63bc894ad0a84eaa173cf04f08d # Parent af96ec98737591372fbfa98447808217cfbc9dc3 clean-up bugs/ since we use tazbug diff -r af96ec987375 -r 119091d34ff2 bugs/README --- a/bugs/README Wed Jan 15 01:04:10 2014 +0100 +++ b/bugs/README Wed Jan 15 01:07:33 2014 +0100 @@ -1,13 +1,4 @@ -http://bugs.slitaz.org/ runs a Roundup tracker powered by roundup-server --C server.ini and Lighttpd mod_proxy - - * templates/ : Contain the SliTaz template used to install and initialize - the tracker. It also have the xHTML files and CSS style. - * roundup.wsgi : Is the WSGI handler (buggy with Lighttpd) - * server.ini : Is the config used be used with roundup-server - -The bugs tracker configuration file (config.ini) is not under Hg since -it have MySQL db login information and SMTP password. - +Web interface http://bugs.slitaz.org/ runs tazbug web interface! +See tazbug Mercurial repository for more information diff -r af96ec987375 -r 119091d34ff2 bugs/roundup.wsgi --- a/bugs/roundup.wsgi Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -#!/usr/bin/python - -from wsgiref.simple_server import make_server - -# obtain the WSGI request dispatcher -from roundup.cgi.wsgi_handler import RequestDispatcher -tracker_home = '/home/slitaz/bugs' -app = RequestDispatcher(tracker_home) - -httpd = make_server('', 8917, app) -httpd.serve_forever() diff -r af96ec987375 -r 119091d34ff2 bugs/server.ini --- a/bugs/server.ini Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -# Roundup server configuration file -# Autogenerated at Wed Apr 13 00:31:14 2011 - -[main] - -# Host name of the Roundup web server instance. -# If empty, listen on all network interfaces. -# Default: -host = - -# Port to listen on. -# Default: 8080 -port = 8917 - -# Path to favicon.ico image file. If unset, built-in favicon.ico is used. -# The path may be either absolute or relative -# to the directory containig this config file. -# Default: favicon.ico -favicon = favicon.ico - -# User ID as which the server will answer requests. -# In order to use this option, the server must be run initially as root. -# Availability: Unix. -# Default: -user = www - -# Group ID as which the server will answer requests. -# In order to use this option, the server must be run initially as root. -# Availability: Unix. -# Default: -group = www - -# don't fork (this overrides the pidfile mechanism)' -# Allowed values: yes, no -# Default: no -nodaemon = yes - -# Log client machine names instead of IP addresses (much slower) -# Allowed values: yes, no -# Default: no -log_hostnames = no - -# File to which the server records the process id of the daemon. -# If this option is not set, the server will run in foreground -# -# The path may be either absolute or relative -# to the directory containig this config file. -# Default: -pidfile = /var/run/roundup.pid - -# Log file path. If unset, log to stderr. -# The path may be either absolute or relative -# to the directory containig this config file. -# Default: -logfile = /var/log/roundup.log - -# Set processing of each request in separate subprocess. -# Allowed values: debug, none, thread, fork. -# Default: fork -multiprocess = fork - -# Tracker index template. If unset, built-in will be used. -# The path may be either absolute or relative -# to the directory containig this config file. -# Default: -template = slitaz - -# Enable SSL support (requires pyopenssl) -# Allowed values: yes, no -# Default: no -ssl = no - -# PEM file used for SSL. A temporary self-signed certificate -# will be used if left blank. -# The path may be either absolute or relative -# to the directory containig this config file. -# Default: -pem = - -# Roundup trackers to serve. -# Each option in this section defines single Roundup tracker. -# Option name identifies the tracker and will appear in the URL. -# Option value is tracker home directory path. -# The path may be either absolute or relative -# to the directory containig this config file. -[trackers] - -bugs=/home/slitaz/bugs diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/TEMPLATE-INFO.txt --- a/bugs/templates/slitaz/TEMPLATE-INFO.txt Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -Name: slitaz -Description: This is a SliTaz GNU/Linux Roundup tracker template based on - the classic template provided by the Roundup. -Intended-for: All first-time Roundup users -Path: /home/slitaz/trackers/bugs diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/detectors/messagesummary.py --- a/bugs/templates/slitaz/detectors/messagesummary.py Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -#$Id: messagesummary.py,v 1.2 2007-04-03 06:47:21 a1s Exp $ - -from roundup.mailgw import parseContent - -def summarygenerator(db, cl, nodeid, newvalues): - ''' If the message doesn't have a summary, make one for it. - ''' - if newvalues.has_key('summary') or not newvalues.has_key('content'): - return - - summary, content = parseContent(newvalues['content'], config=db.config) - newvalues['summary'] = summary - - -def init(db): - # fire before changes are made - db.msg.audit('create', summarygenerator) - -# vim: set filetype=python ts=4 sw=4 et si -#SHA: 51433442433794dd7d80d65557aa21d59403d95a diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/detectors/nosyreaction.py --- a/bugs/templates/slitaz/detectors/nosyreaction.py Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -# -# Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) -# This module is free software, and you may redistribute it and/or modify -# under the same terms as Python, so long as this copyright message and -# disclaimer are retained in their original form. -# -# IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR -# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING -# OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" -# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, -# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -# -#$Id: nosyreaction.py,v 1.4 2005-04-04 08:47:14 richard Exp $ - -# Python 2.3 ... 2.6 compatibility: -from roundup.anypy.sets_ import set - -from roundup import roundupdb, hyperdb - -def nosyreaction(db, cl, nodeid, oldvalues): - ''' A standard detector is provided that watches for additions to the - "messages" property. - - When a new message is added, the detector sends it to all the users on - the "nosy" list for the issue that are not already on the "recipients" - list of the message. - - Those users are then appended to the "recipients" property on the - message, so multiple copies of a message are never sent to the same - user. - - The journal recorded by the hyperdatabase on the "recipients" property - then provides a log of when the message was sent to whom. - ''' - # send a copy of all new messages to the nosy list - for msgid in determineNewMessages(cl, nodeid, oldvalues): - try: - cl.nosymessage(nodeid, msgid, oldvalues) - except roundupdb.MessageSendError, message: - raise roundupdb.DetectorError, message - -def determineNewMessages(cl, nodeid, oldvalues): - ''' Figure a list of the messages that are being added to the given - node in this transaction. - ''' - messages = [] - if oldvalues is None: - # the action was a create, so use all the messages in the create - messages = cl.get(nodeid, 'messages') - elif oldvalues.has_key('messages'): - # the action was a set (so adding new messages to an existing issue) - m = {} - for msgid in oldvalues['messages']: - m[msgid] = 1 - messages = [] - # figure which of the messages now on the issue weren't there before - for msgid in cl.get(nodeid, 'messages'): - if not m.has_key(msgid): - messages.append(msgid) - return messages - -def updatenosy(db, cl, nodeid, newvalues): - '''Update the nosy list for changes to the assignedto - ''' - # nodeid will be None if this is a new node - current_nosy = set() - if nodeid is None: - ok = ('new', 'yes') - else: - ok = ('yes',) - # old node, get the current values from the node if they haven't - # changed - if not newvalues.has_key('nosy'): - nosy = cl.get(nodeid, 'nosy') - for value in nosy: - current_nosy.add(value) - - # if the nosy list changed in this transaction, init from the new value - if newvalues.has_key('nosy'): - nosy = newvalues.get('nosy', []) - for value in nosy: - if not db.hasnode('user', value): - continue - current_nosy.add(value) - - new_nosy = set(current_nosy) - - # add assignedto(s) to the nosy list - if newvalues.has_key('assignedto') and newvalues['assignedto'] is not None: - propdef = cl.getprops() - if isinstance(propdef['assignedto'], hyperdb.Link): - assignedto_ids = [newvalues['assignedto']] - elif isinstance(propdef['assignedto'], hyperdb.Multilink): - assignedto_ids = newvalues['assignedto'] - for assignedto_id in assignedto_ids: - new_nosy.add(assignedto_id) - - # see if there's any new messages - if so, possibly add the author and - # recipient to the nosy - if newvalues.has_key('messages'): - if nodeid is None: - ok = ('new', 'yes') - messages = newvalues['messages'] - else: - ok = ('yes',) - # figure which of the messages now on the issue weren't - oldmessages = cl.get(nodeid, 'messages') - messages = [] - for msgid in newvalues['messages']: - if msgid not in oldmessages: - messages.append(msgid) - - # configs for nosy modifications - add_author = getattr(db.config, 'ADD_AUTHOR_TO_NOSY', 'new') - add_recips = getattr(db.config, 'ADD_RECIPIENTS_TO_NOSY', 'new') - - # now for each new message: - msg = db.msg - for msgid in messages: - if add_author in ok: - authid = msg.get(msgid, 'author') - new_nosy.add(authid) - - # add on the recipients of the message - if add_recips in ok: - for recipient in msg.get(msgid, 'recipients'): - new_nosy.add(recipient) - - if current_nosy != new_nosy: - # that's it, save off the new nosy list - newvalues['nosy'] = list(new_nosy) - -def init(db): - db.issue.react('create', nosyreaction) - db.issue.react('set', nosyreaction) - db.issue.audit('create', updatenosy) - db.issue.audit('set', updatenosy) - -# vim: set filetype=python ts=4 sw=4 et si -#SHA: dc34be7cc4a4956a8b49b779a7462904a2edd00d diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/detectors/statusauditor.py --- a/bugs/templates/slitaz/detectors/statusauditor.py Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# Copyright (c) 2002 ekit.com Inc (http://www.ekit-inc.com/) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# -#$Id: statusauditor.py,v 1.5 2004-03-27 00:01:48 richard Exp $ - -def chatty(db, cl, nodeid, newvalues): - ''' If the issue is currently 'unread', 'resolved', 'done-cbb' or None, - then set it to 'chatting' - ''' - # don't fire if there's no new message (ie. chat) - if not newvalues.has_key('messages'): - return - if newvalues['messages'] == cl.get(nodeid, 'messages'): - return - - # get the chatting state ID - try: - chatting_id = db.status.lookup('chatting') - except KeyError: - # no chatting state, ignore all this stuff - return - - # get the current value - current_status = cl.get(nodeid, 'status') - - # see if there's an explicit change in this transaction - if newvalues.has_key('status'): - # yep, skip - return - - # determine the id of 'unread', 'resolved' and 'chatting' - fromstates = [] - for state in 'unread resolved done-cbb'.split(): - try: - fromstates.append(db.status.lookup(state)) - except KeyError: - pass - - # ok, there's no explicit change, so check if we are in a state that - # should be changed - if current_status in fromstates + [None]: - # yep, we're now chatting - newvalues['status'] = chatting_id - - -def presetunread(db, cl, nodeid, newvalues): - ''' Make sure the status is set on new issues - ''' - if newvalues.has_key('status') and newvalues['status']: - return - - # get the unread state ID - try: - unread_id = db.status.lookup('unread') - except KeyError: - # no unread state, ignore all this stuff - return - - # ok, do it - newvalues['status'] = unread_id - - -def init(db): - # fire before changes are made - db.issue.audit('set', chatty) - db.issue.audit('create', presetunread) - -# vim: set filetype=python ts=4 sw=4 et si -#SHA: 97f4de5b9d06b6be7ea73ba639a48141c80deaf9 diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/detectors/userauditor.py --- a/bugs/templates/slitaz/detectors/userauditor.py Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -# Copyright (c) 2003 Richard Jones (richard@mechanicalcat.net) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# -#$Id: userauditor.py,v 1.9 2007-09-12 21:11:13 jpend Exp $ - -import re - -# regular expression thanks to: http://www.regular-expressions.info/email.html -# this is the "99.99% solution for syntax only". -email_regexp = (r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*", r"(localhost|(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9]))") -email_rfc = re.compile('^' + email_regexp[0] + '@' + email_regexp[1] + '$', re.IGNORECASE) -email_local = re.compile('^' + email_regexp[0] + '$', re.IGNORECASE) - -def valid_address(address): - ''' If we see an @-symbol in the address then check against the full - RFC syntax. Otherwise it is a local-only address so only check - the local part of the RFC syntax. - ''' - if '@' in address: - return email_rfc.match(address) - else: - return email_local.match(address) - -def get_addresses(user): - ''' iterate over all known addresses in a newvalues dict - this takes of the address/alterate_addresses handling - ''' - if user.has_key('address'): - yield user['address'] - if user.get('alternate_addresses', None): - for address in user['alternate_addresses'].split('\n'): - yield address - -def audit_user_fields(db, cl, nodeid, newvalues): - ''' Make sure user properties are valid. - - - email address is syntactically valid - - email address is unique - - roles specified exist - - timezone is valid - ''' - - for address in get_addresses(newvalues): - if not valid_address(address): - raise ValueError, 'Email address syntax is invalid' - - check_main = db.user.stringFind(address=address) - # make sure none of the alts are owned by anyone other than us (x!=nodeid) - check_alts = [x for x in db.user.filter(None, {'alternate_addresses' : address}) if x != nodeid] - if check_main or check_alts: - raise ValueError, 'Email address %s already in use' % address - - for rolename in [r.lower().strip() for r in newvalues.get('roles', '').split(',')]: - if rolename and not db.security.role.has_key(rolename): - raise ValueError, 'Role "%s" does not exist'%rolename - - tz = newvalues.get('timezone', None) - if tz: - # if they set a new timezone validate the timezone by attempting to - # use it before we store it to the db. - import roundup.date - import datetime - try: - TZ = roundup.date.get_timezone(tz) - dt = datetime.datetime.now() - local = TZ.localize(dt).utctimetuple() - except IOError: - raise ValueError, 'Timezone "%s" does not exist' % tz - except ValueError: - raise ValueError, 'Timezone "%s" exceeds valid range [-23...23]' % tz - -def init(db): - # fire before changes are made - db.user.audit('set', audit_user_fields) - db.user.audit('create', audit_user_fields) - -# vim: sts=4 sw=4 et si -#SHA: c7242008d09362eb32aa3933e334f6d5a2b09bb6 diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/extensions/README.txt --- a/bugs/templates/slitaz/extensions/README.txt Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -This directory is for tracker extensions: - -- CGI Actions -- Templating functions - -See the customisation doc for more information. diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.404.html --- a/bugs/templates/slitaz/html/_generic.404.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ - - -Item Not Found - - - -There is no with id - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.calendar.html --- a/bugs/templates/slitaz/html/_generic.calendar.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - - - - - - - - - - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.collision.html --- a/bugs/templates/slitaz/html/_generic.collision.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - -<span tal:replace="python:context._classname.capitalize()" - i18n:name="class" /> Edit Collision - <span i18n:name="tracker" - tal:replace="config/TRACKER_NAME" /> - Edit Collision - - - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.help-empty.html --- a/bugs/templates/slitaz/html/_generic.help-empty.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ - - - Empty page (no search performed yet) - - -

Please specify your search parameters!

- - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.help-list.html --- a/bugs/templates/slitaz/html/_generic.help-list.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ - - - Search result for user helper - - - - - - -
-
-  

You are not - allowed to view this page.

- - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - -
 x
- - - -
-
-
-
- -
-     
-  
-
-
diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.help-search.html
--- a/bugs/templates/slitaz/html/_generic.help-search.html	Wed Jan 15 01:04:10 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-
-  
-    Frame for search input fields
-  
-  
-    

Generic template - help-search - or version for class - user - is not yet implemented

- - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.help-submit.html --- a/bugs/templates/slitaz/html/_generic.help-submit.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ - - - - - - Generic submit page for framed helper windows - - - - - -
- 
-
- -
- - - - -
- - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.help.html --- a/bugs/templates/slitaz/html/_generic.help.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ - - - - - - - <tal:x i18n:name="property" - tal:content="property" i18n:translate="" /> help - <span i18n:name="tracker" - tal:replace="config/TRACKER_NAME" /> - - - - - -
- -
- - - - -
- - - - - - -
- - - - - - - - - - - - - - - - -
 x
- - - -
 x
- -
- - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.index.html --- a/bugs/templates/slitaz/html/_generic.index.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ - - - -<span tal:replace="python:context._classname.capitalize()" - i18n:name="class" /> editing - <span i18n:name="tracker" - tal:replace="config/TRACKER_NAME" /> - editing - - - -You are not allowed to view this page. - -Please login with your username and password. - - - -

- You may edit the contents of the - - class using this form. Commas, newlines and double quotes (") must be - handled delicately. You may include commas and newlines by enclosing the - values in double-quotes ("). Double quotes themselves must be quoted by - doubling (""). -

- -

- Multilink properties have their multiple values colon (":") separated - (... ,"one:two:three", ...) -

- -

- Remove entries by deleting their line. Add new entries by appending - them to the table - put an X in the id column. If you wish to restore a - removed item and you know its id then just put that id in the id column. -

-
-
- -
- - -
-
- - - - - - - - - - -
 
 
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/_generic.item.html --- a/bugs/templates/slitaz/html/_generic.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ - -<span tal:replace="python:context._classname.capitalize()" - i18n:name="class" /> editing - <span i18n:name="tracker" - tal:replace="config/TRACKER_NAME" /> - editing - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- -
- -
- - - - - - - - - - - - - - - -
  - submit button will go here -
- -
- - -

Showing 10 items. -Show all history -(warning: this could be VERY long)

- -
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/favicon.ico Binary file bugs/templates/slitaz/html/favicon.ico has changed diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/file.index.html --- a/bugs/templates/slitaz/html/file.index.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ - - -List of files - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" /> -List of files - - - - - - - - - - - - - - - - - -
DownloadContent TypeUploaded ByDate
- dld link - content typecreator's namecreation date
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/file.item.html --- a/bugs/templates/slitaz/html/file.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ - -File display - <span - i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> -File display - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- -
- - - - - - - - - - - - - - - -
Name
Content Type
-   - - - - submit button here
-
- -download - - - - - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/help.html --- a/bugs/templates/slitaz/html/help.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ - - - - - - x - - - - - - - - - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/help_controls.js --- a/bugs/templates/slitaz/html/help_controls.js Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,324 +0,0 @@ -// initial values for either Nosy, Superseder, Keyword and Waiting On, -// depending on which has called -original_field = form[field].value; - -// Some browsers (ok, IE) don't define the "undefined" variable. -undefined = document.geez_IE_is_really_friggin_annoying; - -function trim(value) { - var temp = value; - var obj = /^(\s*)([\W\w]*)(\b\s*$)/; - if (obj.test(temp)) { temp = temp.replace(obj, '$2'); } - var obj = / /g; - while (temp.match(obj)) { temp = temp.replace(obj, " "); } - return temp; -} - -function determineList() { - // generate a comma-separated list of the checked items - var list = new String(''); - - // either a checkbox object or an array of checkboxes - var check = document.frm_help.check; - - if ((check.length == undefined) && (check.checked != undefined)) { - // only one checkbox on page - if (check.checked) { - list = check.value; - } - } else { - // array of checkboxes - for (box=0; box < check.length; box++) { - if (check[box].checked) { - if (list.length == 0) { - separator = ''; - } - else { - separator = ','; - } - // we used to use an Array and push / join, but IE5.0 sux - list = list + separator + check[box].value; - } - } - } - return list; -} - -/** - * update the field in the opening window; - * the text_field variable must be set in the calling page - */ -function updateOpener() { - // write back to opener window - if (document.frm_help.check==undefined) { return; } - form[field].value = text_field.value; -} - -function updateList() { - // write back to opener window - if (document.frm_help.check==undefined) { return; } - form[field].value = determineList(); -} - -function updatePreview() { - // update the preview box - if (document.frm_help.check==undefined) { return; } - writePreview(determineList()); -} - -function clearList() { - // uncheck all checkboxes - if (document.frm_help.check==undefined) { return; } - for (box=0; box < document.frm_help.check.length; box++) { - document.frm_help.check[box].checked = false; - } -} - -function reviseList_framed(form, textfield) { - // update the checkboxes based on the preview field - // alert('reviseList_framed') - // alert(form) - if (form.check==undefined) - return; - // alert(textfield) - var to_check; - var list = textfield.value.split(","); - if (form.check.length==undefined) { - check = form.check; - to_check = false; - for (val in list) { - if (check.value==trim(list[val])) { - to_check = true; - break; - } - } - check.checked = to_check; - } else { - for (box=0; box < form.check.length; box++) { - check = form.check[box]; - to_check = false; - for (val in list) { - if (check.value==trim(list[val])) { - to_check = true; - break; - } - } - check.checked = to_check; - } - } -} - -function reviseList(vals) { - // update the checkboxes based on the preview field - if (document.frm_help.check==undefined) { return; } - var to_check; - var list = vals.split(","); - if (document.frm_help.check.length==undefined) { - check = document.frm_help.check; - to_check = false; - for (val in list) { - if (check.value==trim(list[val])) { - to_check = true; - break; - } - } - check.checked = to_check; - } else { - for (box=0; box < document.frm_help.check.length; box++) { - check = document.frm_help.check[box]; - to_check = false; - for (val in list) { - if (check.value==trim(list[val])) { - to_check = true; - break; - } - } - check.checked = to_check; - } - } -} - -function resetList() { - // reset preview and check boxes to initial values - if (document.frm_help.check==undefined) { return; } - writePreview(original_field); - reviseList(original_field); -} - -function writePreview(val) { - // writes a value to the text_preview - document.frm_help.text_preview.value = val; -} - -function focusField(name) { - for(i=0; i < document.forms.length; ++i) { - var obj = document.forms[i].elements[name]; - if (obj && obj.focus) {obj.focus();} - } -} - -function selectField(name) { - for(i=0; i < document.forms.length; ++i) { - var obj = document.forms[i].elements[name]; - if (obj && obj.focus){obj.focus();} - if (obj && obj.select){obj.select();} - } -} - -function checkRequiredFields(fields) -{ - var bonk=''; - var res=''; - var argv = checkRequiredFields.arguments; - var argc = argv.length; - var input = ''; - var val=''; - - for (var i=0; i < argc; i++) { - fi = argv[i]; - input = document.getElementById(fi); - if (input) { - val = input.value - if (val == '' || val == '-1' || val == -1) { - if (res == '') { - res = fi; - bonk = input; - } else { - res += ', '+fi; - } - } - } else { - alert('Field with id='+fi+' not found!') - } - } - if (res == '') { - return submit_once(); - } else { - alert('Missing value here ('+res+')!'); - if (window.event && window.event.returnvalue) { - event.returnValue = 0; // work-around for IE - } - bonk.focus(); - return false; - } -} - -/** - * seeks the given value (2nd argument) - * in the value of the given input element (1st argument), - * which is considered a list of values, separated by commas - */ -function has_value(input, val) -{ - var actval = input.value - var arr = feld.value.split(','); - var max = arr.length; - for (i=0;i remove_val() - * - * This will work nicely even for batched lists - */ -function append_val(name, val) -{ - var feld = document.itemSynopsis[name]; - var actval = feld.value; - if (actval == '') { - feld.value = val - } else { - var arr = feld.value.split(','); - var max = arr.length; - for (i=0;i append_val() - */ -function remove_val(name, val) -{ - var feld = document.itemSynopsis[name]; - var actval = feld.value; - var changed=false; - if (actval == '') { - return - } else { - var arr = feld.value.split(','); - var max = arr.length; - var neu = '' - for (i=0;i -List of classes - <span - i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> -List of classes - - - - - - - - - - - - - -
- classname -
nametype
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/home.html --- a/bugs/templates/slitaz/html/home.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/issue.index.html --- a/bugs/templates/slitaz/html/issue.index.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ - - - - <span tal:omit-tag="true" i18n:translate="" >List of issues</span> - <span tal:condition="request/dispname" - tal:replace="python:' - %s '%request.dispname" - /> - <span tal:replace="config/TRACKER_NAME" /> - - - List of issues - - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PriorityIDCreationActivityActorKeywordTitleStatusCreator
- - - -
       - title -   
- - - - - - -
-
- -Download as CSV - -
- - - - - - - - - - - - - - - - - - - -
- Sort on: - - - Descending: -
- Group on: - - - Descending: -
- - -
-
- -
- - -
vim: sw=1 ts=8 et si - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/issue.item.html --- a/bugs/templates/slitaz/html/issue.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,198 +0,0 @@ - - - -<tal:block condition="context/id" i18n:translate="" - >Issue <tal:x tal:content="context/id" i18n:name="id" - />: <tal:x content="context/title" i18n:name="title" - /> - <tal:x content="config/TRACKER_NAME" i18n:name="tracker" -/></tal:block> -<tal:block condition="not:context/id" i18n:translate="" - >New Issue - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" -/></tal:block> - - - New Issue - New Issue Editing - Issue - Issue Editing - - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Titletitle
PrioritypriorityStatusstatus
Superseder - - - -
View: - -
-
Nosy List - -
-
Assigned Toassignedto menuKeywords - - -
Change Note - -
File
-   - - - - submit button - Make a copy -
-
- - - - - - - - -
Note: highlighted fields are required.
-
- -

- Created on - by , - last changed - by . -

- - - - - - - - - - - - - - - - -
Files
File nameUploadedTypeEditRemove
- dld link - - creator's name, - creation date - - edit - -
- - - -
-
- - - - - - - - - - - - - - -
Messages
msg (view)Author: Date: -
- - - -
-
-
content
-
- - - -
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/issue.search.html --- a/bugs/templates/slitaz/html/issue.search.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ - -Issue searching - <span - i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> -Issue searching - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Filter onDisplaySort onGroup on
All text*:   
Title: 
Keyword: - -
ID: 
Creation Date:
Creator: - -
Activity: 
Actor: - -  
Priority: - -
Status: - - - - -
Assigned to: - - - - -
No Sort or group:  
Pagesize:
Start With:
Sort Descending: -
Group Descending: -
Query name**: - - -
-   - -
  - - *: The "all text" field will look in message bodies and issue titles -
- - **: If you supply a name, the query will be saved off and available as a - link in the sidebar - -
- -
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/keyword.item.html --- a/bugs/templates/slitaz/html/keyword.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ - - -Keyword editing - <span - i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> -Keyword editing - - - - - - - - - - -
Existing Keywords
- keyword here -
- To edit an existing keyword (for spelling or typing errors), - click on its entry above. -
- -

- To create a new keyword, enter it below and click "Submit New Entry". -

- -
- - - - - - - - - - - -
Keywordname
-   - - - - submit button will go here -
-
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/msg.index.html --- a/bugs/templates/slitaz/html/msg.index.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - -List of messages - <span tal:replace="config/TRACKER_NAME" - i18n:name="tracker"/> -Message listing - - - - - - - - - - - - - - - -
Messages
authordate
content
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/msg.item.html --- a/bugs/templates/slitaz/html/msg.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ - - - -<tal:block condition="context/id" i18n:translate="" - >Message <span tal:replace="context/id" i18n:name="id" - /> - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" -/></tal:block> -<tal:block condition="not:context/id" i18n:translate="" - >New Message - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" -/></tal:block> - - - New Message - New Message Editing - Message - Message Editing - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- -
- - - - - - - - - - - - - - - - -
Author
Recipients
Date
- - - - - - -
Content
- - - - - - - - - - - -
Files
File nameUploaded
- dld link - - creator's name, - creation date -
- - - -
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/page.html --- a/bugs/templates/slitaz/html/page.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,396 +0,0 @@ - - - -title goes here - - - - - - - - - - - - - -
- - -
-

SliTaz Bug Tracking System

-

- Lets you track bugs, feature requests and tasks in one easy to - use and centralized place. -

-
-
- - - - - - - - - - - - - - - - -
  - -
-

body title

-
-
-

-

- - clear this message -

-
Page content goes here
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - (cal) - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
  • - -
  • -
  • - - -
  • -
- - - - - - - - / - - - - - - - - - - - - - - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/query.edit.html --- a/bugs/templates/slitaz/html/query.edit.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ - - -"Your Queries" Editing - <span tal:replace="config/TRACKER_NAME" - i18n:name="tracker" /> -"Your Queries" Editing - - - -You are not allowed to edit queries. - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QueryInclude in "Your Queries"EditPrivate to you? 
query - - - [query is retired]
query - - edit - - - -
query - - - edit - [not yours to edit]
- - - -
- -
- -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/query.item.html --- a/bugs/templates/slitaz/html/query.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ - - - - diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/style.css --- a/bugs/templates/slitaz/html/style.css Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,630 +0,0 @@ -/* - CSS style for SliTaz Network - (C) 2014 SliTaz GNU/Linux -*/ - -html { - min-height: 102%; -} - -body { - background: #ffffff; - color: black; - font: 13px sans-serif, vernada, arial; - margin: 0; - min-width: 780px; - height: 100%; -} - -a { text-decoration: underline; color: #215090; } -a:hover { text-decoration: none; color: blue; } -img { border: 0pt none; vertical-align: middle; } -h2 { color: #444; margin: 2px 0;} -h3 { color: #666; font-size: 140%; } -h4 { color: #888; font-size: 120%; } - -/* Header */ - -#header { - height: 40px; - background: #351a0a; -} - -#header h1 { - margin: 0; - padding: 8px 0 0 42px; - width: 250px; -} - -#header h1 a { - color: white; - text-decoration: none; - font-size: 20px; - font-style: italic; -} - -#header h1 a:hover, #network a:hover { - color: #d66018; -} - -/* Logo */ - -#logo { - background: url(http://tank.slitaz.org/images/logo.png) no-repeat left; - position: absolute; - float: left; - left: 0px; - top: 0px; - width: 40px; - height: 40px; -} - -/* SliTaz Network */ - -#network { - float: right; - padding: 10px 5px 0; - font-size: 12px; -} - -#network a { padding: 0 6px; } - -/* Block */ - -#block { - min-height: 104px; - background: #d66018; - padding: 26px 10% 0px; - text-align: center; - color: #333; - border-bottom: 1px solid #f5f5f5; -} - -#block_info { - text-align: justify; - width: 48%; - padding: 10px 10px 0 0; -} - -#block a, #network a { - color: #fff; - font-weight: bold; - text-decoration: none; -} - -#block h4 { - color: #351a0a; - margin: 0px; - font-weight: bold; - font-size: 110%; -} - -#block_info p { margin: 6px 0; padding: 0 12px 0 0; } -#block_info a { font-weight: normal; } -#block ul { list-style-type: square; } -#block a:hover { color: #351a0a; } - -/* Navigation */ - -#block_nav { - background: #cc5b17; - padding: 10px 10px 40px; - text-align: justify; - width: 48%; - float: right; -} - -#block_nav ul { - list-style-type: none; - margin: 6px 0; - padding: 0; -} - -#block_nav h4 img { - margin: 0 4px 0 0; - padding: 0; -} - -#searchbox input[type=submit] { - padding: 4px; - margin-left: -5px; - background-color: #f1f1f1; - border: 1px solid #ddd; - cursor: pointer; - color: #000; - font-weight: bold; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -input#search-text { - border: 1px solid #ddd; - padding: 4px; - height: 17px; - margin: 0; - width: 200px; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -input[type=submit] { - padding: 2px; - margin: 2px 0; - background-color: #f1f1f1; - border: 1px solid #ddd; - cursor: pointer; - color: #000; -} - -input[type=submit]:hover, #searchbox input[type=submit]:hover { - background-color: #ddd; - border: 1px solid #999; -} - -input[type=text] { height: 18px; margin: 4px 0; } - - -/* Round corner */ - -input[type=submit], p.ok-message, p.error-message, table.form, -table.messages td { - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} - -/* Footer */ - -#footer { - background: #f1f1f1; - text-align: center; - border-top: 1px solid #ddd; - padding: 40px; - color: #666; - clear: both; - margin-top: 160px; - margin-bottom: -2%; -} - -#footer a { color: #666; padding: 0 2px; } - -.year:after { - /* content: "2007-2014"; */ - content: "2014"; -} - -/* Modified Roundup style */ - -#searchbox { - float: right; -} - -td.sidebar { - white-space: nowrap; - position: absolute; - right: 10px; - top: 230px; - border-left: 1px solid #ddd; - padding: 0 10px; -} - -td.sidebar a { - text-decoration: none; -} - -td.page-header-left { - padding: 5px; -} - -td.page-header-top { - padding: 10px; - position: absolute; - left: 20px; - right: 20px; - width: auto; -} - -td.content { - padding: 30px 220px 20px 30px; - vertical-align: top; - width: 100%; -} - -p.ok-message { color: #000; } -p.error-message { color: red; } -p.ok-message, p.error-message { - background-color: #f8f8f8; - padding: 5px; - font-weight: bold; - - position: absolute; - right: 10%; - top: 70px; - min-width: 220px; -} - -td.sidebar p.classblock { - padding: 12px 5px 0; - margin: 0; -} - -td.sidebar p.classblock:first-child { padding: 0px 5px 0; } - -td.sidebar p.userblock { - padding: 12px 5px 0; - margin: 0; -} - -table.form { - margin: 0 0 10px; - padding: 10px; - border-spacing: 0; - border-collapse: separate; - background-color: #f8f8f8; - border: 1px solid #ddd; -} - -.index-controls { - margin: 20px 0; -} - -table.body { - border: 0; - padding: 0; - border-spacing: 0; - border-collapse: separate; -} - -/* don't display the sidebar when printing */ -@media print { - td.page-header-left { - display: none; - } - td.sidebar { - display: none; - } - .index-controls { - display: none; - } - #searchbox { - display: none; - } -} - -form { - margin: 0; -} - -textarea { - font-family: monospace; -} - -.form-small { - padding: 0; - font-size: 75%; -} - -td.date, th.date { - white-space: nowrap; - width: 130px; -} - -p.error-message a[href] { - color: white; - text-decoration: underline; -} - -/* style for search forms */ -ul.search-checkboxes { - display: inline; - padding: 0; - list-style: none; -} -ul.search-checkboxes > li { - display: inline; - padding-right: .5em; -} - -/* style for forms */ - -table.form th { - color: #555; - text-align: right; - vertical-align: top; - font-weight: normal; - white-space: nowrap; - padding: 0 4px 0 0; -} - -table.form th.header { - font-weight: bold; - background-color: #f1f1f1; - text-align: left; -} - -table.form th.required { - font-weight: bold; - color: #b20000; -} - -table.form td { - color: #000; - empty-cells: show; - vertical-align: top; -} - -table.form td.optional { - font-weight: bold; - font-style: italic; -} - -table.form td.html { - color: #000; -} - -/* style for lists */ -table.list { - border-spacing: 0 4px; - border-collapse: separate; - width: 100%; -} - -table.list th { - padding: 0px; - color: #888; - background-color: #fff; - vertical-align: top; - empty-cells: show; - text-align: left; -} -table.list th a[href]:hover { color: #333 } -table.list th a[href]:link { color: #333 } -table.list th a[href] { color: #333 } -table.list th.group { - background-color: #f8f8f8; - color: #666; - text-align: left; - padding: 4px; - font-size: 120%; - border: 1px solid #ddd; - border-radius: 4px; -} -table.list th.group:first-letter { - text-transform: uppercase; -} - -table.list td { - padding: 2px; - color: #000; - vertical-align: top; - empty-cells: show; - /* border-bottom: 1px solid #ddd; */ -} - -table.list tr.navigation th { - width: 33%; - border-style: hidden; - text-align: center; -} -table.list tr.navigation td { - border: none -} -table.list tr.navigation th:first-child { - text-align: left; -} -table.list tr.navigation th:last-child { - text-align: right; -} - -/* style for message displays */ -table.messages { - border-spacing: 0; - border-collapse: separate; - width: 100%; -} - -table.messages th.header { - padding: 20px 0 4px; - font-weight: bold; - background-color: white; - color: #666; - font-size: 140%; -} - -table.messages th { - font-weight: bold; - color: black; - text-align: left; - padding: 10px 0 2px; -} - -table.messages th a { - text-decoration: none; -} - -table.messages td { - font-family: monospace; - background-color: #f8f8f8; - border: 1px solid #ddd; - color: black; - empty-cells: show; - vertical-align: top; - padding: 4px 10px 5px 10px; -} - -/* style for file displays */ -table.files { - border-spacing: 0; - border-collapse: separate; - width: 100%; -} - -table.files th.header{ - padding: 10px 0; - border-bottom: 0px solid gray; - font-weight: bold; - background-color: white; - color: #666; - font-size: 140%; -} - -table.files th { - border-bottom: 1px solid #888; - font-weight: bold; - text-align: left; - padding: 10px 0 2px; -} - -table.files td { - font-family: monospace; - empty-cells: show; - padding-top: 5px; -} - -/* style for history displays */ -table.history { - border-spacing: 0; - border-collapse: separate; - width: 100%; - margin: 0 0 40px; -} - -table.history th.header { - padding: 20px 0 4px; - border-bottom: 1px solid #fff; - font-weight: bold; - background-color: white; - color: #666; - font-size: 140%; -} - -table.history th { - border-bottom: 1px solid #666; - font-weight: bold; - text-align: left; - padding: 10px 0 2px; -} - -table.history td { - vertical-align: top; - empty-cells: show; - padding-top: 5px; -} - - -/* style for class list */ -table.classlist { - border-spacing: 0; - border-collapse: separate; - width: 100%; -} - -table.classlist th.header{ - padding-top: 10px; - border-bottom: 1px solid gray; - font-weight: bold; - background-color: white; - color: #707040; -} - -table.classlist th { - font-weight: bold; - text-align: left; -} - - -/* style for class help display */ -table.classhelp { /* the table-layout: fixed; */ - table-layout: fixed; /* compromises quality for speed */ - overflow: hidden; - font-size: .9em; - padding-bottom: 3em; -} - -table.classhelp th { - font-weight: normal; - text-align: left; - color: #444; - background-color: #efefef; - border-bottom: 1px solid #afafaf; - border-top: 1px solid #afafaf; - text-transform: uppercase; - vertical-align: middle; - line-height:1.5em; -} - -table.classhelp td { - vertical-align: middle; - padding-right: .2em; - border-bottom: 1px solid #efefef; - text-align: left; - empty-cells: show; - white-space: nowrap; - vertical-align: middle; -} - -table.classhelp tr:hover { - background-color: #eee; -} - -label.classhelp-label { - cursor: pointer; -} - -#classhelp-controls { - position: fixed; - display: block; - top: auto; - right: 0; - bottom: 0; - left: 0; - padding: .5em; - border-top: 2px solid #444; - background-color: #eee; -} - -#classhelp-controls input.apply { - width: 7em; - font-weight: bold; - margin-right: 2em; - margin-left: 2em; -} - -#classhelp-controls input.preview { - margin-right: 3em; - margin-left: 1em; -} - -/* style for "other" displays */ -table.otherinfo { - border-spacing: 0; - border-collapse: separate; - width: 100%; -} - -table.otherinfo th.header{ - padding-top: 10px; - border-bottom: 1px solid gray; - font-weight: bold; - background-color: white; - color: #707040; -} - -table.otherinfo th { - border-bottom: 1px solid #afafaf; - font-weight: bold; - text-align: left; -} - -.calendar_display { - text-align: center; -} - -.calendar_display td { - padding: 1px 4px 1px 4px; -} - -.calendar_display .today { - background-color: #afafaf; -} diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.forgotten.html --- a/bugs/templates/slitaz/html/user.forgotten.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ - - -Password reset request - <span - i18n:name="tracker" tal:replace="config/TRACKER_NAME" /> -Password reset request - - -

You have two options if you have forgotten your password. -If you know the email address you registered with, enter it below.

- -
- - - - - - - - - -
Email Address:
  - - - -
- -

Or, if you know your username, then enter it below.

- - - - -
Username:
-
- -

A confirmation email will be sent to you - -please follow the instructions within it to complete the reset process.

- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.help-search.html --- a/bugs/templates/slitaz/html/user.help-search.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - Search input for user helper - - - - - -
-    
- - - - - - - - - - - - - - - - - - - - - - - - -
Name
Phone
role - -
  - - - - - - -
- -
-
-
-  
-
-
diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.help.html
--- a/bugs/templates/slitaz/html/user.help.html	Wed Jan 15 01:04:10 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-
-
-  
-      
-      
-      
-      <tal:x i18n:translate=""><tal:x i18n:name="property"
-       tal:content="property" i18n:translate="" /> help - <span i18n:name="tracker"
-	       tal:replace="config/TRACKER_NAME" /></tal:x>
-      
-      
-      
-  
-
-  
-  
-  
-  
-  
-
-
-  <body>
-<p i18n:translate="">
-Your browser is not capable of using frames; you should be redirected immediately,
-or visit <a href="#" tal:attributes="href string:?${qs}&template=help-noframes"
-i18n:name="link">this link</a>.
-</p>
-</body>
-
-
-
-
diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.index.html
--- a/bugs/templates/slitaz/html/user.index.html	Wed Jan 15 01:04:10 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-
-
-User listing - <span
- i18n:name="tracker" tal:replace="config/TRACKER_NAME" />
-User listing
-
-
-You are not allowed to view this page.
-
-Please login with your username and password.
-
-
-
- 
- 
- 
- 
- 
-
-
-
- 
- 
- 
- 
- 
-
-
-
UsernameReal nameEmail addressWebsiteRetire
- username -    - website - -
- - - -
-
- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.item.html --- a/bugs/templates/slitaz/html/user.item.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ - - - -<tal:if condition="context/id" i18n:translate="" - >User <tal:x content="context/id" i18n:name="id" - />: <tal:x content="context/username" i18n:name="title" - /> - <tal:x content="config/TRACKER_NAME" i18n:name="tracker" -/></tal:if> -<tal:if condition="not:context/id" i18n:translate="" - >New User - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" -/></tal:if> - - - - - - - New User - New User Editing - User - User Editing - - - - -

- You are not allowed to view this page.

- -

- Please login with your username and password.

- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name
Login Name
Login Password
Confirm Password
- - - - - - - (to give the user more than one role, - enter a comma,separated,list) -
Website
Timezone - (this is a numeric hour offset, the default is - ) -
E-mail address - calvin@the-z.org - - - -   -
- -
-   - - - - -
-
- - - - - - - - -
Note: highlighted fields are required.
-
- - - -
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.register.html --- a/bugs/templates/slitaz/html/user.register.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ - - -Registering with <span i18n:name="tracker" - tal:replace="db/config/TRACKER_NAME" /> -Registering with - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Namerealname
Login Nameusername
Login Passwordpassword
Confirm Passwordpassword
Rolesroles - -
Websitewebsite
E-mail addressaddress
Alternate E-mail addresses
One address per line
alternate_addresses
  - - - - -
-
- - - - - - - - -
Note: highlighted fields are required.
-
- - - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user.rego_progress.html --- a/bugs/templates/slitaz/html/user.rego_progress.html Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - - -Registration in progress - <span i18n:name="tracker" - tal:replace="config/TRACKER_NAME" /> -Registration in progress... - - -

You will shortly receive an email -to confirm your registration. To complete the registration process, -visit the link indicated in the email. -

- - -
- diff -r af96ec987375 -r 119091d34ff2 bugs/templates/slitaz/html/user_utils.js --- a/bugs/templates/slitaz/html/user_utils.js Wed Jan 15 01:04:10 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -// User Editing Utilities - -/** - * for new users: - * Depending on the input field which calls it, takes the value - * and dispatches it to certain other input fields: - * - * address - * +-> username - * | `-> realname - * `-> scnprofile - */ -function split_name(that) { - var raw = that.value - var val = trim(raw) - if (val == '') { - return - } - var username='' - var realname='' - var address='' - switch (that.name) { - case 'address': - address=val - break - case 'username': - username=val - break - case 'realname': - realname=val - break - case 'firstname': - case 'lastname': - return - default: - alert('Ooops - unknown name field '+that.name+'!') - return - } - var the_form = that.form; - - function field_empty(name) { - return the_form[name].value == '' - } - - // no break statements - on purpose! - switch (that.name) { - case 'address': - var split1 = address.split('@') - if (field_empty('username')) { - username = split1[0] - the_form.username.value = username - } - if (field_empty('scnprofile')) { - the_form.scnprofile.value = default_scnprofile(split1[1]) - } - case 'username': - if (field_empty('realname')) { - realname = Cap(username.split('.').join(' ')) - the_form.realname.value = realname - } - case 'realname': - if (field_empty('username')) { - username = Cap(realname.replace(' ', '.')) - the_form.username.value = username - } - if (the_form.firstname && the_form.lastname) { - var split2 = realname.split(' ') - var firstname='', lastname='' - firstname = split2[0] - lastname = split2.slice(1).join(' ') - if (field_empty('firstname')) { - the_form.firstname.value = firstname - } - if (field_empty('lastname')) { - the_form.lastname.value = lastname - } - } - } -} - -function SubCap(str) { - switch (str) { - case 'de': case 'do': case 'da': - case 'du': case 'von': - return str; - } - if (str.toLowerCase().slice(0,2) == 'mc') { - return 'Mc'+str.slice(2,3).toUpperCase()+str.slice(3).toLowerCase() - } - return str.slice(0,1).toUpperCase()+str.slice(1).toLowerCase() -} - -function Cap(str) { - var liz = str.split(' ') - for (var i=0; i/db/files/] -# type = String() [MIME type of the content, default 'text/plain'] -msg = FileClass(db, "msg", - author=Link("user", do_journal='no'), - recipients=Multilink("user", do_journal='no'), - date=Date(), - summary=String(), - files=Multilink("file"), - messageid=String(), - inreplyto=String()) - -file = FileClass(db, "file", - name=String()) - -# IssueClass automatically gets these properties in addition to the Class ones: -# title = String() -# messages = Multilink("msg") -# files = Multilink("file") -# nosy = Multilink("user") -# superseder = Multilink("issue") -issue = IssueClass(db, "issue", - assignedto=Link("user"), - keyword=Multilink("keyword"), - priority=Link("priority"), - status=Link("status")) - -# -# TRACKER SECURITY SETTINGS -# -# See the configuration and customisation document for information -# about security setup. - -# -# REGULAR USERS -# -# Give the regular users access to the web and email interface -db.security.addPermissionToRole('User', 'Web Access') -db.security.addPermissionToRole('User', 'Email Access') - -# Assign the access and edit Permissions for issue, file and message -# to regular users now -for cl in 'issue', 'file', 'msg', 'keyword': - db.security.addPermissionToRole('User', 'View', cl) - db.security.addPermissionToRole('User', 'Edit', cl) - db.security.addPermissionToRole('User', 'Create', cl) -for cl in 'priority', 'status': - db.security.addPermissionToRole('User', 'View', cl) - -# May users view other user information? Comment these lines out -# if you don't want them to -db.security.addPermissionToRole('User', 'View', 'user') - -# Users should be able to edit their own details -- this permission is -# limited to only the situation where the Viewed or Edited item is their own. -def own_record(db, userid, itemid): - '''Determine whether the userid matches the item being accessed.''' - return userid == itemid -p = db.security.addPermission(name='View', klass='user', check=own_record, - description="User is allowed to view their own user details") -db.security.addPermissionToRole('User', p) -p = db.security.addPermission(name='Edit', klass='user', check=own_record, - properties=('username', 'password', 'address', 'realname', 'website', - 'alternate_addresses', 'queries', 'timezone'), - description="User is allowed to edit their own user details") -db.security.addPermissionToRole('User', p) - -# Users should be able to edit and view their own queries. They should also -# be able to view any marked as not private. They should not be able to -# edit others' queries, even if they're not private -def view_query(db, userid, itemid): - private_for = db.query.get(itemid, 'private_for') - if not private_for: return True - return userid == private_for -def edit_query(db, userid, itemid): - return userid == db.query.get(itemid, 'creator') -p = db.security.addPermission(name='View', klass='query', check=view_query, - description="User is allowed to view their own and public queries") -db.security.addPermissionToRole('User', p) -p = db.security.addPermission(name='Edit', klass='query', check=edit_query, - description="User is allowed to edit their queries") -db.security.addPermissionToRole('User', p) -p = db.security.addPermission(name='Retire', klass='query', check=edit_query, - description="User is allowed to retire their queries") -db.security.addPermissionToRole('User', p) -p = db.security.addPermission(name='Create', klass='query', - description="User is allowed to create queries") -db.security.addPermissionToRole('User', p) - - -# -# ANONYMOUS USER PERMISSIONS -# -# Let anonymous users access the web interface. Note that almost all -# trackers will need this Permission. The only situation where it's not -# required is in a tracker that uses an HTTP Basic Authenticated front-end. -db.security.addPermissionToRole('Anonymous', 'Web Access') - -# Let anonymous users access the email interface (note that this implies -# that they will be registered automatically, hence they will need the -# "Create" user Permission below) -# This is disabled by default to stop spam from auto-registering users on -# public trackers. -#db.security.addPermissionToRole('Anonymous', 'Email Access') - -# Assign the appropriate permissions to the anonymous user's Anonymous -# Role. Choices here are: -# - Allow anonymous users to register -db.security.addPermissionToRole('Anonymous', 'Register', 'user') - -# Allow anonymous users access to view issues (and the related, linked -# information) -for cl in 'issue', 'file', 'msg', 'keyword', 'priority', 'status': - db.security.addPermissionToRole('Anonymous', 'View', cl) - -# [OPTIONAL] -# Allow anonymous users access to create or edit "issue" items (and the -# related file and message items) -#for cl in 'issue', 'file', 'msg': -# db.security.addPermissionToRole('Anonymous', 'Create', cl) -# db.security.addPermissionToRole('Anonymous', 'Edit', cl) - - -# vim: set filetype=python sts=4 sw=4 et si : -#SHA: d935a2b51c5922fb4e7a5fefc5ed70ef5fcbcac8