mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-02-26 19:56:23 +00:00
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:
14
ChangeLog
14
ChangeLog
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -66,6 +66,12 @@
|
||||
- (NSString *)ownPath;
|
||||
- (NSString *)relativePathToUserFolderSubPath:(NSString *)_sub;
|
||||
|
||||
/* module access */
|
||||
- (BOOL) isCalendarEnabled;
|
||||
- (BOOL) isContactsEnabled;
|
||||
- (BOOL) isMailEnabled;
|
||||
- (BOOL) isPreferencesEnabled;
|
||||
|
||||
/* date selection */
|
||||
- (NSCalendarDate *) selectedDate;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user