Author: novalis
Date: 2006-12-06 16:40:04 -0500 (Wed, 06 Dec 2006)
New Revision: 2005
Modified:
TaskTracker/trunk/tasktracker/lib/helpers.py
TaskTracker/trunk/tasktracker/public/javascripts/editable_list.js
TaskTracker/trunk/tasktracker/public/javascripts/task.js
TaskTracker/trunk/tasktracker/templates/task/show.pt
TaskTracker/trunk/tasktracker/templates/tasklist/_form.pt
TaskTracker/trunk/tasktracker/templates/tasklist/_managers.pt
TaskTracker/trunk/tasktracker/templates/tasklist/show_update.pt
TaskTracker/trunk/tasktracker/tests/functional/test_task.py
TaskTracker/trunk/tasktracker/tests/functional/test_tasklist.py
Log:
code cleanup
Modified: TaskTracker/trunk/tasktracker/lib/helpers.py
===================================================================
--- TaskTracker/trunk/tasktracker/lib/helpers.py 2006-12-06 21:39:13 UTC
(rev 2004)
+++ TaskTracker/trunk/tasktracker/lib/helpers.py 2006-12-06 21:40:04 UTC
(rev 2005)
@@ -75,25 +75,18 @@
<div id="%s" onclick="$('%s').hide()" class="help_text" style="display:
none;">%s</div>
""" % (help_id, help_id, help_id, text)
-def list_with_minuses(id, updateable_items=[], fixed_items=[]):
- updateable_lis = "\n".join([
- """<li id="%s_item_%d">
- <span>%s</span>
- <span onclick="deleteItem('%s_item_%d');">[ - ]</span>
- </li>""" % (id, i, updateable_items[i], id, i)
- for i in range(0, len(updateable_items))])
+def editable_list(field, updateable_items=[], fixed_items=[]):
+ out = ['<ul id="list_%s" class="task_list" field="%s">' % (field, field)]
+ for item in updateable_items:
+ out.append('<li class="removable_list_item">')
+ out.append("<span>%s</span></li>" % item)
+ for item in fixed_items:
+ out.append('<li class="unremovable_list_item">')
+ out.append("<span>%s</span></li>" % item)
- fixed_lis = "\n".join([
- """<li id="%s">
- <span>%s</span>
- </li>""" % (item, item)
- for item in fixed_items])
+ out.append("</ul>")
+ return "\n".join(out)
- return """<ul id="%s" class="task_list">
- %s
- %s
- </ul>""" % (id, updateable_lis, fixed_lis);
-
def taskListDropDown(id):
tasklist = [(tasklist.title, tasklist.id)
for tasklist in TaskList.selectBy(live=True,
projectID=c.project.id)
Modified: TaskTracker/trunk/tasktracker/public/javascripts/editable_list.js
===================================================================
--- TaskTracker/trunk/tasktracker/public/javascripts/editable_list.js
2006-12-06 21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/public/javascripts/editable_list.js
2006-12-06 21:40:04 UTC (rev 2005)
@@ -29,17 +29,11 @@
// obligated to do so. If you do not wish to do so, delete this
// exception statement from your version.
-function setupEditableList(field, list_id) {
- var the_list = $(list_id);
- the_list.field = field;
- // Sortable.create(the_list_id);
-}
-
function updateItem(list) {
//update the form variable
list = $(list);
var items = list.getElementsByTagName('li')
- $(list.field).value = $A(items).map(getItemName).join(",");
+ $(list.getAttribute('field')).value = $A(items).map(getItemName).join(",");
}
function deleteItem(item_name) {
@@ -65,7 +59,7 @@
var item_list = $(list);
var items = item_list.getElementsByTagName('li');
- for (i = 0; i < items.length; ++i) {
+ for (var i = 0; i < items.length; ++i) {
if (getItemName(items[i]) == item) {
return;
@@ -74,18 +68,29 @@
//add the html element
var item_name = + list + "_" + 'item_' + items.length;
- var del = "deleteItem('" + item_name + "');";
- var check = Builder.node('span', {'id' : item_name, 'onclick' : del}, ' [
- ]');
- var li = Builder.node('li', [Builder.node('span', item), check]);
-
+ var li = Builder.node('li', [Builder.node('span', item)]);
var last_item = item_list.firstChild;
while (last_item.nextSibling) {
last_item = last_item.nextSibling;
}
item_list.insertBefore(li, last_item);
+ add_delete_button(li);
updateItem(list);
// Sortable.destroy(the_list_id);
// Sortable.create(the_list_id);
}
+
+
+
+function add_delete_button(node) {
+ var button = Builder.node('span', '[ - ]');
+ node.appendChild(button);
+
+ var del = function () { deleteItem(node); };
+ node.onclick = del;
+}
+
+with_items ("removable_list_item", add_delete_button, document.childNodes[0]);
+
Modified: TaskTracker/trunk/tasktracker/public/javascripts/task.js
===================================================================
--- TaskTracker/trunk/tasktracker/public/javascripts/task.js 2006-12-06
21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/public/javascripts/task.js 2006-12-06
21:40:04 UTC (rev 2005)
@@ -762,10 +762,23 @@
$A(parent.childNodes).each(function (node) {
if (node.nodeType == 1) {
with_items(klass, func, node);
- classes = node.className.split(" ");
+ var classes = node.className.split(" ");
if (classes.include(klass)) {
func(node);
}
}
});
-}
\ No newline at end of file
+}
+
+
+function unfold () {
+ var other = $('edit_' + this.id);
+ other.style['display'] = 'block';
+ this.hide();
+}
+
+function add_unfold(node) {
+ node.onclick = unfold.bind(node);
+}
+
+addLoadEvent(function () { with_items ("unfolded", add_unfold,
document.childNodes[0]); });
\ No newline at end of file
Modified: TaskTracker/trunk/tasktracker/templates/task/show.pt
===================================================================
--- TaskTracker/trunk/tasktracker/templates/task/show.pt 2006-12-06
21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/templates/task/show.pt 2006-12-06
21:40:04 UTC (rev 2005)
@@ -1,17 +1,16 @@
-<a tal:attributes="href python:h.url_for(action='show_update',
id=c.task.id)">Edit and assign this task</a>
-|
-<tal:nada replace="structure python:h.link_to('Delete this task',
url=h.url_for(action='destroy', id=c.task.id), confirm='Are you sure you want
to delete this task?')"/>
-|
-<span tal:condition="python: not c.task.isWatchedBy(c.username)">
-<tal:nada replace="structure python:h.link_to('Watch this task',
url=h.url_for(action='show_create', controller='watcher', targetID=c.task.id,
type='task'))"/>
-</span>
-<span tal:condition="python: c.task.isWatchedBy(c.username)">
-You are watching this task.
-<tal:nada replace="structure python:h.link_to('Edit your watch settings',
url=h.url_for(action='show_update', controller='watcher',
id=c.task.getWatcher(c.username).id))"/>
-</span>
+<small>
+<hr/><br/>
+<a tal:attributes="href python:h.url_for(controller='tasklist',
action='index', id=c.task.task_list.id)">
+<< return to list of lists</a>
+<a href="#permalink">permalink this task</a>
+</small><br/>
+<!--metal:do use-macro="task_list_title/macros/title"/-->
+
<br/><br/>
+
+
<div style="border: thin solid darkgray; padding:5px;">
<metal:macro metal:use-macro="here/task_list_header/macros/show_header" />
Modified: TaskTracker/trunk/tasktracker/templates/tasklist/_form.pt
===================================================================
--- TaskTracker/trunk/tasktracker/templates/tasklist/_form.pt 2006-12-06
21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/templates/tasklist/_form.pt 2006-12-06
21:40:04 UTC (rev 2005)
@@ -18,23 +18,24 @@
<br/>
Extra Features <span tal:replace="structure python: h.help('These are
optional')"/><br/>
-<input type="checkbox" name="feature_deadlines" value="1"
class="features"/>Deadlines<br/>
-<input type="checkbox" name="feature_custom_status" value="1" class="features"
onclick="$('statuses').toggle();" id="custom_status"/>Custom status<br/>
+<input type="checkbox" id="feature_deadlines" name="feature_deadlines"
value="1" class="features"/>
+<label for="feature_deadlines">Deadlines</label><br/>
+
+<input type="checkbox" name="feature_custom_status" value="1" class="features"
onclick="$('edit_statuses').toggle();" id="custom_status"/>
+<label for="custom_status">Custom status</label><br/>
<input type="hidden" value="" id="statuses" name="statuses">
-<div id="statuses" tal:condition="not:c/update" style="display:none;
margin-left: 3em;">
-<span tal:replace="structure python: h.list_with_minuses('list_statuses', [],
['done'])" />
+<div id="edit_statuses" style="display:none; margin-left: 3em;">
+<span tal:replace="structure python: h.editable_list('statuses', [],
['done'])" />
- <input id="status" name="status" size="20" type="text" value="" />
- <input type="submit" name="submit" value="Add"
onclick="addItem('list_statuses', $('status').value);$('status').value='';
return false;"/>
+ <input id="add_status" name="add_status" size="20" type="text" value="" />
+ <input type="submit" name="submit" value="Add"
onclick="addItem('list_statuses',
$('add_status').value);$('add_status').value=''; return false;"/>
</div>
-<div id="statuses" tal:condition="c/update" style="margin-left: 3em;">
- Statuses: <span tal:replace="python: ', '.join([s.name for s in
c.tasklist.statuses])" />
-</div>
-<input type="checkbox" name="feature_private_tasks" value="1"
class="features"/>Private tasks<br/>
+<input type="checkbox" name="feature_private_tasks" id="feature_private_tasks"
value="1" class="features"/>
+<label for="feature_private_tasks">Private tasks</label><br/>
<br/>
By default, tasks are initially assigned to:<br/>
@@ -44,9 +45,4 @@
<span tal:replace="structure python: h.submit('Submit')" />
<input type="submit" name="Cancel" value="Cancel"
onclick="document.location='/tasklist/index';" />
-<script language="JavaScript">
- setupEditableList('managers', 'list_managers');
- setupEditableList('statuses', 'list_statuses');
-</script>
-
</metal:macro>
Modified: TaskTracker/trunk/tasktracker/templates/tasklist/_managers.pt
===================================================================
--- TaskTracker/trunk/tasktracker/templates/tasklist/_managers.pt
2006-12-06 21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/templates/tasklist/_managers.pt
2006-12-06 21:40:04 UTC (rev 2005)
@@ -1,13 +1,11 @@
<metal:macro define-macro="managers">
<input type="hidden" value="" id="managers" name="managers">
-<!-- list managers -->
+<span tal:replace="structure python: h.editable_list('managers', c.managers,
c.administrators)"/>
-<span tal:replace="structure python: h.list_with_minuses('list_managers',
c.managers, c.administrators)" />
-
<span class="autocomplete">
- <label for="manager" onclick="$('add_manager').toggle();
$('show_add_manager').toggle()" id="show_add_manager">[ + ] add manager</label>
-<span id="add_manager" style="display:none;">
+ <label for="manager" id="add_manager" class="unfolded">[ + ] add
manager</label>
+<span id="edit_add_manager" class="folded">
<input autocomplete="off" id="manager" name="manager" size="20" type="text"
value="" />
<input type="submit" name="submit" value="Add"
onclick="addItem('list_managers', $('manager').value);$('manager').value='';
return false;"/>
</span>
@@ -16,4 +14,5 @@
<script type="text/javascript">new Ajax.Autocompleter('manager',
'manager_auto_complete',
'../../../task/auto_complete_for/manager', {})</script>
</span>
+
</metal:macro>
Modified: TaskTracker/trunk/tasktracker/templates/tasklist/show_update.pt
===================================================================
--- TaskTracker/trunk/tasktracker/templates/tasklist/show_update.pt
2006-12-06 21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/templates/tasklist/show_update.pt
2006-12-06 21:40:04 UTC (rev 2005)
@@ -122,20 +122,9 @@
<input type="submit" name="Cancel" value="Cancel"
onclick="document.location='/tasklist/index';" />
<script language="JavaScript">
- setupEditableList('managers', 'list_managers');
with_items ("editable", function(node) { node.title="Click to change
this."; }, document.childNodes[0]);
-
- function unfold () {
- other = $('edit_' + this.id);
- other.style['display'] = 'block';
- this.hide();
- }
- function add_unfold(node) {
- node.onclick = unfold.bind(node);
- }
-
- with_items ("unfolded", add_unfold, document.childNodes[0]);
+
</script>
<span tal:replace="structure python: h.end_form()" />
Modified: TaskTracker/trunk/tasktracker/tests/functional/test_task.py
===================================================================
--- TaskTracker/trunk/tasktracker/tests/functional/test_task.py 2006-12-06
21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/tests/functional/test_task.py 2006-12-06
21:40:04 UTC (rev 2005)
@@ -278,29 +278,29 @@
task.destroySelf()
tl.destroySelf()
- def test_task_watch(self):
- """Tests adding self as a watcher for a task"""
- tl = self.create_tasklist('testing task watching')
+# def test_task_watch(self):
+# """Tests adding self as a watcher for a task"""
+# tl = self.create_tasklist('testing task watching')
- task = Task(title='The task', text='x', private=False,
task_listID=tl.id)
+# task = Task(title='The task', text='x', private=False,
task_listID=tl.id)
- app = self.getApp('admin')
+# app = self.getApp('admin')
- res = app.get(url_for(controller='task', action='show', id=task.id))
+# res = app.get(url_for(controller='task', action='show', id=task.id))
- task_path = '/task/show/%s' % task.id
+# task_path = '/task/show/%s' % task.id
- res = res.click("Watch this task")
- res.mustcontain("Just the highlights")
- res = res.forms[0].submit()
- assert res.header_dict['location'].startswith(task_path)
- res = res.follow()
+# res = res.click("Watch this task")
+# res.mustcontain("Just the highlights")
+# res = res.forms[0].submit()
+# assert res.header_dict['location'].startswith(task_path)
+# res = res.follow()
- res.mustcontain("Edit your watch settings")
+# res.mustcontain("Edit your watch settings")
- #delete watcher
+# #delete watcher
- res = app.get(url_for(controller='task', action='show', id=task.id))
- res = res.click("Edit your watch settings")
- res = res.click("Stop watching")
- assert Watcher.selectBy(username='admin').count() == 0
+# res = app.get(url_for(controller='task', action='show', id=task.id))
+# res = res.click("Edit your watch settings")
+# res = res.click("Stop watching")
+# assert Watcher.selectBy(username='admin').count() == 0
Modified: TaskTracker/trunk/tasktracker/tests/functional/test_tasklist.py
===================================================================
--- TaskTracker/trunk/tasktracker/tests/functional/test_tasklist.py
2006-12-06 21:39:13 UTC (rev 2004)
+++ TaskTracker/trunk/tasktracker/tests/functional/test_tasklist.py
2006-12-06 21:40:04 UTC (rev 2005)
@@ -161,23 +161,23 @@
assert not form.fields.has_key('private')
- def test_tasklist_watch(self):
- """Tests adding self as a watcher for a task list"""
- tl = self.create_tasklist(title="list")
+# def test_tasklist_watch(self):
+# """Tests adding self as a watcher for a task list"""
+# tl = self.create_tasklist(title="list")
- app = self.getApp('admin')
+# app = self.getApp('admin')
- res = app.get(url_for(
- controller='tasklist', action='show', id=tl.id))
+# res = app.get(url_for(
+# controller='tasklist', action='show', id=tl.id))
- res = res.click("watch this list")
- res.mustcontain("Just the highlights")
- res = res.forms[0].submit()
+# res = res.click("watch this list")
+# res.mustcontain("Just the highlights")
+# res = res.forms[0].submit()
- assert res.header_dict['location'].startswith('/tasklist/show/%s' %
tl.id)
- res = res.follow()
- res.mustcontain("edit watch settings")
- tl.destroySelf()
+# assert res.header_dict['location'].startswith('/tasklist/show/%s' %
tl.id)
+# res = res.follow()
+# res.mustcontain("edit watch settings")
+# tl.destroySelf()
def test_task_create(self):
"""Tests creating a new task"""
--
To unsubscribe send an email with subject unsubscribe to [EMAIL PROTECTED]
Please contact [EMAIL PROTECTED] for questions.