Index: lams_central/web/includes/javascript/authoring/authoringActivity.js =================================================================== diff -u -rc04a08a8c803d06128f04bce56b4ecdf9ba422c7 -r13656a17eca2fd32f6c39afa912bb01336582258 --- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision c04a08a8c803d06128f04bce56b4ecdf9ba422c7) +++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 13656a17eca2fd32f6c39afa912bb01336582258) @@ -378,8 +378,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', @@ -418,8 +418,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) { @@ -472,8 +472,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', @@ -517,8 +517,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', @@ -559,8 +559,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) { @@ -619,8 +619,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 @@ -676,8 +676,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 -r4bea78d244f7b7699ee333a1f19f4a31e3b2bb74 -r13656a17eca2fd32f6c39afa912bb01336582258 --- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 4bea78d244f7b7699ee333a1f19f4a31e3b2bb74) +++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 13656a17eca2fd32f6c39afa912bb01336582258) @@ -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' : { @@ -3306,5 +3307,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 -r4bea78d244f7b7699ee333a1f19f4a31e3b2bb74 -r13656a17eca2fd32f6c39afa912bb01336582258 --- lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision 4bea78d244f7b7699ee333a1f19f4a31e3b2bb74) +++ lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision 13656a17eca2fd32f6c39afa912bb01336582258) @@ -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) {