kms 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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". Например:'
|