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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee.erb +1 -2
- data/app/assets/javascripts/templates/assets/index.html.slim +4 -12
- data/app/assets/javascripts/templates/help/scopes.html.slim +74 -0
- data/app/assets/javascripts/templates/pages/index.html.slim +4 -3
- data/app/assets/javascripts/templates/snippets/index.html.slim +4 -3
- data/app/assets/javascripts/templates/templates/index.html.slim +4 -3
- data/app/assets/javascripts/templates/users/index.html.slim +3 -2
- data/app/assets/stylesheets/kms/custom.css.scss +3 -0
- data/app/controllers/kms/pages_controller.rb +2 -2
- data/app/models/ability.rb +0 -1
- data/app/models/concerns/kms/positioned.rb +18 -0
- data/app/models/kms/page.rb +2 -12
- data/app/services/kms/functions_registry.rb +11 -0
- data/app/uploaders/kms/asset_uploader.rb +1 -1
- data/config/initializers/help.rb +1 -1
- data/config/initializers/liquor.rb +0 -47
- data/config/locales/en.yml +22 -0
- data/config/locales/ru.yml +22 -0
- data/lib/generators/kms/install/install_generator.rb +2 -0
- data/lib/generators/kms/install/templates/carrierwave.rb +14 -0
- data/lib/kms/dependencies.rb +2 -0
- data/lib/kms/engine.rb +1 -1
- data/lib/kms/version.rb +1 -1
- data/spec/controllers/kms/snippets_controller_spec.rb +6 -6
- data/spec/internal/log/test.log +2439 -0
- data/spec/services/kms/functions_registry_spec.rb +14 -0
- data/spec/spec_helper.rb +1 -1
- data/vendor/assets/bower.json +1 -1
- data/vendor/assets/bower_components/angular-ui-tree/CHANGELOG.md +164 -0
- data/vendor/assets/bower_components/angular-ui-tree/CONTRIBUTING.md +39 -0
- data/vendor/assets/bower_components/angular-ui-tree/README.md +145 -37
- data/vendor/assets/bower_components/angular-ui-tree/bower.json +28 -18
- data/vendor/assets/bower_components/angular-ui-tree/{source → dist}/angular-ui-tree.css +18 -16
- data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.js +1408 -822
- data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.min.css +1 -2
- data/vendor/assets/bower_components/angular-ui-tree/dist/angular-ui-tree.min.js +3 -3
- data/vendor/assets/bower_components/angular-ui-tree/e2e/basic-example/basic-example.js +81 -0
- data/vendor/assets/bower_components/angular-ui-tree/e2e/basic-example/page.js +42 -0
- data/vendor/assets/bower_components/angular-ui-tree/e2e/table-example/page.js +31 -0
- data/vendor/assets/bower_components/angular-ui-tree/e2e/table-example/table-example.js +34 -0
- data/vendor/assets/bower_components/angular-ui-tree/index.js +2 -0
- data/vendor/assets/bower_components/angular-ui-tree/protractor.conf.js +19 -0
- data/vendor/assets/bower_components/angular/angular.js +4880 -2111
- data/vendor/assets/bower_components/angular/angular.min.js +320 -297
- data/vendor/assets/bower_components/angular/angular.min.js.gzip +0 -0
- data/vendor/assets/bower_components/angular/angular.min.js.map +3 -3
- data/vendor/assets/bower_components/angular/bower.json +1 -1
- data/vendor/assets/bower_components/angular/package.json +1 -1
- metadata +32 -40
- data/vendor/assets/bower_components/angular-ui-tree/Gruntfile.js +0 -229
- data/vendor/assets/bower_components/angular-ui-tree/build/compiler.jar +0 -0
- data/vendor/assets/bower_components/angular-ui-tree/demo/css/demo-horizontal.css +0 -47
- data/vendor/assets/bower_components/angular-ui-tree/demo/css/demo.css +0 -31
- data/vendor/assets/bower_components/angular-ui-tree/demo/css/tree.css +0 -25
- data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.js +0 -1243
- data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.min.css +0 -2
- data/vendor/assets/bower_components/angular-ui-tree/demo/dist/angular-ui-tree.min.js +0 -6
- data/vendor/assets/bower_components/angular-ui-tree/demo/filter.html +0 -64
- data/vendor/assets/bower_components/angular-ui-tree/demo/groups.html +0 -100
- data/vendor/assets/bower_components/angular-ui-tree/demo/index.html +0 -101
- data/vendor/assets/bower_components/angular-ui-tree/demo/js/demo.js +0 -63
- data/vendor/assets/bower_components/angular-ui-tree/demo/js/filter.js +0 -91
- data/vendor/assets/bower_components/angular-ui-tree/demo/js/groups.js +0 -143
- data/vendor/assets/bower_components/angular-ui-tree/demo/js/tree.js +0 -102
- data/vendor/assets/bower_components/angular-ui-tree/demo/js/trees.js +0 -60
- data/vendor/assets/bower_components/angular-ui-tree/demo/test.html +0 -60
- data/vendor/assets/bower_components/angular-ui-tree/demo/tree-horizontal.html +0 -66
- data/vendor/assets/bower_components/angular-ui-tree/demo/tree.html +0 -66
- data/vendor/assets/bower_components/angular-ui-tree/demo/trees.html +0 -92
- data/vendor/assets/bower_components/angular-ui-tree/guide/00_usage.ngdoc +0 -78
- data/vendor/assets/bower_components/angular-ui-tree/guide/01_development_setup.ngdoc +0 -58
- data/vendor/assets/bower_components/angular-ui-tree/guide/index.ngdoc +0 -33
- data/vendor/assets/bower_components/angular-ui-tree/karma.conf.js +0 -49
- data/vendor/assets/bower_components/angular-ui-tree/package.json +0 -40
- data/vendor/assets/bower_components/angular-ui-tree/source/angular-ui-tree.scss +0 -63
- data/vendor/assets/bower_components/angular-ui-tree/source/controllers/handleCtrl.js +0 -16
- data/vendor/assets/bower_components/angular-ui-tree/source/controllers/nodeCtrl.js +0 -141
- data/vendor/assets/bower_components/angular-ui-tree/source/controllers/nodesCtrl.js +0 -100
- data/vendor/assets/bower_components/angular-ui-tree/source/controllers/treeCtrl.js +0 -63
- data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTree.js +0 -115
- data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeHandle.js +0 -27
- data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeNode.js +0 -427
- data/vendor/assets/bower_components/angular-ui-tree/source/directives/uiTreeNodes.js +0 -59
- data/vendor/assets/bower_components/angular-ui-tree/source/main.js +0 -23
- data/vendor/assets/bower_components/angular-ui-tree/source/services/helper.js +0 -265
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c7a60114d095d742beb0d36848becbcdddf79bc8
|
|
4
|
+
data.tar.gz: 614ac6dc07bf7781306c107c97c3438a43b88877
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3155d389e80cac754afd5ac0d1d3d05e9e6d6574754a74ddb150ca52869b321e7a195b8d36d40d0889aae6240a958acb167ecf51f1dda3f52db127c91928162e
|
|
7
|
+
data.tar.gz: 689ce17498530639bd86c95f03c486f6ffadd65c29ce4ab04ebccb01848bf91d510e6a14ea2971b98f5fed4e00d7ccb1ee31b4487f0e49bf0c44837439c92ae6
|
|
@@ -88,8 +88,7 @@ PagesController = ($scope, $state, $cookieStore, Restangular, $stateParams, Aler
|
|
|
88
88
|
|
|
89
89
|
$scope.treeOptions = {
|
|
90
90
|
dropped: (event) ->
|
|
91
|
-
Restangular.all('pages').customPOST(angular.toJson($scope.pages),'sorting')
|
|
92
|
-
$scope.store.getList().then (pages) ->
|
|
91
|
+
Restangular.all('pages').customPOST(angular.toJson($scope.pages),'sorting').then (pages) ->
|
|
93
92
|
$scope.pages = pages
|
|
94
93
|
}
|
|
95
94
|
|
|
@@ -21,8 +21,6 @@
|
|
|
21
21
|
| {{asset.file.url}}
|
|
22
22
|
td
|
|
23
23
|
.btn-group.pull-right
|
|
24
|
-
a.btn.btn-sm.btn-info ui-sref="assets.edit({id: asset.id})"
|
|
25
|
-
i.fa.fa-pencil
|
|
26
24
|
a.btn.btn-sm.btn-danger ng-click="destroy(asset)"
|
|
27
25
|
i.fa.fa-times
|
|
28
26
|
tab
|
|
@@ -34,13 +32,12 @@
|
|
|
34
32
|
tbody
|
|
35
33
|
tr ng-repeat="asset in assets.css"
|
|
36
34
|
td style="width: 40%"
|
|
37
|
-
|
|
35
|
+
a ui-sref="assets.edit({id: asset.id})"
|
|
36
|
+
| {{ asset.filename }}
|
|
38
37
|
td style="width: 40%"
|
|
39
38
|
| {{asset.file.url}}
|
|
40
39
|
td
|
|
41
40
|
.btn-group.pull-right
|
|
42
|
-
a.btn.btn-sm.btn-info ui-sref="assets.edit({id: asset.id})"
|
|
43
|
-
i.fa.fa-pencil
|
|
44
41
|
a.btn.btn-sm.btn-danger ng-click="destroy(asset)"
|
|
45
42
|
i.fa.fa-times
|
|
46
43
|
tab
|
|
@@ -52,13 +49,12 @@
|
|
|
52
49
|
tbody
|
|
53
50
|
tr ng-repeat="asset in assets.javascript"
|
|
54
51
|
td style="width: 40%"
|
|
55
|
-
|
|
52
|
+
a ui-sref="assets.edit({id: asset.id})"
|
|
53
|
+
| {{ asset.filename }}
|
|
56
54
|
td style="width: 40%"
|
|
57
55
|
| {{asset.file.url}}
|
|
58
56
|
td
|
|
59
57
|
.btn-group.pull-right
|
|
60
|
-
a.btn.btn-sm.btn-info ui-sref="assets.edit({id: asset.id})"
|
|
61
|
-
i.fa.fa-pencil
|
|
62
58
|
a.btn.btn-sm.btn-danger ng-click="destroy(asset)"
|
|
63
59
|
i.fa.fa-times
|
|
64
60
|
tab
|
|
@@ -75,8 +71,6 @@
|
|
|
75
71
|
| {{asset.file.url}}
|
|
76
72
|
td
|
|
77
73
|
.btn-group.pull-right
|
|
78
|
-
a.btn.btn-sm.btn-info ui-sref="assets.edit({id: asset.id})"
|
|
79
|
-
i.fa.fa-pencil
|
|
80
74
|
a.btn.btn-sm.btn-danger ng-click="destroy(asset)"
|
|
81
75
|
i.fa.fa-times
|
|
82
76
|
tab
|
|
@@ -93,8 +87,6 @@
|
|
|
93
87
|
| {{asset.file.url}}
|
|
94
88
|
td
|
|
95
89
|
.btn-group.pull-right
|
|
96
|
-
a.btn.btn-sm.btn-info ui-sref="assets.edit({id: asset.id})"
|
|
97
|
-
i.fa.fa-pencil
|
|
98
90
|
a.btn.btn-sm.btn-danger ng-click="destroy(asset)"
|
|
99
91
|
i.fa.fa-times
|
|
100
92
|
li.pull-right
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
h4 = I18n.t("liquor_help.scopes_title")
|
|
2
|
+
p
|
|
3
|
+
ul
|
|
4
|
+
li
|
|
5
|
+
var find_by
|
|
6
|
+
p
|
|
7
|
+
span = I18n.t('liquor_help.scopes.find_by.main_description')
|
|
8
|
+
p
|
|
9
|
+
code
|
|
10
|
+
| {% assign news_page = index.children.find_by(title: 'News') %}
|
|
11
|
+
li
|
|
12
|
+
var find_all_by
|
|
13
|
+
p
|
|
14
|
+
span = I18n.t('liquor_help.scopes.find_all_by.main_description')
|
|
15
|
+
p
|
|
16
|
+
code
|
|
17
|
+
| {% for p in: index.children.find_all_by(published: true) do: %}
|
|
18
|
+
li
|
|
19
|
+
var except
|
|
20
|
+
p
|
|
21
|
+
span = I18n.t('liquor_help.scopes.except.main_description')
|
|
22
|
+
p
|
|
23
|
+
code
|
|
24
|
+
| {% assign correct_pages = index.children.except(excepted_page) %}
|
|
25
|
+
li
|
|
26
|
+
var find_except_by
|
|
27
|
+
p
|
|
28
|
+
span = I18n.t('liquor_help.scopes.find_except_by.main_description')
|
|
29
|
+
p
|
|
30
|
+
code
|
|
31
|
+
| {% for p in: index.children.find_except_by(hidden: true) do: %}
|
|
32
|
+
li
|
|
33
|
+
var limit
|
|
34
|
+
p
|
|
35
|
+
span = I18n.t('liquor_help.scopes.limit.main_description')
|
|
36
|
+
p
|
|
37
|
+
code
|
|
38
|
+
| {% for post in: models.posts.limit(3) do: %}
|
|
39
|
+
li
|
|
40
|
+
var offset
|
|
41
|
+
p
|
|
42
|
+
span = I18n.t('liquor_help.scopes.offset.main_description')
|
|
43
|
+
p
|
|
44
|
+
code
|
|
45
|
+
| {% for post in: models.posts.limit(3).offset(3) do: %}
|
|
46
|
+
li
|
|
47
|
+
var first
|
|
48
|
+
p
|
|
49
|
+
span = I18n.t('liquor_help.scopes.first.main_description')
|
|
50
|
+
p
|
|
51
|
+
code
|
|
52
|
+
| {% assign first_post = models.posts.first %}
|
|
53
|
+
li
|
|
54
|
+
var last
|
|
55
|
+
p
|
|
56
|
+
span = I18n.t('liquor_help.scopes.last.main_description')
|
|
57
|
+
p
|
|
58
|
+
code
|
|
59
|
+
| {% assign last_post = models.posts.last %}
|
|
60
|
+
li
|
|
61
|
+
var
|
|
62
|
+
| []
|
|
63
|
+
p
|
|
64
|
+
span = I18n.t('liquor_help.scopes.by_index.main_description')
|
|
65
|
+
p
|
|
66
|
+
code
|
|
67
|
+
| {% assign third_post = models.posts[2] %}
|
|
68
|
+
li
|
|
69
|
+
var pluck
|
|
70
|
+
p
|
|
71
|
+
span = I18n.t('liquor_help.scopes.pluck.main_description')
|
|
72
|
+
p
|
|
73
|
+
code
|
|
74
|
+
| {% for post_title in: models.posts.pluck('title') %}
|
|
@@ -4,13 +4,14 @@ script type="text/ng-template" id="nodes_renderer.html"
|
|
|
4
4
|
div style="width:50%;float:left;height:30px;line-height:30px;" ng-class="{'not-published': !node.published}"
|
|
5
5
|
a data-nodrag="" ng-click="toggle(node)" ng-if="node.children" style="padding-right:5px;"
|
|
6
6
|
i.fa ng-class="{'fa-plus': collapsed, 'fa-minus': !collapsed}"
|
|
7
|
-
|
|
7
|
+
a ui-sref="pages.edit({id: node.id})" data-nodrag=""
|
|
8
|
+
| {{node.title}}
|
|
8
9
|
i.fa.fa-cogs style="font-size:18px !important" ng-if="node.templatable"
|
|
9
10
|
div style="width:30%;float:left;height:30px;line-height:30px;"
|
|
10
11
|
| {{ node.fullpath }}
|
|
11
12
|
.btn-group.pull-right
|
|
12
|
-
a.btn.btn-sm.btn-info data-nodrag="" ui-sref="pages.edit({id: node.id})"
|
|
13
|
-
i.fa.fa-pencil
|
|
13
|
+
/a.btn.btn-sm.btn-info data-nodrag="" ui-sref="pages.edit({id: node.id})"
|
|
14
|
+
/i.fa.fa-pencil
|
|
14
15
|
a.btn.btn-sm.btn-danger data-nodrag="" ng-click="destroy(node)" style="margin-right: 8px;"
|
|
15
16
|
i.fa.fa-times
|
|
16
17
|
ol ui-tree-nodes="pages" ng-model="node.children" ng-class="{hidden: collapsed}"
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
tbody
|
|
14
14
|
tr ng-repeat="snippet in snippets"
|
|
15
15
|
td style="width: 80%"
|
|
16
|
-
|
|
16
|
+
a ui-sref="snippets.edit({id: snippet.id})"
|
|
17
|
+
| {{ snippet.name }}
|
|
17
18
|
td
|
|
18
19
|
.btn-group.pull-right
|
|
19
|
-
a.btn.btn-sm.btn-info ui-sref="snippets.edit({id: snippet.id})" ng-show="currentUser.admin"
|
|
20
|
-
i.fa.fa-pencil
|
|
20
|
+
/a.btn.btn-sm.btn-info ui-sref="snippets.edit({id: snippet.id})" ng-show="currentUser.admin"
|
|
21
|
+
/i.fa.fa-pencil
|
|
21
22
|
a.btn.btn-sm.btn-danger ng-click="destroy(snippet)" ng-show="currentUser.admin"
|
|
22
23
|
i.fa.fa-times
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
tbody
|
|
14
14
|
tr ng-repeat="template in templates"
|
|
15
15
|
td style="width: 80%"
|
|
16
|
-
|
|
16
|
+
a ui-sref="templates.edit({id: template.id})"
|
|
17
|
+
| {{ template.name }}
|
|
17
18
|
td
|
|
18
19
|
.btn-group.pull-right
|
|
19
|
-
a.btn.btn-sm.btn-info ui-sref="templates.edit({id: template.id})" ng-show="currentUser.admin"
|
|
20
|
-
i.fa.fa-pencil
|
|
20
|
+
/a.btn.btn-sm.btn-info ui-sref="templates.edit({id: template.id})" ng-show="currentUser.admin"
|
|
21
|
+
/i.fa.fa-pencil
|
|
21
22
|
a.btn.btn-sm.btn-danger ng-click="destroy(template)" ng-show="currentUser.admin"
|
|
22
23
|
i.fa.fa-times
|
|
@@ -5,7 +5,7 @@ module Kms
|
|
|
5
5
|
|
|
6
6
|
def index
|
|
7
7
|
#render json: Page.order("created_at asc").to_json(methods: :parent_id, except: :ancestry)
|
|
8
|
-
render json: Page.arrange_serializable(:
|
|
8
|
+
render json: Page.arrange_serializable(order: :position).to_json
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def create
|
|
@@ -44,7 +44,7 @@ module Kms
|
|
|
44
44
|
p.update_attribute(:position, index)
|
|
45
45
|
sort(page["id"], page["children"]) if page["children"].present?
|
|
46
46
|
end
|
|
47
|
-
render json: Page.arrange_serializable.to_json
|
|
47
|
+
render json: Page.arrange_serializable(order: :position).to_json
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
protected
|
data/app/models/ability.rb
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Kms
|
|
2
|
+
module Positioned
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
before_create :set_position
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def set_position
|
|
10
|
+
if parent.present?
|
|
11
|
+
max = parent.children.maximum(:position)
|
|
12
|
+
else
|
|
13
|
+
max = self.class.where('ancestry IS ?', nil).maximum(:position)
|
|
14
|
+
end
|
|
15
|
+
self.position = max ? max + 1 : 0
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/app/models/kms/page.rb
CHANGED
|
@@ -2,8 +2,9 @@ module Kms
|
|
|
2
2
|
class Page < ActiveRecord::Base
|
|
3
3
|
include Liquor::Dropable
|
|
4
4
|
include CompileTemplates
|
|
5
|
+
include Positioned
|
|
5
6
|
|
|
6
|
-
INDEX_SLUG = "index"
|
|
7
|
+
INDEX_SLUG = "index".freeze
|
|
7
8
|
INDEX_FULLPATH = ""
|
|
8
9
|
|
|
9
10
|
scope :published, lambda { where(published: true) }
|
|
@@ -16,8 +17,6 @@ module Kms
|
|
|
16
17
|
|
|
17
18
|
before_save :build_fullpath
|
|
18
19
|
|
|
19
|
-
before_create :set_position
|
|
20
|
-
|
|
21
20
|
has_ancestry
|
|
22
21
|
|
|
23
22
|
def index?
|
|
@@ -34,15 +33,6 @@ module Kms
|
|
|
34
33
|
end
|
|
35
34
|
end
|
|
36
35
|
|
|
37
|
-
def set_position
|
|
38
|
-
if parent.present?
|
|
39
|
-
max = parent.children.maximum(:position)
|
|
40
|
-
else
|
|
41
|
-
max = Page.where('ancestry IS ?', nil).maximum(:position)
|
|
42
|
-
end
|
|
43
|
-
self.position = max ? max + 1 : 0
|
|
44
|
-
end
|
|
45
|
-
|
|
46
36
|
# fetch items for templatable page
|
|
47
37
|
def fetch_items
|
|
48
38
|
templatable_type.constantize.all
|
|
@@ -8,7 +8,7 @@ module Kms
|
|
|
8
8
|
# include CarrierWave::MiniMagick
|
|
9
9
|
|
|
10
10
|
# Choose what kind of storage to use for this uploader:
|
|
11
|
-
storage :file
|
|
11
|
+
storage (ENV['KMS_ASSETS_STORAGE'] && ENV['KMS_ASSETS_STORAGE'].to_sym) || :file
|
|
12
12
|
# storage :fog
|
|
13
13
|
|
|
14
14
|
# Override the directory where uploaded files will be stored.
|
data/config/initializers/help.rb
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Kms::HelpService.register_templates Kms::Engine, 'help/filters.html', 'help/variables.html'
|
|
1
|
+
Kms::HelpService.register_templates Kms::Engine, 'help/filters.html', 'help/variables.html', 'help/scopes.html'
|
|
@@ -1,49 +1,2 @@
|
|
|
1
1
|
require 'kms/functions/assets'
|
|
2
2
|
require 'kms/functions/currency'
|
|
3
|
-
#Kms.template_manager = Liquor::Manager.new(import: [Liquor::Pagination, Kms::Functions::Assets, Kms::Functions::Currency])
|
|
4
|
-
|
|
5
|
-
# if ActiveRecord::Base.connection.tables.include?('kms_templates')
|
|
6
|
-
# Kms::Template.all.each do |template|
|
|
7
|
-
# Kms.template_manager.register_layout(template.register_id, template.content || "", Kms::ExternalsRegistry.externals.keys)
|
|
8
|
-
# end
|
|
9
|
-
# end
|
|
10
|
-
# if ActiveRecord::Base.connection.tables.include?('kms_pages')
|
|
11
|
-
# Kms::Page.all.each do |page|
|
|
12
|
-
# Kms.template_manager.register_template(page.register_id, page.content || "", Kms::ExternalsRegistry.externals.keys)
|
|
13
|
-
# end
|
|
14
|
-
# end
|
|
15
|
-
#Rails.configuration.x.template_manager.register_partial("_pagination", <<-eos
|
|
16
|
-
#{% pagination start: %}
|
|
17
|
-
#<div class='digg_pagination'>
|
|
18
|
-
#{% if page.is_current then: %}
|
|
19
|
-
#<span class="disabled previous_page">← Previous</span>
|
|
20
|
-
#{% else: %}
|
|
21
|
-
#<a href="{{ prev_page_path }}" rel="previous" class="previous_page_page">← Previous</a>
|
|
22
|
-
#{% end if %}
|
|
23
|
-
#{% page: %}
|
|
24
|
-
#{% if page.is_current then: %}
|
|
25
|
-
#<em class="current">{{ page.number }}</em>
|
|
26
|
-
#{% elsif: page.is_next then: %}
|
|
27
|
-
#<a href="{{ page.path }}" rel="next">{{ page.number }}</a>
|
|
28
|
-
#{% elsif: page.is_prev then: %}
|
|
29
|
-
#<a href="{{ page.path }}" rel="previous">{{ page.number }}</a>
|
|
30
|
-
#{% else: %}
|
|
31
|
-
#<a href="{{ page.path }}">3</a>
|
|
32
|
-
#{% end if %}
|
|
33
|
-
#{% gap: %}
|
|
34
|
-
#<span class="gap">…</span>
|
|
35
|
-
#{% end: %}
|
|
36
|
-
#{% if page.is_current then: %}
|
|
37
|
-
#<span class="disabled next_page">Next →</span>
|
|
38
|
-
#{% else: %}
|
|
39
|
-
#<a href="{{ next_page_path }}" rel="next" class="next_page">Next →</a></div>
|
|
40
|
-
#{% end if %}
|
|
41
|
-
#{% end pagination %}
|
|
42
|
-
#eos
|
|
43
|
-
#)
|
|
44
|
-
|
|
45
|
-
# unless Kms.template_manager.compile
|
|
46
|
-
# Kms.template_manager.errors.each do |error|
|
|
47
|
-
# puts error
|
|
48
|
-
# end
|
|
49
|
-
# end
|
data/config/locales/en.yml
CHANGED
|
@@ -50,6 +50,7 @@ en:
|
|
|
50
50
|
tags_title: "Tags"
|
|
51
51
|
filters_title: "Filters"
|
|
52
52
|
variables_title: "Variables"
|
|
53
|
+
scopes_title: "Scopes"
|
|
53
54
|
endpoints_title: "Endpoints"
|
|
54
55
|
property: "Property of"
|
|
55
56
|
parameter: "Parameter for"
|
|
@@ -75,6 +76,27 @@ en:
|
|
|
75
76
|
main_description: "Tag yield has 3 forms. In the simples case (without arguments) it inserts content of internal template (Page content in terms of this CMS). If string with handle was setup with {% content_for %}, then yield returns this string. If no string with handle, yield returns result of if_none block execution, if such block was specified, or just empty string:"
|
|
76
77
|
include:
|
|
77
78
|
main_description: 'Tag include includes content of Snippet into template. The only argument of include - Snippet ID (field "Slug/ID" that you need to setup on Snippet creation in "Snippets"):'
|
|
79
|
+
scopes:
|
|
80
|
+
find_by:
|
|
81
|
+
main_description: 'find_by allows you to find one element in collection by some condition/criteria'
|
|
82
|
+
find_all_by:
|
|
83
|
+
main_description: 'find_all_by finds all collection elements matching criterias'
|
|
84
|
+
except:
|
|
85
|
+
main_description: 'except returns you all collection elements except ones provided as argument'
|
|
86
|
+
find_except_by:
|
|
87
|
+
main_description: 'find_except_by finds all collection elements not matching provided criterias'
|
|
88
|
+
limit:
|
|
89
|
+
main_description: 'limit method is equal to SQL limit so it allows to limit number of collection items'
|
|
90
|
+
offset:
|
|
91
|
+
main_description: 'offset method is equal to SQL offset so it allows to fetch records by offset'
|
|
92
|
+
first:
|
|
93
|
+
main_description: 'returns first element in collection'
|
|
94
|
+
last:
|
|
95
|
+
main_description: 'returns last element in collection'
|
|
96
|
+
by_index:
|
|
97
|
+
main_description: 'returns element by its index'
|
|
98
|
+
pluck:
|
|
99
|
+
main_description: 'returns collection containing elements specific field values (not full object)'
|
|
78
100
|
variables:
|
|
79
101
|
var_loop:
|
|
80
102
|
main_description: 'Variable giving access to current state of cycle/iteration. Can be used only in "for" cycle. var_loop - common name, for accessing actual cycle variable you need to concatenate cycle variable name and "_loop". Example:'
|
data/config/locales/ru.yml
CHANGED
|
@@ -50,6 +50,7 @@ ru:
|
|
|
50
50
|
tags_title: "Тэги"
|
|
51
51
|
filters_title: "Фильтры"
|
|
52
52
|
variables_title: "Переменные"
|
|
53
|
+
scopes_title: "Методы коллекций"
|
|
53
54
|
endpoints_title: "Запросы"
|
|
54
55
|
property: "Свойство"
|
|
55
56
|
parameter: "Параметр для"
|
|
@@ -75,6 +76,27 @@ ru:
|
|
|
75
76
|
main_description: "Тэг yield имеет 3 формы написания. В самом простом случае (без аргументов) тэг вставляет содержимое внутреннего шаблона (в данной CMS это страница). Если строка с handle была задана с помощью {% content_for %}, тогда yield возвращает эту строку. Если не было задано строки с этим handle, yield либо возвращает результат выполнения блока if_none, если он задан, или пустую строку:"
|
|
76
77
|
include:
|
|
77
78
|
main_description: 'Тэг include включает в шаблон содержимое Сниппета. Единственный аргумент include - это идентификатор Сниппета (поле "Идентификатор", указанное при создании сниппета в разделе "Сниппеты"):'
|
|
79
|
+
scopes:
|
|
80
|
+
find_by:
|
|
81
|
+
main_description: 'find_by позволяет найти один элемент коллекции по заданному условию'
|
|
82
|
+
find_all_by:
|
|
83
|
+
main_description: 'find_all_by находит все элементы коллекции, удовлетворяющие критериям'
|
|
84
|
+
except:
|
|
85
|
+
main_description: 'except возвращает элементы коллекции, кроме тех, которые поданы в качестве аргументов'
|
|
86
|
+
find_except_by:
|
|
87
|
+
main_description: 'find_except_by находит все элементы коллекции, не удовлетворяющие заданным критериям'
|
|
88
|
+
limit:
|
|
89
|
+
main_description: 'limit эквивалентен limit в SQL и позволяет ограничить количество элементов коллекции'
|
|
90
|
+
offset:
|
|
91
|
+
main_description: 'offset эквивалентен offset в SQL и позволяет получить данные со смещением'
|
|
92
|
+
first:
|
|
93
|
+
main_description: 'возвращает первый элемент коллекции'
|
|
94
|
+
last:
|
|
95
|
+
main_description: 'возвращает последний элемент коллекции'
|
|
96
|
+
by_index:
|
|
97
|
+
main_description: 'возвращает элемент по индексу'
|
|
98
|
+
pluck:
|
|
99
|
+
main_description: 'возвращает коллекцию, содержащую значения определенного свойства'
|
|
78
100
|
variables:
|
|
79
101
|
var_loop:
|
|
80
102
|
main_description: 'Переменная, предоставляющая доступ к текущему состоянию цикла. Может быть использована только внутри цикла for. var_loop - обобщённое имя, для получения настоящего имени переменной нужно сконкатенировать название переменной цикла и "_loop". Например:'
|