Currently, if we move files/folders from one folder to another, the FileManager sends two requests to the backend - Create and Destroy. The Create method is called to "create" the files in their new destination and the Destroy method removes the files from their previous location.
The two methods are executed independently and the results from each of them don't affect the result of the other. There are scenarios in which when we move files, the Create call can fail or be prevented because of limited user rights, but the Destroy method will be executed resulting in files' deletion. The same is applicable in scenarios where the Destroy is unsuccessful.
It will be a very useful FileManager feature if there is a relation in the Create and Destroy methods' execution.
Hello, our file manager makes 2 read request in a row when the page is loaded, when we load a new path, and when a directory is clicked in the tree view.
Is this normal?
Thanks!
Open the demo at https://demos.telerik.com/aspnet-mvc/filemanager
right click Images in the tree and click rename.
Change the name
select the new folder name in the tree
try to do anything with the files in that folder (rename or delete are available in the demo)
= server error 500
the path did not update to the new path.
but if you refresh you see the folder renamed and worked (and now you can do things with the files inside)
now if you add a folder inside Images and do the same process over again it works as expected...
If a large number of files are moved using the drag & drop feature, it is very likely that some will get permanently deleted in the process. This is due to the Destroy routine being initiated before the Create routine has completed. Using the demo page here https://demos.telerik.com/aspnet-mvc/filemanager I've been able to replicate the loss of files. Steps are simply:
Almost immediately, you will find there's no longer 10 images as the Create routine fails to complete before the Destroy routine is initiated resulting in 1 or more files being lost. With very little effort, I was able to reduce the 10 images down to 6 - I would class this as critical.
After 1 move operation, the 10 files are now just 8:
A previously completed bug described here: https://feedback.telerik.com/aspnet-mvc/1476295-moving-files-can-result-in-permanent-deletion seems to have resulted in code that has the potential to delete ALL files if moved a few times.
I have not had a chance to get the latest version since the above mentioned bug was marked as completed, but I have made a couple of attempts to test the new functionality in your Demo system on this page: https://demos.telerik.com/aspnet-mvc/filemanager
Repeating the previous test, I have now found that a few move actions results in what appears at first to be a Copy, rather than a Move, but then a subsequent refresh reveals ALL files have been deleted.
Steps to reproduce on the Demo system:
I found that after repeating, the files did not appear to move, but seemed had been copied. But a refresh of the Demo page shows that all images had been deleted.
Following the above, here are a couple of screenshots:
Related item with FM issues/enhancements: telerik/kendo#10473
The FileManager's Error event fires, its dataSource throws a js exception:
kendo.all.js:165968 Uncaught Error: Error! The requested URL returned 500 - error
and the added folder is still displayed in the FileManager view.
The view is refreshed and the added folder is removed.
In the file manager after we move a *directory* with the Tree view (NOT list view), we are getting a javascript error:
kendo.all.min.js:114 Uncaught TypeError: e.closest is not a function
at init._restoreFocus (kendo.all.js:166158)
at r.proxy (jquery-3.3.1.js:10268)
at r.trigger (kendo.all.js:164)
at r._closeAnimationEnd (kendo.all.js:60234)
at Object.proxy [as completeCallback] (jquery-3.3.1.js:10268)
at init.complete (kendo.all.js:10997)
at Object.S.promise (kendo.all.js:11021)
at HTMLDivElement.<anonymous> (kendo.all.js:1912)
at Function.dequeue (jquery-3.3.1.js:4376)
at HTMLDivElement.<anonymous> (jquery-3.3.1.js:4418)
This seems to be in kendo.all.js and I believe it is being called after the modal closes
which I thinki s being called from this:
_prompt: function (options) {
I think it's trying to locate the target of the directory that was moved - which is no longer there - and set focus to it.
I was trying to bind to the CLOSE event of the move dialog and set it to null to avoid the _restoreFocus call?
Not sure if that's even a good approach to take.
What are your thoughts? Thank you.