var composition = $('#composition_pages').get(0);
window.compositionSortable = new Sortable(composition, {
+ scroll: true,
multiDrag: true,
selectedClass: 'selected',
fallbackTolerance: 3,
animation: 150,
multiDragKey: 'CTRL',
+ avoidImplicitDeselect: true,
onSort: function (e) {
updateComposition();
}
if (!compositionIsActive()) {
return true;
}
- $(composition).find('.page').each(function () {
- Sortable.utils.select(this);
- });
+ compositionSelectAll();
return false;
});
if (!compositionIsActive()) {
return true;
}
- $(composition).find('.page.selected').remove();
+ compositionDeleteSelection();
return false;
});
+
+
+ $.contextMenu({
+ selector: '#composition_pages .page',
+ build: function ($triggerElement, e) {
+ if (!$($triggerElement).is('.selected')) {
+ compositionDeselectAll();
+ Sortable.utils.select($($triggerElement).get(0));
+ }
+
+ var res = {
+ callback: function () {
+
+ }
+ };
+ if ($("#composition_pages .page.selected").length <= 1) {
+ res.items = compositionContextSimple();
+ } else {
+ res.items = compositionContextMulti();
+ }
+ return res;
+ },
+ });
+
}
function updateComposition() {
$('input[name="page_numbers"]').val(numbers.join(','));
}
+ function compositionSelectAll() {
+ $(".page").each(function () {
+ Sortable.utils.select(this);
+ });
+ }
+
+
+ function compositionDeselectAll() {
+ $(".page").each(function () {
+ Sortable.utils.deselect(this);
+ });
+ }
+
+ function compositionDeleteSelection() {
+ $("#composition_pages .page.selected").each(function () {
+ compositionDeletePage(this);
+ });
+ }
+
+ function compositionDeletePage(page) {
+ Sortable.utils.deselect($(page).get(0));
+ $(page).remove();
+ }
+
function compositionIsActive() {
return $("#composition_pages .page.selected").length > 0;
}
$("#composition_pages").append('<div class="page" data-id="[' + document_id + ',' + document_page + ']"><img src="/fluidbook-publication/docs/' + document_id + '/thumb_' + document_page + '.jpg" /><span>' + pageNumber + '</span></div>');
}
+ function compositionContextMulti() {
+ return {
+ selectall: {
+ name: "{{__('Tout sélectionner')}}",
+ callback: function () {
+ compositionSelectAll()
+ },
+ },
+ sep1: "---------",
+ deleteSelection: {
+ name: "{{__('Supprimer la selection')}}",
+ callback: function (key, opt, e) {
+ compositionDeleteSelection();
+ },
+ },
+ replaceSelection: {
+ name: "{{__('Remplacer les pages de la sélection')}}",
+ callback: function () {
+
+ }
+ },
+ };
+ }
+
+ function compositionContextSimple() {
+ return {
+ selectall: {
+ name: "{{__('Tout sélectionner')}}",
+ callback: function () {
+ compositionSelectAll()
+ },
+ },
+ sep1: "---------",
+ deleteCurrent: {
+ name: "{{__('Supprimer cette page')}}",
+ callback: function (key, opt, e) {
+ compositionDeletePage(opt.$trigger[0]);
+ },
+ },
+ sep2: "---------",
+ insertBefore: {
+ name: "{{__('Insérer des pages avant')}}",
+ callback: function () {
+
+ }
+ },
+ insertAfter: {
+ name: "{{__('Insérer des pages après cette page')}}",
+ callback: function () {
+
+ }
+ },
+ sep3: "---------",
+ nonum:{
+ name:"{{__('Pas de numérotation à partir de cette page')}}",
+ callback:function(){
+
+ },
+ },
+ decnum:{
+ name:"{{__("Numérotation décimale à partir de cette page")}}",
+ callback:function(){
+
+ },
+ },
+ romannum:{
+ name:"{{__("Numérotation romaine à partir de cette page")}}",
+ callback:function(){
+
+ },
+ }
+ }
+ }
+
initPages();
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/keypress/2.1.5/keypress.min.js"
integrity="sha512-JjqUcblrwIZTQBPL/azOhVHwq5uaeXkKzq7da3JZEP14Zg926vZZVhRhBBi+L2pWYquZ6r5P8OZYDYgOChtkOw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.contextMenu.min.js"
+ integrity="sha512-kvg/Lknti7OoAw0GqMBP8B+7cGHvp4M9O9V6nAYG91FZVDMW3Xkkq5qrdMhrXiawahqU7IZ5CNsY/wWy1PpGTQ=="
+ crossorigin="anonymous" referrerpolicy="no-referrer"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.ui.position.min.js"
+ integrity="sha512-878jmOO2JNhN+hi1+jVWRBv1yNB7sVFanp2gA1bG++XFKNj4camtC1IyNi/VQEhM2tIbne9tpXD4xaPC4i4Wtg=="
+ crossorigin="anonymous" referrerpolicy="no-referrer"></script>
@endpush
@push('crud_fields_styles')
+ <link rel="stylesheet"
+ href="https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.9.2/jquery.contextMenu.min.css"
+ integrity="sha512-SWjZLElR5l3FxoO9Bt9Dy3plCWlBi1Mc9/OlojDPwryZxO0ydpZgvXMLhV6jdEyULGNWjKgZWiX/AMzIvZ4JuA=="
+ crossorigin="anonymous" referrerpolicy="no-referrer"/>
<style>
#composition {
padding: 0 10px;
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
}
+
+ .context-menu-list {
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.25);
+ border: 0;
+ }
+
+ .context-menu-item.context-menu-hover {
+ background-color: #467fcf;
+ }
</style>
+
@endpush
@endif
<div id="composition">