merge of '36df3bcfd6c56f483f2676ceb6b6757a6506dbb7'

and 'f12c75a72aac13edc9728fe5a656c622487836dd'

Monotone-Parent: 36df3bcfd6c56f483f2676ceb6b6757a6506dbb7
Monotone-Parent: f12c75a72aac13edc9728fe5a656c622487836dd
Monotone-Revision: 0c622c14bea584c75539ec4bf9d8ca29899745ef

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-09-14T22:05:54
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-09-14 22:05:54 +00:00
80 changed files with 1299 additions and 1111 deletions
+83 -59
View File
@@ -19,8 +19,8 @@ function validateEditorInput(sender) {
errortext = errortext + labels.error_missingrecipients + "\n";
if (errortext.length > 0) {
alert(labels.error_validationfailed.decodeEntities() + ":\n"
+ errortext.decodeEntities());
alert(labels.error_validationfailed + ":\n"
+ errortext);
return false;
}
return true;
@@ -497,28 +497,24 @@ function refreshContacts(contactId) {
}
function onAddressBookNew(event) {
var name = window.prompt(labels["Name of the Address Book"].decodeEntities());
if (name) {
if (document.newAbAjaxRequest) {
document.newAbAjaxRequest.aborted = true;
document.newAbAjaxRequest.abort();
}
var url = ApplicationBaseURL + "/newAb?name=" + name;
document.newAbAjaxRequest
= triggerAjaxRequest(url, newAbCallback, name);
}
createFolder(window.prompt(labels["Name of the Address Book"]),
appendAddressBook);
preventDefault(event);
}
function appendAddressBook(name, folder) {
var li = document.createElement("li");
$("contactFolders").appendChild(li);
li.setAttribute("id", folder);
li.appendChild(document.createTextNode(name));
setEventsOnContactFolder(li);
if (folder)
folder = accessToSubscribedFolder(folder);
else
folder = "/" + name;
var li = document.createElement("li");
$("contactFolders").appendChild(li);
li.setAttribute("id", folder);
li.appendChild(document.createTextNode(name));
setEventsOnContactFolder(li);
}
function newAbCallback(http) {
function newFolderCallback(http) {
if (http.readyState == 4
&& http.status == 201) {
var name = http.callbackData;
@@ -552,60 +548,60 @@ function onAddressBookRemove(event) {
var selector = $("contactFolders");
var nodes = selector.getSelectedNodes();
if (nodes.length > 0) {
nodes[0].deselect();
var folderId = nodes[0].getAttribute("id");
var folderIdElements = folderId.split(":");
if (folderIdElements.length > 1)
unsubscribeFromFolder(folderId, onFolderUnsubscribeCB, folderId);
else {
var abId = folderIdElements[0].substr(1);
deletePersonalAddressBook(abId);
var personal = $("/personal");
personal.select();
onFolderSelectionChange();
}
nodes[0].deselect();
var folderId = nodes[0].getAttribute("id");
var folderIdElements = folderId.split("_");
if (folderIdElements.length > 1)
unsubscribeFromFolder(folderId, onFolderUnsubscribeCB, folderId);
else {
var abId = folderIdElements[0].substr(1);
deletePersonalAddressBook(abId);
var personal = $("/personal");
personal.select();
onFolderSelectionChange();
}
}
preventDefault(event);
}
function deletePersonalAddressBook(folderId) {
var label
= labels["Are you sure you want to delete the selected address book?"];
if (window.confirm(label.decodeEntities())) {
if (document.deletePersonalABAjaxRequest) {
document.deletePersonalABAjaxRequest.aborted = true;
document.deletePersonalABAjaxRequest.abort();
}
var url = ApplicationBaseURL + "/" + folderId + "/delete";
document.deletePersonalABAjaxRequest
= triggerAjaxRequest(url, deletePersonalAddressBookCallback,
folderId);
}
var label
= labels["Are you sure you want to delete the selected address book?"];
if (window.confirm(label)) {
if (document.deletePersonalABAjaxRequest) {
document.deletePersonalABAjaxRequest.aborted = true;
document.deletePersonalABAjaxRequest.abort();
}
var url = ApplicationBaseURL + "/" + folderId + "/deleteFolder";
document.deletePersonalABAjaxRequest
= triggerAjaxRequest(url, deletePersonalAddressBookCallback,
folderId);
}
}
function deletePersonalAddressBookCallback(http) {
if (http.readyState == 4) {
if (http.status == 200) {
var ul = $("contactFolders");
if (isHttpStatus204(http.status)) {
var ul = $("contactFolders");
var children = ul.childNodesWithTag("li");
var i = 0;
var done = false;
while (!done && i < children.length) {
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
var children = ul.childNodesWithTag("li");
var i = 0;
var done = false;
while (!done && i < children.length) {
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
}
document.deletePersonalABAjaxRequest = null;
else
i++;
}
}
document.deletePersonalABAjaxRequest = null;
}
else
log ("ajax problem 5: " + http.status);
log ("ajax problem 5: " + http.status);
}
function configureDragHandles() {
@@ -677,6 +673,34 @@ function setEventsOnContactFolder(node) {
onContactFoldersContextMenu.bindAsEventListener(node), false);
}
function onMenuModify(event) {
var folders = $("contactFolders");
var selected = folders.getSelectedNodes()[0];
if (UserLogin == selected.getAttribute("owner")) {
var currentName = selected.innerHTML;
var newName = window.prompt(labels["Address Book Name"],
currentName);
if (newName && newName.length > 0
&& newName != currentName) {
var url = (URLForFolderID(selected.getAttribute("id"))
+ "/renameFolder?name=" + escape(newName.utf8encode()));
triggerAjaxRequest(url, folderRenameCallback,
{node: selected, name: newName});
}
} else
window.alert(clabels["Unable to rename that folder!"]);
}
function folderRenameCallback(http) {
if (http.readyState == 4) {
if (isHttpStatus204(http.status)) {
var dict = http.callbackData;
dict["node"].innerHTML = dict["name"];
}
}
}
function onMenuSharing(event) {
var folders = $("contactFolders");
var selected = folders.getSelectedNodes()[0];
@@ -688,7 +712,7 @@ function onMenuSharing(event) {
function getMenus() {
var menus = {};
menus["contactFoldersMenu"] = new Array(null, "-", null,
menus["contactFoldersMenu"] = new Array(onMenuModify, "-", null,
null, "-", null, "-",
onMenuSharing);
menus["contactMenu"] = new Array(onMenuEditContact, "-",
+9 -9
View File
@@ -207,7 +207,7 @@ function ctxFolderAdd(sender) {
}
function ctxFolderDelete(sender) {
if (!confirm("Delete current folder?").decodeEntities())
if (!confirm("Delete current folder?"))
return false;
// TODO: should use a form-POST or AJAX
@@ -306,10 +306,10 @@ function onMenuDeleteMessage(event) {
function onPrintCurrentMessage(event) {
var rowIds = $("messageList").getSelectedRowsId();
if (rowIds.length == 0) {
window.alert(labels["Please select a message to print."].decodeEntities());
window.alert(labels["Please select a message to print."]);
}
else if (rowIds.length > 1) {
window.alert(labels["Please select only one message to print."].decodeEntities());
window.alert(labels["Please select only one message to print."]);
}
else
window.print();
@@ -492,7 +492,7 @@ function quotasCallback(http) {
var used = mbQuotas["usedSpace"];
var max = mbQuotas["maxQuota"];
var percents = (Math.round(used * 10000 / max) / 100);
var format = labels["quotasFormat"].decodeEntities();
var format = labels["quotasFormat"];
var text = format.formatted(used, max, percents);
window.status = text;
}
@@ -1265,7 +1265,7 @@ function buildMailboxes(accountName, encoded) {
}
function onMenuCreateFolder(event) {
var name = window.prompt(labels["Name :"].decodeEntities(), "");
var name = window.prompt(labels["Name :"], "");
if (name && name.length > 0) {
var folderID = document.menuTarget.getAttribute("dataname");
var urlstr = URLForFolderID(folderID) + "/createFolder?name=" + name;
@@ -1275,7 +1275,7 @@ function onMenuCreateFolder(event) {
function onMenuRenameFolder(event) {
var name = window.prompt(labels["Enter the new name of your folder :"]
.decodeEntities(),
,
"");
if (name && name.length > 0) {
var folderID = document.menuTarget.getAttribute("dataname");
@@ -1285,7 +1285,7 @@ function onMenuRenameFolder(event) {
}
function onMenuDeleteFolder(event) {
var answer = window.confirm(labels["Do you really want to move this folder into the trash ?"].decodeEntities());
var answer = window.confirm(labels["Do you really want to move this folder into the trash ?"]);
if (answer) {
var folderID = document.menuTarget.getAttribute("dataname");
var urlstr = URLForFolderID(folderID) + "/deleteFolder";
@@ -1320,7 +1320,7 @@ function folderOperationCallback(http) {
&& http.status == 204)
initMailboxTree();
else
window.alert(labels["Operation failed"].decodeEntities());
window.alert(labels["Operation failed"]);
}
function folderRefreshCallback(http) {
@@ -1331,7 +1331,7 @@ function folderRefreshCallback(http) {
refreshCurrentFolder();
}
else
window.alert(labels["Operation failed"].decodeEntities());
window.alert(labels["Operation failed"]);
}
function getMenus() {
+5 -5
View File
@@ -12,10 +12,10 @@ DIV#loginScreen
background-color: #d4d0c8;
margin: 0px auto;
margin-top: 5em;
padding: 10px;
padding: 5px;
border: 2px solid transparent;
width: 197px;
height: 300px;
width: 200px;
height: 315px;
-moz-border-top-colors: #efebe7 #fff;
-moz-border-left-colors: #efebe7 #fff;
-moz-border-right-colors: #000 #9c9a94 transparent;
@@ -26,8 +26,8 @@ DIV#loginScreen IMG
{ border: 0px;
margin: 0px;
padding: 0px;
height: 192px;
width: 192px; }
height: 200px;
width: 200px; }
DIV#loginScreen INPUT.textField
{ width: 187px; }
+173 -113
View File
@@ -17,7 +17,7 @@ var cachedDateSelectors = new Array();
var contactSelectorAction = 'calendars-contacts';
var eventsToDelete = new Array();
var ownersOfEventsToDelete = new Array();
var calendarsOfEventsToDelete = new Array();
var usersRightsWindowHeight = 250;
var usersRightsWindowWidth = 502;
@@ -27,15 +27,11 @@ function newEvent(sender, type) {
if (!day)
day = currentDay;
var user = UserLogin;
if (sender.parentNode.getAttribute("id") != "toolbar"
&& currentView == "multicolumndayview" && type == "event")
user = sender.parentNode.parentNode.getAttribute("user");
var hour = sender.hour;
if (!hour)
hour = sender.getAttribute("hour");
var urlstr = UserFolderURL + "../" + user + "/Calendar/new" + type;
var folderID = getSelectedFolder();
var urlstr = ApplicationBaseURL + folderID + "/new" + type;
var params = new Array();
if (day)
params.push("day=" + day);
@@ -49,6 +45,18 @@ function newEvent(sender, type) {
return false; /* stop following the link */
}
function getSelectedFolder() {
var folder;
var nodes = $("calendarList").getSelectedRows();
if (nodes.length > 0)
folder = nodes[0].getAttribute("id");
else
folder = "/personal";
return folder;
}
function onMenuNewEventClick(event) {
newEvent(this, "event");
}
@@ -57,13 +65,8 @@ function onMenuNewTaskClick(event) {
newEvent(this, "task");
}
function _editEventId(id, owner) {
var urlBase;
if (owner)
urlBase = UserFolderURL + "../" + owner + "/";
urlBase += "Calendar/"
var urlstr = urlBase + id + "/edit";
function _editEventId(id, calendar) {
var urlstr = ApplicationBaseURL + "/" + calendar + "/" + id + "/edit";
var targetname = "SOGo_edit_" + id;
var win = window.open(urlstr, "_blank",
"width=490,height=470,resizable=0");
@@ -76,10 +79,10 @@ function editEvent() {
for (var i = 0; i < nodes.length; i++)
_editEventId(nodes[i].getAttribute("id"),
nodes[i].owner);
nodes[i].calendar);
} else if (selectedCalendarCell) {
_editEventId(selectedCalendarCell[0].cname,
selectedCalendarCell[0].owner);
selectedCalendarCell[0].calendar);
}
return false; /* stop following the link */
@@ -87,9 +90,9 @@ function editEvent() {
function _batchDeleteEvents() {
var events = eventsToDelete.shift();
var owner = ownersOfEventsToDelete.shift();
var urlstr = (UserFolderURL + "../" + owner + "/Calendar/batchDelete?ids="
+ events.join('/'));
var calendar = calendarsOfEventsToDelete.shift();
var urlstr = (ApplicationBaseURL + "/" + calendar
+ "/batchDelete?ids=" + events.join('/'));
document.deleteEventAjaxRequest = triggerAjaxRequest(urlstr,
deleteEventCallback,
events);
@@ -102,9 +105,9 @@ function deleteEvent() {
if (nodes.length > 0) {
var label = "";
if (listOfSelection == $("tasksList"))
label = labels["taskDeleteConfirmation"].decodeEntities();
label = labels["taskDeleteConfirmation"];
else
label = labels["eventDeleteConfirmation"].decodeEntities();
label = labels["eventDeleteConfirmation"];
if (confirm(label)) {
if (document.deleteEventAjaxRequest) {
@@ -112,33 +115,33 @@ function deleteEvent() {
document.deleteEventAjaxRequest.abort();
}
var sortedNodes = new Array();
var owners = new Array();
var calendars = new Array();
for (var i = 0; i < nodes.length; i++) {
var owner = nodes[i].owner;
if (!sortedNodes[owner]) {
sortedNodes[owner] = new Array();
owners.push(owner);
var calendar = nodes[i].calendar;
if (!sortedNodes[calendar]) {
sortedNodes[calendar] = new Array();
calendars.push(calendar);
}
sortedNodes[owner].push(nodes[i].cname);
sortedNodes[calendar].push(nodes[i].cname);
}
for (var i = 0; i < owners.length; i++) {
ownersOfEventsToDelete.push(owners[i]);
eventsToDelete.push(sortedNodes[owners[i]]);
for (var i = 0; i < calendars.length; i++) {
calendarsOfEventsToDelete.push(calendars[i]);
eventsToDelete.push(sortedNodes[calendars[i]]);
}
_batchDeleteEvents();
}
}
}
else if (selectedCalendarCell) {
var label = labels["eventDeleteConfirmation"].decodeEntities();
var label = labels["eventDeleteConfirmation"];
if (confirm(label)) {
if (document.deleteEventAjaxRequest) {
document.deleteEventAjaxRequest.aborted = true;
document.deleteEventAjaxRequest.abort();
}
eventsToDelete.push([selectedCalendarCell[0].cname]);
ownersOfEventsToDelete.push(selectedCalendarCell[0].owner);
calendarsOfEventsToDelete.push(selectedCalendarCell[0].calendar);
_batchDeleteEvents();
}
}
@@ -168,7 +171,7 @@ function closeInvitationWindow() {
closePseudoWin.style.top = "0px;";
closePseudoWin.style.left = "0px;";
closePseudoWin.style.right = "0px;";
closePseudoWin.appendChild(document.createTextNode(labels["closeThisWindowMessage"].decodeEntities()));
closePseudoWin.appendChild(document.createTextNode(labels["closeThisWindowMessage"]));
document.body.appendChild(closeDiv);
document.body.appendChild(closePseudoWin);
}
@@ -215,7 +218,7 @@ function deleteEventCallback(http) {
}
function editDoubleClickedEvent(event) {
_editEventId(this.cname, this.owner);
_editEventId(this.cname, this.calendar);
preventDefault(event);
event.cancelBubble = true;
@@ -316,7 +319,7 @@ function eventsListCallback(http) {
$(row).addClassName("eventRow");
row.setAttribute("id", escape(data[i][0]));
row.cname = escape(data[i][0]);
row.owner = data[i][1];
row.calendar = data[i][1];
var startDate = new Date();
startDate.setTime(data[i][4] * 1000);
@@ -372,9 +375,8 @@ function tasksListCallback(http) {
Event.observe(listItem, "dblclick", editDoubleClickedEvent.bindAsEventListener(listItem));
listItem.setAttribute("id", data[i][0]);
$(listItem).addClassName(data[i][5]);
var owner = data[i][1];
listItem.owner = owner;
$(listItem).addClassName("ownerIs" + owner.cssSafeString());
listItem.calendar = data[i][1];
$(listItem).addClassName("calendarFolder" + data[i][1]);
listItem.cname = escape(data[i][0]);
var input = document.createElement("input");
input.setAttribute("type", "checkbox");
@@ -429,7 +431,7 @@ function restoreCurrentDaySelection(div) {
}
function changeDateSelectorDisplay(day, keepCurrentDay) {
var url = ApplicationBaseURL + "dateselector";
var url = ApplicationBaseURL + "/dateselector";
if (day)
url += "?day=" + day;
@@ -457,7 +459,7 @@ function changeDateSelectorDisplay(day, keepCurrentDay) {
}
function changeCalendarDisplay(time, newView) {
var url = ApplicationBaseURL + ((newView) ? newView : currentView);
var url = ApplicationBaseURL + "/" + ((newView) ? newView : currentView);
selectedCalendarCell = null;
@@ -583,7 +585,7 @@ function refreshCalendarEvents() {
document.refreshCalendarEventsAjaxRequest.aborted = true;
document.refreshCalendarEventsAjaxRequest.abort();
}
var url = ApplicationBaseURL + "eventslist?sd=" + sd + "&ed=" + ed;
var url = ApplicationBaseURL + "/eventslist?sd=" + sd + "&ed=" + ed;
document.refreshCalendarEventsAjaxRequest
= triggerAjaxRequest(url, refreshCalendarEventsCallback,
{"startDate": sd, "endDate": ed});
@@ -608,9 +610,9 @@ function drawCalendarEvent(eventData, sd, ed) {
var viewEndDate = ed.asDate();
var startDate = new Date();
startDate.setTime(eventData[4] * 1000);
startDate.setTime(eventData[4] * 1000 + (1000 * UTCOffset));
var endDate = new Date();
endDate.setTime(eventData[5] * 1000);
endDate.setTime(eventData[5] * 1000 + (1000 * UTCOffset));
var days = startDate.daysUpTo(endDate);
@@ -636,8 +638,8 @@ function drawCalendarEvent(eventData, sd, ed) {
// log("day: " + days[i]);
if (i == 0) {
var quarters = (startDate.getHours() * 4
+ Math.floor(startDate.getMinutes() / 15));
var quarters = (startDate.getUTCHours() * 4
+ Math.floor(startDate.getUTCMinutes() / 15));
starts = quarters;
startHour = startDate.getDisplayHoursString();
endHour = endDate.getDisplayHoursString();
@@ -648,8 +650,8 @@ function drawCalendarEvent(eventData, sd, ed) {
var ends;
var lasts;
if (i == days.length - 1) {
var quarters = (endDate.getHours() * 4
+ Math.ceil(endDate.getMinutes() / 15));
var quarters = (endDate.getUTCHours() * 4
+ Math.ceil(endDate.getUTCMinutes() / 15));
ends = quarters;
}
else
@@ -706,11 +708,11 @@ function drawCalendarEvent(eventData, sd, ed) {
}
}
function newEventDIV(cname, owner, starts, lasts,
function newEventDIV(cname, calendar, starts, lasts,
startHour, endHour, title) {
var eventDiv = document.createElement("div");
eventDiv.cname = escape(cname);
eventDiv.owner = owner;
eventDiv.calendar = calendar;
$(eventDiv).addClassName("event");
$(eventDiv).addClassName("starts" + starts);
$(eventDiv).addClassName("lasts" + lasts);
@@ -723,7 +725,7 @@ function newEventDIV(cname, owner, starts, lasts,
var innerDiv = document.createElement("div");
eventDiv.appendChild(innerDiv);
$(innerDiv).addClassName("eventInside");
$(innerDiv).addClassName("ownerIs" + owner.cssSafeString());
$(innerDiv).addClassName("calendarFolder" + calendar);
var gradientDiv = document.createElement("div");
innerDiv.appendChild(gradientDiv);
@@ -881,7 +883,7 @@ function _loadEventHref(href) {
document.eventsListAjaxRequest.aborted = true;
document.eventsListAjaxRequest.abort();
}
var url = ApplicationBaseURL + href;
var url = ApplicationBaseURL + "/" + href;
document.eventsListAjaxRequest
= triggerAjaxRequest(url, eventsListCallback, href);
@@ -897,7 +899,7 @@ function _loadTasksHref(href) {
document.tasksListAjaxRequest.aborted = true;
document.tasksListAjaxRequest.abort();
}
url = ApplicationBaseURL + href;
url = ApplicationBaseURL + "/" + href;
var tasksList = $("tasksList");
var selectedIds;
@@ -1119,7 +1121,6 @@ function onShowCompletedTasks(event) {
function updateTaskStatus(event) {
var taskId = this.parentNode.getAttribute("id");
var taskOwner = this.parentNode.owner;
var newStatus = (this.checked ? 1 : 0);
var http = createHTTPClient();
@@ -1128,9 +1129,8 @@ function updateTaskStatus(event) {
//log("update task status: " + taskId + " to " + this.checked);
event.cancelBubble = true;
url = (UserFolderURL + "../" + taskOwner
+ "/Calendar/" + taskId
+ "/changeStatus?status=" + newStatus);
url = (ApplicationBaseURL + "/" + this.parentNode.calendar
+ "/" + taskId + "/changeStatus?status=" + newStatus);
if (http) {
// log ("url: " + url);
@@ -1162,10 +1162,11 @@ function updateCalendarStatus(event) {
}
}
if (!list.length) {
list.push(UserLogin);
nodes[0].childNodesWithTag("input")[0].checked = true;
}
// if (!list.length) {
// list.push(UserLogin);
// nodes[0].childNodesWithTag("input")[0].checked = true;
// }
// ApplicationBaseURL = (UserFolderURL + "Groups/_custom_"
// + list.join(",") + "/Calendar/");
@@ -1207,7 +1208,7 @@ function calendarStatusCallback(http) {
}
function calendarEntryCallback(http) {
if (http.readyState == 4) {
if (http.readyState == 4) {
var denied = !isHttpStatus204(http.status);
var entry = $(http.callbackData);
if (denied)
@@ -1339,79 +1340,94 @@ function initCalendarSelector() {
}
var links = $("calendarSelectorButtons").childNodesWithTag("a");
Event.observe(links[0], "click", onCalendarAdd);
Event.observe(links[1], "click", onCalendarRemove);
Event.observe(links[0], "click", onCalendarNew);
Event.observe(links[1], "click", onCalendarAdd);
Event.observe(links[2], "click", onCalendarRemove);
}
function onCalendarNew(event) {
createFolder(window.prompt(labels["Name of the Calendar"]),
appendCalendar);
preventDefault(event);
}
function onCalendarAdd(event) {
openUserFolderSelector(onFolderSubscribeCB, "calendar");
preventDefault(event);
openUserFolderSelector(onFolderSubscribeCB, "calendar");
preventDefault(event);
}
function appendCalendar(folderName, folder) {
var calendarList = $("calendarList");
var lis = calendarList.childNodesWithTag("li");
var color = indexColor(lis.length);
//log ("color: " + color);
if (folder)
folder = accessToSubscribedFolder(folder);
else
folder = "/" + folderName;
var li = document.createElement("li");
calendarList.appendChild(li);
// log ("append: " + folderName + "; folder: " + folder);
var checkBox = document.createElement("input");
checkBox.setAttribute("type", "checkbox");
li.appendChild(checkBox);
var calendarList = $("calendarList");
var lis = calendarList.childNodesWithTag("li");
var color = indexColor(lis.length + 100);
//log ("color: " + color);
var li = document.createElement("li");
calendarList.appendChild(li);
var checkBox = document.createElement("input");
checkBox.setAttribute("type", "checkbox");
li.appendChild(checkBox);
li.appendChild(document.createTextNode(" "));
li.appendChild(document.createTextNode(" "));
var colorBox = document.createElement("div");
li.appendChild(colorBox);
li.appendChild(document.createTextNode(" " + folderName));
colorBox.appendChild(document.createTextNode("OO"));
var colorBox = document.createElement("div");
li.appendChild(colorBox);
li.appendChild(document.createTextNode(" " + folderName));
colorBox.appendChild(document.createTextNode("OO"));
li.setAttribute("id", folder);
Event.observe(li, "mousedown", listRowMouseDownHandler);
Event.observe(li, "click", onRowClick);
$(checkBox).addClassName("checkBox");
li.setAttribute("id", folder);
Event.observe(li, "mousedown", listRowMouseDownHandler);
Event.observe(li, "click", onRowClick);
$(checkBox).addClassName("checkBox");
Event.observe(checkBox, "click", updateCalendarStatus.bindAsEventListener(checkBox));
Event.observe(checkBox, "click",
updateCalendarStatus.bindAsEventListener(checkBox));
$(colorBox).addClassName("colorBox");
if (color) {
$(colorBox).setStyle({ color: color,
backgroundColor: color });
}
$(colorBox).addClassName("colorBox");
if (color)
$(colorBox).setStyle({color: color,
backgroundColor: color});
var contactId = folder.split(":")[0];
var url = URLForFolderID(folder) + "/canAccessContent";
triggerAjaxRequest(url, calendarEntryCallback, folder);
var url = URLForFolderID(folder) + "/canAccessContent";
triggerAjaxRequest(url, calendarEntryCallback, folder);
if (!document.styleSheets) return;
var theRules = new Array();
var lastSheet = document.styleSheets[document.styleSheets.length - 1];
if (lastSheet.insertRule) { // Mozilla
lastSheet.insertRule('.ownerIs' + contactId.cssSafeString() + ' {'
+ ' background-color: '
+ color
+ ' !important; }', 0);
}
else { // IE
lastSheet.addRule('.ownerIs' + contactId.cssSafeString(),
' background-color: '
+ color
+ ' !important; }');
}
if (!document.styleSheets) return;
var theRules = new Array();
var lastSheet = document.styleSheets[document.styleSheets.length - 1];
if (lastSheet.insertRule) { // Mozilla
lastSheet.insertRule('.calendarFolder' + folder.substr(1) + ' {'
+ ' background-color: '
+ color
+ ' !important; }', 0);
}
else { // IE
lastSheet.addRule('.calendarFolder' + folder.substr(1),
' background-color: '
+ color
+ ' !important; }');
}
}
function onFolderSubscribeCB(folderData) {
var folder = $(folderData["folder"]);
if (!folder)
appendCalendar(folderData["folderName"], folderData["folder"]);
appendCalendar(folderData["folderName"], folderData["folder"]);
}
function onFolderUnsubscribeCB(folderId) {
var node = $(folderId);
node.parentNode.removeChild(node);
var node = $(folderId);
node.parentNode.removeChild(node);
refreshEvents();
refreshTasks();
changeCalendarDisplay();
}
function onCalendarRemove(event) {
@@ -1419,15 +1435,59 @@ function onCalendarRemove(event) {
if (nodes.length > 0) {
nodes[0].deselect();
var folderId = nodes[0].getAttribute("id");
var folderIdElements = folderId.split(":");
var folderIdElements = folderId.split("_");
if (folderIdElements.length > 1) {
unsubscribeFromFolder(folderId, onFolderUnsubscribeCB, folderId);
unsubscribeFromFolder(folderId, onFolderUnsubscribeCB, folderId);
}
else {
var calId = folderIdElements[0].substr(1);
deletePersonalCalendar(calId);
}
}
preventDefault(event);
}
function deletePersonalCalendar(folderId) {
var label
= labels["Are you sure you want to delete the selected calendar?"];
if (window.confirm(label)) {
if (document.deletePersonalCalendarAjaxRequest) {
document.deletePersonalCalendarAjaxRequest.aborted = true;
document.deletePersonalCalendarAjaxRequest.abort();
}
var url = ApplicationBaseURL + "/" + folderId + "/deleteFolder";
document.deletePersonalCalendarAjaxRequest
= triggerAjaxRequest(url, deletePersonalCalendarCallback, folderId);
}
}
function deletePersonalCalendarCallback(http) {
if (http.readyState == 4) {
if (isHttpStatus204(http.status)) {
var ul = $("calendarList");
var children = ul.childNodesWithTag("li");
var i = 0;
var done = false;
while (!done && i < children.length) {
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
}
refreshEvents();
refreshTasks();
changeCalendarDisplay();
}
document.deletePersonalCalendarAjaxRequest = null;
}
else
log ("ajax problem 5: " + http.status);
}
function configureLists() {
var list = $("tasksList");
list.multiselect = true;
+1 -2
View File
@@ -88,8 +88,7 @@ function subscribeToFolder(refreshCallback, refreshCallbackData) {
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]
.decodeEntities());
refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]);
}
function openRightsForUserID(userID) {
@@ -43,36 +43,36 @@ function validateAptEditor() {
e = $('summary');
if (e.value.length == 0) {
if (!confirm(labels.validate_notitle.decodeEntities()))
if (!confirm(labels.validate_notitle))
return false;
}
e = $('startTime_date');
if (e.value.length != 10) {
alert(labels.validate_invalid_startdate.decodeEntities());
alert(labels.validate_invalid_startdate);
return false;
}
startdate = e.calendar.prs_date(e.value);
if (startdate == null) {
alert(labels.validate_invalid_startdate.decodeEntities());
alert(labels.validate_invalid_startdate);
return false;
}
e = $('endTime_date');
if (e.value.length != 10) {
alert(labels.validate_invalid_enddate.decodeEntities());
alert(labels.validate_invalid_enddate);
return false;
}
enddate = e.calendar.prs_date(e.value);
if (enddate == null) {
alert(labels.validate_invalid_enddate.decodeEntities());
alert(labels.validate_invalid_enddate);
return false;
}
// cuicui = '';
tmpdate = uixEarlierDate(startdate, enddate);
if (tmpdate == enddate) {
// window.alert(cuicui);
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
else if (tmpdate == null /* means: same date */) {
@@ -83,14 +83,14 @@ function validateAptEditor() {
end = parseInt(document.forms[0]['endTime_time_hour'].value);
if (start > end) {
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
else if (start == end) {
start = parseInt(document.forms[0]['startTime_time_minute'].value);
end = parseInt(document.forms[0]['endTime_time_minute'].value);
if (start > end) {
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
}
+1 -1
View File
@@ -24,7 +24,7 @@ function onPopupUrlWindow(event) {
preventDefault(event);
var urlInput = document.getElementById("url");
var newUrl = window.prompt(labels["Target:"].decodeEntities(), urlInput.value);
var newUrl = window.prompt(labels["Target:"], urlInput.value);
if (newUrl != null) {
var documentHref = $("documentHref");
var documentLabel = $("documentLabel");
+2 -2
View File
@@ -84,13 +84,13 @@ function validateContactEditor() {
if (e.value.length == 0)
return true;
if (uixEmailRegex.test(e.value) != true)
return confirm(labels.invalidemailwarn.decodeEntities());
return confirm(labels.invalidemailwarn);
e = $('homeMail');
if (e.value.length == 0)
return true;
if (uixEmailRegex.test(e.value) != true)
return confirm(labels.invalidemailwarn.decodeEntities());
return confirm(labels.invalidemailwarn);
return true;
}
@@ -30,7 +30,7 @@ function addLineToTree(tree, parent, line) {
for (var i = 1; i < nodes.length; i++) {
var folderInfos = nodes[i].split(":");
var icon = ResourcesURL + '/';
if (folderInfos[2] == 'contact')
if (folderInfos[2] == 'Contacts')
icon += 'tb-mail-addressbook-flat-16x16.png';
else
icon += 'calendar-folder-16x16.png';
+1 -2
View File
@@ -133,8 +133,7 @@ function validateEditorInput(sender) {
errortext = errortext + labels.error_missingrecipients + "\n";
if (errortext.length > 0) {
alert(labels.error_validationfailed.decodeEntities() + ":\n"
+ errortext.decodeEntities());
alert(labels.error_validationfailed + ":\n" + errortext);
return false;
}
return true;
+5 -5
View File
@@ -24,7 +24,7 @@ function validateDate(date, label) {
dateValue = date.calendar.prs_date(date.value);
if (date.value.length != 10 || !dateValue) {
alert(label.decodeEntities());
alert(label);
result = false;
} else
result = dateValue;
@@ -37,7 +37,7 @@ function validateTaskEditor() {
e = document.getElementById('summary');
if (e.value.length == 0
&& !confirm(labels.validate_notitle.decodeEntities()))
&& !confirm(labels.validate_notitle))
return false;
e = document.getElementById('startTime_date');
@@ -58,7 +58,7 @@ function validateTaskEditor() {
tmpdate = uixEarlierDate(startdate, enddate);
if (tmpdate == enddate) {
// window.alert(cuicui);
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
else if (tmpdate == null /* means: same date */) {
@@ -69,14 +69,14 @@ function validateTaskEditor() {
end = parseInt(document.forms[0]['dueTime_time_hour'].value);
if (start > end) {
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
else if (start == end) {
start = parseInt(document.forms[0]['startTime_time_minute'].value);
end = parseInt(document.forms[0]['dueTime_time_minute'].value);
if (start > end) {
alert(labels.validate_endbeforestart.decodeEntities());
alert(labels.validate_endbeforestart);
return false;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

+81 -22
View File
@@ -983,6 +983,7 @@ function subscribeToFolder(refreshCallback, refreshCallbackData) {
document.subscriptionAjaxRequest.aborted = true;
document.subscriptionAjaxRequest.abort();
}
var rfCbData = { method: refreshCallback, data: refreshCallbackData };
document.subscriptionAjaxRequest = triggerAjaxRequest(url,
folderSubscriptionCallback,
@@ -1006,29 +1007,42 @@ function folderUnsubscriptionCallback(http) {
}
function unsubscribeFromFolder(folder, refreshCallback, refreshCallbackData) {
if (document.body.hasClassName("popup")) {
window.opener.unsubscribeFromFolder(folder, refreshCallback,
refreshCallbackData);
}
else {
var folderData = folder.split(":");
var username = folderData[0];
var folderPath = folderData[1];
if (username != UserLogin) {
var url = (UserFolderURL + "../" + username
+ "/" + folderPath + "/unsubscribe");
if (document.unsubscriptionAjaxRequest) {
document.unsubscriptionAjaxRequest.aborted = true;
document.unsubscriptionAjaxRequest.abort();
}
var rfCbData = { method: refreshCallback, data: refreshCallbackData };
document.unsubscriptionAjaxRequest
= triggerAjaxRequest(url, folderUnsubscriptionCallback,
rfCbData);
if (document.body.hasClassName("popup")) {
window.opener.unsubscribeFromFolder(folder, refreshCallback,
refreshCallbackData);
}
else {
var folderData = folder.split("+");
var username = folderData[0];
var folderPath = folderData[1];
if (username != UserLogin) {
var url = (ApplicationBaseURL + folder + "/unsubscribe");
if (document.unsubscriptionAjaxRequest) {
document.unsubscriptionAjaxRequest.aborted = true;
document.unsubscriptionAjaxRequest.abort();
}
else
window.alert(clabels["You cannot unsubscribe from a folder that you own!"].decodeEntities());
}
var rfCbData = { method: refreshCallback, data: refreshCallbackData };
document.unsubscriptionAjaxRequest
= triggerAjaxRequest(url, folderUnsubscriptionCallback,
rfCbData);
}
else
window.alert(clabels["You cannot unsubscribe from a folder that you own!"].decodeEntities());
}
}
function accessToSubscribedFolder(serverFolder) {
var folder;
var parts = serverFolder.split(":");
if (parts.length > 1) {
var paths = parts[1].split("/");
folder = "/" + parts[0] + "_" + paths[2];
}
else
folder = serverFolder;
return folder;
}
function listRowMouseDownHandler(event) {
@@ -1289,12 +1303,25 @@ function onLoadHandler(event) {
configureDragHandles();
configureSortableTableHeaders();
configureLinkBanner();
translateLabels();
var progressImage = $("progressIndicator");
if (progressImage)
progressImage.parentNode.removeChild(progressImage);
Event.observe(document.body, "contextmenu", onBodyClickContextMenu);
}
function translateLabels() {
if (typeof labels != "undefined") {
for (var key in labels)
labels[key] = labels[key].decodeEntities();
}
if (typeof clabels != "undefined") {
for (var key in clabels)
clabels[key] = clabels[key].decodeEntities();
}
}
function onBodyClickContextMenu(event) {
preventDefault(event);
}
@@ -1340,6 +1367,38 @@ function configureLinkBanner() {
}
}
/* folder creation */
function createFolder(name, okCB, notOkCB) {
if (name) {
if (document.newFolderAjaxRequest) {
document.newFolderAjaxRequest.aborted = true;
document.newFolderAjaxRequest.abort();
}
var url = ApplicationBaseURL + "/createFolder?name=" + name;
document.newFolderAjaxRequest
= triggerAjaxRequest(url, createFolderCallback,
{name: name,
okCB: okCB,
notOkCB: notOkCB});
}
}
function createFolderCallback(http) {
if (http.readyState == 4) {
var data = http.callbackData;
if (http.status == 201) {
if (data.okCB)
data.okCB(data.name, "/" + http.responseText);
}
else {
if (data.notOkCB)
data.notOkCB(name);
else
log("ajax problem:" + http.status);
}
}
}
addEvent(window, 'load', onLoadHandler);
function parent$(element) {
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB