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.
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