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;
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),
);
}
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, [], []);
}
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)
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;
$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)
{
$finalLinks = [];
$l = array_merge(self::_getAsArray($links), self::_getAsArray($specialLinks));
+
$k = 0;
foreach ($l as $item) {
$item['id'] = $k + 1;
$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')) {
},
updateLinkData: function (id, data) {
+ if (LINKS[id] === undefined) {
+ console.warn('Link ' + id + ' not found');
+ return;
+ }
$.each(data, function (k, v) {
LINKS[id][k] = v;
});
deleteSelection: function () {
var $this = this;
+ this.linkeditor.form.emptyForm();
$(".link.selected").each(function () {
$this.deleteLink(this, false);
});
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);
});
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) {
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();
},
};
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);
}
//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) {
'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);
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"