kms 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,78 +0,0 @@
1
- @ngdoc overview
2
- @name Usage
3
- @description
4
-
5
- # Usage
6
-
7
- In this section we will give step-by-step instructions on how you get
8
- up and running with Angular-NestedSortable in just a few steps.
9
-
10
- ## 1. Download Angular-NestedSortable
11
-
12
- You can install the `Angular-NestedSortable` package very easily using Bower. After
13
- installing Bower on your machine, simply run:
14
-
15
- ```
16
- $ bower install Angular-NestedSortable
17
- ```
18
-
19
- ## 2. Include the sources
20
-
21
- Load the file `angular-nested-sortable.js` in your application.
22
-
23
- ````
24
- <script type="text/javascript" src="bower_components/angular-nested-sortable/angular-nested-sortable.js"></script>
25
- ````
26
-
27
- ## 3. Add dependency to your AngularJS application
28
-
29
- Add the sortable module as a dependency to your application module.
30
-
31
- ````
32
- var app = angular.module('MyApp', ['ui.nestedSortable'])
33
- ````
34
-
35
- ## 4. Setup the NestedSortable template
36
-
37
- You have all the freedom when creating the HTML for your NestedSortable tree component.
38
- It's up to you to choose the elements you want to use, you only need to include the Angular-NestedSortable controllers.
39
-
40
- ### Example 1
41
-
42
- Tree with one level nesting supports.
43
-
44
- ````
45
- <ol ui-nested-sortable="" ng-model="list">
46
- <li ng-repeat="item in list" ui-nested-sortable-item="">
47
- <div ui-nested-sortable-handle>
48
- {{item.title}}
49
- </div>
50
- <ol ui-nested-sortable="" ng-model="item.items">
51
- <li ng-repeat="subItem in item.items" ui-nested-sortable-item="">
52
- <div ui-nested-sortable-handle>
53
- {{subItem.title}}
54
- </div>
55
- </li>
56
- </ol>
57
- </li>
58
- </ol>
59
- ````
60
-
61
- ### Example 2
62
-
63
- Support unlimited nesting using a template for the menu items.
64
-
65
- ````
66
- <script type="text/ng-template" id="items_renderer.html">
67
- <div ui-nested-sortable-handle>
68
- {{item.title}}
69
- </div>
70
- <ol ui-nested-sortable="options" ng-model="item.items">
71
- <li ng-repeat="item in item.items" ui-nested-sortable-item="" ng-include="'items_renderer.html'"></li>
72
- </ol>
73
- </script>
74
-
75
- <ol ui-nested-sortable="options" ng-model="list" id="nested-sortable-root">
76
- <li ng-repeat="item in list" ui-nested-sortable-item="" ng-include="'items_renderer.html'"></li>
77
- </ol>
78
- ````
@@ -1,58 +0,0 @@
1
- @ngdoc overview
2
- @name Development setup
3
- @description
4
-
5
- # Development environment setup
6
-
7
- ## Prerequisites
8
-
9
- * [Node Package Manager](https://npmjs.org/) (NPM)
10
- * [Git](http://git-scm.com/)
11
-
12
- ## Dependencies
13
-
14
- * [Grunt](http://gruntjs.com/) (task automation)
15
- * [Bower](http://bower.io/) (package management)
16
-
17
- ## Installation
18
-
19
- Run the commands below in the project root directory.
20
-
21
- ###1. Install Grunt and Bower
22
-
23
- $ sudo npm install -g grunt-cli bower
24
-
25
- ###2. Install project dependencies
26
-
27
- $ npm install
28
- $ bower install
29
-
30
- ## Useful commands
31
-
32
- ### Running a local webserver
33
- To debug code and run end-to-end tests, it is often useful to have a local HTTP server. For this purpose, we have made available a local web server based on Node.js.
34
-
35
- To start the web server, run:
36
-
37
- $ grunt webserver
38
-
39
- To access the local server, enter the following URL into your web browser:
40
-
41
- http://localhost:8080/demo/
42
-
43
- By default, it serves the contents of the demo project.
44
-
45
-
46
- ### Build source
47
-
48
- To build Angular-NestedSortable, use the following command.
49
-
50
- $ grunt build
51
-
52
- This will generate a concatenated- and minified JavaScript file in the `dist` directory.
53
-
54
- ### Run tests
55
- You can run the tests once or choose to run them continuously.
56
-
57
- $ grunt test
58
- $ grunt test:continuous
@@ -1,33 +0,0 @@
1
- @ngdoc overview
2
- @name Guide
3
- @description
4
-
5
- # Angular NestedSortable
6
-
7
- <br>
8
- Angular NestedSortable is an AngularJS UI component that can sort nested lists,
9
- provides drag &amp; drop support and doesn't depend on jQuery.
10
-
11
- ## Features
12
-
13
- - Uses the native AngularJS scope for data binding
14
- - Sorted and move items through the entire tree
15
- - Prevent elements from accepting child nodes
16
-
17
- If you like the module and use it in your projects, make it public on
18
- [ngmodules](http://ngmodules.org/modules/Angular-NestedSortable) and click the "_I use it_" button!
19
-
20
- ## Browser support
21
-
22
- The Angular NestedSortable is tested with the following browsers:
23
-
24
- - Chrome (stable)
25
- - Firefox
26
- - IE 8, 9 and 10
27
-
28
- For IE8 support, make sure you do the following:
29
-
30
- - include an [ES5 shim](https://github.com/es-shims/es5-shim)
31
- - make your [AngularJS application compatible with Internet Explorer](http://docs.angularjs.org/guide/ie)
32
- - use [jQuery 1.x](http://jquery.com/browser-support/)
33
-
@@ -1,49 +0,0 @@
1
- module.exports = function(config) {
2
- 'use strict';
3
-
4
- var cfg = {
5
- bowerComponents: 'demo/bower_components'
6
- };
7
-
8
- config.set({
9
- basePath: '',
10
- frameworks: ['jasmine'],
11
-
12
- // files to load in the browser
13
- files: [
14
- // components
15
- cfg.bowerComponents + '/jquery/dist/jquery.js',
16
- cfg.bowerComponents + '/jasmine-jquery/lib/jasmine-jquery.js',
17
- cfg.bowerComponents + '/angular/angular.js',
18
- cfg.bowerComponents + '/angular-mocks/angular-mocks.js',
19
-
20
- // source files
21
- 'source/main.js',
22
- 'source/**/*.js',
23
-
24
- // tests
25
- 'tests/**/*.spec.js'
26
- ],
27
-
28
- // generate js files from html templates to expose them during testing
29
- preprocessors: {
30
- '**/*.html': 'ng-html2js'
31
- },
32
-
33
- // https://github.com/karma-runner/karma-ng-html2js-preprocessor#configuration
34
- ngHtml2JsPreprocessor: {
35
- // setting this option will create only a single module that contains templates
36
- // from all the files, so you can load them all with module('foo')
37
- },
38
-
39
- // files to exclude
40
- exclude: [],
41
-
42
- // level of logging
43
- // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
44
- logLevel: config.LOG_INFO,
45
-
46
- port: 9876,
47
- reporters: 'dots'
48
- });
49
- };
@@ -1,40 +0,0 @@
1
- {
2
- "name": "Angular-NestedSortable",
3
- "version": "2.1.5",
4
- "dependencies": {
5
- "grunt": "~0.4.2",
6
- "grunt-contrib-jshint": "~0.8.0",
7
- "load-grunt-tasks": "~0.2.1"
8
- },
9
- "devDependencies": {
10
- "bower": "~1.2.6",
11
- "jshint-stylish": "~0.1.5",
12
- "grunt-contrib-clean": "~0.5.0",
13
- "grunt-contrib-copy": "~0.4.1",
14
- "grunt-contrib-watch": "~0.5.3",
15
- "grunt-contrib-uglify": "~0.3.2",
16
- "grunt-closure-compiler": "~0.0.21",
17
- "grunt-contrib-concat": "~0.3.0",
18
- "grunt-open": "~0.2.3",
19
- "grunt-contrib-connect": "~0.6.0",
20
- "karma-script-launcher": "~0.1.0",
21
- "karma-chrome-launcher": "~0.1.2",
22
- "karma-firefox-launcher": "~0.1.3",
23
- "karma-ng-html2js-preprocessor": "~0.1.0",
24
- "grunt-html2js": "~0.2.4",
25
- "grunt-karma": "~0.6.2",
26
- "karma-phantomjs-launcher": "~0.1.2",
27
- "karma-html2js-preprocessor": "~0.1.0",
28
- "karma-jasmine": "~0.1.5",
29
- "karma-coffee-preprocessor": "~0.1.2",
30
- "requirejs": "~2.1.10",
31
- "karma-requirejs": "~0.2.1",
32
- "karma": "~0.10.9",
33
- "grunt-tasks-list": "~0.1.1",
34
- "grunt-ngdocs": "~0.2.1",
35
- "grunt-contrib-cssmin": "~0.9.0"
36
- },
37
- "engines": {
38
- "node": ">=0.8.0"
39
- }
40
- }
@@ -1,63 +0,0 @@
1
- .angular-ui-tree {
2
-
3
- }
4
-
5
- .angular-ui-tree-empty {
6
- border: 1px dashed #bbb;
7
- min-height: 100px;
8
- background-color: #e5e5e5;
9
- background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
10
- background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
11
- background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
12
- background-size: 60px 60px;
13
- background-position: 0 0, 30px 30px;
14
- }
15
-
16
- .angular-ui-tree-nodes {
17
- display: block;
18
- position: relative;
19
- margin: 0px;
20
- padding: 0px;
21
- list-style: none;
22
- }
23
-
24
- .angular-ui-tree-nodes .angular-ui-tree-nodes {
25
- padding-left: 20px;
26
- }
27
- .angular-ui-tree-node, .angular-ui-tree-placeholder {
28
- display: block;
29
- position: relative;
30
- margin: 0px;
31
- padding: 0px;
32
- min-height: 20px;
33
- line-height: 20px;
34
- }
35
-
36
- .angular-ui-tree-hidden {
37
- display: none;
38
- }
39
-
40
- .angular-ui-tree-placeholder {
41
- margin: 5px 0;
42
- padding: 0;
43
- min-height: 30px;
44
- }
45
-
46
- .angular-ui-tree-handle {
47
- cursor: move;
48
- text-decoration: none;
49
- font-weight: bold;
50
- -webkit-box-sizing: border-box;
51
- -moz-box-sizing: border-box;
52
- box-sizing: border-box;
53
- min-height: 20px;
54
- line-height: 20px;
55
- }
56
-
57
-
58
- .angular-ui-tree-drag {
59
- position: absolute;
60
- pointer-events: none;
61
- z-index: 999;
62
- opacity: .8;
63
- }
@@ -1,16 +0,0 @@
1
- (function () {
2
- 'use strict';
3
-
4
- angular.module('ui.tree')
5
-
6
- .controller('TreeHandleController', ['$scope', '$element', '$attrs', 'treeConfig',
7
- function ($scope, $element, $attrs, treeConfig) {
8
- this.scope = $scope;
9
-
10
- $scope.$element = $element;
11
- $scope.$nodeScope = null;
12
- $scope.$type = 'uiTreeHandle';
13
-
14
- }
15
- ]);
16
- })();
@@ -1,141 +0,0 @@
1
- (function () {
2
- 'use strict';
3
-
4
- angular.module('ui.tree')
5
-
6
- .controller('TreeNodeController', ['$scope', '$element', '$attrs', 'treeConfig',
7
- function ($scope, $element, $attrs, treeConfig) {
8
- this.scope = $scope;
9
-
10
- $scope.$element = $element;
11
- $scope.$modelValue = null; // Model value for node;
12
- $scope.$parentNodeScope = null; // uiTreeNode Scope of parent node;
13
- $scope.$childNodesScope = null; // uiTreeNodes Scope of child nodes.
14
- $scope.$parentNodesScope = null; // uiTreeNodes Scope of parent nodes.
15
- $scope.$treeScope = null; // uiTree scope
16
- $scope.$handleScope = null; // it's handle scope
17
- $scope.$type = 'uiTreeNode';
18
- $scope.$$apply = false; //
19
-
20
- $scope.collapsed = false;
21
-
22
- $scope.init = function(controllersArr) {
23
- var treeNodesCtrl = controllersArr[0];
24
- $scope.$treeScope = controllersArr[1] ? controllersArr[1].scope : null;
25
-
26
- // find the scope of it's parent node
27
- $scope.$parentNodeScope = treeNodesCtrl.scope.$nodeScope;
28
- // modelValue for current node
29
- $scope.$modelValue = treeNodesCtrl.scope.$modelValue[$scope.$index];
30
- $scope.$parentNodesScope = treeNodesCtrl.scope;
31
- treeNodesCtrl.scope.initSubNode($scope); // init sub nodes
32
-
33
- $element.on('$destroy', function() {
34
- treeNodesCtrl.scope.destroySubNode($scope); // destroy sub nodes
35
- });
36
- };
37
-
38
- $scope.index = function() {
39
- return $scope.$parentNodesScope.$modelValue.indexOf($scope.$modelValue);
40
- };
41
-
42
- $scope.dragEnabled = function() {
43
- return !($scope.$treeScope && !$scope.$treeScope.dragEnabled);
44
- };
45
-
46
- $scope.isSibling = function(targetNode) {
47
- return $scope.$parentNodesScope == targetNode.$parentNodesScope;
48
- };
49
-
50
- $scope.isChild = function(targetNode) {
51
- var nodes = $scope.childNodes();
52
- return nodes && nodes.indexOf(targetNode) > -1;
53
- };
54
-
55
- $scope.prev = function() {
56
- var index = $scope.index();
57
- if (index > 0) {
58
- return $scope.siblings()[index - 1];
59
- }
60
- return null;
61
- };
62
-
63
- $scope.siblings = function() {
64
- return $scope.$parentNodesScope.childNodes();
65
- };
66
-
67
- $scope.childNodesCount = function() {
68
- return $scope.childNodes() ? $scope.childNodes().length : 0;
69
- };
70
-
71
- $scope.hasChild = function() {
72
- return $scope.childNodesCount() > 0;
73
- };
74
-
75
- $scope.childNodes = function() {
76
- return $scope.$childNodesScope && $scope.$childNodesScope.$modelValue ?
77
- $scope.$childNodesScope.childNodes() :
78
- null;
79
- };
80
-
81
- $scope.accept = function(sourceNode, destIndex) {
82
- return $scope.$childNodesScope &&
83
- $scope.$childNodesScope.$modelValue &&
84
- $scope.$childNodesScope.accept(sourceNode, destIndex);
85
- };
86
-
87
- $scope.removeNode = function(){
88
- var node = $scope.remove();
89
- $scope.$callbacks.removed(node);
90
- return node;
91
- };
92
-
93
- $scope.remove = function() {
94
- return $scope.$parentNodesScope.removeNode($scope);
95
- };
96
-
97
- $scope.toggle = function() {
98
- $scope.collapsed = !$scope.collapsed;
99
- };
100
-
101
- $scope.collapse = function() {
102
- $scope.collapsed = true;
103
- };
104
-
105
- $scope.expand = function() {
106
- $scope.collapsed = false;
107
- };
108
-
109
- $scope.depth = function() {
110
- var parentNode = $scope.$parentNodeScope;
111
- if (parentNode) {
112
- return parentNode.depth() + 1;
113
- }
114
- return 1;
115
- };
116
-
117
- var subDepth = 0;
118
- var countSubDepth = function(scope) {
119
- var count = 0;
120
- var nodes = scope.childNodes();
121
- for (var i = 0; i < nodes.length; i++) {
122
- var childNodes = nodes[i].$childNodesScope;
123
- if (childNodes) {
124
- count = 1;
125
- countSubDepth(childNodes);
126
- }
127
- }
128
- subDepth += count;
129
- };
130
-
131
- $scope.maxSubDepth = function() {
132
- subDepth = 0;
133
- if ($scope.$childNodesScope) {
134
- countSubDepth($scope.$childNodesScope);
135
- }
136
- return subDepth;
137
- };
138
-
139
- }
140
- ]);
141
- })();