[Logilogi-svn] SF.net SVN: logilogi:[1761] trunk
Status: Beta
Brought to you by:
wybow
From: <wy...@us...> - 2010-08-11 20:50:33
|
Revision: 1761 http://logilogi.svn.sourceforge.net/logilogi/?rev=1761&view=rev Author: wybow Date: 2010-08-11 20:50:25 +0000 (Wed, 11 Aug 2010) Log Message: ----------- Added loglog subscriptions to preferences, and numerous smaller fixes Modified Paths: -------------- trunk/app/controllers/comments_controller.rb trunk/app/controllers/logis_controller.rb trunk/app/controllers/users_controller.rb trunk/app/models/commenting.rb trunk/app/models/log_log_subscription.rb trunk/app/models/logi.rb trunk/app/models/notifier.rb trunk/app/models/peer_group_membership.rb trunk/app/models/remark.rb trunk/app/models/user.rb trunk/app/models/vote.rb trunk/app/views/changes/_new_logis.html.erb trunk/app/views/changes/_recently_changed_logis.html.erb trunk/app/views/layouts/user_page.html.erb trunk/app/views/logis/_new_logis.html.erb trunk/app/views/users/_unfoldable_editor.html.erb trunk/app/views/users/edit.html.erb trunk/config/locales/de.yml trunk/config/locales/en.yml trunk/db/schema.rb trunk/lib/tasks/server.rake trunk/public/stylesheets/logilogi.css trunk/test/fixtures/peer_group_memberships.yml trunk/test/fixtures/ratings.yml trunk/test/fixtures/votes.yml trunk/test/functional/comments_controller_test.rb trunk/test/functional/users_controller_test.rb trunk/test/unit/notifier_test.rb trunk/test/unit/peer_group_membership_test.rb trunk/test/unit/rating_test.rb Added Paths: ----------- trunk/app/views/notifier/admin_log.erb trunk/app/views/notifier/logis_log.erb trunk/app/views/notifier/personalized_log.erb trunk/app/views/users/_feed.html.erb trunk/app/views/users/_side_panel.html.erb trunk/db/migrate/20100731183726_add_log_log_subscriptions.rb trunk/db/migrate/20100810151704_redo_indices.rb trunk/db/migrate/20100810165341_restore_public_peergroup_memberships.rb trunk/lib/tasks/log.rake Removed Paths: ------------- trunk/app/controllers/main_page_controller.rb trunk/app/views/notifier/for_log.erb trunk/app/views/users/_remarks_and_activity.html.erb Modified: trunk/app/controllers/comments_controller.rb =================================================================== --- trunk/app/controllers/comments_controller.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/controllers/comments_controller.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -34,7 +34,7 @@ alias :show :new def create - @from_blog = (params[:from_blog] ? true : false) + @from_blog = (params[:from_blog] == "true" ? true : false) if params[:perma_link] @link = Link.new_from_s(params[:perma_link]) @link.resolve Modified: trunk/app/controllers/logis_controller.rb =================================================================== --- trunk/app/controllers/logis_controller.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/controllers/logis_controller.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -351,8 +351,8 @@ def new_logis if !current_context.link? - @new_logis_count = Logi.count(:conditions => 'created_at > "' + - 1.week.ago.to_s(:db) + '"') + @new_logis_count = Logi.count(:conditions => + 'created_at > "' + 1.week.ago.to_s(:db) + '"') @logis = Logi.recent.presentable.paginate(:page => params[:page], :per_page => 7) end Deleted: trunk/app/controllers/main_page_controller.rb =================================================================== --- trunk/app/controllers/main_page_controller.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/controllers/main_page_controller.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,112 +0,0 @@ -#--# -# Copyright: (c) 2006-2009 The LogiLogi Foundation <fou...@lo...> -# -# License: -# This file is part of the LogiLogi program. LogiLogi is Free Software. -# You can run/distribute/modify LogiLogi under the terms of the GNU Affero -# General Public License version 3. The Affero GPL states that running a -# modified version or a derivative work also requires you to make the source -# code of that work available to everyone that can interact with it. We -# chose the Affero GPL to ensure that LogiLogi remains open and libre -# (doc/LICENSE contains the full text of the legally binding license). -#++# - -class MainPageController < ApplicationController - ### Layout - - layout 'main' - - ### Filters - - before_filter :page_name - - ### Bodies - - # see the BodyBuilder plugin. - # - # :head and :side are already set in application - - body_parts :content - - content_body :description, :new_logis, - :only => :index - side_body :tags, :new_users, - :only => :index - - ### REST-methods - - def index - @selected = params[:selected] - respond_to do |format| - format.html - format.js do - select_body(@selected) - end - end - end - - ### Tabbed methods - - def tags - @used_tags = UsedTag.top_used_tags(:limit => 57, - :no_special => true) - render_ajax_body :partial => 'cloud.html.erb', - :locals => {:selected => @selected} - end - - def users - @top_users = User.top_users(:limit => 57) - render_ajax_body :partial => 'cloud.html.erb', - :locals => {:selected => @selected} - end - - def groups - @top_peer_groups = PeerGroup.top_peer_groups(:limit => 57) - render_ajax_body :partial => 'cloud.html.erb', - :locals => {:selected => @selected} - end - - def recently_changed_logis - @recently_changed_logis_count = LogiVersion.count( - :conditions => 'created_at > "' + 1.week.ago.to_s(:db) + '"') - @logis = Logi.paginate_recent_changes(:page => params[:page], - :per_page => 15) - render_ajax_body :partial => 'recent_or_new_logis.html.erb', - :locals => {:selected => @selected} - end - - def new_logis - @new_logis_count = Logi.count(:conditions => 'created_at > "' + - 1.week.ago.to_s(:db) + '"') - @logis = Logi.recent.presentable.paginate(:page => params[:page], - :per_page => 7) - render_ajax_body :partial => 'recent_or_new_logis.html.erb', - :locals => {:selected => @selected} - end - - def new_users - @users = User.find(:all, :order => 'created_at DESC', :limit => 15) - @new_users_count = User.count(:conditions => 'created_at > "' + - 1.week.ago.to_s(:db) + '"') - render_ajax_body :partial => 'new_users_or_groups.html.erb', - :locals => {:selected => @selected} - end - - def new_groups - @peer_groups = PeerGroup.find(:all, :order => 'created_at DESC', - :limit => 10) - @new_groups_count = PeerGroup.count(:conditions => 'created_at > "' + - 1.month.ago.to_s(:db) + '"') - render_ajax_body :partial => 'new_users_or_groups.html.erb', - :locals => {:selected => @selected} - end - - ### Body-methods - - protected - - def description - render_body 'logis/small_snippet', - :locals => {:logi => Logi.main_page, :id => 'site_description'} - end -end Modified: trunk/app/controllers/users_controller.rb =================================================================== --- trunk/app/controllers/users_controller.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/controllers/users_controller.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -30,13 +30,13 @@ # :head, :top and :side are already set in application - side_body :about, :remarks_and_activity, + side_body :about, :side_panel, :only => :show ### Methods def show - @logis = Logi.recent.presentable.created_by_user(@user).paginate( + @logis = Logi.recent.created_by_user(@user).paginate( :page => params[:page], :per_page => 9) respond_to do |format| format.html do @@ -87,6 +87,7 @@ def edit @prefs_profile = @user.default_prefs_profile + self.read_log_log_subscriptions end def update @@ -119,6 +120,22 @@ flash[:error] = t 'c.users.error_updating_settings' render :action => 'edit' end + elsif params[:log_log_subscription] + self.read_log_log_subscriptions + @subscriptions.each_pair do |name, subscription| + if params[:log_log_subscription][name] + if !subscription + channel = (name == :personalized_log ? "for_" + @user.unix_name : "logis") + ll_s = LogLogSubscription.new(:user => @user, :channel => channel, + :period => (name == :personalized_log ? "daily" : "weekly")) + ll_s.save + end # else do nothing + elsif subscription + subscription.destroy + end + end + flash[:notice] = t 'c.users.settings_updated' + redirect_to return_url_or_default(user_url(@user)) end end @@ -153,7 +170,7 @@ :locals => {:logi => @logi, :id => 'site_description'} end - def remarks_and_activity + def side_panel @remark = Remark.new @remarks = @logi.remarks.find(:all, :limit => 10, :order => ["created_at DESC"]) @@ -184,4 +201,15 @@ return false end end + + ### Helper methods + + def read_log_log_subscriptions + @subscriptions = {} + [:personalized_log, :logis_log].each do |name| + channel = (name == :personalized_log ? "for_" + @user.unix_name : "logis") + @subscriptions[name] = LogLogSubscription.find_by_user_id_and_channel( + @user, channel) + end + end end Modified: trunk/app/models/commenting.rb =================================================================== --- trunk/app/models/commenting.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/commenting.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -36,10 +36,16 @@ def log_create_to_log_log if GlobalConfig.use_log_log # Has reply + # four previous replyers and logi creator receive notice + comments = self.from_logi.commenting_logis.find(:all, + :limit => 5, :order => ["created_at DESC"]) + names = [self.from_logi.creator.unix_name] + + comments[1..-1].collect {|l| l.creator.unix_name} + channels = ['all', 'replies'] + + names.uniq.collect {|n| 'for_' + n} m = LogLogMessage.new( :kind => "Reply", - :channel_names => ['all', 'replies', - 'for_' + self.from_logi.creator.unix_name].join(','), + :channel_names => channels.join(','), :title => 'Received:' + self.to_logi.current_title, :author => self.user.name, :text => self.to_logi.current_snippet, Modified: trunk/app/models/log_log_subscription.rb =================================================================== --- trunk/app/models/log_log_subscription.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/log_log_subscription.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -20,14 +20,18 @@ def self.send_out_alerts(period) sent_to = [] - User.find_each do |user| + LogLogSubscription.find_each_by_period(period) do |lls| url = URI.parse(GlobalConfig.log_log_site + - "/channels/for_" + user.unix_name + "/periods/" + period + ".txt") + "/channels/" + lls.channel + "/periods/" + period + ".txt") begin page = Net::HTTP.get_response(url) periodical = page.body if periodical =~ /[^\s]/ - Notifier.deliver_for_log(user, period, periodical) + if lls.channel == "logis" + Notifier.deliver_logis_log(user, period, periodical) + else + Notifier.deliver_personalized_log(user, period, periodical) + end sent_to << user.name end rescue @@ -36,7 +40,14 @@ if sent_to.empty? sent_to = ['Nobody'] end - Notifier.deliver_for_log(User.admin, period, - 'Sent to: ' + sent_to.join(', ')) + if lls.channel == "logis" + l_count = Logi.count(:conditions => 'created_at > "' + 1.week.ago.to_s(:db) + '"') + Notifier.deliver_admin_log(period, sent_to.size, + "Sent #{period} to: " + sent_to.join(', ') + "\n" + + "There were #{l_count} new logis") + else + Notifier.deliver_admin_log(period, sent_to.size, + "Sent personalized #{period} to: " + sent_to.join(', ')) + end end end Modified: trunk/app/models/logi.rb =================================================================== --- trunk/app/models/logi.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/logi.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -94,7 +94,8 @@ named_scope :recent, :order => 'created_at DESC' if GlobalConfig.available? named_scope :presentable, - :conditions => 'tags_string != "' + Tag.sandbox.to_s + '"' + :conditions => 'kind = ' + Const::Logi::KINDS[:normal].to_s + ' ' + + 'AND tags_string != "' + Tag.sandbox.to_s + '"' end ###### Filters @@ -497,11 +498,10 @@ # Logs creation to log.logilogi.org # def log_create_to_log_log - if GlobalConfig.use_log_log + if GlobalConfig.use_log_log and !self.home_page? m = LogLogMessage.new( :kind => "Logi", :channel_names => ['all','logis', - 'for_' + self.creator.unix_name, 'by_' + self.creator.unix_name].join(','), :title => self.current_title, :author => self.creator.name, Modified: trunk/app/models/notifier.rb =================================================================== --- trunk/app/models/notifier.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/notifier.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -14,8 +14,8 @@ class Notifier < ActionMailer::Base ### Mailers - def for_log(user, period, periodical) - subject t('m.notifier.update_for', :name => user.name, + def personalized_log(user, period, periodical) + subject t('m.notifier.update_personalized', :name => user.name, :domain => GlobalConfig.site_host) from t('m.notifier.notifier', :email => GlobalConfig.noreply_email) recipients user.email @@ -25,6 +25,26 @@ :periodical => periodical end + def logis_log(user, period, periodical) + subject t('m.notifier.update_logis', :period => period.humanize, + :domain => GlobalConfig.site_host) + from t('m.notifier.notifier', :email => GlobalConfig.noreply_email) + recipients user.email + sent_on Time.now + body :user => user, + :period => period, + :periodical => periodical + end + + def admin_log(period, s_count, periodical) + subject t("#{s_count} mailings, #{period} admin update for #{GlobalConfig.site_host}") + from t('m.notifier.notifier', :email => GlobalConfig.noreply_email) + recipients User.admin.email + sent_on Time.now + body :period => period, + :periodical => periodical + end + def welcome(user) subject t('m.notifier.welcome', :name => user.name, :domain => GlobalConfig.site_host) Modified: trunk/app/models/peer_group_membership.rb =================================================================== --- trunk/app/models/peer_group_membership.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/peer_group_membership.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -78,12 +78,11 @@ # def self.drop_the_powerless PeerGroupMembership.find_each( - :conditions => 'power <= ' + PeerGroupMembership.member_power.to_s + + :conditions => 'peer_group_id != ' + PeerGroup.public.id.to_s + + ' AND power <= ' + PeerGroupMembership.member_power.to_s + ' AND updated_at > "' + GlobalConfig.powerless_age.days.ago.to_s(:db) + '"') do |membership| - if membership.user != User.anonymous - membership.destroy - end + membership.destroy end end Modified: trunk/app/models/remark.rb =================================================================== --- trunk/app/models/remark.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/remark.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -42,10 +42,16 @@ # def log_create_to_log_log if GlobalConfig.use_log_log + # four previous replyers and logi creator receive notice + remarks = self.logi.remarks.find(:all, + :limit => 5, :order => ["created_at DESC"]) + names = [self.logi.creator.unix_name] + + remarks[1..-1].collect {|r| r.user.unix_name} + channels = ['all', 'remarks'] + + names.uniq.collect {|n| 'for_' + n} m = LogLogMessage.new( :kind => "Remark", - :channel_names => ['all', 'remarks', - 'for_' + self.logi.creator.unix_name].join(','), + :channel_names => channels.join(','), :author => self.user.name, :title => 'On: ' + self.logi.current_title, :text => self.message, Modified: trunk/app/models/user.rb =================================================================== --- trunk/app/models/user.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/user.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -48,6 +48,7 @@ has_many :invitations, :dependent => :destroy has_many :user_groups, :through => :user_group_memberships has_many :peer_groups, :through => :peer_group_memberships + has_many :log_log_subscriptions ### Filters @@ -55,7 +56,8 @@ # see HomePageModule and UnixNameModule validate :name_not_reserved, :normalize_openid_identifier before_create :assert_persistence_token, :set_blog_title - after_create :create_personal_user_group, :create_prefs_profiles, :create_home_page + after_create :create_personal_user_group, :create_prefs_profiles, + :create_home_page, :log_create_to_log_log before_destroy :reset_dependents after_destroy :destroy_home_pages @@ -262,6 +264,23 @@ return true end + # Logs creation to log.logilogi.org + # + def log_create_to_log_log + if GlobalConfig.use_log_log + m = LogLogMessage.new( + :kind => "User", + :channel_names => ['all','users', + 'by_' + self.unix_name].join(','), + :title => 'Welcome: ' + self.name, + :author => self, + :text => self.name + ' created an account.', + :url => GlobalConfig.site_url + "users/" + + self.home_page_tag_string) + m.save + end + end + # Destroys the home of the user. # def destroy_home_pages Modified: trunk/app/models/vote.rb =================================================================== --- trunk/app/models/vote.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/models/vote.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -28,7 +28,6 @@ # for validation messages I18n.locale = GlobalConfig.language_code if GlobalConfig.available? - validates_uniqueness_of :user_id, :scope => :rating_id validates_inclusion_of :score, :in => -2..5, :message => t('defaults.error_bounds') ### Filters Modified: trunk/app/views/changes/_new_logis.html.erb =================================================================== --- trunk/app/views/changes/_new_logis.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/changes/_new_logis.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,6 +1,7 @@ <div id="new_logis"> <% render :layout => 'application/panel_with_header', :locals => {:title => t('v.changes.new_logis'), + :link => log_log_feed_link(:channel => 'logis'), :id => "recenting"} do %> <%= will_paginate @logis, :params => {:selected => 'new_logis'}, :class => 'pagination' %> Modified: trunk/app/views/changes/_recently_changed_logis.html.erb =================================================================== --- trunk/app/views/changes/_recently_changed_logis.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/changes/_recently_changed_logis.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,6 +1,7 @@ <div id="recently_changed_logis"> <% render :layout => 'application/panel_with_header', :locals => {:title => t('v.changes.recent_changes'), + :link => log_log_feed_link(:channel => 'changes'), :id => "recenting"} do %> <%= will_paginate @logis, :params => {:selected => 'recently_changed_logis'}, :class => 'pagination' %> Modified: trunk/app/views/layouts/user_page.html.erb =================================================================== --- trunk/app/views/layouts/user_page.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/layouts/user_page.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -7,6 +7,7 @@ <%= yield :top_body %> <div class="main_column"> + <%= show_flash %> <%= yield %> </div> Modified: trunk/app/views/logis/_new_logis.html.erb =================================================================== --- trunk/app/views/logis/_new_logis.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/logis/_new_logis.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,6 +1,7 @@ <% render :layout => 'application/panel_with_header', :locals => {:title => t('v.main_page.logis_just'), - :id => "recenting"} do %> + :link => log_log_feed_link(:channel => 'logis'), + :id => "recenting"} do %> <p class="one_line"> <%= link_to t('v.main_page.view_all_new_logis'), changes_url(:selected => :new_logis) %> Added: trunk/app/views/notifier/admin_log.erb =================================================================== --- trunk/app/views/notifier/admin_log.erb (rev 0) +++ trunk/app/views/notifier/admin_log.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,8 @@ +<%= t 'v.notifier.dear', :name => User.admin.name %> + +<%= t 'v.notifier.hereby_personalized', :period => @period, + :domain => GlobalConfig.site_host %> + +<%= t 'v.notifier.only_happened' %> + +<%= @periodical %> Deleted: trunk/app/views/notifier/for_log.erb =================================================================== --- trunk/app/views/notifier/for_log.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/notifier/for_log.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,8 +0,0 @@ -<%= t 'v.notifier.dear', :name => @user.name %> - -<%= t 'v.notifier.hereby_personalized', :period => @period, - :domain => GlobalConfig.site_host %> - -<%= t 'v.notifier.only_happened' %> - -<%= @periodical %> Added: trunk/app/views/notifier/logis_log.erb =================================================================== --- trunk/app/views/notifier/logis_log.erb (rev 0) +++ trunk/app/views/notifier/logis_log.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,11 @@ +<%= t 'v.notifier.dear', :name => @user.name %> + +<%= t 'v.notifier.hereby_logis', :period => @period, + :domain => GlobalConfig.site_host %> + +<%= @periodical %> + +--- + +<%= t 'v.notifier.unsubscribe', :period => @period %> +<%= edit_user_url(current_user) %> Copied: trunk/app/views/notifier/personalized_log.erb (from rev 1758, trunk/app/views/notifier/for_log.erb) =================================================================== --- trunk/app/views/notifier/personalized_log.erb (rev 0) +++ trunk/app/views/notifier/personalized_log.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,8 @@ +<%= t 'v.notifier.dear', :name => @user.name %> + +<%= t 'v.notifier.hereby_personalized', :period => @period, + :domain => GlobalConfig.site_host %> + +<%= t 'v.notifier.only_happened' %> + +<%= @periodical %> Added: trunk/app/views/users/_feed.html.erb =================================================================== --- trunk/app/views/users/_feed.html.erb (rev 0) +++ trunk/app/views/users/_feed.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,5 @@ +<% render :layout => 'application/panel_with_header', :locals => { + :title => t('v.users.subscribe'), :id => "user_rss"} do %> + <div class="user_feed"><p><%= t 'v.users.feed_label' %></p></div> <%= + log_log_feed_link(:channel => 'by_' + @user.unix_name) %> +<% end %> Deleted: trunk/app/views/users/_remarks_and_activity.html.erb =================================================================== --- trunk/app/views/users/_remarks_and_activity.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/users/_remarks_and_activity.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -1,12 +0,0 @@ -<div class="spacer"></div> -<div class="sub_column_one"> - <div id="remarks"> - <%= render :partial => "logis/remarks" %> - </div> -</div> - -<div class="sub_column_two"> - <div id="votes"> - <%= render :partial => "activity", :locals => {:user => @user} %> - </div> -</div> Copied: trunk/app/views/users/_side_panel.html.erb (from rev 1758, trunk/app/views/users/_remarks_and_activity.html.erb) =================================================================== --- trunk/app/views/users/_side_panel.html.erb (rev 0) +++ trunk/app/views/users/_side_panel.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,16 @@ +<div class="spacer"></div> +<div class="sub_column_one"> + <div id="remarks"> + <%= render :partial => "logis/remarks" %> + </div> +</div> + +<div class="sub_column_two"> + <div id="activity"> + <%= render :partial => "activity", :locals => {:user => @user} %> + </div> + + <div id="feed"> + <%= render :partial => "feed", :locals => {:user => @user} %> + </div> +</div> Modified: trunk/app/views/users/_unfoldable_editor.html.erb =================================================================== --- trunk/app/views/users/_unfoldable_editor.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/users/_unfoldable_editor.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -6,7 +6,7 @@ <div class="spacer"></div> <%= toggle_button_to_remote t('v.logis.load_editor'), { :update => "comment_area", :url => new_logi_comments_url(@logi, - :from_blog => 'true'), :method => :get}, + :from_blog => true), :method => :get}, :class => 'unfold_button', :disabled => local_assigns[:unfold_disabled], :tabindex => 3 %> <% javascript_tag do -%> Modified: trunk/app/views/users/edit.html.erb =================================================================== --- trunk/app/views/users/edit.html.erb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/app/views/users/edit.html.erb 2010-08-11 20:50:25 UTC (rev 1761) @@ -36,34 +36,55 @@ <% end %> --> <% render :layout => 'application/panel_with_header', :locals => { + :title => t('v.users.personal_rss'), :id => "personal_rss"} do %> + <p><%= t('v.users.your_rss_updated') %></p> + <div class="your_feed"><p><%= t 'v.users.link_label' %></p></div> <%= + log_log_feed_link(:channel => 'for_' + current_user.unix_name) %> + <% end %> + + <% render :layout => 'application/panel_with_header', :locals => { + :title => t('v.users.mail_alerts')} do %> + <% form_for(@user, :html => {:id => "alerts_form"}) do |form| %> + <%= hidden_field_tag "log_log_subscription[updating]", true %> + <div class="field"> + <%= check_box_tag "log_log_subscription[personalized_log]", 1, + (@subscriptions[:personalized_log] ? "true" : nil), :tabindex => 1 %> + <label><%= t 'v.users.daily_mailing_field' %></label><br /> + <p><%= t 'v.users.daily_personalized' %></p> + </div> + <div class="field"> + <%= check_box_tag "log_log_subscription[logis_log]", 1, + (@subscriptions[:logis_log] ? "true" : nil), :tabindex => 2 %> + <label><%= t 'v.users.weekly_mailing_field' %></label><br /> + <p><%= t 'v.users.weekly_logis' %></p> + </div> + <%= form.submit t('defaults.save'), :tabindex => 3 %> + <%= cancel_button %> + <% end %> + <% end %> + + <% render :layout => 'application/panel_with_header', :locals => { :title => t('v.users.settings')} do %> - <% form_for(@user, :html => {:id => "email_form"}) do |form| %> + <% form_for(@user, :html => {:id => "settings_form"}) do |form| %> <p><%= t('v.users.set_avatar') + ' ' + link_to(t('defaults.click_here'), "http://gravatar.com/signup") %></p> <p><%= t('v.users.leave_blank') %></p> <%= form.text_field :email, - :label => t('defaults.email_label'), :tabindex => 1 %> + :label => t('defaults.email_label'), :tabindex => 4 %> <%= form.password_field :password, - :label => t('defaults.password_label'), :tabindex => 2 %> + :label => t('defaults.password_label'), :tabindex => 5 %> <%= form.password_field :password_confirmation, - :label => t('defaults.password_confirmation_label'), :tabindex => 3 %> + :label => t('defaults.password_confirmation_label'), :tabindex => 6 %> <%= form.text_field :openid_identifier, - :label => t('defaults.openid_label'), :tabindex => 4 %> + :label => t('defaults.openid_label'), :tabindex => 7 %> <%= form.text_field :blog_title, - :label => t('defaults.blog_title_label'), :tabindex => 5 %> - <%= form.submit t('defaults.save'), :tabindex => 6 %> + :label => t('defaults.blog_title_label'), :tabindex => 8 %> + <%= form.submit t('defaults.save'), :tabindex => 9 %> <%= cancel_button %> <% end %> <% end %> <% render :layout => 'application/panel_with_header', :locals => { - :title => t('v.users.personal_rss'), :id => "personal_rss"} do %> - <p><%= t('v.users.your_rss_updated') %></p> - <div class="your_feed"><p><%= t 'v.users.link_label' %></p></div> <%= - log_log_feed_link(:channel => 'for_' + current_user.unix_name) %> - <% end %> - - <% render :layout => 'application/panel_with_header', :locals => { :title => t('v.users.api_key')} do %> <p><%= t('v.users.use_api') %></p> <p><%= t('v.users.api_key_is_label') %> <%= current_user.single_access_token %></p> Modified: trunk/config/locales/de.yml =================================================================== --- trunk/config/locales/de.yml 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/config/locales/de.yml 2010-08-11 20:50:25 UTC (rev 1761) @@ -456,7 +456,7 @@ notifier: "Benachrichtigung durch LogiLogi: <{{email}}>." password_reset: "Beschreibung, um das Kennwort zurückzusetzen." sir_madam: Frau/Herr - update_for: "Änderung für {{name}} auf ((domain))." + update_for: "Änderung für {{name}} auf {{domain}}." welcome: "Willkommen bei {{domain}} {{name}}." peer_group: home_body: "Dies ist das Logi der Gruppe {{name}}." Modified: trunk/config/locales/en.yml =================================================================== --- trunk/config/locales/en.yml 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/config/locales/en.yml 2010-08-11 20:50:25 UTC (rev 1761) @@ -292,7 +292,7 @@ all: All are_you_sure: "Are you sure?" back: Back - blog_title_label: "Logi blog title" + blog_title_label: "Logi blog title:" cancel: Cancel check_length_exeeded: "You've exceeded the maximum length by {{size}} characters!" check_length_max: "The maximum length is {{max}} characters. You already use {{size}}." @@ -449,6 +449,7 @@ notifier: "LogiLogi Notifier <{{email}}>." password_reset: "Password reset instructions." update_for: "Update for {{name}} on {{domain}}." + update_logis: "{{period}} new logis on {{domain}}." welcome: "Welcome to {{domain}} {{name}}." peer_group: home_body: "This is the homepage of the {{name}} peergroup." @@ -813,6 +814,7 @@ for_information_visit: "For more information on the {{group_name}} peergroup, visit its group page on:" happy_welcome: "We are happy to welcome you to {{domain}}." hereby_personalized: "Hereby your personalized {{period}} update for {{domain}}." + hereby_logis: "Hereby the {{period}} listing of new logis available on {{domain}}." invited_co_founder: "{{creator_name}} has invited you to become co-founder of the {{group_name}} peergroup on {{domain}}." invited_join: "{{creator_name}} has invited you to join the {{group_name}} peergroup on {{domain}}." like_accept: "If you would like to accept this invitation, then visit:" @@ -828,6 +830,7 @@ please_contact: "If you encounter any problem please contact us at {{admin_email}}." reset_request: "A request to reset your password for {{domain}} has been made." sir_madam: Sir/Madam + unsubscribe: "If you want to unsubscribe from this {{period}} mailing, you can do so at:" user_page_is: "Your user-page on LogiLogi is:" password_resets: be_emailed: "Instructions to reset your password will be emailed to you." @@ -918,6 +921,8 @@ change_account_settings: "You can change your account settings." create_edit_invite_peer_groups: "Create, edit and invite people to peergroups." created_logis_label: "Created logis:" + daily_personalized: "Mailing when your logis are rated, annotated or receive comments. Sent daily at most." + daily_mailing_field: "Personal alerts" default_peer_group: "Default peergroup" delete_account: "Delete your account" delete_account_anonymous: "If you delete your account, your logis will become anonymous." @@ -928,12 +933,15 @@ email_label: "Email:" enter_new: "Enter your full name, your email and a password." full_name_label: "Full name:" + subscribe: "Subscribe" + feed_label: "RSS feed:" index: "Users index" invite_to_peer_groups: "You can invite people to peergroups that you're a member of." leave_blank: "Leave blank/unchanged any field you don't want to change." link_label: "Link:" new_logi: "New logi" normal: Normal + mail_alerts: "Mail alerts" openid_here: "If you don't have an {{explain_open}}OpenID{{link_close}} yet, you can sign up for one {{signup_open}}here{{link_close}}" or_signup_openid: "Or signup with OpenID." password_confirmation_label: "Password confirmation:" @@ -948,6 +956,8 @@ signup_new: "Signup for a new account." signup_openid: "Signup with an OpenID." use_api: "You can use our API to remotely post and update logis." + weekly_logis: "Weekly listing of new logis" + weekly_mailing_field: "Weekly update" with_openid: "With OpenID" your_rss_updated: "Your RSS-feed is updated whenever something happens related to your logis (annotations, votes, updates, ...)." votes: Added: trunk/db/migrate/20100731183726_add_log_log_subscriptions.rb =================================================================== --- trunk/db/migrate/20100731183726_add_log_log_subscriptions.rb (rev 0) +++ trunk/db/migrate/20100731183726_add_log_log_subscriptions.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,30 @@ +class AddLogLogSubscriptions < ActiveRecord::Migration + def self.up + create_table :log_log_subscriptions do |t| + t.references :user, :null => false + t.string :channel, :null => false + t.string :period, :null => false + end + + if GlobalConfig.available? + AddLogLogSubscriptions.update + end + end + + def self.down + raise "No way back" + end + + def self.update + User.find_each do |user| + personal_lls = LogLogSubscription.new(:user => user, + :channel => "for_" + user.unix_name, + :period => "daily") + personal_lls.save + logis_lls = LogLogSubscription.new(:user => user, + :channel => "logis", + :period => "weekly") + logis_lls.save + end + end +end Added: trunk/db/migrate/20100810151704_redo_indices.rb =================================================================== --- trunk/db/migrate/20100810151704_redo_indices.rb (rev 0) +++ trunk/db/migrate/20100810151704_redo_indices.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,35 @@ +class RedoIndices < ActiveRecord::Migration + def self.up + remove_index(:votes, :name => "index_votes_on_user_id_and_rating_id") + add_index(:annotations, :logi_id) + add_index(:commentings, [:from_logi_id, :to_logi_id]) + add_index(:commentings, :from_logi_id) + add_index(:commentings, :to_logi_id) + add_index(:external_links, :logi_id) + add_index(:invitations, :user_id) + add_index(:link_matches, :logi_id) + add_index(:links, [:from_logi_id, :to_logi_id]) + add_index(:links, :from_logi_id) + add_index(:links, :to_logi_id) + add_index(:log_log_subscriptions, :user_id) + add_index(:log_log_subscriptions, :period) + add_index(:logi_versions, :logi_id) + add_index(:logis, :tags_string) + add_index(:logis, [:creator_user_id, :created_at]) + add_index(:peer_group_memberships, :user_id) + add_index(:prefs_profiles, :user_id) + add_index(:ratings, :logi_id) + add_index(:remarks, :logi_id) + add_index(:steps, :path_id) + add_index(:steps, :logi_id) + add_index(:used_tags, :string) + add_index(:user_group_memberships, :user_id) + add_index(:users, :unix_name) + add_index(:users, :single_access_token) + add_index(:votes, [:user_id, :rating_id], :unique => false) # without unique + add_index(:votes, :rating_id) + end + + def self.down + end +end Added: trunk/db/migrate/20100810165341_restore_public_peergroup_memberships.rb =================================================================== --- trunk/db/migrate/20100810165341_restore_public_peergroup_memberships.rb (rev 0) +++ trunk/db/migrate/20100810165341_restore_public_peergroup_memberships.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,20 @@ +class RestorePublicPeergroupMemberships < ActiveRecord::Migration + def self.up + if GlobalConfig.available? + RestorePublicPeergroupMemberships.update + end + end + + def self.down + end + + def self.update + User.find_each do |u| + m = PeerGroup.public.membership_for(u) + if m.new_record? + m.power = PeerGroupMembership.member_power + m.save + end + end + end +end Modified: trunk/db/schema.rb =================================================================== --- trunk/db/schema.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/db/schema.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -9,7 +9,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20100626115750) do +ActiveRecord::Schema.define(:version => 20100810165341) do create_table "acts_as_xapian_jobs", :force => true do |t| t.string "model", :null => false @@ -27,12 +27,18 @@ t.datetime "created_at", :null => false end + add_index "annotations", ["logi_id"], :name => "index_annotations_on_logi_id" + create_table "commentings", :force => true do |t| t.integer "user_id", :null => false t.integer "from_logi_id", :null => false t.integer "to_logi_id", :null => false end + add_index "commentings", ["from_logi_id", "to_logi_id"], :name => "index_commentings_on_from_logi_id_and_to_logi_id" + add_index "commentings", ["from_logi_id"], :name => "index_commentings_on_from_logi_id" + add_index "commentings", ["to_logi_id"], :name => "index_commentings_on_to_logi_id" + create_table "external_links", :force => true do |t| t.integer "logi_id", :null => false t.integer "user_id", :null => false @@ -42,6 +48,8 @@ t.datetime "created_at", :null => false end + add_index "external_links", ["logi_id"], :name => "index_external_links_on_logi_id" + create_table "global_configs", :force => true do |t| t.integer "progress", :default => 0, :null => false t.string "domain", :null => false @@ -94,12 +102,15 @@ t.datetime "created_at", :null => false end + add_index "invitations", ["user_id"], :name => "index_invitations_on_user_id" + create_table "link_matches", :force => true do |t| t.integer "link_id", :null => false t.integer "logi_id", :null => false end add_index "link_matches", ["link_id", "logi_id"], :name => "index_link_matches_on_link_id_and_logi_id", :unique => true + add_index "link_matches", ["logi_id"], :name => "index_link_matches_on_logi_id" create_table "links", :force => true do |t| t.integer "user_id", :null => false @@ -114,6 +125,19 @@ t.boolean "re_resolve", :default => false, :null => false end + add_index "links", ["from_logi_id", "to_logi_id"], :name => "index_links_on_from_logi_id_and_to_logi_id" + add_index "links", ["from_logi_id"], :name => "index_links_on_from_logi_id" + add_index "links", ["to_logi_id"], :name => "index_links_on_to_logi_id" + + create_table "log_log_subscriptions", :force => true do |t| + t.integer "user_id", :null => false + t.string "channel", :null => false + t.string "period", :null => false + end + + add_index "log_log_subscriptions", ["period"], :name => "index_log_log_subscriptions_on_period" + add_index "log_log_subscriptions", ["user_id"], :name => "index_log_log_subscriptions_on_user_id" + create_table "logi_versions", :force => true do |t| t.integer "logi_id", :null => false t.integer "editor_user_id", :null => false @@ -123,6 +147,7 @@ end add_index "logi_versions", ["logi_id", "nr"], :name => "index_logi_versions_on_logi_id_and_nr", :unique => true + add_index "logi_versions", ["logi_id"], :name => "index_logi_versions_on_logi_id" create_table "logis", :force => true do |t| t.string "perma_id", :null => false @@ -138,7 +163,9 @@ t.integer "kind", :null => false end + add_index "logis", ["creator_user_id", "created_at"], :name => "index_logis_on_creator_user_id_and_created_at" add_index "logis", ["perma_id"], :name => "index_logis_on_perma_id", :unique => true + add_index "logis", ["tags_string"], :name => "index_logis_on_tags_string" create_table "open_id_authentication_associations", :force => true do |t| t.integer "issued" @@ -171,6 +198,7 @@ end add_index "peer_group_memberships", ["user_id", "peer_group_id"], :name => "index_peer_group_memberships_on_user_id_and_peer_group_id", :unique => true + add_index "peer_group_memberships", ["user_id"], :name => "index_peer_group_memberships_on_user_id" create_table "peer_groups", :force => true do |t| t.string "name", :limit => 80, :null => false @@ -190,6 +218,7 @@ end add_index "prefs_profiles", ["user_id", "name"], :name => "index_prefs_profiles_on_user_id_and_name", :unique => true + add_index "prefs_profiles", ["user_id"], :name => "index_prefs_profiles_on_user_id" create_table "ratings", :force => true do |t| t.integer "peer_group_id", :null => false @@ -200,6 +229,7 @@ end add_index "ratings", ["logi_id", "peer_group_id"], :name => "index_ratings_on_logi_id_and_peer_group_id", :unique => true + add_index "ratings", ["logi_id"], :name => "index_ratings_on_logi_id" create_table "remarks", :force => true do |t| t.integer "logi_id", :null => false @@ -208,6 +238,8 @@ t.datetime "created_at", :null => false end + add_index "remarks", ["logi_id"], :name => "index_remarks_on_logi_id" + create_table "sessions", :force => true do |t| t.string "session_id", :null => false t.text "data" @@ -225,11 +257,16 @@ t.integer "position", :null => false end + add_index "steps", ["logi_id"], :name => "index_steps_on_logi_id" + add_index "steps", ["path_id"], :name => "index_steps_on_path_id" + create_table "used_tags", :force => true do |t| t.string "string", :limit => 80, :null => false t.integer "use_count", :default => 0, :null => false end + add_index "used_tags", ["string"], :name => "index_used_tags_on_string" + create_table "user_group_memberships", :force => true do |t| t.integer "user_group_id", :null => false t.integer "user_id", :null => false @@ -237,6 +274,7 @@ end add_index "user_group_memberships", ["user_id", "user_group_id"], :name => "index_user_group_memberships_on_user_id_and_user_group_id", :unique => true + add_index "user_group_memberships", ["user_id"], :name => "index_user_group_memberships_on_user_id" create_table "user_groups", :force => true do |t| t.string "name", :limit => 80, :null => false @@ -271,6 +309,8 @@ add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["openid_identifier"], :name => "index_users_on_openid_identifier" add_index "users", ["perishable_token"], :name => "index_users_on_perishable_token" + add_index "users", ["single_access_token"], :name => "index_users_on_single_access_token" + add_index "users", ["unix_name"], :name => "index_users_on_unix_name" create_table "votes", :force => true do |t| t.integer "rating_id", :null => false @@ -282,6 +322,7 @@ t.datetime "created_at", :null => false end - add_index "votes", ["user_id", "rating_id"], :name => "index_votes_on_user_id_and_rating_id", :unique => true + add_index "votes", ["rating_id"], :name => "index_votes_on_rating_id" + add_index "votes", ["user_id", "rating_id"], :name => "index_votes_on_user_id_and_rating_id" end Added: trunk/lib/tasks/log.rake =================================================================== --- trunk/lib/tasks/log.rake (rev 0) +++ trunk/lib/tasks/log.rake 2010-08-11 20:50:25 UTC (rev 1761) @@ -0,0 +1,13 @@ +namespace :log do + desc "Rotates the logs" + task :rotate do + # create, migrate, load & fill the development-db & index + ["log/production.log", "log/access.log", "log/logilogi.rb.log"].each do |file| + if File.exists?(file) + # Will lose some log-data, but simple and effective + sh "cp #{file} #{file}.#{Time.now.strftime("%y%m%d%H%M%S")}" + sh "cat /dev/null > #{file}" + end + end + end +end Modified: trunk/lib/tasks/server.rake =================================================================== --- trunk/lib/tasks/server.rake 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/lib/tasks/server.rake 2010-08-11 20:50:25 UTC (rev 1761) @@ -87,12 +87,20 @@ end namespace :maintenance do - desc "Runs daily maintenance tasks, like backups, cleaning cache and" + - " sessions. Pass in options for sub-tasks" - task :daily do - Rake::Task["server:db:backup"].invoke - Rake::Task["pub:cache:clear"].invoke - Rake::Task["db:sessions:clean"].invoke + namespace :daily do + desc "Runs daily maintenance tasks as the normal user: backups and" + + " cleaning sessions" + task :user do + Rake::Task["server:db:backup"].invoke + Rake::Task["db:sessions:clean"].invoke + end + + desc "Runs daily maintenance tasks as the www user: cleaning cache" + + " and log rotation" + task :www do + Rake::Task["pub:cache:clear"].invoke + Rake::Task["log:rotate"].invoke + end end end Modified: trunk/public/stylesheets/logilogi.css =================================================================== --- trunk/public/stylesheets/logilogi.css 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/public/stylesheets/logilogi.css 2010-08-11 20:50:25 UTC (rev 1761) @@ -786,6 +786,11 @@ float: left; width: 33.7em; } +input#log_log_subscription_personalized_log, +input#log_log_subscription_logis_log { + float: left; + margin: 0.3em 0.5em 0 0; +} #navigation_bar input.tag_list { font-size: 1.2em; margin-right: 0.2em; @@ -1388,10 +1393,12 @@ float: right; padding-top: -2em; } -#personal_rss .your_feed { +#personal_rss .your_feed, +#user_rss .user_feed { float: left; } -#personal_rss .rss_link { +#personal_rss .rss_link, +#user_rss .rss_link { float: left; padding-left: 0.5em; padding-top: 0.2em; Modified: trunk/test/fixtures/peer_group_memberships.yml =================================================================== --- trunk/test/fixtures/peer_group_memberships.yml 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/fixtures/peer_group_memberships.yml 2010-08-11 20:50:25 UTC (rev 1761) @@ -10,8 +10,22 @@ user: john_johnson role: <%= Const::PeerGroupMembership::MEMBER %> power: 13 + percentile: 83.3333333333333 + updated_at: <%= 10.days.ago.to_s(:db) %> +johnny_runner_public_peer_group: + peer_group_id: <%= PeerGroup.public.id %> + user: johnny_runner + role: <%= Const::PeerGroupMembership::MEMBER %> + power: 1 percentile: 50 - updated_at: <%= 10.days.ago.to_s(:db) %> + updated_at: <%= 1.hour.ago.to_s(:db) %> +eddy_crawler_public_peer_group: + peer_group_id: <%= PeerGroup.public.id %> + user: eddy_crawler + role: <%= Const::PeerGroupMembership::MEMBER %> + power: 1 + percentile: 33.3333333333333 + updated_at: <%= 3.hours.ago.to_s(:db) %> john_johnson_biologers: peer_group: biologers user: john_johnson Modified: trunk/test/fixtures/ratings.yml =================================================================== --- trunk/test/fixtures/ratings.yml 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/fixtures/ratings.yml 2010-08-11 20:50:25 UTC (rev 1761) @@ -52,7 +52,7 @@ score: 4.0 weight: 1.0 updated_at: <%= 2.days.ago.to_s(:db) %> -manta_public_peer_group: +logi_logi_manta_public_peer_group: peer_group_id: <%= PeerGroup.public.id %> logi: logi_logi_manta score: 2.0 Modified: trunk/test/fixtures/votes.yml =================================================================== --- trunk/test/fixtures/votes.yml 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/fixtures/votes.yml 2010-08-11 20:50:25 UTC (rev 1761) @@ -37,4 +37,12 @@ score: 2.0 ip_address: '127.0.0.1' kind: <%= Const::Vote::USER %> - created_at: <%= 6.days.ago.to_s(:db) %> + created_at: <%= 20.days.ago.to_s(:db) %> +anonymous_from_public_peer_group_on_logi_logi_manta: + rating: logi_logi_manta_public_peer_group + user_id: <%= User.anonymous.id %> + weight: 0.1 + score: 2.0 + ip_address: '127.0.0.1' + kind: <%= Const::Vote::USER %> + created_at: <%= 2.days.ago.to_s(:db) %> Modified: trunk/test/functional/comments_controller_test.rb =================================================================== --- trunk/test/functional/comments_controller_test.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/functional/comments_controller_test.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -45,7 +45,7 @@ nr_of_c_l = l.commenting_logis.size post :create, {:ll_link_string => l.link.to_s, - :logi => {:title => 'K', + :from_blog => "false", :logi => {:title => 'K', :body => '<p>akatu</p>'}}.merge(self.thorny_ok_hash) assert_response :success @@ -57,4 +57,23 @@ assert c_l assert_equal [Tag.untagged], c_l.tags end + + def test_create_new_logi_from_blog + l = logis(:logi_logi) + nr_of_c_l = l.commenting_logis.size + + post :create, {:ll_link_string => l.link.to_s, + :from_blog => "true", :logi => {:title => 'K', + :body => '<p>akiiatu</p>'}}.merge(self.thorny_ok_hash) + + assert_response :success + l.reload + assert_equal l.commenting_logis.size, nr_of_c_l # no comment + c_ls = Logi.find_all_by_text_stack('<h1>K</h1> <p>akiiatu</p>') + assert_equal 1, c_ls.size + c_l = c_ls.first + assert c_l + assert_equal [Tag.from_s( + User.anonymous.home_page_tag_string), Tag.blog], c_l.tags + end end Modified: trunk/test/functional/users_controller_test.rb =================================================================== --- trunk/test/functional/users_controller_test.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/functional/users_controller_test.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -95,6 +95,22 @@ # assert_equal 'du...@pe...', u.email # assert_equal 'http://your.openid.net/', u.openid_identifier + # log log subscriptions, enable + post :update, :id => u.id, :log_log_subscription => { + :personalized_log => 1, :logis_log => 1, :updating => true} + assert_response :redirect + u.reload + assert LogLogSubscription.find_by_user_id_and_channel(u.id, "logis") + assert LogLogSubscription.find_by_user_id_and_channel(u.id, "for_" + u.unix_name) + + # disable personalized_log + post :update, :id => u.id, :log_log_subscription => { + :logis_log => 1, :updating => true} + assert_response :redirect + u.reload + assert LogLogSubscription.find_by_user_id_and_channel(u.id, "logis") + assert !LogLogSubscription.find_by_user_id_and_channel(u.id, "for_" + u.unix_name) + # prefs post :update, :id => u.id, :user => nil, :prefs_profile => {:default_peer_group_id => p_g.id} assert_response :redirect Modified: trunk/test/unit/notifier_test.rb =================================================================== --- trunk/test/unit/notifier_test.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/unit/notifier_test.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -24,10 +24,12 @@ @expected = TMail::Mail.new end - def test_for_log + def test_log_log u = users(:eduard_edison) - assert Notifier.create_for_log(u, "for_eduard_edison", "~ Moo ~\n Cows\n Boy!") + assert Notifier.create_personalized_log(u, "daily", "~ Moo ~\n Cows\n Boy!") + assert Notifier.create_logis_log(u, "weekly", "~ Moo ~\n Cows\n Boy!") + assert Notifier.create_admin_log("weekly", 20, "~ Moo ~\n Cows\n Boy!") end def test_welcome Modified: trunk/test/unit/peer_group_membership_test.rb =================================================================== --- trunk/test/unit/peer_group_membership_test.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/unit/peer_group_membership_test.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -38,16 +38,16 @@ eduards_m = peer_group_memberships(:eduard_edison_public_peer_group) assert_equal 100, eduards_m.percentile.round johns_m = peer_group_memberships(:john_johnson_public_peer_group) - assert_equal 75, johns_m.percentile.round + assert_equal 83, johns_m.percentile.round end def test_drop_the_powerless - eduards_m = peer_group_memberships(:eduard_edison_public_peer_group) - eduards_m.power = PeerGroupMembership.member_power - eduards_m.save! + johns_m = peer_group_memberships(:john_johnson_biologers) + johns_m.power = PeerGroupMembership.member_power + johns_m.save! PeerGroupMembership.drop_the_powerless - assert_equal nil, PeerGroupMembership.find_by_id(eduards_m.id) - assert peer_group_memberships(:john_johnson_public_peer_group) + assert_equal nil, PeerGroupMembership.find_by_id(johns_m.id) + assert peer_group_memberships(:johnny_runner_biologers) end ### Methods Modified: trunk/test/unit/rating_test.rb =================================================================== --- trunk/test/unit/rating_test.rb 2010-08-07 09:51:32 UTC (rev 1760) +++ trunk/test/unit/rating_test.rb 2010-08-11 20:50:25 UTC (rev 1761) @@ -41,11 +41,18 @@ end def test_vote_for - # Get two existing votes + # Get an existing vote r = ratings(:peter_abelard_public_peer_group) vote = r.vote_for(users(:john_johnson), '1.1.1.1') assert !vote.new_record? + + # Get a new anonymous vote vote = r.vote_for(User.anonymous, '127.0.0.1') + assert vote.new_record? # more than a week old + + # Get an old anonymous vote + r = ratings(:logi_logi_manta_public_peer_group) + vote = r.vote_for(User.anonymous, '127.0.0.1') assert !vote.new_record? # Get a new, and an old vote @@ -78,10 +85,8 @@ john = users(:john_johnson) johns_power = PeerGroup.public.membership_for(john).power - extra_attributes = {:logi => logis(:michel_foucault), - :peer_group => PeerGroup.public} - - r = Rating.new({:score => 5, :weight => 30}.merge!(extra_attributes)) + r = Rating.new({:score => 5, :weight => 30, + :logi => logis(:michel_foucault), :peer_group => PeerGroup.public}) old_power_income = r.power_income vote = r.vote_for(u, nil) vote.score = 3 @@ -107,13 +112,30 @@ end def test_vote_anonymous + # not voted before i = logis(:nederland) p_g = PeerGroup.public r = i.rating_for(p_g) + assert r.new_record? vote = r.vote_for(User.anonymous, '127.0.0.1') vote.score = 5 r.vote(vote) + r.reload assert_equal 5, r.score + + # voted more than a week ago + i = logis(:peter_abelard) + p_g = PeerGroup.public + r = i.rating_for(p_g) + assert !r.new_record? + r_v_c = r.votes.size + vote = r.vote_for(User.anonymous, '127.0.0.1') + assert vote.new_record? + vote.score = 5 + r.vote(vote) + r.reload + assert_equal r_v_c + 1, r.votes.size + assert_equal 4.1, r.weight end def test_vote_errors @@ -127,7 +149,9 @@ # voting twice vote.score = 5 - assert r.vote(vote) + r.vote(vote) + vote.reload + assert !vote.new_record? assert_raise(RuntimeError) { r.vote(vote) } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |