Monotone-Parent: 0bad93574cbb34f80f8e581a8347fec75a28f612

Monotone-Revision: 31bbff0f57dce6334191e5cabb61c655e5022a37

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-08-09T14:17:22
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-08-09 14:17:22 +00:00
parent fc12cf9fd9
commit 308de80e6a
7 changed files with 86 additions and 17 deletions

View File

@@ -1,5 +1,15 @@
2010-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/Common/UIxPageFrame.m (-setUserDefaultsKeys:)
(-hasUserDefaultsKeys, -setUserSettingsKeys:)
(-hasUserSettingsKeys): new accessor for determining explicitly
which user defaults/settings keys are returned. The new
corresponding ivars are "udKeys" and "usKeys" respectively.
(-userDefaults, -userSettings): rewrote methods to create a
dictionary containing only the requested keys (see above). Since
the source are now explicitly queried, the values can now be
inherited from the domain and system defaults.
* UI/WebServerResources/UIxFilterEditor.js (loadMailboxes): the
first account is now always identitied with "0", therefore we no
longer need the "firstMailAccount" variable.

View File

@@ -40,6 +40,8 @@
NSString *toolbar;
id item;
BOOL isPopup;
NSArray *udKeys;
NSArray *usKeys;
NSMutableArray *additionalCSSFiles;
NSMutableArray *additionalJSFiles;
}

View File

@@ -25,6 +25,7 @@
#import <NGObjWeb/WOResourceManager.h>
#import <SOGo/NSArray+Utilities.h>
#import <SOGo/NSDictionary+Utilities.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h>
@@ -44,6 +45,8 @@
item = nil;
title = nil;
toolbar = nil;
udKeys = nil;
usKeys = nil;
additionalJSFiles = nil;
additionalCSSFiles = nil;
}
@@ -56,6 +59,8 @@
[item release];
[title release];
[toolbar release];
[udKeys release];
[usKeys release];
[additionalJSFiles release];
[additionalCSSFiles release];
[super dealloc];
@@ -453,30 +458,67 @@
return [ud language];
}
- (NSString *) userSettings
/* UserDefaults, UserSettings */
- (NSString *) _dictionaryWithKeys: (NSArray *) keys
fromSource: (SOGoDefaultsSource *) source
{
SOGoUserSettings *us;
NSString *jsonResult;
NSString *key;
int count, max;
NSMutableDictionary *dict;
us = [[context activeUser] userSettings];
jsonResult = [[us source] jsonRepresentation];
if (!jsonResult)
jsonResult = @"{}";
max = [keys count];
return jsonResult;
dict = [NSMutableDictionary dictionaryWithCapacity: max];
for (count = 0; count < max; count++)
{
key = [keys objectAtIndex: count];
[dict setObject: [source objectForKey: key]
forKey: key];
}
return [dict jsonRepresentation];
}
- (void) setUserDefaultsKeys: (NSString *) newKeys
{
[udKeys release];
udKeys = [[newKeys componentsSeparatedByString: @","] trimmedComponents];
[udKeys retain];
}
- (BOOL) hasUserDefaultsKeys
{
return ([udKeys count] > 0);
}
- (NSString *) userDefaults
{
SOGoUserDefaults *ud;
NSString *jsonResult;
ud = [[context activeUser] userDefaults];
jsonResult = [[ud source] jsonRepresentation];
if (!jsonResult)
jsonResult = @"{}";
return jsonResult;
return [self _dictionaryWithKeys: udKeys fromSource: ud];
}
- (void) setUserSettingsKeys: (NSString *) newKeys
{
[usKeys release];
usKeys = [[newKeys componentsSeparatedByString: @","] trimmedComponents];
[usKeys retain];
}
- (BOOL) hasUserSettingsKeys
{
return ([usKeys count] > 0);
}
- (NSString *) userSettings
{
SOGoUserSettings *us;
us = [[context activeUser] userSettings];
return [self _dictionaryWithKeys: usKeys fromSource: us];
}
/* browser/os identification */

View File

@@ -10,6 +10,7 @@
className="UIxPageFrame"
title="panelTitle"
const:popup="YES"
const:userDefaultsKeys="SOGoMailComposeMessageType,SOGoMailReplyPlacement,SOGoMailSignature"
const:jsFiles="UIxMailToSelection.js,ckeditor/ckeditor.js,SOGoAutoCompletion.js">
<script type="text/javascript">
var mailIsReply = <var:string value="isMailReply"/>;

View File

@@ -7,6 +7,8 @@
xmlns:label="OGo:label"
className="UIxPageFrame"
title="title"
const:userDefaultsKeys="SOGoMailMessageCheck,SOGoMailListViewColumnsOrder"
const:userSettingsKeys="Mail"
const:jsFiles="dtree.js,MailerUIdTree.js,SOGoAutoCompletion.js,SOGoResizableTable.js,SOGoMailDataSource.js,SOGoDataTable.js">
<script type="text/javascript">
var textMailAccounts = '<var:string value="mailAccounts" const:escapeHTML="NO"/>';

View File

@@ -7,6 +7,8 @@
xmlns:rsrc="OGo:url"
xmlns:label="OGo:label"
className="UIxPageFrame"
const:userDefaultsKeys="SOGoCalendarCategoriesColors"
const:userSettingsKeys="Calendar,ShowCompletedTasks"
const:jsFiles="SchedulerUIDnD.js"
title="title">
<script type="text/javascript">

View File

@@ -45,8 +45,19 @@
><var:if condition="isPopup" const:negate="YES"
><var:if condition="isUIxDebugEnabled"
><div id="logConsole"><!-- space --></div></var:if>
<div id="linkBanner" class="linkbanner">
<var:if condition="canLogoff"
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
const:negate="YES"><var:if condition="hasUserSettingsKeys"
><script type="text/javascript">
var UserSettings = <var:string value="userSettings" const:escapeHTML="NO"/>;
</script
></var:if><var:if condition="hasUserDefaultsKeys">
<script type="text/javascript">
var UserDefaults = <var:string value="userDefaults" const:escapeHTML="NO"/>;
</script
></var:if
></var:if>
<div id="linkBanner" class="linkbanner">
<var:if condition="canLogoff"
><a id="logoff" var:href="logoffPath"
><var:string label:value="Disconnect"/> </a
><span id="userIdentificationDisplay">
@@ -127,8 +138,7 @@
>var UserFolderURL = '<var:string value="userFolderPath" const:escapeHTML="NO"/>';
var UserLogin = '<var:string value="shortUserNameForDisplay" const:escapeHTML="NO"/>';
var UserLanguage = '<var:string value="userLanguage" const:escapeHTML="NO"/>';
var UserSettings = <var:string value="userSettings" const:escapeHTML="NO"/>;
var UserDefaults = <var:string value="userDefaults" const:escapeHTML="NO"/>;</var:if>
</var:if>
<var:string value="commonLocalizableStrings" const:escapeHTML="NO"/>
<var:string value="productLocalizableStrings" const:escapeHTML="NO"/>
</script>