]> source.dussan.org Git - nextcloud-server.git/commitdiff
Do not clear URL hash when no external mount params given
authorVincent Petry <pvince81@owncloud.com>
Wed, 25 Jun 2014 10:24:46 +0000 (12:24 +0200)
committerVincent Petry <pvince81@owncloud.com>
Wed, 25 Jun 2014 10:24:46 +0000 (12:24 +0200)
Whenever external share parameters were passed through the URL hash, the
URL hash will now be cleared.

In other cases, the hash needs to be left alone because it is used as
workaround for the lack of history API in IE8 / IE9

Removed getParamterByName() and use OC.Util.History.parseUrlQuery() that
does the same, including replacing the "+" with spaces.

apps/files_sharing/js/external.js

index 5c476b2d43d25fa007732e9d81b005ab40d30646..a142819b1123ef7d81cc674bd349d88650e09930 100644 (file)
@@ -8,13 +8,6 @@
  *
  */
 (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) {
                return $.post(OC.generateUrl('apps/files_sharing/external'), {
                        remote: remote,
                });
        };
 
-       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 callback = function (add, password) {
                        password = password || '';
                                , '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 () {
        // FIXME: HACK: do not init when running unit tests, need a better way
        if (!window.TESTING && OCA.Files) {// only run in the files app
-               var hash = location.hash;
-               location.hash = '';
-               OCA.Sharing.showAddExternalDialog(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 = '';
+                       params.passwordProtected = parseInt(params.passwordProtected, 10) === 1;
+                       OCA.Sharing.showAddExternalDialog(
+                               params.remote,
+                               params.token,
+                               params.owner,
+                               params.name,
+                               params.passwordProtected
+                       );
+               }
        }
 });