Attached Files | 16267 [^] (3,273 bytes) 2011-03-14 14:36 [Show Content] [Hide Content]# HG changeset patch
# Parent 58ed3d69156d921bb7008c2eb823c53f5a31b3b5
Fixes 16267 : Strip // from start of relative urls and handle case when context is / in classic popup javascript
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
@@ -98,7 +98,9 @@
OB.ActionButton.executingProcess = null;
if (newWindow) {
- var contextURL = location.href.substr(0, location.href.indexOf(OB.Application.contextUrl) + OB.Application.contextUrl.length);
+ var contextURL = location.protocol +"//"
+ + location.host
+ + location.pathname.substr(0, location.pathname.indexOf(OB.Application.contextUrl) + OB.Application.contextUrl.length);
if (newWindow.indexOf(contextURL) !== -1){
newWindow = newWindow.substr(contextURL.length);
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
@@ -334,6 +334,10 @@
if (showCloseControl !== false) {
showCloseControl = true;
}
+ if (url.indexOf("//") === 0) {
+ // Double slash at start of relative URL only keeps scheme, not server
+ url = url.substring(1);
+ }
var cPopup = isc.OBClassicPopup.create({
ID: name + '_' + cobcomp.Popup.secString,
width: width,
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
@@ -43,7 +43,11 @@
}
if(this.obManualURL !== '') {
contentsURL = OB.Application.contextUrl + this.obManualURL + '?Command=' + this.command;
-// contentsURL = this.appURL + urlCharacter + 'url=' + this.obManualURL + '&noprefs=true&Command=' + this.command + '&hideMenu=true';
+ if(contentsURL.indexOf("//") === 0 ) {
+ // Double slash at start of relative URL only keeps scheme, not server
+ contentsURL = contentsURL.substring(1);
+ }
+ // contentsURL = this.appURL + urlCharacter + 'url=' + this.obManualURL + '&noprefs=true&Command=' + this.command + '&hideMenu=true';
} else {
contentsURL = this.appURL + urlCharacter + 'Command=' + this.command + '&noprefs=true&tabId=' + this.tabId + '&hideMenu=true';
}
16267v2.patch [^] (13,793 bytes) 2011-03-16 14:12 [Show Content] [Hide Content]# HG changeset patch
# Parent 58ed3d69156d921bb7008c2eb823c53f5a31b3b5
Fixes 16267 : Strip // from start of relative urls and handle case when context is / in classic popup javascript
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-action-button.js
@@ -64,7 +64,7 @@
if (this.modal){
allProperties.Command = this.command;
callbackFunction = function(){
- OB.Layout.ClassicOBCompatibility.Popup.open('process', 900, 600, OB.Application.contextUrl + me.obManualURL, '', null, false, false, true, allProperties);
+ OB.Layout.ClassicOBCompatibility.Popup.open('process', 900, 600, OB.Utilities.applicationUrl(me.obManualURL), '', null, false, false, true, allProperties);
};
} else {
var popupParams = {
@@ -98,7 +98,9 @@
OB.ActionButton.executingProcess = null;
if (newWindow) {
- var contextURL = location.href.substr(0, location.href.indexOf(OB.Application.contextUrl) + OB.Application.contextUrl.length);
+ var contextURL = location.protocol +"//"
+ + location.host
+ + location.pathname.substr(0, location.pathname.indexOf(OB.Application.contextUrl) + OB.Application.contextUrl.length);
if (newWindow.indexOf(contextURL) !== -1){
newWindow = newWindow.substr(contextURL.length);
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-compatibility.js
@@ -42,7 +42,7 @@
}
ClassicOBCompatibility.prototype = {
-
+
// ** {{{ openLinkedItem(tabId, recordId) }}} **
//
// Opens a window from the linked item view.
@@ -187,7 +187,7 @@
// formObject.action.toString();
// hardcode to prevent this issue with chrome:
// https://issues.openbravo.com/view.php?id=13837
- var actionURL = OB.Application.contextUrl + 'utility/ReferencedLink.html';
+ var actionURL = OB.Utilities.applicationUrl('utility/ReferencedLink.html');
var rpcMgr = ISC.RPCManager;
var reqObj = {
@@ -334,6 +334,10 @@
if (showCloseControl !== false) {
showCloseControl = true;
}
+ if (url.indexOf("//") === 0) {
+ // Double slash at start of relative URL only keeps scheme, not server
+ url = url.substring(1);
+ }
var cPopup = isc.OBClassicPopup.create({
ID: name + '_' + cobcomp.Popup.secString,
width: width,
@@ -347,8 +351,9 @@
isLoaded: false,
htmlCode: '<html><head></head><frameset cols="*, 0%" rows="*" frameborder="no" border="0" framespacing="0">'+
'<frame id="MDIPopupContainer" name="MDIPopupContainer"></frame>'+
- '<frame name="frameMenu" scrolling="no" src="' + OB.Application.contextUrl +
- 'utility/VerticalMenu.html?Command=HIDE" id="paramFrameMenuLoading"></frame>'+
+ '<frame name="frameMenu" scrolling="no" src="' +
+ OB.Utilities.applicationUrl('utility/VerticalMenu.html?Command=HIDE') +
+ '" id="paramFrameMenuLoading"></frame>'+
'</frameset><body></body></html>',
popupURL: url
});
@@ -482,21 +487,21 @@
//
// Opens directly the "Instance Purpose" window inside a popup
openInstancePurpose: function(){
- cobcomp.Popup.open('InstancePurpose', 600, 500, OB.Application.contextUrl + 'ad_forms/InstancePurpose.html', '', window, false, false, true);
+ cobcomp.Popup.open('InstancePurpose', 600, 500, OB.Utilities.applicationUrl('ad_forms/InstancePurpose.html'), '', window, false, false, true);
},
// ** {{{ Popup.openHeartbeat() }}} **
//
// Opens directly the "Heartbeat" window inside a popup
openHeartbeat: function(){
- cobcomp.Popup.open('Heartbeat', 600, 500, OB.Application.contextUrl + 'ad_forms/Heartbeat.html', '', window, false, false, true);
+ cobcomp.Popup.open('Heartbeat', 600, 500, OB.Utilities.applicationUrl('ad_forms/Heartbeat.html'), '', window, false, false, true);
},
// ** {{{ Popup.openRegistration() }}} **
//
// Opens directly the "Registration" window inside a popup
openRegistration: function(){
- cobcomp.Popup.open('Registration', 600, 500, OB.Application.contextUrl + 'ad_forms/Registration.html', '', window, false, false, true);
+ cobcomp.Popup.open('Registration', 600, 500, OB.Utilities.applicationUrl('ad_forms/Registration.html'), '', window, false, false, true);
}
}
};
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-popup.js
@@ -42,8 +42,8 @@
urlCharacter = '&';
}
if(this.obManualURL !== '') {
- contentsURL = OB.Application.contextUrl + this.obManualURL + '?Command=' + this.command;
-// contentsURL = this.appURL + urlCharacter + 'url=' + this.obManualURL + '&noprefs=true&Command=' + this.command + '&hideMenu=true';
+ contentsURL = OB.Utilities.applicationUrl(this.obManualURL) + '?Command=' + this.command;
+ // contentsURL = this.appURL + urlCharacter + 'url=' + this.obManualURL + '&noprefs=true&Command=' + this.command + '&hideMenu=true';
} else {
contentsURL = this.appURL + urlCharacter + 'Command=' + this.command + '&noprefs=true&tabId=' + this.tabId + '&hideMenu=true';
}
@@ -59,7 +59,7 @@
isc.defineClass('OBClassicPopupModal', isc.Class).addProperties({
showsItself: true,
show: function() {
- OB.Layout.ClassicOBCompatibility.Popup.open(this.id, 625, 450, OB.Application.contextUrl + this.obManualURL+'?Command='+this.command, '', null, false, false, true);
+ OB.Layout.ClassicOBCompatibility.Popup.open(this.id, 625, 450, OB.Utilities.applicationUrl(this.obManualURL)+'?Command='+this.command, '', null, false, false, true);
}
});
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-window.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-window.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-window.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-classic-window.js
@@ -321,7 +321,7 @@
evalResult: false,
httpMethod: 'POST',
useSimpleHttp: true,
- actionURL: OB.Application.contextUrl + postData.mappingName
+ actionURL: OB.Utilities.applicationUrl(postData.mappingName)
};
isc.RPCManager.sendRequest(reqObj);
},
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-formitem-widgets.js
@@ -256,7 +256,7 @@
complementsNS4 = 'alwaysRaised=1, dependent=1, directories=0, hotkeys=0, menubar=0, ';
}
var complements = complementsNS4 + 'height=' + height + ', width=' + width + ', left=' + left + ', top=' + top + ', screenX=' + left + ', screenY=' + top + ', location=0, resizable=1, scrollbars=1, status=0, toolbar=0, titlebar=0, modal=\'yes\'';
- isc.OBSearchItem.openedWindow = window.open(OB.Application.contextUrl + url + ((auxField === '') ? '' : '?' + auxField), 'SELECTOR', complements);
+ isc.OBSearchItem.openedWindow = window.open(OB.Utilities.applicationUrl(url) + ((auxField === '') ? '' : '?' + auxField), 'SELECTOR', complements);
if (isc.OBSearchItem.openedWindow) {
isc.OBSearchItem.openedWindow.focus();
this.setUnloadEventHandling();
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-help-about-widget.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-help-about-widget.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-help-about-widget.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-help-about-widget.js
@@ -53,7 +53,7 @@
handleClick: function(){
isc.OBQuickRun.hide();
- OB.Layout.ClassicOBCompatibility.Popup.open('About', 620, 500, OB.Application.contextUrl + '/ad_forms/about.html', '', window);
+ OB.Layout.ClassicOBCompatibility.Popup.open('About', 620, 500, OB.Utilities.applicationUrl('/ad_forms/about.html'), '', window);
}
};
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
@@ -1126,7 +1126,7 @@
popupParams += '&inphiddenvalue=' + selectedIds;
view.setContextInfo(sessionProperties, function(){
- OB.Layout.ClassicOBCompatibility.Popup.open('print', 0, 0, OB.Application.contextUrl + '/businessUtility/PrinterReports.html?' + popupParams, '', window, false, false, true);
+ OB.Layout.ClassicOBCompatibility.Popup.open('print', 0, 0, OB.Utilities.applicationUrl('/businessUtility/PrinterReports.html?') + popupParams, '', window, false, false, true);
});
};
@@ -1151,7 +1151,7 @@
popupParams += '&inpRecordId=' + view.viewGrid.getSelectedRecord().id;
}
- OB.Layout.ClassicOBCompatibility.Popup.open('audit', 900, 600, OB.Application.contextUrl + '/businessUtility/AuditTrail.html?' + popupParams, '', window, false, false, true);
+ OB.Layout.ClassicOBCompatibility.Popup.open('audit', 900, 600, OB.Utilities.applicationUrl('/businessUtility/AuditTrail.html?') + popupParams, '', window, false, false, true);
};
OB.ToolbarUtils.showTree = function(view){
@@ -1161,7 +1161,7 @@
popupParams += '&Command=DEFAULT';
popupParams += '&inpTabId=' + tabId;
popupParams += '&hideMenu=true&noprefs=true';
- OB.Layout.ClassicOBCompatibility.Popup.open('tree', 750, 625, OB.Application.contextUrl + '/security/Menu.html?' + popupParams, '', window, false, false, true);
+ OB.Layout.ClassicOBCompatibility.Popup.open('tree', 750, 625, OB.Utilities.applicationUrl('/security/Menu.html?') + popupParams, '', window, false, false, true);
}
var tabId = view.tabId;
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-utilities.js
@@ -764,3 +764,22 @@
}
return (/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i).test(url);
};
+
+// ** {{{ applicationUrl(path) }}} **
+//
+// Get the full URL to the supplied path under the application context
+//
+// Parameters:
+// * {{{path}}} path portion of URL
+//
+OB.Utilities.applicationUrl = function(path) {
+ var appUrl = OB.Application.contextUrl + path;
+ if(appUrl.indexOf("//") === 0 ) {
+ // Double slash at start of relative URL only keeps scheme, not server
+ appUrl = appUrl.substring(1);
+ }
+ return appUrl;
+};
+
+
+
|