Index: lams_central/web/includes/javascript/authoring/authoringActivity.js =================================================================== diff -u -r5d0d3fea5694d85ba9349542131cfde7f405c09d -r8d91b3922dc824dce91e06d54afa10fae0046808 --- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 5d0d3fea5694d85ba9349542131cfde7f405c09d) +++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 8d91b3922dc824dce91e06d54afa10fae0046808) @@ -384,8 +384,8 @@ this.items.remove(); } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); // create activity SVG elements var shape = paper.path(Snap.format('M {x} {y} a 8 8 0 1 0 16 0 a 8 8 0 1 0 -16 0', @@ -424,8 +424,8 @@ y = this.items.getBBox().y; } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); // either check what children are on canvas or use the priovided parameter if (childActivities) { @@ -478,8 +478,8 @@ this.items.remove(); } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); // create activity SVG elements var shape = paper.path(Snap.format('M {x} {y} l-9 9 v16 l9 9 h16 l9 -9 v-16 l-9 -9 z', @@ -523,8 +523,8 @@ this.items.remove(); } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); // create activity SVG elements var shape = paper.path(Snap.format('M {x} {y} h 125 v 50 h -125 z', @@ -565,8 +565,8 @@ y = this.items.getBBox().y; } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); // either check what children are on canvas or use the priovided parameter if (childActivities) { @@ -625,8 +625,8 @@ y = this.items ? this.items.getBBox().y : 0; } - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); if (this.childActivities && this.childActivities.length > 0) { // draw one by one, vertically @@ -682,8 +682,8 @@ } if (!skipSnapToGrid) { - x = Snap.snapTo(layout.conf.snapGridX, x, layout.conf.snapGridX / 2); - y = Snap.snapTo(layout.conf.snapGridY, y, layout.conf.snapGridY / 2); + x = GeneralLib.snapToGrid(x); + y = GeneralLib.snapToGrid(y); } // create activity SVG elements Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js =================================================================== diff -u -rca9b0a623a0482a1a9144a3f4309622c37c6fc65 -r8d91b3922dc824dce91e06d54afa10fae0046808 --- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision ca9b0a623a0482a1a9144a3f4309622c37c6fc65) +++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 8d91b3922dc824dce91e06d54afa10fae0046808) @@ -75,12 +75,13 @@ // will be initialised when paper gets created 'readOnlyFilter' : null, - - - + }, + + 'snapToGrid' : { // snapping grid step when dragging an activity - 'snapGridX' : 100, - 'snapGridY' : 150 + 'step' : 40, + 'padding' : 20, + 'offset' : 10 }, 'activity' : { @@ -3394,5 +3395,10 @@ */ validateName : function(name) { return name && GeneralLib.nameValidator.test(name); + }, + + snapToGrid : function(input, skipPadding) { + var snapped = Snap.snapTo(layout.snapToGrid.step, input, layout.snapToGrid.step / 2); + return skipPadding ? snapped : (Math.max(snapped, layout.snapToGrid.padding) + layout.snapToGrid.offset); } }; Index: lams_central/web/includes/javascript/authoring/authoringHandler.js =================================================================== diff -u -rca9b0a623a0482a1a9144a3f4309622c37c6fc65 -r8d91b3922dc824dce91e06d54afa10fae0046808 --- lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision ca9b0a623a0482a1a9144a3f4309622c37c6fc65) +++ lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision 8d91b3922dc824dce91e06d54afa10fae0046808) @@ -160,13 +160,9 @@ * Moves dragged elements on the canvas. */ dragItemsMoveHandler : function(object, event, startX, startY) { - var dx = event.pageX - startX, - dy = event.pageY - startY; - - - dx = Snap.snapTo(100, dx, 50); - dy = Snap.snapTo(100, dy, 50); - + var dx = GeneralLib.snapToGrid(event.pageX - startX, true), + dy = GeneralLib.snapToGrid(event.pageY - startY, true); + object.items.transform('t' + dx + ' ' + dy); if (object.transitions) {