mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-08-10 17:33:25 +00:00
Merge branch 'master' of https://github.com/inverse-inc/sogo
This commit is contained in:
@@ -80,6 +80,8 @@ typedef enum {
|
|||||||
|
|
||||||
- (NSArray *) calendarUIDs;
|
- (NSArray *) calendarUIDs;
|
||||||
|
|
||||||
|
- (NSNumber *) activeTasks;
|
||||||
|
|
||||||
/* vevent UID handling */
|
/* vevent UID handling */
|
||||||
|
|
||||||
- (NSString *) resourceNameForEventUID: (NSString *) _uid;
|
- (NSString *) resourceNameForEventUID: (NSString *) _uid;
|
||||||
|
|||||||
@@ -590,7 +590,6 @@ static iCalEvent *iCalEventK = nil;
|
|||||||
{
|
{
|
||||||
/* this is used for group calendars (this folder just returns itself) */
|
/* this is used for group calendars (this folder just returns itself) */
|
||||||
NSString *s;
|
NSString *s;
|
||||||
|
|
||||||
s = [[self container] nameInContainer];
|
s = [[self container] nameInContainer];
|
||||||
// [self logWithFormat:@"CAL UID: %@", s];
|
// [self logWithFormat:@"CAL UID: %@", s];
|
||||||
return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil;
|
return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil;
|
||||||
@@ -3338,4 +3337,25 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
|||||||
return users;
|
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 */
|
@end /* SOGoAppointmentFolder */
|
||||||
|
|||||||
@@ -93,36 +93,38 @@ _intValueFromHex (NSString *hexString)
|
|||||||
NSMutableDictionary *calendar;
|
NSMutableDictionary *calendar;
|
||||||
unsigned int count, max;
|
unsigned int count, max;
|
||||||
NSString *folderName, *fDisplayName;
|
NSString *folderName, *fDisplayName;
|
||||||
NSNumber *isActive;
|
NSNumber *isActive, *fActiveTasks;
|
||||||
|
|
||||||
if (!calendars)
|
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];
|
folder = [folders objectAtIndex: count];
|
||||||
folders = [co subFolders];
|
calendar = [NSMutableDictionary dictionary];
|
||||||
max = [folders count];
|
folderName = [folder nameInContainer];
|
||||||
calendars = [[NSMutableArray alloc] initWithCapacity: max];
|
fDisplayName = [folder displayName];
|
||||||
for (count = 0; count < max; count++)
|
if (fDisplayName == nil)
|
||||||
{
|
fDisplayName = @"";
|
||||||
folder = [folders objectAtIndex: count];
|
if ([fDisplayName isEqualToString: [co defaultFolderName]])
|
||||||
calendar = [NSMutableDictionary dictionary];
|
fDisplayName = [self labelForKey: fDisplayName];
|
||||||
folderName = [folder nameInContainer];
|
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
|
||||||
fDisplayName = [folder displayName];
|
forKey: @"id"];
|
||||||
if (fDisplayName == nil)
|
[calendar setObject: fDisplayName forKey: @"displayName"];
|
||||||
fDisplayName = @"";
|
[calendar setObject: folderName forKey: @"folder"];
|
||||||
if ([fDisplayName isEqualToString: [co defaultFolderName]])
|
[calendar setObject: [folder calendarColor] forKey: @"color"];
|
||||||
fDisplayName = [self labelForKey: fDisplayName];
|
isActive = [NSNumber numberWithBool: [folder isActive]];
|
||||||
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
|
[calendar setObject: isActive forKey: @"active"];
|
||||||
forKey: @"id"];
|
[calendar setObject: [folder ownerInContext: context]
|
||||||
[calendar setObject: fDisplayName forKey: @"displayName"];
|
forKey: @"owner"];
|
||||||
[calendar setObject: folderName forKey: @"folder"];
|
fActiveTasks = [folder activeTasks];
|
||||||
[calendar setObject: [folder calendarColor] forKey: @"color"];
|
[calendar setObject:fActiveTasks forKey:@"activeTasks" ];
|
||||||
isActive = [NSNumber numberWithBool: [folder isActive]];
|
[calendars addObject: calendar];
|
||||||
[calendar setObject: isActive forKey: @"active"];
|
|
||||||
[calendar setObject: [folder ownerInContext: context]
|
|
||||||
forKey: @"owner"];
|
|
||||||
[calendars addObject: calendar];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return calendars;
|
return calendars;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,10 @@ div.colorBox.calendarFolder<var:string value="currentCalendar.folder" />
|
|||||||
<var:foreach list="calendars" item="currentCalendar"
|
<var:foreach list="calendars" item="currentCalendar"
|
||||||
><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" >
|
><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" >
|
||||||
<input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" />
|
<input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" />
|
||||||
<div var:class="currentCalendarClass"><entity name="nbsp"/></div
|
<div var:class="currentCalendarClass"><entity name="nbsp"/></div>
|
||||||
><var:string value="currentCalendar.displayName"
|
<var:string value="currentCalendar.displayName" />
|
||||||
/></li>
|
<span id="activeTasks"><var:string value="currentCalendar.activeTasks"/></span>
|
||||||
|
</li>
|
||||||
</var:foreach>
|
</var:foreach>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2900,27 +2900,35 @@ function configureDragHandles() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initCalendarSelector() {
|
function initCalendarSelector() {
|
||||||
var selector = $("calendarSelector");
|
var selector = $("calendarSelector");
|
||||||
updateCalendarStatus(); // triggers the initial events refresh
|
updateCalendarStatus(); // triggers the initial events refresh
|
||||||
selector.changeNotification = updateCalendarsList;
|
selector.changeNotification = updateCalendarsList;
|
||||||
|
|
||||||
var list = $("calendarList");
|
var list = $("calendarList");
|
||||||
list.on("mousedown", onCalendarSelectionChange);
|
list.on("mousedown", onCalendarSelectionChange);
|
||||||
list.on("dblclick", onCalendarModify);
|
list.on("dblclick", onCalendarModify);
|
||||||
list.on("selectstart", listRowMouseDownHandler);
|
list.on("selectstart", listRowMouseDownHandler);
|
||||||
list.attachMenu("calendarsMenu");
|
list.attachMenu("calendarsMenu");
|
||||||
|
|
||||||
var items = list.childNodesWithTag("li");
|
var items = list.childNodesWithTag("li");
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
var input = items[i].childNodesWithTag("input")[0];
|
var input = items[i].childNodesWithTag("input")[0];
|
||||||
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
|
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));
|
var links = $("calendarSelectorButtons").childNodesWithTag("a");
|
||||||
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
|
$(links[0]).observe("click", clickEventWrapper(onCalendarNew));
|
||||||
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
|
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
|
||||||
|
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
|
||||||
|
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
|
||||||
}
|
}
|
||||||
|
|
||||||
function onCalendarSelectionChange(event) {
|
function onCalendarSelectionChange(event) {
|
||||||
|
|||||||
Reference in New Issue
Block a user