mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-08-08 16:33:22 +00:00
Monotone-Parent: 1b073e285785f32b4c27e867a0e0d363fdc74264
Monotone-Revision: 217d2de82145e1b73b967f969ccb9467d0680dcb Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-11-01T19:32:19 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
/* UIxContactActions.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2010 Inverse inc.
|
||||
*
|
||||
* 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/NSString.h>
|
||||
|
||||
#import <NGObjWeb/WODirectAction.h>
|
||||
#import <NGObjWeb/WORequest.h>
|
||||
|
||||
#import <NGCards/NGVCard.h>
|
||||
|
||||
#import <Contacts/SOGoContactGCSEntry.h>
|
||||
|
||||
#import <Common/WODirectAction+SOGo.h>
|
||||
|
||||
@interface NGVCard (SOGoActionCategory)
|
||||
|
||||
- (BOOL) addOrRemove: (BOOL) set
|
||||
category: (NSString *) newCategory;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NGVCard (SOGoActionCategory)
|
||||
|
||||
- (BOOL) addOrRemove: (BOOL) set
|
||||
category: (NSString *) category
|
||||
{
|
||||
NSMutableArray *categories;
|
||||
BOOL modified;
|
||||
NSUInteger idx;
|
||||
|
||||
modified = NO;
|
||||
|
||||
categories = [[self categories] mutableCopy];
|
||||
[categories autorelease];
|
||||
if (set)
|
||||
{
|
||||
if (![categories containsObject: category])
|
||||
{
|
||||
[categories addObject: category];
|
||||
modified = YES;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idx = [categories indexOfObject: category];
|
||||
if (idx != NSNotFound)
|
||||
{
|
||||
[categories removeObjectAtIndex: idx];
|
||||
modified = YES;
|
||||
}
|
||||
}
|
||||
|
||||
if (modified)
|
||||
[self setCategories: categories];
|
||||
|
||||
return modified;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface UIxContactActions : WODirectAction
|
||||
|
||||
- (WOResponse *) setCategoryAction;
|
||||
- (WOResponse *) unsetCategoryAction;
|
||||
|
||||
@end
|
||||
|
||||
@implementation UIxContactActions
|
||||
|
||||
- (WOResponse *) _setOrUnsetCategoryAction: (BOOL) set
|
||||
{
|
||||
SOGoContactGCSEntry *contact;
|
||||
NSString *category;
|
||||
WORequest *rq;
|
||||
WOResponse *response;
|
||||
NGVCard *card;
|
||||
|
||||
rq = [context request];
|
||||
category = [rq formValueForKey: @"category"];
|
||||
if ([category length] > 0)
|
||||
{
|
||||
contact = [self clientObject];
|
||||
if (![contact isNew])
|
||||
{
|
||||
card = [contact vCard];
|
||||
if ([card addOrRemove: set category: category])
|
||||
[contact save];
|
||||
response = [self responseWith204];
|
||||
}
|
||||
else
|
||||
response = [self responseWithStatus: 404
|
||||
andString: @"Contact does not exist"];
|
||||
}
|
||||
else
|
||||
response = [self responseWithStatus: 403
|
||||
andString: @"Missing 'category' parameter"];
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
- (WOResponse *) setCategoryAction
|
||||
{
|
||||
return [self _setOrUnsetCategoryAction: YES];
|
||||
}
|
||||
|
||||
- (WOResponse *) unsetCategoryAction
|
||||
{
|
||||
return [self _setOrUnsetCategoryAction: NO];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user