constructor-pages 1.0.0beta1 → 1.0.0beta2
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/constructor_pages/urlify.js +1 -0
- data/app/controllers/constructor_pages/fields_controller.rb +22 -28
- data/app/controllers/constructor_pages/pages_controller.rb +19 -48
- data/app/controllers/constructor_pages/templates_controller.rb +8 -20
- data/app/helpers/constructor_pages/fields_helper.rb +0 -2
- data/app/helpers/constructor_pages/pages_helper.rb +2 -9
- data/app/models/constructor_pages/field.rb +24 -10
- data/app/models/constructor_pages/page.rb +10 -13
- data/app/models/constructor_pages/template.rb +5 -4
- data/app/models/constructor_pages/types/boolean_type.rb +0 -2
- data/app/models/constructor_pages/types/date_type.rb +0 -2
- data/app/models/constructor_pages/types/float_type.rb +0 -2
- data/app/models/constructor_pages/types/html_type.rb +0 -2
- data/app/models/constructor_pages/types/image_type.rb +0 -2
- data/app/models/constructor_pages/types/integer_type.rb +0 -2
- data/app/models/constructor_pages/types/string_type.rb +0 -2
- data/app/models/constructor_pages/types/text_type.rb +0 -2
- data/app/views/constructor_pages/fields/_form.html.slim +4 -4
- data/app/views/constructor_pages/fields/types/_boolean.html.slim +1 -0
- data/app/views/constructor_pages/fields/types/_html.html.slim +1 -1
- data/app/views/constructor_pages/fields/types/_string.html.slim +1 -1
- data/app/views/constructor_pages/fields/types/_text.html.slim +1 -1
- data/app/views/constructor_pages/pages/_form.html.slim +5 -8
- data/app/views/constructor_pages/pages/index.html.slim +2 -3
- data/app/views/constructor_pages/templates/_form.html.slim +0 -4
- data/config/locales/en.yml +2 -0
- data/config/locales/fr.yml +2 -0
- data/config/locales/ru.yml +2 -0
- data/config/routes.rb +1 -1
- data/constructor-pages.gemspec +1 -2
- data/db/migrate/10_create_html_types.rb +1 -5
- data/db/migrate/11_create_image_types.rb +1 -5
- data/db/migrate/12_add_default_template.rb +3 -3
- data/db/migrate/14_remove_child_id_from_templates.rb +2 -6
- data/db/migrate/15_rename_link_to_redirect.rb +1 -5
- data/db/migrate/16_add_indexes.rb +13 -0
- data/db/migrate/1_create_pages.rb +12 -16
- data/db/migrate/2_create_templates.rb +1 -5
- data/db/migrate/3_create_fields.rb +1 -5
- data/db/migrate/4_create_string_types.rb +2 -6
- data/db/migrate/5_create_float_types.rb +2 -6
- data/db/migrate/6_create_boolean_types.rb +2 -6
- data/db/migrate/7_create_integer_types.rb +2 -6
- data/db/migrate/8_create_text_types.rb +1 -5
- data/db/migrate/9_create_date_types.rb +2 -6
- data/lib/constructor-pages.rb +1 -0
- data/spec/features/constructor_pages/fields_spec.rb +5 -6
- data/spec/features/constructor_pages/pages_spec.rb +26 -63
- data/spec/features/constructor_pages/templates_spec.rb +15 -28
- data/spec/models/constructor_pages/field_spec.rb +0 -2
- data/spec/models/constructor_pages/page_spec.rb +15 -31
- data/spec/models/constructor_pages/template_spec.rb +0 -2
- data/spec/models/constructor_pages/types/boolean_type_spec.rb +0 -2
- data/spec/models/constructor_pages/types/date_type_spec.rb +0 -2
- data/spec/models/constructor_pages/types/float_type_spec.rb +0 -5
- data/spec/models/constructor_pages/types/html_type_spec.rb +0 -2
- data/spec/models/constructor_pages/types/integer_type_spec.rb +0 -2
- data/spec/models/constructor_pages/types/string_type_spec.rb +0 -2
- data/spec/models/constructor_pages/types/text_type_spec.rb +0 -2
- metadata +19 -7
- data/app/helpers/constructor_pages/code_name_uniq.rb +0 -7
- data/app/helpers/constructor_pages/for_select.rb +0 -13
- data/app/helpers/constructor_pages/templates_helper.rb +0 -5
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module ConstructorPages
|
4
2
|
# Template model. Template allows assing different design for pages.
|
5
3
|
#
|
@@ -7,8 +5,6 @@ module ConstructorPages
|
|
7
5
|
# For example:
|
8
6
|
# template "Product" should has fields like "price", "description", "size" etc.
|
9
7
|
class Template < ActiveRecord::Base
|
10
|
-
# Adding code_name_uniqueness method
|
11
|
-
include CodeNameUniq
|
12
8
|
include TheSortableTree::Scopes
|
13
9
|
|
14
10
|
validates_presence_of :name, :code_name
|
@@ -34,6 +30,11 @@ module ConstructorPages
|
|
34
30
|
|
35
31
|
private
|
36
32
|
|
33
|
+
# Check if code_name is not available
|
34
|
+
def code_name_uniqueness
|
35
|
+
errors.add(:base, :code_name_already_in_use) unless Page.check_code_name(code_name) and check_code_name(code_name)
|
36
|
+
end
|
37
|
+
|
37
38
|
# Check if there is code_name in same branch
|
38
39
|
def check_code_name(cname)
|
39
40
|
[cname.pluralize, cname.singularize].each {|name|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
= form_for [@template, @field] do |f|
|
1
|
+
= form_for [@field.template, @field] do |f|
|
2
2
|
- if @field.errors.any?
|
3
3
|
.b-error
|
4
4
|
= link_to '×', '#', class: 'close', 'data-dismiss' => 'alert'
|
@@ -12,7 +12,7 @@
|
|
12
12
|
.b-form__row
|
13
13
|
= f.label :code_name, class: 'b-form__label'
|
14
14
|
= f.text_field :code_name, class: 'b-form__field'
|
15
|
-
= f.hidden_field :template_id, value: @template.id
|
15
|
+
= f.hidden_field :template_id, value: @field.template.id
|
16
16
|
|
17
17
|
- unless @field.type_value == 'image'
|
18
18
|
.b-form__row
|
@@ -21,5 +21,5 @@
|
|
21
21
|
|
22
22
|
.b-form__actions
|
23
23
|
= f.submit class: 'b-button'
|
24
|
-
= link_to t(:cancel), edit_template_path(@template), class: 'b-button b-button_color_light'
|
25
|
-
= link_to t(:delete_field), [@template, @field], method: :delete, data: {confirm: t(:are_you_sure?)}, class: '
|
24
|
+
= link_to t(:cancel), edit_template_path(@field.template), class: 'b-button b-button_color_light'
|
25
|
+
= link_to t(:delete_field), [@field.template, @field], method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'b-button b-button_color_light g-float_right' unless @field.new_record?
|
@@ -1 +1 @@
|
|
1
|
-
= text_area_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), rows: 10, class: '
|
1
|
+
= text_area_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), rows: 10, class: 'b-form__field ckeditor'
|
@@ -1 +1 @@
|
|
1
|
-
= text_field_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), class: '
|
1
|
+
= text_field_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), class: 'b-form__field'
|
@@ -1 +1 @@
|
|
1
|
-
= text_area_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), rows: 10, class: '
|
1
|
+
= text_area_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), rows: 10, class: 'b-form__field'
|
@@ -22,20 +22,17 @@
|
|
22
22
|
.b-inline.b-full-url
|
23
23
|
span.b-full-url__path
|
24
24
|
= @page.parent.full_url if @page.parent
|
25
|
-
|
25
|
+
| /
|
26
26
|
span.b-full-url__url= @page.url
|
27
27
|
= f.text_field :url, class: 'b-form__field'
|
28
28
|
i.fa.fa-pencil.b-full-url__icon
|
29
29
|
|
30
30
|
= render partial: 'field', collection: @page.fields
|
31
31
|
|
32
|
-
.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
.b-form__row
|
37
|
-
= f.label :template_id, class: 'b-form__label'
|
38
|
-
= f.select :template_id, options_for_select(templates, selected: @template_id)
|
32
|
+
- if @page.new_record?
|
33
|
+
.b-form__row
|
34
|
+
= f.label :template_id, class: 'b-form__label'
|
35
|
+
= f.select :template_id, options_for_select(templates_tree(@templates), selected: @page.template_id)
|
39
36
|
|
40
37
|
.b-form__row
|
41
38
|
= f.label :redirect, class: 'b-form__label'
|
@@ -1,7 +1,6 @@
|
|
1
1
|
.l-pages
|
2
|
-
-
|
3
|
-
=
|
4
|
-
=t :new_page
|
2
|
+
= link_to new_page_path, class: 'b-button' do
|
3
|
+
=t :new_page
|
5
4
|
|
6
5
|
|
7
6
|
ol.b-block.b-tree.g-out data-rebuild_url="#{rebuild_pages_path}" data-expand-node-url="#{expand_node_pages_path}" data-cookie-store='true'
|
@@ -12,10 +12,6 @@
|
|
12
12
|
= f.label :code_name, class: 'b-form__label'
|
13
13
|
= f.text_field :code_name, class: 'b-form__field'
|
14
14
|
|
15
|
-
.b-form__row
|
16
|
-
= f.label :parent_id, class: 'b-form__label'
|
17
|
-
= f.select :parent_id, options_for_select(for_select(@templates), selected: @template.parent_id), disabled: @template.self_and_descendants.map(&:id), include_blank: '--'
|
18
|
-
|
19
15
|
- unless @template.new_record?
|
20
16
|
.b-form__row
|
21
17
|
.b-form__label
|
data/config/locales/en.yml
CHANGED
@@ -11,7 +11,9 @@ en:
|
|
11
11
|
delete: Delete
|
12
12
|
url: URL
|
13
13
|
|
14
|
+
create_template_first: You need create at least one template
|
14
15
|
code_name_already_in_use: This code name is already in use.
|
16
|
+
can_not_change_template: Template of page can not be changed
|
15
17
|
field_success_added: Field «%{name}» added successfully.
|
16
18
|
field_success_updated: Field «%{name}» updated successfully.
|
17
19
|
field_success_removed: Field «%{name}» removed successfully.
|
data/config/locales/fr.yml
CHANGED
@@ -10,7 +10,9 @@ fr:
|
|
10
10
|
edit: Èditer
|
11
11
|
delete: Supprimer
|
12
12
|
|
13
|
+
create_template_first: Pour créer une page, vous devez créer au moins un modèle
|
13
14
|
code_name_already_in_use: Ce nom de code est déjà utilisé
|
15
|
+
can_not_change_template: Modèle de page ne peut pas être modifié
|
14
16
|
field_success_added: Champ %{name} a ajouté avec succès
|
15
17
|
field_success_updated: Champ %{name} mis à jour
|
16
18
|
field_success_removed: Champ %{name} supprimé avec succès
|
data/config/locales/ru.yml
CHANGED
@@ -17,7 +17,9 @@ ru:
|
|
17
17
|
edit_template: Редактирование шаблона
|
18
18
|
delete_template: Удалить шаблон
|
19
19
|
|
20
|
+
create_template_first: Для создания страницы необходимо создать хотя бы один шаблон
|
20
21
|
code_name_already_in_use: Такое имя уже используется.
|
22
|
+
can_not_change_template: Шаблон страницы не может быть изменен
|
21
23
|
field_success_added: Поле «%{name}» успешно добавлено.
|
22
24
|
field_success_updated: Поле «%{name}» успешно обновлено.
|
23
25
|
field_success_removed: Поле «%{name}» успешно удалено.
|
data/config/routes.rb
CHANGED
data/constructor-pages.gemspec
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require File.expand_path('../../core/lib/constructor_core/version', __FILE__)
|
4
2
|
|
5
3
|
Gem::Specification.new do |s|
|
@@ -20,6 +18,7 @@ Gem::Specification.new do |s|
|
|
20
18
|
|
21
19
|
s.add_dependency 'dragonfly', '1.0.3'
|
22
20
|
s.add_dependency 'rack-cache'
|
21
|
+
s.add_dependency 'activerecord-import'
|
23
22
|
s.add_dependency 'awesome_nested_set', '3.0.0.rc2'
|
24
23
|
s.add_dependency 'acts_as_list'
|
25
24
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateHtmlTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::HtmlType.table_name do |t|
|
4
4
|
t.text :value
|
5
5
|
t.references :field
|
@@ -8,8 +8,4 @@ class CreateHtmlTypes < ActiveRecord::Migration
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table ConstructorPages::Types::HtmlType.table_name
|
14
|
-
end
|
15
11
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateImageTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::ImageType.table_name do |t|
|
4
4
|
t.string :value_uid
|
5
5
|
t.string :value_name
|
@@ -9,8 +9,4 @@ class CreateImageTypes < ActiveRecord::Migration
|
|
9
9
|
t.timestamps
|
10
10
|
end
|
11
11
|
end
|
12
|
-
|
13
|
-
def self.down
|
14
|
-
drop_table ConstructorPages::Types::ImageType.table_name
|
15
|
-
end
|
16
12
|
end
|
@@ -1,9 +1,5 @@
|
|
1
1
|
class RemoveChildIdFromTemplates < ActiveRecord::Migration
|
2
|
-
def
|
3
|
-
remove_column 'constructor_pages_templates', :child_id
|
4
|
-
end
|
5
|
-
|
6
|
-
def self.down
|
7
|
-
add_column 'constructor_pages_templates', :child_id, :boolean, default: true
|
2
|
+
def change
|
3
|
+
remove_column 'constructor_pages_templates', :child_id, :boolean, default: true
|
8
4
|
end
|
9
5
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddIndexes < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_index ConstructorPages::Page.table_name, :parent_id
|
4
|
+
add_index ConstructorPages::Page.table_name, :lft
|
5
|
+
add_index ConstructorPages::Page.table_name, :rgt
|
6
|
+
|
7
|
+
add_index ConstructorPages::Template.table_name, :parent_id
|
8
|
+
add_index ConstructorPages::Template.table_name, :lft
|
9
|
+
add_index ConstructorPages::Template.table_name, :rgt
|
10
|
+
|
11
|
+
add_index ConstructorPages::Field.table_name, :type_value
|
12
|
+
end
|
13
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
class CreatePages < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Page.table_name do |t|
|
4
|
-
t.boolean :active,
|
5
|
-
t.string :name,
|
6
|
-
t.boolean :auto_url,
|
7
|
-
t.string :full_url,
|
8
|
-
t.string :url,
|
9
|
-
t.string :link,
|
10
|
-
t.string :title,
|
11
|
-
t.string :keywords,
|
4
|
+
t.boolean :active, default: true
|
5
|
+
t.string :name, default: ''
|
6
|
+
t.boolean :auto_url, default: true
|
7
|
+
t.string :full_url, default: ''
|
8
|
+
t.string :url, default: ''
|
9
|
+
t.string :link, default: ''
|
10
|
+
t.string :title, default: ''
|
11
|
+
t.string :keywords, default: ''
|
12
12
|
t.text :description
|
13
|
-
t.boolean :in_menu, :
|
14
|
-
t.boolean :in_nav, :
|
15
|
-
t.boolean :in_map, :
|
13
|
+
t.boolean :in_menu, default: true
|
14
|
+
t.boolean :in_nav, default: true
|
15
|
+
t.boolean :in_map, default: true
|
16
16
|
t.integer :parent_id
|
17
17
|
t.integer :lft
|
18
18
|
t.integer :rgt
|
@@ -20,8 +20,4 @@ class CreatePages < ActiveRecord::Migration
|
|
20
20
|
t.timestamps
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
24
|
-
def self.down
|
25
|
-
drop_table ConstructorPages::Page.table_name
|
26
|
-
end
|
27
23
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateTemplates < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Template.table_name do |t|
|
4
4
|
t.string :name
|
5
5
|
t.string :code_name
|
@@ -11,8 +11,4 @@ class CreateTemplates < ActiveRecord::Migration
|
|
11
11
|
t.timestamps
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
15
|
-
def self.down
|
16
|
-
drop_table ConstructorPages::Template.table_name
|
17
|
-
end
|
18
14
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CreateFields < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Field.table_name do |t|
|
4
4
|
t.string :name
|
5
5
|
t.string :code_name
|
@@ -10,8 +10,4 @@ class CreateFields < ActiveRecord::Migration
|
|
10
10
|
t.timestamps
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
|
-
def self.down
|
15
|
-
drop_table ConstructorPages::Field.table_name
|
16
|
-
end
|
17
13
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
class CreateStringTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::StringType.table_name do |t|
|
4
|
-
t.string :value, :
|
4
|
+
t.string :value, default: ''
|
5
5
|
t.references :field
|
6
6
|
t.references :page
|
7
7
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table ConstructorPages::Types::StringType.table_name
|
14
|
-
end
|
15
11
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
class CreateFloatTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::FloatType.table_name do |t|
|
4
|
-
t.float :value, :
|
4
|
+
t.float :value, default: 0.0
|
5
5
|
t.references :field
|
6
6
|
t.references :page
|
7
7
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table ConstructorPages::Types::FloatType.table_name
|
14
|
-
end
|
15
11
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
class CreateBooleanTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::BooleanType.table_name do |t|
|
4
|
-
t.boolean :value, :
|
4
|
+
t.boolean :value, default: false
|
5
5
|
t.references :field
|
6
6
|
t.references :page
|
7
7
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table ConstructorPages::Types::BooleanType.table_name
|
14
|
-
end
|
15
11
|
end
|
@@ -1,15 +1,11 @@
|
|
1
1
|
class CreateIntegerTypes < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table ConstructorPages::Types::IntegerType.table_name do |t|
|
4
|
-
t.integer :value, :
|
4
|
+
t.integer :value, default: 0
|
5
5
|
t.references :field
|
6
6
|
t.references :page
|
7
7
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table ConstructorPages::Types::IntegerType.table_name
|
14
|
-
end
|
15
11
|
end
|