aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Whiteland <dave@mysociety.org>2012-12-03 00:54:10 +0000
committerDave Whiteland <dave@mysociety.org>2012-12-03 00:54:10 +0000
commitb2eefdf3533e9c8385f18a6364c1b2fb1aa58685 (patch)
treef0b331a68dd449337e180206019e9d099e37ddc6
parent089b929eea99bd7da778f7db84054b9c64223f31 (diff)
now show Message Manager results for current report's archived messages, as well as 'available' ones, provides reply-to-originator capability
-rw-r--r--templates/web/fixmybarangay/report/_message_manager.html73
-rw-r--r--web/cobrands/fixmybarangay/message_manager.scss6
-rw-r--r--web/cobrands/fixmybarangay/message_manager_client.js41
3 files changed, 101 insertions, 19 deletions
diff --git a/templates/web/fixmybarangay/report/_message_manager.html b/templates/web/fixmybarangay/report/_message_manager.html
index 1d0d726ef..869d2d088 100644
--- a/templates/web/fixmybarangay/report/_message_manager.html
+++ b/templates/web/fixmybarangay/report/_message_manager.html
@@ -16,6 +16,9 @@
<ul id="message_manager" class="issue-list-a tab" style="display: none">
<li id="mm-admin-buttons">
+ [% IF problem.id %]
+ <a style="float:left" id="mm-link-to-toggle-archive" href="#" title="show the message(s) associated with this report">show message for <b>this</b> report</a>
+ [% END %]
<a id="mm-link-to-refresh" href="#" title="update list of messages">refresh</a>
<a id="mm-link-to-admin" href="[% c.config.MESSAGE_MANAGER_URL %]" title="jump to Message Manager admin">admin</a>
<a id="mm-link-to-help" href="#mm-help" title="show help information">help</a>
@@ -56,11 +59,23 @@ $(document).ready(function() {
var timeout_id = 0;
var can_refresh = true; // disable refresh
var refresh_period = 60000 * 3; // refresh messages every three minutes
+ var has_archive_message = false;
function sanitise_id(css_id) {
return css_id.replace(/\D/g, "");
}
+ // call this to push the auto-refresh timeout off so it's only triggered
+ // if there's no activity for a while
+ function reset_timeout() {
+ if (refresh_period && can_refresh) {
+ if (timeout_id) {
+ clearTimeout(timeout_id);
+ }
+ timeout_id = setTimeout(mm_refresh_messages, refresh_period);
+ }
+ }
+
var mm_refresh_messages = function() {
$('#mm-link-to-refresh').fadeOut();
$('#available-submit').click();
@@ -70,12 +85,7 @@ $(document).ready(function() {
$('#mm-status-message-container').find('p').text("Accessed Message Manager as " + data['username']);
$('input[name=mm_text]').prop('checked', false); // uncheck all
$('#mm-link-to-refresh').delay(2000).fadeIn();
- if (refresh_period && can_refresh) {
- if (timeout_id) {
- clearTimeout(timeout_id);
- }
- timeout_id = setTimeout(mm_refresh_messages, refresh_period);
- }
+ reset_timeout();
}
var mm_selected_message = function(data) {
@@ -95,12 +105,14 @@ $(document).ready(function() {
}
var dummy_reply_cleanup = function(data) {
+ reset_timeout();
$('#reply_text').val('');
dummy_busy = false;
mm_refresh_messages();
}
var dummy_hide_cleanup = function(data) {
+ reset_timeout();
$('#reason_text').val('');
dummy_busy = false;
}
@@ -117,9 +129,11 @@ $(document).ready(function() {
$('#available-submit').click(function(e){
e.preventDefault();
+ reset_timeout();
message_manager.get_available_messages({
callback: mm_populate_list,
suggest_username: fms_username,
+ fms_id: problem_id,
anim_duration: 500
});
});
@@ -132,6 +146,7 @@ $(document).ready(function() {
});
$('#mm-message-list').on('click', '.mm-info', function(e){
+ reset_timeout();
message_manager.show_info(sanitise_id($(this).parent().attr('id')));
});
@@ -158,6 +173,7 @@ $(document).ready(function() {
$('#hide-submit').click(function(e) {
e.preventDefault();
+ reset_timeout();
// TODO: pending fancybox callbacks working, force dummy_busy here
// this is possibly overly cautious anyway
dummy_busy = false;
@@ -175,13 +191,14 @@ $(document).ready(function() {
// only show on problem display page
if (problem_id) {
$('<input type="button" value="Copy to update"/>').attr({
- 'id': 'add_support',
- 'name': 'add_support',
+ 'id': 'copy_to_update',
+ 'name': 'copy_to_update',
'class': 'green-btn'
}).appendTo($('#message_manager'));
}
- $('#add_support').click(function(e){
+ $('#copy_to_update').click(function(e){
+ reset_timeout();
e.preventDefault();
$('#mm-message-list input:checked').each( function(index) {
var id = $(this).attr('id');
@@ -195,7 +212,7 @@ $(document).ready(function() {
});
$('#show_messages').on('click', function(e) {
- $('#message_manager').toggle();
+ $('#message_manager').slideToggle(1000);
$('#show_messages').val( $('#show_messages').val() == 'Show Messages' ? 'Hide Messages' : 'Show Messages' );
});
@@ -204,6 +221,42 @@ $(document).ready(function() {
mm_refresh_messages();
});
+ // suppress fading control while archive messages are displayed, for now
+ $('#mm-link-to-toggle-archive').on('click', function(e) {
+ e.preventDefault();
+ $('#mm-link-to-toggle-archive').fadeOut();
+ if ($('.mm-current', $mm_message_list).is(':visible')) {
+ $('#copy_to_update').stop(true,true).fadeOut();
+ $('#mm-link-to-refresh').stop(true,true).fadeOut();
+ $('.mm-current', $mm_message_list).stop(true,true).slideUp(1000, function(){
+ if($('.mm-archive', $mm_message_list).find('li').length == 0) {
+ message_manager.say_status("No messages found for this report,");
+ } else {
+ message_manager.say_status("Messages for this report:");
+ };
+ $('.mm-archive', $mm_message_list).stop(true,true).slideDown(1000, function(){
+ $('#mm-link-to-toggle-archive').html('show all available messages')
+ .attr('title', 'show all available messages (for adding updates)');
+ $('#mm-link-to-toggle-archive').fadeIn();
+ can_refresh = false;
+ })
+ });
+ } else {
+ $('.mm-archive', $mm_message_list).stop(true,true).slideUp(1000, function(){
+ message_manager.say_status("Available messages:");
+ $('.mm-current', $mm_message_list).stop(true,true).slideDown(1000, function(){
+ $('#mm-link-to-toggle-archive').html("show message for <b>this</b> report")
+ .attr('title', 'show the original message(s) for this report');
+ $('#copy_to_update').stop(true,true).fadeIn();
+ $('#mm-link-to-toggle-archive').stop(true,true).fadeIn();
+ $('#mm-link-to-refresh').stop(true,true).fadeIn();
+ can_refresh = true;
+ reset_timeout();
+ })
+ });
+ }
+ });
+
$("a#mm-link-to-help").fancybox();
message_manager.populate_boilerplate_strings('hide-reason');
diff --git a/web/cobrands/fixmybarangay/message_manager.scss b/web/cobrands/fixmybarangay/message_manager.scss
index 119e4275f..4365707c1 100644
--- a/web/cobrands/fixmybarangay/message_manager.scss
+++ b/web/cobrands/fixmybarangay/message_manager.scss
@@ -21,6 +21,7 @@ $color_bg_btn_info: #0000ff;
$weak_text_color: #666;
+
p.mm-submitted-by-sms {
color: $weak_text_color;
font-style: italic;
@@ -96,6 +97,9 @@ p.mm-submitted-by-sms {
#mm-message-list {
ul {
+ &.mm-archive {
+ display: none; // archive only shown on interaction
+ }
list-style-type: none;
padding: 0;
margin: 0;
@@ -187,7 +191,7 @@ p.mm-submitted-by-sms {
margin: 1em;
}
}
-#show_messages, #add_support, #reply-submit { // COPY TO UPDATE button
+#show_messages, #copy_to_update, #reply-submit {
margin: 1em;
}
diff --git a/web/cobrands/fixmybarangay/message_manager_client.js b/web/cobrands/fixmybarangay/message_manager_client.js
index 979ac8b25..6f76816ea 100644
--- a/web/cobrands/fixmybarangay/message_manager_client.js
+++ b/web/cobrands/fixmybarangay/message_manager_client.js
@@ -295,19 +295,31 @@ var message_manager = (function() {
// render allows animation (if required) to hide messages before repainting and then revealing them
var render_available_messages = function(data, anim_duration) {
+ var $output = $message_list_element;
+ $output.empty();
+ var archive = data.messages_for_this_report;
+ var $archive = "";
+ var i, litem;
+ if (archive instanceof Array) {
+ var $arch_ul = $('<ul class="mm-root mm-archive"/>');
+ for(i=0; i< archive.length; i++) {
+ litem = get_message_li(archive[i], 0);
+ $arch_ul.append(litem);
+ }
+ $output.append($arch_ul);
+ }
var messages = data.messages;
_username = data.username;
- var $output = $message_list_element;
if (messages instanceof Array) {
if (messages.length === 0) {
$output.html('<p class="mm-empty">No messages available.</p>');
} else {
- var $ul = $('<ul class="mm-root"/>');
- for(var i=0; i< messages.length; i++) {
- var litem = get_message_li(messages[i], 0);
+ var $ul = $('<ul class="mm-root mm-current"/>');
+ for(i=0; i< messages.length; i++) {
+ litem = get_message_li(messages[i], 0);
$ul.append(litem);
}
- $output.empty().append($ul);
+ $output.append($ul);
}
} else {
$output.html('<p>No messages (server did not send a list).</p>');
@@ -347,11 +359,13 @@ var message_manager = (function() {
// gets messages or else requests login
// options: suggest_username, if provided, is preloaded into the login form if provided
// anim_duration: duration of fade/reveal (0, by defaut, does no animation)
+ // fms_id: if provided, display an archive of messages for this username
var get_available_messages = function(options) {
var base_auth = get_current_auth_credentials();
var suggest_username = "";
var anim_duration = 0;
var callback = null;
+ var fms_id = null;
if (options) {
if (typeof(options.callback) === 'function') {
callback = options.callback;
@@ -365,6 +379,12 @@ var message_manager = (function() {
anim_duration = 0;
}
}
+ if (typeof options.fms_id === 'string' || typeof options.fms_id === 'number') {
+ fms_id = parseInt(options.fms_id, 10);
+ if (isNaN(fms_id)) {
+ fms_id = 0;
+ }
+ }
}
if (base_auth === "") {
show_login_form(suggest_username);
@@ -374,11 +394,15 @@ var message_manager = (function() {
if (_url_root.length === 0) {
say_status(msg_no_config_err);
} else {
+ var ajax_url = _url_root +"messages/available.json";
+ if (fms_id) {
+ ajax_url += "?fms_id=" + fms_id;
+ }
say_status("Fetching messages...", true);
$.ajax({
dataType: "json",
- type: "post",
- url: _url_root +"messages/available.json",
+ type: "get",
+ url: ajax_url,
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', get_current_auth_credentials());
xhr.withCredentials = true;
@@ -722,6 +746,7 @@ var message_manager = (function() {
hide: hide,
show_info: show_info,
sign_out: sign_out,
- populate_boilerplate_strings: populate_boilerplate_strings
+ populate_boilerplate_strings: populate_boilerplate_strings,
+ say_status: say_status
};
})();