kms 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee.erb +1 -2
  3. data/app/assets/javascripts/templates/assets/index.html.slim +4 -12
  4. data/app/assets/javascripts/templates/help/scopes.html.slim +74 -0
  5. data/app/assets/javascripts/templates/pages/index.html.slim +4 -3
  6. data/app/assets/javascripts/templates/snippets/index.html.slim +4 -3
  7. data/app/assets/javascripts/templates/templates/index.html.slim +4 -3
  8. data/app/assets/javascripts/templates/users/index.html.slim +3 -2
  9. data/app/assets/stylesheets/kms/custom.css.scss +3 -0
  10. data/app/controllers/kms/pages_controller.rb +2 -2
  11. data/app/models/ability.rb +0 -1
  12. data/app/models/concerns/kms/positioned.rb +18 -0
  13. data/app/models/kms/page.rb +2 -12
  14. data/app/services/kms/functions_registry.rb +11 -0
  15. data/app/uploaders/kms/asset_uploader.rb +1 -1
  16. data/config/initializers/help.rb +1 -1
  17. data/config/initializers/liquor.rb +0 -47
  18. data/config/locales/en.yml +22 -0
  19. data/config/locales/ru.yml +22 -0
  20. data/lib/generators/kms/install/install_generator.rb +2 -0
  21. data/lib/generators/kms/install/templates/carrierwave.rb +14 -0
  22. data/lib/kms/dependencies.rb +2 -0
  23. data/lib/kms/engine.rb +1 -1
  24. data/lib/kms/version.rb +1 -1
  25. data/spec/controllers/kms/snippets_controller_spec.rb +6 -6
  26. data/spec/internal/log/test.log +2439 -0
  27. data/spec/services/kms/functions_registry_spec.rb +14 -0
  28. data/spec/spec_helper.rb +1 -1
  29. data/vendor/assets/bower.json +1 -1
  30. data/vendor/assets/bower_components/angular-ui-tree/CHANGELOG.md +164 -0
  31. data/vendor/assets/bower_components/angular-ui-tree/CONTRIBUTING.md +39 -0
  32. data/vendor/assets/bower_components/angular-ui-tree/README.md +145 -37
  33. data/vendor/assets/bower_components/angular-ui-tree/bower.json +28 -18
  34. data/vendor/assets/bower_components/angular-ui-tree/{source → dist}/angular-ui-tree.css +18 -16
  35. data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.js +1408 -822
  36. data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.min.css +1 -2
  37. data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.min.js +3 -3
  38. data/vendor/assets/bower_components/angular-ui-tree/e2e/basic-example/basic-example.js +81 -0
  39. data/vendor/assets/bower_components/angular-ui-tree/e2e/basic-example/page.js +42 -0
  40. data/vendor/assets/bower_components/angular-ui-tree/e2e/table-example/page.js +31 -0
  41. data/vendor/assets/bower_components/angular-ui-tree/e2e/table-example/table-example.js +34 -0
  42. data/vendor/assets/bower_components/angular-ui-tree/index.js +2 -0
  43. data/vendor/assets/bower_components/angular-ui-tree/protractor.conf.js +19 -0
  44. data/vendor/assets/bower_components/angular/angular.js +4880 -2111
  45. data/vendor/assets/bower_components/angular/angular.min.js +320 -297
  46. data/vendor/assets/bower_components/angular/angular.min.js.gzip +0 -0
  47. data/vendor/assets/bower_components/angular/angular.min.js.map +3 -3
  48. data/vendor/assets/bower_components/angular/bower.json +1 -1
  49. data/vendor/assets/bower_components/angular/package.json +1 -1
  50. metadata +32 -40
  51. data/vendor/assets/bower_components/angular-ui-tree/Gruntfile.js +0 -229
  52. data/vendor/assets/bower_components/angular-ui-tree/build/compiler.jar +0 -0
  53. data/vendor/assets/bower_components/angular-ui-tree/demo/css/demo-horizontal.css +0 -47
  54. data/vendor/assets/bower_components/angular-ui-tree/demo/css/demo.css +0 -31
  55. data/vendor/assets/bower_components/angular-ui-tree/demo/css/tree.css +0 -25
  56. data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.js +0 -1243
  57. data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.min.css +0 -2
  58. data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.min.js +0 -6
  59. data/vendor/assets/bower_components/angular-ui-tree/demo/filter.html +0 -64
  60. data/vendor/assets/bower_components/angular-ui-tree/demo/groups.html +0 -100
  61. data/vendor/assets/bower_components/angular-ui-tree/demo/index.html +0 -101
  62. data/vendor/assets/bower_components/angular-ui-tree/demo/js/demo.js +0 -63
  63. data/vendor/assets/bower_components/angular-ui-tree/demo/js/filter.js +0 -91
  64. data/vendor/assets/bower_components/angular-ui-tree/demo/js/groups.js +0 -143
  65. data/vendor/assets/bower_components/angular-ui-tree/demo/js/tree.js +0 -102
  66. data/vendor/assets/bower_components/angular-ui-tree/demo/js/trees.js +0 -60
  67. data/vendor/assets/bower_components/angular-ui-tree/demo/test.html +0 -60
  68. data/vendor/assets/bower_components/angular-ui-tree/demo/tree-horizontal.html +0 -66
  69. data/vendor/assets/bower_components/angular-ui-tree/demo/tree.html +0 -66
  70. data/vendor/assets/bower_components/angular-ui-tree/demo/trees.html +0 -92
  71. data/vendor/assets/bower_components/angular-ui-tree/guide/00_usage.ngdoc +0 -78
  72. data/vendor/assets/bower_components/angular-ui-tree/guide/01_development_setup.ngdoc +0 -58
  73. data/vendor/assets/bower_components/angular-ui-tree/guide/index.ngdoc +0 -33
  74. data/vendor/assets/bower_components/angular-ui-tree/karma.conf.js +0 -49
  75. data/vendor/assets/bower_components/angular-ui-tree/package.json +0 -40
  76. data/vendor/assets/bower_components/angular-ui-tree/source/angular-ui-tree.scss +0 -63
  77. data/vendor/assets/bower_components/angular-ui-tree/source/controllers/handleCtrl.js +0 -16
  78. data/vendor/assets/bower_components/angular-ui-tree/source/controllers/nodeCtrl.js +0 -141
  79. data/vendor/assets/bower_components/angular-ui-tree/source/controllers/nodesCtrl.js +0 -100
  80. data/vendor/assets/bower_components/angular-ui-tree/source/controllers/treeCtrl.js +0 -63
  81. data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTree.js +0 -115
  82. data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeHandle.js +0 -27
  83. data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeNode.js +0 -427
  84. data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeNodes.js +0 -59
  85. data/vendor/assets/bower_components/angular-ui-tree/source/main.js +0 -23
  86. data/vendor/assets/bower_components/angular-ui-tree/source/services/helper.js +0 -265
@@ -1,59 +0,0 @@
1
- (function () {
2
- 'use strict';
3
-
4
- angular.module('ui.tree')
5
- .directive('uiTreeNodes', [ 'treeConfig', '$window',
6
- function(treeConfig) {
7
- return {
8
- require: ['ngModel', '?^uiTreeNode', '^uiTree'],
9
- restrict: 'A',
10
- scope: true,
11
- controller: 'TreeNodesController',
12
- link: function(scope, element, attrs, controllersArr) {
13
-
14
- var config = {};
15
- angular.extend(config, treeConfig);
16
- if (config.nodesClass) {
17
- element.addClass(config.nodesClass);
18
- }
19
-
20
- var ngModel = controllersArr[0];
21
- var treeNodeCtrl = controllersArr[1];
22
- var treeCtrl = controllersArr[2];
23
- if (treeNodeCtrl) {
24
- treeNodeCtrl.scope.$childNodesScope = scope;
25
- scope.$nodeScope = treeNodeCtrl.scope;
26
- }
27
- else { // find the root nodes if there is no parent node and have a parent ui-tree
28
- treeCtrl.scope.$nodesScope = scope;
29
- }
30
- scope.$treeScope = treeCtrl.scope;
31
-
32
- if (ngModel) {
33
- ngModel.$render = function() {
34
- if (!ngModel.$modelValue || !angular.isArray(ngModel.$modelValue)) {
35
- scope.$modelValue = [];
36
- }
37
- scope.$modelValue = ngModel.$modelValue;
38
- };
39
- }
40
-
41
- scope.$watch(attrs.maxDepth, function(val) {
42
- if((typeof val) == "number") {
43
- scope.maxDepth = val;
44
- }
45
- });
46
-
47
- attrs.$observe('nodrop', function(val) {
48
- scope.nodrop = ((typeof val) != "undefined");
49
- });
50
-
51
- attrs.$observe('horizontal', function(val) {
52
- scope.horizontal = ((typeof val) != "undefined");
53
- });
54
-
55
- }
56
- };
57
- }
58
- ]);
59
- })();
@@ -1,23 +0,0 @@
1
- /**
2
- * @license Angular UI Tree v2.1.5
3
- * (c) 2010-2014. https://github.com/JimLiu/angular-ui-tree
4
- * License: MIT
5
- */
6
- (function () {
7
- 'use strict';
8
-
9
- angular.module('ui.tree', [])
10
- .constant('treeConfig', {
11
- treeClass: 'angular-ui-tree',
12
- emptyTreeClass: 'angular-ui-tree-empty',
13
- hiddenClass: 'angular-ui-tree-hidden',
14
- nodesClass: 'angular-ui-tree-nodes',
15
- nodeClass: 'angular-ui-tree-node',
16
- handleClass: 'angular-ui-tree-handle',
17
- placeHolderClass: 'angular-ui-tree-placeholder',
18
- dragClass: 'angular-ui-tree-drag',
19
- dragThreshold: 3,
20
- levelThreshold: 30
21
- });
22
-
23
- })();
@@ -1,265 +0,0 @@
1
- (function () {
2
- 'use strict';
3
-
4
- angular.module('ui.tree')
5
-
6
- /**
7
- * @ngdoc service
8
- * @name ui.tree.service:$helper
9
- * @requires ng.$document
10
- * @requires ng.$window
11
- *
12
- * @description
13
- * angular-ui-tree.
14
- */
15
- .factory('$uiTreeHelper', ['$document', '$window',
16
- function ($document, $window) {
17
- return {
18
-
19
- /**
20
- * A hashtable used to storage data of nodes
21
- * @type {Object}
22
- */
23
- nodesData: {
24
- },
25
-
26
- setNodeAttribute: function(scope, attrName, val) {
27
- var data = this.nodesData[scope.$modelValue.$$hashKey];
28
- if (!data) {
29
- data = {};
30
- this.nodesData[scope.$modelValue.$$hashKey] = data;
31
- }
32
- data[attrName] = val;
33
- },
34
-
35
- getNodeAttribute: function(scope, attrName) {
36
- var data = this.nodesData[scope.$modelValue.$$hashKey];
37
- if (data) {
38
- return data[attrName];
39
- }
40
- return null;
41
- },
42
-
43
- /**
44
- * @ngdoc method
45
- * @methodOf ui.tree.service:$nodrag
46
- * @param {Object} targetElm angular element
47
- * @return {Bool} check if the node can be dragged.
48
- */
49
- nodrag: function (targetElm) {
50
- return (typeof targetElm.attr('data-nodrag')) != "undefined";
51
- },
52
-
53
- /**
54
- * get the event object for touchs
55
- * @param {[type]} e [description]
56
- * @return {[type]} [description]
57
- */
58
- eventObj: function(e) {
59
- var obj = e;
60
- if (e.targetTouches !== undefined) {
61
- obj = e.targetTouches.item(0);
62
- } else if (e.originalEvent !== undefined && e.originalEvent.targetTouches !== undefined) {
63
- obj = e.originalEvent.targetTouches.item(0);
64
- }
65
- return obj;
66
- },
67
-
68
- dragInfo: function(node) {
69
- return {
70
- source: node,
71
- sourceInfo: {
72
- nodeScope: node,
73
- index: node.index(),
74
- nodesScope: node.$parentNodesScope
75
- },
76
- index: node.index(),
77
- siblings: node.siblings().slice(0),
78
- parent: node.$parentNodesScope,
79
-
80
- moveTo: function(parent, siblings, index) { // Move the node to a new position
81
- this.parent = parent;
82
- this.siblings = siblings.slice(0);
83
- var i = this.siblings.indexOf(this.source); // If source node is in the target nodes
84
- if (i > -1) {
85
- this.siblings.splice(i, 1);
86
- if (this.source.index() < index) {
87
- index--;
88
- }
89
- }
90
- this.siblings.splice(index, 0, this.source);
91
- this.index = index;
92
- },
93
-
94
- parentNode: function() {
95
- return this.parent.$nodeScope;
96
- },
97
-
98
- prev: function() {
99
- if (this.index > 0) {
100
- return this.siblings[this.index - 1];
101
- }
102
- return null;
103
- },
104
-
105
- next: function() {
106
- if (this.index < this.siblings.length - 1) {
107
- return this.siblings[this.index + 1];
108
- }
109
- return null;
110
- },
111
-
112
- isDirty: function() {
113
- return this.source.$parentNodesScope != this.parent ||
114
- this.source.index() != this.index;
115
- },
116
-
117
- eventArgs: function(elements, pos) {
118
- return {
119
- source: this.sourceInfo,
120
- dest: {
121
- index: this.index,
122
- nodesScope: this.parent
123
- },
124
- elements: elements,
125
- pos: pos
126
- };
127
- },
128
-
129
- apply: function() {
130
- var nodeData = this.source.$modelValue;
131
- this.source.remove();
132
- this.parent.insertNode(this.index, nodeData);
133
- }
134
- };
135
- },
136
-
137
- /**
138
- * @ngdoc method
139
- * @name hippo.theme#height
140
- * @methodOf ui.tree.service:$helper
141
- *
142
- * @description
143
- * Get the height of an element.
144
- *
145
- * @param {Object} element Angular element.
146
- * @returns {String} Height
147
- */
148
- height: function (element) {
149
- return element.prop('scrollHeight');
150
- },
151
-
152
- /**
153
- * @ngdoc method
154
- * @name hippo.theme#width
155
- * @methodOf ui.tree.service:$helper
156
- *
157
- * @description
158
- * Get the width of an element.
159
- *
160
- * @param {Object} element Angular element.
161
- * @returns {String} Width
162
- */
163
- width: function (element) {
164
- return element.prop('scrollWidth');
165
- },
166
-
167
- /**
168
- * @ngdoc method
169
- * @name hippo.theme#offset
170
- * @methodOf ui.nestedSortable.service:$helper
171
- *
172
- * @description
173
- * Get the offset values of an element.
174
- *
175
- * @param {Object} element Angular element.
176
- * @returns {Object} Object with properties width, height, top and left
177
- */
178
- offset: function (element) {
179
- var boundingClientRect = element[0].getBoundingClientRect();
180
-
181
- return {
182
- width: element.prop('offsetWidth'),
183
- height: element.prop('offsetHeight'),
184
- top: boundingClientRect.top + ($window.pageYOffset || $document[0].body.scrollTop || $document[0].documentElement.scrollTop),
185
- left: boundingClientRect.left + ($window.pageXOffset || $document[0].body.scrollLeft || $document[0].documentElement.scrollLeft)
186
- };
187
- },
188
-
189
- /**
190
- * @ngdoc method
191
- * @name hippo.theme#positionStarted
192
- * @methodOf ui.tree.service:$helper
193
- *
194
- * @description
195
- * Get the start position of the target element according to the provided event properties.
196
- *
197
- * @param {Object} e Event
198
- * @param {Object} target Target element
199
- * @returns {Object} Object with properties offsetX, offsetY, startX, startY, nowX and dirX.
200
- */
201
- positionStarted: function (e, target) {
202
- var pos = {};
203
- pos.offsetX = e.pageX - this.offset(target).left;
204
- pos.offsetY = e.pageY - this.offset(target).top;
205
- pos.startX = pos.lastX = e.pageX;
206
- pos.startY = pos.lastY = e.pageY;
207
- pos.nowX = pos.nowY = pos.distX = pos.distY = pos.dirAx = 0;
208
- pos.dirX = pos.dirY = pos.lastDirX = pos.lastDirY = pos.distAxX = pos.distAxY = 0;
209
- return pos;
210
- },
211
-
212
- positionMoved: function (e, pos, firstMoving) {
213
- // mouse position last events
214
- pos.lastX = pos.nowX;
215
- pos.lastY = pos.nowY;
216
-
217
- // mouse position this events
218
- pos.nowX = e.pageX;
219
- pos.nowY = e.pageY;
220
-
221
- // distance mouse moved between events
222
- pos.distX = pos.nowX - pos.lastX;
223
- pos.distY = pos.nowY - pos.lastY;
224
-
225
- // direction mouse was moving
226
- pos.lastDirX = pos.dirX;
227
- pos.lastDirY = pos.dirY;
228
-
229
- // direction mouse is now moving (on both axis)
230
- pos.dirX = pos.distX === 0 ? 0 : pos.distX > 0 ? 1 : -1;
231
- pos.dirY = pos.distY === 0 ? 0 : pos.distY > 0 ? 1 : -1;
232
-
233
- // axis mouse is now moving on
234
- var newAx = Math.abs(pos.distX) > Math.abs(pos.distY) ? 1 : 0;
235
-
236
- // do nothing on first move
237
- if (firstMoving) {
238
- pos.dirAx = newAx;
239
- pos.moving = true;
240
- return;
241
- }
242
-
243
- // calc distance moved on this axis (and direction)
244
- if (pos.dirAx !== newAx) {
245
- pos.distAxX = 0;
246
- pos.distAxY = 0;
247
- } else {
248
- pos.distAxX += Math.abs(pos.distX);
249
- if (pos.dirX !== 0 && pos.dirX !== pos.lastDirX) {
250
- pos.distAxX = 0;
251
- }
252
-
253
- pos.distAxY += Math.abs(pos.distY);
254
- if (pos.dirY !== 0 && pos.dirY !== pos.lastDirY) {
255
- pos.distAxY = 0;
256
- }
257
- }
258
-
259
- pos.dirAx = newAx;
260
- }
261
- };
262
- }
263
- ]);
264
-
265
- })();