diff --git a/ChangeLog b/ChangeLog index ac98f00bd..9df048988 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-05-18 Wolfgang Sourdeau + * UI/MailerUI/UIxMailUserRightsEditor.[hm]: new class module that + provides a view to the IMAP acls. + * UI/MailerUI/UIxMailFolderACLEditor.m: removed obsolete module. * UI/WebServerResources/MailerUI.js: replaced all invocations of diff --git a/UI/MailerUI/GNUmakefile b/UI/MailerUI/GNUmakefile index 8b3f2108d..b8e7a4b8b 100644 --- a/UI/MailerUI/GNUmakefile +++ b/UI/MailerUI/GNUmakefile @@ -39,7 +39,7 @@ MailerUI_OBJC_FILES += \ \ UIxFilterList.m \ \ - UIxMailFolderACLEditor.m + UIxMailUserRightsEditor.m # UIxSieveEditor.m MailerUI_RESOURCE_FILES += \ diff --git a/UI/MailerUI/UIxMailUserRightsEditor.h b/UI/MailerUI/UIxMailUserRightsEditor.h new file mode 100644 index 000000000..289c95c93 --- /dev/null +++ b/UI/MailerUI/UIxMailUserRightsEditor.h @@ -0,0 +1,58 @@ +/* UIxMailUserRightsEditor.h - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * 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. + */ + +#ifndef UIXMAILUSERRIGHTSEDITOR_H +#define UIXMAILUSERRIGHTSEDITOR_H + +#import + +@interface UIxMailUserRightsEditor : UIxUserRightsEditor + +- (void) setUserCanReadMails: (BOOL) userCanReadMails; +- (BOOL) userCanReadMails; + +- (void) setUserCanWriteMails: (BOOL) userCanWriteMails; +- (BOOL) userCanWriteMails; + +- (void) setUserCanInsertMails: (BOOL) userCanInsertMails; +- (BOOL) userCanInsertMails; + +- (void) setUserCanMarkMailsRead: (BOOL) userCanMarkMailsRead; +- (BOOL) userCanMarkMailsRead; + +- (void) setUserCanEraseMails: (BOOL) userCanEraseMails; +- (BOOL) userCanEraseMails; + +- (void) setUserCanCreateSubfolders: (BOOL) userCanCreateSubfolders; +- (BOOL) userCanCreateSubfolders; + +- (void) setUserCanPostMails: (BOOL) userCanPostMails; +- (BOOL) userCanPostMails; + +- (void) setUserIsAdministrator: (BOOL) userIsAdministrator; +- (BOOL) userIsAdministrator; + +- (void) updateRights; + +@end + +#endif /* UIXMAILUSERRIGHTSEDITOR_H */ diff --git a/UI/MailerUI/UIxMailUserRightsEditor.m b/UI/MailerUI/UIxMailUserRightsEditor.m new file mode 100644 index 000000000..f2fb91ab1 --- /dev/null +++ b/UI/MailerUI/UIxMailUserRightsEditor.m @@ -0,0 +1,163 @@ +/* UIxMailUserRightsEditor.m - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * 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 +#import +#import +#import + +#import "UIxMailUserRightsEditor.h" + +@implementation UIxMailUserRightsEditor + +- (void) setUserCanReadMails: (BOOL) userCanReadMails +{ + if (userCanReadMails) + [self appendRight: SOGoRole_ObjectReader]; + else + [self removeRight: SOGoRole_ObjectReader]; +} + +- (BOOL) userCanReadMails +{ + return [userRights containsObject: SOGoRole_ObjectReader]; +} + +- (void) setUserCanWriteMails: (BOOL) userCanWriteMails +{ + if (userCanWriteMails) + [self appendRight: SOGoMailRole_Writer]; + else + [self removeRight: SOGoMailRole_Writer]; +} + +- (BOOL) userCanWriteMails +{ + return [userRights containsObject: SOGoMailRole_Writer]; +} + +- (void) setUserCanInsertMails: (BOOL) userCanInsertMails +{ + if (userCanInsertMails) + [self appendRight: SOGoRole_ObjectCreator]; + else + [self removeRight: SOGoRole_ObjectCreator]; +} + +- (BOOL) userCanInsertMails +{ + return [userRights containsObject: SOGoRole_ObjectCreator]; +} + +- (void) setUserCanMarkMailsRead: (BOOL) userCanMarkMailsRead +{ + if (userCanMarkMailsRead) + [self appendRight: SOGoMailRole_SeenKeeper]; + else + [self removeRight: SOGoMailRole_SeenKeeper]; +} + +- (BOOL) userCanMarkMailsRead +{ + return [userRights containsObject: SOGoMailRole_SeenKeeper]; +} + +- (void) setUserCanEraseMails: (BOOL) userCanEraseMails +{ + if (userCanEraseMails) + [self appendRight: SOGoRole_ObjectEraser]; + else + [self removeRight: SOGoRole_ObjectEraser]; +} + +- (BOOL) userCanEraseMails +{ + return [userRights containsObject: SOGoRole_ObjectEraser]; +} + +- (void) setUserCanCreateSubfolders: (BOOL) userCanCreateSubfolders +{ + if (userCanCreateSubfolders) + [self appendRight: SOGoRole_FolderCreator]; + else + [self removeRight: SOGoRole_FolderCreator]; +} + +- (BOOL) userCanCreateSubfolders +{ + return [userRights containsObject: SOGoRole_FolderCreator]; +} + +- (void) setUserCanPostMails: (BOOL) userCanPostMails +{ + if (userCanPostMails) + [self appendRight: SOGoMailRole_Poster]; + else + [self removeRight: SOGoMailRole_Poster]; +} + +- (BOOL) userCanPostMails +{ + return [userRights containsObject: SOGoMailRole_Poster]; +} + +- (void) setUserIsAdministrator: (BOOL) userIsAdministrator +{ + if (userIsAdministrator) + [self appendRight: SOGoMailRole_Administrator]; + else + [self removeRight: SOGoMailRole_Administrator]; +} + +- (BOOL) userIsAdministrator +{ + return [userRights containsObject: SOGoMailRole_Administrator]; +} + +- (void) updateRights +{ + WORequest *request; + + request = [context request]; + + if ([[request formValueForKey: @"ObjectCreator"] length] > 0) + [self appendRight: SOGoRole_ObjectCreator]; + else + [self removeRight: SOGoRole_ObjectCreator]; + + if ([[request formValueForKey: @"ObjectEditor"] length] > 0) + [self appendRight: SOGoRole_ObjectEditor]; + else + [self removeRight: SOGoRole_ObjectEditor]; + + if ([[request formValueForKey: @"ObjectViewer"] length] > 0) + [self appendRight: SOGoRole_ObjectViewer]; + else + [self removeRight: SOGoRole_ObjectViewer]; + + if ([[request formValueForKey: @"ObjectEraser"] length] > 0) + [self appendRight: SOGoRole_ObjectEraser]; + else + [self removeRight: SOGoRole_ObjectEraser]; +} + +@end diff --git a/UI/MailerUI/product.plist b/UI/MailerUI/product.plist index 0979d877f..ea820f5b6 100644 --- a/UI/MailerUI/product.plist +++ b/UI/MailerUI/product.plist @@ -1,5 +1,5 @@ { /* -*-javascript-*- */ - requires = ( MAIN, CommonUI, Mailer ); /* , Sieve */ + requires = ( MAIN, MainUI, CommonUI, Mailer ); /* , Sieve */ publicResources = ( "uix.css", @@ -131,15 +131,20 @@ pageName = "UIxMailListView"; actionName = "deleteFolder"; }; - editACL = { - protectedBy = "View"; - pageName = "UIxMailFolderACLEditor"; - }; compose = { protectedBy = "View"; actionClass = "UIxMailEditorAction"; actionName = "compose"; }; + userRights = { + protectedBy = "ReadAcls"; + pageName = "UIxMailUserRightsEditor"; + }; + saveUserRights = { + protectedBy = "SaveAcls"; + pageName = "UIxMailUserRightsEditor"; + actionName = "saveUserRights"; + }; }; }; diff --git a/UI/WebServerResources/UIxMailUserRightsEditor.css b/UI/WebServerResources/UIxMailUserRightsEditor.css new file mode 100644 index 000000000..eaea5734b --- /dev/null +++ b/UI/WebServerResources/UIxMailUserRightsEditor.css @@ -0,0 +1,49 @@ +DIV.title +{ color: #000; + vertical-align: bottom; + padding-top: 15px; + padding-left: 1em; + height: 33px; + background-color: #fff; + border-bottom: 1px solid #555; } + +DIV.title SPAN.value +{ margin-left: 1em; + font-size: 18px; + font-weight: bold; } + +DIV.calendarUserRights +{ margin: 1em;} + +DIV.calendarUserRights > TABLE +{ background-color: #fff; + width: 45em; + color: #999; + border-collapse: collapse; + border-bottom: 1px solid #fff; + border-right: 1px solid #fff; + border-top: 2px solid #222; + border-left: 2px solid #222; + -moz-border-top-colors: #9c9a94 #000 transparent; + -moz-border-left-colors: #9c9a94 #000 transparent; } + +DIV.calendarUserRights > TABLE TR.permissions TH +{ color: #00f; +/* background-color: #ddd; + */ border-bottom: 1px solid #999; } + +DIV.calendarUserRights > TABLE TH +{ width: 15em; } + +DIV.calendarUserRights > TABLE TD.eventType +{ width: 5em; + text-align: right; + border-right: 1px solid #999; } + +DIV.calendarUserRights > TABLE TD +{ text-align: center; + border-top: 1px solid #cecbff; } + +DIV.buttons +{ text-align: right; + margin: 1em; } diff --git a/UI/WebServerResources/UIxMailUserRightsEditor.js b/UI/WebServerResources/UIxMailUserRightsEditor.js new file mode 100644 index 000000000..71fe311f7 --- /dev/null +++ b/UI/WebServerResources/UIxMailUserRightsEditor.js @@ -0,0 +1,9 @@ +function onCancelClick(event) { + window.close(); +} + +function initACLButtons() { + $("cancelButton").addEventListener("click", onCancelClick, false); +} + +window.addEventListener("load", initACLButtons, false);