constructor-pages 0.5.8 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9b2d5a5066524d6c27449d84de87965553916c7
4
- data.tar.gz: 88bdd55c263eaf36a80cf7e4638a840a98cc245a
3
+ metadata.gz: c3259f9691d8cbc03a1a0125470d5755657a0bf3
4
+ data.tar.gz: 3dbcf5cf69714b79c4070c4a2386ffca74587811
5
5
  SHA512:
6
- metadata.gz: 06d3f0dace870f2325d88361ec28bea1c7829475db50e105b6d086bb91a91f555bbb8ae9b4599a8e2ac4f29bc4e213969324866603e3344ef36e6131e0ec25dd
7
- data.tar.gz: 8ef00cb3d76539fc7923cacf066367b686d91aa11269325c9b0351a3430e859d6fcc5052cda0afe8d25f40fca51efc6977923aef9e92ef4aedf257be92101841
6
+ metadata.gz: 5e6088570f1810b6b26b0bf6b02405c4b758785913f0f8d9aeb35f01f6e5784398d32335c0e4b33f6b34150b8099f94a91086adf99d283393d5f61f03fde2cc1
7
+ data.tar.gz: f3bbd308a22d42ae3e958e61dc3a40384fe2f1d91736c52dd351d6839b37e20b098ecfa42529892e64e592d6fa56861c1dfdd73910886145c669ddd676d5bde0
@@ -13,7 +13,7 @@ module ConstructorPages
13
13
  end
14
14
 
15
15
  def create
16
- @field = Field.new params[:field]
16
+ @field = Field.new field_params
17
17
 
18
18
  if @field.save
19
19
  redirect_to edit_template_path(@field.template_id), notice: t(:field_success_added, name: @field.name)
@@ -42,7 +42,7 @@ module ConstructorPages
42
42
  field.destroy
43
43
  end
44
44
  end
45
- if @field.update_attributes params[:field]
45
+ if @field.update field_params
46
46
  redirect_to edit_template_url(@field.template.id), notice: t(:field_success_updated, name: @field.name)
47
47
  else
48
48
  render :action => "edit"
@@ -61,6 +61,15 @@ module ConstructorPages
61
61
 
62
62
  private
63
63
 
64
+ def field_params
65
+ params.require(:field).permit(
66
+ :name,
67
+ :code_name,
68
+ :template_id,
69
+ :type_value
70
+ )
71
+ end
72
+
64
73
  def move_to(to)
65
74
  @field = Field.find(params[:id])
66
75
  to == :up ? @field.move_higher : @field.move_lower
@@ -3,10 +3,8 @@
3
3
  module ConstructorPages
4
4
  class PagesController < ConstructorCore::ApplicationController
5
5
  include MoveHelper
6
- caches_page :show
7
6
 
8
7
  before_filter {@roots = Page.roots}
9
- before_filter :cache, only: [:create, :update, :destroy, :move_up, :move_down]
10
8
 
11
9
  def new
12
10
  @page, @template_id, @multipart = Page.new, Template.first.id, false
@@ -92,7 +90,7 @@ module ConstructorPages
92
90
  end
93
91
 
94
92
  def create
95
- @page = Page.new params[:page]
93
+ @page = Page.new page_params
96
94
 
97
95
  if @page.save
98
96
  redirect_to pages.pages_url, notice: t(:page_success_added, name: @page.name)
@@ -108,7 +106,7 @@ module ConstructorPages
108
106
  @page.remove_fields_values
109
107
  end
110
108
 
111
- if @page.update_attributes params[:page]
109
+ if @page.update page_params
112
110
  @page.create_fields_values
113
111
  @page.update_fields_values params[:fields]
114
112
 
@@ -129,16 +127,26 @@ module ConstructorPages
129
127
 
130
128
  private
131
129
 
132
- def error_404
133
- render file: "#{Rails.root}/public/404", layout: false, status: 404
130
+ def page_params
131
+ params.require(:page).permit(
132
+ :active,
133
+ :name,
134
+ :url,
135
+ :title,
136
+ :keywords,
137
+ :description,
138
+ :auto_url,
139
+ :parent_id,
140
+ :template_id,
141
+ :in_nav,
142
+ :in_map,
143
+ :in_menu,
144
+ :link
145
+ )
134
146
  end
135
147
 
136
- def cache
137
- expire_page :action => :show
138
- cache_dir = ActionController::Base.page_cache_directory
139
- unless cache_dir == Rails.root.to_s+"/public"
140
- FileUtils.rm_r(Dir.glob(cache_dir+"/*")) rescue Errno::ENOENT
141
- end
148
+ def error_404
149
+ render file: "#{Rails.root}/public/404", layout: false, status: 404
142
150
  end
143
151
  end
144
152
  end
@@ -8,11 +8,6 @@ module ConstructorPages
8
8
 
9
9
  def new
10
10
  @template = Template.new
11
-
12
- if params[:template]
13
- @parent = Template.find(params[:template])
14
- @template.parent_id = @parent.id
15
- end
16
11
  end
17
12
 
18
13
  def edit
@@ -20,7 +15,7 @@ module ConstructorPages
20
15
  end
21
16
 
22
17
  def create
23
- @template = Template.new params[:template]
18
+ @template = Template.new template_params
24
19
 
25
20
  if @template.save
26
21
  redirect_to templates_url, notice: t(:template_success_added, name: @template.name)
@@ -32,7 +27,7 @@ module ConstructorPages
32
27
  def update
33
28
  @template = Template.find params[:id]
34
29
 
35
- if @template.update_attributes params[:template]
30
+ if @template.update template_params
36
31
  redirect_to templates_url, notice: t(:template_success_updated, name: @template.name)
37
32
  else
38
33
  render action: :edit
@@ -47,5 +42,16 @@ module ConstructorPages
47
42
  end
48
43
 
49
44
  %w{up down}.each {|m| define_method "move_#{m}" do move_to :template, m.to_sym end}
45
+
46
+ private
47
+
48
+ def template_params
49
+ params.require(:template).permit(
50
+ :name,
51
+ :code_name,
52
+ :parent_id,
53
+ :child_id
54
+ )
55
+ end
50
56
  end
51
57
  end
@@ -5,8 +5,6 @@ module ConstructorPages
5
5
  #
6
6
  # Each field has type of value such as float, integer, string...
7
7
  class Field < ActiveRecord::Base
8
- attr_accessible :name, :code_name, :type_value, :template_id, :template
9
-
10
8
  # Adding code_name_uniqueness method
11
9
  include CodeNameUniq
12
10
 
@@ -38,7 +36,7 @@ module ConstructorPages
38
36
  def type_class; "constructor_pages/types/#{type_value}_type".classify.constantize end
39
37
 
40
38
  # Return object of type_value by page
41
- def find_type_object(page); type_class.find_by_field_id_and_page_id(id, page.id) end
39
+ def find_type_object(page); type_class.where(field_id: id, page_id: page.id).first end
42
40
 
43
41
  # Create object of type_value by page
44
42
  def create_type_object(page); type_class.create(field_id: id, page_id: page.id) end
@@ -3,11 +3,6 @@
3
3
  module ConstructorPages
4
4
  # Page model. Pages are core for company websites, blogs etc.
5
5
  class Page < ActiveRecord::Base
6
- attr_accessible :name, :title, :keywords, :description,
7
- :url, :full_url, :active, :auto_url,
8
- :parent, :parent_id, :link, :in_menu, :in_map,
9
- :in_nav, :template_id, :template
10
-
11
6
  # Adding has_many for all field types
12
7
  Field::TYPES.each do |t|
13
8
  class_eval %{
@@ -19,7 +14,7 @@ module ConstructorPages
19
14
 
20
15
  belongs_to :template
21
16
 
22
- default_scope order :lft
17
+ default_scope -> { order(:lft)}
23
18
 
24
19
  validate :template_check
25
20
 
@@ -32,7 +27,7 @@ module ConstructorPages
32
27
  # Used for find page by request. It return first page if no request given
33
28
  # @param request for example <tt>'/conditioners/split-systems/zanussi'</tt>
34
29
  def self.find_by_request_or_first(request = nil)
35
- request.nil? ? Page.first : Page.find_by_full_url(request)
30
+ request.nil? ? Page.first : Page.where(full_url: request).first
36
31
  end
37
32
 
38
33
  # Generate full_url from parent id and url
@@ -47,6 +42,7 @@ module ConstructorPages
47
42
  # field and template code_name should be uniqueness for page methods
48
43
  def self.check_code_name(code_name)
49
44
  [code_name, code_name.pluralize, code_name.singularize].each do |name|
45
+ # TODO: replace Page.first
50
46
  if Page.first.respond_to?(name)
51
47
  return false
52
48
  end
@@ -57,7 +53,7 @@ module ConstructorPages
57
53
 
58
54
  # Get field by code_name
59
55
  def field(code_name)
60
- Field.find_by_code_name_and_template_id code_name, template_id
56
+ Field.find_by code_name: code_name, template_id: template_id
61
57
  end
62
58
 
63
59
  # Get value of field by code_name
@@ -80,13 +76,16 @@ module ConstructorPages
80
76
  value = params[field.code_name.to_sym]
81
77
 
82
78
  _type_object = field.find_type_object(self)
83
- _type_object.value = 0 if field.type_value == 'boolean' and reset_booleans
84
79
 
85
- if value
86
- _type_object.value = field.type_value == 'date' ? parse_date(value).to_s : value
87
- end
80
+ if _type_object
81
+ _type_object.value = 0 if field.type_value == 'boolean' and reset_booleans
82
+
83
+ if value
84
+ _type_object.value = value
85
+ end
88
86
 
89
- _type_object.save
87
+ _type_object.save
88
+ end
90
89
  end
91
90
  end
92
91
 
@@ -107,12 +106,12 @@ module ConstructorPages
107
106
  # It determines if code_name is singular or nor
108
107
  # @param code_name template code name
109
108
  def find_page_in_branch(code_name)
110
- _template = Template.find_by_code_name code_name.singularize
109
+ _template = Template.where(code_name: code_name.singularize).first
111
110
 
112
111
  if _template
113
112
  result = []
114
113
  result = descendants.where(template_id: _template.id) if code_name == code_name.pluralize
115
- result = ancestors.find_by_template_id(_template.id) if result.empty?
114
+ result = ancestors.where(template_id: _template.id).first if result.empty?
116
115
  result
117
116
  end
118
117
  end
@@ -158,13 +157,8 @@ module ConstructorPages
158
157
  self.url = ((auto_url || url.empty?) ? translit(name) : url).parameterize
159
158
  end
160
159
 
161
- # TODO: move out
162
- def parse_date(value)
163
- Date.new(value['date(1i)'].to_i, value['date(2i)'].to_i, value['date(3i)'].to_i)
164
- end
165
-
166
160
  # TODO: add more languages
167
- # Translit to english
161
+ # translit to english
168
162
  def translit(str)
169
163
  Russian.translit(str)
170
164
  end
@@ -7,12 +7,9 @@ module ConstructorPages
7
7
  # For example:
8
8
  # template "Product" should has fields like "price", "description", "size" etc.
9
9
  class Template < ActiveRecord::Base
10
-
11
10
  # Adding code_name_uniqueness method
12
11
  include CodeNameUniq
13
12
 
14
- attr_accessible :name, :code_name, :child_id, :parent_id, :parent
15
-
16
13
  validates_presence_of :name, :code_name
17
14
  validates_uniqueness_of :code_name
18
15
  validate :code_name_uniqueness
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Boolean type. Render as checkbox.
5
6
  class BooleanType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -2,15 +2,10 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Date time. Render as three select lists (day, month, year).
5
6
  class DateType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
-
11
- def russian
12
- Russian::strftime(self.value, "%d %B %Y").gsub(/0(\d\D)/, '\1')
13
- end
14
9
  end
15
10
  end
16
11
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Float type. Render small text field.
5
6
  class FloatType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # HTML type. Render ckeditor wysiwyg.
5
6
  class HtmlType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -2,16 +2,17 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Image type. Render select file field.
5
6
  class ImageType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
 
11
10
  image_accessor :value
12
11
 
13
12
  validates :value, :presence => true
13
+ # Max size is 5 MB
14
14
  validates_size_of :value, :maximum => 5.megabytes, :message => :incorrect_size
15
+ # Accept only jpeg, png, gif
15
16
  validates_property :mime_type, :of => :value, :in => %w(image/jpeg image/png image/gif), :message => :incorrect_format
16
17
  end
17
18
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Integer type. Render small text field.
5
6
  class IntegerType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # String type. Render large text field.
5
6
  class StringType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  module ConstructorPages
4
4
  module Types
5
+ # Text type. Render textarea.
5
6
  class TextType < ActiveRecord::Base
6
- attr_accessible :value, :field_id, :field, :page_id, :page
7
-
8
7
  belongs_to :field
9
8
  belongs_to :page
10
9
  end
@@ -1 +1 @@
1
- = date_select "fields[#{field.code_name}]", "date", default: page.get_field_value(field.code_name)
1
+ = text_field_tag "fields[#{field.code_name}]", page.get_field_value(field.code_name), type: :date
@@ -93,5 +93,5 @@
93
93
  .span12
94
94
  .form-actions
95
95
  = f.submit :class => "btn btn-primary"
96
- = link_to t(:cancel), pages_url, :class => "btn"
97
- = link_to t(:delete_page), @page, :confirm => t(:are_you_sure?), :method => :delete, :class => "btn btn-danger pull-right" unless @page.new_record?
96
+ = link_to t(:cancel), pages_url, class: 'btn'
97
+ = link_to t(:delete_page), @page, method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-danger pull-right' unless @page.new_record?
@@ -21,8 +21,8 @@
21
21
  </li>
22
22
 
23
23
  <li>
24
- - if page.active == true
25
- = link_to page.name, page.full_url, :class => "btn btn-link"
24
+ - if page.published?
25
+ = link_to page.name, page.full_url, class: 'btn btn-link'
26
26
  - else
27
27
  %button.btn.disabled= page.name
28
28
 
@@ -42,9 +42,9 @@
42
42
  - else
43
43
  = link_to "<i class='icon-chevron-down'></i> #{t :add} #{ConstructorPages::Template.find(page.template.child_id).name.downcase}".html_safe, new_child_page_path(page), :class => "btn btn-success btn-mini"
44
44
 
45
- = link_to "<i class='icon-remove'></i> #{t :delete}".html_safe, page_path(page), confirm: t(:are_you_sure?), method: :delete, class: 'btn btn-danger btn-mini pull-right'
45
+ = link_to "<i class='icon-remove'></i> #{t :delete}".html_safe, page_path(page), method: :delete, class: 'btn btn-danger btn-mini pull-right', data: {confirm: t(:are_you_sure?)}
46
+
46
47
 
47
-
48
48
 
49
49
  - level = page.level
50
50
  - last_page = page
@@ -37,11 +37,11 @@
37
37
  = link_to "<i class='icon-arrow-up'></i>".html_safe, field_move_up_path(field), :class => "btn btn-mini #{"disabled" if field.first?}"
38
38
 
39
39
  = link_to "<i class='icon-pencil icon-white'></i>".html_safe, edit_field_path(field, field.template), :class => "btn btn-mini btn-primary"
40
- = link_to "<i class='icon-remove icon-white'></i>".html_safe, field_path(field), :method => :delete, :confirm => t(:are_you_sure?), :class => "btn btn-mini btn-danger"
40
+ = link_to "<i class='icon-remove icon-white'></i>".html_safe, field_path(field), method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-mini btn-danger'
41
41
 
42
42
  .row-fluid
43
43
  .span12
44
44
  .form-actions
45
45
  = f.submit :class => "btn btn-primary"
46
46
  = link_to t(:cancel), templates_url, :class => "btn"
47
- = link_to t(:delete_template), @template, :confirm => t(:are_you_sure?), :method => :delete, :class => "btn btn-danger pull-right" unless @template.new_record?
47
+ = link_to t(:delete_template), @template, method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-danger pull-right' unless @template.new_record?
@@ -8,7 +8,6 @@ ru:
8
8
  are_you_sure?: 'Вы уверены?'
9
9
  display_in: 'Отображать в'
10
10
 
11
-
12
11
  menu: 'Меню'
13
12
  breadcrumbs: 'Хлебные крошки'
14
13
 
@@ -21,9 +21,10 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_dependency 'dragonfly'
23
23
  s.add_dependency 'rack-cache'
24
- s.add_dependency 'awesome_nested_set', '~> 2.0'
24
+ s.add_dependency 'awesome_nested_set'
25
25
  s.add_dependency 'haml-rails'
26
26
  s.add_dependency 'acts_as_list'
27
+ s.add_dependency 'russian'
27
28
 
28
29
  s.add_development_dependency 'rspec-rails'
29
30
  s.add_development_dependency 'capybara'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constructor-pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Zotov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-18 00:00:00.000000000 Z
11
+ date: 2013-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: constructor-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.8
19
+ version: 0.6.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.5.8
26
+ version: 0.6.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dragonfly
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: awesome_nested_set
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
- version: '2.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: haml-rails
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: russian
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec-rails
99
113
  requirement: !ruby/object:Gem::Requirement