bugFix #0002616 : change the behavior of ApplicationBaseURL. Now the object return a standard path(without a slash at the end of the path) That means every string added the URL ApplicationBaseURL must start with a Slash.

pull/20/head
Alexandre Cloutier 2014-03-04 13:23:55 -05:00
parent 31ace947cb
commit 6ad87052ba
12 changed files with 53 additions and 55 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ SoObjects/SOGo/SOGo.framework/
SoObjects/SOGo/derived_src/
Tests/*/config.py
*.pyc
._*

View File

@ -359,6 +359,7 @@ static SoProduct *commonProduct = nil;
{
SOGoObject *currentClient, *parent;
BOOL found;
NSString *hostLessURL;
Class objectClass, userFolderClass;
// , groupFolderClass
@ -386,8 +387,10 @@ static SoProduct *commonProduct = nil;
}
else
currentClient = [WOApplication application];
hostLessURL = [[currentClient baseURLInContext: context] hostlessURL];
return [[currentClient baseURLInContext: context] hostlessURL];
return [hostLessURL substringToIndex: [hostLessURL length] - 1];
}
- (NSString *) ownPath

View File

@ -258,7 +258,7 @@ function _onContactMenuAction(folderItem, action, refresh) {
}
}
var url = ApplicationBaseURL + selectedFolderId + "/" + action;
var url = ApplicationBaseURL + "/" + selectedFolderId + "/" + action;
var uids = contactIds.collect(function (s) {
return encodeURIComponent(s.unescapeHTML());
}).join('&uid=');
@ -290,7 +290,7 @@ function onMenuExportContact (event) {
var contactIds = document.menuTarget.collect(function(row) {
return row.readAttribute("id");
});
var url = ApplicationBaseURL + selectedFolderId + "/export"
var url = ApplicationBaseURL + "/" + selectedFolderId + "/export"
+ "?uid=" + contactIds.join("&uid=");
window.location.href = url;
}
@ -469,7 +469,7 @@ function onToolbarWriteToSelectedContacts(event) {
showAlertDialog(_("Please select a contact."));
}
else {
openMailComposeWindow(ApplicationBaseURL + "../Mail/compose"
openMailComposeWindow(ApplicationBaseURL + "/../Mail/compose"
+ "?folder=" + Contact.currentAddressBook.substring(1)
+ "&uid=" + rows.join("&uid="));
if (document.body.hasClassName("popup"))
@ -777,7 +777,7 @@ function onAddressBookImport(event) {
var node = $("contactFolders").getSelectedNodes().first();
var folderId = node.getAttribute("id");
var url = ApplicationBaseURL + folderId + "/import";
var url = ApplicationBaseURL + "/" + folderId + "/import";
$("uploadForm").action = url;
$("contactsFile").value = "";
@ -853,7 +853,7 @@ function onAddressBookRemove(event) {
}
else {
var folderId = node.getAttribute("id");
var folderUrl = ApplicationBaseURL + folderId;
var folderUrl = ApplicationBaseURL + "/" + folderId;
unsubscribeFromFolder(folderUrl, owner, onFolderUnsubscribeCB, folderId);
}
}
@ -879,7 +879,7 @@ function deletePersonalAddressBookConfirm(folderId) {
document.deletePersonalABAjaxRequest.aborted = true;
document.deletePersonalABAjaxRequest.abort();
}
var url = ApplicationBaseURL + folderId + "/delete";
var url = ApplicationBaseURL + "/" + folderId + "/delete";
document.deletePersonalABAjaxRequest
= triggerAjaxRequest(url, deletePersonalAddressBookCallback, folderId);
@ -1596,7 +1596,7 @@ function dropSelectedContacts(action, toId) {
if ((!currentFolderIsRemote() || action != "move")
&& fromId.substring(1) != toId) {
var url = ApplicationBaseURL + fromId + "/" + action;
var url = ApplicationBaseURL + "/" + fromId + "/" + action;
var uids = contactIds.collect(function (s) {
return encodeURIComponent(s.unescapeHTML());
}).join('&uid=');

View File

@ -40,7 +40,8 @@ function URLForFolderID(folderID, application) {
application = UserFolderURL + application + "/";
else
application = ApplicationBaseURL;
var url = application + encodeURI(folderID.substr(1));
var url = application + encodeURI(folderID);
if (url[url.length-1] == '/')
url = url.substr(0, url.length-1);
@ -563,7 +564,7 @@ function deleteSelectedMessagesCallback(http) {
}
function deleteMessagesWithoutTrash(data) {
var url = ApplicationBaseURL + encodeURI(data["mailbox"]) + "/batchDelete";
var url = ApplicationBaseURL + encodeURI(data["/mailbox"]) + "/batchDelete";
var parameters = "uid=" + data["id"].join(",") + '&withoutTrash=1';
data["withoutTrash"] = true;
triggerAjaxRequest(url, deleteSelectedMessagesCallback, data, parameters,
@ -767,7 +768,7 @@ function composeNewMessage() {
else
account = null;
if (account) {
var url = ApplicationBaseURL + encodeURI(account) + "/compose";
var url = ApplicationBaseURL + encodeURI("/" + account) + "/compose";
openMailComposeWindow(url);
}
}
@ -1601,7 +1602,7 @@ function onReadMessageConfirmMDN(event) {
var messageURL;
if (window.opener && window.opener.Mailer) {
/* from UIxMailPopupView */
messageURL = (ApplicationBaseURL + encodeURI(mailboxName)
messageURL = (ApplicationBaseURL + encodeURI("/" + mailboxName)
+ "/" + messageName);
}
else {
@ -2020,7 +2021,7 @@ function initMailboxTree() {
var chainRq = new AjaxRequestsChain(initMailboxTreeCB);
for (var i = 0; i < mailAccounts.length; i++) {
var url = ApplicationBaseURL + i + "/mailboxes";
var url = ApplicationBaseURL + "/" + i + "/mailboxes";
chainRq.requests.push([url, onLoadMailboxesCallback, i]);
}
chainRq.start();
@ -2255,7 +2256,7 @@ function buildMailboxes(accountIdx, encoded) {
function getFoldersState() {
if (mailAccounts.length > 0) {
var urlstr = ApplicationBaseURL + "foldersState";
var urlstr = ApplicationBaseURL + "/foldersState";
triggerAjaxRequest(urlstr, getFoldersStateCallback);
}
}
@ -2279,7 +2280,7 @@ function getFoldersStateCallback(http) {
function saveFoldersState() {
if (mailAccounts.length > 0) {
var foldersState = mailboxTree.getFoldersState();
var urlstr = ApplicationBaseURL + "saveFoldersState";
var urlstr = ApplicationBaseURL + "/saveFoldersState";
var parameters = "expandedFolders=" + foldersState;
triggerAjaxRequest(urlstr, saveFoldersStateCallback, null, parameters,
{ "Content-type": "application/x-www-form-urlencoded" });

View File

@ -186,7 +186,7 @@ var SOGoDragHandlesInterface = {
},
saveDragHandleState: function (type, position, fcn) {
if (!$(document.body).hasClassName("popup")) {
var urlstr = ApplicationBaseURL + "saveDragHandleState"
var urlstr = ApplicationBaseURL + "/saveDragHandleState"
+ "?" + type + "=" + position;
var callbackFunction = fcn || this.saveDragHandleStateCallback;
triggerAjaxRequest(urlstr, callbackFunction);

View File

@ -73,7 +73,7 @@ var SOGoResizableTableInterface = {
saveColumnsState: function() {
this.computeColumnsWidths();
if (!$(document.body).hasClassName("popup")) {
var url = ApplicationBaseURL + "saveColumnsState";
var url = ApplicationBaseURL + "/saveColumnsState";
var data = this.ratios;
var columns = data.keys();
var params = "columns=" + columns.join(",")

View File

@ -158,7 +158,7 @@ function redirectToUserPage() {
&& !userName.endsWith(loginSuffix))
userName += loginSuffix;
var address = "" + window.location.href;
var baseAddress = ApplicationBaseURL + encodeURIComponent(userName);
var baseAddress = ApplicationBaseURL + "/" + encodeURIComponent(userName);
var altBaseAddress;
if (baseAddress[0] == "/") {
var parts = address.split("/");

View File

@ -112,7 +112,7 @@ function updateEventFromDragging(controller, eventCells, eventDelta) {
_editRecurrenceDialog(eventCell, "confirmAdjustment", params);
else {
var urlstr = (ApplicationBaseURL
+ eventCell.calendar + "/" + eventCell.cname);
+ "/" + eventCell.calendar + "/" + eventCell.cname);
if (eventCell.recurrenceTime)
urlstr += "/occurence" + eventCell.recurrenceTime;
urlstr += ("/adjust?" + params);
@ -123,7 +123,7 @@ function updateEventFromDragging(controller, eventCells, eventDelta) {
}
function performEventAdjustment(folder, event, recurrence, params) {
var urlstr = ApplicationBaseURL + folder + "/" + event;
var urlstr = ApplicationBaseURL + "/" + folder + "/" + event;
if (recurrence)
urlstr += "/" + recurrence;
urlstr += "/adjust" + generateQueryString(params);
@ -170,7 +170,7 @@ function onMenuNewTaskClick(event) {
function _editEventId(id, calendar, recurrence) {
var targetname = "SOGo_edit_" + id;
var urlstr = ApplicationBaseURL + calendar + "/" + id;
var urlstr = ApplicationBaseURL + "/" + calendar + "/" + id;
if (recurrence) {
urlstr += "/" + recurrence;
targetname += recurrence;
@ -211,7 +211,7 @@ function _batchDeleteEvents() {
// Delete the events of the next calendar
var calendar = calendarsOfEventsToDelete.shift();
var events = eventsToDelete.shift();
var urlstr = (ApplicationBaseURL + calendar
var urlstr = (ApplicationBaseURL + "/" + calendar
+ "/batchDelete?ids=" + events.join(','));
document.deleteEventAjaxRequest = triggerAjaxRequest(urlstr,
deleteEventCallback,
@ -439,7 +439,7 @@ function copyEventToPersonalCalendar(event) {
function copyEvents() {
var path = eventsToCopy.shift();
var urlstr = ApplicationBaseURL + path; log (urlstr);
var urlstr = ApplicationBaseURL + "/" + path; log (urlstr);
triggerAjaxRequest(urlstr,
copyEventCallback);
}
@ -469,7 +469,7 @@ function onMenuRawEvent(event) {
var calendar = selectedCalendarCell[0].calendar;
var cname = selectedCalendarCell[0].cname;
var url = ApplicationBaseURL + calendar + "/" + cname + "/raw";
var url = ApplicationBaseURL + "/" + calendar + "/" + cname + "/raw";
openGenericWindow(url);
}
@ -706,7 +706,7 @@ function getEventById(cname, owner) {
function _editRecurrenceDialog(eventCell, method, params) {
var targetname = "SOGo_edit_" + eventCell.cname + eventCell.recurrenceTime;
var urlstr = (ApplicationBaseURL + eventCell.calendar + "/" + eventCell.cname
var urlstr = (ApplicationBaseURL + "/" + eventCell.calendar + "/" + eventCell.cname
+ "/occurence" + eventCell.recurrenceTime + "/" + method);
if (params && params.length) {
urlstr += "?" + params;
@ -719,7 +719,7 @@ function _editRecurrenceDialog(eventCell, method, params) {
function onViewEvent(event) {
if (event.detail == 2) return;
var url = ApplicationBaseURL + this.calendar + "/" + this.cname;
var url = ApplicationBaseURL + "/" + this.calendar + "/" + this.cname;
if (typeof this.recurrenceTime != "undefined")
url += "/occurence" + this.recurrenceTime;
@ -846,7 +846,7 @@ function performEventDeletion(folder, event, recurrence) {
// Only one recurrence
var occurenceTime = recurrence.substring(9);
var nodes = _eventBlocksMatching(folder, event, occurenceTime);
var urlstr = ApplicationBaseURL + folder + "/" + event + "/" + recurrence + "/delete";
var urlstr = ApplicationBaseURL + "/" + folder + "/" + event + "/" + recurrence + "/delete";
if (nodes)
document.deleteEventAjaxRequest = triggerAjaxRequest(urlstr,
@ -1224,7 +1224,7 @@ function loadNextView(event) {
}
function changeDateSelectorDisplay(day, keepCurrentDay) {
var url = ApplicationBaseURL + "dateselector";
var url = ApplicationBaseURL + "/dateselector";
if (day) {
if (day.length < 8)
day += "01";
@ -1254,7 +1254,7 @@ function changeDateSelectorDisplay(day, keepCurrentDay) {
function changeCalendarDisplay(data, newView) {
newView = ((newView) ? newView : currentView);
var url = ApplicationBaseURL + newView;
var url = ApplicationBaseURL + "/" + newView;
var day = null;
var scrollEvent = null;
if (data) {
@ -1591,7 +1591,7 @@ function refreshCalendarEvents(scrollEvent) {
document.refreshCalendarEventsAjaxRequest.aborted = true;
document.refreshCalendarEventsAjaxRequest.abort();
}
var url = (ApplicationBaseURL + "eventsblocks?sd=" + sd + "&ed=" + ed
var url = (ApplicationBaseURL + "/eventsblocks?sd=" + sd + "&ed=" + ed
+ "&view=" + currentView);
document.refreshCalendarEventsAjaxRequest
= triggerAjaxRequest(url, refreshCalendarEventsCallback,
@ -2156,7 +2156,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);
@ -2168,7 +2168,7 @@ function _loadTasksHref(href) {
document.tasksListAjaxRequest.aborted = true;
document.tasksListAjaxRequest.abort();
}
url = ApplicationBaseURL + href;
url = ApplicationBaseURL + "/" + href;
var tasksList = $("tasksList");
var selectedIds;
@ -2788,7 +2788,7 @@ function marksTasksAsCompleted () {
}
function _updateTaskCompletion (task, value) {
url = (ApplicationBaseURL + task.calendar
url = (ApplicationBaseURL + "/" + task.calendar
+ "/" + task.cname + "/changeStatus?status=" + value);
triggerAjaxRequest(url, refreshTasks, null);
@ -2802,7 +2802,7 @@ function onMenuRawTask(event) {
return;
}
var url = ApplicationBaseURL + selectedTasks[0].calendar + "/" + selectedTasks[0].cname + "/raw"
var url = ApplicationBaseURL + "/" + selectedTasks[0].calendar + "/" + selectedTasks[0].cname + "/raw"
openGenericWindow(url);
}
@ -3221,7 +3221,7 @@ function deletePersonalCalendarConfirm() {
this.deselect();
this.hide();
removeFolderRequestCount++;
var url = ApplicationBaseURL + "/" + folderId + "/delete";
var url = ApplicationBaseURL + folderId + "/delete";
triggerAjaxRequest(url, deletePersonalCalendarCallback, this);
disposeDialog();
}
@ -3366,7 +3366,7 @@ function onListCollapse(event, element) {
});
}
var url = ApplicationBaseURL + "saveListState";
var url = ApplicationBaseURL + "/saveListState";
var params = "state=" + state;
triggerAjaxRequest(url, null, null, params,
{ "Content-type": "application/x-www-form-urlencoded" });
@ -3411,7 +3411,7 @@ function onDocumentKeydown(event) {
function saveTabState(event) {
var tab = $(event).memo;
var url = ApplicationBaseURL + "saveSelectedList";
var url = ApplicationBaseURL + "/saveSelectedList";
var params = "list=" + tab;
triggerAjaxRequest(url, null, null, params,
{ "Content-type": "application/x-www-form-urlencoded" });

View File

@ -347,7 +347,7 @@ function onPopupRecurrenceWindow(event) {
if (ComponentEditor.recurrenceWindow && ComponentEditor.recurrenceWindow.open && !ComponentEditor.recurrenceWindow.closed)
ComponentEditor.recurrenceWindow.focus();
else
ComponentEditor.recurrenceWindow = window.open(ApplicationBaseURL + "editRecurrence",
ComponentEditor.recurrenceWindow = window.open(ApplicationBaseURL + "/editRecurrence",
sanitizeWindowName(activeCalendar + activeComponent + "Recurrence"),
"width=500,height=400");
}
@ -373,7 +373,7 @@ function onPopupReminderWindow(event) {
else {
var height = (emailAlarmsEnabled ? 235 : 150);
ComponentEditor.reminderWindow
= window.open(ApplicationBaseURL + "editReminder",
= window.open(ApplicationBaseURL + "/editReminder",
sanitizeWindowName(activeCalendar + activeComponent + "Reminder"),
"width=255,height=" + height);
}
@ -400,7 +400,7 @@ function onOkButtonClick (e) {
else if (value == 3)
action = 'tentative';
else if (value == 4) {
var url = ApplicationBaseURL + activeCalendar + '/' + activeComponent;
var url = ApplicationBaseURL + "/" + activeCalendar + "/" + activeComponent;
delegateInvitation(url, modifyEventCallback);
}

View File

@ -38,7 +38,7 @@ function onLoadHandler() {
}
function loadMailboxes() {
var url = ApplicationBaseURL + "Mail/0/mailboxes";
var url = ApplicationBaseURL + "/Mail/0/mailboxes";
triggerAjaxRequest(url, onLoadMailboxesCallback);
}

View File

@ -328,7 +328,7 @@ function updateSieveFilterRow(filterTable, number, filter) {
}
function _editFilter(filterId) {
var urlstr = ApplicationBaseURL + "editFilter?filter=" + filterId;
var urlstr = ApplicationBaseURL + "/editFilter?filter=" + filterId;
var win = window.open(urlstr, "sieve_filter_" + filterId,
"width=560,height=380,resizable=0");
if (win)

View File

@ -91,6 +91,7 @@ function createElement(tagName, id, classes, attributes, htmlAttributes, parentN
function URLForFolderID(folderID) {
var folderInfos = folderID.split(":");
var url;
if (folderInfos.length > 1) {
url = UserFolderURL + "../" + encodeURI(folderInfos[0]);
if (!(folderInfos[0].endsWith('/')
@ -100,9 +101,8 @@ function URLForFolderID(folderID) {
}
else {
var folderInfo = folderInfos[0];
if (ApplicationBaseURL.endsWith('/')
&& folderInfo.startsWith('/'))
folderInfo = folderInfo.substr(1);
if (!(folderInfo.startsWith('/')))
folderInfo = "/" + folderInfo;
url = ApplicationBaseURL + encodeURI(folderInfo);
}
@ -173,9 +173,7 @@ function sanitizeWindowName(dirtyWindowName) {
function openUserFolderSelector(callback, type) {
var urlstr = ApplicationBaseURL;
if (! urlstr.endsWith('/'))
urlstr += '/';
urlstr += ("../../" + UserLogin + "/Contacts/userFolders");
urlstr += ("/../../" + UserLogin + "/Contacts/userFolders");
var div = $("popupFrame");
if (div) {
@ -328,7 +326,7 @@ function openMailTo(senderMailTo) {
if (sanitizedAddresses.length > 0)
openMailComposeWindow(ApplicationBaseURL
+ "../Mail/compose?mailto=" + encodeURIComponent(Object.toJSON(sanitizedAddresses))
+ "/../Mail/compose?mailto=" + encodeURIComponent(Object.toJSON(sanitizedAddresses))
+ ((subject.length > 0)?"?subject=" + encodeURIComponent(subject):""));
return false; /* stop following the link */
@ -1803,12 +1801,7 @@ function CurrentModule() {
if (ApplicationBaseURL) {
var parts = ApplicationBaseURL.split("/");
var last = parts.length - 1;
while (last > -1 && parts[last] == "") {
last--;
}
if (last > -1) {
module = parts[last];
}
module = parts[last];
}
return module;