1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<?php
/*
*
*/
?>
elgg.provide('elgg.tasks');
elgg.tasks.newTask = function(event) {
var values = {};
$.each($(this).serializeArray(), function(i, field) {
values[field.name] = field.value;
});
elgg.action($(this).attr('action'), {
data: values,
success: function(json) {
var unassignedlist = $('#tasks-status-unassigned');
if (!unassignedlist.length) {
window.location.reload();
return;
}
elgg.tasks.insert(json.output.guid, unassignedlist);
elgg.tasks.updateTaskGraph();
}
});
this.reset();
$(this).slideUp();
event.preventDefault();
}
elgg.tasks.updateTaskGraph = function() {
var tasklist_graph = $('.elgg-main > .elgg-item .tasklist-graph').parent();
var guid = parseInt(window.location.href.substr(elgg.config.wwwroot.length + 'tasks/view/'.length));
elgg.get({
url: elgg.config.wwwroot + "ajax/view/tasks/tasklist_graph",
dataType: "html",
cache: false,
data: {
guid: guid,
},
success: function(htmlData) {
if (htmlData.length > 0) {
tasklist_graph.html(htmlData);
}
}
});
}
elgg.tasks.insert = function(guid, list) {
elgg.get({
url: elgg.config.wwwroot + "ajax/view/object/task",
dataType: "html",
cache: false,
data: {
guid: guid,
},
success: function(htmlData) {
if (htmlData.length > 0) {
htmlData = '<li class="elgg-item" id="elgg-object-'
+ guid + '">' + htmlData + '</li>';
if (list.find('.elgg-list-entity').length > 0) {
list.find('.elgg-list-entity').prepend(htmlData)
} else {
$('<ul class="elgg-list elgg-list-entity">').append(htmlData).appendTo(list.show());
}
}
}
});
}
elgg.tasks.changeStatus = function(event) {
var action = $('a', this).attr('href');
var guid = (new RegExp('[\\?&]entity_guid=([^&#]*)').exec(action))[1];
elgg.action(action, {
success: function(json) {
switch (json.output.new_state) {
case 'assigned':
case 'active':
var list = 'assigned';
break;
case 'new':
case 'unassigned':
case 'reopened':
var list = 'unassigned';
break;
case 'done':
case 'closed':
var list = 'closed';
break;
}
var newlist = $('#tasks-status-' + list);
$('#elgg-object-' + guid).remove();
elgg.tasks.insert(guid, newlist);
elgg.tasks.updateTaskGraph();
}
});
event.preventDefault();
};
elgg.tasks.init = function() {
$('.elgg-menu-title .elgg-menu-item-subtask a').click(function(event) {
$('#tasks-inline-form')
.slideToggle()
.find('[name="title"]').focus();
event.preventDefault();
});
$('#tasks-inline-form').submit(elgg.tasks.newTask);
$('body').delegate('.elgg-menu-tasks-hover li', 'click', elgg.tasks.changeStatus);
};
elgg.register_hook_handler('init', 'system', elgg.tasks.init);
|