sogo/UI/Scheduler/UIxCalMainView.m
Wolfgang Sourdeau 7b8f76937c Monotone-Parent: 991fa5d50c1c078407d84332831b1f0c32190152
Monotone-Revision: c37bbff8f7a0f029635c72cfa745ff24e2b2220c

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-01-04T14:37:07
Monotone-Branch: ca.inverse.sogo
2007-01-04 14:37:07 +00:00

192 lines
4.8 KiB
Objective-C

/* UIxCalMainView.m - this file is part of SOGo
*
* Copyright (C) 2006 Inverse groupe conseil
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This file is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#import <Foundation/NSArray.h>
#import <Foundation/NSCalendarDate.h>
#import <Foundation/NSString.h>
#import <Foundation/NSUserDefaults.h>
#import <Foundation/NSValue.h>
#import <NGObjWeb/SoSecurityManager.h>
#import <NGObjWeb/WOResponse.h>
#import <SOGo/SOGoPermissions.h>
#import <SOGo/SOGoUser.h>
#import "UIxCalMainView.h"
#import <Appointments/SOGoAppointmentFolder.h>
static NSMutableArray *monthMenuItems = nil;
static NSMutableArray *yearMenuItems = nil;
@implementation UIxCalMainView
- (NSArray *) monthMenuItems
{
unsigned int count;
if (!monthMenuItems)
{
monthMenuItems = [NSMutableArray arrayWithCapacity: 12];
for (count = 1; count < 13; count++)
[monthMenuItems addObject:
[NSString stringWithFormat: @"%.2d", count]];
[monthMenuItems retain];
}
return monthMenuItems;
}
- (void) setMonthMenuItem: (NSString *) aMonthMenuItem
{
monthMenuItem = aMonthMenuItem;
}
- (NSString *) monthMenuItem
{
return monthMenuItem;
}
- (NSString *) monthMenuItemLabel
{
return [self localizedNameForMonthOfYear: [monthMenuItem intValue]];
}
- (NSArray *) yearMenuItems
{
int count, year;
if (!yearMenuItems)
{
year = [[NSCalendarDate date] yearOfCommonEra];
yearMenuItems = [NSMutableArray arrayWithCapacity: 11];
for (count = -5; count < 6; count++)
[yearMenuItems addObject: [NSNumber numberWithInt: year + count]];
[yearMenuItems retain];
}
return yearMenuItems;
}
- (void) setYearMenuItem: (NSNumber *) aYearMenuItem
{
yearMenuItem = aYearMenuItem;
}
- (NSNumber *) yearMenuItem
{
return yearMenuItem;
}
- (id) batchDeleteAction
{
NSArray *ids;
SOGoAppointmentFolder *clientObject;
ids = [[self queryParameterForKey: @"ids"] componentsSeparatedByString: @"/"];
if (ids)
{
clientObject = [self clientObject];
[clientObject deleteEntriesWithIds: ids];
}
return self;
}
- (id <WOActionResults>) updateCalendarsAction
{
WOResponse *response;
NSUserDefaults *ud;
ud = [[context activeUser] userDefaults];
[ud setObject: [self queryParameterForKey: @"ids"]
forKey: @"calendaruids"];
[ud synchronize];
response = [context response];
[response setStatus: 200];
[response setHeader: @"text/html; charset=\"utf-8\"" forKey: @"content-type"];
return response;
}
- (NSString *) _rightsForUIDs: (NSString *) uids
{
NSEnumerator *ids;
NSString *uid;
NSMutableString *rights;
SOGoAppointmentFolder *refFolder, *currentFolder;
SoSecurityManager *securityManager;
BOOL result;
securityManager = [SoSecurityManager sharedSecurityManager];
refFolder = [self clientObject];
rights = [NSMutableString string];
if ([uids length] > 0)
{
ids = [[uids componentsSeparatedByString: @","] objectEnumerator];
uid = [ids nextObject];
while (uid)
{
currentFolder
= [refFolder
lookupCalendarFolderForUID: (([uid hasPrefix: @"-"])
? [uid substringFromIndex: 1]
: uid)];
result = (![securityManager validatePermission: SoPerm_AccessContentsInformation
onObject: currentFolder
inContext: context]);
if ([rights length] == 0)
[rights appendFormat: @"%d", result];
else
[rights appendFormat: @",%d", result];
uid = [ids nextObject];
}
}
return rights;
}
- (id <WOActionResults>) checkRightsAction
{
WOResponse *response;
NSUserDefaults *ud;
NSString *uids, *rights;
ud = [[context activeUser] userDefaults];
uids = [ud stringForKey: @"calendaruids"];
response = [context response];
[response setStatus: 200];
[response setHeader: @"text/plain; charset=\"utf-8\""
forKey: @"content-type"];
rights = [self _rightsForUIDs: uids];
[response appendContentString: rights];
return response;
}
@end