From c117f2fcbd89a44ecfdecf570d933f33cdf21695 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 9 Sep 2022 19:00:40 +0200 Subject: [PATCH] wip #5443 @1.5 --- app/Models/FluidbookPublication.php | 6 ++ app/Util/FluidbookLinks.php | 21 ++++- .../fluidbook/toolbox/css/linkeditor.css | 14 +-- .../fluidbook/toolbox/css/linkeditor.css.map | 2 +- .../fluidbook/toolbox/css/linkeditor.less | 25 +++-- .../fluidbook/toolbox/js/linkeditor.js | 92 +++++++++++++++++-- .../link_editor.blade.php | 3 + 7 files changed, 138 insertions(+), 25 deletions(-) diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index b6015af20..8a12f84ce 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -16,6 +16,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\EditOperation; use App\Models\Base\ToolboxSettingsModel; use App\Models\Traits\PublicationSettings; use App\Models\Traits\SCORMVersionTrait; +use App\Util\FluidbookLinks; use Backpack\CRUD\app\Library\Widget; use Cubist\Backpack\Magic\Fields\FormBigSection; use Cubist\Backpack\Magic\Fields\FormSuperSection; @@ -315,6 +316,11 @@ class FluidbookPublication extends ToolboxSettingsModel } } + public function getLinksAndRulers(&$links, &$rulers) + { + FluidbookLinks::getLinksAndRulers($this->id,$links,$rulers); + } + /** * @return array diff --git a/app/Util/FluidbookLinks.php b/app/Util/FluidbookLinks.php index d73baf397..23569a361 100644 --- a/app/Util/FluidbookLinks.php +++ b/app/Util/FluidbookLinks.php @@ -6,6 +6,7 @@ use Cubist\Util\ArrayUtil; use Cubist\Util\Crypt; use Cubist\Util\Files\Files; use Cubist\Util\ObjectUtil; +use Cubist\Util\Str; use SodiumException; class FluidbookLinks @@ -148,11 +149,27 @@ class FluidbookLinks $r = json_decode(gzdecode(file_get_contents($file)), true); $links = $r['links']; - $rulers = $r['rulers']; - + $rulers = self::_rulersUID($r['rulers']); self::_correctImageSpecialLinks($links); } + protected static function _rulersUID($rulers) + { + $res = []; + foreach ($rulers as $ruler) { + if (!isset($ruler['uid'])) { + $ruler['uid'] = self::uid(); + } + $res[$ruler['uid']] = $ruler; + } + return $res; + } + + protected static function uid() + { + return Str::lower(Str::random(12)); + } + protected static function _correctImageSpecialLinks(&$links) { foreach ($links as $k => $link) { diff --git a/public/packages/fluidbook/toolbox/css/linkeditor.css b/public/packages/fluidbook/toolbox/css/linkeditor.css index cd15033e7..557bcd3be 100644 --- a/public/packages/fluidbook/toolbox/css/linkeditor.css +++ b/public/packages/fluidbook/toolbox/css/linkeditor.css @@ -68,22 +68,24 @@ html { } #linkeditor #linkeditor-main #linkeditor-editor .ruler[data-axis="x"] { width: 0px; - height: 100%; + height: calc( 100% - 16px); border-left-width: 1px; cursor: col-resize; + top: 16px; } #linkeditor #linkeditor-main #linkeditor-editor .ruler[data-axis="x"]:after { - left: -5px; - width: 10px; + left: -2px; + width: 4px; } #linkeditor #linkeditor-main #linkeditor-editor .ruler[data-axis="y"] { border-bottom-width: 1px; height: 0px; - width: 100%; + width: calc( 100% - 16px); + left: 16px; } #linkeditor #linkeditor-main #linkeditor-editor .ruler[data-axis="y"]:after { - top: -5px; - height: 10px; + top: -2px; + height: 4px; cursor: row-resize; } #linkeditor #linkeditor-main #linkeditor-editor #linkeditor-rulers { diff --git a/public/packages/fluidbook/toolbox/css/linkeditor.css.map b/public/packages/fluidbook/toolbox/css/linkeditor.css.map index 9496d2a24..c2388b4fb 100644 --- a/public/packages/fluidbook/toolbox/css/linkeditor.css.map +++ b/public/packages/fluidbook/toolbox/css/linkeditor.css.map @@ -1 +1 @@ -{"version":3,"sources":["linkeditor.less"],"names":[],"mappings":"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","file":"linkeditor.css"} \ No newline at end of file +{"version":3,"sources":["linkeditor.less"],"names":[],"mappings":"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","file":"linkeditor.css"} \ No newline at end of file diff --git a/public/packages/fluidbook/toolbox/css/linkeditor.less b/public/packages/fluidbook/toolbox/css/linkeditor.less index d7e476089..a36e6745c 100644 --- a/public/packages/fluidbook/toolbox/css/linkeditor.less +++ b/public/packages/fluidbook/toolbox/css/linkeditor.less @@ -47,6 +47,7 @@ body, #linkeditor, html { height: ~"calc( 100% - 51px)"; width: 100%; + @ruler-margin: 2px; .ruler { position: absolute; @@ -57,11 +58,11 @@ body, #linkeditor, html { border-color: #0f0; border-style: solid; - &:after{ + &:after { position: absolute; content: ""; display: block; - height:100%; + height: 100%; width: 100%; } @@ -75,22 +76,26 @@ body, #linkeditor, html { &[data-axis="x"] { width: 0px; - height: 100%; + height: ~"calc( 100% - @{rulers-size})"; border-left-width: 1px; cursor: col-resize; - &:after{ - left:-5px; - width: 10px; + top:@rulers-size; + + &:after { + left: @ruler-margin*-1; + width: @ruler-margin*2; } } &[data-axis="y"] { border-bottom-width: 1px; height: 0px; - width: 100%; - &:after{ - top:-5px; - height: 10px; + width: ~"calc( 100% - @{rulers-size})"; + left:@rulers-size; + + &:after { + top: @ruler-margin*-1; + height: @ruler-margin*2; cursor: row-resize; } } diff --git a/public/packages/fluidbook/toolbox/js/linkeditor.js b/public/packages/fluidbook/toolbox/js/linkeditor.js index 4a20f0f2e..28f49fd6c 100644 --- a/public/packages/fluidbook/toolbox/js/linkeditor.js +++ b/public/packages/fluidbook/toolbox/js/linkeditor.js @@ -10,6 +10,7 @@ $(function () { var zoomdragging = false; var dividers = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000]; var fluidbookRect, canvasRect, editorRect; + var currentPage; var movingRuler = null; @@ -30,11 +31,13 @@ $(function () { $("#linkeditor-canvas").addClass('grab'); return false; } + moveRuler(); }); $(window).on('keyup', function (e) { if (e.keyCode == 32) { resetZoomDrag(); } + moveRuler(); }); $("#linkeditor-canvas").on('scroll', function () { @@ -117,9 +120,30 @@ $(function () { changePage(); } - function addRuler(axis) { - movingRuler = $('
'); - $("#linkeditor-editor").append(movingRuler); + function generateUID() { + var length = 12; + var result = ''; + var characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; + var charactersLength = characters.length; + for (var i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; + } + + function addRuler(axis, pos, uid) { + if (undefined === uid) { + uid = generateUID(); + RULERS[uid] = {page: currentPage, type: axis, uid: uid}; + } + var ruler = $('
'); + if (pos === undefined) { + movingRuler = ruler; + } else { + var dim = axis == 'x' ? 'left' : 'top'; + $(ruler).attr('fb-' + dim, pos); + } + $("#linkeditor-editor").append(ruler); moveRuler(); } @@ -127,6 +151,8 @@ $(function () { if (ruler === undefined) { ruler = movingRuler; } + var uid = $(ruler).data('uid'); + delete RULERS[uid]; $(ruler).remove(); movingRuler = null; } @@ -135,17 +161,18 @@ $(function () { if (movingRuler === null || movingRuler === undefined) { return; } + var magnet = !key.ctrl; var editorMouse = globalToEditor(mx, my); var fbMouse = globalToFluidbook(mx, my, false); var css = {}; var attrs = {}; - var v; + var v, fbv; if ($(movingRuler).data('axis') === 'x') { v = editorMouse.x; - attrs['fb-left'] = fbMouse.x; + fbv = attrs['fb-left'] = magnet ? magnetize(fbMouse.x, getRulersMagnetValues('x')) : fbMouse.x; } else { v = editorMouse.y; - attrs['fb-top'] = fbMouse.y; + fbv = attrs['fb-top'] = magnet ? magnetize(fbMouse.y, getRulersMagnetValues('y')) : fbMouse.y; } if (v < 16) { $(movingRuler).addClass('pending-delete'); @@ -153,9 +180,44 @@ $(function () { $(movingRuler).removeClass('pending-delete'); } $(movingRuler).css(css).attr(attrs); + RULERS[$(movingRuler).data('uid')].pos = fbv; updateFBElements(); } + function magnetize(value, values) { + var sensibility = 8 / (zoom * fs); + var min = 100000; + var magnetValue; + if (values.length === 0) { + return value; + } + + for (var i in values) { + var v = values[i]; + var diff = Math.abs(v - value); + if (diff < min) { + min = diff; + magnetValue = v; + } + } + + if (min > sensibility) { + return value; + } + return magnetValue; + } + + function getRulersMagnetValues(axis) { + var res = [0]; + if (axis === 'x') { + res.push(pw); + res.push(pw * 2); + } else { + res.push(ph); + } + return res; + } + function updateFBElements() { var dims = ['left', 'top', 'width', 'height']; $('[fb-ref]').each(function () { @@ -280,6 +342,7 @@ $(function () { if (page % 2 === 1 && !single) { page--; } + currentPage = page; loadPage(page, 'left'); if (!single) { loadPage(page + 1, 'right'); @@ -318,11 +381,28 @@ $(function () { function loadPage(p, side) { var container = $("#linkeditor-page-" + side); + $(container).attr('data-page', p) + if (p === 0 || p > FLUIDBOOK_DATA.settings.pages) { $(container).html(''); } else { $(container).html('') } + loadLinks(p, side); + loadRulers(p, side); + } + + function loadLinks(page, side) { + + } + + function loadRulers(page, side) { + $.each(RULERS, function (uid, ruler) { + if (ruler.page != page) { + return; + } + addRuler(ruler.type, ruler.pos, ruler.uid); + }); } function resize() { diff --git a/resources/views/fluidbook_publication/link_editor.blade.php b/resources/views/fluidbook_publication/link_editor.blade.php index e40fdad5d..d2f69a6f0 100644 --- a/resources/views/fluidbook_publication/link_editor.blade.php +++ b/resources/views/fluidbook_publication/link_editor.blade.php @@ -1,5 +1,6 @@ @php $title='#'.$id.' - '.__('Editeur de liens'); + $fluidbook->getLinksAndRulers($links,$rulers); @endphp @extends('layouts.empty') @@ -30,6 +31,8 @@ @push('after_scripts')