muck-profiles 0.1.16 → 0.1.17

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.
Files changed (121) hide show
  1. data/README.rdoc +104 -2
  2. data/Rakefile +2 -0
  3. data/VERSION +1 -1
  4. data/app/controllers/muck/profiles_controller.rb +1 -1
  5. data/app/helpers/muck_profiles_helper.rb +14 -0
  6. data/app/views/profiles/_form.html.erb +2 -1
  7. data/app/views/profiles/_location_suggestion.html.erb +12 -0
  8. data/db/migrate/20091124203137_add_location_to_profiles.rb +15 -0
  9. data/db/migrate/20091124205819_add_fields_to_profiles.rb +21 -0
  10. data/lib/active_record/acts/muck_profile.rb +53 -1
  11. data/lib/active_record/has/muck_profile.rb +0 -2
  12. data/locales/en.yml +16 -1
  13. data/muck-profiles.gemspec +144 -3
  14. data/test/rails_root/.gitignore +2 -1
  15. data/test/rails_root/config/database.yml +12 -12
  16. data/test/rails_root/config/environment.rb +1 -0
  17. data/test/rails_root/config/{global_config.yml → global_config.example.yml} +1 -1
  18. data/test/rails_root/config/initializers/geokit_config.rb +61 -0
  19. data/test/rails_root/db/migrate/20090402234137_create_languages.rb +18 -0
  20. data/test/rails_root/db/migrate/20090426041056_create_countries.rb +15 -0
  21. data/test/rails_root/db/migrate/20090426041103_create_states.rb +18 -0
  22. data/test/rails_root/db/migrate/20091124203137_add_location_to_profiles.rb +15 -0
  23. data/test/rails_root/db/migrate/20091124205819_add_fields_to_profiles.rb +21 -0
  24. data/test/rails_root/lib/tasks/muck.rake +7 -0
  25. data/test/rails_root/public/images/arrow_down.gif +0 -0
  26. data/test/rails_root/public/images/arrow_up.gif +0 -0
  27. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  28. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  29. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  30. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  31. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  32. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  33. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  34. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  35. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  36. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  37. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  38. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  39. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  40. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  41. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  42. data/test/rails_root/public/images/icons/blue_guy.png +0 -0
  43. data/test/rails_root/public/images/icons/button_background.png +0 -0
  44. data/test/rails_root/public/images/icons/cancel.png +0 -0
  45. data/test/rails_root/public/images/icons/close.png +0 -0
  46. data/test/rails_root/public/images/icons/comment.png +0 -0
  47. data/test/rails_root/public/images/icons/exclaim.png +0 -0
  48. data/test/rails_root/public/images/icons/external.png +0 -0
  49. data/test/rails_root/public/images/icons/feed.png +0 -0
  50. data/test/rails_root/public/images/icons/grey_guy.png +0 -0
  51. data/test/rails_root/public/images/icons/hide.png +0 -0
  52. data/test/rails_root/public/images/icons/information.png +0 -0
  53. data/test/rails_root/public/images/icons/minus.png +0 -0
  54. data/test/rails_root/public/images/icons/pending.png +0 -0
  55. data/test/rails_root/public/images/icons/question.png +0 -0
  56. data/test/rails_root/public/images/icons/search_box.png +0 -0
  57. data/test/rails_root/public/images/icons/star.png +0 -0
  58. data/test/rails_root/public/images/icons/stop.png +0 -0
  59. data/test/rails_root/public/images/icons/thumb_down.png +0 -0
  60. data/test/rails_root/public/images/icons/thumb_up.png +0 -0
  61. data/test/rails_root/public/images/nothing.png +0 -0
  62. data/test/rails_root/public/javascripts/jquery/colorpicker.js +450 -0
  63. data/test/rails_root/public/javascripts/jquery/jquery.autocomplete.js.readme +6 -0
  64. data/test/rails_root/public/javascripts/jquery/jquery.autocomplete.min.js +15 -0
  65. data/test/rails_root/public/javascripts/jquery/jquery.autocomplete.pack.js +767 -0
  66. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  67. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  68. data/test/rails_root/public/javascripts/jquery/jquery.metadata.min.js +13 -0
  69. data/test/rails_root/public/javascripts/jquery/jquery.queryString.js +33 -0
  70. data/test/rails_root/public/javascripts/jquery/jquery.swapimage.js +66 -0
  71. data/test/rails_root/public/javascripts/jquery/jquery.swapimage.min.js +11 -0
  72. data/test/rails_root/public/javascripts/jquery/jrails.js +1 -0
  73. data/test/rails_root/public/javascripts/muck.js +11 -6
  74. data/test/rails_root/public/javascripts/muck_time/en.js +53 -0
  75. data/test/rails_root/public/javascripts/tree.js +107 -0
  76. data/test/rails_root/public/stylesheets/jquery/jquery.autocomplete.css +15 -0
  77. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  78. data/test/rails_root/public/stylesheets/styles.css +10 -3
  79. data/test/rails_root/vendor/plugins/geokit-rails/CHANGELOG.rdoc +46 -0
  80. data/test/rails_root/vendor/plugins/geokit-rails/MIT-LICENSE +20 -0
  81. data/test/rails_root/vendor/plugins/geokit-rails/README.markdown +561 -0
  82. data/test/rails_root/vendor/plugins/geokit-rails/Rakefile +18 -0
  83. data/test/rails_root/vendor/plugins/geokit-rails/about.yml +9 -0
  84. data/test/rails_root/vendor/plugins/geokit-rails/assets/api_keys_template +61 -0
  85. data/test/rails_root/vendor/plugins/geokit-rails/init.rb +1 -0
  86. data/test/rails_root/vendor/plugins/geokit-rails/install.rb +14 -0
  87. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails.rb +26 -0
  88. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb +456 -0
  89. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/abstract.rb +31 -0
  90. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/mysql.rb +22 -0
  91. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/postgresql.rb +22 -0
  92. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/sqlserver.rb +43 -0
  93. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/defaults.rb +22 -0
  94. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/geocoder_control.rb +16 -0
  95. data/test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/ip_geocode_lookup.rb +46 -0
  96. data/test/rails_root/vendor/plugins/geokit-rails/test/acts_as_mappable_test.rb +474 -0
  97. data/test/rails_root/vendor/plugins/geokit-rails/test/boot.rb +25 -0
  98. data/test/rails_root/vendor/plugins/geokit-rails/test/database.yml +20 -0
  99. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/companies.yml +7 -0
  100. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/custom_locations.yml +54 -0
  101. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/locations.yml +54 -0
  102. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_addresses.yml +17 -0
  103. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_families.yml +2 -0
  104. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_houses.yml +9 -0
  105. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_organizations.yml +5 -0
  106. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_people.yml +5 -0
  107. data/test/rails_root/vendor/plugins/geokit-rails/test/fixtures/stores.yml +0 -0
  108. data/test/rails_root/vendor/plugins/geokit-rails/test/ip_geocode_lookup_test.rb +77 -0
  109. data/test/rails_root/vendor/plugins/geokit-rails/test/models/company.rb +3 -0
  110. data/test/rails_root/vendor/plugins/geokit-rails/test/models/custom_location.rb +12 -0
  111. data/test/rails_root/vendor/plugins/geokit-rails/test/models/location.rb +4 -0
  112. data/test/rails_root/vendor/plugins/geokit-rails/test/models/mock_address.rb +4 -0
  113. data/test/rails_root/vendor/plugins/geokit-rails/test/models/mock_family.rb +3 -0
  114. data/test/rails_root/vendor/plugins/geokit-rails/test/models/mock_house.rb +3 -0
  115. data/test/rails_root/vendor/plugins/geokit-rails/test/models/mock_organization.rb +4 -0
  116. data/test/rails_root/vendor/plugins/geokit-rails/test/models/mock_person.rb +4 -0
  117. data/test/rails_root/vendor/plugins/geokit-rails/test/models/store.rb +3 -0
  118. data/test/rails_root/vendor/plugins/geokit-rails/test/schema.rb +60 -0
  119. data/test/rails_root/vendor/plugins/geokit-rails/test/tasks.rake +31 -0
  120. data/test/rails_root/vendor/plugins/geokit-rails/test/test_helper.rb +23 -0
  121. metadata +158 -3
data/README.rdoc CHANGED
@@ -6,16 +6,36 @@ Add profiles to muck users. This implements a photo for users as well as a prop
6
6
  Muck profile relies upon the muck-engine and muck-users gems as well as paperclip. Add the following lines to your environment.rb file:
7
7
 
8
8
  config.gem "authlogic"
9
- config.gem "binarylogic-searchlogic", :lib => 'searchlogic', :source => 'http://gems.github.com', :version => '~> 2.0.0'
9
+ config.gem "searchlogic"
10
10
  config.gem "bcrypt-ruby", :lib => "bcrypt"
11
- config.gem 'thoughtbot-paperclip', :lib => 'paperclip', :source => "http://gems.github.com"
11
+ config.gem 'paperclip'
12
12
  config.gem 'muck-engine', :lib => 'muck_engine'
13
13
  config.gem 'muck-users', :lib => 'muck_users'
14
14
  config.gem 'muck-profiles', :lib => 'muck_profiles'
15
+ config.gem 'geokit'
15
16
 
16
17
  Next run rake gems:install
17
18
 
19
+ MuckProfiles uses geokit to determine a users location and to make it possible to find users that are within a given proximity.
18
20
 
21
+ Install the GeoKit Rails Plugin:
22
+
23
+ script/plugin install git://github.com/andre/geokit-rails.git
24
+
25
+ Be sure to get api keys from Google an Yahoo. Instructions for doing so can be found in config/initializers/geokit_config.rb after installing the plugin. We recommend moving the keys into
26
+ global_config.yml:
27
+
28
+ Change the lines in config/initializers/geokit_config.rb to:
29
+ Geokit::Geocoders::yahoo = GlobalConfig.yahoo_geo_key
30
+ Geokit::Geocoders::google = GlobalConfig.google_geo_key
31
+
32
+ Put this in global_config.yml:
33
+ google_geo_key: 'some key' # API key for Google. Get it here: http://www.google.com/apis/maps/signup.html
34
+ yahoo_geo_key: 'some key' # API key for Yahoo. Get it here: http://developer.yahoo.com/faq/index.html#appid
35
+
36
+ # Profile configuration
37
+ enable_guess_location: true # If true the profile system will attempt to determine the user's location via IP and populated with the location, lat and lon fields.
38
+
19
39
  == Usage
20
40
  Create a model called profile.rb and add 'acts_as_muck_profile'. This mixes in the muck profile functionality but also permits further customization of the profile in your application.
21
41
 
@@ -38,4 +58,86 @@ Your user model will now appear to have a 'photo' which is delegated to the prof
38
58
 
39
59
  @user.photo # returns a photo object from paperclip
40
60
 
61
+ === Profile Attributes
62
+ The profile comes preconfigured with a basic set of common profile options. It is easy to add new fields. Simply add the fields to the profile using a migration:
63
+
64
+ class AddMoreFieldsToProfiles < ActiveRecord::Migration
65
+ def self.up
66
+ add_column :profiles, :occupation, :string
67
+ add_column :profiles, :gender, :string
68
+ add_column :profiles, :birthday, :datetime
69
+ add_column :profiles, :company, :string
70
+ add_column :profiles, :zip, :string
71
+ add_column :profiles, :mobile_phone, :string
72
+ add_column :profiles, :home_phone, :string
73
+ add_column :profiles, :alumni_of, :string
74
+ add_column :profiles, :relationship_status, :string
75
+ end
76
+
77
+ def self.down
78
+ add_column :profiles, :occupation
79
+ add_column :profiles, :gender
80
+ add_column :profiles, :birthday
81
+ add_column :profiles, :company
82
+ add_column :profiles, :zip
83
+ add_column :profiles, :mobile_phone
84
+ add_column :profiles, :home_phone
85
+ add_column :profiles, :alumni_of
86
+ add_column :profiles, :relationship_status
87
+ end
88
+ end
89
+
90
+
91
+ Next create a new views/profiles/edit.html.erb file. The built in file is very basic and makes it easy to add additional fields. The 'profile_form' method will
92
+ create form elements for the built in fields. Add extra fields after that.
93
+
94
+ <div id="edit_content" class="span-24 colborder column">
95
+ <%= output_errors(t('muck.profiles.problem_editing_profile'), {:class => 'help-box'}, @profile) %>
96
+ <% profile_form(@profile) do |f| -%>
97
+ <%# can add form fields as desired here -%>
98
+ <% end -%>
99
+ </div>
100
+
101
+ Last create view/profiles/show.html.erb. There is a built in show page however it is assumed that most applications will implement a custom show page to hightlight
102
+ the focus of the system.
103
+
104
+ <div class="span-24 colborder column">
105
+ <%= icon @user, :thumb %>
106
+ <p><%= @user.full_name %></p>
107
+ <p><%= link_to t('muck.profiles.edit_profile'), edit_user_profile_path(@user) if @profile.can_edit?(current_user) %></p>
108
+ <!-- Add more fields and customize the profile. -->
109
+ </div>
110
+
111
+ It's important to sanitize user input. If you add fields to the profile then be sure to prevent cross site scripting. Override the 'sanitize_attributes' method
112
+ in your model and add your new fields. Note that you can also override 'sanitize_level' to determine how sanitization occurs.
113
+
114
+ # Sanitize content before saving. This prevents XSS attacks and other malicious html.
115
+ def sanitize_attributes
116
+ if self.sanitize_level
117
+ self.about = Sanitize.clean(self.about, self.sanitize_level)
118
+ self.location = Sanitize.clean(self.location, self.sanitize_level)
119
+ # add your fields
120
+ end
121
+ end
122
+
123
+ # Override this method to control sanitization levels.
124
+ # Currently a user who is an admin will not have their content sanitized. A user
125
+ # in any role 'editor', 'manager', or 'contributor' will be given the 'RELAXED' settings
126
+ # while all other users will get 'BASIC'.
127
+ #
128
+ # Options are from sanitze:
129
+ # nil - no sanitize
130
+ # Sanitize::Config::RELAXED
131
+ # Sanitize::Config::BASIC
132
+ # Sanitize::Config::RESTRICTED
133
+ # for more details see: http://rgrove.github.com/sanitize/
134
+ def sanitize_level
135
+ return Sanitize::Config::BASIC if self.user.nil?
136
+ return nil if self.user.admin?
137
+ return Sanitize::Config::RELAXED if self.user.any_role?('editor', 'manager', 'contributor')
138
+ Sanitize::Config::BASIC
139
+ end
140
+
141
+
142
+
41
143
  Copyright (c) 2009 Tatemae, released under the MIT license
data/Rakefile CHANGED
@@ -56,6 +56,8 @@ begin
56
56
  gemspec.rubyforge_project = 'muck-profiles'
57
57
  gemspec.add_dependency "muck-engine"
58
58
  gemspec.add_dependency "muck-users"
59
+ gemspec.add_dependency "geokit"
60
+ gemspec.add_dependency "paperclip"
59
61
  end
60
62
  Jeweler::RubyforgeTasks.new do |rubyforge|
61
63
  rubyforge.doc_task = "rdoc"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.16
1
+ 0.1.17
@@ -1,6 +1,6 @@
1
1
  class Muck::ProfilesController < ApplicationController
2
2
  unloadable
3
-
3
+
4
4
  before_filter :setup_user, :only => [:show, :edit]
5
5
 
6
6
  def index
@@ -9,4 +9,18 @@ module MuckProfilesHelper
9
9
  raw_block_to_partial('profiles/form', options.merge(:profile => profile), &block)
10
10
  end
11
11
 
12
+ # Outputs a link and text that guesses the user's location using their ip.
13
+ def location_suggestion(field_id)
14
+ geo = Geokit::Geocoders::MultiGeocoder.geocode(request.ip)
15
+ location = readable_location(geo)
16
+ return '' if location.blank?
17
+ render :partial => 'profiles/location_suggestion', :locals => { :field_id => field_id, :location => location }
18
+ end
19
+
20
+ # Turns a geokit location object into a location string with city, state country
21
+ def readable_location(location)
22
+ return '' if location.city.blank? && location.state.blank? && location.province.blank? && location.country_code.blank?
23
+ "#{location.city}, #{location.state || location.province} #{location.country_code}"
24
+ end
25
+
12
26
  end
@@ -1,7 +1,8 @@
1
1
  <div id="<%= "#{profile.dom_id}" %>" class="edit_profile">
2
2
  <% custom_form_for(profile, :url => user_profile_path(profile.user), :html => html.merge(:id => "edit-profile-form", :name => 'edit-profile-form', :method => :put, :multipart => true ) ) do |f| -%>
3
3
  <div id="edit_profile_image">
4
- <%= image_tag profile.photo.url(:thumb) %>
4
+ <%#= image_tag profile.photo.url(:thumb) %>
5
+ <%= icon profile.user, :thumb %>
5
6
  <%= f.file_field :photo, { :label => t('muck.profiles.upload_photo') } %>
6
7
  </div>
7
8
  <%= capture(f, &block) %>
@@ -0,0 +1,12 @@
1
+ <div class="location-suggestion">
2
+ <%= I18n.t('muck.profiles.location_suggestion', :location => location) %>
3
+ <a href="#" id="set_<%=field_id%>"><%=I18n.t('muck.profiles.click_to_set')%></a>
4
+ </div>
5
+ <script type="text/javascript">
6
+ jQuery(document).ready(function() {
7
+ jQuery("#set_<%=field_id%>").click(function() {
8
+ jQuery("#<%=field_id%>").val("<%=location%>");
9
+ return false;
10
+ });
11
+ });
12
+ </script>
@@ -0,0 +1,15 @@
1
+ class AddLocationToProfiles < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :profiles, :location, :string
4
+ add_column :profiles, :lat, :decimal, :precision => 15, :scale => 10
5
+ add_column :profiles, :lng, :decimal, :precision => 15, :scale => 10
6
+ add_index :profiles, [:lat, :lng]
7
+ end
8
+
9
+ def self.down
10
+ remove_index :profiles, [:lat, :lng]
11
+ remove_column :profiles, :location
12
+ remove_column :profiles, :lat
13
+ remove_column :profiles, :lng
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ class AddFieldsToProfiles < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :profiles, :about, :text
4
+ add_column :profiles, :first_name, :string
5
+ add_column :profiles, :last_name, :string
6
+ add_column :profiles, :city, :string
7
+ add_column :profiles, :state_id, :integer
8
+ add_column :profiles, :country_id, :integer
9
+ add_column :profiles, :language_id, :integer
10
+ end
11
+
12
+ def self.down
13
+ remove_column :profiles, :about
14
+ remove_column :profiles, :first_name
15
+ remove_column :profiles, :last_name
16
+ remove_column :profiles, :city
17
+ remove_column :profiles, :state_id
18
+ remove_column :profiles, :country_id
19
+ remove_column :profiles, :language_id
20
+ end
21
+ end
@@ -10,6 +10,11 @@ module ActiveRecord
10
10
  def acts_as_muck_profile(options = {})
11
11
 
12
12
  belongs_to :user
13
+ belongs_to :state
14
+ belongs_to :country
15
+ belongs_to :language
16
+
17
+ acts_as_mappable
13
18
 
14
19
  has_attached_file :photo,
15
20
  :styles => { :medium => "300x300>",
@@ -18,6 +23,7 @@ module ActiveRecord
18
23
  :tiny => "24x24>" },
19
24
  :default_url => "/images/profile_default.jpg"
20
25
 
26
+ before_save :sanitize_attributes
21
27
 
22
28
  class_eval <<-EOV
23
29
  attr_protected :created_at, :updated_at, :photo_file_name, :photo_content_type, :photo_file_size
@@ -31,7 +37,7 @@ module ActiveRecord
31
37
 
32
38
  # class methods
33
39
  module SingletonMethods
34
-
40
+
35
41
  end
36
42
 
37
43
  # All the methods available to a record that has had <tt>acts_as_muck_profile</tt> specified.
@@ -42,6 +48,52 @@ module ActiveRecord
42
48
  self.user_id == user.id || user.admin?
43
49
  end
44
50
 
51
+ def guess_and_assign_location_via_ip
52
+ if GlobalConfig.enable_guess_location && self.user.current_login_ip
53
+ location = Geokit::Geocoders::MultiGeocoder.geocode(self.user.current_login_ip)
54
+ state = State.find_by_abbreviation(location.state)
55
+ country = Country.find_by_abbreviation(location.country)
56
+ self.update_attributes(
57
+ :location => "#{location.city}, #{location.state || location.province} #{location.country_code}",
58
+ :lat => location.lat,
59
+ :lng => location.lng,
60
+ :city => location.city,
61
+ :state => state,
62
+ :country => country)
63
+ end
64
+ end
65
+
66
+ def after_create
67
+ guess_and_assign_location_via_ip
68
+ end
69
+
70
+ # Sanitize content before saving. This prevent XSS attacks and other malicious html.
71
+ def sanitize_attributes
72
+ if self.sanitize_level
73
+ self.about = Sanitize.clean(self.about, self.sanitize_level)
74
+ self.location = Sanitize.clean(self.location, self.sanitize_level)
75
+ end
76
+ end
77
+
78
+ # Override this method to control sanitization levels.
79
+ # Currently a user who is an admin will not have their content sanitized. A user
80
+ # in any role 'editor', 'manager', or 'contributor' will be given the 'RELAXED' settings
81
+ # while all other users will get 'BASIC'.
82
+ #
83
+ # Options are from sanitze:
84
+ # nil - no sanitize
85
+ # Sanitize::Config::RELAXED
86
+ # Sanitize::Config::BASIC
87
+ # Sanitize::Config::RESTRICTED
88
+ # for more details see: http://rgrove.github.com/sanitize/
89
+ def sanitize_level
90
+ return Sanitize::Config::BASIC if self.user.nil?
91
+ return nil if self.user.admin?
92
+ return Sanitize::Config::RELAXED if self.user.any_role?('editor', 'manager', 'contributor')
93
+ Sanitize::Config::BASIC
94
+ end
95
+
96
+
45
97
  end
46
98
 
47
99
  end
@@ -28,8 +28,6 @@ module ActiveRecord
28
28
  # All the methods available to a record that has had <tt>acts_as_muck_profile</tt> specified.
29
29
  module InstanceMethods
30
30
 
31
-
32
-
33
31
  end
34
32
 
35
33
  end
data/locales/en.yml CHANGED
@@ -10,4 +10,19 @@ en:
10
10
  edit_success: "Successfully updated your profile"
11
11
  edit_failure: "An error occured while updating your profile."
12
12
  could_not_find_user: "Could not find the specified user."
13
-
13
+ location: "Location"
14
+ skills: "Skills"
15
+ interests: "Interests"
16
+ state: "State"
17
+ country: "Country"
18
+ language: "Language"
19
+ about: "About"
20
+ about_help: "Enter a biographical information to help others find out about your skills, interests, etc."
21
+ location_help: "Enter your location. For example: Logan, UT, New York City, NY, etc"
22
+ skills_help: "Enter a comma delimited list of your skills. For example: ruby on rails, php, mysql, physics, math"
23
+ interests_help: "Enter a comma delimited list of your interests. For example: cycling, mountain biking, chess, movies"
24
+ state_help: "Enter your state if this is relevant to your country."
25
+ country_help: "Enter your current current."
26
+ language_help: "Enter your primary language"
27
+ location_suggestion: "We think you're in {{location}}."
28
+ click_to_set: "Click to set this as your location."
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-profiles}
8
- s.version = "0.1.16"
8
+ s.version = "0.1.17"
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{2009-11-13}
12
+ s.date = %q{2009-11-30}
13
13
  s.description = %q{Profile engine for the muck system.}
14
14
  s.email = %q{justin@tatemae.com}
15
15
  s.extra_rdoc_files = [
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "app/helpers/muck_profiles_helper.rb",
27
27
  "app/views/admin/profiles/edit.html.erb",
28
28
  "app/views/profiles/_form.html.erb",
29
+ "app/views/profiles/_location_suggestion.html.erb",
29
30
  "app/views/profiles/_profile.html.erb",
30
31
  "app/views/profiles/_profile_icon.html.erb",
31
32
  "app/views/profiles/edit.html.erb",
@@ -33,6 +34,8 @@ Gem::Specification.new do |s|
33
34
  "app/views/profiles/show.html.erb",
34
35
  "config/muck_profiles_routes.rb",
35
36
  "db/migrate/20090512013727_create_profiles.rb",
37
+ "db/migrate/20091124203137_add_location_to_profiles.rb",
38
+ "db/migrate/20091124205819_add_fields_to_profiles.rb",
36
39
  "install.rb",
37
40
  "lib/active_record/acts/muck_profile.rb",
38
41
  "lib/active_record/has/muck_profile.rb",
@@ -107,7 +110,8 @@ Gem::Specification.new do |s|
107
110
  "test/rails_root/config/environments/development.rb",
108
111
  "test/rails_root/config/environments/production.rb",
109
112
  "test/rails_root/config/environments/test.rb",
110
- "test/rails_root/config/global_config.yml",
113
+ "test/rails_root/config/global_config.example.yml",
114
+ "test/rails_root/config/initializers/geokit_config.rb",
111
115
  "test/rails_root/config/initializers/inflections.rb",
112
116
  "test/rails_root/config/initializers/mime_types.rb",
113
117
  "test/rails_root/config/initializers/requires.rb",
@@ -115,24 +119,67 @@ Gem::Specification.new do |s|
115
119
  "test/rails_root/config/routes.rb",
116
120
  "test/rails_root/db/.keep",
117
121
  "test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb",
122
+ "test/rails_root/db/migrate/20090402234137_create_languages.rb",
123
+ "test/rails_root/db/migrate/20090426041056_create_countries.rb",
124
+ "test/rails_root/db/migrate/20090426041103_create_states.rb",
118
125
  "test/rails_root/db/migrate/20090512013727_create_profiles.rb",
119
126
  "test/rails_root/db/migrate/20090602041838_create_users.rb",
127
+ "test/rails_root/db/migrate/20091124203137_add_location_to_profiles.rb",
128
+ "test/rails_root/db/migrate/20091124205819_add_fields_to_profiles.rb",
120
129
  "test/rails_root/features/step_definitions/webrat_steps.rb",
121
130
  "test/rails_root/features/support/env.rb",
131
+ "test/rails_root/lib/tasks/muck.rake",
122
132
  "test/rails_root/public/.htaccess",
123
133
  "test/rails_root/public/404.html",
124
134
  "test/rails_root/public/422.html",
125
135
  "test/rails_root/public/500.html",
126
136
  "test/rails_root/public/dispatch.rb",
127
137
  "test/rails_root/public/favicon.ico",
138
+ "test/rails_root/public/images/arrow_down.gif",
128
139
  "test/rails_root/public/images/arrow_left.gif",
129
140
  "test/rails_root/public/images/arrow_right.gif",
141
+ "test/rails_root/public/images/arrow_up.gif",
130
142
  "test/rails_root/public/images/blue/preview.gif",
143
+ "test/rails_root/public/images/fancybox/fancy_closebox.png",
144
+ "test/rails_root/public/images/fancybox/fancy_left.png",
145
+ "test/rails_root/public/images/fancybox/fancy_progress.png",
146
+ "test/rails_root/public/images/fancybox/fancy_right.png",
147
+ "test/rails_root/public/images/fancybox/fancy_shadow_e.png",
148
+ "test/rails_root/public/images/fancybox/fancy_shadow_n.png",
149
+ "test/rails_root/public/images/fancybox/fancy_shadow_ne.png",
150
+ "test/rails_root/public/images/fancybox/fancy_shadow_nw.png",
151
+ "test/rails_root/public/images/fancybox/fancy_shadow_s.png",
152
+ "test/rails_root/public/images/fancybox/fancy_shadow_se.png",
153
+ "test/rails_root/public/images/fancybox/fancy_shadow_sw.png",
154
+ "test/rails_root/public/images/fancybox/fancy_shadow_w.png",
155
+ "test/rails_root/public/images/fancybox/fancy_title_left.png",
156
+ "test/rails_root/public/images/fancybox/fancy_title_main.png",
157
+ "test/rails_root/public/images/fancybox/fancy_title_right.png",
131
158
  "test/rails_root/public/images/icons/accept.png",
132
159
  "test/rails_root/public/images/icons/add.png",
160
+ "test/rails_root/public/images/icons/blue_guy.png",
161
+ "test/rails_root/public/images/icons/button_background.png",
162
+ "test/rails_root/public/images/icons/cancel.png",
163
+ "test/rails_root/public/images/icons/close.png",
164
+ "test/rails_root/public/images/icons/comment.png",
133
165
  "test/rails_root/public/images/icons/delete.png",
166
+ "test/rails_root/public/images/icons/exclaim.png",
167
+ "test/rails_root/public/images/icons/external.png",
168
+ "test/rails_root/public/images/icons/feed.png",
169
+ "test/rails_root/public/images/icons/grey_guy.png",
170
+ "test/rails_root/public/images/icons/hide.png",
171
+ "test/rails_root/public/images/icons/information.png",
172
+ "test/rails_root/public/images/icons/minus.png",
173
+ "test/rails_root/public/images/icons/pending.png",
174
+ "test/rails_root/public/images/icons/question.png",
175
+ "test/rails_root/public/images/icons/search_box.png",
176
+ "test/rails_root/public/images/icons/star.png",
177
+ "test/rails_root/public/images/icons/stop.png",
178
+ "test/rails_root/public/images/icons/thumb_down.png",
179
+ "test/rails_root/public/images/icons/thumb_up.png",
134
180
  "test/rails_root/public/images/icons/vote.png",
135
181
  "test/rails_root/public/images/loading.gif",
182
+ "test/rails_root/public/images/nothing.png",
136
183
  "test/rails_root/public/images/profile_default.jpg",
137
184
  "test/rails_root/public/images/rails.png",
138
185
  "test/rails_root/public/images/red/preview.gif",
@@ -144,17 +191,30 @@ Gem::Specification.new do |s|
144
191
  "test/rails_root/public/javascripts/dragdrop.js",
145
192
  "test/rails_root/public/javascripts/effects.js",
146
193
  "test/rails_root/public/javascripts/fancyzoom.min.js",
194
+ "test/rails_root/public/javascripts/jquery/colorpicker.js",
147
195
  "test/rails_root/public/javascripts/jquery/jquery-ui.js",
196
+ "test/rails_root/public/javascripts/jquery/jquery.autocomplete.js.readme",
197
+ "test/rails_root/public/javascripts/jquery/jquery.autocomplete.min.js",
198
+ "test/rails_root/public/javascripts/jquery/jquery.autocomplete.pack.js",
199
+ "test/rails_root/public/javascripts/jquery/jquery.easing.js",
200
+ "test/rails_root/public/javascripts/jquery/jquery.fancybox.js",
148
201
  "test/rails_root/public/javascripts/jquery/jquery.form.js",
149
202
  "test/rails_root/public/javascripts/jquery/jquery.jgrowl.js",
150
203
  "test/rails_root/public/javascripts/jquery/jquery.js",
204
+ "test/rails_root/public/javascripts/jquery/jquery.metadata.min.js",
205
+ "test/rails_root/public/javascripts/jquery/jquery.queryString.js",
206
+ "test/rails_root/public/javascripts/jquery/jquery.swapimage.js",
207
+ "test/rails_root/public/javascripts/jquery/jquery.swapimage.min.js",
151
208
  "test/rails_root/public/javascripts/jquery/jquery.tips.js",
209
+ "test/rails_root/public/javascripts/jquery/jrails.js",
152
210
  "test/rails_root/public/javascripts/muck.js",
153
211
  "test/rails_root/public/javascripts/muck_activities.js",
212
+ "test/rails_root/public/javascripts/muck_time/en.js",
154
213
  "test/rails_root/public/javascripts/prototype.js",
155
214
  "test/rails_root/public/javascripts/scriptaculous.js",
156
215
  "test/rails_root/public/javascripts/slider.js",
157
216
  "test/rails_root/public/javascripts/sound.js",
217
+ "test/rails_root/public/javascripts/tree.js",
158
218
  "test/rails_root/public/robots.txt",
159
219
  "test/rails_root/public/stylesheets/.keep",
160
220
  "test/rails_root/public/stylesheets/admin.css",
@@ -208,6 +268,8 @@ Gem::Specification.new do |s|
208
268
  "test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png",
209
269
  "test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png",
210
270
  "test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css",
271
+ "test/rails_root/public/stylesheets/jquery/jquery.autocomplete.css",
272
+ "test/rails_root/public/stylesheets/jquery/jquery.fancybox.css",
211
273
  "test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png",
212
274
  "test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png",
213
275
  "test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png",
@@ -282,6 +344,48 @@ Gem::Specification.new do |s|
282
344
  "test/rails_root/test/unit/.keep",
283
345
  "test/rails_root/test/unit/profile_test.rb",
284
346
  "test/rails_root/test/unit/user_test.rb",
347
+ "test/rails_root/vendor/plugins/geokit-rails/CHANGELOG.rdoc",
348
+ "test/rails_root/vendor/plugins/geokit-rails/MIT-LICENSE",
349
+ "test/rails_root/vendor/plugins/geokit-rails/README.markdown",
350
+ "test/rails_root/vendor/plugins/geokit-rails/Rakefile",
351
+ "test/rails_root/vendor/plugins/geokit-rails/about.yml",
352
+ "test/rails_root/vendor/plugins/geokit-rails/assets/api_keys_template",
353
+ "test/rails_root/vendor/plugins/geokit-rails/init.rb",
354
+ "test/rails_root/vendor/plugins/geokit-rails/install.rb",
355
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails.rb",
356
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb",
357
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/abstract.rb",
358
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/mysql.rb",
359
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/postgresql.rb",
360
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/sqlserver.rb",
361
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/defaults.rb",
362
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/geocoder_control.rb",
363
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/ip_geocode_lookup.rb",
364
+ "test/rails_root/vendor/plugins/geokit-rails/test/acts_as_mappable_test.rb",
365
+ "test/rails_root/vendor/plugins/geokit-rails/test/boot.rb",
366
+ "test/rails_root/vendor/plugins/geokit-rails/test/database.yml",
367
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/companies.yml",
368
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/custom_locations.yml",
369
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/locations.yml",
370
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_addresses.yml",
371
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_families.yml",
372
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_houses.yml",
373
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_organizations.yml",
374
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/mock_people.yml",
375
+ "test/rails_root/vendor/plugins/geokit-rails/test/fixtures/stores.yml",
376
+ "test/rails_root/vendor/plugins/geokit-rails/test/ip_geocode_lookup_test.rb",
377
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/company.rb",
378
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/custom_location.rb",
379
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/location.rb",
380
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_address.rb",
381
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_family.rb",
382
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_house.rb",
383
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_organization.rb",
384
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_person.rb",
385
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/store.rb",
386
+ "test/rails_root/vendor/plugins/geokit-rails/test/schema.rb",
387
+ "test/rails_root/vendor/plugins/geokit-rails/test/tasks.rake",
388
+ "test/rails_root/vendor/plugins/geokit-rails/test/test_helper.rb",
285
389
  "test/rails_root/vendor/plugins/ssl_requirement/README",
286
390
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
287
391
  "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb",
@@ -307,14 +411,20 @@ Gem::Specification.new do |s|
307
411
  "test/rails_root/config/environments/development.rb",
308
412
  "test/rails_root/config/environments/production.rb",
309
413
  "test/rails_root/config/environments/test.rb",
414
+ "test/rails_root/config/initializers/geokit_config.rb",
310
415
  "test/rails_root/config/initializers/inflections.rb",
311
416
  "test/rails_root/config/initializers/mime_types.rb",
312
417
  "test/rails_root/config/initializers/requires.rb",
313
418
  "test/rails_root/config/initializers/session_store.rb",
314
419
  "test/rails_root/config/routes.rb",
315
420
  "test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb",
421
+ "test/rails_root/db/migrate/20090402234137_create_languages.rb",
422
+ "test/rails_root/db/migrate/20090426041056_create_countries.rb",
423
+ "test/rails_root/db/migrate/20090426041103_create_states.rb",
316
424
  "test/rails_root/db/migrate/20090512013727_create_profiles.rb",
317
425
  "test/rails_root/db/migrate/20090602041838_create_users.rb",
426
+ "test/rails_root/db/migrate/20091124203137_add_location_to_profiles.rb",
427
+ "test/rails_root/db/migrate/20091124205819_add_fields_to_profiles.rb",
318
428
  "test/rails_root/features/step_definitions/webrat_steps.rb",
319
429
  "test/rails_root/features/support/env.rb",
320
430
  "test/rails_root/public/dispatch.rb",
@@ -324,6 +434,31 @@ Gem::Specification.new do |s|
324
434
  "test/rails_root/test/test_helper.rb",
325
435
  "test/rails_root/test/unit/profile_test.rb",
326
436
  "test/rails_root/test/unit/user_test.rb",
437
+ "test/rails_root/vendor/plugins/geokit-rails/init.rb",
438
+ "test/rails_root/vendor/plugins/geokit-rails/install.rb",
439
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb",
440
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/abstract.rb",
441
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/mysql.rb",
442
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/postgresql.rb",
443
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/adapters/sqlserver.rb",
444
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/defaults.rb",
445
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/geocoder_control.rb",
446
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails/ip_geocode_lookup.rb",
447
+ "test/rails_root/vendor/plugins/geokit-rails/lib/geokit-rails.rb",
448
+ "test/rails_root/vendor/plugins/geokit-rails/test/acts_as_mappable_test.rb",
449
+ "test/rails_root/vendor/plugins/geokit-rails/test/boot.rb",
450
+ "test/rails_root/vendor/plugins/geokit-rails/test/ip_geocode_lookup_test.rb",
451
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/company.rb",
452
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/custom_location.rb",
453
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/location.rb",
454
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_address.rb",
455
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_family.rb",
456
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_house.rb",
457
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_organization.rb",
458
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/mock_person.rb",
459
+ "test/rails_root/vendor/plugins/geokit-rails/test/models/store.rb",
460
+ "test/rails_root/vendor/plugins/geokit-rails/test/schema.rb",
461
+ "test/rails_root/vendor/plugins/geokit-rails/test/test_helper.rb",
327
462
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
328
463
  "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb"
329
464
  ]
@@ -335,12 +470,18 @@ Gem::Specification.new do |s|
335
470
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
336
471
  s.add_runtime_dependency(%q<muck-engine>, [">= 0"])
337
472
  s.add_runtime_dependency(%q<muck-users>, [">= 0"])
473
+ s.add_runtime_dependency(%q<geokit>, [">= 0"])
474
+ s.add_runtime_dependency(%q<paperclip>, [">= 0"])
338
475
  else
339
476
  s.add_dependency(%q<muck-engine>, [">= 0"])
340
477
  s.add_dependency(%q<muck-users>, [">= 0"])
478
+ s.add_dependency(%q<geokit>, [">= 0"])
479
+ s.add_dependency(%q<paperclip>, [">= 0"])
341
480
  end
342
481
  else
343
482
  s.add_dependency(%q<muck-engine>, [">= 0"])
344
483
  s.add_dependency(%q<muck-users>, [">= 0"])
484
+ s.add_dependency(%q<geokit>, [">= 0"])
485
+ s.add_dependency(%q<paperclip>, [">= 0"])
345
486
  end
346
487
  end