[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,
- : :index
- side_body :tags, :new_users,
- : :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,
: :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.
|