mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-20 20:39:28 +00:00
(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:
9
NEWS
9
NEWS
@@ -1,3 +1,12 @@
|
||||
2.3.3 (2015-mm-dd)
|
||||
------------------
|
||||
|
||||
New features
|
||||
|
||||
Enhancements
|
||||
|
||||
Bug fixes
|
||||
|
||||
2.3.2 (2015-09-16)
|
||||
------------------
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -122,6 +122,11 @@
|
||||
protectedBy = "View";
|
||||
pageName = "UIxContactFolderProperties";
|
||||
};
|
||||
saveProperties = {
|
||||
protectedBy = "Access Contents Information";
|
||||
pageName = "UIxContactFolderProperties";
|
||||
actionName = "saveProperties";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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."));
|
||||
|
||||
Reference in New Issue
Block a user