-
Improvement
-
Resolution: Fixed
-
None
-
High
-
Improve Frontend of PDF batch-exchange
-
Emptyshow more show less
There are several improvements needed for the existing implementation, from a technical and usability standpoint:
- The menuitem (and window) "Exchange PDF" in the Batch-Operations Menu shall be added dynamically via an event, see
Editor.plugins.VisualReview.controller.Global -> onTaskActionColumnItemsInitialized and Editor.view.admin.task.menu.TaskActionMenu
for how that works
- In the initial window when clicking the buttons, a list of the tasks of current selection should be loaded into a grid of the window (or of a new window if doing it in the initial dialog is too complicated).
- This grid shows the taskId, taskName and the current visual source file(s). Each task has a checkbox, that is checked after loading the tasks. The user then can review the selection, deselect items if needed and start the operation with a button appearing after load: "Start Exchange". There also shall be a hint, that this may takes a while.
- The list of tasks shall be retrieved from the backend-controller "editor_Plugins_VisualReview_SourceFileController". We need a new endpoint "/batchtasks" that processes the send selection. Since the sent task-IDs or filter may contains Projects, the new enpoint resolves projects to their child-tasks. (Note: the init of the controller requires a taskId to be sent, this must be made weaker). The returned model can be tailored to the frontend-needs:
[ { taskId: 123, taskName: "Just a task", visualFiles: ["file1.pdf", "file2.pdf", "file3.pdf"] visualType: "PDF" // overall type (SourceFiles::getOverallType()) controller cannot bring other types but for later reuse we should provide it }, ... ]
- The /batchtasks endpoint should be fetched with the param "visualType=PDF" which leads to returning only those taks, that have a matching overall type
- After the user clicked on "Start Operation", the already existing method
Editor.plugins.VisualReview.controller.Global -> openPdfBatchExchangeWindow
is called and handles the file-uploads & all the rest. The Backend-side already is implemented.