mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
#20479 fixing issue with initial folder path not loading correctly
This commit is contained in:

committed by
Sebastien Ros

parent
3c905bb7a2
commit
0694e07703
@@ -108,7 +108,7 @@ $(function () {
|
|||||||
self.getMediaItems = function (count, append) {
|
self.getMediaItems = function (count, append) {
|
||||||
var folderPath = self.displayed() || '';
|
var folderPath = self.displayed() || '';
|
||||||
|
|
||||||
if (self.pendingRequest()) {
|
if (self.mediaPendingRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +260,18 @@ $(function () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
self.orderMedia.subscribe(selectFolderOrRecent);
|
self.orderMedia.subscribe(selectFolderOrRecent);
|
||||||
self.mediaType.subscribe(selectFolderOrRecent);
|
self.mediaType.subscribe(selectFolderOrRecent);
|
||||||
|
|
||||||
|
self.fetchDisplayedFolderStructure = function(displayedFolder) {
|
||||||
|
var folders = self.mediaFolders();
|
||||||
|
for (var x = 0; x < folders.length; x++) {
|
||||||
|
var folder = folders[x];
|
||||||
|
if (displayedFolder.indexOf(folder.folderPath()) === 0) {
|
||||||
|
folder.fetchChildren(displayedFolder);
|
||||||
|
folder.isExpanded(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var viewModel = new mediaIndexViewModel();
|
var viewModel = new mediaIndexViewModel();
|
||||||
@@ -285,6 +296,54 @@ $(function () {
|
|||||||
return (self.mediaIndexViewModel.displayed() == self.folderPath());
|
return (self.mediaIndexViewModel.displayed() == self.folderPath());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
self.fetchChildren = function (deepestChildPath) {
|
||||||
|
self.childFoldersFetchStatus = 1;
|
||||||
|
|
||||||
|
var getChildFolderListUrl = function (f) {
|
||||||
|
return settings.childFolderListingActionUrl + '?folderPath=' + encodeURIComponent(f);
|
||||||
|
};
|
||||||
|
var url = getChildFolderListUrl(self.folderPath());
|
||||||
|
|
||||||
|
self.mediaIndexViewModel.mediaFoldersPendingRequest(true);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url,
|
||||||
|
cache: false
|
||||||
|
}).done(function (data) {
|
||||||
|
var newChildFolders = data.childFolders;
|
||||||
|
|
||||||
|
var nextFetch = self.folderPath();
|
||||||
|
|
||||||
|
if (deepestChildPath !== undefined && deepestChildPath !== null && (deepestChildPath.indexOf(self.folderPath()) === 0)) {
|
||||||
|
var deepestChildPathBreadCrumbs = deepestChildPath.split('\\');
|
||||||
|
var currentBreadCrumbs = self.folderPath().split('\\');
|
||||||
|
|
||||||
|
var diff = deepestChildPathBreadCrumbs.length - currentBreadCrumbs.length;
|
||||||
|
if (diff > 0) {
|
||||||
|
nextFetch = self.folderPath() + '\\' + deepestChildPathBreadCrumbs[deepestChildPathBreadCrumbs.length - diff];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var y = 0; y < newChildFolders.length; y++) {
|
||||||
|
var newChildFolder = new mediaFolderViewModel(newChildFolders[y]);
|
||||||
|
if (newChildFolder.folderPath() === nextFetch) {
|
||||||
|
newChildFolder.fetchChildren(deepestChildPath);
|
||||||
|
newChildFolder.isExpanded(true);
|
||||||
|
}
|
||||||
|
newChildFolder.isVisible(true);
|
||||||
|
self.childFolders.push(newChildFolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.childFoldersFetchStatus = 2;
|
||||||
|
}).fail(function (data) {
|
||||||
|
console.error(data);
|
||||||
|
self.childFoldersFetchStatus = 0;
|
||||||
|
}).always(function () {
|
||||||
|
self.mediaIndexViewModel.mediaFoldersPendingRequest(false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.folderClicked = function () {
|
self.folderClicked = function () {
|
||||||
if (self.mediaIndexViewModel.mediaFoldersPendingRequest()) {
|
if (self.mediaIndexViewModel.mediaFoldersPendingRequest()) {
|
||||||
return;
|
return;
|
||||||
@@ -305,33 +364,7 @@ $(function () {
|
|||||||
childFolders[x].isVisible(true);
|
childFolders[x].isVisible(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.childFoldersFetchStatus = 1;
|
self.fetchChildren();
|
||||||
var getChildFolderListUrl = function (f) {
|
|
||||||
return settings.childFolderListingActionUrl + '?folderPath=' + encodeURIComponent(f);
|
|
||||||
};
|
|
||||||
var url = getChildFolderListUrl(self.folderPath());
|
|
||||||
|
|
||||||
self.mediaIndexViewModel.mediaFoldersPendingRequest(true);
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: "GET",
|
|
||||||
url: url,
|
|
||||||
cache: false
|
|
||||||
}).done(function (data) {
|
|
||||||
var newChildFolders = data.childFolders;
|
|
||||||
for (var y = 0; y < newChildFolders.length; y++) {
|
|
||||||
var newChildFolder = new mediaFolderViewModel(newChildFolders[y]);
|
|
||||||
newChildFolder.isVisible(true);
|
|
||||||
self.childFolders.push(newChildFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
self.childFoldersFetchStatus = 2;
|
|
||||||
}).fail(function (data) {
|
|
||||||
console.error(data);
|
|
||||||
self.childFoldersFetchStatus = 0;
|
|
||||||
}).always(function () {
|
|
||||||
self.mediaIndexViewModel.mediaFoldersPendingRequest(false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.isExpanded(true);
|
self.isExpanded(true);
|
||||||
@@ -341,7 +374,9 @@ $(function () {
|
|||||||
|
|
||||||
$.map(settings.childFolders, function (childFolder, index) {
|
$.map(settings.childFolders, function (childFolder, index) {
|
||||||
viewModel.mediaFolders.push(new mediaFolderViewModel(childFolder));
|
viewModel.mediaFolders.push(new mediaFolderViewModel(childFolder));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
viewModel.fetchDisplayedFolderStructure(settings.folderPath);
|
||||||
|
|
||||||
enhanceViewModel(viewModel);
|
enhanceViewModel(viewModel);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user