fullstack-cms 0.1.9 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
data/TODO.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.11
|
data/app/models/page.rb
CHANGED
@@ -6,11 +6,14 @@ class Page < ActiveRecord::Base
|
|
6
6
|
|
7
7
|
field :name
|
8
8
|
field :uid
|
9
|
+
field :scope
|
9
10
|
index :uid, :unique => true
|
10
11
|
|
11
12
|
field :path
|
12
13
|
field :resource_type
|
13
14
|
|
15
|
+
timestamps
|
16
|
+
|
14
17
|
def home?
|
15
18
|
path == "/"
|
16
19
|
end
|
@@ -23,6 +26,39 @@ class Page < ActiveRecord::Base
|
|
23
26
|
name
|
24
27
|
end
|
25
28
|
|
29
|
+
def resource_class
|
30
|
+
if self.resourceful?
|
31
|
+
@resource_class ||= resource_type.to_s.camelize.constantize
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# eg.
|
36
|
+
# # params => { :q => "abc", :a => 5, :slug => "first_post"}
|
37
|
+
# # page.path => "/blog/:slug"
|
38
|
+
# post = page.fetch(params)
|
39
|
+
# == Post.where(:slug => "first_post").first
|
40
|
+
|
41
|
+
def fetch_resource(params = {})
|
42
|
+
if self.resourceful?
|
43
|
+
meaningful_params = params.stringify_keys.select {|k, v|
|
44
|
+
path_params.include?(k)
|
45
|
+
}
|
46
|
+
resource_class.where(meaningful_params).first
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def path_params
|
51
|
+
self.path.scan(/:([A-z_][A-z0-9_]*)/).flatten
|
52
|
+
end
|
53
|
+
|
54
|
+
def resource_params(object)
|
55
|
+
params = {}
|
56
|
+
path_params.each { |param|
|
57
|
+
params[param.to_sym] = object.send(param)
|
58
|
+
}
|
59
|
+
params
|
60
|
+
end
|
61
|
+
|
26
62
|
has_many :page_parts
|
27
63
|
accepts_nested_attributes_for :page_parts, :allow_destroy => true
|
28
64
|
|
data/app/models/pageable.rb
CHANGED
@@ -1,5 +1,45 @@
|
|
1
1
|
module Pageable
|
2
2
|
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
def page_to_sitemap_entries(controller, page)
|
5
|
+
|
6
|
+
path = nil
|
7
|
+
options = {}
|
8
|
+
entries = []
|
9
|
+
|
10
|
+
if page.resourceful?
|
11
|
+
page.resource_class.find_each do |object|
|
12
|
+
path = Rails.application.routes.url_helpers.url_for({ :only_path => true, :controller => controller, :action => page.name }.merge(page.resource_params(object)))
|
13
|
+
options[:updated_at] = object.updated_at if object.respond_to?(:updated_at)
|
14
|
+
entries << {:path => path, :options => options}
|
15
|
+
end
|
16
|
+
else
|
17
|
+
path = Rails.application.routes.url_helpers.url_for( :only_path => true, :controller => controller, :action => page.name)
|
18
|
+
entries << {:path => path, :options => {}}
|
19
|
+
end
|
20
|
+
|
21
|
+
entries
|
22
|
+
|
23
|
+
end
|
24
|
+
module_function :page_to_sitemap_entries
|
25
|
+
|
26
|
+
def controller_sitemap_entries(controller)
|
27
|
+
entries = []
|
28
|
+
Pageable.controller_pages(controller).map do |name, page|
|
29
|
+
entries += page_to_sitemap_entries(controller, page)
|
30
|
+
end
|
31
|
+
entries
|
32
|
+
end
|
33
|
+
module_function :controller_sitemap_entries
|
34
|
+
|
35
|
+
#
|
36
|
+
# Pageable.controller_pages("site/site")
|
37
|
+
#
|
38
|
+
def controller_pages(controller)
|
39
|
+
controller_class = "#{controller}_controller".camelize.constantize
|
40
|
+
controller_class.pages if controller_class.respond_to?(:pages)
|
41
|
+
end
|
42
|
+
module_function :controller_pages
|
3
43
|
|
4
44
|
included do
|
5
45
|
before_filter :load_current_page
|
@@ -8,6 +48,8 @@ module Pageable
|
|
8
48
|
module ClassMethods
|
9
49
|
def page(name, path, options = {}, &block)
|
10
50
|
|
51
|
+
page_definition_options = options.clone
|
52
|
+
|
11
53
|
this_controller_name = "#{self.name.underscore}".gsub("_controller", "")
|
12
54
|
uid = "#{this_controller_name}##{name}"
|
13
55
|
parent_uid = if parent_opt = options.delete(:parent)
|
@@ -44,20 +86,22 @@ module Pageable
|
|
44
86
|
end
|
45
87
|
|
46
88
|
map(name, path, options = {}, &block)
|
47
|
-
@pages ||=
|
48
|
-
@pages
|
89
|
+
@pages ||= ActiveSupport::HashWithIndifferentAccess.new
|
90
|
+
@pages[name] = page
|
49
91
|
end
|
50
|
-
|
92
|
+
|
93
|
+
def page_names
|
94
|
+
@page_names ||= @pages.map {|name, page| page.name}
|
95
|
+
end
|
96
|
+
|
51
97
|
def pages
|
52
|
-
@pages
|
98
|
+
@pages ||= ActiveSupport::HashWithIndifferentAccess.new
|
53
99
|
end
|
100
|
+
|
54
101
|
end
|
55
102
|
|
56
103
|
def load_current_page
|
57
|
-
if self.class.pages
|
58
|
-
this_controller_name = "#{self.class.name.underscore}".gsub("_controller", "")
|
59
|
-
@current_page = Page.find_by_uid("#{this_controller_name}##{action_name}")
|
60
|
-
end
|
104
|
+
@current_page.reload if @current_page = self.class.pages[action_name]
|
61
105
|
end
|
62
106
|
|
63
107
|
end
|
data/fullstack-cms.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "fullstack-cms"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["mcasimir"]
|
12
|
-
s.date = "2012-08-
|
12
|
+
s.date = "2012-08-22"
|
13
13
|
s.description = "CMS system built on fullstack"
|
14
14
|
s.email = "maurizio.cas@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,7 +23,6 @@ Gem::Specification.new do |s|
|
|
23
23
|
"TODO.md",
|
24
24
|
"VERSION",
|
25
25
|
"app/controllers/admin/menus_controller.rb",
|
26
|
-
"app/controllers/admin/page_parts_controller.rb",
|
27
26
|
"app/controllers/admin/pages_controller.rb",
|
28
27
|
"app/controllers/admin/photos_controller.rb",
|
29
28
|
"app/controllers/admin/settings_controller.rb",
|
@@ -97,6 +96,7 @@ Gem::Specification.new do |s|
|
|
97
96
|
"lib/generators/fullstack/cms/templates/rails/config/initializers/devise_controller.rb",
|
98
97
|
"lib/generators/fullstack/cms/templates/rails/config/initializers/devise_mailer.rb",
|
99
98
|
"lib/generators/fullstack/cms/templates/rails/config/initializers/fullstack.rb",
|
99
|
+
"lib/generators/fullstack/cms/templates/rails/config/initializers/sitemap.rb",
|
100
100
|
"lib/generators/fullstack/cms/templates/rails/config/schedule.rb",
|
101
101
|
"lib/generators/fullstack/cms/templates/rails/config/sitemap.rb.tt",
|
102
102
|
"lib/generators/fullstack/cms/templates/rails/config/styles.yml",
|
@@ -0,0 +1,10 @@
|
|
1
|
+
if Rails.env.development?
|
2
|
+
|
3
|
+
# Set save path to a git-ignored destination for development environment
|
4
|
+
# comment these lines to use the default `Rails.root/public` instead
|
5
|
+
|
6
|
+
Sitemap.configure do |config|
|
7
|
+
config.save_path = Rails.root.join("tmp")
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fullstack-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
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-08-
|
12
|
+
date: 2012-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fullstack
|
@@ -201,7 +201,6 @@ files:
|
|
201
201
|
- TODO.md
|
202
202
|
- VERSION
|
203
203
|
- app/controllers/admin/menus_controller.rb
|
204
|
-
- app/controllers/admin/page_parts_controller.rb
|
205
204
|
- app/controllers/admin/pages_controller.rb
|
206
205
|
- app/controllers/admin/photos_controller.rb
|
207
206
|
- app/controllers/admin/settings_controller.rb
|
@@ -275,6 +274,7 @@ files:
|
|
275
274
|
- lib/generators/fullstack/cms/templates/rails/config/initializers/devise_controller.rb
|
276
275
|
- lib/generators/fullstack/cms/templates/rails/config/initializers/devise_mailer.rb
|
277
276
|
- lib/generators/fullstack/cms/templates/rails/config/initializers/fullstack.rb
|
277
|
+
- lib/generators/fullstack/cms/templates/rails/config/initializers/sitemap.rb
|
278
278
|
- lib/generators/fullstack/cms/templates/rails/config/schedule.rb
|
279
279
|
- lib/generators/fullstack/cms/templates/rails/config/sitemap.rb.tt
|
280
280
|
- lib/generators/fullstack/cms/templates/rails/config/styles.yml
|
@@ -306,7 +306,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
306
306
|
version: '0'
|
307
307
|
segments:
|
308
308
|
- 0
|
309
|
-
hash:
|
309
|
+
hash: -4299439762194972164
|
310
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
311
311
|
none: false
|
312
312
|
requirements:
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Admin::PagePartsController < Admin::BaseController
|
2
|
-
respond_to :html, :js
|
3
|
-
|
4
|
-
def update
|
5
|
-
@page_part = Page.find(params[:page_id]).page_parts.find(params[:id])
|
6
|
-
@page_part.attributes = params[:page_part]
|
7
|
-
@page_part.save
|
8
|
-
respond_with(@page_part)
|
9
|
-
end
|
10
|
-
|
11
|
-
def destroy
|
12
|
-
@page_part = Page.find(params[:page_id]).page_parts.find(params[:id])
|
13
|
-
@page_part.destroy
|
14
|
-
respond_with(@page_part)
|
15
|
-
end
|
16
|
-
end
|