aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2012-08-23 16:27:00 +0100
committerStruan Donald <struan@exo.org.uk>2012-08-23 16:27:00 +0100
commitce3622a64d372eb4ee0c3a27f943061a434e06e4 (patch)
tree7494c586d38e9eb8306adc48966e6bc60c079e34
parentee7770bb0130e2e0483af203c7410dad8269bdd7 (diff)
allow adding of message manager messages as updates rather than as issues
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm1
-rw-r--r--templates/web/fixmybarangay/report/_message_manager.html87
-rw-r--r--templates/web/fixmystreet/report/display.html4
-rw-r--r--web/cobrands/fixmybarangay/message_manager_client.js5
4 files changed, 95 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm
index c49123a90..1141e213a 100644
--- a/perllib/FixMyStreet/App/Controller/Report/Update.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm
@@ -348,6 +348,7 @@ sub redirect_or_confirm_creation : Private {
if ( $update->confirmed ) {
$c->forward( 'update_problem' );
$c->forward( 'signup_for_alerts' );
+
my $report_uri = $c->cobrand->base_url_for_report( $update->problem ) . $update->problem->url;
$c->res->redirect($report_uri);
$c->detach;
diff --git a/templates/web/fixmybarangay/report/_message_manager.html b/templates/web/fixmybarangay/report/_message_manager.html
new file mode 100644
index 000000000..2e43af165
--- /dev/null
+++ b/templates/web/fixmybarangay/report/_message_manager.html
@@ -0,0 +1,87 @@
+
+<ul id="message_manager" class="issue-list-a tab">
+ <li id="message-control">
+ <div id="mm-username-container">username:&nbsp;<span id="mm-received-username"></span></div>
+ <div id="mm-status-message-container">
+ <div id="mm-status-message"></div>
+ </div>
+ <div id="mm-login-container">
+ <div class="input text">
+ <label for="mm-htauth-username">MM username</label>
+ <input name="mm-htauth-username" id="mm-htauth-username" type="text"/>
+ </div>
+ <div class="input password">
+ <label for="mm-htauth-password">Password</label>
+ <input name="mm-htauth-password" id="mm-htauth-password" type="password"/>
+ </div>
+ <div class="submit">
+ <input id="available-submit" type="submit" value="Get available messages"/>
+ </div>
+ </div>
+ </li>
+ <li>
+ <div id="mm-message-list" style="min-height:1em;"></div>
+ </li>
+</ul>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+
+ var mm_url = "[% c.config.MESSAGE_MANAGER_URL %]"; // from config
+
+ var mm_populate_list = function(data) {
+ $('#mm-status-message-container').text("Accessed message server as " + data['username']);
+ $('input[name=mm_text]').prop('checked', false); // uncheck all
+ }
+
+ var mm_selected_message = function(data) {
+ var msg_text = "";
+ var service_id = "";
+ if (data['success']) {
+ // msg_text = $('#form_detail').val( $('input[name=mm_text]:checked').val() ); # == message data
+ msg_text = data['data']['Message']['message'];
+ service_id = data['data']['Message']['id'];
+ } else {
+ $('input[name=mm_text]').prop('checked', false); // uncheck all
+ }
+ $('#form_detail').val(msg_text);
+ $('#external_source_id').val(service_id);
+ }
+
+ message_manager.config({url_root: mm_url});
+ message_manager.setup_click_listener({callback:mm_selected_message});
+
+ // problem form hidden input "external_source_id": pass the MM id into FMS, if used
+ $('<input type="hidden"/>').attr({
+ 'id': 'external_source_id',
+ 'name': 'external_source_id',
+ }).appendTo($('#form_update_form'));
+
+ $('#available-submit').click(function(e){
+ e.preventDefault();
+ message_manager.get_available_messages({callback:mm_populate_list});
+ });
+ $('#available-submit').click();
+
+ $('<input type="button" value="Copy to update"/>').attr({
+ 'id': 'add_support',
+ 'name': 'add_support',
+ 'class': 'green-btn'
+ }).insertAfter($('#message_manager'));
+
+ $('#add_support').click(function(e){
+ e.preventDefault();
+ $('#mm-message-list input:checked').each( function(index) {
+ var id = $(this).attr('id');
+ id = id.replace('mm_text_','');
+ $('#external_source_id').val(id);
+ $('#form_update').val( $(this).val() );
+ $('#form_update_form').on('submit', function(e) {
+ message_manager.assign_fms_id( $('#external_source_id').val(), [% problem.id %], { 'is_async': false } );
+ });
+ });
+ });
+});
+
+</script>
diff --git a/templates/web/fixmystreet/report/display.html b/templates/web/fixmystreet/report/display.html
index 269b1d15e..82d8efd8e 100644
--- a/templates/web/fixmystreet/report/display.html
+++ b/templates/web/fixmystreet/report/display.html
@@ -25,7 +25,7 @@
[% END %]
[% INCLUDE 'report/_main.html' %]
-
+[% TRY %][% INCLUDE 'report/_message_manager.html' %][% CATCH file %][% END %]
<div class="shadow-wrap">
<ul id="key-tools">
@@ -68,7 +68,7 @@
[% INCLUDE 'errors.html' %]
- <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
+ <form method="post" action="[% c.uri_for( '/report/update' ) %]" id="form_update_form" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]>
<fieldset>
<input type="hidden" name="submit_update" value="1">
<input type="hidden" name="id" value="[% problem.id | html %]">
diff --git a/web/cobrands/fixmybarangay/message_manager_client.js b/web/cobrands/fixmybarangay/message_manager_client.js
index 940c27ee4..508286171 100644
--- a/web/cobrands/fixmybarangay/message_manager_client.js
+++ b/web/cobrands/fixmybarangay/message_manager_client.js
@@ -280,6 +280,7 @@ var message_manager = (function() {
var assign_fms_id = function(msg_id, fms_id, options) {
var check_li_exists = false;
+ var is_async = true;
if (options) {
if (typeof(options.callback) === 'function') {
callback = options.callback;
@@ -287,6 +288,9 @@ var message_manager = (function() {
if (typeof(options.check_li_exists) !== undefined && options.check_li_exists !== undefined) {
check_li_exists = true; // MM dummy
}
+ if (typeof(options.is_async) !== undefined && options.is_async !== undefined) {
+ is_async = options.is_async;
+ }
}
var $li = $('#' + _msg_prefix + msg_id);
if (check_li_exists) {
@@ -301,6 +305,7 @@ var message_manager = (function() {
}
$li.addClass('msg-is-busy');
$.ajax({
+ async:is_async,
dataType:"json",
type:"post",
data: {fms_id: fms_id},