Route::match(['get'], $segment . '/{id}/edit/links/versions/export/{version}', $controller . '@exportLinks');
Route::match(['post'], $segment . '/{id}/edit/links/import/merge', $controller . '@importLinksMerge');
Route::match(['post'], $segment . '/{id}/edit/links/import/replace', $controller . '@importLinks');
+ Route::match(['post'], $segment . '/{id}/edit/links/move', $controller . '@moveLinks');
Route::match(['get'], $segment . '/{id}/edit/links/versions/restore/{version}', $controller . '@restoreLinks');
Route::put($segment . '/{id}/save/links', $controller . '@saveLinks');
Route::get($segment . '/{id}/edit/{type}_{page}.{format}', $controller . '@getLinkPage')
);
}
+ protected function moveLinks($fluidbook_id)
+ {
+ if (!FluidbookPublication::hasPermission($fluidbook_id)) {
+ abort(401);
+ }
+
+ $offset = request('number');
+ $from = request('start');
+ $internal = request('offset_internal_links', '0');
+
+ /** @var FluidbookPublication $fb */
+ $fb = FluidbookPublication::find($fluidbook_id);
+ if ($internal) {
+ $numerotation = explode(',', $fb->page_numbers);
+ }
+ $width = $fb->getPageWidth();
+ $isOnePage = $fb->isOnePage();
+
+ FluidbookLinks::getLinksAndRulers($fluidbook_id, $links, $rulers);
+
+ $rlinks = array();
+ foreach ($links as $k => $link) {
+ if (!$isOnePage && $link['page'] % 2 == 0 && $link['left'] > $width) {
+ $link['page']++;
+ $link['left'] -= $width;
+ }
+
+ if ($link['page'] >= $from) {
+ $link['page'] += $offset;
+ }
+ if ($internal && $link['type'] == 5) {
+ if ($link['numerotation'] == 'physical') {
+ if ($link['to'] >= $from) {
+ $link['to'] += $offset;
+ }
+ } else {
+ $ph = array_search($link['to'], $numerotation) + 1;
+ if ($ph >= $from) {
+ $ph += $offset;
+ $vi = $numerotation[($ph - 1)];
+ $link['to'] = $vi;
+ }
+ }
+ }
+ $rlinks[$k] = $link;
+ }
+
+ $rrulers = array();
+ foreach ($rulers as $k => $ruler) {
+ if (!$isOnePage && $ruler['type'] == 'x' && $ruler['page'] % 2 == 0 && $ruler['pos'] > $width) {
+ $ruler['page']++;
+ $ruler['pos'] -= $width;
+ }
+
+ if ($ruler['page'] > $from) {
+ $ruler['page'] += $offset;
+ }
+
+ if (!$isOnePage && $ruler['page'] % 2 == 1 && $ruler['type'] == 'x') {
+ $ruler['page']--;
+ $ruler['pos'] += $width;
+ }
+
+ $rrulers[$k] = $ruler;
+ }
+
+ FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __('Décalage de :nb pages à partir de la page :page', ['nb' => $offset, 'page' => $from]), $rlinks, $rrulers);
+ return response()->json(['success' => 'ok']);
+ }
+
protected function getLinkPage($fluidbook_id, $type, $page, $format = 'jpg')
{
if (!FluidbookPublication::hasPermission($fluidbook_id)) {
FluidbookLinks::getLinksAndRulers($fluidbook_id, $links, $rulers, $version);
FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __('Restaurer la sauvegarde des liens :date', ['date' => date('Y-m-d H:i:s', $version)]), $links, $rulers, [], []);
+ return response()->json(['success' => 'ok']);
}
-
protected function importLinks($fluidbook_id)
{
if (!FluidbookPublication::hasPermission($fluidbook_id)) {
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, [], []);
+ return response()->json(['success' => 'ok']);
}
protected function importLinksMerge($fluidbook_id)
$merged_rulers = array_merge($merged_rulers, $rulers);
FluidbookLinks::saveLinksInFile($fluidbook_id, backpack_user()->id, __("Ajouter les liens à partir du fichier :file", ['file' => $uploadedFile->getClientOriginalName()]) . ' ', $merged_links, $merged_rulers, [], []);
+ return response()->json(['success' => 'ok']);
}
-// protected function getThumb($doc_id, $doc_page)
-// {
-//
-// /** @var FluidbookDocument $doc */
-// $doc = FluidbookDocument::find($doc_id);
-// $path = $doc->getFile($doc_page, 'jpg', 'thumb', true, true, '');
-// if (filesize($path) === 0) {
-// for ($i = 1; $i <= 8; $i++) {
-// clearstatcache();
-// if (filesize($path) > 0) {
-// break;
-// }
-// sleep($i);
-// }
-// }
-// return XSendFileController::sendfile($path);
-// }
-
protected function setupEditDefaults()
{
$this->crud->addButton('line', 'edit', 'view', 'crud::buttons.fluidbook_publication.edit', 'end');
return false;
});
+ $(document).on('submit', 'form.reloadAfterSuccess', function () {
+ $this.submitFormAndReload(this);
+ return false;
+ });
+
$(document).on('change', '.importExcel input', function () {
- var e = $(this);
- var callback = function () {
- var form = $(e).closest('form');
- var f = $(form).ajaxSubmit({dataType: 'json'});
- var xhr = f.data('jqxhr');
- xhr.done(function (data) {
- setTimeout(function () {
- window.location.reload();
- }, 1000);
- });
- }
- $this.linkeditor.save.saveIfUnsavedChanges(TRANSLATIONS.before_restore_message, false, callback);
+ $this.submitFormAndReload($(this).closest('form'));
+ return false;
});
$(document).on('click', '#linkeditor-export-latest', function () {
this.linkeditor.initTooltips();
},
+
+ submitFormAndReload: function (form) {
+ var callback = function () {
+ $(form).ajaxSubmit(
+ {
+ dataType: 'json',
+ success: function (data) {
+ setTimeout(function () {
+ window.location.reload();
+ }, 1000);
+ }
+ }
+ );
+ }
+
+ if ($(form).is('[data-save-before-submit]')) {
+ this.linkeditor.save.saveIfUnsavedChanges($(form).attr('data-save-before-submit'), false, callback)
+ } else {
+ callback();
+ }
+ },
};
module.exports = LinkeditorToolbar;
'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'),
<div class="popup" data-popup="moveLinks" style="max-width: 300px">
<h2>{{__('Déplacer les liens')}}</h2>
<a nohref="" class="close" data-icon="close"></a>
- <form action="/fluidbook-publication/{{$fbdata['id']}}/edit/links/move" method="post">
+ <form action="/fluidbook-publication/{{$fbdata['id']}}/edit/links/move" data-save-before-submit="{{__("Sauvegarde avant le déplacement de liens")}}" class="reloadAfterSuccess" method="post">
+ @csrf
<p>{!! __('Déplacer les liens de :nb pages :br à partir de la page :page',
['br'=>'</p><p>','nb'=>'<input type="number" name="number">','page'=>'<input type="text" name="start">'])!!}</p>
<p><label>
- <input type="checkbox"
- name="offset_internal_links"> {{__('Appliquer le décalage aux numéros de pages des liens internets')}}
+ <input type="checkbox" checked
+ name="offset_internal_links"
+ value="1"> {{__('Appliquer le décalage aux numéros de pages des liens internes')}}
</label></p>
<p class="button">
<button type="submit">{{__('Déplacer les liens')}}</button>
<div class="separator"></div>
<div data-icon="import-links"
data-tooltip="{{__('Importer les liens (Remplacer)')}}">
- <form class="importExcel"
+ <form class="importExcel" data-save-before-submit="{{__("Sauvegarde avant l'import d'un fichier excel")}}"
action="/fluidbook-publication/{{$fbdata['id']}}/edit/links/import/replace" method="post"
enctype="multipart/form-data">
<input type="file"
</div>
<div data-icon="merge-links"
data-tooltip="{{__('Importer les liens (Ajouter)')}}">
- <form class="importExcel"
+ <form class="importExcel" data-save-before-submit="{{__("Sauvegarde avant l'import d'un fichier excel")}}"
action="/fluidbook-publication/{{$fbdata['id']}}/edit/links/import/merge" method="post"
enctype="multipart/form-data">
<input type="file"