aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin_general_controller.rb1
-rw-r--r--app/helpers/application_helper.rb14
-rwxr-xr-xapp/helpers/link_to_helper.rb19
-rw-r--r--app/models/censor_rule.rb9
-rw-r--r--app/models/comment.rb8
-rw-r--r--app/models/incoming_message.rb12
-rw-r--r--app/models/info_request.rb8
-rw-r--r--app/models/info_request_event.rb43
-rw-r--r--app/models/outgoing_message.rb6
-rw-r--r--app/models/public_body.rb25
-rw-r--r--app/models/user.rb12
-rw-r--r--app/views/admin_general/debug.rhtml2
-rw-r--r--app/views/general/_locale_switcher.rhtml22
-rw-r--r--app/views/layouts/admin.rhtml2
-rw-r--r--app/views/layouts/default.rhtml2
15 files changed, 134 insertions, 51 deletions
diff --git a/app/controllers/admin_general_controller.rb b/app/controllers/admin_general_controller.rb
index e192d097c..43ca4f093 100644
--- a/app/controllers/admin_general_controller.rb
+++ b/app/controllers/admin_general_controller.rb
@@ -80,6 +80,7 @@ class AdminGeneralController < AdminController
def debug
@current_commit = `git log -1 --format="%H"`
@current_branch = `git branch | grep "\*" | awk '{print $2}'`
+ @current_version = `git describe --always --tags`
repo = `git remote show origin -n | grep Fetch | awk '{print $3}' | sed -re 's/.*:(.*).git/\\1/'`
@github_origin = "https://github.com/#{repo.strip}/tree/"
@request_env = request.env
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index df89a372c..0520a8c77 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -113,5 +113,19 @@ module ApplicationHelper
end
end
+ def admin_value(v)
+ if v.nil?
+ nil
+ elsif v.instance_of?(Time)
+ admin_date(v)
+ else
+ h(v)
+ end
+ end
+
+ def admin_date(date)
+ "#{I18n.l(date, :format => "%e %B %Y %H:%M:%S")} (#{_('{{length_of_time}} ago', :length_of_time => time_ago_in_words(date))})"
+ end
+
end
diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb
index 914b4dc12..f621721b6 100755
--- a/app/helpers/link_to_helper.rb
+++ b/app/helpers/link_to_helper.rb
@@ -17,14 +17,18 @@ module LinkToHelper
return show_request_url(params.merge(extra_params))
end
- def request_link(info_request)
- link_to h(info_request.title), request_url(info_request)
+ def request_link(info_request, cls=nil )
+ link_to h(info_request.title), request_url(info_request), :class => cls
end
def request_admin_url(info_request)
return admin_url('request/show/' + info_request.id.to_s)
end
+ def request_admin_link(info_request, name="admin", cls=nil)
+ link_to name, request_admin_url(info_request), :class => cls
+ end
+
def request_both_links(info_request)
link_to(h(info_request.title), main_url(request_url(info_request))) + " (" + link_to("admin", request_admin_url(info_request)) + ")"
end
@@ -66,8 +70,8 @@ module LinkToHelper
def public_body_link_short(public_body)
link_to h(public_body.short_or_long_name), public_body_url(public_body)
end
- def public_body_link(public_body)
- link_to h(public_body.name), public_body_url(public_body)
+ def public_body_link(public_body, cls=nil)
+ link_to h(public_body.name), public_body_url(public_body), :class => cls
end
def public_body_link_absolute(public_body) # e.g. for in RSS
link_to h(public_body.name), main_url(public_body_url(public_body))
@@ -86,8 +90,8 @@ module LinkToHelper
def user_url(user)
return show_user_url(:url_name => user.url_name, :only_path => true)
end
- def user_link(user)
- link_to h(user.name), user_url(user)
+ def user_link(user, cls=nil)
+ link_to h(user.name), user_url(user), :class => cls
end
def user_link_absolute(user)
link_to h(user.name), main_url(user_url(user))
@@ -112,6 +116,9 @@ module LinkToHelper
def user_admin_url(user)
return admin_url('user/show/' + user.id.to_s)
end
+ def user_admin_link(user, name="admin", cls=nil)
+ link_to name, user_admin_url(user), :class => cls
+ end
def user_both_links(user)
link_to(h(user.name), main_url(user_url(user))) + " (" + link_to("admin", user_admin_url(user)) + ")"
end
diff --git a/app/models/censor_rule.rb b/app/models/censor_rule.rb
index 201e60746..72b92d462 100644
--- a/app/models/censor_rule.rb
+++ b/app/models/censor_rule.rb
@@ -51,7 +51,10 @@ class CensorRule < ActiveRecord::Base
errors.add("Censor must apply to an info request a user or a body; ")
end
end
-end
-
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+end
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 44a1079cd..b3d5ba640 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -84,7 +84,9 @@ class Comment < ActiveRecord::Base
return Comment.find(:first, :conditions => [ "info_request_id = ? and body = ?", info_request_id, body ])
end
end
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
-
-
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 8de6e5ba8..9dcd8c1bc 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -674,7 +674,6 @@ class IncomingMessage < ActiveRecord::Base
end
end
-
# Fix DOS style linefeeds to Unix style ones (or other later regexps won't work)
# Needed for e.g. http://www.whatdotheyknow.com/request/60/response/98
text = text.gsub(/\r\n/, "\n")
@@ -1029,8 +1028,6 @@ class IncomingMessage < ActiveRecord::Base
return get_body_for_quoting + "\n\n" + get_attachment_text_clipped
end
-
-
# Has message arrived "recently"?
def recently_arrived
(Time.now - self.created_at) <= 3.days
@@ -1133,7 +1130,14 @@ class IncomingMessage < ActiveRecord::Base
return content_type
end
- private :normalise_content_type
+
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+
+ private :normalise_content_type
end
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 3b86f4cb3..1e55f92ae 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1059,6 +1059,10 @@ public
req.save()
end
end
-end
-
+ def for_admin_column
+ self.class.content_columns.map{|c| c unless %w(title url_title).include?(c.name) }.compact.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+end
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb
index 9ce191f6b..dacd3223e 100644
--- a/app/models/info_request_event.rb
+++ b/app/models/info_request_event.rb
@@ -39,25 +39,26 @@ class InfoRequestEvent < ActiveRecord::Base
def self.enumerate_event_types
[
- 'sent',
- 'resent',
- 'followup_sent',
- 'followup_resent',
-
- 'edit', # title etc. edited (in admin interface)
- 'edit_outgoing', # outgoing message edited (in admin interface)
- 'edit_comment', # comment edited (in admin interface)
- 'destroy_incoming', # deleted an incoming message (in admin interface)
- 'destroy_outgoing', # deleted an outgoing message (in admin interface)
- 'redeliver_incoming', # redelivered an incoming message elsewhere (in admin interface)
- 'move_request', # changed user or public body (in admin interface)
- 'manual', # you did something in the db by hand
-
- 'response',
- 'comment',
- 'status_update',
+ 'sent',
+ 'resent',
+ 'followup_sent',
+ 'followup_resent',
+
+ 'edit', # title etc. edited (in admin interface)
+ 'edit_outgoing', # outgoing message edited (in admin interface)
+ 'edit_comment', # comment edited (in admin interface)
+ 'destroy_incoming', # deleted an incoming message (in admin interface)
+ 'destroy_outgoing', # deleted an outgoing message (in admin interface)
+ 'redeliver_incoming', # redelivered an incoming message elsewhere (in admin interface)
+ 'move_request', # changed user or public body (in admin interface)
+ 'manual', # you did something in the db by hand
+
+ 'response',
+ 'comment',
+ 'status_update'
]
end
+
validates_inclusion_of :event_type, :in => enumerate_event_types
# user described state (also update in info_request)
@@ -440,7 +441,9 @@ class InfoRequestEvent < ActiveRecord::Base
return ret
end
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
-
-
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index 29445d587..c29cbb785 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -271,6 +271,12 @@ class OutgoingMessage < ActiveRecord::Base
def purge_in_cache
self.info_request.purge_in_cache
end
+
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
diff --git a/app/models/public_body.rb b/app/models/public_body.rb
index 0e21037ef..ae902dac6 100644
--- a/app/models/public_body.rb
+++ b/app/models/public_body.rb
@@ -189,6 +189,25 @@ class PublicBody < ActiveRecord::Base
text = text.gsub(/\n/, '<br>')
return text
end
+
+ def compare(previous = nil)
+ if previous.nil?
+ yield([])
+ else
+ v = self
+ changes = self.class.content_columns.inject([]) {|memo, c|
+ unless %w(version last_edit_editor last_edit_comment updated_at).include?(c.name)
+ from = previous.send(c.name)
+ to = self.send(c.name)
+ memo << { :name => c.human_name, :from => from, :to => to } if from != to
+ end
+ memo
+ }
+ changes.each do |change|
+ yield(change)
+ end
+ end
+ end
end
acts_as_xapian :texts => [ :name, :short_name, :notes ],
@@ -552,6 +571,12 @@ class PublicBody < ActiveRecord::Base
self.info_requests.each {|x| x.purge_in_cache}
end
+ def for_admin_column
+ self.class.content_columns.map{|c| c unless %w(name last_edit_comment).include?(c.name)}.compact.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+
end
diff --git a/app/models/user.rb b/app/models/user.rb
index cd8d3e721..4a7153b3f 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -400,6 +400,17 @@ class User < ActiveRecord::Base
return self.email_confirmed
end
+ def for_admin_column(complete = false)
+ if complete
+ columns = self.class.content_columns
+ else
+ columns = self.class.content_columns.map{|c| c if %w(created_at updated_at admin_level email_confirmed).include?(c.name) }.compact
+ end
+ columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s)
+ end
+ end
+
## Private instance methods
private
@@ -430,4 +441,3 @@ class User < ActiveRecord::Base
end
end
-
diff --git a/app/views/admin_general/debug.rhtml b/app/views/admin_general/debug.rhtml
index 40fe33616..d7bf1c6da 100644
--- a/app/views/admin_general/debug.rhtml
+++ b/app/views/admin_general/debug.rhtml
@@ -7,6 +7,8 @@
<h2>Version numbers</h2>
<p>
+Alaveteli version: <%= link_to @current_version, @github_origin + @current_version %>
+<br>
Alaveteli branch: <%= link_to @current_branch, @github_origin + @current_branch %>
<br>
Alaveteli commit: <%= link_to @current_commit, @github_origin + @current_commit %>
diff --git a/app/views/general/_locale_switcher.rhtml b/app/views/general/_locale_switcher.rhtml
index 27e492e84..2521b5eb5 100644
--- a/app/views/general/_locale_switcher.rhtml
+++ b/app/views/general/_locale_switcher.rhtml
@@ -1,11 +1,13 @@
- <% if FastGettext.default_available_locales.length > 1 && !params.empty? %>
- <div id="user_locale_switcher">
- <% for possible_locale in FastGettext.default_available_locales %>
- <% if possible_locale == I18n.locale.to_s %>
- <span class="active"><%= locale_name(possible_locale) %></span>
- <% else %>
- <a href="<%= locale_switcher(possible_locale, params) %>"><%= locale_name(possible_locale) %></a>
- <% end %>
- <% end %>
+ <% if FastGettext.default_available_locales.length > 1 && !params.empty? %>
+ <div id="user_locale_switcher">
+ <div class="btn-group">
+ <% for possible_locale in FastGettext.default_available_locales %>
+ <% if possible_locale == I18n.locale.to_s %>
+ <a href="#" class="btn disabled"><%= locale_name(possible_locale) %></a>
+ <% else %>
+ <a href="<%= locale_switcher(possible_locale, params) %>" class="btn"><%= locale_name(possible_locale) %></a>
+ <% end %>
+ <% end %>
</div>
- <% end %>
+ </div>
+ <% end %>
diff --git a/app/views/layouts/admin.rhtml b/app/views/layouts/admin.rhtml
index 42ca5dbbb..65670538d 100644
--- a/app/views/layouts/admin.rhtml
+++ b/app/views/layouts/admin.rhtml
@@ -9,7 +9,7 @@
<%= stylesheet_link_tag 'admin-theme/jquery-ui-1.8.15.custom.css', :rel => 'stylesheet'%>
<%= stylesheet_link_tag 'admin', :title => "Main", :rel => "stylesheet" %>
</head>
- <body>
+ <body class="admin">
<p>
<strong><%= link_to 'Alaveteli', main_url('/') %> admin:</strong>
diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml
index 5f6d5c721..e60e7bef2 100644
--- a/app/views/layouts/default.rhtml
+++ b/app/views/layouts/default.rhtml
@@ -58,7 +58,7 @@
<%= render :partial => 'general/before_head_end' %>
</head>
- <body <%= "class='front'" if params[:action] == 'frontpage' %>>
+ <body class="<%= 'admin' if !session[:using_admin].nil?%> <%= 'front' if params[:action] == 'frontpage' %>">
<!-- XXX: move to a separate file -->
<% if force_registration_on_new_request && !@user %>