diff options
Diffstat (limited to 'app/views/admin_general')
-rw-r--r-- | app/views/admin_general/_admin_navbar.rhtml | 23 | ||||
-rw-r--r-- | app/views/admin_general/admin.coffee | 24 | ||||
-rw-r--r-- | app/views/admin_general/admin.js | 32 | ||||
-rw-r--r-- | app/views/admin_general/admin_js.erb | 32 | ||||
-rw-r--r-- | app/views/admin_general/debug.rhtml | 10 | ||||
-rw-r--r-- | app/views/admin_general/index.rhtml | 286 | ||||
-rw-r--r-- | app/views/admin_general/stats.rhtml | 91 | ||||
-rw-r--r-- | app/views/admin_general/timeline.rhtml | 35 |
8 files changed, 378 insertions, 155 deletions
diff --git a/app/views/admin_general/_admin_navbar.rhtml b/app/views/admin_general/_admin_navbar.rhtml index 8b1378917..49592c545 100644 --- a/app/views/admin_general/_admin_navbar.rhtml +++ b/app/views/admin_general/_admin_navbar.rhtml @@ -1 +1,24 @@ +<div class="admin"> + <div class="navbar navbar-fixed-top navbar-inverse"> + <div class="navbar-inner"> + <div class="container"> + <%= link_to 'Alaveteli', frontpage_path, :class => "brand" %> + <div class="nav-collapse"> + <ul class="nav"> + <li><%= link_to 'Summary', admin_general_index_path %></li> + <li><%= link_to 'Timeline', admin_timeline_path %></li> + <li><%= link_to 'Stats', admin_stats_path %></li> + <li><%= link_to 'Debug', admin_debug_path %></li> + <li><%= link_to 'Authorities', admin_body_list_path %></li> + <li><%= link_to 'Requests', admin_request_list_path %></li> + <li><%= link_to 'Users', admin_user_list_path %></li> + <li><%= link_to 'Tracks', admin_track_list_path %></li> + <li><%= link_to 'Log out', signout_path %></li> + </ul> + </div> + </div> + </div> + </div> +</div> + diff --git a/app/views/admin_general/admin.coffee b/app/views/admin_general/admin.coffee new file mode 100644 index 000000000..407ef3e3d --- /dev/null +++ b/app/views/admin_general/admin.coffee @@ -0,0 +1,24 @@ +jQuery -> + $('.locales a:first').tab('show') + $('.accordion-body').on('hidden', -> + $(@).prev().find('i').first().removeClass().addClass('icon-chevron-right') + ) + $('.accordion-body').on('shown', -> + $(@).prev().find('i').first().removeClass().addClass('icon-chevron-down')) + $('.toggle-hidden').live('click', -> + $(@).parents('td').find('div:hidden').show() + false) + $('#request_hidden_user_explanation_reasons input').live('click', -> + $('#request_hidden_user_subject, #request_hidden_user_explanation, #request_hide_button').show() + info_request_id = $('#hide_request_form').attr('info_request_id') + reason = $(this).val() + $('#request_hidden_user_explanation_field').attr("value", "[loading default text...]") + $.ajax "<%= Configuration::admin_public_url %>/hidden_user_explanation?reason=" + reason + "&info_request_id=" + info_request_id, + type: "GET" + dataType: "text" + error: (data, textStatus, jqXHR) -> + $('#request_hidden_user_explanation_field').attr("value", "Error: #{textStatus}") + success: (data, textStatus, jqXHR) -> + $('#request_hidden_user_explanation_field').attr("value", data) + ) + diff --git a/app/views/admin_general/admin.js b/app/views/admin_general/admin.js new file mode 100644 index 000000000..c4c44dff0 --- /dev/null +++ b/app/views/admin_general/admin.js @@ -0,0 +1,32 @@ +(function() { + jQuery(function() { + $('.locales a:first').tab('show'); + $('.accordion-body').on('hidden', function() { + return $(this).prev().find('i').first().removeClass().addClass('icon-chevron-right'); + }); + $('.accordion-body').on('shown', function() { + return $(this).prev().find('i').first().removeClass().addClass('icon-chevron-down'); + }); + $('.toggle-hidden').live('click', function() { + $(this).parents('td').find('div:hidden').show(); + return false; + }); + return $('#request_hidden_user_explanation_reasons input').live('click', function() { + var info_request_id, reason; + $('#request_hidden_user_subject, #request_hidden_user_explanation, #request_hide_button').show(); + info_request_id = $('#hide_request_form').attr('info_request_id'); + reason = $(this).val(); + $('#request_hidden_user_explanation_field').attr("value", "[loading default text...]"); + return $.ajax("<%= Configuration::admin_public_url %>/hidden_user_explanation?reason=" + reason + "&info_request_id=" + info_request_id, { + type: "GET", + dataType: "text", + error: function(data, textStatus, jqXHR) { + return $('#request_hidden_user_explanation_field').attr("value", "Error: " + textStatus); + }, + success: function(data, textStatus, jqXHR) { + return $('#request_hidden_user_explanation_field').attr("value", data); + } + }); + }); + }); +}).call(this); diff --git a/app/views/admin_general/admin_js.erb b/app/views/admin_general/admin_js.erb new file mode 100644 index 000000000..c4c44dff0 --- /dev/null +++ b/app/views/admin_general/admin_js.erb @@ -0,0 +1,32 @@ +(function() { + jQuery(function() { + $('.locales a:first').tab('show'); + $('.accordion-body').on('hidden', function() { + return $(this).prev().find('i').first().removeClass().addClass('icon-chevron-right'); + }); + $('.accordion-body').on('shown', function() { + return $(this).prev().find('i').first().removeClass().addClass('icon-chevron-down'); + }); + $('.toggle-hidden').live('click', function() { + $(this).parents('td').find('div:hidden').show(); + return false; + }); + return $('#request_hidden_user_explanation_reasons input').live('click', function() { + var info_request_id, reason; + $('#request_hidden_user_subject, #request_hidden_user_explanation, #request_hide_button').show(); + info_request_id = $('#hide_request_form').attr('info_request_id'); + reason = $(this).val(); + $('#request_hidden_user_explanation_field').attr("value", "[loading default text...]"); + return $.ajax("<%= Configuration::admin_public_url %>/hidden_user_explanation?reason=" + reason + "&info_request_id=" + info_request_id, { + type: "GET", + dataType: "text", + error: function(data, textStatus, jqXHR) { + return $('#request_hidden_user_explanation_field').attr("value", "Error: " + textStatus); + }, + success: function(data, textStatus, jqXHR) { + return $('#request_hidden_user_explanation_field').attr("value", data); + } + }); + }); + }); +}).call(this); diff --git a/app/views/admin_general/debug.rhtml b/app/views/admin_general/debug.rhtml index 99488ba0c..7fd256025 100644 --- a/app/views/admin_general/debug.rhtml +++ b/app/views/admin_general/debug.rhtml @@ -2,14 +2,18 @@ <h1><%=@title%></h1> -<p>You are <%= h @admin_current_user %></p> +<p>You are <%= h @http_auth_user %></p> <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 %> +<% if @current_branch == "(no branch)" %> + Alaveteli branch: (no branch) +<% else %> + Alaveteli branch: <%= link_to @current_branch, @github_origin + @current_branch %> +<% end %> <br> Alaveteli commit: <%= link_to @current_commit, @github_origin + @current_commit %> <br> @@ -20,8 +24,6 @@ Rails::VERSION::STRING <%=h Rails::VERSION::STRING%> TMail::VERSION::STRING <%=h TMail::VERSION::STRING%> <br> Xapian::version_string <%=h Xapian::version_string%> -<br> -Spec::VERSION::STRING <%=h Spec::VERSION::STRING%> </p> <h2>Configuration</h2> diff --git a/app/views/admin_general/index.rhtml b/app/views/admin_general/index.rhtml index 20248c250..7ff8ae895 100644 --- a/app/views/admin_general/index.rhtml +++ b/app/views/admin_general/index.rhtml @@ -1,109 +1,189 @@ <% @title = "Summary" %> -<h1><%=@title%></h1> - -<ul> -<li><%=@public_body_count%> public authorities</li> -<li><%=@info_request_count%> requests, <%=@outgoing_message_count%> outgoing messages, - <%=@incoming_message_count%> incoming messages -</li> -<li><%=@user_count%> users, <%=@track_thing_count%> tracked things</li> -<li><%=@comment_count%> annotations</li> -</ul> - -<hr> - -<h1>Things to do</h1> - -<% if @holding_pen_messages.size > 0 %> - <h3>Put misdelivered responses with the right request (<%=@holding_pen_messages.size%> total)</h3> - - <ul> - <% for message in @holding_pen_messages %> - <li> - <% if message.get_body_for_quoting.strip.size == 0 %> - <%= link_to "(no body)", "request/show_raw_email/" + message.raw_email_id.to_s %> - <% else %> - <%= link_to excerpt(message.get_body_for_quoting, "", 60), "request/show_raw_email/" + message.raw_email_id.to_s %> - <% end %> - (<%=simple_date(message.sent_at)%>) - </li> - <% end %> - </ul> - -<% end %> - -<% if @error_message_requests.size > 0 %> - <h3>Fix these delivery and other errors (<%=@error_message_requests.size%> total)</h3> +<div class="row"> + <div class="span12"> + <h1><%=@title%></h1> <ul> - <% for @request in @error_message_requests %> - <li> - <%= request_both_links(@request)%> - – <%=simple_date(@request.get_last_event.created_at)%> - </li> - <% end %> + <li><%=@public_body_count%> public authorities</li> + <li> + <%=@info_request_count%> requests, <%=@outgoing_message_count%> outgoing messages, + <%=@incoming_message_count%> incoming messages + </li> + <li><%=@user_count%> users, <%=@track_thing_count%> tracked things</li> + <li><%=@comment_count%> annotations</li> </ul> + </div> +</div> + + +<div class="row"> + <div class="span12"> + <h1>Things to do</h1> + </div> +</div> + +<div class="accordion" id="things-to-do"> + <% if @holding_pen_messages.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#holding-pen" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@holding_pen_messages.size%></span><i class='icon-chevron-right'></i> Put misdelivered responses with the right request</a> + </div> + <div id="holding-pen" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for message in @holding_pen_messages %> + <tr> + <td> + <% if message.get_body_for_quoting.strip.size == 0 %> + <%= link_to "(no body)", "request/show_raw_email/" + message.raw_email_id.to_s %> + <% else %> + <%= link_to excerpt(message.get_body_for_quoting, "", 60), "request/show_raw_email/" + message.raw_email_id.to_s %> + <% end %> + </td> + <td class="span2"> + <%=simple_date(message.sent_at)%> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> + <% end %> + + <% if @error_message_requests.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#error-messages" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@error_message_requests.size%></span> <i class='icon-chevron-right'></i>Fix these delivery and other errors</a> + </div> + <div id="error-messages" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for @request in @error_message_requests %> + <tr> + <td class="link"> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_request_show_url(@request))%> + <%= link_to(@request.title, request_path(@request)) %> + </td> + <td class="span2"> + <%=simple_date(@request.get_last_event.created_at)%> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> + <% end %> + + <% if @attention_requests.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#attention-messages" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@attention_requests.size%></span><i class='icon-chevron-right'></i> Review requests marked by users as requiring your attention +</a> + </div> + <div id="attention-messages" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for @request in @attention_requests %> + <tr> + <td class="link"> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_request_show_url(@request))%> + <%= link_to(@request.title, request_path(@request)) %> + </td> + <td class="span2"> + <%=simple_date(@request.get_last_event.created_at)%> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> + <% end %> + + <% if @requires_admin_requests.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#requires-admin" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@requires_admin_requests.size%></span><i class='icon-chevron-right'></i> These require administrator attention</a> + </div> + <div id="requires-admin" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for @request in @requires_admin_requests %> + <tr> + <td class="link"> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_request_show_url(@request))%> + <%= link_to(@request.title, request_path(@request)) %> + </td> + <td class="span2"> + <%=simple_date(@request.get_last_event.created_at)%> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> + <% end %> + + <% if @blank_contacts.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#blank-contacts" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@blank_contacts.size%></span><i class='icon-chevron-right'></i> Find missing FOI email for these public authorities (try phoning!)</a> + </div> + <div id="blank-contacts" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for @blank_contact in @blank_contacts %> + <tr> + <td class="link"> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_body_show_path(@blank_contact))%> + <%= link_to h(@blank_contact.name), public_body_url(@blank_contact) %> + </td> + <td class="span2"> + <%=simple_date(@blank_contact.updated_at)%> + </td> + </tr> + <% end %> + </tbody> + </table> + </div> + </div> + <% end %> + + <% if @old_unclassified.size > 0 %> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" href="#unclassified" data-toggle="collapse" data-parent="things-to-do"><span class="label label-important"><%=@old_unclassified.size%></span><i class='icon-chevron-right'></i> Classify responses that are still unclassified <%=InfoRequest::OLD_AGE_IN_DAYS.inspect %> after response</a> + </div> + <div id="unclassified" class="accordion-body collapse"> + <table class="table table-striped table-condensed"> + <tbody> + <% for @request in @old_unclassified %> + <tr> + <td class="link"> + <%= link_to("<i class='icon-tags'></i>".html_safe, admin_request_show_url(@request)) %> + <%= link_to(@request.title, request_link(@request)) %> + </td> + <td class="span2"> + <%=simple_date(@request.get_last_response_event.created_at)%> + </td> + </tr> + <% end %> + </tbody> + + </table> + </div> + </div> + <% end %> +</div> + +<% if @holding_pen_messages.size == 0 && @old_unclassified.size == 0 && @requires_admin_requests.size == 0 && @blank_contacts.size == 0 && @attention_requests.size == 0 %> + <div class="row"> + <div class="span12 alert alert-success"> + No pending administration required. + </div> + </div> <% end %> - -<% if @attention_requests.size > 0 %> - <h3>Review requests which have been marked as requiring your attention by users (<%=@error_message_requests.size%> total)</h3> - - <ul> - <% for @request in @attention_requests %> - <li> - <%= request_both_links(@request)%> - – <%=simple_date(@request.get_last_event.created_at)%> - </li> - <% end %> - </ul> -<% end %> - - -<% if @requires_admin_requests.size > 0 %> - <h3>These require administrator attention (<%=@requires_admin_requests.size%> total)</h3> - - <ul> - <% for @request in @requires_admin_requests %> - <li> - <%= request_both_links(@request)%> - – <%=simple_date(@request.get_last_event.created_at)%> - </li> - <% end %> - </ul> -<% end %> - -<% if @blank_contacts.size > 0 %> - <h3>Find missing FOI email for these public authorities (try phoning!) (<%=@blank_contacts.size%> total)</h3> - <ul> - <% for @blank_contact in @blank_contacts %> - <li> - <%= public_body_both_links(@blank_contact)%> - – <%=simple_date(@blank_contact.updated_at)%> - </li> - <% end %> - </ul> -<% end %> - -<% if @old_unclassified.size > 0 %> - <h3>Classify responses that are still unclassified <%=InfoRequest::OLD_AGE_IN_DAYS.inspect %> after response</h3> - - <ul> - <% for @request in @old_unclassified %> - <li> - <%= request_both_links(@request) %> - – <%=simple_date(@request.get_last_response_event.created_at)%> - </li> - <% end %> - </ul> - - <p>(<%= link_to "Full list", admin_request_list_old_unclassified_path %>, or play public - <%= link_to "Categorisation game", categorise_play_path %>) - </p> -<% end %> - -<% if @holding_pen_messages.size == 0 && @old_unclassified.size == 0 && @requires_admin_requests.size == 0 && @blank_contacts.size == 0 %> - <p>No pending administration required.</p> -<% end %> - - diff --git a/app/views/admin_general/stats.rhtml b/app/views/admin_general/stats.rhtml index 27a52a74b..f9163b332 100644 --- a/app/views/admin_general/stats.rhtml +++ b/app/views/admin_general/stats.rhtml @@ -1,38 +1,61 @@ <% @title = "Statistics" %> -<h1>Statistics</h1> - -<h2>Chart of requests (excluding backpaged)</h2> - -<p> +<div class="hero-unit"> + <h2><%=@public_body_count%> public authorities</h2> + <h2><%=@info_request_count%> requests, <%=@outgoing_message_count%> outgoing messages, <%=@incoming_message_count%> incoming messages</h2> + <h2><%=@user_count%> users, <%=@track_thing_count%> tracked things</h2> + <h2><%=@comment_count%> annotations</h2> +</div> + +<div class="row"> + <div class="span12"> + <h1>Statistics</h1> + <h2>Chart of requests (excluding backpaged)</h2> <img src="/foi-live-creation.png"> -</p> - -<h2>State of requests (includes backpaged)</h2> - -<table> -<% for state, count in @request_by_state %> -<tr> <td><%=state %></td><td><%= count %></td> </tr> -<% end %> -</table> - -<h2>Chart of users</h2> - -<p> + </div> +</div> +<div class="row"> + <div class="span12"> + <h2>State of requests (includes backpaged)</h2> + <div class="container"> + <% for state, count in @request_by_state %> + <div class="row"> + <div class="span1"> + <span class="label label-info"><%=count%></span> + </div> + <div class="span4"> + <%=state%> + </div> + </div> + <% end %> + </div> + </div> +</div> +<div class="row"> + <div class="span12"> + <h2>Chart of users</h2> <img src="/foi-user-use.png"> -</p> - -<h2>Tracks by type</h2> - -<table> -<% for state, count in @tracks_by_type %> -<tr> <td><%=state %></td><td><%= count %></td> </tr> -<% end %> -</table> - -<h2>Web analytics</h2> - - -</p> - - + </div> +</div> +<div class="row"> + <div class="span12"> + <h2>Tracks by type</h2> + <div class="container"> + <% for state, count in @tracks_by_type %> + <div class="row"> + <div class="span1"> + <span class="label label-info"><%=count%></span> + </div> + <div class="span4"> + <%=state%> + </div> + </div> + <% end %> + </div> + </div> +</div> +<div class="row"> + <div class="span12"> + <h2>Web analytics</h2> + </div> +</div> diff --git a/app/views/admin_general/timeline.rhtml b/app/views/admin_general/timeline.rhtml index 5379a0523..ec5b860e5 100644 --- a/app/views/admin_general/timeline.rhtml +++ b/app/views/admin_general/timeline.rhtml @@ -1,14 +1,19 @@ <% @title = "Timeline" %> - -<h1><%=h @events_title%></h1> - -<p> -<a href="?hour=1">Hour</a> -| <a href="?day=1">Day</a> -| <a href="?">2 days</a> -| <a href="?week=1">Week</a> -| <a href="?month=1">Month</a> -| <a href="?all=1">All time</a></p> +<div class="btn-toolbar"> + <div class="btn-group"> + <a class="btn" href="?hour=1">Hour</a> + <a class="btn" href="?day=1">Day</a> + <a class="btn" href="?">2 days</a> + <a class="btn" href="?week=1">Week</a> + <a class="btn" href="?month=1">Month</a> + <a class="btn" href="?all=1">All time</a> + </div> +</div> +<div class="row"> + <div class="span12"> + <h1><%=h @events_title%></h1> + </div> +</div> <% last_date = nil %> <% for event, event_at in @events %> @@ -26,7 +31,9 @@ <%= simple_time(event_at) %> <% if event.is_a? InfoRequestEvent %> - <%= request_both_links(event.info_request) %> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_request_show_url(event.info_request), :title => "view full details")%> + <%= link_to(event.info_request.title, request_path(event.info_request), :title => "view request on public website")%> + <% if event.event_type == 'edit' %> was edited by administrator <strong><%=h event.params[:editor] %></strong>. <% for p in ['title', 'prominence', 'described_state', 'awaiting_description'] @@ -88,12 +95,12 @@ had '<%=event.event_type%>' done to it, parameters <%=h event.params_yaml%>. <% end %> <% else %> - <%= public_body_both_links(event.public_body) %> + <%= link_to('<i class="icon-tags"></i>'.html_safe, admin_body_show_path(event.public_body), :title => "view full details")%> + <%= link_to(event.public_body.name, public_body_path(event.public_body), :title => "view authority on public website")%> was created/updated by administrator <strong><%=h event.last_edit_editor %></strong> <% end %> <% end %> +<%= will_paginate(@events, :class => 'paginator') %> <% if not @events.empty? %> </p> <% end %> -<%= will_paginate(@events) %> - |