mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Merge pull request #30593 from nextcloud/bugfix/19048/fix-changedirectory-recommendations
Trigger "changeDirectory" event on URL change
This commit is contained in:
commit
db9fbc9307
2 changed files with 14 additions and 9 deletions
|
|
@ -316,7 +316,7 @@
|
|||
* Event handler for when an app notified that its directory changed
|
||||
*/
|
||||
_onDirectoryChanged: function(e) {
|
||||
if (e.dir) {
|
||||
if (e.dir && !e.changedThroughUrl) {
|
||||
this._changeUrl(this.navigation.getActiveItem(), e.dir, e.fileId);
|
||||
}
|
||||
},
|
||||
|
|
@ -386,9 +386,11 @@
|
|||
params.fileid = fileId;
|
||||
}
|
||||
var currentParams = OC.Util.History.parseUrlQuery();
|
||||
if (currentParams.dir === params.dir && currentParams.view === params.view && currentParams.fileid !== params.fileid) {
|
||||
// if only fileid changed or was added, replace instead of push
|
||||
OC.Util.History.replaceState(this._makeUrlParams(params));
|
||||
if (currentParams.dir === params.dir && currentParams.view === params.view) {
|
||||
if (currentParams.fileid !== params.fileid) {
|
||||
// if only fileid changed or was added, replace instead of push
|
||||
OC.Util.History.replaceState(this._makeUrlParams(params));
|
||||
}
|
||||
} else {
|
||||
OC.Util.History.pushState(this._makeUrlParams(params));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -794,7 +794,7 @@
|
|||
if( (this._currentDirectory || this.$el.find('#dir').val()) && currentDir === e.dir) {
|
||||
return;
|
||||
}
|
||||
this.changeDirectory(e.dir, false, true);
|
||||
this.changeDirectory(e.dir, true, true, undefined, true);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -2057,15 +2057,16 @@
|
|||
* @param {boolean} [changeUrl=true] if the URL must not be changed (defaults to true)
|
||||
* @param {boolean} [force=false] set to true to force changing directory
|
||||
* @param {string} [fileId] optional file id, if known, to be appended in the URL
|
||||
* @param {bool} [changedThroughUrl=false] true if the dir was set through a URL change
|
||||
*/
|
||||
changeDirectory: function(targetDir, changeUrl, force, fileId) {
|
||||
changeDirectory: function(targetDir, changeUrl, force, fileId, changedThroughUrl) {
|
||||
var self = this;
|
||||
var currentDir = this.getCurrentDirectory();
|
||||
targetDir = targetDir || '/';
|
||||
if (!force && currentDir === targetDir) {
|
||||
return;
|
||||
}
|
||||
this._setCurrentDir(targetDir, changeUrl, fileId);
|
||||
this._setCurrentDir(targetDir, changeUrl, fileId, changedThroughUrl);
|
||||
|
||||
// discard finished uploads list, we'll get it through a regular reload
|
||||
this._uploads = {};
|
||||
|
|
@ -2100,8 +2101,9 @@
|
|||
* @param targetDir directory to display
|
||||
* @param changeUrl true to also update the URL, false otherwise (default)
|
||||
* @param {string} [fileId] file id
|
||||
* @param {bool} changedThroughUrl true if the dir was set through a URL change
|
||||
*/
|
||||
_setCurrentDir: function(targetDir, changeUrl, fileId) {
|
||||
_setCurrentDir: function(targetDir, changeUrl, fileId, changedThroughUrl) {
|
||||
targetDir = targetDir.replace(/\\/g, '/');
|
||||
if (!this._isValidPath(targetDir)) {
|
||||
targetDir = '/';
|
||||
|
|
@ -2133,6 +2135,7 @@
|
|||
if (fileId) {
|
||||
params.fileId = fileId;
|
||||
}
|
||||
params.changedThroughUrl = changedThroughUrl
|
||||
this.$el.trigger(jQuery.Event('changeDirectory', params));
|
||||
}
|
||||
this.breadcrumb.setDirectory(this.getCurrentDirectory());
|
||||
|
|
@ -2234,7 +2237,7 @@
|
|||
if (status === 401) {
|
||||
// We are not authentificated, so reload the page so that we get
|
||||
// redirected to the login page while saving the current url.
|
||||
location.reload();
|
||||
location.reload();
|
||||
}
|
||||
|
||||
// Firewall Blocked request?
|
||||
|
|
|
|||
Loading…
Reference in a new issue