Merge pull request #41 from alexcloutier/fix/displayTaskNumber
Display the number of active tasks in calendar viewpull/44/head^2
commit
8191576361
|
@ -80,6 +80,8 @@ typedef enum {
|
|||
|
||||
- (NSArray *) calendarUIDs;
|
||||
|
||||
- (NSNumber *) activeTasks;
|
||||
|
||||
/* vevent UID handling */
|
||||
|
||||
- (NSString *) resourceNameForEventUID: (NSString *) _uid;
|
||||
|
|
|
@ -590,7 +590,6 @@ static iCalEvent *iCalEventK = nil;
|
|||
{
|
||||
/* this is used for group calendars (this folder just returns itself) */
|
||||
NSString *s;
|
||||
|
||||
s = [[self container] nameInContainer];
|
||||
// [self logWithFormat:@"CAL UID: %@", s];
|
||||
return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil;
|
||||
|
@ -3338,4 +3337,25 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
|||
return users;
|
||||
}
|
||||
|
||||
- (NSNumber *) activeTasks
|
||||
{
|
||||
NSArray *tasksList;
|
||||
NSMutableArray *fields;
|
||||
NSNumber *activeTasks;
|
||||
|
||||
fields = [NSMutableArray arrayWithObjects: @"c_component", @"c_status", nil];
|
||||
|
||||
tasksList = [self bareFetchFields: fields
|
||||
from: nil
|
||||
to: nil
|
||||
title: nil
|
||||
component: @"vtodo"
|
||||
additionalFilters: @"c_status != 1 AND c_status != 3"];
|
||||
|
||||
activeTasks = [NSNumber numberWithInt:[tasksList count]];
|
||||
|
||||
return activeTasks;
|
||||
}
|
||||
|
||||
|
||||
@end /* SOGoAppointmentFolder */
|
||||
|
|
|
@ -93,36 +93,38 @@ _intValueFromHex (NSString *hexString)
|
|||
NSMutableDictionary *calendar;
|
||||
unsigned int count, max;
|
||||
NSString *folderName, *fDisplayName;
|
||||
NSNumber *isActive;
|
||||
NSNumber *isActive, *fActiveTasks;
|
||||
|
||||
if (!calendars)
|
||||
{
|
||||
co = [self clientObject];
|
||||
folders = [co subFolders];
|
||||
max = [folders count];
|
||||
calendars = [[NSMutableArray alloc] initWithCapacity: max];
|
||||
for (count = 0; count < max; count++)
|
||||
{
|
||||
co = [self clientObject];
|
||||
folders = [co subFolders];
|
||||
max = [folders count];
|
||||
calendars = [[NSMutableArray alloc] initWithCapacity: max];
|
||||
for (count = 0; count < max; count++)
|
||||
{
|
||||
folder = [folders objectAtIndex: count];
|
||||
calendar = [NSMutableDictionary dictionary];
|
||||
folderName = [folder nameInContainer];
|
||||
fDisplayName = [folder displayName];
|
||||
if (fDisplayName == nil)
|
||||
fDisplayName = @"";
|
||||
if ([fDisplayName isEqualToString: [co defaultFolderName]])
|
||||
fDisplayName = [self labelForKey: fDisplayName];
|
||||
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
|
||||
forKey: @"id"];
|
||||
[calendar setObject: fDisplayName forKey: @"displayName"];
|
||||
[calendar setObject: folderName forKey: @"folder"];
|
||||
[calendar setObject: [folder calendarColor] forKey: @"color"];
|
||||
isActive = [NSNumber numberWithBool: [folder isActive]];
|
||||
[calendar setObject: isActive forKey: @"active"];
|
||||
[calendar setObject: [folder ownerInContext: context]
|
||||
forKey: @"owner"];
|
||||
[calendars addObject: calendar];
|
||||
}
|
||||
folder = [folders objectAtIndex: count];
|
||||
calendar = [NSMutableDictionary dictionary];
|
||||
folderName = [folder nameInContainer];
|
||||
fDisplayName = [folder displayName];
|
||||
if (fDisplayName == nil)
|
||||
fDisplayName = @"";
|
||||
if ([fDisplayName isEqualToString: [co defaultFolderName]])
|
||||
fDisplayName = [self labelForKey: fDisplayName];
|
||||
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
|
||||
forKey: @"id"];
|
||||
[calendar setObject: fDisplayName forKey: @"displayName"];
|
||||
[calendar setObject: folderName forKey: @"folder"];
|
||||
[calendar setObject: [folder calendarColor] forKey: @"color"];
|
||||
isActive = [NSNumber numberWithBool: [folder isActive]];
|
||||
[calendar setObject: isActive forKey: @"active"];
|
||||
[calendar setObject: [folder ownerInContext: context]
|
||||
forKey: @"owner"];
|
||||
fActiveTasks = [folder activeTasks];
|
||||
[calendar setObject:fActiveTasks forKey:@"activeTasks" ];
|
||||
[calendars addObject: calendar];
|
||||
}
|
||||
}
|
||||
|
||||
return calendars;
|
||||
}
|
||||
|
|
|
@ -38,9 +38,10 @@ div.colorBox.calendarFolder<var:string value="currentCalendar.folder" />
|
|||
<var:foreach list="calendars" item="currentCalendar"
|
||||
><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" >
|
||||
<input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" />
|
||||
<div var:class="currentCalendarClass"><entity name="nbsp"/></div
|
||||
><var:string value="currentCalendar.displayName"
|
||||
/></li>
|
||||
<div var:class="currentCalendarClass"><entity name="nbsp"/></div>
|
||||
<var:string value="currentCalendar.displayName" />
|
||||
<span id="activeTasks"><var:string value="currentCalendar.activeTasks"/></span>
|
||||
</li>
|
||||
</var:foreach>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -2900,27 +2900,35 @@ function configureDragHandles() {
|
|||
}
|
||||
|
||||
function initCalendarSelector() {
|
||||
var selector = $("calendarSelector");
|
||||
updateCalendarStatus(); // triggers the initial events refresh
|
||||
selector.changeNotification = updateCalendarsList;
|
||||
var selector = $("calendarSelector");
|
||||
updateCalendarStatus(); // triggers the initial events refresh
|
||||
selector.changeNotification = updateCalendarsList;
|
||||
|
||||
var list = $("calendarList");
|
||||
list.on("mousedown", onCalendarSelectionChange);
|
||||
list.on("dblclick", onCalendarModify);
|
||||
list.on("selectstart", listRowMouseDownHandler);
|
||||
list.attachMenu("calendarsMenu");
|
||||
var list = $("calendarList");
|
||||
list.on("mousedown", onCalendarSelectionChange);
|
||||
list.on("dblclick", onCalendarModify);
|
||||
list.on("selectstart", listRowMouseDownHandler);
|
||||
list.attachMenu("calendarsMenu");
|
||||
|
||||
var items = list.childNodesWithTag("li");
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var input = items[i].childNodesWithTag("input")[0];
|
||||
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
|
||||
var items = list.childNodesWithTag("li");
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
var input = items[i].childNodesWithTag("input")[0];
|
||||
var activeTasks = items[i].childNodesWithTag("span")[0];
|
||||
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
|
||||
if (activeTasks.textContent == "0") {
|
||||
activeTasks.innerHTML = "";
|
||||
}
|
||||
else {
|
||||
activeTasks.innerHTML = "(" + activeTasks.innerText + ")";
|
||||
}
|
||||
|
||||
var links = $("calendarSelectorButtons").childNodesWithTag("a");
|
||||
$(links[0]).observe("click", clickEventWrapper(onCalendarNew));
|
||||
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
|
||||
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
|
||||
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
|
||||
}
|
||||
|
||||
var links = $("calendarSelectorButtons").childNodesWithTag("a");
|
||||
$(links[0]).observe("click", clickEventWrapper(onCalendarNew));
|
||||
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
|
||||
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
|
||||
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
|
||||
}
|
||||
|
||||
function onCalendarSelectionChange(event) {
|
||||
|
|
Loading…
Reference in New Issue