simple-pages-rails 0.3.1 → 0.4.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.
@@ -2,3 +2,17 @@ $ ->
2
2
  $('.pages .chzn-select').chosen
3
3
  allow_single_deselect: true
4
4
  no_results_text: 'No results matched'
5
+
6
+ $('.pages')
7
+ .on 'focusout', '#page_url', ->
8
+ if $(this).val().length > 0
9
+ if ! /^([\w\-]{3,})$/.test($(this).val())
10
+ alert('Invalid URL!')
11
+ $(this).val('')
12
+ .on 'submit', '.simple_form', (event) ->
13
+ url = $('#page_url')
14
+ if url.val().length > 0
15
+ if ! /^([\w\-]{3,})$/.test(url.val())
16
+ alert('Invalid URL!')
17
+ url.val('')
18
+ return false
@@ -10,5 +10,14 @@ module SimplePages
10
10
  if SimplePages.extra_page_layout.present?
11
11
  has_page_layout_at SimplePages.extra_page_layout
12
12
  end
13
+
14
+ protected
15
+
16
+ def load_author_options
17
+ load_authors
18
+ @author_options = @authors.map do |author|
19
+ [author.name, author.simple_page_owner_option]
20
+ end
21
+ end
13
22
  end
14
23
  end
@@ -59,17 +59,11 @@ module SimplePages
59
59
  def load_page_options
60
60
  load_author_options
61
61
  load_page_layout_at_options
62
+ load_page_cluster_options
62
63
  end
63
64
 
64
65
  private
65
66
 
66
- def load_author_options
67
- load_authors
68
- @author_options = @authors.map do |author|
69
- [author.name, author.simple_page_owner_option]
70
- end
71
- end
72
-
73
67
  def pagination_options
74
68
  { page: params[:page], per_page: SimplePages.pages_per_page }
75
69
  end
@@ -9,6 +9,14 @@ module SimplePages
9
9
  scope :published, lambda { where('published_at <= ?', Time.zone.now) }
10
10
  scope :layout_at, lambda { |location| where(layout_at: location) }
11
11
 
12
+ def layout_at=(values)
13
+ if values.blank?
14
+ super nil
15
+ else
16
+ super values
17
+ end
18
+ end
19
+
12
20
  SimplePages.page_modules.each { |module_name| include module_name }
13
21
  end
14
22
  end
@@ -3,9 +3,34 @@
3
3
  <%= f.input :url, input_html: { class: 'span10' } %>
4
4
  <% end %>
5
5
  <%= f.input :title, input_html: { class: 'span10' } %>
6
- <%= f.input :excerpt, as: :text, input_html: { rows: 5, class: 'span10' } %>
6
+ <%= f.input :excerpt,
7
+ as: :text,
8
+ input_html: {
9
+ rows: 5,
10
+ class: 'span10'
11
+ } %>
7
12
  <%= f.input :content, input_html: { class: 'ckeditor' } %>
8
- <%= f.input :owner, collection: author_options, selected: selected_page_author(f.object), input_html: { class: 'chzn-select' } %>
9
- <%= f.input :published_at, as: :string, input_html: { value: local_published_at(f.object), class: 'datetimepicker' } %>
10
- <%= f.input :layout_at, as: :select, collection: layout_at_options %>
13
+ <%= f.input :owner,
14
+ collection: author_options,
15
+ selected: selected_page_author(f.object),
16
+ input_html: {
17
+ class: 'chzn-select'
18
+ } %>
19
+ <%= f.input :published_at,
20
+ as: :string,
21
+ input_html: {
22
+ value: local_published_at(f.object),
23
+ class: 'datetimepicker'
24
+ } %>
25
+ <%= f.input :layout_at,
26
+ as: :select,
27
+ collection: layout_at_options,
28
+ include_blank: false %>
29
+ <%= f.input :cluster,
30
+ as: :select,
31
+ collection: cluster_options,
32
+ input_html: {
33
+ multiple: true,
34
+ class: 'chzn-select'
35
+ } %>
11
36
  </div>
@@ -15,7 +15,12 @@
15
15
  <div>
16
16
  <%= simple_form_for @page, as: :page, html: { class: 'form-horizontal' } do |f| %>
17
17
  <%= f.error_notification %>
18
- <%= render 'form', f: f, author_options: @author_options, layout_at_options: @layout_at_options %>
18
+ <%= render 'form', {
19
+ f: f,
20
+ cluster_options: @cluster_options,
21
+ layout_at_options: @layout_at_options,
22
+ author_options: @author_options
23
+ } %>
19
24
  <div class="form-actions">
20
25
  <%= submit_button f %>
21
26
  </div>
@@ -12,7 +12,12 @@
12
12
  <div>
13
13
  <%= simple_form_for @page, as: :page, html: { class: 'form-horizontal' } do |f| %>
14
14
  <%= f.error_notification %>
15
- <%= render 'form', f: f, author_options: @author_options, layout_at_options: @layout_at_options %>
15
+ <%= render 'form', {
16
+ f: f,
17
+ cluster_options: @cluster_options,
18
+ layout_at_options: @layout_at_options,
19
+ author_options: @author_options
20
+ } %>
16
21
  <div class="form-actions">
17
22
  <%= submit_button f %>
18
23
  </div>
@@ -22,6 +22,7 @@ en:
22
22
  content: 'Content'
23
23
  author: 'Author'
24
24
  layout_at: 'Layout at'
25
+ cluster: 'Cluster'
25
26
  published_at: 'Published at'
26
27
  owner: 'Author'
27
28
 
@@ -30,7 +31,7 @@ en:
30
31
  page:
31
32
  hints:
32
33
  page:
33
- url: 'Only characters(a-zA-Z), numbers(0-9), hyphen(-) and underline(_) are allowed. It will be given if left blank.'
34
+ url: 'At least 3 characters. Only characters(a-zA-Z), numbers(0-9), underline(_) and hyphen(-) are allowed.<bt>It will be given if left blank.'
34
35
  published_at: 'It will not show up if blank.'
35
36
  placeholders:
36
37
  page:
@@ -22,6 +22,7 @@ zh-TW:
22
22
  content: '內容'
23
23
  author: '作者'
24
24
  layout_at: '呈現於'
25
+ cluster: '群組'
25
26
  published_at: '發布於'
26
27
  owner: '作者'
27
28
 
@@ -30,7 +31,7 @@ zh-TW:
30
31
  page:
31
32
  hints:
32
33
  page:
33
- url: '僅限使用英文字母( a-zA-Z )、數字( 0-9 )、破折號( - )與底線( _ )。若不輸入,則由系統自行賦予。'
34
+ url: '至少三個字元,僅限使用英文字母( a-zA-Z )、數字( 0-9 )、底線( _ )與破折號( - )。<br>若不輸入,則由系統自行賦予。'
34
35
  published_at: '若沒有設定時間,則不會顯示在網站中。'
35
36
  placeholders:
36
37
  page:
@@ -1,9 +1,10 @@
1
1
  en:
2
2
  simple_pages:
3
3
  layout_at:
4
- header: 'header'
5
- footer: 'footer'
6
- sidebar: 'sidebar'
4
+ general: 'General'
5
+ header: 'Header'
6
+ footer: 'Footer'
7
+ sidebar: 'Sidebar'
7
8
  titles:
8
9
  about: 'About'
9
10
  copyright: 'Copyright'
@@ -1,6 +1,7 @@
1
1
  zh-TW:
2
2
  simple_pages:
3
3
  layout_at:
4
+ general: '一般'
4
5
  header: '頁首'
5
6
  footer: '頁尾'
6
7
  sidebar: '側欄'
@@ -0,0 +1,5 @@
1
+ class AddGroupToSimplePages < ActiveRecord::Migration
2
+ def change
3
+ add_column :simple_pages, :cluster, :string, after: :layout_at
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module SimplePagesRails
2
- VERSION = '0.3.1'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/simple_pages.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'simple_pages/engine'
2
+ require 'simple_pages/controllers/page_cluster'
2
3
  require 'simple_pages/controllers/page_layout_at'
3
4
  require 'simple_pages/models/page_attachment'
4
5
  require 'simple_pages/models/page_author'
6
+ require 'simple_pages/models/page_cluster'
5
7
  require 'simple_pages/models/page_locale'
6
8
  require 'simple_pages/models/page_owner'
7
9
  require 'simple_pages/models/page_url'
@@ -9,6 +11,7 @@ require 'simple_pages/models/page_url'
9
11
  module SimplePages
10
12
  mattr_accessor :controller_modules
11
13
  @@controller_modules = [
14
+ SimplePages::Controllers::PageCluster,
12
15
  SimplePages::Controllers::PageLayoutAt
13
16
  ]
14
17
 
@@ -26,6 +29,7 @@ module SimplePages
26
29
  SimplePages::Models::PageUrl,
27
30
  SimplePages::Models::PageOwner,
28
31
  SimplePages::Models::PageLocale,
32
+ SimplePages::Models::PageCluster,
29
33
  SimplePages::Models::PageAttachment
30
34
  ]
31
35
 
@@ -0,0 +1,27 @@
1
+ require 'active_support/concern'
2
+
3
+ module SimplePages
4
+ module Controllers
5
+ module PageCluster
6
+ extend ActiveSupport::Concern
7
+ included do
8
+ helper_method :pages_cluster_for
9
+ end
10
+
11
+ module ClassMethods
12
+ end
13
+
14
+ protected
15
+
16
+ def pages_cluster_for(name, location)
17
+ SimplePages::Page.with_cluster(name).layout_at(location).published
18
+ end
19
+
20
+ def load_page_cluster_options
21
+ @cluster_options = ::Role.all.map do |role|
22
+ [t(role.name, scope: 'roles.names'), role.name]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -6,7 +6,7 @@ module SimplePages
6
6
  extend ActiveSupport::Concern
7
7
  included do
8
8
  cattr_accessor :page_layout_at
9
- self.page_layout_at = %w{header footer}
9
+ self.page_layout_at = %w{general header footer}
10
10
 
11
11
  helper_method :pages_layout_at
12
12
  end
@@ -21,7 +21,7 @@ module SimplePages
21
21
  protected
22
22
 
23
23
  def pages_layout_at(location)
24
- SimplePages::Page.layout_at(location).published
24
+ SimplePages::Page.without_cluster.layout_at(location).published
25
25
  end
26
26
 
27
27
  def load_page_layout_at_options
@@ -0,0 +1,32 @@
1
+ require 'active_support/concern'
2
+
3
+ module SimplePages
4
+ module Models
5
+ module PageCluster
6
+ extend ActiveSupport::Concern
7
+ included do
8
+ serialize :cluster
9
+ attr_accessible :cluster
10
+ end
11
+
12
+ module ClassMethods
13
+ def without_cluster
14
+ where(cluster: "--- \n...\n")
15
+ end
16
+
17
+ def with_cluster(name)
18
+ where('cluster LIKE ?', "%#{name}%")
19
+ end
20
+ end
21
+
22
+ def cluster=(values)
23
+ values = values.delete_if { |v| v.blank? }
24
+ if values.blank?
25
+ super nil
26
+ else
27
+ super values
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -6,20 +6,14 @@ module SimplePages
6
6
  extend ActiveSupport::Concern
7
7
  included do
8
8
  attr_accessible :url
9
- validates :url, format: { with: /[\w\d\-_]{3,}/ }, allow_blank: true
9
+ validates :url, format: { with: /^([\w\-]{3,})$/ }, allow_blank: true
10
10
  acts_as_url :title, sync_url: true, only_when_blank: true
11
11
  end
12
12
 
13
13
  module ClassMethods
14
14
  def find_or_create_by_url(attrs)
15
15
  url = attrs.delete :url
16
- page = where(url: url).first
17
- if page.nil?
18
- page = create(attrs)
19
- page.url = url
20
- page.save
21
- end
22
- page
16
+ where(url: url).first_or_create(attrs)
23
17
  end
24
18
  end
25
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-pages-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-24 00:00:00.000000000 Z
12
+ date: 2013-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -241,6 +241,7 @@ files:
241
241
  - config/locales/simple_pages.zh-TW.yml
242
242
  - config/routes.rb
243
243
  - db/migrate/20121206042138_create_simple_pages.rb
244
+ - db/migrate/20130318034034_add_cluster_to_simple_pages.rb
244
245
  - lib/generators/simple_pages/USAGE
245
246
  - lib/generators/simple_pages/install_generator.rb
246
247
  - lib/generators/simple_pages/templates/cancan_ext.rb
@@ -249,10 +250,12 @@ files:
249
250
  - lib/simple-pages-rails.rb
250
251
  - lib/simple-pages-rails/version.rb
251
252
  - lib/simple_pages.rb
253
+ - lib/simple_pages/controllers/page_cluster.rb
252
254
  - lib/simple_pages/controllers/page_layout_at.rb
253
255
  - lib/simple_pages/engine.rb
254
256
  - lib/simple_pages/models/page_attachment.rb
255
257
  - lib/simple_pages/models/page_author.rb
258
+ - lib/simple_pages/models/page_cluster.rb
256
259
  - lib/simple_pages/models/page_locale.rb
257
260
  - lib/simple_pages/models/page_owner.rb
258
261
  - lib/simple_pages/models/page_url.rb
@@ -321,7 +324,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
321
324
  version: '0'
322
325
  segments:
323
326
  - 0
324
- hash: -4070382107726894177
327
+ hash: 1460486982569856472
325
328
  required_rubygems_version: !ruby/object:Gem::Requirement
326
329
  none: false
327
330
  requirements:
@@ -330,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
333
  version: '0'
331
334
  segments:
332
335
  - 0
333
- hash: -4070382107726894177
336
+ hash: 1460486982569856472
334
337
  requirements: []
335
338
  rubyforge_project:
336
339
  rubygems_version: 1.8.24