From 8c8939c1ae7f68deba2855ec9e15cf8ac9967b1b Mon Sep 17 00:00:00 2001 From: Ryan Wyllie Date: Thu, 8 Nov 2018 15:26:21 +0800 Subject: [PATCH] MDL-63303 message: add enter to send user preference --- lang/en/message.php | 1 + .../amd/build/message_drawer_events.min.js | 2 +- .../message_drawer_view_conversation.min.js | 2 +- .../build/message_drawer_view_settings.min.js | 2 +- message/amd/src/message_drawer_events.js | 1 + .../src/message_drawer_view_conversation.js | 21 ++++++++++- .../amd/src/message_drawer_view_settings.js | 35 +++++++++++++++++-- message/classes/privacy/provider.php | 6 +++- message/lib.php | 11 +++++- ...e_drawer_view_conversation_footer.mustache | 1 + ...message_drawer_view_settings_body.mustache | 17 ++++++++- message/tests/privacy_provider_test.php | 4 ++- 12 files changed, 93 insertions(+), 10 deletions(-) diff --git a/lang/en/message.php b/lang/en/message.php index 66798146dba97..77a748ee70a1e 100644 --- a/lang/en/message.php +++ b/lang/en/message.php @@ -233,6 +233,7 @@ $string['unreadnotification'] = 'Unread notification: {$a}'; $string['unreadnewgroupconversationmessage'] = 'New message from {$a->name} in {$a->conversationname}'; $string['unreadnewmessage'] = 'New message from {$a}'; +$string['useentertosend'] = 'Use enter to send'; $string['usercantbemessaged'] = 'You can\'t message {$a} due to their message preferences. Try adding them as a contact.'; $string['userisblockingyou'] = 'This user has blocked you from sending messages to them'; $string['userisblockingyounoncontact'] = '{$a} only accepts messages from their contacts.'; diff --git a/message/amd/build/message_drawer_events.min.js b/message/amd/build/message_drawer_events.min.js index f11f606dd7745..f4f20c4a0f464 100644 --- a/message/amd/build/message_drawer_events.min.js +++ b/message/amd/build/message_drawer_events.min.js @@ -1 +1 @@ -define([],function(){return{CONTACT_BLOCKED:"message-drawer-contact-blocked",CONTACT_UNBLOCKED:"message-drawer-contact-unblocked",CONTACT_ADDED:"message-drawer-contact-added",CONTACT_REMOVED:"message-drawer-contact-removed",CONTACT_REQUEST_ACCEPTED:"message-drawer-contact-request-accepted",CONTACT_REQUEST_DECLINED:"message-drawer-contact-request-declined",CONVERSATION_CREATED:"message-drawer-conversation-created",CONVERSATION_NEW_LAST_MESSAGE:"message-drawer-conversation-new-last-message",CONVERSATION_DELETED:"message-drawer-conversation-deleted",CONVERSATION_READ:"message-drawer-conversation-read",CONVERSATION_SET_FAVOURITE:"message-drawer-conversation-set-favourite",CONVERSATION_UNSET_FAVOURITE:"message-drawer-conversation-unset-favourite",ROUTE_CHANGED:"message-drawer-route-change",SHOW:"message-drawer-show",HIDE:"message-drawer-hide",TOGGLE_VISIBILITY:"message-drawer-toggle",SHOW_CONVERSATION:"message-drawer-show-conversation",SHOW_SETTINGS:"message-drawer-show-settings"}}); \ No newline at end of file +define([],function(){return{CONTACT_BLOCKED:"message-drawer-contact-blocked",CONTACT_UNBLOCKED:"message-drawer-contact-unblocked",CONTACT_ADDED:"message-drawer-contact-added",CONTACT_REMOVED:"message-drawer-contact-removed",CONTACT_REQUEST_ACCEPTED:"message-drawer-contact-request-accepted",CONTACT_REQUEST_DECLINED:"message-drawer-contact-request-declined",CONVERSATION_CREATED:"message-drawer-conversation-created",CONVERSATION_NEW_LAST_MESSAGE:"message-drawer-conversation-new-last-message",CONVERSATION_DELETED:"message-drawer-conversation-deleted",CONVERSATION_READ:"message-drawer-conversation-read",CONVERSATION_SET_FAVOURITE:"message-drawer-conversation-set-favourite",CONVERSATION_UNSET_FAVOURITE:"message-drawer-conversation-unset-favourite",PREFERENCES_UPDATED:"message-drawer-preferences-updated",ROUTE_CHANGED:"message-drawer-route-change",SHOW:"message-drawer-show",HIDE:"message-drawer-hide",TOGGLE_VISIBILITY:"message-drawer-toggle",SHOW_CONVERSATION:"message-drawer-show-conversation",SHOW_SETTINGS:"message-drawer-show-settings"}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_conversation.min.js b/message/amd/build/message_drawer_view_conversation.min.js index 6e19ab79fbb03..c42999e3b9bc7 100644 --- a/message/amd/build/message_drawer_view_conversation.min.js +++ b/message/amd/build/message_drawer_view_conversation.min.js @@ -1 +1 @@ -define(["jquery","core/auto_rows","core/backoff_timer","core/custom_interaction_events","core/notification","core/pubsub","core/str","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_view_conversation_constants","core_message/message_drawer_view_conversation_patcher","core_message/message_drawer_view_conversation_renderer","core_message/message_drawer_view_conversation_state_manager","core_message/message_drawer_router","core_message/message_drawer_routes"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p={},q=null,r=!1,s=0,t=null,u=null,v=j.NEWEST_MESSAGES_FIRST,w=j.LOAD_MESSAGE_LIMIT,x=j.INITIAL_NEW_MESSAGE_POLL_TIMEOUT,y=j.SELECTORS,z=j.CONVERSATION_TYPES,A=function(){if(!q||q.type!=z.PRIVATE)return null;var a=q.loggedInUserId,b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},B=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type==z.PRIVATE&&a in d.members&&(b=d.id)}return b},null)},C=function(a){return{id:parseInt(a.attr("data-user-id"),10),contactrequests:[]}},D=function(){return s},E=function(a){s=a,p[q.id].messagesOffset=a},F=function(){return r},G=function(a){r=a,p[q.id].loadedAllMessages=a},H=function(a){return a.find(y.MESSAGES_CONTAINER)},I=function(b){return{id:b.id,name:b.name,subname:b.subname,imageUrl:b.imageUrl,isFavourite:b.isFavourite,type:b.type,totalMemberCount:b.totalMemberCount,loggedInUserId:b.loggedInUserId,messages:b.messages.map(function(b){return a.extend({},b)}),members:Object.keys(b.members).reduce(function(c,d){return c[d]=a.extend({},b.members[d]),c[d].contactrequests=b.members[d].contactrequests.map(function(b){return a.extend({},b)}),c},{})}},J=function(a,b){var c=a.id,d=m.setLoadingMembers(q,!0);return d=m.setLoadingMessages(d,!0),u(d).then(function(){return h.getMemberInfo(c,[b],!0,!0)}).then(function(a){if(a.length)return a[0];throw new Error("Unable to load other user profile")}).then(function(b){var c=m.addMembers(q,[b,a]);return c=m.setLoadingMembers(c,!1),c=m.setLoadingMessages(c,!1),c=m.setName(c,b.fullname),c=m.setType(c,1),c=m.setImageUrl(c,b.profileimageurl),c=m.setTotalMemberCount(c,2),u(c).then(function(){return b})})["catch"](function(a){var b=m.setLoadingMembers(q,!1);u(b),e.exception(a)})},K=function(a,b){var c=a.members.filter(function(a){return a.id!=b}),d=c.length?c[0]:null,e=a.name,f=a.imageurl;a.type==z.PRIVATE&&(e=e||d?d.fullname:"",f=f||d?d.profileimageurl:"");var g=m.addMembers(q,a.members);return g=m.setName(g,e),g=m.setSubname(g,a.subname),g=m.setType(g,a.type),g=m.setImageUrl(g,f),g=m.setTotalMemberCount(g,a.membercount),g=m.setIsFavourite(g,a.isfavourite),g=m.addMessages(g,a.messages)},L=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),u(i).then(function(){return h.getConversation(g,a,!0,!0,0,0,c+1,d,f)}).then(function(a){return a.messages.length>c?a.messages=a.messages.slice(1):G(!0),E(d+c),a}).then(function(a){var c=a.members.filter(function(a){return a.id==b.id});c.length<1&&(a.members=a.members.concat([b]));var d=K(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),u(d).then(function(){return a})}).then(function(){return P(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),u(b),e.exception(a)})},M=function(a,b,c,d){var f=a.members.filter(function(a){return a.id==b.id});f.length<1&&(a.members=a.members.concat([b]));var g=K(a,b.id);g=m.setLoadingMembers(g,!1),g=m.setLoadingMessages(g,!0);var h=a.messages.length;return u(g).then(function(){if(hb?a.messages=a.messages.slice(1):G(!0),a):a}).then(function(a){var b=a.members.filter(function(a){return!(a.id in q.members)}),c=m.addMembers(q,b);return c=m.addMessages(c,a.messages),c=m.setLoadingMessages(c,!1),u(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw u(b),a})},O=function(a,b){return function(){var c=q.messages,d=c.length?c[c.length-1]:null;if(d){for(var e=[],f=c.length-1;f>=0;f--){var g=c[f];if(g.timeCreated!==d.timeCreated)break;e.push(g.id)}return N(a,0,0,b,e,d.timeCreated).then(function(b){return b.messages.length?(t.restart(),P(a)):b})}}},P=function(a){var b=q.loggedInUserId;return h.markAllConversationMessagesAsRead(b,a).then(function(){var b=m.markMessagesAsRead(q,q.messages);return f.publish(i.CONVERSATION_READ,a),u(b)})},Q=function(a){return ca(a).then(function(){var b=m.addPendingBlockUsersById(q,[a]);return u(b)})},R=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.blockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingBlockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_BLOCKED,c.id),u(c)})},S=function(a){return ca(a).then(function(){var b=m.addPendingUnblockUsersById(q,[a]);return u(b)})},T=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.unblockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingUnblockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_UNBLOCKED,c.id),u(c)})},U=function(a){return ca(a).then(function(){var b=m.addPendingRemoveContactsById(q,[a]);return u(b)})},V=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.deleteContacts(q.loggedInUserId,[a])}).then(function(b){var c=m.addMembers(q,b);return c=m.removePendingRemoveContactsById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_REMOVED,a),u(c)})},W=function(a){return ca(a).then(function(){var b=m.addPendingAddContactsById(q,[a]);return u(b)})},X=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.createContactRequest(q.loggedInUserId,a)}).then(function(a){if(!a.request)throw new Error(a.warnings[0].message);return a.request}).then(function(b){var c=m.removePendingAddContactsById(q,[a]);return c=m.addContactRequests(c,[b]),c=m.setLoadingConfirmAction(c,!1),u(c)})},Y=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return u(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,I(q))})},Z=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return u(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,I(q))})},$=function(a){var b=q.selectedMessageIds;return ca(a).then(function(){var a=m.addPendingDeleteMessagesById(q,b);return u(a)})},_=function(){var a=q.pendingDeleteMessageIds,b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.deleteMessages(q.loggedInUserId,a)}).then(function(){var b=m.removeMessagesById(q,a);b=m.removePendingDeleteMessagesById(b,a),b=m.removeSelectedMessagesById(b,a),b=m.setLoadingConfirmAction(b,!1);var c=q.messages[q.messages.length-1],d=b.messages.length?b.messages[b.messages.length-1]:null;if(d&&d.id!=c.id){var e=I(b);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else b.messages.length||f.publish(i.CONVERSATION_DELETED,b.id);return u(b)})},aa=function(a){return ca(a).then(function(){var a=m.setPendingDeleteConversation(q,!0);return u(a)})},ba=function(){var a=m.setLoadingConfirmAction(q,!0);return u(a).then(function(){return h.deleteCoversation(q.loggedInUserId,A())}).then(function(){var a=m.removeMessages(q,q.messages);return a=m.removeSelectedMessagesById(a,q.selectedMessageIds),a=m.setPendingDeleteConversation(a,!1),a=m.setLoadingConfirmAction(a,!1),f.publish(i.CONVERSATION_DELETED,a.id),u(a)})},ca=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);return c=m.removePendingRemoveContactsById(c,[a]),c=m.removePendingUnblockUsersById(c,[a]),c=m.removePendingBlockUsersById(c,[a]),c=m.removePendingDeleteMessagesById(c,b),c=m.setPendingDeleteConversation(c,!1),u(c)},da=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return u(e).then(function(){return h.acceptContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),u(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ea=function(a){var b=q.loggedInUserId,c=q.members[b].contactrequests.filter(function(b){return b.userid==a}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return u(e).then(function(){return h.declineContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),u(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},fa=function(a,b){var c=m.setSendingMessage(q,!0),d=null;return u(c).then(function(){if(a||q.type!=z.PRIVATE)return h.sendMessageToConversation(a,b);var c=A();return h.sendMessageToUser(c,b).then(function(a){return d=parseInt(a.conversationid,10),a})}).then(function(a){var b=m.addMessages(q,[a]);b=m.setSendingMessage(b,!1);var c=I(b);return b.id||(b=m.setId(b,d),c.id=d,va(d),f.publish(i.CONVERSATION_CREATED,c)),u(b).then(function(){f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c)})})["catch"](function(a){var b=m.setSendingMessage(q,!1);u(b),e.exception(a)})},ga=function(a){var b=q;return b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),u(b)},ha=function(){return ca(A()).then(function(){var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);return u(a)})},ia=function(a,b,c){return function(d){var e=k.buildPatch(q,d);return l.render(a,b,c,e).then(function(){q=d,d.id&&(p[d.id]={state:d,messagesOffset:D(),loadedAllMessages:F()})})}},ja=function(a){return function(b,c){q.loadingConfirmAction||a(A())["catch"](function(a){var b=m.setLoadingConfirmAction(q,!1);u(b),e.exception(a)}),c.originalEvent.preventDefault()}},ka=function(b,c){var d=a(b.target),e=d.closest(y.FOOTER_CONTAINER),f=e.find(y.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&fa(q.id,g),c.originalEvent.preventDefault()},la=function(b,c){var d=window.getSelection(),f=a(b.target);if(""==d.toString()&&!f.is("a")){var g=f.closest(y.MESSAGE),h=parseInt(g.attr("data-message-id"),10);ga(h)["catch"](e.exception),c.originalEvent.preventDefault()}},ma=function(a,b){ha()["catch"](e.exception),b.originalEvent.preventDefault()},na=function(a,b){var c=A(),d=q.members[c];n.go(o.VIEW_CONTACT,d),b.originalEvent.preventDefault()},oa=function(a,b){Y()["catch"](e.exception),b.originalEvent.preventDefault()},pa=function(a,b){Z()["catch"](e.exception),b.originalEvent.preventDefault()},qa=function(a,b){n.go(o.VIEW_GROUP_INFO,{id:q.id,name:q.name,subname:q.subname,imageUrl:q.imageUrl,totalMemberCount:q.totalMemberCount},q.loggedInUserId),b.originalEvent.preventDefault()},ra=[[y.ACTION_REQUEST_BLOCK,ja(Q)],[y.ACTION_REQUEST_UNBLOCK,ja(S)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_REQUEST_REMOVE_CONTACT,ja(U)],[y.ACTION_REQUEST_DELETE_CONVERSATION,ja(aa)],[y.ACTION_CANCEL_EDIT_MODE,ma],[y.ACTION_VIEW_CONTACT,na],[y.ACTION_VIEW_GROUP_INFO,qa],[y.ACTION_CONFIRM_FAVOURITE,oa],[y.ACTION_CONFIRM_UNFAVOURITE,pa]],sa=[[y.ACTION_CANCEL_CONFIRM,ja(ca)],[y.ACTION_CONFIRM_BLOCK,ja(R)],[y.ACTION_CONFIRM_UNBLOCK,ja(T)],[y.ACTION_CONFIRM_ADD_CONTACT,ja(X)],[y.ACTION_CONFIRM_REMOVE_CONTACT,ja(V)],[y.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,ja(_)],[y.ACTION_CONFIRM_DELETE_CONVERSATION,ja(ba)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_ACCEPT_CONTACT_REQUEST,ja(da)],[y.ACTION_DECLINE_CONTACT_REQUEST,ja(ea)],[y.MESSAGE,la]],ta=[[y.SEND_MESSAGE_BUTTON,ka],[y.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,ja($)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_REQUEST_UNBLOCK,ja(S)]],ua=function(a,c,g){var h=!1,j=H(c);b.init(g),d.define(a,[d.events.activate]),d.define(c,[d.events.activate]),d.define(g,[d.events.activate]),d.define(j,[d.events.scrollTop,d.events.scrollLock]),j.on(d.events.scrollTop,function(a,b){var c=Object.keys(q.members).length>1;if(!h&&!F()&&c){var d=m.setLoadingMessages(q,!0);u(d).then(function(){return N(q.id,w,D(),v,[])}).then(function(){h=!1,E(D()+w)})["catch"](function(a){h=!1,e.exception(a)})}b.originalEvent.preventDefault()}),ra.forEach(function(b){var c=b[0],e=b[1];a.on(d.events.activate,c,e)}),sa.forEach(function(a){var b=a[0],e=a[1];c.on(d.events.activate,b,e)}),ta.forEach(function(a){var b=a[0],c=a[1];g.on(d.events.activate,b,c)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&(a.route==o.VIEW_CONVERSATION?t.restart():t.stop())})},va=function(a){t&&t.stop(),t=new c(O(a,v),function(a){return a?2*a:x}),t.start()},wa=function(a,b,c){var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=m.buildInitialState(e,d,b);return q||(q=f),t&&t.stop(),u(f)},xa=function(a,b,c){return wa(a,null,b).then(function(){return h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,w,0,v).then(function(c){return za(a,c,b)})["catch"](function(){return J(b,c)})})},ya=function(a,b,c){var d=null;return b in p&&(d=p[b]),wa(a,b,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),E(d.messagesOffset),G(d.loadedAllMessages),u(a)}return L(b,c,w,0,v)}).then(function(){return va(b)})},za=function(a,b,c){var d=null;return b.id in p&&(d=p[b.id]),wa(a,b.id,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),E(d.messagesOffset),G(d.loadedAllMessages),u(a)}return M(b,c,w,v)}).then(function(){return va(b.id)})},Aa=function(b,c,d,f,g,h){var i=null,k=null;"object"==typeof f?(i=f,k=parseInt(i.id,10)):(i=null,k=parseInt(f,10),k=isNaN(k)?null:k),!k&&g&&h&&(k=B(h)),c.attr("data-init")||(u=ia(b,c,d),ua(b,c,d),c.attr("data-init",!0));var l=!q||q.id!=k||h&&h!=A();if(l){var m=null,n=C(c);return m=i?za(c,i,n,h):k?ya(c,k,n,h):xa(c,n,h),m.then(function(){b.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](e.exception)}if(q.type==z.PRIVATE&&g){var o=A();switch(g){case"block":return Q(o);case"unblock":return S(o);case"add-contact":return W(o);case"remove-contact":return U(o)}}return a.Deferred().resolve().promise()},Ba=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Aa,description:Ba}}); \ No newline at end of file +define(["jquery","core/auto_rows","core/backoff_timer","core/custom_interaction_events","core/notification","core/pubsub","core/str","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_view_conversation_constants","core_message/message_drawer_view_conversation_patcher","core_message/message_drawer_view_conversation_renderer","core_message/message_drawer_view_conversation_state_manager","core_message/message_drawer_router","core_message/message_drawer_routes"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p={},q=null,r=!1,s=0,t=null,u=null,v=j.NEWEST_MESSAGES_FIRST,w=j.LOAD_MESSAGE_LIMIT,x=j.INITIAL_NEW_MESSAGE_POLL_TIMEOUT,y=j.SELECTORS,z=j.CONVERSATION_TYPES,A=function(){if(!q||q.type!=z.PRIVATE)return null;var a=q.loggedInUserId,b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},B=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type==z.PRIVATE&&a in d.members&&(b=d.id)}return b},null)},C=function(a){return{id:parseInt(a.attr("data-user-id"),10),contactrequests:[]}},D=function(){return s},E=function(a){s=a,p[q.id].messagesOffset=a},F=function(){return r},G=function(a){r=a,p[q.id].loadedAllMessages=a},H=function(a){return a.find(y.MESSAGES_CONTAINER)},I=function(b){return{id:b.id,name:b.name,subname:b.subname,imageUrl:b.imageUrl,isFavourite:b.isFavourite,type:b.type,totalMemberCount:b.totalMemberCount,loggedInUserId:b.loggedInUserId,messages:b.messages.map(function(b){return a.extend({},b)}),members:Object.keys(b.members).reduce(function(c,d){return c[d]=a.extend({},b.members[d]),c[d].contactrequests=b.members[d].contactrequests.map(function(b){return a.extend({},b)}),c},{})}},J=function(a,b){var c=a.id,d=m.setLoadingMembers(q,!0);return d=m.setLoadingMessages(d,!0),u(d).then(function(){return h.getMemberInfo(c,[b],!0,!0)}).then(function(a){if(a.length)return a[0];throw new Error("Unable to load other user profile")}).then(function(b){var c=m.addMembers(q,[b,a]);return c=m.setLoadingMembers(c,!1),c=m.setLoadingMessages(c,!1),c=m.setName(c,b.fullname),c=m.setType(c,1),c=m.setImageUrl(c,b.profileimageurl),c=m.setTotalMemberCount(c,2),u(c).then(function(){return b})})["catch"](function(a){var b=m.setLoadingMembers(q,!1);u(b),e.exception(a)})},K=function(a,b){var c=a.members.filter(function(a){return a.id!=b}),d=c.length?c[0]:null,e=a.name,f=a.imageurl;a.type==z.PRIVATE&&(e=e||d?d.fullname:"",f=f||d?d.profileimageurl:"");var g=m.addMembers(q,a.members);return g=m.setName(g,e),g=m.setSubname(g,a.subname),g=m.setType(g,a.type),g=m.setImageUrl(g,f),g=m.setTotalMemberCount(g,a.membercount),g=m.setIsFavourite(g,a.isfavourite),g=m.addMessages(g,a.messages)},L=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),u(i).then(function(){return h.getConversation(g,a,!0,!0,0,0,c+1,d,f)}).then(function(a){return a.messages.length>c?a.messages=a.messages.slice(1):G(!0),E(d+c),a}).then(function(a){var c=a.members.filter(function(a){return a.id==b.id});c.length<1&&(a.members=a.members.concat([b]));var d=K(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),u(d).then(function(){return a})}).then(function(){return P(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),u(b),e.exception(a)})},M=function(a,b,c,d){var f=a.members.filter(function(a){return a.id==b.id});f.length<1&&(a.members=a.members.concat([b]));var g=K(a,b.id);g=m.setLoadingMembers(g,!1),g=m.setLoadingMessages(g,!0);var h=a.messages.length;return u(g).then(function(){if(hb?a.messages=a.messages.slice(1):G(!0),a):a}).then(function(a){var b=a.members.filter(function(a){return!(a.id in q.members)}),c=m.addMembers(q,b);return c=m.addMessages(c,a.messages),c=m.setLoadingMessages(c,!1),u(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw u(b),a})},O=function(a,b){return function(){var c=q.messages,d=c.length?c[c.length-1]:null;if(d){for(var e=[],f=c.length-1;f>=0;f--){var g=c[f];if(g.timeCreated!==d.timeCreated)break;e.push(g.id)}return N(a,0,0,b,e,d.timeCreated).then(function(b){return b.messages.length?(t.restart(),P(a)):b})}}},P=function(a){var b=q.loggedInUserId;return h.markAllConversationMessagesAsRead(b,a).then(function(){var b=m.markMessagesAsRead(q,q.messages);return f.publish(i.CONVERSATION_READ,a),u(b)})},Q=function(a){return ca(a).then(function(){var b=m.addPendingBlockUsersById(q,[a]);return u(b)})},R=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.blockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingBlockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_BLOCKED,c.id),u(c)})},S=function(a){return ca(a).then(function(){var b=m.addPendingUnblockUsersById(q,[a]);return u(b)})},T=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.unblockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingUnblockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_UNBLOCKED,c.id),u(c)})},U=function(a){return ca(a).then(function(){var b=m.addPendingRemoveContactsById(q,[a]);return u(b)})},V=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.deleteContacts(q.loggedInUserId,[a])}).then(function(b){var c=m.addMembers(q,b);return c=m.removePendingRemoveContactsById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_REMOVED,a),u(c)})},W=function(a){return ca(a).then(function(){var b=m.addPendingAddContactsById(q,[a]);return u(b)})},X=function(a){var b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.createContactRequest(q.loggedInUserId,a)}).then(function(a){if(!a.request)throw new Error(a.warnings[0].message);return a.request}).then(function(b){var c=m.removePendingAddContactsById(q,[a]);return c=m.addContactRequests(c,[b]),c=m.setLoadingConfirmAction(c,!1),u(c)})},Y=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return u(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,I(q))})},Z=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return u(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,I(q))})},$=function(a){var b=q.selectedMessageIds;return ca(a).then(function(){var a=m.addPendingDeleteMessagesById(q,b);return u(a)})},_=function(){var a=q.pendingDeleteMessageIds,b=m.setLoadingConfirmAction(q,!0);return u(b).then(function(){return h.deleteMessages(q.loggedInUserId,a)}).then(function(){var b=m.removeMessagesById(q,a);b=m.removePendingDeleteMessagesById(b,a),b=m.removeSelectedMessagesById(b,a),b=m.setLoadingConfirmAction(b,!1);var c=q.messages[q.messages.length-1],d=b.messages.length?b.messages[b.messages.length-1]:null;if(d&&d.id!=c.id){var e=I(b);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else b.messages.length||f.publish(i.CONVERSATION_DELETED,b.id);return u(b)})},aa=function(a){return ca(a).then(function(){var a=m.setPendingDeleteConversation(q,!0);return u(a)})},ba=function(){var a=m.setLoadingConfirmAction(q,!0);return u(a).then(function(){return h.deleteCoversation(q.loggedInUserId,A())}).then(function(){var a=m.removeMessages(q,q.messages);return a=m.removeSelectedMessagesById(a,q.selectedMessageIds),a=m.setPendingDeleteConversation(a,!1),a=m.setLoadingConfirmAction(a,!1),f.publish(i.CONVERSATION_DELETED,a.id),u(a)})},ca=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);return c=m.removePendingRemoveContactsById(c,[a]),c=m.removePendingUnblockUsersById(c,[a]),c=m.removePendingBlockUsersById(c,[a]),c=m.removePendingDeleteMessagesById(c,b),c=m.setPendingDeleteConversation(c,!1),u(c)},da=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return u(e).then(function(){return h.acceptContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),u(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ea=function(a){var b=q.loggedInUserId,c=q.members[b].contactrequests.filter(function(b){return b.userid==a}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return u(e).then(function(){return h.declineContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),u(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},fa=function(a,b){var c=m.setSendingMessage(q,!0),d=null;return u(c).then(function(){if(a||q.type!=z.PRIVATE)return h.sendMessageToConversation(a,b);var c=A();return h.sendMessageToUser(c,b).then(function(a){return d=parseInt(a.conversationid,10),a})}).then(function(a){var b=m.addMessages(q,[a]);b=m.setSendingMessage(b,!1);var c=I(b);return b.id||(b=m.setId(b,d),c.id=d,va(d),f.publish(i.CONVERSATION_CREATED,c)),u(b).then(function(){f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c)})})["catch"](function(a){var b=m.setSendingMessage(q,!1);u(b),e.exception(a)})},ga=function(a){var b=q;return b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),u(b)},ha=function(){return ca(A()).then(function(){var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);return u(a)})},ia=function(a,b,c){return function(d){var e=k.buildPatch(q,d);return l.render(a,b,c,e).then(function(){q=d,d.id&&(p[d.id]={state:d,messagesOffset:D(),loadedAllMessages:F()})})}},ja=function(a){return function(b,c){q.loadingConfirmAction||a(A())["catch"](function(a){var b=m.setLoadingConfirmAction(q,!1);u(b),e.exception(a)}),c.originalEvent.preventDefault()}},ka=function(b,c){var d=a(b.target),e=d.closest(y.FOOTER_CONTAINER),f=e.find(y.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&fa(q.id,g),c.originalEvent.preventDefault()},la=function(b,c){var d=window.getSelection(),f=a(b.target);if(""==d.toString()&&!f.is("a")){var g=f.closest(y.MESSAGE),h=parseInt(g.attr("data-message-id"),10);ga(h)["catch"](e.exception),c.originalEvent.preventDefault()}},ma=function(a,b){ha()["catch"](e.exception),b.originalEvent.preventDefault()},na=function(a,b){var c=A(),d=q.members[c];n.go(o.VIEW_CONTACT,d),b.originalEvent.preventDefault()},oa=function(a,b){Y()["catch"](e.exception),b.originalEvent.preventDefault()},pa=function(a,b){Z()["catch"](e.exception),b.originalEvent.preventDefault()},qa=function(a,b){n.go(o.VIEW_GROUP_INFO,{id:q.id,name:q.name,subname:q.subname,imageUrl:q.imageUrl,totalMemberCount:q.totalMemberCount},q.loggedInUserId),b.originalEvent.preventDefault()},ra=[[y.ACTION_REQUEST_BLOCK,ja(Q)],[y.ACTION_REQUEST_UNBLOCK,ja(S)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_REQUEST_REMOVE_CONTACT,ja(U)],[y.ACTION_REQUEST_DELETE_CONVERSATION,ja(aa)],[y.ACTION_CANCEL_EDIT_MODE,ma],[y.ACTION_VIEW_CONTACT,na],[y.ACTION_VIEW_GROUP_INFO,qa],[y.ACTION_CONFIRM_FAVOURITE,oa],[y.ACTION_CONFIRM_UNFAVOURITE,pa]],sa=[[y.ACTION_CANCEL_CONFIRM,ja(ca)],[y.ACTION_CONFIRM_BLOCK,ja(R)],[y.ACTION_CONFIRM_UNBLOCK,ja(T)],[y.ACTION_CONFIRM_ADD_CONTACT,ja(X)],[y.ACTION_CONFIRM_REMOVE_CONTACT,ja(V)],[y.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,ja(_)],[y.ACTION_CONFIRM_DELETE_CONVERSATION,ja(ba)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_ACCEPT_CONTACT_REQUEST,ja(da)],[y.ACTION_DECLINE_CONTACT_REQUEST,ja(ea)],[y.MESSAGE,la]],ta=[[y.SEND_MESSAGE_BUTTON,ka],[y.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,ja($)],[y.ACTION_REQUEST_ADD_CONTACT,ja(W)],[y.ACTION_REQUEST_UNBLOCK,ja(S)]],ua=function(a,c,g){var h=!1,j=H(c);b.init(g),d.define(a,[d.events.activate]),d.define(c,[d.events.activate]),d.define(g,[d.events.activate,d.events.enter]),d.define(j,[d.events.scrollTop,d.events.scrollLock]),j.on(d.events.scrollTop,function(a,b){var c=Object.keys(q.members).length>1;if(!h&&!F()&&c){var d=m.setLoadingMessages(q,!0);u(d).then(function(){return N(q.id,w,D(),v,[])}).then(function(){h=!1,E(D()+w)})["catch"](function(a){h=!1,e.exception(a)})}b.originalEvent.preventDefault()}),ra.forEach(function(b){var c=b[0],e=b[1];a.on(d.events.activate,c,e)}),sa.forEach(function(a){var b=a[0],e=a[1];c.on(d.events.activate,b,e)}),ta.forEach(function(a){var b=a[0],c=a[1];g.on(d.events.activate,b,c)}),g.on(d.events.enter,y.MESSAGE_TEXT_AREA,function(a,b){var c=g.attr("data-enter-to-send");1==c&&ka(a,b)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&(a.route==o.VIEW_CONVERSATION?t.restart():t.stop())}),f.subscribe(i.PREFERENCES_UPDATED,function(a){var b=a.filter(function(a){return"message_entertosend"==a.type}),c=b.length?b[0]:null;c&&g.attr("data-enter-to-send",c.value)})},va=function(a){t&&t.stop(),t=new c(O(a,v),function(a){return a?2*a:x}),t.start()},wa=function(a,b,c){var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=m.buildInitialState(e,d,b);return q||(q=f),t&&t.stop(),u(f)},xa=function(a,b,c){return wa(a,null,b).then(function(){return h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,w,0,v).then(function(c){return za(a,c,b)})["catch"](function(){return J(b,c)})})},ya=function(a,b,c){var d=null;return b in p&&(d=p[b]),wa(a,b,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),E(d.messagesOffset),G(d.loadedAllMessages),u(a)}return L(b,c,w,0,v)}).then(function(){return va(b)})},za=function(a,b,c){var d=null;return b.id in p&&(d=p[b.id]),wa(a,b.id,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),E(d.messagesOffset),G(d.loadedAllMessages),u(a)}return M(b,c,w,v)}).then(function(){return va(b.id)})},Aa=function(b,c,d,f,g,h){var i=null,k=null;"object"==typeof f?(i=f,k=parseInt(i.id,10)):(i=null,k=parseInt(f,10),k=isNaN(k)?null:k),!k&&g&&h&&(k=B(h)),c.attr("data-init")||(u=ia(b,c,d),ua(b,c,d),c.attr("data-init",!0));var l=!q||q.id!=k||h&&h!=A();if(l){var m=null,n=C(c);return m=i?za(c,i,n,h):k?ya(c,k,n,h):xa(c,n,h),m.then(function(){b.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](e.exception)}if(q.type==z.PRIVATE&&g){var o=A();switch(g){case"block":return Q(o);case"unblock":return S(o);case"add-contact":return W(o);case"remove-contact":return U(o)}}return a.Deferred().resolve().promise()},Ba=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Aa,description:Ba}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_settings.min.js b/message/amd/build/message_drawer_view_settings.min.js index 2d465d3feabc7..7afce0cc70b88 100644 --- a/message/amd/build/message_drawer_view_settings.min.js +++ b/message/amd/build/message_drawer_view_settings.min.js @@ -1 +1 @@ -define(["jquery","core/notification","core/str","core_message/message_repository","core/custom_interaction_events"],function(a,b,c,d,e){var f={SETTINGS:'[data-region="settings"]',PREFERENCE_CONTROL:'[data-region="preference-control"]',PRIVACY_PREFERENCE:'[data-preference="blocknoncontacts"] input[type="radio"]',EMAIL_ENABLED_PREFERENCE:'[data-preference="emailnotifications"] input[type="checkbox"]'},g={message_provider_moodle_instantmessage_loggedoff:{type:"emailnotifications",enabled:"email",disabled:"none"},message_provider_moodle_instantmessage_loggedin:{type:"emailnotifications",enabled:"email",disabled:"none"}},h=function(c,h){var i=c.find(f.SETTINGS);e.define(i,[e.events.activate]),i.on(e.events.activate,f.EMAIL_ENABLED_PREFERENCE,function(c){var e=a(c.target),i=e.closest(f.PREFERENCE_CONTROL),j=i.attr("data-preference"),k=e.prop("checked"),l=Object.keys(g).reduce(function(a,b){var c=g[b];return c.type===j&&a.push({type:b,value:k?c.enabled:c.disabled}),a},[]);d.savePreferences(h,l)["catch"](b.exception)}),i.on(e.events.activate,f.PRIVACY_PREFERENCE,function(c){var e=a(c.target).val(),f=[{type:"message_blocknoncontacts",value:e}];d.savePreferences(h,f)["catch"](b.exception)})},i=function(b,c,d){return c.attr("data-init")||(h(c,d),c.attr("data-init",!0)),a.Deferred().resolve().promise()},j=function(){return c.get_string("messagedrawerviewsettings","core_message")};return{show:i,description:j}}); \ No newline at end of file +define(["jquery","core/notification","core/str","core/pubsub","core_message/message_repository","core/custom_interaction_events","core_message/message_drawer_events"],function(a,b,c,d,e,f,g){var h={SETTINGS:'[data-region="settings"]',PREFERENCE_CONTROL:'[data-region="preference-control"]',PRIVACY_PREFERENCE:'[data-preference="blocknoncontacts"] input[type="radio"]',EMAIL_ENABLED_PREFERENCE:'[data-preference="emailnotifications"] input[type="checkbox"]',ENTER_TO_SEND_PREFERENCE:'[data-preference="entertosend"] input[type="checkbox"]'},i={message_provider_moodle_instantmessage_loggedoff:{type:"emailnotifications",enabled:"email",disabled:"none"},message_provider_moodle_instantmessage_loggedin:{type:"emailnotifications",enabled:"email",disabled:"none"}},j=function(c,j){var k=c.find(h.SETTINGS);f.define(k,[f.events.activate]),k.on(f.events.activate,h.EMAIL_ENABLED_PREFERENCE,function(c){var f=a(c.target),k=f.closest(h.PREFERENCE_CONTROL),l=k.attr("data-preference"),m=f.prop("checked"),n=Object.keys(i).reduce(function(a,b){var c=i[b];return c.type===l&&a.push({type:b,value:m?c.enabled:c.disabled}),a},[]);e.savePreferences(j,n).then(function(){d.publish(g.PREFERENCES_UPDATED,n)})["catch"](b.exception)}),k.on(f.events.activate,h.PRIVACY_PREFERENCE,function(c){var f=a(c.target).val(),h=[{type:"message_blocknoncontacts",value:f}];e.savePreferences(j,h).then(function(){d.publish(g.PREFERENCES_UPDATED,h)})["catch"](b.exception)}),k.on(f.events.activate,h.ENTER_TO_SEND_PREFERENCE,function(c){var f=a(c.target).prop("checked"),h=[{type:"message_entertosend",value:f}];e.savePreferences(j,h).then(function(){d.publish(g.PREFERENCES_UPDATED,h)})["catch"](b.exception)})},k=function(b,c,d){return c.attr("data-init")||(j(c,d),c.attr("data-init",!0)),a.Deferred().resolve().promise()},l=function(){return c.get_string("messagedrawerviewsettings","core_message")};return{show:k,description:l}}); \ No newline at end of file diff --git a/message/amd/src/message_drawer_events.js b/message/amd/src/message_drawer_events.js index 7362ba92a3bb0..02c37bc9ba844 100644 --- a/message/amd/src/message_drawer_events.js +++ b/message/amd/src/message_drawer_events.js @@ -35,6 +35,7 @@ define([], function() { CONVERSATION_READ: 'message-drawer-conversation-read', CONVERSATION_SET_FAVOURITE: 'message-drawer-conversation-set-favourite', CONVERSATION_UNSET_FAVOURITE: 'message-drawer-conversation-unset-favourite', + PREFERENCES_UPDATED: 'message-drawer-preferences-updated', ROUTE_CHANGED: 'message-drawer-route-change', SHOW: 'message-drawer-show', HIDE: 'message-drawer-hide', diff --git a/message/amd/src/message_drawer_view_conversation.js b/message/amd/src/message_drawer_view_conversation.js index 77e49ea0999a4..8aa2e60d76634 100644 --- a/message/amd/src/message_drawer_view_conversation.js +++ b/message/amd/src/message_drawer_view_conversation.js @@ -1225,7 +1225,8 @@ function( CustomEvents.events.activate ]); CustomEvents.define(footer, [ - CustomEvents.events.activate + CustomEvents.events.activate, + CustomEvents.events.enter ]); CustomEvents.define(messagesContainer, [ CustomEvents.events.scrollTop, @@ -1273,6 +1274,13 @@ function( footer.on(CustomEvents.events.activate, selector, handlerFunction); }); + footer.on(CustomEvents.events.enter, SELECTORS.MESSAGE_TEXT_AREA, function(e, data) { + var enterToSend = footer.attr('data-enter-to-send'); + if (enterToSend == true) { + handleSendMessage(e, data); + } + }); + PubSub.subscribe(MessageDrawerEvents.ROUTE_CHANGED, function(newRouteData) { if (newMessagesPollTimer) { if (newRouteData.route == MessageDrawerRoutes.VIEW_CONVERSATION) { @@ -1282,6 +1290,17 @@ function( } } }); + + PubSub.subscribe(MessageDrawerEvents.PREFERENCES_UPDATED, function(preferences) { + var filteredPreferences = preferences.filter(function(preference) { + return preference.type == 'message_entertosend'; + }); + var enterToSendPreference = filteredPreferences.length ? filteredPreferences[0] : null; + + if (enterToSendPreference) { + footer.attr('data-enter-to-send', enterToSendPreference.value); + } + }); }; /** diff --git a/message/amd/src/message_drawer_view_settings.js b/message/amd/src/message_drawer_view_settings.js index 3df6cb4eb00e5..cd7eda6eed66a 100644 --- a/message/amd/src/message_drawer_view_settings.js +++ b/message/amd/src/message_drawer_view_settings.js @@ -25,22 +25,27 @@ define( 'jquery', 'core/notification', 'core/str', + 'core/pubsub', 'core_message/message_repository', 'core/custom_interaction_events', + 'core_message/message_drawer_events' ], function( $, Notification, Str, + PubSub, Repository, - CustomEvents + CustomEvents, + MessageDrawerEvents ) { var SELECTORS = { SETTINGS: '[data-region="settings"]', PREFERENCE_CONTROL: '[data-region="preference-control"]', PRIVACY_PREFERENCE: '[data-preference="blocknoncontacts"] input[type="radio"]', - EMAIL_ENABLED_PREFERENCE: '[data-preference="emailnotifications"] input[type="checkbox"]' + EMAIL_ENABLED_PREFERENCE: '[data-preference="emailnotifications"] input[type="checkbox"]', + ENTER_TO_SEND_PREFERENCE: '[data-preference="entertosend"] input[type="checkbox"]', }; var PREFERENCES_EMAIL = { @@ -89,6 +94,10 @@ function( }, []); Repository.savePreferences(loggedInUserId, preferences) + .then(function() { + PubSub.publish(MessageDrawerEvents.PREFERENCES_UPDATED, preferences); + return; + }) .catch(Notification.exception); } ); @@ -103,6 +112,28 @@ function( ]; Repository.savePreferences(loggedInUserId, preferences) + .then(function() { + PubSub.publish(MessageDrawerEvents.PREFERENCES_UPDATED, preferences); + return; + }) + .catch(Notification.exception); + } + ); + + settingsContainer.on(CustomEvents.events.activate, SELECTORS.ENTER_TO_SEND_PREFERENCE, function(e) { + var newValue = $(e.target).prop('checked'); + var preferences = [ + { + type: 'message_entertosend', + value: newValue + } + ]; + + Repository.savePreferences(loggedInUserId, preferences) + .then(function() { + PubSub.publish(MessageDrawerEvents.PREFERENCES_UPDATED, preferences); + return; + }) .catch(Notification.exception); } ); diff --git a/message/classes/privacy/provider.php b/message/classes/privacy/provider.php index 5c2454451f49a..b3a0e8aaa0c13 100644 --- a/message/classes/privacy/provider.php +++ b/message/classes/privacy/provider.php @@ -158,7 +158,11 @@ public static function get_metadata(collection $items) : collection { public static function export_user_preferences(int $userid) { $preferences = get_user_preferences(null, null, $userid); foreach ($preferences as $name => $value) { - if ((substr($name, 0, 16) == 'message_provider') || ($name == 'message_blocknoncontacts')) { + if ( + (substr($name, 0, 16) == 'message_provider') || + ($name == 'message_blocknoncontacts') || + ($name == 'message_entertosend') + ) { writer::export_user_preference( 'core_message', $name, diff --git a/message/lib.php b/message/lib.php index fc4bebe0d86cb..da474fa0dbedf 100644 --- a/message/lib.php +++ b/message/lib.php @@ -736,6 +736,11 @@ function core_message_user_preferences() { return $value; } ); + $preferences['message_entertosend'] = array( + 'type' => PARAM_BOOL, + 'null' => NULL_NOT_ALLOWED, + 'default' => false + ); $preferences['/^message_provider_([\w\d_]*)_logged(in|off)$/'] = array('isregex' => true, 'type' => PARAM_NOTAGS, 'null' => NULL_NOT_ALLOWED, 'default' => 'none', 'permissioncallback' => function ($user, $preferencename) { @@ -859,6 +864,9 @@ function core_message_before_standard_top_of_body_html() { $emailloggedoff = get_user_preferences('message_provider_moodle_instantmessage_loggedoff', 'none', $USER->id); $emailenabled = $emailloggedin == 'email' && $emailloggedoff == 'email'; + // Enter to send. + $entertosend = get_user_preferences('message_entertosend', false, $USER->id); + return $renderer->render_from_template('core_message/message_drawer', [ 'contactrequestcount' => $requestcount, 'loggedinuser' => [ @@ -898,7 +906,8 @@ function core_message_before_standard_top_of_body_html() { ], 'settings' => [ 'privacy' => $choices, - 'emailenabled' => $emailenabled + 'emailenabled' => $emailenabled, + 'entertosend' => $entertosend ] ]); } diff --git a/message/templates/message_drawer_view_conversation_footer.mustache b/message/templates/message_drawer_view_conversation_footer.mustache index 585678a017c86..722a75b671488 100644 --- a/message/templates/message_drawer_view_conversation_footer.mustache +++ b/message/templates/message_drawer_view_conversation_footer.mustache @@ -39,6 +39,7 @@ class="hidden border-top bg-white position-relative" aria-hidden="true" data-region="view-conversation" + data-enter-to-send="{{settings.entertosend}}" > {{/privacy}} -

{{#str}}categoryemail, admin{{/str}}

+

{{#str}}categoryemail, admin{{/str}}

+

{{#str}} general, core {{/str}}

+
+ + + + +
{{/settings}} \ No newline at end of file diff --git a/message/tests/privacy_provider_test.php b/message/tests/privacy_provider_test.php index 5005483f69b53..d069f65c1a282 100644 --- a/message/tests/privacy_provider_test.php +++ b/message/tests/privacy_provider_test.php @@ -161,6 +161,7 @@ public function test_export_user_preferences() { set_user_preference('message_provider_moodle_instantmessage_loggedin', 'airnotifier', $USER->id); set_user_preference('message_provider_moodle_instantmessage_loggedoff', 'popup', $USER->id); set_user_preference('message_blocknoncontacts', \core_message\api::MESSAGE_PRIVACY_ONLYCONTACTS, $USER->id); + set_user_preference('message_entertosend', true, $USER->id); set_user_preference('message_provider_moodle_instantmessage_loggedoff', 'inbound', $user->id); // Set an unrelated preference. @@ -175,10 +176,11 @@ public function test_export_user_preferences() { $prefs = (array) $writer->get_user_preferences('core_message'); // Check only 3 preferences exist. - $this->assertCount(3, $prefs); + $this->assertCount(4, $prefs); $this->assertArrayHasKey('message_provider_moodle_instantmessage_loggedin', $prefs); $this->assertArrayHasKey('message_provider_moodle_instantmessage_loggedoff', $prefs); $this->assertArrayHasKey('message_blocknoncontacts', $prefs); + $this->assertArrayHasKey('message_entertosend', $prefs); foreach ($prefs as $key => $pref) { if ($key == 'message_provider_moodle_instantmessage_loggedin') {