constructor-pages 1.0.0beta1 → 1.0.0beta2

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/constructor_pages/urlify.js +1 -0
  3. data/app/controllers/constructor_pages/fields_controller.rb +22 -28
  4. data/app/controllers/constructor_pages/pages_controller.rb +19 -48
  5. data/app/controllers/constructor_pages/templates_controller.rb +8 -20
  6. data/app/helpers/constructor_pages/fields_helper.rb +0 -2
  7. data/app/helpers/constructor_pages/pages_helper.rb +2 -9
  8. data/app/models/constructor_pages/field.rb +24 -10
  9. data/app/models/constructor_pages/page.rb +10 -13
  10. data/app/models/constructor_pages/template.rb +5 -4
  11. data/app/models/constructor_pages/types/boolean_type.rb +0 -2
  12. data/app/models/constructor_pages/types/date_type.rb +0 -2
  13. data/app/models/constructor_pages/types/float_type.rb +0 -2
  14. data/app/models/constructor_pages/types/html_type.rb +0 -2
  15. data/app/models/constructor_pages/types/image_type.rb +0 -2
  16. data/app/models/constructor_pages/types/integer_type.rb +0 -2
  17. data/app/models/constructor_pages/types/string_type.rb +0 -2
  18. data/app/models/constructor_pages/types/text_type.rb +0 -2
  19. data/app/views/constructor_pages/fields/_form.html.slim +4 -4
  20. data/app/views/constructor_pages/fields/types/_boolean.html.slim +1 -0
  21. data/app/views/constructor_pages/fields/types/_html.html.slim +1 -1
  22. data/app/views/constructor_pages/fields/types/_string.html.slim +1 -1
  23. data/app/views/constructor_pages/fields/types/_text.html.slim +1 -1
  24. data/app/views/constructor_pages/pages/_form.html.slim +5 -8
  25. data/app/views/constructor_pages/pages/index.html.slim +2 -3
  26. data/app/views/constructor_pages/templates/_form.html.slim +0 -4
  27. data/config/locales/en.yml +2 -0
  28. data/config/locales/fr.yml +2 -0
  29. data/config/locales/ru.yml +2 -0
  30. data/config/routes.rb +1 -1
  31. data/constructor-pages.gemspec +1 -2
  32. data/db/migrate/10_create_html_types.rb +1 -5
  33. data/db/migrate/11_create_image_types.rb +1 -5
  34. data/db/migrate/12_add_default_template.rb +3 -3
  35. data/db/migrate/14_remove_child_id_from_templates.rb +2 -6
  36. data/db/migrate/15_rename_link_to_redirect.rb +1 -5
  37. data/db/migrate/16_add_indexes.rb +13 -0
  38. data/db/migrate/1_create_pages.rb +12 -16
  39. data/db/migrate/2_create_templates.rb +1 -5
  40. data/db/migrate/3_create_fields.rb +1 -5
  41. data/db/migrate/4_create_string_types.rb +2 -6
  42. data/db/migrate/5_create_float_types.rb +2 -6
  43. data/db/migrate/6_create_boolean_types.rb +2 -6
  44. data/db/migrate/7_create_integer_types.rb +2 -6
  45. data/db/migrate/8_create_text_types.rb +1 -5
  46. data/db/migrate/9_create_date_types.rb +2 -6
  47. data/lib/constructor-pages.rb +1 -0
  48. data/spec/features/constructor_pages/fields_spec.rb +5 -6
  49. data/spec/features/constructor_pages/pages_spec.rb +26 -63
  50. data/spec/features/constructor_pages/templates_spec.rb +15 -28
  51. data/spec/models/constructor_pages/field_spec.rb +0 -2
  52. data/spec/models/constructor_pages/page_spec.rb +15 -31
  53. data/spec/models/constructor_pages/template_spec.rb +0 -2
  54. data/spec/models/constructor_pages/types/boolean_type_spec.rb +0 -2
  55. data/spec/models/constructor_pages/types/date_type_spec.rb +0 -2
  56. data/spec/models/constructor_pages/types/float_type_spec.rb +0 -5
  57. data/spec/models/constructor_pages/types/html_type_spec.rb +0 -2
  58. data/spec/models/constructor_pages/types/integer_type_spec.rb +0 -2
  59. data/spec/models/constructor_pages/types/string_type_spec.rb +0 -2
  60. data/spec/models/constructor_pages/types/text_type_spec.rb +0 -2
  61. metadata +19 -7
  62. data/app/helpers/constructor_pages/code_name_uniq.rb +0 -7
  63. data/app/helpers/constructor_pages/for_select.rb +0 -13
  64. 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,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Boolean type. Render as checkbox.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Date time. Render as three select lists (day, month, year).
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Float type. Render small text field.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # HTML type. Render ckeditor wysiwyg.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Image type. Render select file field.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Integer type. Render small text field.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # String type. Render large text field.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module ConstructorPages
4
2
  module Types
5
3
  # Text type. Render textarea.
@@ -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: 'btn btn-danger pull-right' unless @field.new_record?
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,2 @@
1
+ = hidden_field_tag "fields[#{field.code_name}]", 0
1
2
  = check_box_tag "fields[#{field.code_name}]", nil, page.get_field_value(field.code_name)
@@ -1 +1 @@
1
- = text_area_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), rows: 10, class: 'span9 ckeditor'
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: 'span6'
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: 'span6'
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
- .b-form__row
33
- = f.label :parent_id, class: 'b-form__label'
34
- = f.select :parent_id, options_for_select(for_select(@pages, true), selected: @parent_id), disabled: @page.self_and_descendants.map(&:id), include_blank: '--'
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
- - if @template_exists
3
- = link_to new_page_path, class: 'b-button' do
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
@@ -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.
@@ -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
@@ -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}» успешно удалено.
@@ -23,5 +23,5 @@ ConstructorPages::Engine.routes.draw do
23
23
 
24
24
  root to: 'pages#show'
25
25
 
26
- get '*all(.:format)' => 'pages#show', format: /(html|json|xml)/
26
+ get '*path' => 'pages#show'
27
27
  end
@@ -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 self.up
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 self.up
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,9 @@
1
1
  class AddDefaultTemplate < ActiveRecord::Migration
2
2
  def self.up
3
3
  ConstructorPages::Template.create!(
4
- :name => "Page",
5
- :code_name => "page",
6
- :child_id => 1
4
+ name: 'Page',
5
+ code_name: 'page',
6
+ child_id: 1
7
7
  )
8
8
  end
9
9
 
@@ -1,9 +1,5 @@
1
1
  class RemoveChildIdFromTemplates < ActiveRecord::Migration
2
- def self.up
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
@@ -1,9 +1,5 @@
1
1
  class RenameLinkToRedirect < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  rename_column 'constructor_pages_pages', :link, :redirect
4
4
  end
5
-
6
- def self.down
7
- rename_column 'constructor_pages_pages', :redirect, :link
8
- 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 self.up
2
+ def change
3
3
  create_table ConstructorPages::Page.table_name do |t|
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 => ""
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, :default => true
14
- t.boolean :in_nav, :default => true
15
- t.boolean :in_map, :default => true
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 self.up
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 self.up
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 self.up
2
+ def change
3
3
  create_table ConstructorPages::Types::StringType.table_name do |t|
4
- t.string :value, :default => ""
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 self.up
2
+ def change
3
3
  create_table ConstructorPages::Types::FloatType.table_name do |t|
4
- t.float :value, :default => 0.0
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 self.up
2
+ def change
3
3
  create_table ConstructorPages::Types::BooleanType.table_name do |t|
4
- t.boolean :value, :default => false
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 self.up
2
+ def change
3
3
  create_table ConstructorPages::Types::IntegerType.table_name do |t|
4
- t.integer :value, :default => 0
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