Permalink
Browse files

rails3 fixes

  • Loading branch information...
1 parent b6a02e8 commit bd5f7ffbd7087d839b58749c8b6e77c14bee8cc5 @bborn committed Feb 4, 2011
Showing with 1,401 additions and 1,987 deletions.
  1. +16 −0 CHANGELOG
  2. +13 −12 Gemfile
  3. +1 −1 README.markdown
  4. +6 −1 Rakefile
  5. +1 −1 app/controllers/comments_controller.rb
  6. +1 −1 app/controllers/forums_controller.rb
  7. +1 −1 app/controllers/friendships_controller.rb
  8. +3 −1 app/controllers/sessions_controller.rb
  9. +5 −10 app/controllers/users_controller.rb
  10. +55 −60 app/helpers/base_helper.rb
  11. +1 −5 app/helpers/users_helper.rb
  12. +2 −2 app/models/clipping.rb
  13. +1 −1 app/models/clipping_image.rb
  14. +12 −21 app/models/comment.rb
  15. +1 −1 app/models/contest.rb
  16. +2 −2 app/models/event.rb
  17. +2 −2 app/models/favorite.rb
  18. +3 −3 app/models/friendship.rb
  19. +1 −3 app/models/homepage_feature.rb
  20. +1 −1 app/models/invitation.rb
  21. +2 −2 app/models/message.rb
  22. +19 −4 app/models/photo.rb
  23. +9 −9 app/models/post.rb
  24. +6 −29 app/models/sb_post.rb
  25. +1 −1 app/models/tag.rb
  26. +1 −1 app/models/topic.rb
  27. +52 −70 app/models/user.rb
  28. +34 −34 app/models/user_notifier.rb
  29. +2 −2 app/models/user_observer.rb
  30. +1 −1 app/views/activities/index.html.haml
  31. +1 −1 app/views/activities/network.html.haml
  32. +4 −4 app/views/admin/comments.html.haml
  33. +2 −2 app/views/admin/users.html.haml
  34. +1 −1 app/views/ads/edit.html.haml
  35. +1 −1 app/views/ads/index.html.haml
  36. +1 −1 app/views/ads/new.html.haml
  37. +1 −1 app/views/albums/edit.html.haml
  38. +1 −1 app/views/albums/new.html.haml
  39. +1 −1 app/views/albums/show.html.haml
  40. +1 −1 app/views/base/teaser.html.haml
  41. +1 −1 app/views/categories/edit.html.haml
  42. +1 −1 app/views/categories/new.html.haml
  43. +1 −1 app/views/categories/show.html.haml
  44. +1 −1 app/views/clippings/edit.html.haml
  45. +1 −1 app/views/clippings/new.html.haml
  46. +2 −2 app/views/clippings/new_clipping.html.haml
  47. +1 −1 app/views/events/edit.html.haml
  48. +1 −1 app/views/events/new.html.haml
  49. +1 −1 app/views/forums/edit.html.haml
  50. +1 −1 app/views/forums/new.html.haml
  51. +1 −1 app/views/forums/show.html.haml
  52. +3 −3 app/views/friendships/index.xml.builder
  53. +1 −1 app/views/homepage_features/edit.html.haml
  54. +1 −1 app/views/homepage_features/new.html.haml
  55. +1 −1 app/views/invitations/new.html.haml
  56. +4 −3 app/views/layouts/application.html.haml
  57. +2 −2 app/views/layouts/beta.html.haml
  58. +1 −1 app/views/messages/_form.html.haml
  59. +2 −2 app/views/messages/index.html.haml
  60. +1 −1 app/views/metro_areas/edit.html.haml
  61. +1 −1 app/views/metro_areas/index.html.haml
  62. +1 −1 app/views/metro_areas/new.html.haml
  63. +1 −1 app/views/pages/edit.html.haml
  64. +1 −1 app/views/pages/edit.html.haml~
  65. +1 −1 app/views/pages/new.html.haml
  66. +1 −1 app/views/password_resets/edit.html.haml
  67. +1 −1 app/views/password_resets/new.html.haml
  68. +1 −1 app/views/photo_manager/index.html.haml
  69. +1 −1 app/views/photos/_manage_photos.html.haml
  70. +1 −1 app/views/photos/edit.html.haml
  71. +2 −2 app/views/photos/new.html.haml
  72. +1 −1 app/views/photos/recent.html.haml
  73. +1 −1 app/views/posts/edit.html.haml
  74. +2 −2 app/views/posts/manage.html.haml
  75. +1 −1 app/views/posts/new.html.haml
  76. +1 −1 app/views/rsvps/edit.html.haml
  77. +1 −1 app/views/rsvps/new.html.haml
  78. +1 −1 app/views/sessions/new.html.haml
  79. +10 −10 app/views/shared/_header.html.haml
  80. +3 −3 app/views/shared/_login_sidebar.html.haml
  81. +4 −12 app/views/shared/_scripts_and_styles.html.haml
  82. +2 −2 app/views/sitemap/index.xml.builder
  83. +1 −1 app/views/skills/edit.html.haml
  84. +2 −2 app/views/skills/index.html.haml
  85. +1 −1 app/views/skills/new.html.haml
  86. +1 −1 app/views/skills/show.html.haml
  87. +1 −1 app/views/tags/edit.html.haml
  88. +1 −1 app/views/tags/manage.html.haml
  89. +2 −2 app/views/tags/show.html.haml
  90. +1 −1 app/views/topics/edit.html.haml
  91. +1 −1 app/views/topics/new.html.haml
  92. +1 −1 app/views/topics/show.html.haml
  93. +1 −1 app/views/user_notifier/follow_up_comment_notice.erb
  94. +1 −1 app/views/user_notifier/new_forum_post_notice.erb
  95. +1 −12 app/views/users/_search_options.html.haml
  96. +1 −1 app/views/users/crop_profile_photo.html.haml
  97. +1 −1 app/views/users/dashboard.html.haml
  98. +1 −1 app/views/users/edit.html.haml
  99. +1 −1 app/views/users/edit_account.html.haml
  100. +1 −1 app/views/users/forgot_username.html.haml
  101. +2 −2 app/views/users/index.html.haml
  102. +1 −1 app/views/users/invite.html.haml
  103. +1 −1 app/views/users/new.html.haml
  104. +1 −1 app/views/users/resend_activation.html.haml
  105. +1 −1 app/views/users/statistics.html.haml
  106. +1 −1 app/views/users/upload_profile_photo.html.haml
  107. +1 −1 app/views/users/welcome_about.html.haml
  108. +1 −1 app/views/users/welcome_invite.html.haml
  109. +1 −1 app/views/users/welcome_photo.html.haml
  110. +12 −76 community_engine.gemspec
  111. +4 −0 config/application.yml
  112. +41 −41 config/initializers/mce_options.rb
  113. +0 −1 config/initializers/mimes.rb
  114. +10 −5 config/initializers/rakismet.rb
  115. +61 −61 {lang/ui → config/locales}/de-DE.yml
  116. +148 −148 {lang/ui → config/locales}/en.yml
  117. +70 −70 {lang/ui → config/locales}/es-AR.yml
  118. +24 −24 {lang/ui → config/locales}/es-ES.yml
  119. +40 −40 {lang/ui → config/locales}/es-MX.yml
  120. +142 −142 {lang/ui → config/locales}/fr-FR.yml
  121. +77 −77 {lang/ui → config/locales}/ja-JP.yml
  122. 0 {lang/ui → config/locales}/ru-RU.yml
  123. +4 −4 {lang/ui → config/locales}/sr-CP.yml
  124. +85 −85 {lang/ui → config/locales}/sv-SE.yml
  125. +199 −142 config/routes.rb
  126. +1 −1 generators/ce_plugin/templates/init.rb
  127. +1 −1 init.rb
  128. +1 −1 lib/authenticated_system.rb
  129. +17 −14 lib/community_engine.rb
  130. +5 −10 lib/engine.rb
  131. +0 −16 lib/flash_session_cookie_middleware.rb
  132. +32 −0 lib/i18n_extensions.rb
  133. +1 −1 lib/localized_application.rb
  134. +12 −27 { → lib}/tasks/community_engine_tasks.rake
  135. +6 −6 { → lib}/tasks/s3.rake
  136. +0 −17 sample_files/deployment_templates/database.erb
  137. +0 −216 sample_files/deployment_templates/deploy.erb
  138. +0 −62 sample_files/deployment_templates/god.erb
  139. +0 −8 sample_files/deployment_templates/mongrel.erb
  140. +0 −7 sample_files/deployment_templates/mysql.erb
  141. +0 −43 sample_files/deployment_templates/nginx.erb
  142. BIN sample_files/sample_themes/dappled/images/bg_body.png
  143. BIN sample_files/sample_themes/dappled/images/header.jpg
  144. +0 −76 sample_files/sample_themes/dappled/stylesheets/screen.css
  145. +0 −10 sample_files/sample_themes/dappled/views/base/_homepage_banner_message.html.haml
  146. +0 −39 sample_files/sample_themes/dappled/views/shared/_header.html.haml
  147. +0 −35 sample_files/sample_themes/dappled/views/shared/_scripts_and_styles.html.haml
  148. +0 −29 tasks/deployment.rake
  149. +3 −3 test/test_helper.rb
  150. +12 −12 test/unit/user_notifier_test.rb
  151. +5 −5 vendor/plugins/activity_tracker/lib/activity.rb
  152. +2 −2 vendor/plugins/activity_tracker/lib/activity_tracker.rb
  153. +3 −3 vendor/plugins/acts_as_publishable/lib/acts_as_publishable.rb
  154. +6 −1 vendor/plugins/acts_as_taggable_on_steroids/lib/acts_as_taggable.rb
  155. +2 −2 vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/cloud_file_backend.rb
  156. +2 −2 vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/backends/s3_backend.rb
  157. +1 −1 vendor/plugins/attachment_fu/test/test_helper.rb
  158. +1 −1 vendor/plugins/mimetype-fu/spec/spec_helper.rb
  159. +1 −1 vendor/plugins/recaptcha/lib/recaptcha.rb
  160. +1 −1 vendor/plugins/resource_feeder/test/test_helper.rb
  161. +1 −1 vendor/plugins/resource_hacks/test/test_helper.rb
  162. +2 −6 vendor/plugins/tiny_mce/lib/tiny_mce_helper.rb
View
@@ -16,6 +16,22 @@
* remove all the theming stuff
* asset paths https://github.com/rails/rails/commit/a132229d7b4382d9ffe8847fa58f469cb8f2ecfc#L5L149
* take out ez where
+* fix initializers/rakismet, recaptcha etc.
+* take out vendors/offerings crap
+* go back and fix: Rails 3 Fix comments
+* searchlogic broken with rails 3 gem 'searchlogic', :git => git://github.com/railsdog/searchlogic.git
+* copy new migrations from main app back into ce
+* don't allow show_localization_keys_for_debugging
+* remote_form_for is gone
+* remove stylesheet customization
+* rework users index to use searchlogic/metaseach or something
+* use aato instead of aatos
+* authlogic has problems: not sure it's recording last_login magic columns, investigate
+* finding transparently by login is broken
+
+
+GOTCHAS:
+* edge rails needs edge rack? and edge arel
=1.2.1
* Anonymous forum replies
View
25 Gemfile
@@ -1,14 +1,15 @@
source "http://rubygems.org"
-gem 'rails', '3.1.0.beta', :git => 'git://github.com/rails/rails.git'
-gem 'configatron'
-gem 'hpricot'
-gem 'rmagick'
-gem 'htmlentities'
-gem 'haml'
-gem 'calendar_date_select'
-gem 'ri_cal'
-gem 'authlogic'
-gem 'searchlogic'
-gem 'rakismet'
-gem 'aws-s3'
+# gem 'rails', '3.1.0.beta', :git => 'git://github.com/rails/rails.git'
+# gem 'rails'
+# gem 'configatron'
+# gem 'hpricot'
+# gem 'rmagick'
+# gem 'htmlentities'
+# gem 'haml'
+# gem 'calendar_date_select'
+# gem 'ri_cal'
+# gem 'authlogic'
+# gem 'searchlogic'
+# gem 'rakismet'
+# gem 'aws-s3'
View
@@ -221,7 +221,7 @@ The language only file (`es.yml`) will support all locales.
To wrap all localized strings in a `<span>` that shows their localization key, put this in your `environment.rb`:
- configatron.show_localization_keys_for_debugging = true if RAILS_ENV.eql?('development')
+ configatron.show_localization_keys_for_debugging = true if Rails.env.eql?('development')
Note, this will affect the look and feel of buttons. You can highlight what is localized by using the `span.localized` style (look in `screen.css`)
View
@@ -32,6 +32,7 @@ begin
gem.version = '1.9.9'
gem.add_dependency 'rails', '3.1.0.beta'
+ gem.add_dependency 'rack', '1.2.1'
gem.add_dependency 'configatron'
gem.add_dependency 'hpricot'
gem.add_dependency 'rmagick'
@@ -40,9 +41,13 @@ begin
gem.add_dependency 'calendar_date_select'
gem.add_dependency 'ri_cal'
gem.add_dependency 'authlogic'
- gem.add_dependency 'searchlogic'
+
+ gem.add_dependency 'rd_searchlogic', '3.0.1'
gem.add_dependency 'rakismet'
gem.add_dependency 'aws-s3'
+ gem.add_dependency "will_paginate", "~> 3.0.pre2"
+ gem.add_dependency "dynamic_form"
+
# other fields that would normally go in your gemspec
# like authors, email and has_rdoc can also be included here
@@ -156,7 +156,7 @@ def comment_link
end
def full_comment_link
- "#{application_url}#{comment_link}"
+ "#{home_url}#{comment_link}"
end
def comment_rss_link
@@ -3,7 +3,7 @@ class ForumsController < BaseController
before_filter :find_or_initialize_forum
helper :application
- uses_tiny_mce do
+ uses_tiny_mce do
configatron.default_mce_options
end
@@ -97,7 +97,7 @@ def create
respond_to do |format|
if @friendship.save && reverse_friendship.save
- UserNotifier.deliver_friendship_request(@friendship) if @friendship.friend.notify_friend_requests?
+ UserNotifier.friendship_request(@friendship) if @friendship.friend.notify_friend_requests?
format.html {
flash[:notice] = :friendship_requested.l_with_args(:friend => @friendship.friend.login)
redirect_to accepted_user_friendships_path(@user)
@@ -15,9 +15,11 @@ def new
end
def create
+
@user_session = UserSession.new(:login => params[:login], :password => params[:password], :remember_me => params[:remember_me])
- if @user_session.save
+ if @user_session.save!
+
current_user = @user_session.record #if current_user has been called before this, it will ne nil, so we have to make to reset it
@@ -1,4 +1,3 @@
-require "RMagick"
class UsersController < BaseController
include Viewable
@@ -56,14 +55,10 @@ def deactivate
redirect_to login_path
end
- def index
- cond, @search, @metro_areas, @states = User.paginated_users_conditions_with_search(params)
+ def index
+ @users = User.active.paginate(:page => params[:page]) #Rails 3 fix no search!
- @users = User.recent.find(:all,
- :conditions => cond.to_sql,
- :include => [:tags],
- :page => {:current => params[:page], :size => 20}
- )
+ @metro_areas, @states = User.find_country_and_state_from_search_params(params)
@tags = User.tag_counts :limit => 10
@@ -316,7 +311,7 @@ def forgot_username
return unless request.post?
if @user = User.active.find_by_email(params[:email])
- UserNotifier.deliver_forgot_username(@user)
+ UserNotifier.forgot_username(@user)
redirect_to login_url
flash[:info] = :your_username_was_emailed_to_you.l
else
@@ -335,7 +330,7 @@ def resend_activation
if @user && !@user.active?
flash[:notice] = :activation_email_resent_message.l
- UserNotifier.deliver_signup_notification(@user)
+ UserNotifier.signup_notification(@user)
redirect_to login_path and return
else
flash[:notice] = :activation_email_not_sent_message.l
View
@@ -1,4 +1,3 @@
-require 'md5'
# Methods added to this helper will be available to all templates in the application.
module BaseHelper
@@ -12,7 +11,7 @@ def commentable_url(comment)
end
def forum_page?
- %w(forums topics sb_posts).include?(@controller.controller_name)
+ %w(forums topics sb_posts).include?(controller.controller_name)
end
def is_current_user_and_featured?(u)
@@ -109,74 +108,76 @@ def excerpt_with_jump(text, end_string = ' ...')
end
def page_title
+ divider = " | ".html_safe
+
app_base = configatron.community_name
- tagline = " | #{configatron.community_tagline}"
-
+ tagline = " #{divider} #{configatron.community_tagline}"
title = app_base
- case @controller.controller_name
+
+ case controller.controller_name
when 'base'
- title += tagline
- when 'pages'
- if @page and @page.title
- title = @page.title + ' &raquo; ' + app_base + tagline
- end
+ title += tagline
+ when 'pages'
+ if @page and @page.title
+ title = @page.title + divider + app_base + tagline
+ end
when 'posts'
if @post and @post.title
- title = @post.title + ' &raquo; ' + app_base + tagline
- title += (@post.tags.empty? ? '' : " &laquo; "+:keywords.l+": " + @post.tags[0...4].join(', ') )
+ title = @post.title + divider + app_base + tagline
+ title += (@post.tags.empty? ? '' : "#{divider}#{:keywords.l}: " + @post.tags[0...4].join(', ') )
@canonical_url = user_post_url(@post.user, @post)
end
when 'users'
if @user && !@user.new_record? && @user.login
title = @user.login
- title += ', ' + :expert_in.l + ' ' + @user.offerings.collect{|o| o.skill.name }.join(', ') if @user.vendor? and !@user.offerings.empty?
- title += ' &raquo; ' + app_base + tagline
+ title += ", #{:expert_in.l} #{@user.offerings.collect{|o| o.skill.name }.join(', ')}" if @user.vendor? and !@user.offerings.empty?
+ title += divider + app_base + tagline
@canonical_url = user_url(@user)
else
- title = :showing_users.l+' &raquo; ' + app_base + tagline
+ title = :showing_users.l+divider + app_base + tagline
end
when 'photos'
if @user and @user.login
- title = :users_photos.l(:user => @user.login)+' &raquo; ' + app_base + tagline
+ title = :users_photos.l(:user => @user.login) + divider + app_base + tagline
end
when 'clippings'
if @user and @user.login
- title = :user_clippings.l(:user => @user.login) + ' &raquo; ' + app_base + tagline
+ title = :user_clippings.l(:user => @user.login) + divider + app_base + tagline
end
when 'tags'
- case @controller.action_name
+ case controller.action_name
when 'show'
if params[:type]
title = I18n.translate('all_' + params[:type].downcase.pluralize + '_tagged', :tag_name => @tags.map(&:name).join(', '))
else
title = :posts_photos_and_bookmarks.l(:name => @tags.map(&:name).join(', '))
end
- title += ' (' + :related_tags.l + ': ' + @related_tags.join(', ') + ')' if @related_tags
- title += ' | ' + app_base
+ title += " (#{:related_tags.l}: #{@related_tags.join(', ')})" if @related_tags
+ title += divider + app_base
@canonical_url = tag_url(URI.escape(@tags_raw, /[\/.?#]/)) if @tags_raw
else
- title = 'Showing tags &raquo; ' + app_base + tagline
+ title = "Showing tags #{divider} #{app_base} #{tagline}"
end
when 'categories'
if @category and @category.name
- title = :posts_photos_and_bookmarks.l(:name => @category.name) + ' &raquo; ' + app_base + tagline
+ title = :posts_photos_and_bookmarks.l(:name => @category.name) + divider + app_base + tagline
else
- title = :showing_categories.l + ' &raquo; ' + app_base + tagline
+ title = :showing_categories.l + divider + app_base + tagline
end
when 'skills'
if @skill and @skill.name
- title = :find_an_expert_in.l + ' ' + @skill.name + ' &raquo; ' + app_base + tagline
+ title = :find_an_expert_in.l + ' ' + @skill.name + divider + app_base + tagline
else
- title = :find_experts.l + ' &raquo; ' + app_base + tagline
+ title = :find_experts.l + divider + app_base + tagline
end
when 'sessions'
- title = :login.l + ' &raquo; ' + app_base + tagline
+ title = :login.l + divider + app_base + tagline
end
if @page_title
- title = @page_title + ' &raquo; ' + app_base + tagline
+ title = @page_title + divider + app_base + tagline
elsif title == app_base
- title = :showing.l + ' ' + @controller.controller_name + ' &raquo; ' + app_base + tagline
+ title = :showing.l + ' ' + controller.controller_name + divider + app_base + tagline
end
title
@@ -194,14 +195,15 @@ def add_friend_link(user = nil)
html += "<span style='display:none;' class='spinner'>"
html += image_tag 'spinner.gif', :plugin => "community_engine"
html += :requesting_friendship.l+" ...</span></span>"
- html
+ html.html_safe
end
def topnav_tab(name, options)
classes = [options.delete(:class)]
classes << 'current' if options[:section] && (options.delete(:section).to_a.include?(@section))
- "<li class='#{classes.join(' ')}'>" + link_to( "<span>"+name+"</span>", options.delete(:url), options) + "</li>"
+ string = "<li class='#{classes.join(' ')}'>" + link_to( content_tag(:span, name), options.delete(:url), options) + "</li>"
+ string.html_safe
end
# def format_post_totals(posts)
@@ -212,7 +214,7 @@ def more_comments_links(commentable)
html = link_to "&raquo; " + :all_comments.l, comments_url(commentable.class.to_s.underscore, commentable.to_param)
html += "<br />"
html += link_to "&raquo; " + :comments_rss.l, comments_url(commentable.class.to_s.underscore, commentable.to_param, :format => :rss)
- html
+ html.html_safe
end
def more_user_comments_links(user = @user)
@@ -244,40 +246,34 @@ def feature_enabled?(feature)
end
def show_footer_content?
- return true if (
- current_page?(:controller => 'base', :action => 'site_index') ||
- current_page?(:controller => 'posts', :action => 'show') ||
- current_page?(:controller => 'categories', :action => 'show') ||
- current_page?(:controller => 'users', :action => 'show')
- )
-
- return false
+ return true #you can override this in your app
end
def clippings_link
- "javascript:(function() {d=document, w=window, e=w.getSelection, k=d.getSelection, x=d.selection, s=(e?e():(k)?k():(x?x.createRange().text:0)), e=encodeURIComponent, document.location='#{application_url}new_clipping?uri='+e(document.location)+'&title='+e(document.title)+'&selection='+e(s);} )();"
+ "javascript:(function() {d=document, w=window, e=w.getSelection, k=d.getSelection, x=d.selection, s=(e?e():(k)?k():(x?x.createRange().text:0)), e=encodeURIComponent, document.location='#{home_url}new_clipping?uri='+e(document.location)+'&title='+e(document.title)+'&selection='+e(s);} )();"
end
def paginating_links(paginator, options = {}, html_options = {})
- if paginator.page_count > 1
- name = options[:name] || PaginatingFind::Helpers::DEFAULT_OPTIONS[:name]
-
- our_params = (options[:params] || params).clone
-
- our_params.delete("authenticity_token")
- our_params.delete("commit")
-
- links = paginating_links_each(paginator, options) do |n|
- our_params[name] = n
- link_to(n, our_params, html_options.merge(:class => (paginator.page.eql?(n) ? 'active' : '')))
- end
- end
-
- if options[:show_info].eql?(false)
- (links || '')
- else
- content_tag(:div, pagination_info_for(paginator), :class => 'pagination_info') + (links || '')
- end
+ will_paginate paginator
+ # if paginator.page_count > 1
+ # name = options[:name] || PaginatingFind::Helpers::DEFAULT_OPTIONS[:name]
+ #
+ # our_params = (options[:params] || params).clone
+ #
+ # our_params.delete("authenticity_token")
+ # our_params.delete("commit")
+ #
+ # links = paginating_links_each(paginator, options) do |n|
+ # our_params[name] = n
+ # link_to(n, our_params, html_options.merge(:class => (paginator.page.eql?(n) ? 'active' : '')))
+ # end
+ # end
+ #
+ # if options[:show_info].eql?(false)
+ # (links || '')
+ # else
+ # content_tag(:div, pagination_info_for(paginator), :class => 'pagination_info') + (links || '')
+ # end
end
def pagination_info_for(paginator, options = {})
@@ -366,6 +362,5 @@ def profile_completeness(user)
def possesive(user)
user.gender ? (user.male? ? :his.l : :her.l) : :their.l
end
-
end
@@ -2,9 +2,5 @@ module UsersHelper
def friends?(user, friend)
Friendship.friends?(user, friend)
end
-
- def random_greeting(user)
- "#{:greetings.l.sort_by{rand}.first} #{user.login}!"
- end
-
+
end
Oops, something went wrong.

0 comments on commit bd5f7ff

Please sign in to comment.