Merge pull request #9202 from owncloud/urlhashfix

Do not clear URL hash when no external mount params given
This commit is contained in:
Morris Jobke 2014-06-25 16:28:52 +02:00
commit a9d0e9a5d5
2 changed files with 27 additions and 23 deletions

View File

@ -8,13 +8,6 @@
* *
*/ */
(function () { (function () {
var getParameterByName = function (query, name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\#&]" + name + "=([^&#]*)"),
results = regex.exec(query);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};
var addExternalShare = function (remote, token, owner, name, password) { var addExternalShare = function (remote, token, owner, name, password) {
return $.post(OC.generateUrl('apps/files_sharing/external'), { return $.post(OC.generateUrl('apps/files_sharing/external'), {
remote: remote, remote: remote,
@ -25,7 +18,16 @@
}); });
}; };
var showAddExternalDialog = function (remote, token, owner, name, passwordProtected) { /**
* Shows "add external share" dialog.
*
* @param {String} remote remote server URL
* @param {String} owner owner name
* @param {String} name name of the shared folder
* @param {String} token authentication token
* @param {bool} passwordProtected true if the share is password protected
*/
OCA.Sharing.showAddExternalDialog = function (remote, token, owner, name, passwordProtected) {
var remoteClean = (remote.substr(0, 8) === 'https://') ? remote.substr(8) : remote.substr(7); var remoteClean = (remote.substr(0, 8) === 'https://') ? remote.substr(8) : remote.substr(7);
var callback = function (add, password) { var callback = function (add, password) {
password = password || ''; password = password || '';
@ -47,25 +49,23 @@
, 'Add Share', callback, true, 'Password', true); , 'Add Share', callback, true, 'Password', true);
} }
}; };
OCA.Sharing.showAddExternalDialog = function (hash) {
var remote = getParameterByName(hash, 'remote');
var owner = getParameterByName(hash, 'owner');
var name = getParameterByName(hash, 'name');
var token = getParameterByName(hash, 'token');
var passwordProtected = parseInt(getParameterByName(hash, 'protected'), 10);
if (remote && token && owner && name) {
showAddExternalDialog(remote, token, owner, name, passwordProtected);
}
};
})(); })();
$(document).ready(function () { $(document).ready(function () {
// FIXME: HACK: do not init when running unit tests, need a better way // FIXME: HACK: do not init when running unit tests, need a better way
if (!window.TESTING && OCA.Files) {// only run in the files app if (!window.TESTING && OCA.Files) {// only run in the files app
var hash = location.hash; var params = OC.Util.History.parseUrlQuery();
if (params.remote && params.token && params.owner && params.name) {
// clear hash, it is unlikely that it contain any extra parameters
location.hash = ''; location.hash = '';
OCA.Sharing.showAddExternalDialog(hash); params.passwordProtected = parseInt(params.passwordProtected, 10) === 1;
OCA.Sharing.showAddExternalDialog(
params.remote,
params.token,
params.owner,
params.name,
params.passwordProtected
);
}
} }
}); });

View File

@ -1411,6 +1411,10 @@ OC.Util.History = {
if (pos >= 0) { if (pos >= 0) {
return hash.substr(pos + 1); return hash.substr(pos + 1);
} }
if (hash.length) {
// remove hash sign
return hash.substr(1);
}
return ''; return '';
}, },