diff --git a/Main/SOGo.m b/Main/SOGo.m index 4274d8385..1e361bc7d 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -72,10 +72,10 @@ static BOOL doCrashOnSessionCreate = NO; [[self soClassSecurityInfo] setDefaultAccess:@"allow"]; /* require Authenticated role for View and WebDAV */ - [[self soClassSecurityInfo] declareRole:SoRole_Authenticated - asDefaultForPermission:SoPerm_View]; - [[self soClassSecurityInfo] declareRole:SoRole_Authenticated - asDefaultForPermission:SoPerm_WebDAVAccess]; + [[self soClassSecurityInfo] declareRole: SoRole_Authenticated + asDefaultForPermission: SoPerm_View]; + [[self soClassSecurityInfo] declareRole: SoRole_Authenticated + asDefaultForPermission: SoPerm_WebDAVAccess]; } - (id)init { @@ -124,6 +124,8 @@ static BOOL doCrashOnSessionCreate = NO; } - (id)lookupUser:(NSString *)_key inContext:(id)_ctx { + + NSLog (@"lookupUser: %@", _key); return [[[NSClassFromString(@"SOGoUserFolder") alloc] initWithName:_key inContainer:self] autorelease]; } diff --git a/Main/SOGoProductLoader.m b/Main/SOGoProductLoader.m index 2d994ea2a..f53fa07ba 100644 --- a/Main/SOGoProductLoader.m +++ b/Main/SOGoProductLoader.m @@ -143,7 +143,7 @@ registry = [SoProductRegistry sharedProductRegistry]; fm = [NSFileManager defaultManager]; - + pathes = [[self productSearchPathes] objectEnumerator]; while ((lpath = [pathes nextObject]) != nil) { NSEnumerator *productNames; diff --git a/UI/Common/GNUmakefile b/UI/Common/GNUmakefile index 73ba23129..21e239e5b 100644 --- a/UI/Common/GNUmakefile +++ b/UI/Common/GNUmakefile @@ -23,7 +23,8 @@ CommonUI_OBJC_FILES += \ UIxTabView.m \ UIxTabItem.m \ \ - UIxToolbar.m + UIxToolbar.m \ + UIxUserLogoff.m CommonUI_RESOURCE_FILES += \ Version \ diff --git a/UI/Common/UIxPageFrame.m b/UI/Common/UIxPageFrame.m index d7949b1ff..a758d95ae 100644 --- a/UI/Common/UIxPageFrame.m +++ b/UI/Common/UIxPageFrame.m @@ -43,7 +43,7 @@ if ([self isUIxDebugEnabled]) return self->title; - return [self labelForKey:@"OpenGroupware.org"]; + return [self labelForKey: @"OpenGroupware.org"]; } - (void)setItem:(id)_item { @@ -60,10 +60,10 @@ /* Help URL/target */ - (NSString *)helpURL { - return [NSString stringWithFormat:@"help/%@.html", self->title]; + return [NSString stringWithFormat: @"help/%@.html", self->title]; } - (NSString *)helpWindowTarget { - return [NSString stringWithFormat:@"Help_%@", self->title]; + return [NSString stringWithFormat: @"Help_%@", self->title]; } @@ -78,19 +78,23 @@ // TODO: I think all this should be done by the clientObject?! - (NSString *)relativeHomePath { - return [self relativePathToUserFolderSubPath:@""]; + return [self relativePathToUserFolderSubPath: @""]; } - (NSString *)relativeCalendarPath { - return [self relativePathToUserFolderSubPath:@"Calendar/"]; + return [self relativePathToUserFolderSubPath: @"Calendar/"]; } - (NSString *)relativeContactsPath { - return [self relativePathToUserFolderSubPath:@"Contacts/"]; + return [self relativePathToUserFolderSubPath: @"Contacts/"]; } - (NSString *)relativeMailPath { - return [self relativePathToUserFolderSubPath:@"Mail/"]; + return [self relativePathToUserFolderSubPath: @"Mail/"]; +} + +- (NSString *)logoffPath { + return [self relativePathToUserFolderSubPath: @"logoff"]; } /* page based JavaScript */ @@ -132,7 +136,7 @@ pageToURL = [[NSMutableDictionary alloc] initWithCapacity:32]; rm = [self pageResourceManager]; - jsname = [pageName stringByAppendingString:@".js"]; + jsname = [pageName stringByAppendingString: @".js"]; url = [rm urlForResourceNamed: jsname inFramework: [[NSBundle bundleForClass: [page class]] bundlePath] @@ -164,7 +168,7 @@ pageToURL = [[NSMutableDictionary alloc] initWithCapacity:32]; rm = [self pageResourceManager]; - jsname = [[page frameworkName] stringByAppendingString:@".js"]; + jsname = [[page frameworkName] stringByAppendingString: @".js"]; url = [rm urlForResourceNamed: jsname inFramework: [[NSBundle bundleForClass: [page class]] bundlePath] diff --git a/UI/Common/product.plist b/UI/Common/product.plist index 760ed709a..390b6120a 100644 --- a/UI/Common/product.plist +++ b/UI/Common/product.plist @@ -14,7 +14,7 @@ box_left.gif, box_right.gif, box_botleft.gif, - box_bottom.gif, + box_bottom.gi88f, box_botright.gif, tab_selected.gif, tab_.gif, @@ -30,6 +30,15 @@ }; categories = { + SOGoUserLogin = { + methods = { + logoff = { + protectedBy = "View"; + pageName = "UIxUserLogoff"; + actionName = "logoffUser"; + } + }; + }; SOGoObject = { methods = { }; diff --git a/UI/MailerUI/UIxMailListView.m b/UI/MailerUI/UIxMailListView.m index b1008343a..a6b09cc7d 100644 --- a/UI/MailerUI/UIxMailListView.m +++ b/UI/MailerUI/UIxMailListView.m @@ -136,11 +136,14 @@ static int attachmentFlagSize = 8096; return [[[self message] valueForKey:@"uid"] stringValue]; } -- (NSString *)messageSubjectStyleClass { - return [self isMessageRead] - ? @"mailer_readmailsubject" - : @"mailer_unreadmailsubject"; +- (NSString *)messageSubjectCellStyleClass { + return [NSString stringWithFormat: @"%@ %@", + [self messageCellStyleClass], + ([self isMessageRead] + ? @"mailer_readmailsubject" + : @"mailer_unreadmailsubject")]; } + - (NSString *)messageCellStyleClass { return [self isMessageDeleted] ? @"mailer_listcell_deleted" @@ -322,25 +325,25 @@ static int attachmentFlagSize = 8096; /* JavaScript */ -- (NSString *)msgRowID { +- (NSString *)msgRowID +{ return [@"row_" stringByAppendingString:[self messageUidString]]; } -- (NSString *)msgDivID { + +- (NSString *)msgDivID +{ return [@"div_" stringByAppendingString:[self messageUidString]]; } -- (NSString *)msgIconReadDivID { +- (NSString *)msgIconReadImgID +{ return [@"readdiv_" stringByAppendingString:[self messageUidString]]; } -- (NSString *)msgIconUnreadDivID { + +- (NSString *)msgIconUnreadImgID +{ return [@"unreaddiv_" stringByAppendingString:[self messageUidString]]; } -- (NSString *)msgIconReadVisibility { - return [self isMessageRead] ? nil : @"display: none;"; -} -- (NSString *)msgIconUnreadVisibility { - return [self isMessageRead] ? @"display: none;" : nil; -} - (NSString *)clickedMsgJS { /* return 'false' aborts processing */ diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 564fe0d2a..de90f20ad 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -153,7 +153,9 @@ static NSArray *internetAccessStates = nil; } - (NSString *)relativeMailPath { - return [self relativePathToUserFolderSubPath:@"Mail/"]; + return [NSString stringWithFormat: @"%@%@/view", + [self relativePathToUserFolderSubPath:@"Mail/"], + [self emailForUser]]; } /* objects */ diff --git a/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox b/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox index 7e8d5f4cc..3a65c7eb8 100644 --- a/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox +++ b/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox @@ -1,9 +1,9 @@ -
+> diff --git a/UI/Templates/MailerUI/UIxMailListView.wox b/UI/Templates/MailerUI/UIxMailListView.wox index 5adc8b3b0..ed8b45930 100644 --- a/UI/Templates/MailerUI/UIxMailListView.wox +++ b/UI/Templates/MailerUI/UIxMailListView.wox @@ -1,202 +1,199 @@ - - + + - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - +
+
+
+
- - - - - - - - - - - - - - - - -
- - - - - - - - | - | - - - - - - - - - - | - - -
- - - -
- - - - - -
-
- - - - - - - - - -
- -
-
- -
-
- - - - -
+ + + + + + + + + + + - - - + + + + + + + + - - - -
+ + + + + + + + + + + + + + + + +
+ + + + + + + + | + | + + + + + + + + + + | + + +
- - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + +
- - -
- - + + + + + + + + + + + + + + + + + + + + + + + + +
+
- - - - - -
+ + + +
diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index 2cac0afc2..c0d8dd84b 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -54,6 +54,8 @@ > | | + | diff --git a/UI/Templates/UIxPageFrame.wox b/UI/Templates/UIxPageFrame.wox index ed3fa5979..c308380a4 100644 --- a/UI/Templates/UIxPageFrame.wox +++ b/UI/Templates/UIxPageFrame.wox @@ -12,8 +12,8 @@ - - + + @@ -38,6 +38,8 @@ > | | + | @@ -151,3 +153,10 @@ + diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 2d334531c..0befa66e0 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -256,12 +256,13 @@ function getSelectedNodes(parentNode) { } function onRowClick(node, event) { - var text = document.getElementById('list'); - text.innerHTML = ''; +// var text = document.getElementById('list'); +// text.innerHTML = ''; var startSelection = getSelectedNodes(node.parentNode); if (event.shiftKey == 1 - && acceptMultiSelect(node.parentNode)) { + && (acceptMultiSelect(node.parentNode) + || acceptMultiSelect(node.parentNode.parentNode))) { if (isNodeSelected(node) == true) { deselectNode(node); } else { diff --git a/UI/WebServerResources/mailer.css b/UI/WebServerResources/mailer.css index e6b9f0303..777a05946 100644 --- a/UI/WebServerResources/mailer.css +++ b/UI/WebServerResources/mailer.css @@ -151,6 +151,7 @@ td.titlecell .tableview { + cursor: default; font-size: medium; font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; vertical-align: top; @@ -273,6 +274,7 @@ div.mailer_readmailsubject padding-top: 1px; padding-left: 20px; } + div.mailer_unreadmailsubject { background-image: url(message-mail.png); @@ -282,6 +284,7 @@ div.mailer_unreadmailsubject padding-top: 1px; font-weight: bold; } + div.mailer_readmailsubject a { color: black; @@ -297,9 +300,12 @@ td.mailer_listcell_deleted { text-decoration: line-through; } + td.mailer_listcell_regular { + white-space: nowrap; } + td.mailer_listcell_regular a { color: black; @@ -312,6 +318,12 @@ tr.tableview td.mailer_listcell_regular border-bottom: 1px solid #fff; } +IMG.mailerReadIcon +{ +/* TODO + */ +} + div.mailer_readicon { /* TODO: use Thunderbird icon */ @@ -319,6 +331,7 @@ div.mailer_readicon background-repeat: no-repeat; background-position: 0px 4px; } + div.mailer_readicon a { width: 17px; @@ -326,13 +339,15 @@ div.mailer_readicon a margin: 0px auto; display: block; } -div.mailer_unreadicon + +div.mailerUnreadIcon { /* TODO: use Thunderbird icon */ background-image: url(icon_unread.gif); background-repeat: no-repeat; background-position: 0px 4px; } + div.mailer_unreadicon a { width: 17px; @@ -386,15 +401,9 @@ img.mailer_imagecontent border: 0px; } -body -{ - overflow: hidden; -} - div.pageContent { - overflow: auto; - height: 100%; + overflow: hidden; } div.mailer_mailcontent @@ -491,3 +500,22 @@ table.linked_attachment_meta color: #444444; font-style: italic; } + +TABLE#messageList +{ + border: 1px; + border-collapse: collapse; + overflow: scroll; + height: 5em !important; +} + +TABLE#messageList TR TD +{ + height: 1em; !important; +} + +#messageList TR._selected TD +{ + background: #4b6983; + color: #fff; +}