(feat) GUI code to set or now sync flag on address book.

Also thrashed entirely the sync tag concept. Funambol is dead, thank god for that.
This commit is contained in:
Ludovic Marcotte
2015-09-25 15:21:06 -04:00
parent 5409cb2927
commit c8c7aaa459
9 changed files with 72 additions and 121 deletions

9
NEWS
View File

@@ -1,3 +1,12 @@
2.3.3 (2015-mm-dd)
------------------
New features
Enhancements
Bug fixes
2.3.2 (2015-09-16)
------------------

View File

@@ -48,6 +48,41 @@
return [addressBook displayName];
}
- (NSString *) setAddressBookName: (NSString *) newName
{
[addressBook renameTo: newName];
}
- (BOOL) synchronizeAddressBook
{
return [self mustSynchronize] || [addressBook synchronize];
}
- (void) setSynchronizeAddressBook: (BOOL) new
{
[addressBook setSynchronize: new];
}
- (BOOL) mustSynchronize
{
return [[addressBook nameInContainer] isEqualToString: @"personal"];
}
- (BOOL) shouldTakeValuesFromRequest: (WORequest *) request
inContext: (WOContext*) context
{
NSString *method;
method = [[request uri] lastPathComponent];
return [method isEqualToString: @"saveProperties"];
}
- (id <WOActionResults>) savePropertiesAction
{
return [self jsCloseWithRefreshMethod: nil];
}
- (NSString *) _baseCardDAVURL
{
NSString *davURL;

View File

@@ -122,6 +122,11 @@
protectedBy = "View";
pageName = "UIxContactFolderProperties";
};
saveProperties = {
protectedBy = "Access Contents Information";
pageName = "UIxContactFolderProperties";
actionName = "saveProperties";
};
};
};

View File

@@ -43,11 +43,7 @@
- (BOOL) synchronizeCalendar;
- (void) setSynchronizeCalendar: (BOOL) new;
- (NSString *) originalCalendarSyncTag;
- (NSString *) allCalendarSyncTags;
- (BOOL) mustSynchronize;
- (NSString *) calendarSyncTag;
- (void) setCalendarSyncTag: (NSString *) newTag;
/* notifications */
- (BOOL) notifyOnPersonalModifications;

View File

@@ -91,52 +91,12 @@
- (BOOL) synchronizeCalendar
{
return [self mustSynchronize] || [calendar synchronizeCalendar];
return [self mustSynchronize] || [calendar synchronize];
}
- (void) setSynchronizeCalendar: (BOOL) new
{
[calendar setSynchronizeCalendar: new];
}
- (NSString *) originalCalendarSyncTag
{
return [calendar syncTag];
}
- (NSString *) allCalendarSyncTags
{
SOGoUserSettings *settings;
NSMutableDictionary *calendarSettings;
NSMutableDictionary *syncTags;
NSEnumerator *keysList;
NSMutableArray *tags;
NSString *key, *result;
settings = [[context activeUser] userSettings];
calendarSettings = [settings objectForKey: @"Calendar"];
tags = nil;
if (calendarSettings)
{
syncTags = [calendarSettings objectForKey: @"FolderSyncTags"];
if (syncTags)
{
tags = [NSMutableArray arrayWithCapacity: [syncTags count]];
keysList = [syncTags keyEnumerator];
while ((key = (NSString*)[keysList nextObject])) {
if (![key isEqualToString: [calendar folderReference]])
[tags addObject: [syncTags objectForKey: key]];
}
}
}
if (!tags)
result = @"";
else
result = [tags componentsJoinedByString: @","];
return result;
[calendar setSynchronize: new];
}
- (BOOL) mustSynchronize
@@ -144,16 +104,6 @@
return [[calendar nameInContainer] isEqualToString: @"personal"];
}
- (NSString *) calendarSyncTag
{
return [calendar syncTag];
}
- (void) setCalendarSyncTag: (NSString *) newTag
{
[calendar setSyncTag: newTag];
}
- (BOOL) showCalendarAlarms
{
return [calendar showCalendarAlarms];

View File

@@ -11,6 +11,8 @@
const:popup="YES"
title="title">
<form const:href="saveProperties" name="propertiesform"
id="propertiesform">
<div class="tabsContainer" id="propertiesTabs">
<ul>
<li target="properties">
@@ -29,6 +31,20 @@
<input type="text" name="addressBookName" id="addressBookName" class="textField" var:value="addressBookName" />
</div>
</fieldset>
<fieldset>
<legend><var:string label:value="Synchronization"/></legend>
<div><label
><input type="checkbox" const:class="checkBox"
name="synchronizeAddressBook"
id="synchronizeAddressBook"
var:checked="synchronizeAddressBook"
var:disabled="mustSynchronize"
/><var:string label:value="Synchronize"
/></label></div>
</fieldset>
</div>
<!-- Second Tab -->
@@ -60,4 +76,5 @@
</div>
</div>
</div>
</form>
</var:component>

View File

@@ -133,25 +133,7 @@
var:disabled="mustSynchronize"
/><var:string label:value="Synchronize"
/></label></div>
<var:if condition="mustSynchronize" const:negate="YES"
><div><span class="label"><var:string
label:value="Tag:"/></span
><span class="content"><input type="text"
name="calendarSyncTag"
id="calendarSyncTag"
class="textField"
var:value="calendarSyncTag"
/></span
><var:if condition="synchronizeCalendar"><input type="hidden"
name="originalCalendarSyncTag"
id="originalCalendarSyncTag"
var:value="originalCalendarSyncTag"
/></var:if><input type="hidden"
name="allCalendarSyncTags"
id="allCalendarSyncTags"
var:value="allCalendarSyncTags"
/></div></var:if>
</fieldset>
<fieldset>

View File

@@ -43,43 +43,11 @@ function onOKClick(event) {
var calendarColor = $("calendarColor");
var calendarID = $("calendarID");
var save = true;
var tag = $("calendarSyncTag");
var originalTag = $("originalCalendarSyncTag");
var allTags = $("allCalendarSyncTags");
if (calendarName.value.blank()) {
alert(_("Please specify a calendar name."));
save = false;
}
if (save
&& allTags)
allTags = allTags.value.split(",");
if (save
&& tag
&& $("synchronizeCalendar").checked) {
if (tag.value.blank()) {
alert(_("tagNotDefined"));
save = false;
}
else if (allTags
&& allTags.indexOf(tag.value) > -1) {
alert(_("tagAlreadyExists"));
save = false;
}
else if (originalTag
&& !originalTag.value.blank()) {
if (tag.value != originalTag.value)
save = confirm(_("tagHasChanged"));
}
else
save = confirm(_("tagWasAdded"));
}
else if (save
&& originalTag
&& !originalTag.value.blank())
save = confirm(_("tagWasRemoved"));
if (save) {
window.opener.updateCalendarProperties(calendarID.value,

View File

@@ -20,20 +20,9 @@ function onOKClick(event) {
var selected = folders.getSelectedNodes()[0];
if (!AddressBookName.value.blank()) {
var newName = AddressBookName.value;
var currentName = AddressBookName.defaultValue;
if (newName && newName.length > 0 && newName != currentName) {
if (selected.getAttribute("owner") != "nobody") {
var url = (URLForFolderID(selected.getAttribute("id")) + "/renameFolder?name=" + escape(newName.utf8encode()));
triggerAjaxRequest(url, folderRenameCallback, {node: selected, name: newName});
}
else {
alert_("You do not own this address book");
}
}
else
window.close();
var displayNameNode = selected.childNodesWithTag("span")[0];
displayNameNode.innerHTML = AddressBookName.value.escapeHTML();
$("propertiesform").submit();
}
else
alert(_("Please specify an address book name."));