use Cubist\Backpack\Magic\Fields\FormSection;
use Cubist\Backpack\Magic\Fields\FormSeparator;
use Cubist\Backpack\Magic\Fields\FormSuperSection;
+use Cubist\Backpack\Magic\Fields\Hidden;
use Cubist\Backpack\Magic\Fields\Integer;
use Cubist\Backpack\Magic\Fields\LongText;
use Cubist\Backpack\Magic\Fields\Number;
'store_in' => 'settings',
'translatable' => false,
]);
- $this->addField('rasterizePages', Textarea::class, $this->__('Ecraser les pages'), [
+ $this->addField('rasterizePages', Hidden::class, $this->__('Ecraser les pages'), [
'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Ecraser les pages!\\u00a7!","hint":"1-3,5 = 1,2,3,5","grade":1}',
'hint' => '1-3,5 = 1,2,3,5',
'default' => '',
'store_in' => 'settings',
'translatable' => false,
]);
- $this->addField('vectorPages', Textarea::class, $this->__('Conserver les pages en vecteur'), [
+ $this->addField('vectorPages', Hidden::class, $this->__('Conserver les pages en vecteur'), [
'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Conserver les pages en vecteur!\\u00a7!","hint":"1-3,5 = 1,2,3,5","grade":1}',
'hint' => '1-3,5 = 1,2,3,5',
'default' => '',
var data = JSON.parse($("#compositionField").val());
var numbers = $('input[name="page_numbers"]').val().split(',');
var sizes = $("#compositionField").data('doc-sizes');
-
+ var vectors = parseRange($('input[name="vectorPages"]').val());
+ var rasters = parseRange($('input[name="rasterizePages"]').val());
$.each(data, function (pageNr, page) {
+ pageNr = parseInt(pageNr);
var size = sizes[page[0]];
if (size === undefined) {
size = [210, 297]
}
- addPage(page[0], page[1], numbers[pageNr - 1], size);
+ var conversion = rasters.indexOf(pageNr) >= 0 ? 'raster' : (vectors.indexOf(pageNr) >= 0 ? 'vector' : 'default');
+ addPage(page[0], page[1], numbers[pageNr - 1], conversion, size);
});
var composition = $('#composition_pages').get(0);
}
});
- // $(document).on('blur', '#pagenumber_input', function () {
- // $("#pagenumber_input").remove();
- // });
-
$(document).on('change blur', '#pagenumber_input', function () {
var v = $(this).val();
function updateComposition() {
var res = {};
var numbers = [];
+ var raster = [];
+ var vector = [];
var i = 1;
$("#composition_pages .page").each(function () {
res[i] = $(this).data('id');
numbers.push($(this).find('span').text());
+ switch ($(this).attr('data-conversion')) {
+ case 'raster':
+ raster.push($(this).index() + 1);
+ break;
+ case 'vector':
+ vector.push($(this).index() + 1);
+ break;
+ default:
+ break;
+ }
i++;
});
- $("#compositionField").val(JSON.stringify(res));
+ $("#compositionFiel").val(JSON.stringify(res));
$('input[name="page_numbers"]').val(numbers.join(','));
+ $('input[name="vectorPages"]').val(vector.join(','));
+ $('input[name="rasterizePages"]').val(raster.join(','));
}
function compositionSelectAll() {
return $("#composition_pages .page.selected").length > 0;
}
- function addPage(document_id, document_page, pageNumber, size, selector, operation) {
+ function addPage(document_id, document_page, pageNumber, conversion, size, selector, operation) {
if (selector === undefined) {
selector = "#composition_pages";
}
if (operation === undefined) {
operation = 'append';
}
- $(selector)[operation](getPage(document_id, document_page, pageNumber, size));
+ $(selector)[operation](getPage(document_id, document_page, pageNumber, conversion, size));
}
- function getPage(document_id, document_page, pageNumber, size) {
- return '<div class="page" data-id="[' + document_id + ',' + document_page + ']"><div class="handle"><img width="' + size[0] + '" height="' + size[1] + '" src="/fluidbook-publication/docs/' + document_id + '/thumb_' + document_page + '.jpg" /></div><span>' + pageNumber + '</span></div>';
+ function getPage(document_id, document_page, pageNumber, conversion, size) {
+ return '<div class="page" data-conversion="' + conversion + '" data-id="[' + document_id + ',' + document_page + ']"><div class="handle"><img width="' + size[0] + '" height="' + size[1] + '" src="/fluidbook-publication/docs/' + document_id + '/thumb_' + document_page + '.jpg" /></div><span>' + pageNumber + '</span></div>';
}
function addPages(pages, selector, operation) {
var p = '';
$.each(pages, function (k, v) {
- p += getPage(v.document_id, v.document_page, v.pageNumber, v.size);
+ p += getPage(v.document_id, v.document_page, v.pageNumber, 'default', v.size);
});
if (selector === undefined) {
selector = "#composition_pages";
$("#compositionUploadBrowse").click();
}
- function compositionContextMulti() {
+ function compositionContextConversionSettings() {
return {
+ sepconvset: "---------",
+ foldconversion: {
+ name: "{{__('Paramètres de conversion')}}",
+ items: {
+ conversiondefault: {
+ name: "{{__('Textes en vecteur')}}",
+ callback: function (key, opt) {
+ compositionConversion('default');
+ },
+ },
+ conversionraster: {
+ name: "{{__('Tout image')}}",
+ callback: function (key, opt) {
+ compositionConversion('raster');
+ },
+ },
+ conversionvector: {
+ name: "{{__('Tout vecteur')}}",
+ callback: function (key, opt) {
+ compositionConversion('vector');
+ },
+ },
+ }
+ }
+ }
+ }
+
+ function compositionConversion(type) {
+ $.each(selected, function (k, v) {
+ $(v).attr('data-conversion', type);
+ });
+ updateComposition();
+ }
+
+ function compositionContextMulti() {
+ return $.extend({
selectall: {
name: "{{__('Tout sélectionner')}}",
callback: function (key, opt) {
compositionBrowse('replace', selection);
}
},
- };
+
+ }, compositionContextConversionSettings());
}
function getSelectedPages() {
}
function compositionContextSimple() {
- return {
+ return $.extend({
selectall: {
name: "{{__('Tout sélectionner')}}",
callback: function (key, opt) {
},
},
- }
+ }, compositionContextConversionSettings());
}
function getPageNumber() {
$(".pdfselected").removeClass('pdfselected');
}
+ function parseRange(string) {
+ if (string === undefined) {
+ return [];
+ }
+ string = string.replace(/;/g, ',');
+ let res = [];
+ let m;
+
+ for (let str of string.split(",").map((str) => str.trim())) {
+ // just a number
+ if (/^-?\d+$/.test(str)) {
+ res.push(parseInt(str, 10));
+ } else if (
+ (m = str.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/))
+ ) {
+ // 1-5 or 1..5 (equivalent) or 1...5 (doesn't include 5)
+ let [_, lhs, sep, rhs] = m;
+
+ if (lhs && rhs) {
+ lhs = parseInt(lhs);
+ rhs = parseInt(rhs);
+ const incr = lhs < rhs ? 1 : -1;
+
+ // Make it inclusive by moving the right 'stop-point' away by one.
+ if (sep === "-" || sep === ".." || sep === "\u2025") rhs += incr;
+
+ for (let i = lhs; i !== rhs; i += incr) res.push(i);
+ }
+ }
+ }
+
+ return res;
+ }
+
initPages();
});
</script>