]> err.no Git - scalable-opengroupware.org/blob - UI/Scheduler/UIxCalMainView.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1007 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / Scheduler / UIxCalMainView.m
1 /* UIxCalMainView.m - this file is part of SOGo
2  *
3  * Copyright (C) 2006 Inverse groupe conseil
4  *
5  * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
6  *
7  * This file is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This file is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 #import <Foundation/NSArray.h>
24 #import <Foundation/NSCalendarDate.h>
25 #import <Foundation/NSString.h>
26 #import <Foundation/NSUserDefaults.h>
27 #import <Foundation/NSValue.h>
28
29 #import <NGObjWeb/SoSecurityManager.h>
30 #import <NGObjWeb/WOResponse.h>
31
32 #import <SOGo/SOGoPermissions.h>
33 #import <SOGo/SOGoUser.h>
34
35 #import "UIxCalMainView.h"
36
37 #import <Appointments/SOGoAppointmentFolder.h>
38
39 static NSMutableArray *monthMenuItems = nil;
40 static NSMutableArray *yearMenuItems = nil;
41
42 @implementation UIxCalMainView
43
44 - (NSArray *) monthMenuItems
45 {
46   unsigned int count;
47  
48   if (!monthMenuItems)
49     {
50       monthMenuItems = [NSMutableArray arrayWithCapacity: 12];
51       
52       for (count = 1; count < 13; count++)
53         [monthMenuItems addObject:
54                           [NSString stringWithFormat: @"%.2d", count]];
55       [monthMenuItems retain];
56     }
57
58   return monthMenuItems;
59 }
60
61 - (void) setMonthMenuItem: (NSString *) aMonthMenuItem
62 {
63   monthMenuItem = aMonthMenuItem;
64 }
65
66 - (NSString *) monthMenuItem
67 {
68   return monthMenuItem;
69 }
70
71 - (NSString *) monthMenuItemLabel
72 {
73   return [self localizedNameForMonthOfYear: [monthMenuItem intValue]];
74 }
75
76 - (NSArray *) yearMenuItems
77 {
78   int count, year;
79  
80   if (!yearMenuItems)
81     {
82       year = [[NSCalendarDate date] yearOfCommonEra];
83       yearMenuItems = [NSMutableArray arrayWithCapacity: 11];
84       for (count = -5; count < 6; count++)
85         [yearMenuItems addObject: [NSNumber numberWithInt: year + count]];
86       [yearMenuItems retain];
87     }
88
89   return yearMenuItems;
90 }
91
92 - (void) setYearMenuItem: (NSNumber *) aYearMenuItem
93 {
94   yearMenuItem = aYearMenuItem;
95 }
96
97 - (NSNumber *) yearMenuItem
98 {
99   return yearMenuItem;
100 }
101
102 - (id) batchDeleteAction
103 {
104   NSArray *ids;
105   SOGoAppointmentFolder *clientObject;
106
107   ids = [[self queryParameterForKey: @"ids"] componentsSeparatedByString: @"/"];
108   if (ids)
109     {
110       clientObject = [self clientObject];
111       [clientObject deleteEntriesWithIds: ids];
112     }
113
114   return self;
115 }
116
117 - (id <WOActionResults>) updateCalendarsAction
118 {
119   WOResponse *response;
120   NSUserDefaults *ud;
121
122   ud = [[context activeUser] userDefaults];
123   [ud setObject: [self queryParameterForKey: @"ids"]
124                        forKey: @"calendaruids"];
125   [ud synchronize];
126   response = [context response];
127   [response setStatus: 200];
128   [response setHeader: @"text/html; charset=\"utf-8\"" forKey: @"content-type"];
129
130   return response;
131 }
132
133 - (NSString *) _rightsForUIDs: (NSString *) uids
134 {
135   NSEnumerator *ids;
136   NSString *uid;
137   NSMutableString *rights;
138   SOGoAppointmentFolder *refFolder, *currentFolder;
139   SoSecurityManager *securityManager;
140   BOOL result;
141
142   securityManager = [SoSecurityManager sharedSecurityManager];
143   refFolder = [self clientObject];
144
145   rights = [NSMutableString string];
146   if ([uids length] > 0)
147     {
148       ids = [[uids componentsSeparatedByString: @","] objectEnumerator];
149       uid = [ids nextObject];
150       while (uid)
151         {
152           currentFolder
153             = [refFolder
154                 lookupCalendarFolderForUID: (([uid hasPrefix: @"-"])
155                                              ? [uid substringFromIndex: 1]
156                                              : uid)];
157           result = (![securityManager validatePermission: SoPerm_AccessContentsInformation
158                                       onObject: currentFolder
159                                       inContext: context]);
160           if ([rights length] == 0)
161             [rights appendFormat: @"%d", result];
162           else
163             [rights appendFormat: @",%d", result];
164           uid = [ids nextObject];
165         }
166     }
167
168   return rights;
169 }
170
171 - (id <WOActionResults>) checkRightsAction
172 {
173   WOResponse *response;
174   NSUserDefaults *ud;
175   NSString *uids, *rights;
176
177   ud = [[context activeUser] userDefaults];
178   uids = [ud stringForKey: @"calendaruids"];
179
180   response = [context response];
181   [response setStatus: 200];
182   [response setHeader: @"text/plain; charset=\"utf-8\""
183             forKey: @"content-type"];
184
185   rights = [self _rightsForUIDs: uids];
186   [response appendContentString: rights];
187
188   return response;
189 }
190
191 @end