moxie_forum 0.2.4 → 0.2.5

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.
@@ -15,7 +15,7 @@
15
15
 
16
16
  <div class="m_post clearfix m_newpost">
17
17
  <div class="m_user">
18
- <%= current_user.profile_pic %>
18
+ <%=raw current_user.profile_pic %>
19
19
  </div>
20
20
 
21
21
  <div class="m_contents">
@@ -18,6 +18,10 @@ module MoxieForum
18
18
  has_many :topics, :foreign_key => 'author_id',
19
19
  :order => "created_at",
20
20
  :class_name => 'Moxie::Topic'
21
+
22
+ def self.i_am_moxie_user
23
+ true
24
+ end
21
25
 
22
26
  include MoxieForum::ActsAsMoxieUser::Base::InstanceMethods
23
27
  end
@@ -20,14 +20,12 @@ module MoxieForum
20
20
 
21
21
  initializer "moxie_forum.check_config" do |app|
22
22
 
23
- # convert symbol to a string and upcase first letter
24
- if config.user_model.is_a? Symbol
25
- config.user_model_name = config.user_model.to_s.classify # [0..0].upcase + config.user_model.to_s[1..9]
26
- end
23
+ # load all the models in the app
24
+ Dir.glob(RAILS_ROOT + '/app/models/**/*.rb').each { |file| require file }
27
25
 
28
- if defined?( config.user_model ) == 'constant'
29
- config.user_model = eval config.user_model_name
30
- end
26
+ # Figure out which one is the official user class
27
+ config.user_model = ActiveRecord::Base.send(:subclasses).select { |c| c.respond_to? :i_am_moxie_user }.first
28
+ config.user_model_name = config.user_model.to_s
31
29
 
32
30
  # make sure mount_at ends with trailing slash
33
31
  config.mount_at += '/' unless config.mount_at.last == '/'
@@ -43,14 +43,61 @@ class MoxieForumGenerator < Rails::Generators::Base
43
43
  def copy_initializer_file
44
44
  copy_file 'initializer.rb', 'config/initializers/moxie_forum.rb'
45
45
  end
46
+
47
+ def initialize_user_model
48
+ begin
49
+ print " \e[1m\e[34mquestion\e[0m What's the name of your user model? [user.rb] > "
50
+ model_name = gets.chomp
51
+ model_name = "user.rb" if model_name.empty?
52
+ end while not model_name =~ /\.rb/i
53
+
54
+ begin
55
+ print " \e[1m\e[34mquestion\e[0m Would you to auto-add a few necessary lines to the top of #{model_name} [y/n] "
56
+ answer = gets.chomp
57
+ end while not answer =~ /[yn]/i
58
+
59
+ if answer =~ /y/i
60
+ begin
61
+ f = File.open "app/models/#{model_name}"
62
+ file = f.read; f.close
63
+
64
+ # Create the initializer file
65
+ file.gsub!(/class User < ActiveRecord::Base\n/,
66
+ "class User < ActiveRecord::Base\n\n" +
67
+ "\tacts_as_moxie_user\n\n" +
68
+ "\t# MoxieForum looks for the following optional methods within this class.\n" +
69
+ "\t#\n" +
70
+ "\t# def moderator?\n" +
71
+ "\t# def admin?\n" +
72
+ "\t# def display_name\n" +
73
+ "\t# def profile_pic" )
74
+
75
+ tmp = File.open "tmp/~model.rb", "w"
76
+ tmp.write file; tmp.close
77
+
78
+ remove_file "app/models/#{model_name}"
79
+ copy_file '../../../tmp/~model.rb', "app/models/#{model_name}"
80
+ remove_file 'tmp/~model.rb'
81
+ rescue
82
+ puts " \e[1m\e[31merror\e[0m Unable to open #{model_name}, visit ##### for instructions to manually connect your user model"
83
+ end
84
+ else
85
+ puts " \e[1m\e[33mskipping\e[0m Visit ##### for instructions to connect your user model"
86
+ end
87
+
88
+ end
46
89
 
47
90
  def update_application_template
48
91
  f = File.open "app/views/layouts/application.html.erb"
49
92
  layout = f.read; f.close
50
93
 
51
94
  if layout =~ /<%=[ ]+yield[ ]+%>/
52
- print " \e[1m\e[34mquestion\e[0m Your layouts/application.html.erb layout currently has the line <%= yield %>. MoxieForum needs to change this line to <%= content_for?(:content) ? yield(:content) : yield %> to support its nested layouts. This change should not affect any of your existing layouts or views. Is this okay? [y/n] "
95
+ print " \e[1m\e[34mquestion\e[0m Your layouts/application.html.erb layout currently has the " +
96
+ "line <%= yield %>. MoxieForum needs to change this line to <%= content_for?(:content) ? " +
97
+ "yield(:content) : yield %> to support its nested layouts. This change should not affect " +
98
+ "any of your existing layouts or views. "
53
99
  begin
100
+ print "Is this okay? [y/n] "
54
101
  answer = gets.chomp
55
102
  end while not answer =~ /[yn]/i
56
103
 
@@ -69,8 +116,15 @@ class MoxieForumGenerator < Rails::Generators::Base
69
116
  elsif layout =~ /<%=[ ]+content_for\?\(:content\) \? yield\(:content\) : yield[ ]+%>/
70
117
  puts " \e[1m\e[33mskipping\e[0m layouts/application.html.erb modification is already done."
71
118
  else
72
- puts " \e[1m\e[31mconflict\e[0m MoxieForum is confused by your layouts/application.html.erb. It does not contain the default line <%= yield %>, you may need to make manual changes to get MoxieForum's nested layouts working. Visit ###### for details."
119
+ puts " \e[1m\e[31mconflict\e[0m MoxieForum is confused by your " +
120
+ "layouts/application.html.erb. It does not contain the default line <%= yield %>, you " +
121
+ "may need to make manual changes to get MoxieForum's nested layouts working. Visit " +
122
+ "###### for details."
73
123
  end
74
124
  end
75
125
 
126
+ def done
127
+ puts "\n \e[1m\e[32mdone\e[0m Installation complete! Run rake db:migrate and start up your web server. You can try the forum at http://localhost:3000/forum but full functionality requires you to have a current_user application method. In addition, open your user model rb file for a few comments near the top.\n\n"
128
+ end
129
+
76
130
  end
@@ -2,7 +2,6 @@ module MoxieForum
2
2
  class Engine < Rails::Engine
3
3
 
4
4
  config.mount_at = '/forum'
5
- config.user_model = :user
6
5
  config.forum_entity_name = 'forum'
7
6
  config.topic_entity_name = 'discussion'
8
7
  config.prompt_for_new_topic_creation = "What's your question?"
@@ -1,10 +1,10 @@
1
- require 'test_helper'
2
- require 'generators/moxie_forum/moxie_forum_generator'
3
-
4
- class MoxieForumGeneratorTest < Test::Unit::TestCase
5
-
6
- def test_install
7
- assert true
8
- end
9
-
10
- end
1
+ # require 'test_helper'
2
+ # require 'generators/moxie_forum/moxie_forum_generator'
3
+ #
4
+ # class MoxieForumGeneratorTest < Test::Unit::TestCase
5
+ #
6
+ # def test_install
7
+ # assert true
8
+ # end
9
+ #
10
+ # end
@@ -33,7 +33,6 @@ class ForumTest < Test::Unit::TestCase
33
33
 
34
34
  p = Moxie::Post.create( :topic_id => moxie_topics(:welcome).id,
35
35
  :author_id => 0,
36
- :title => "I forgot",
37
36
  :body => "Don't forget to introduce yourself." )
38
37
 
39
38
  assert moxie_topics(:welcome).posts.include? p
@@ -52,12 +51,10 @@ class ForumTest < Test::Unit::TestCase
52
51
  :title => "Dummy topic 2" )
53
52
  p1 = Moxie::Post.create( :topic_id => t1.id,
54
53
  :author_id => 0,
55
- :title => "Dummy post 1.1",
56
- :body => "body" )
54
+ :body => "Dummy post 1.1" )
57
55
  p2 = Moxie::Post.create( :topic_id => t1.id,
58
56
  :author_id => 0,
59
- :title => "Dummy post 1.2",
60
- :body => "body" )
57
+ :body => "Dummy post 1.2" )
61
58
 
62
59
  assert f.topics.include? t1
63
60
  assert t1.posts.include? p1
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moxie_forum
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 4
10
- version: 0.2.4
9
+ - 5
10
+ version: 0.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Keith Schacht
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-30 00:00:00 -07:00
18
+ date: 2010-10-03 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21