]> _ Git - fluidbook-toolbox.git/commitdiff
wait #5463 @2.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 9 Dec 2022 16:00:54 +0000 (17:00 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 9 Dec 2022 16:00:54 +0000 (17:00 +0100)
app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php
app/Util/FluidbookLinks.php
resources/linkeditor/js/linkeditor.js
resources/linkeditor/js/linkeditor.links.js
resources/linkeditor/js/linkeditor.save.js
resources/linkeditor/js/linkeditor.toolbar.js
resources/linkeditor/js/linkeditor.versions.js
resources/views/fluidbook_publication/link_editor.blade.php

index a03aa2508184ba460d43728ca9098f4409d6cd24..5b71fe68f12adc44d56f4aaadf366886dbed82aa 100644 (file)
@@ -7,6 +7,7 @@ use App\Models\FluidbookPublication;
 use App\Util\FluidbookLinks;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
 use Cubist\Util\Files\Files;
+use Illuminate\Http\UploadedFile;
 use Illuminate\Support\Facades\Route;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
@@ -34,11 +35,12 @@ trait EditOperation
         if (!FluidbookPublication::hasPermission($fluidbook_id)) {
             abort(401);
         }
+
         FluidbookLinks::saveLinksInFile($fluidbook_id,
             backpack_user()->id,
             request('message'),
-            request('links', []),
-            request('rulers', [])
+            json_decode(request('links', '[]'), true),
+            json_decode(request('rulers', '[]'), true),
         );
     }
 
@@ -95,11 +97,9 @@ trait EditOperation
         if (!FluidbookPublication::hasPermission($fluidbook_id)) {
             abort(401);
         }
-        $comments = 'Restore links from ' . date('Y-m-d H:i:s', $version);
 
-        // New way
         FluidbookLinks::getLinksAndRulers($fluidbook_id, $links, $rulers, $version);
-        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, $comments, $links, $rulers, [], []);
+        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __('Restaurer la sauvegarde des liens :date', ['date' => date('Y-m-d H:i:s', $version)]), $links, $rulers, [], []);
     }
 
 
@@ -108,8 +108,11 @@ trait EditOperation
         if (!FluidbookPublication::hasPermission($fluidbook_id)) {
             abort(401);
         }
-        FluidbookLinks::getLinksAndRulersFromExcelFile(request()->file('file')->getPathname(), $links, $rulers);
-        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, 'Replace links from excel', $links, $rulers, [], []);
+        /** @var UploadedFile $uploadedFile */
+        $uploadedFile = request()->file('file');
+
+        FluidbookLinks::getLinksAndRulersFromExcelFile($uploadedFile->getPathname(), $links, $rulers);
+        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Remplacer les liens à partir du fichier :file", ['file' => $uploadedFile->getClientOriginalName()]), $links, $rulers, [], []);
     }
 
     protected function importLinksMerge($fluidbook_id)
@@ -118,8 +121,11 @@ trait EditOperation
             abort(401);
         }
 
+        /** @var UploadedFile $uploadedFile */
+        $uploadedFile = request()->file('file');
+
         FluidbookLinks::getLinksAndRulers($fluidbook_id, $merged_links, $merged_rulers);
-        FluidbookLinks::getLinksAndRulersFromExcelFile(request()->file('file')->getPathname(), $links, $rulers);
+        FluidbookLinks::getLinksAndRulersFromExcelFile($uploadedFile->getPathname(), $links, $rulers);
         $existing_uids = [];
         foreach ($merged_links as $merged_link) {
             $existing_uids[$merged_link['uid']] = true;
@@ -135,7 +141,7 @@ trait EditOperation
 
         $merged_rulers = array_merge($merged_rulers, $rulers);
 
-        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, 'Merge existing links with excel', $merged_links, $merged_rulers, [], []);
+        FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter les liens à partir du fichier :file", ['file' => $uploadedFile->getClientOriginalName()]) . ' ', $merged_links, $merged_rulers, [], []);
     }
 
 //    protected function getThumb($doc_id, $doc_page)
index 430f992233d55fb15b9e8f54b124f90cad1a6afe..9cc37eb8d2e2fafaeb966486e50de63da5156bbb 100644 (file)
@@ -440,6 +440,7 @@ class FluidbookLinks
     {
         $finalLinks = [];
         $l = array_merge(self::_getAsArray($links), self::_getAsArray($specialLinks));
+
         $k = 0;
         foreach ($l as $item) {
             $item['id'] = $k + 1;
index d28d242c6211c14fd53ebfbdfe1e1041fa436401..7e1b5bdb9ae07746f0c66f338bf60a51f434e2bd 100644 (file)
@@ -129,7 +129,7 @@ LinkEditor.prototype = {
             $this.rulers.moveRuler();
         });
 
-        $(document).on('mousedown', "#linkeditor-main", function (e) {
+        $(document).on('mousedown', "#linkeditor-editor", function (e) {
             var deselectAll = true;
             $this.setMouseCoordinates(e);
             if ($(this).hasClass('duplicate')) {
index 6bdcb47804b04925c0d42f0e13728cddea9b7650..862f239f709be1a7540b6508c3a7914882e1b961 100644 (file)
@@ -279,6 +279,10 @@ LinkeditorLinks.prototype = {
     },
 
     updateLinkData: function (id, data) {
+        if (LINKS[id] === undefined) {
+            console.warn('Link ' + id + ' not found');
+            return;
+        }
         $.each(data, function (k, v) {
             LINKS[id][k] = v;
         });
@@ -482,6 +486,7 @@ LinkeditorLinks.prototype = {
 
     deleteSelection: function () {
         var $this = this;
+        this.linkeditor.form.emptyForm();
         $(".link.selected").each(function () {
             $this.deleteLink(this, false);
         });
index 07e7d3b8e0048320ede1534d5c5d4c66711aed3b..4989fd017a92d58619b7d1fba893d9747aecec60 100644 (file)
@@ -32,8 +32,11 @@ LinkeditorSave.prototype = {
 
     saveIfUnsavedChanges: function (message, notify, callback) {
         if (this.unsavedChanges) {
+            console.log('unsaved changes', this.unsavedChanges);
             this.save(message, false, function () {
+                console.log('saved');
                 setTimeout(function () {
+                    console.log('callback ok');
                     callback();
                 }, 1000);
             });
@@ -58,7 +61,10 @@ LinkeditorSave.prototype = {
         var notificationTimeout = 5000;
         $.ajax({
             url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/save/links', method: 'post', data: {
-                _method: 'put', 'message': message, rulers: window.RULERS, links: window.LINKS,
+                _method: 'put',
+                message: message,
+                rulers: JSON.stringify(window.RULERS),
+                links: JSON.stringify(window.LINKS),
             },
             success: function (data) {
                 if (notify) {
index 38deaf1972dfc4a5f4d109f52634bb9000216f96..3c80f79c8c59efbc52b19adf7c8e115549c8152f 100644 (file)
@@ -37,14 +37,24 @@ LinkeditorToolbar.prototype = {
                 var xhr = f.data('jqxhr');
                 xhr.done(function (data) {
                     setTimeout(function () {
-                        console.log('reload');
                         window.location.reload();
                     }, 1000);
                 });
             }
-            $this.linkeditor.save.saveIfUnsavedChanges('Sauvegarde before excel import', false, callback);
+            $this.linkeditor.save.saveIfUnsavedChanges(TRANSLATIONS.before_restore_message, false, callback);
         });
 
+        $(document).on('click', '#linkeditor-export-latest', function () {
+            var e = $(this);
+            if ($this.linkeditor.save.unsavedChanges) {
+                $this.linkeditor.save.save(TRANSLATIONS.before_export_save_message, false, function () {
+                    $(e).get(0).click();
+                });
+                return false;
+            }
+            return true;
+        })
+
         this.linkeditor.initTooltips();
     },
 };
index 1050ddc23dcfc995479ab822860e2a2e60e6c3cd..d0b0696ebcf0ba156f1adeaa4063add58ac81ac4 100644 (file)
@@ -34,8 +34,8 @@ LinkeditorVersions.prototype = {
             item += '<div class="rulers"><b>' + version.rulers + '</b> rulers</div>';
             item += '</div>'
             item += '<div class="col3">';
-            item += '<div class="actions"><a nohref data-action="versions.restoreVersion" data-action-args="' + actionArgs + '" data-icon="wayback-machine" data-tooltip="Restaurer cette version"></a>' +
-                '<a download="links_' + FLUIDBOOK_DATA.id + '_' + version.timestamp + '.xlsx" href="/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links/versions/export/' + version.timestamp + '" data-icon="export-links" data-tooltip="Exporter les liens au format xlsx"></a></div>';
+            item += '<div class="actions"><a nohref data-action="versions.restoreVersion" data-action-args="' + actionArgs + '" data-icon="wayback-machine" data-tooltip="'+TRANSLATIONS.restore_version_tooltip+'"></a>' +
+                '<a download="links_' + FLUIDBOOK_DATA.id + '_' + version.timestamp + '.xlsx" href="/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/edit/links/versions/export/' + version.timestamp + '" data-icon="export-links" data-tooltip="'+TRANSLATIONS.export_version_tooltip+'"></a></div>';
             item += '</div>'
             item += '</div>'
             list.append(item);
@@ -52,7 +52,7 @@ LinkeditorVersions.prototype = {
         }
 
         //Restore links from 2022-12-07 13:37:15
-        this.linkeditor.save.saveIfUnsavedChanges('Save before restoring links',false,callback);
+        this.linkeditor.save.saveIfUnsavedChanges(TRANSLATIONS.before_restore_message,false,callback);
     },
 
     _restoreVersion(timestamp) {
index 0e62a435e41e15321390dfef12306b029d28ed97..62db0f8b1d9bf42edfa9e1d68db0a805cdc3f0c8 100644 (file)
         'manual_save_message'=>__('Sauvegarde manuelle'),
         'automatic_save_message'=>__('Sauvegarde automatique'),
         'warning_unsaved_changes'=>__('Des données n\'ont pas été sauvegardées'),
+        'before_import_save_message'=>__("Sauvegarde avant l'import d'un fichier excel"),
+        'before_export_save_message'=>__("Sauvegarde avant export"),
+        'before_restore_message'=>__("Sauvegarde avant la restauration des liens"),
+        'restore_version_tooltip'=>__('Restaurer cette version'),
+        'export_version_tooltip'=>__('Exporter les liens au format xlsx'),
     ];
 
     $rulers=!count($rulers)?'{}':json_encode($rulers);
@@ -91,7 +96,7 @@
                                    name="file"/>
                         </form>
                     </div>
-                    <a download="links_{{$fbdata['id']}}.xlsx"
+                    <a id="linkeditor-export-latest" download="links_{{$fbdata['id']}}.xlsx"
                        href="/fluidbook-publication/{{$fbdata['id']}}/edit/links/versions/export/latest"
                        data-icon="export-links" data-tooltip="Exporter les liens"></a>
                     <a href="#" data-action="moveLinks" data-icon="move-links"