muck-contents 0.1.1 → 0.1.2

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.
data/README.rdoc CHANGED
@@ -8,7 +8,7 @@ Note that all gems below should be installed automatically as a muck-contents ha
8
8
  Many of the gems are found on github so before installing do:
9
9
  gem sources -a http://gems.github.com
10
10
 
11
- sudo gem install jbasdf-acts_as_git # Versioning. Requires a git installation.
11
+ sudo gem install muck-acts_as_git # Versioning. Requires a git installation.
12
12
  sudo gem install collectiveidea-awesome_nested_set # Nested pages. Used to setup navigation hierarchy (http://github.com/collectiveidea/awesome_nested_set/tree/master)
13
13
  sudo gem install rgrove-sanitize # Remove harmful html. (http://github.com/rgrove/sanitize/tree/master.)
14
14
  sudo gem install mbleigh-acts-as-taggable-on # Tagging. (http://github.com/mbleigh/acts-as-taggable-on/tree/master)
@@ -64,7 +64,16 @@ Create the following models in your project. This let's you add any other metho
64
64
  acts_as_muck_content_permission
65
65
  end
66
66
 
67
+ === Application controller
68
+ Add acts_as_muck_content_handler if you want muck_contents to intercept pages that are not found and provide authorized users
69
+ and opportunity to add them.
70
+
71
+ class ApplicationController < ActionController::Base
72
+ acts_as_muck_content_handler
73
+ end
74
+
67
75
  === Contents controller
76
+
68
77
  Create a ContentsController and inherit from Muck::ContentsController. Unfortunately, due to routing issues this is required or
69
78
  we'd have to hard code the routes to go to muck/contents which prevent modification of the contents_controller.
70
79
  class ContentsController < Muck::ContentsController
@@ -74,27 +83,15 @@ Add a route for the new controller:
74
83
  ActionController::Routing::Routes.draw do |map|
75
84
  map.resource :contents
76
85
  end
77
-
78
86
 
79
- === Application controller
80
- Add acts_as_muck_content_handler if you want muck_contents to intercept pages that are not found and provide authorized users
81
- and opportunity to add them.
82
-
83
- class ApplicationController < ActionController::Base
84
- acts_as_muck_content_handler
85
- end
86
-
87
- === Content controller
88
87
  Override the contents controller to change the the security model. For example:
89
88
 
90
89
  class ContentsController < Muck::ContentsController
91
90
 
92
- before_filter :login_required # require the user to be logged in to add content
93
-
94
91
  # Modify this method to change how permissions are checked to see if a user can content.
95
92
  # Each model that implements 'has_muck_content' can (and should) override can_add_content? to
96
93
  # change how content permissions are handled.
97
- def has_permission_to_add_content(user, parent)
94
+ def has_permission_to_add_content(user, parent, content)
98
95
  parent.can_add_content?(user)
99
96
  end
100
97
 
@@ -103,6 +100,8 @@ Override the contents controller to change the the security model. For example:
103
100
  # layout will need to exist in your 'views/layouts' directory
104
101
  def setup_layouts
105
102
  @content_layouts =
103
+ @content_layouts << OpenStruct.new(:name => 'A Great Layout', :value => 'great_layout')
104
+ @content_layouts << OpenStruct.new(:name => 'Default', :value => 'default')
106
105
  end
107
106
 
108
107
  end
data/Rakefile CHANGED
@@ -68,34 +68,9 @@ begin
68
68
  gemspec.add_dependency "mbleigh-acts-as-taggable-on"
69
69
  gemspec.add_dependency "friendly_id"
70
70
  end
71
-
71
+ Jeweler::RubyforgeTasks.new do |rubyforge|
72
+ rubyforge.doc_task = "rdoc"
73
+ end
72
74
  rescue LoadError
73
75
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
74
76
  end
75
-
76
- # rubyforge tasks
77
- begin
78
- require 'rake/contrib/sshpublisher'
79
- namespace :rubyforge do
80
-
81
- desc "Release gem and RDoc documentation to RubyForge"
82
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
83
-
84
- namespace :release do
85
- desc "Publish RDoc to RubyForge."
86
- task :docs => [:rdoc] do
87
- config = YAML.load(
88
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
89
- )
90
-
91
- host = "#{config['username']}@rubyforge.org"
92
- remote_dir = "/var/www/gforge-projects/muck-contents/"
93
- local_dir = 'rdoc'
94
-
95
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
96
- end
97
- end
98
- end
99
- rescue LoadError
100
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
101
- end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -148,7 +148,7 @@ class Muck::ContentsController < ApplicationController
148
148
  end
149
149
  end
150
150
  end
151
- layouts
151
+ layouts.flatten
152
152
  end
153
153
 
154
154
  # This method checks to see if the specified user has the right o
@@ -20,6 +20,11 @@ module ActionController
20
20
 
21
21
  # Renders content, shows 404 or redirects to new content as appropriate
22
22
  def handle_content_request
23
+ if !request.format.html?
24
+ # If the the request is html we can bail.
25
+ render :nothing => true, :status => 404
26
+ return
27
+ end
23
28
  get_content
24
29
  if @content.blank?
25
30
  redirect_to new_content_path(:path => request.path)
@@ -66,7 +66,7 @@ module ActiveRecord
66
66
  end
67
67
 
68
68
  if options[:enable_solr]
69
- acts_as_solr :fields => [ :search_content ]
69
+ acts_as_solr({ :fields => [ :search_content => 'string' ] }, { :multi_core => true, :default_core => 'en' })
70
70
  end
71
71
 
72
72
  class_eval <<-EOV
@@ -189,10 +189,10 @@ module ActiveRecord
189
189
  self.body
190
190
  end
191
191
 
192
- # Provided for solr index
193
- # TODO figure out how to make this work with multiple languages
192
+ # Provided for solr index. Override this method if you wish to add
193
+ # other fields/data to the solr index.
194
194
  def search_content
195
- "#{title} #{body} #{tags.collect{|t| t.name}.join(' ')}"
195
+ "#{body}"
196
196
  end
197
197
 
198
198
  # Called after 'save' if auto translate is enabled
@@ -1,12 +1,15 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{muck-contents}
5
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["Justin Ball"]
9
- s.date = %q{2009-08-08}
12
+ s.date = %q{2009-08-12}
10
13
  s.email = %q{justinball@gmail.com}
11
14
  s.extra_rdoc_files = [
12
15
  "README.rdoc"
@@ -580,7 +583,6 @@ Gem::Specification.new do |s|
580
583
  "test/rails_root/db/migrate/20090806230610_add_layout_to_contents.rb",
581
584
  "test/rails_root/db/migrate/20090808005918_add_scope_index_to_slugs.rb",
582
585
  "test/rails_root/db/migrate/20090808175401_add_contents_comment_counter_cache.rb",
583
- "test/rails_root/db/schema.rb",
584
586
  "test/rails_root/features/step_definitions/common_steps.rb",
585
587
  "test/rails_root/features/step_definitions/content_steps.rb",
586
588
  "test/rails_root/features/step_definitions/webrat_steps.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-contents
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-08 00:00:00 -06:00
12
+ date: 2009-08-12 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -677,7 +677,6 @@ test_files:
677
677
  - test/rails_root/db/migrate/20090806230610_add_layout_to_contents.rb
678
678
  - test/rails_root/db/migrate/20090808005918_add_scope_index_to_slugs.rb
679
679
  - test/rails_root/db/migrate/20090808175401_add_contents_comment_counter_cache.rb
680
- - test/rails_root/db/schema.rb
681
680
  - test/rails_root/features/step_definitions/common_steps.rb
682
681
  - test/rails_root/features/step_definitions/content_steps.rb
683
682
  - test/rails_root/features/step_definitions/webrat_steps.rb
@@ -1,186 +0,0 @@
1
- # This file is auto-generated from the current state of the database. Instead of editing this file,
2
- # please use the migrations feature of Active Record to incrementally modify your database, and
3
- # then regenerate this schema definition.
4
- #
5
- # Note that this schema.rb definition is the authoritative source for your database schema. If you need
6
- # to create the application database on another system, you should be using db:schema:load, not running
7
- # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
8
- # you'll amass, the slower it'll run and the greater likelihood for issues).
9
- #
10
- # It's strongly recommended to check this file into your version control system.
11
-
12
- ActiveRecord::Schema.define(:version => 20090808175401) do
13
-
14
- create_table "activities", :force => true do |t|
15
- t.integer "item_id"
16
- t.string "item_type"
17
- t.string "template"
18
- t.integer "source_id"
19
- t.string "source_type"
20
- t.text "content"
21
- t.string "title"
22
- t.boolean "is_status_update", :default => false
23
- t.boolean "is_public", :default => true
24
- t.datetime "created_at"
25
- t.datetime "updated_at"
26
- end
27
-
28
- add_index "activities", ["item_id", "item_type"], :name => "index_activities_on_item_id_and_item_type"
29
-
30
- create_table "activity_feeds", :force => true do |t|
31
- t.integer "activity_id"
32
- t.integer "ownable_id"
33
- t.string "ownable_type"
34
- end
35
-
36
- add_index "activity_feeds", ["activity_id"], :name => "index_activity_feeds_on_activity_id"
37
- add_index "activity_feeds", ["ownable_id", "ownable_type"], :name => "index_activity_feeds_on_ownable_id_and_ownable_type"
38
-
39
- create_table "comments", :force => true do |t|
40
- t.integer "commentable_id", :default => 0
41
- t.string "commentable_type", :limit => 15, :default => ""
42
- t.text "body"
43
- t.integer "user_id"
44
- t.integer "parent_id"
45
- t.integer "lft"
46
- t.integer "rgt"
47
- t.integer "is_denied", :default => 0, :null => false
48
- t.boolean "is_reviewed", :default => false
49
- t.datetime "created_at"
50
- t.datetime "updated_at"
51
- end
52
-
53
- add_index "comments", ["commentable_id", "commentable_type"], :name => "index_comments_on_commentable_id_and_commentable_type"
54
- add_index "comments", ["user_id"], :name => "index_comments_on_user_id"
55
-
56
- create_table "content_permissions", :force => true do |t|
57
- t.integer "content_id"
58
- t.integer "user_id"
59
- t.datetime "created_at"
60
- t.datetime "updated_at"
61
- end
62
-
63
- add_index "content_permissions", ["content_id", "user_id"], :name => "index_content_permissions_on_content_id_and_user_id"
64
-
65
- create_table "content_translations", :force => true do |t|
66
- t.integer "content_id"
67
- t.string "title"
68
- t.text "body"
69
- t.string "locale"
70
- t.boolean "user_edited"
71
- t.datetime "created_at"
72
- t.datetime "updated_at"
73
- end
74
-
75
- add_index "content_translations", ["content_id"], :name => "index_content_translations_on_content_id"
76
- add_index "content_translations", ["locale"], :name => "index_content_translations_on_locale"
77
-
78
- create_table "contents", :force => true do |t|
79
- t.integer "creator_id"
80
- t.string "title"
81
- t.text "body"
82
- t.string "locale"
83
- t.text "body_raw"
84
- t.integer "contentable_id"
85
- t.string "contentable_type"
86
- t.integer "parent_id"
87
- t.integer "lft"
88
- t.integer "rgt"
89
- t.boolean "is_public"
90
- t.string "state"
91
- t.datetime "created_at"
92
- t.datetime "updated_at"
93
- t.string "layout"
94
- t.integer "comment_count", :default => 0
95
- end
96
-
97
- add_index "contents", ["creator_id"], :name => "index_contents_on_creator_id"
98
- add_index "contents", ["parent_id"], :name => "index_contents_on_parent_id"
99
-
100
- create_table "friends", :force => true do |t|
101
- t.integer "inviter_id"
102
- t.integer "invited_id"
103
- t.integer "status", :default => 0
104
- t.datetime "created_at"
105
- t.datetime "updated_at"
106
- end
107
-
108
- add_index "friends", ["invited_id", "inviter_id"], :name => "index_friends_on_invited_id_and_inviter_id"
109
- add_index "friends", ["inviter_id", "invited_id"], :name => "index_friends_on_inviter_id_and_invited_id"
110
-
111
- create_table "permissions", :force => true do |t|
112
- t.integer "role_id", :null => false
113
- t.integer "user_id", :null => false
114
- t.datetime "created_at"
115
- t.datetime "updated_at"
116
- end
117
-
118
- create_table "roles", :force => true do |t|
119
- t.string "rolename"
120
- t.datetime "created_at"
121
- t.datetime "updated_at"
122
- end
123
-
124
- create_table "slugs", :force => true do |t|
125
- t.string "name"
126
- t.integer "sluggable_id"
127
- t.integer "sequence", :default => 1, :null => false
128
- t.string "sluggable_type", :limit => 40
129
- t.string "scope", :limit => 40
130
- t.datetime "created_at"
131
- end
132
-
133
- add_index "slugs", ["name", "sluggable_type", "scope", "sequence"], :name => "index_slugs_on_name_and_sluggable_type_and_scope_and_sequence", :unique => true
134
- add_index "slugs", ["scope"], :name => "index_slugs_on_scope"
135
- add_index "slugs", ["sluggable_id"], :name => "index_slugs_on_sluggable_id"
136
-
137
- create_table "taggings", :force => true do |t|
138
- t.integer "tag_id"
139
- t.integer "taggable_id"
140
- t.integer "tagger_id"
141
- t.string "tagger_type"
142
- t.string "taggable_type"
143
- t.string "context"
144
- t.datetime "created_at"
145
- end
146
-
147
- add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
148
- add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
149
-
150
- create_table "tags", :force => true do |t|
151
- t.string "name"
152
- end
153
-
154
- create_table "users", :force => true do |t|
155
- t.string "login"
156
- t.string "email"
157
- t.string "first_name"
158
- t.string "last_name"
159
- t.string "crypted_password"
160
- t.string "password_salt"
161
- t.string "persistence_token"
162
- t.string "single_access_token"
163
- t.string "perishable_token"
164
- t.integer "login_count", :default => 0, :null => false
165
- t.integer "failed_login_count", :default => 0, :null => false
166
- t.datetime "last_request_at"
167
- t.datetime "last_login_at"
168
- t.datetime "current_login_at"
169
- t.string "current_login_ip"
170
- t.string "last_login_ip"
171
- t.boolean "terms_of_service", :default => false, :null => false
172
- t.string "time_zone", :default => "UTC"
173
- t.datetime "disabled_at"
174
- t.datetime "activated_at"
175
- t.datetime "created_at"
176
- t.datetime "updated_at"
177
- end
178
-
179
- add_index "users", ["email"], :name => "index_users_on_email"
180
- add_index "users", ["last_request_at"], :name => "index_users_on_last_request_at"
181
- add_index "users", ["login"], :name => "index_users_on_login"
182
- add_index "users", ["perishable_token"], :name => "index_users_on_perishable_token"
183
- add_index "users", ["persistence_token"], :name => "index_users_on_persistence_token"
184
- add_index "users", ["single_access_token"], :name => "index_users_on_single_access_token"
185
-
186
- end