aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/track_controller.rb11
-rw-r--r--app/controllers/user_controller.rb58
-rw-r--r--app/models/track_mailer.rb4
-rw-r--r--app/models/track_thing.rb66
-rw-r--r--app/views/layouts/default.rhtml1
-rw-r--r--app/views/request/_sidebar.rhtml2
-rw-r--r--app/views/request/_wall_listing.rhtml30
-rw-r--r--app/views/track/_tracking_links.rhtml3
-rw-r--r--app/views/user/_change_receive_email.rhtml10
-rw-r--r--app/views/user/show.rhtml8
-rw-r--r--app/views/user/wall.rhtml13
-rw-r--r--config/routes.rb3
-rw-r--r--db/migrate/112_add_receive_email_alerts_to_user.rb11
-rw-r--r--public/stylesheets/main.css7
14 files changed, 182 insertions, 45 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index 312cedc6c..f1ece3bcc 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -123,7 +123,7 @@ class TrackController < ApplicationController
if @user
@existing_track = TrackThing.find_by_existing_track(@user, @track_thing)
if @existing_track
- flash[:notice] = _("You are already being emailed updates about ") + @track_thing.params[:list_description]
+ flash[:notice] = _("You are already following updates about {{track_description}}", :track_description => @track_thing.params[:list_description])
return true
end
end
@@ -135,8 +135,11 @@ class TrackController < ApplicationController
@track_thing.track_medium = 'email_daily'
@track_thing.tracking_user_id = @user.id
@track_thing.save!
-
- flash[:notice] = _("You will now be emailed updates about ") + @track_thing.params[:list_description]
+ if @user.receive_email_alerts
+ flash[:notice] = _('You will now be emailed updates about {{track_description}}. <a href="{{change_email_alerts_url}}">Prefer not to receive emails?</a>', :track_description => @track_thing.params[:list_description], :change_email_alerts_url => url_for(:controller => "user", :action => "wall", :url_name => @user.url_name))
+ else
+ flash[:notice] = _('You are now <a href="{{wall_url_user}}">following</a> updates about {{track_description}}', @track_thing.params[:list_description], :wall_url_user => url_for(:controller => "user", :action => "wall", :url_name => @user.url_name))
+ end
return true
end
@@ -179,7 +182,7 @@ class TrackController < ApplicationController
new_medium = params[:track_medium]
if new_medium == 'delete'
track_thing.destroy
- flash[:notice] = _("You will no longer be emailed updates about ") + track_thing.params[:list_description]
+ flash[:notice] = _("You are no longer following {{track_description}}", :track_description => track_thing.params[:list_description])
redirect_to params[:r]
# Reuse code like this if we let medium change again.
#elsif new_medium == 'email_daily'
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index 76c56c442..18fae7024 100644
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -6,6 +6,8 @@
#
# $Id: user_controller.rb,v 1.71 2009-09-17 07:51:47 francis Exp $
+require 'set'
+
class UserController < ApplicationController
layout :select_layout
@@ -89,6 +91,50 @@ class UserController < ApplicationController
end
+ # Show the user's wall
+ def wall
+ long_cache
+ @display_user = User.find(:first, :conditions => [ "url_name = ? and email_confirmed = ?", params[:url_name], true ])
+ if not @display_user
+ raise ActiveRecord::RecordNotFound.new("user not found, url_name=" + params[:url_name])
+ end
+ @is_you = !@user.nil? && @user.id == @display_user.id
+ feed_results = Set.new
+ # Use search query for this so can collapse and paginate easily
+ # XXX really should just use SQL query here rather than Xapian.
+ begin
+ requests_query = 'requested_by:' + @display_user.url_name
+ comments_query = 'commented_by:' + @display_user.url_name
+ # XXX combine these as OR query
+ @xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse')
+ @xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil)
+ rescue
+ @xapian_requests = nil
+ @xapian_comments = nil
+ end
+
+ feed_results += @xapian_requests.results.map {|x| x[:model]} if !@xapian_requests.nil?
+ feed_results += @xapian_comments.results.map {|x| x[:model]} if !@xapian_comments.nil?
+
+ # All tracks for the user
+ if @is_you
+ @track_things = TrackThing.find(:all, :conditions => ["tracking_user_id = ? and track_medium = ?", @display_user.id, 'email_daily'], :order => 'created_at desc')
+ end
+ for track_thing in @track_things
+ # XXX factor out of track_mailer.rb
+ xapian_object = InfoRequest.full_search([InfoRequestEvent], track_thing.track_query, 'described_at', true, nil, 100, 1)
+ feed_results += xapian_object.results.map {|x| x[:model]}
+ end
+
+ @feed_results = Array(feed_results).sort {|x,y| y.created_at <=> x.created_at}
+
+ respond_to do |format|
+ format.html { @has_json = true }
+ format.json { render :json => @display_user.json_for_api }
+ end
+
+ end
+
# Login form
def signin
work_out_post_redirect
@@ -533,6 +579,18 @@ class UserController < ApplicationController
end
end
+ # Change about me text on your profile page
+ def set_receive_email_alerts
+ if authenticated_user.nil?
+ flash[:error] = _("You need to be logged in to edit your profile.")
+ redirect_to frontpage_url
+ return
+ end
+ @user.receive_email_alerts = params[:receive_email_alerts]
+ @user.save!
+ redirect_to request.headers['HTTP_REFERER']
+ end
+
private
def is_modal_dialog
diff --git a/app/models/track_mailer.rb b/app/models/track_mailer.rb
index f618fba49..f4b4a5e7b 100644
--- a/app/models/track_mailer.rb
+++ b/app/models/track_mailer.rb
@@ -47,8 +47,8 @@ class TrackMailer < ApplicationMailer
return done_something
end
for user in users
- next if !user.should_be_emailed?
-
+ next if !user.should_be_emailed? || !user.receive_email_alerts
+
email_about_things = []
track_things = TrackThing.find(:all, :conditions => [ "tracking_user_id = ? and track_medium = ?", user.id, 'email_daily' ])
for track_thing in track_things
diff --git a/app/models/track_thing.rb b/app/models/track_thing.rb
index f6a58189f..7f6bc9a7e 100644
--- a/app/models/track_thing.rb
+++ b/app/models/track_thing.rb
@@ -195,16 +195,16 @@ class TrackThing < ActiveRecord::Base
if self.track_type == 'request_updates'
@params = {
# Website
- :list_description => _("'{{link_to_request}}', a request", :link_to_request => "<a href=\"/request/" + CGI.escapeHTML(self.info_request.url_title) + "\">" + CGI.escapeHTML(self.info_request.title) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track this request by email"),
- :verb_on_page_already => _("You are already tracking this request by email"),
+ :list_description => _("'{{link_to_request}}', a request", :link_to_request => "<a href=\"/request/" + CGI.escapeHTML(self.info_request.url_title) + "\">" + CGI.escapeHTML(self.info_request.title) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
+ :verb_on_page => _("Follow this request"),
+ :verb_on_page_already => _("You are already following this request"),
# Email
:title_in_email => _("New updates for the request '{{request_title}}'", :request_title => self.info_request.title),
:title_in_rss => _("New updates for the request '{{request_title}}'", :request_title => self.info_request.title),
# Authentication
- :web => _("To follow updates to the request '{{request_title}}'", :request_title => CGI.escapeHTML(self.info_request.title)),
- :email => _("Then you will be emailed whenever the request '{{request_title}}' is updated.", :request_title => CGI.escapeHTML(self.info_request.title)),
- :email_subject => _("Confirm you want to follow updates to the request '{{request_title}}'", :request_title => self.info_request.title),
+ :web => _("To follow the request '{{request_title}}'", :request_title => CGI.escapeHTML(self.info_request.title)),
+ :email => _("Then you will be updated whenever the request '{{request_title}}' is updated.", :request_title => CGI.escapeHTML(self.info_request.title)),
+ :email_subject => _("Confirm you want to follow the request '{{request_title}}'", :request_title => self.info_request.title),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -212,15 +212,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("any <a href=\"/list\">new requests</a>"),
- :verb_on_page => _("Email me when there are new requests"),
- :verb_on_page_already => _("You are being emailed when there are new requests"),
+ :verb_on_page => _("Follow all new requests"),
+ :verb_on_page_already => _("You are already following new requests"),
# Email
:title_in_email => _("New Freedom of Information requests"),
:title_in_rss => _("New Freedom of Information requests"),
# Authentication
- :web => _("To be emailed about any new requests"),
- :email => _("Then you will be emailed whenever anyone makes a new FOI request."),
- :email_subject => _("Confirm you want to be emailed about new requests"),
+ :web => _("To be follow new requests"),
+ :email => _("Then you will be following all new FOI request."),
+ :email_subject => _("Confirm you want to follow new requests"),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -228,15 +228,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("any <a href=\"/list/successful\">successful requests</a>"),
- :verb_on_page => _("Email me new successful responses "),
- :verb_on_page_already => _("You are being emailed about any new successful responses"),
+ :verb_on_page => _("Follow new successful responses"),
+ :verb_on_page_already => _("You are following all new successful responses"),
# Email
:title_in_email => _("Successful Freedom of Information requests"),
:title_in_rss => _("Successful Freedom of Information requests"),
# Authentication
- :web => _("To be emailed about any successful requests"),
- :email => _("Then you will be emailed whenever an FOI request succeeds."),
- :email_subject => _("Confirm you want to be emailed when an FOI request succeeds"),
+ :web => _("To follow all successful requests"),
+ :email => _("Then you will be notified whenever an FOI request succeeds."),
+ :email_subject => _("Confirm you want to follow all successful FOI requests"),
# RSS sorting - used described date, as newest would give a
# date for responses possibly days before description, so
# wouldn't appear at top of list when description (known
@@ -246,48 +246,48 @@ class TrackThing < ActiveRecord::Base
elsif self.track_type == 'public_body_updates'
@params = {
# Website
- :list_description => _("'{{link_to_authority}}', a public authority", :link_to_authority => "<a href=\"/body/" + CGI.escapeHTML(self.public_body.url_name) + "\">" + CGI.escapeHTML(self.public_body.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track requests to {{public_body_name}} by email",:public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :verb_on_page_already => _("You are already tracking requests to {{public_body_name}} by email", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :list_description => _("'{{link_to_authority}}', a public authority", :link_to_authority => "<a href=\"/body/" + CGI.escapeHTML(self.public_body.url_name) + "\">" + CGI.escapeHTML(self.public_body.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
+ :verb_on_page => _("Follow requests to {{public_body_name}}",:public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :verb_on_page_already => _("You are already following requests to {{public_body_name}}", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
# Email
:title_in_email => self.public_body.law_only_short + " requests to '" + self.public_body.name + "'",
:title_in_rss => self.public_body.law_only_short + " requests to '" + self.public_body.name + "'",
# Authentication
- :web => _("To be emailed about requests made using {{site_name}} to the public authority '{{public_body_name}}'", :site_name=>MySociety::Config.get('SITE_NAME', 'Alaveteli'), :public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :email => _("Then you will be emailed whenever someone requests something or gets a response from '{{public_body_name}}'.", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :email_subject => _("Confirm you want to be emailed about requests to '{{public_body_name}}'", :public_body_name=>self.public_body.name),
+ :web => _("To follow requests made using {{site_name}} to the public authority '{{public_body_name}}'", :site_name=>MySociety::Config.get('SITE_NAME', 'Alaveteli'), :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :email => _("Then you will be notified whenever someone requests something or gets a response from '{{public_body_name}}'.", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :email_subject => _("Confirm you want to follow requests to '{{public_body_name}}'", :public_body_name=>self.public_body.name),
# RSS sorting
:feed_sortby => 'newest'
}
elsif self.track_type == 'user_updates'
@params = {
# Website
- :list_description => _("'{{link_to_user}}', a person", :link_to_user => "<a href=\"/user/" + CGI.escapeHTML(self.tracked_user.url_name) + "\">" + CGI.escapeHTML(self.tracked_user.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track this person by email"),
- :verb_on_page_already => _("You are already tracking this person by email"),
+ :list_description => _("'{{link_to_user}}', a person", :link_to_user => "<a href=\"/user/" + CGI.escapeHTML(self.tracked_user.url_name) + "\">" + CGI.escapeHTML(self.tracked_user.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
+ :verb_on_page => _("Follow this person"),
+ :verb_on_page_already => _("You are already following this person"),
# Email
:title_in_email => _("FOI requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
:title_in_rss => _("FOI requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
# Authentication
- :web => _("To be emailed about requests by '{{user_name}}'", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
- :email => _("Then you will be emailed whenever '{{user_name}}' requests something or gets a response.", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
- :email_subject => _("Confirm you want to be emailed about requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
+ :web => _("To follow requests by '{{user_name}}'", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
+ :email => _("Then you will be notified whenever '{{user_name}}' requests something or gets a response.", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
+ :email_subject => _("Confirm you want to follow requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
# RSS sorting
:feed_sortby => 'newest'
}
elsif self.track_type == 'search_query'
@params = {
# Website
- :list_description => "<a href=\"/search/" + CGI.escapeHTML(self.track_query) + "/newest/advanced\">" + self.track_query_description + "</a>", # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track things matching this search by email"),
- :verb_on_page_already => _("You are already tracking things matching this search by email"),
+ :list_description => "<a href=\"/search/" + CGI.escapeHTML(self.track_query) + "/newest/advanced\">" + self.track_query_description + "</a>", # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
+ :verb_on_page => _("Follow things matching this search"),
+ :verb_on_page_already => _("You are already following things matching this search"),
# Email
:title_in_email => _("Requests or responses matching your saved search"),
:title_in_rss => _("Requests or responses matching your saved search"),
# Authentication
:web => _("To follow requests and responses matching your search"),
- :email => _("Then you will be emailed whenever a new request or response matches your search."),
- :email_subject => _("Confirm you want to be emailed about new requests or responses matching your search"),
+ :email => _("Then you will be notified whenever a new request or response matches your search."),
+ :email_subject => _("Confirm you want to follow new requests or responses matching your search"),
# RSS sorting - XXX hmmm, we don't really know which to use
# here for sorting. Might be a query term (e.g. 'cctv'), in
# which case newest is good, or might be something like
diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml
index e60e7bef2..bc9dfb02d 100644
--- a/app/views/layouts/default.rhtml
+++ b/app/views/layouts/default.rhtml
@@ -104,6 +104,7 @@
<% if @user %>
<%=link_to _("My requests"), show_user_requests_path(:url_name => @user.url_name) %>
<%=link_to _("My profile"), show_user_profile_path(:url_name => @user.url_name) %>
+ <%=link_to _("My wall"), show_user_wall_path(:url_name => @user.url_name) %>
<% end %>
diff --git a/app/views/request/_sidebar.rhtml b/app/views/request/_sidebar.rhtml
index c0708a36a..bca142fa9 100644
--- a/app/views/request/_sidebar.rhtml
+++ b/app/views/request/_sidebar.rhtml
@@ -1,9 +1,11 @@
<div id="right_column">
+ <div id="follow_box">
<h2><%= _('Follow this request') %></h2>
<% follower_count = TrackThing.count(:all, :conditions => ["info_request_id = ?", @info_request.id]) + 1 %>
<p><%= n_("There is %d person following this request", "There are %d people following this request", follower_count) % follower_count %></p>
<%= render :partial => 'track/tracking_links', :locals => { :track_thing => @track_thing, :own_request => @info_request.user == @user, :location => 'sidebar' } %>
+ </div>
<% if @info_request.described_state != "attention_requested" %>
<h2><%= _('Offensive? Unsuitable?') %></h2>
<% if @info_request.attention_requested %>
diff --git a/app/views/request/_wall_listing.rhtml b/app/views/request/_wall_listing.rhtml
new file mode 100644
index 000000000..9cde234c0
--- /dev/null
+++ b/app/views/request/_wall_listing.rhtml
@@ -0,0 +1,30 @@
+<% if @highlight_words.nil?
+ @highlight_words = []
+end %>
+
+<div class="request_listing">
+ <div class="request_left">
+ <div class="requester">
+ <% if event.event_type == 'sent' %>
+ <%= _('A new request, <em><a href="{{request_url}}">{{request_title}}</a></em>, was sent to {{public_body_name}} by {{info_request_user}} on {{date}}.',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>request_url(info_request),:request_title=>info_request.title) %>
+ <% elsif event.event_type == 'followup_sent' %>
+ <%= _('A <a href="{{request_url}}">follow up</a> to <em>{{request_title}}</em> was sent to {{public_body_name}} by {{info_request_user}} on {{date}}.',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>outgoing_message_url(event.outgoing_message),:request_title=>info_request.title) %>
+ <% elsif event.event_type == 'response' %>
+ <%= _('A <a href="{{request_url}}">response</a> to <em>{{request_title}}</em> was sent by {{public_body_name}} to {{info_request_user}} on {{date}}. The request status is: {{request_status}}',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>incoming_message_url(event.incoming_message_selective_columns("incoming_messages.id")),:request_title=>info_request.title,:request_status=>info_request.display_status) %>
+ <% elsif event.event_type == 'comment' %>
+ <%= _('An <a href="{{request_url}}">annotation</a> to <em>{{request_title}}</em> was made by {{event_comment_user}} on {{date}}',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:event_comment_user=>user_link_absolute(event.comment.user),:date=>simple_date(event.created_at),:request_url=>comment_url(event.comment),:request_title=>info_request.title) %>
+ <% else %>
+ <%# Events of other types will not be indexed: see InfoRequestEvent#indexed_by_search?
+ However, it can happen that we see other types of event transiently here in the period
+ between a change being made and the update-xapian-index job being run. %>
+ <!-- Event of type '<%= event.event_type %>', id=<%= event.id %> -->
+ <% end %>
+ </div>
+ </div>
+ <div class="request_right">
+ <span class="desc">
+ <%= highlight_and_excerpt(event.search_text_main(true), @highlight_words, 150) %>
+ </span>
+ </div>
+</div>
+
diff --git a/app/views/track/_tracking_links.rhtml b/app/views/track/_tracking_links.rhtml
index f50a8bbbf..5d770c742 100644
--- a/app/views/track/_tracking_links.rhtml
+++ b/app/views/track/_tracking_links.rhtml
@@ -17,8 +17,7 @@
<% end %>
<% elsif track_thing %>
<div class="feed_link feed_link_<%=location%>">
- <%= link_to '<img src="/images/email-16.png" alt="">', do_track_url(track_thing) %>
- <%= link_to _("Follow by email"), do_track_url(track_thing) %>
+ <%= link_to _("Follow"), do_track_url(track_thing), :class => "link_button_green" %>
</div>
<div class="feed_link feed_link_<%=location%>">
diff --git a/app/views/user/_change_receive_email.rhtml b/app/views/user/_change_receive_email.rhtml
new file mode 100644
index 000000000..1518dae9b
--- /dev/null
+++ b/app/views/user/_change_receive_email.rhtml
@@ -0,0 +1,10 @@
+<% form_tag(:controller=>"user", :action=>"set_receive_email_alerts") do %>
+ <% if @user.receive_email_alerts %>
+ You are currently receiving notification of new activity on your wall by email.
+ <%= hidden_field_tag 'receive_email_alerts', 'false' %>
+ <%= submit_tag "Turn off email alerts" %>
+ <% else %>
+ <%= hidden_field_tag 'receive_email_alerts', 'true' %>
+ <%= submit_tag "Send me alerts of new activity by email" %>
+ <% end %>
+<% end %>
diff --git a/app/views/user/show.rhtml b/app/views/user/show.rhtml
index f8b820f03..e2047f216 100644
--- a/app/views/user/show.rhtml
+++ b/app/views/user/show.rhtml
@@ -192,11 +192,13 @@
</div>
<% end %>
<% if @show_profile && @is_you %>
+ <h2 id="email_subscriptions"> <%= _("Things you're following")%></h2>
+ <p>You can view everything you're following on <%= link_to "your wall", show_user_wall_path %>.</p>
+ <%= render :partial => 'change_receive_email' %>
+ <br>
<% if @track_things.empty? %>
- <h2 id="email_subscriptions"> <%= _('Your email subscriptions')%></h2>
- <p><%= _('None made.')%></p>
+ <p><%= _("You're not following anything.")%></p>
<% else %>
- <h2 id="email_subscriptions"> Your <%=pluralize(@track_things.size, _('email subscription')) %> </h2>
<% if @track_things_grouped.size == 1 %>
<% form_tag({:controller => 'track', :action => 'delete_all_type'}, :class => "feed_form") do %>
<h3>
diff --git a/app/views/user/wall.rhtml b/app/views/user/wall.rhtml
new file mode 100644
index 000000000..b48169908
--- /dev/null
+++ b/app/views/user/wall.rhtml
@@ -0,0 +1,13 @@
+<% @title = h(@display_user.name) + _(" - wall") %>
+
+<p>This page lists your own activity, and activity you've followed. You can change what you're following on <%= link_to "your profile page", show_user_profile_path %>.</p>
+ <%= render :partial => 'change_receive_email' %>
+<div id="user_profile_search">
+ <% if !@feed_results.nil? %>
+ <% for result in @feed_results %>
+ <%= render :partial => 'request/wall_listing', :locals => { :event => result, :info_request => result.info_request } %>
+ <% end %>
+ <% end %>
+
+
+</div>
diff --git a/config/routes.rb b/config/routes.rb
index ca032c7df..0ba8139c2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -82,6 +82,7 @@ ActionController::Routing::Routes.draw do |map|
user.show_user '/user/:url_name.:format', :action => 'show'
user.show_user_profile '/user/:url_name/profile.:format', :action => 'show', :view => 'profile'
user.show_user_requests '/user/:url_name/requests.:format', :action => 'show', :view => 'requests'
+ user.show_user_wall '/user/:url_name/wall.:format', :action => 'wall'
user.contact_user '/user/contact/:id', :action => 'contact'
user.signchangepassword '/profile/change_password', :action => 'signchangepassword'
@@ -92,7 +93,7 @@ ActionController::Routing::Routes.draw do |map|
user.get_profile_photo '/user/:url_name/photo.png', :action => 'get_profile_photo'
user.get_draft_profile_photo '/profile/draft_photo/:id.png', :action => 'get_draft_profile_photo'
user.set_profile_about_me '/profile/set_about_me', :action => 'set_profile_about_me'
-
+ user.set_receive_email_alerts '/profile/set_receive_alerts', :action => 'set_receive_email_alerts'
user.river '/profile/river', :action => 'river'
end
diff --git a/db/migrate/112_add_receive_email_alerts_to_user.rb b/db/migrate/112_add_receive_email_alerts_to_user.rb
new file mode 100644
index 000000000..7e06dd275
--- /dev/null
+++ b/db/migrate/112_add_receive_email_alerts_to_user.rb
@@ -0,0 +1,11 @@
+class AddReceiveEmailAlertsToUser < ActiveRecord::Migration
+ def self.up
+ add_column :users, :receive_email_alerts, :boolean, :default => true, :null => false
+ end
+ def self.down
+ remove_column :users, :receive_email_alerts
+ end
+end
+
+
+
diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css
index 0c2239409..79a5ad342 100644
--- a/public/stylesheets/main.css
+++ b/public/stylesheets/main.css
@@ -882,6 +882,13 @@ vertical-align:middle;
text-decoration:none;
}
+#follow_box {
+ background: #FFFFD2;
+ border-radius: 4px;
+ border: solid #5F5F5F 1px;
+ padding: 4px;
+}
+
h2,dt {
font-size:1.8em;
}