muck-contents 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -66,6 +66,27 @@ This method determines who can add content to any url on your website. For exam
66
66
  http://www.example.com/a/test/page and that page does not exist, muck contents will automatically create
67
67
  a page for you at that location if the logged in user has a method can_add_root_content? that returns true.
68
68
 
69
+ === Attach content to a parent model
70
+ Content can be scoped to a specific model. ie
71
+
72
+ class User < ActiveRecord::Base
73
+ include MuckContents::Models::MuckContentable
74
+ end
75
+
76
+ Then the user's content can be accessed via:
77
+
78
+ @user.contents
79
+
80
+ === Content Permissions
81
+ By default users are not allowed to add content. Add 'can_add_root_content?' to your user model to determine which users can add content to the root of the
82
+ website. A default configuration might be admins only:
83
+
84
+ class User < ActiveRecord::Base
85
+ def can_add_root_content?
86
+ admin?
87
+ end
88
+ end
89
+
69
90
  === Content models
70
91
  Create the following models in your project. This let's you add any other methods that you see fit.
71
92
 
@@ -83,14 +104,13 @@ Create the following models in your project. This let's you add any other metho
83
104
 
84
105
  === Contents controller
85
106
 
86
- Create a ContentsController and inherit from Muck::ContentsController. Unfortunately, due to routing issues this is required or
87
- we'd have to hard code the routes to go to muck/contents which prevent modification of the contents_controller.
107
+ Optionally create a ContentsController and inherit from Muck::ContentsController. This step is only needed if you intend to override the default contents controller functionality.
88
108
  class ContentsController < Muck::ContentsController
89
109
  end
90
110
 
91
111
  Add a route for the new controller:
92
112
  MyApp::Application.routes.draw do
93
- map.resource :contents
113
+ resources :contents
94
114
  end
95
115
 
96
116
  Override the contents controller to change the the security model. For example:
data/Rakefile CHANGED
@@ -64,7 +64,7 @@ begin
64
64
  gem.add_dependency "awesome_nested_set"
65
65
  gem.add_dependency "sanitize"
66
66
  gem.add_dependency "acts-as-taggable-on"
67
- gem.add_dependency "friendly_id"
67
+ gem.add_dependency "friendly_id", ">=3.2.0"
68
68
  gem.add_dependency "uploader"
69
69
  gem.add_dependency "tiny_mce"
70
70
  gem.files.exclude 'test/**'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.1.1
@@ -1,5 +1,5 @@
1
1
  <% content_for :head do -%>
2
2
  <meta name="keywords" content="<%=@content.tags.join(',')%>" />
3
3
  <% end -%>
4
- <%= @content.locale_body(I18n.locale) %>
4
+ <%= @content.locale_body(I18n.locale).html_safe %>
5
5
  <%= render :partial => 'contents/admin', :locals => { :content => @content } -%>
@@ -1,3 +1,4 @@
1
+ ---
1
2
  en:
2
3
  muck:
3
4
  contents:
@@ -0,0 +1,10 @@
1
+ class AddCachedSlugs < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :contents, :cached_slug, :string
4
+ add_index :contents, :cached_slug
5
+ end
6
+
7
+ def self.down
8
+ remove_column :contents, :cached_slug
9
+ end
10
+ end
data/lib/muck-contents.rb CHANGED
@@ -7,6 +7,7 @@ require 'uploader'
7
7
 
8
8
  require 'muck-contents/config.rb'
9
9
  require 'muck-contents/rack/rack.rb'
10
+ require 'muck-contents/models/contentable.rb'
10
11
  require 'muck-contents/models/content.rb'
11
12
  require 'muck-contents/models/content_permission.rb'
12
13
  require 'muck-contents/models/content_translation.rb'
@@ -51,11 +51,11 @@ module MuckContents
51
51
  return if @content # in case @content is setup by an overriding method
52
52
  id = params[:id] || Content.id_from_uri(env["muck-contents.request_uri"])
53
53
  scope = params[:scope] || Content.scope_from_uri(env["muck-contents.request_uri"])
54
- @content = Content.find(id, :scope => scope) rescue nil
54
+ @content = Content.find(id, :include => :slugs, :conditions => {:slugs => {:scope => scope}}) rescue nil
55
55
  if @content.blank?
56
56
  @contentable = get_parent
57
57
  if @contentable
58
- @content = Content.find(params[:id], :scope => Content.contentable_to_scope(@contentable)) rescue nil
58
+ @content = @contentable.contents.find(params[:id]) rescue nil
59
59
  end
60
60
  end
61
61
  end
@@ -22,6 +22,11 @@ module MuckContents
22
22
  I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '..', '..', 'config', 'locales', '*.{rb,yml}') ]
23
23
  end
24
24
  end
25
+
26
+ initializer 'muck-contents.add_admin_ui_links', :after => 'muck-engine.add_admin_ui_links' do
27
+ # Add admin link for contents
28
+ MuckEngine.configuration.add_muck_admin_nav_item(I18n.translate('muck.engine.admin_content'), '/admin/contents')
29
+ end
25
30
 
26
31
  end
27
32
  end
@@ -0,0 +1,14 @@
1
+ # include MuckContents::Models::MuckContentable
2
+ module MuckContents
3
+ module Models
4
+ module MuckContentable
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ has_many :contents, :as => :contentable, :dependent => :destroy
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-contents}
8
- s.version = "3.1.0"
8
+ s.version = "3.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Ball", "Joel Duffin"]
12
- s.date = %q{2010-11-18}
12
+ s.date = %q{2011-02-26}
13
13
  s.email = %q{justin@tatemae.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -91,6 +91,7 @@ Gem::Specification.new do |s|
91
91
  "db/migrate/20090703055724_add_contents.rb",
92
92
  "db/migrate/20090806230610_add_layout_to_contents.rb",
93
93
  "db/migrate/20090808175401_add_contents_comment_counter_cache.rb",
94
+ "db/migrate/20110226174321_add_cached_slugs.rb",
94
95
  "lib/muck-contents.rb",
95
96
  "lib/muck-contents/config.rb",
96
97
  "lib/muck-contents/controllers/content_handler.rb",
@@ -98,6 +99,7 @@ Gem::Specification.new do |s|
98
99
  "lib/muck-contents/models/content.rb",
99
100
  "lib/muck-contents/models/content_permission.rb",
100
101
  "lib/muck-contents/models/content_translation.rb",
102
+ "lib/muck-contents/models/contentable.rb",
101
103
  "lib/muck-contents/rack/rack.rb",
102
104
  "lib/muck-contents/routes.rb",
103
105
  "lib/tasks/muck_contents.rake",
@@ -1473,11 +1475,10 @@ Gem::Specification.new do |s|
1473
1475
  ]
1474
1476
  s.homepage = %q{http://github.com/tatemae/muck-contents}
1475
1477
  s.require_paths = ["lib"]
1476
- s.rubygems_version = %q{1.3.7}
1478
+ s.rubygems_version = %q{1.5.2}
1477
1479
  s.summary = %q{Add content to your muck based project}
1478
1480
 
1479
1481
  if s.respond_to? :specification_version then
1480
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
1481
1482
  s.specification_version = 3
1482
1483
 
1483
1484
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -1488,7 +1489,7 @@ Gem::Specification.new do |s|
1488
1489
  s.add_runtime_dependency(%q<awesome_nested_set>, [">= 0"])
1489
1490
  s.add_runtime_dependency(%q<sanitize>, [">= 0"])
1490
1491
  s.add_runtime_dependency(%q<acts-as-taggable-on>, [">= 0"])
1491
- s.add_runtime_dependency(%q<friendly_id>, [">= 0"])
1492
+ s.add_runtime_dependency(%q<friendly_id>, [">= 3.2.0"])
1492
1493
  s.add_runtime_dependency(%q<uploader>, [">= 0"])
1493
1494
  s.add_runtime_dependency(%q<tiny_mce>, [">= 0"])
1494
1495
  else
@@ -1499,7 +1500,7 @@ Gem::Specification.new do |s|
1499
1500
  s.add_dependency(%q<awesome_nested_set>, [">= 0"])
1500
1501
  s.add_dependency(%q<sanitize>, [">= 0"])
1501
1502
  s.add_dependency(%q<acts-as-taggable-on>, [">= 0"])
1502
- s.add_dependency(%q<friendly_id>, [">= 0"])
1503
+ s.add_dependency(%q<friendly_id>, [">= 3.2.0"])
1503
1504
  s.add_dependency(%q<uploader>, [">= 0"])
1504
1505
  s.add_dependency(%q<tiny_mce>, [">= 0"])
1505
1506
  end
@@ -1511,7 +1512,7 @@ Gem::Specification.new do |s|
1511
1512
  s.add_dependency(%q<awesome_nested_set>, [">= 0"])
1512
1513
  s.add_dependency(%q<sanitize>, [">= 0"])
1513
1514
  s.add_dependency(%q<acts-as-taggable-on>, [">= 0"])
1514
- s.add_dependency(%q<friendly_id>, [">= 0"])
1515
+ s.add_dependency(%q<friendly_id>, [">= 3.2.0"])
1515
1516
  s.add_dependency(%q<uploader>, [">= 0"])
1516
1517
  s.add_dependency(%q<tiny_mce>, [">= 0"])
1517
1518
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-contents
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease: false
4
+ hash: 1
5
+ prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 0
10
- version: 3.1.0
9
+ - 1
10
+ version: 3.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Ball
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-11-18 00:00:00 -07:00
19
+ date: 2011-02-26 00:00:00 -07:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -125,10 +125,12 @@ dependencies:
125
125
  requirements:
126
126
  - - ">="
127
127
  - !ruby/object:Gem::Version
128
- hash: 3
128
+ hash: 15
129
129
  segments:
130
+ - 3
131
+ - 2
130
132
  - 0
131
- version: "0"
133
+ version: 3.2.0
132
134
  type: :runtime
133
135
  version_requirements: *id008
134
136
  - !ruby/object:Gem::Dependency
@@ -244,6 +246,7 @@ files:
244
246
  - db/migrate/20090703055724_add_contents.rb
245
247
  - db/migrate/20090806230610_add_layout_to_contents.rb
246
248
  - db/migrate/20090808175401_add_contents_comment_counter_cache.rb
249
+ - db/migrate/20110226174321_add_cached_slugs.rb
247
250
  - lib/muck-contents.rb
248
251
  - lib/muck-contents/config.rb
249
252
  - lib/muck-contents/controllers/content_handler.rb
@@ -251,6 +254,7 @@ files:
251
254
  - lib/muck-contents/models/content.rb
252
255
  - lib/muck-contents/models/content_permission.rb
253
256
  - lib/muck-contents/models/content_translation.rb
257
+ - lib/muck-contents/models/contentable.rb
254
258
  - lib/muck-contents/rack/rack.rb
255
259
  - lib/muck-contents/routes.rb
256
260
  - lib/tasks/muck_contents.rake
@@ -1653,7 +1657,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1653
1657
  requirements: []
1654
1658
 
1655
1659
  rubyforge_project:
1656
- rubygems_version: 1.3.7
1660
+ rubygems_version: 1.5.2
1657
1661
  signing_key:
1658
1662
  specification_version: 3
1659
1663
  summary: Add content to your muck based project