propagate from branch 'ca.inverse.sogo.1_3_11' (head 8c58bbcc380816930dac5d8da2d1d682049a6349)

to branch 'ca.inverse.sogo' (head 82d10e9354b60ee49f531a6cb8861982f714498c)

Monotone-Parent: 82d10e9354b60ee49f531a6cb8861982f714498c
Monotone-Parent: 8c58bbcc380816930dac5d8da2d1d682049a6349
Monotone-Revision: 9850237da78a7c61ca9647d852a8027ec6d8b273

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-12-09T16:01:36
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2011-12-09 16:01:36 +00:00
10 changed files with 144 additions and 65 deletions

View File

@@ -1,3 +1,17 @@
2011-12-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/SOGoUI/UIxComponent.m (-isCalendarEnabled)
(-isContactsEnabled, -isMailEnabled, -isPreferencesEnabled): new
accessors.
(-userHasCalendarAccess, -userHasMailAccess): moved from UIxPageFrame.
* UI/Common/UIxToolbar.m (-cssClasses): new accessor that
generates the CSS classes dynamically depending on the button
state and it descriptor's cssClass.
* UI/WebServerResources/generic.js (parent$): handle the case
where window.opener is null.
2011-12-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreFSMessageTable.m

View File

@@ -479,24 +479,6 @@
return canLogoff;
}
- (BOOL) userHasCalendarAccess
{
SOGoUser *user;
user = [context activeUser];
return [user canAccessModule: @"Calendar"];
}
- (BOOL) userHasMailAccess
{
SOGoUser *user;
user = [context activeUser];
return [user canAccessModule: @"Mail"];
}
- (NSString *) userLanguage
{
SOGoUserDefaults *ud;

View File

@@ -227,6 +227,24 @@
return [[[[self context] page] valueForKeyPath:onOffKey] boolValue];
}
- (NSString *) cssClasses
{
NSMutableArray *cssClasses;
NSString *infoClasses;
cssClasses = [NSMutableArray arrayWithCapacity: 16];
if ([self isButtonEnabled])
[cssClasses addObject: @"toolbarButton"];
else
[cssClasses addObject: @"disabledToolbarButton"];
infoClasses = [[self buttonInfo] objectForKey: @"cssClass"];
if ([infoClasses length] > 0)
[cssClasses addObject: infoClasses];
return [cssClasses componentsJoinedByString: @" "];
}
- (BOOL) isLastGroup {
return ([toolbarConfig indexOfObject: toolbarGroup]
== ([toolbarConfig count] - 1));

View File

@@ -66,6 +66,12 @@
- (NSString *)ownPath;
- (NSString *)relativePathToUserFolderSubPath:(NSString *)_sub;
/* module access */
- (BOOL) isCalendarEnabled;
- (BOOL) isContactsEnabled;
- (BOOL) isMailEnabled;
- (BOOL) isPreferencesEnabled;
/* date selection */
- (NSCalendarDate *) selectedDate;

View File

@@ -465,6 +465,45 @@ static NSMutableArray *abbrMonthLabelKeys = nil;
return result;
}
- (BOOL) userHasCalendarAccess
{
SOGoUser *user;
user = [context activeUser];
return [user canAccessModule: @"Calendar"];
}
- (BOOL) userHasMailAccess
{
SOGoUser *user;
user = [context activeUser];
return [user canAccessModule: @"Mail"];
}
#warning we might want to refine the tests here...
- (BOOL) isCalendarEnabled
{
return [self userHasCalendarAccess] && ![self singleWindowModeEnabled];
}
- (BOOL) isContactsEnabled
{
return ![self singleWindowModeEnabled];
}
- (BOOL) isMailEnabled
{
return [self userHasMailAccess];
}
- (BOOL) isPreferencesEnabled
{
return ![self singleWindowModeEnabled];
}
/* SoUser */
- (NSString *) shortUserNameForDisplay

View File

@@ -20,13 +20,15 @@
<ul>
<li target="generalView"><span>
<var:string label:value="General" /></span></li>
<var:if condition="userHasCalendarAccess">
<var:if condition="isCalendarEnabled">
<li target="calendarOptionsView"><span><var:string
label:value="Calendar Options"/></span></li>
</var:if
><li target="contactsOptionsView"><span><var:string
label:value="Contacts Options"/></span></li
><var:if condition="userHasMailAccess">
><var:if condition="isContactsEnabled">
<li target="contactsOptionsView"><span><var:string
label:value="Contacts Options"/></span></li>
</var:if
><var:if condition="isMailEnabled">
<li target="mailOptionsView"><span><var:string
label:value="Mail Options"/></span></li>
<li target="mailAccountsView"><span><var:string
@@ -80,7 +82,7 @@
/></label>
</div>
</div>
<var:if condition="userHasCalendarAccess">
<var:if condition="isCalendarEnabled">
<div id="calendarOptionsView" class="tab">
<label><var:string label:value="Week begins on :"/>
<var:popup list="daysList" item="item"
@@ -179,7 +181,7 @@
<input type="hidden" const:id="contactsCategoriesValue"
const:name="contactsCategoriesValue" var:value="contactsCategoriesValue"/>
</div>
<var:if condition="userHasMailAccess">
<var:if condition="isMailEnabled">
<div id="mailOptionsView" class="tab">
<label><input type="checkbox"
const:name="subscribedFoldersOnly"

View File

@@ -38,6 +38,16 @@
<var:if-ie
><link type="text/css" rel="stylesheet" rsrc:href="iefixes.css"
/></var:if-ie>
<style type="text/css">
<var:if condition="singleWindowModeEnabled"
>.single-window-not-conditional</var:if
><var:if condition="singleWindowModeEnabled"
const:negate="YES"
>.single-window-conditional</var:if>
{
display: none !important;
}
</style>
</head>
<body var:class="bodyClasses"
@@ -66,46 +76,46 @@
<var:if condition="userHasVacationEnabled"><img rsrc:src="status.vacation-msg.png" label:title="Vacation message is enabled" /></var:if>
<var:string var:value="userIdentification"/></span
></var:if>
<var:if condition="userHasCalendarAccess">
<var:if condition="isCalendar">
<span class="active"><var:string label:value="Calendar"
/></span>
</var:if>
<var:if condition="isCalendar" const:negate="YES">
<a id="calendarBannerLink"
var:href="relativeCalendarPath"
><var:string label:value="Calendar" /></a>
</var:if>
</var:if>
<var:if condition="isContacts">
<span class="active"><var:string label:value="Address Book"
/></span>
</var:if>
<var:if condition="isContacts" const:negate="YES">
<a id="contactsBannerLink"
var:href="relativeContactsPath"
><var:string label:value="Address Book" /></a>
</var:if>
<var:if condition="userHasMailAccess">
<var:if condition="isCalendarEnabled">
<var:if condition="isCalendar">
<span class="active"><var:string label:value="Calendar"
/></span>
</var:if>
<var:if condition="isCalendar" const:negate="YES">
<a id="calendarBannerLink"
var:href="relativeCalendarPath"
><var:string label:value="Calendar" /></a>
</var:if>
</var:if>
<var:if condition="isContactsEnabled">
<var:if condition="isContacts">
<span class="active"><var:string label:value="Address Book"
/></span>
</var:if>
<var:if condition="isContacts" const:negate="YES">
<a id="contactsBannerLink"
var:href="relativeContactsPath"
><var:string label:value="Address Book" /></a>
</var:if>
</var:if>
<var:if condition="isMailEnabled">
<var:if condition="isMail">
<span class="active"><var:string label:value="Mail"
<span class="active"><var:string label:value="Mail"
/></span>
</var:if>
<var:if condition="isMail" const:negate="YES">
<a id="mailBannerLink" var:href="relativeMailPath"
><var:string label:value="Mail" /></a>
</var:if>
</var:if>
<a id="preferencesBannerLink"
var:href="relativePreferencesPath"
><var:string label:value="Preferences" /></a>
<var:if condition="isSuperUser">
<var:if condition="isPreferencesEnabled">
<a id="preferencesBannerLink"
var:href="relativePreferencesPath"
><var:string label:value="Preferences" /></a>
</var:if
><var:if condition="isSuperUser">
<var:if condition="isAdministration">
<span class="active"><var:string label:value="Administration"
<span class="active"><var:string label:value="Administration"
/></span>
</var:if>
<var:if condition="isAdministration" const:negate="YES">
@@ -136,6 +146,12 @@
<var:if condition="isSuperUser" const:negate="YES"
>var IsSuperUser = false;
</var:if>
var IsCalendarEnabled = <var:if condition="isCalendarEnabled">true</var:if
><var:if condition="isCalendarEnabled" const:negate="YES">false</var:if>;
var IsAddressBookEnabled = <var:if condition="isAddressBookEnabled">true</var:if
><var:if condition="isAddressBookEnabled" const:negate="YES">false</var:if>;
var IsMailEnabled = <var:if condition="isMailEnabled">true</var:if
><var:if condition="isMailEnabled" const:negate="YES">false</var:if>;
<var:if condition="usesCASAuthentication"
>var usesCASAuthentication = true;
</var:if>

View File

@@ -10,7 +10,7 @@
<var:foreach list="toolbarConfig" item="toolbarGroup"
><var:foreach list="toolbarGroup" item="buttonInfo"
><var:if condition="isButtonEnabled"
><a class="toolbarButton"
><a var:class="cssClasses"
var:href="buttonInfo.link"
var:target="buttonInfo.target"
var:onclick="buttonInfo.onclick"
@@ -28,7 +28,7 @@
</a></var:if
><var:if condition="isButtonEnabled"
const:negate="YES"
><span class="disabledToolbarButton"
><span var:class="cssClasses"
><img class="buttonImage"
var:src="buttonImage"
var:alt="buttonTooltip"

View File

@@ -95,7 +95,7 @@ function prototypeIfyFilters() {
function _setupEvents() {
var widgets = [ "timezone", "shortDateFormat", "longDateFormat",
"timeFormat", "weekStartDay", "dayStartTime", "dayEndTime",
"firstWeek", "messageCheck", "sortByThreads",
"firstWeek", "messageCheck", "sortByThreads",
"subscribedFoldersOnly", "language", "defaultCalendar",
"enableVacation" ];
for (var i = 0; i < widgets.length; i++) {
@@ -110,7 +110,7 @@ function _setupEvents() {
// might not be present if ModulesConstraints disable those elements
if ($("replyPlacementList"))
$("replyPlacementList").observe ("change", onReplyPlacementListChange);
if ($("composeMessagesType"))
$("composeMessagesType").observe ("change", onComposeMessagesTypeChange);
@@ -781,14 +781,14 @@ function saveMailAccounts() {
/* This removal enables us to avoid a few warning from SOPE for the inputs
that were created dynamically. */
var editor = $("mailAccountEditor");
// Could be null if ModuleConstraints disables email access
if (editor)
editor.parentNode.removeChild(editor);
compactMailAccounts();
var mailAccountsJSON = $("mailAccountsJSON");
if (mailAccountsJSON)
mailAccountsJSON.value = Object.toJSON(mailAccounts);
}

View File

@@ -868,7 +868,7 @@ function log(message) {
try {
if (window.frameElement && window.frameElement.id) {
logWindow = parent.window;
while (logWindow.frameElement && window.frameElement.id)
while (logWindow.frameElement && window.frameElement.id)
logWindow = logWindow.parent.window;
}
else {
@@ -1029,7 +1029,7 @@ function setSearchCriteria(event) {
if (searchValue.ghostPhrase == searchValue.value)
searchValue.value = "";
searchValue.ghostPhrase = this.innerHTML;
searchCriteria.value = this.getAttribute('id');
@@ -1797,10 +1797,12 @@ function parent$(element) {
if (div)
p = parent.document;
else
else if (this.opener)
p = this.opener.document;
else
p = null;
return p.getElementById(element);
return (p ? p.getElementById(element) : null);
}
/* stubs */