Browse Source

Make messages' time format configurable (#797)

Fixes #675 

* Made time format configurable

* Made changes to values of time_format

* Removed user restrictions on time format

* Added documentation for time-format config

* Edited changes.md

* Edited config doc

* Modified time-format explanation

* Added link to moment

* Added test to check rendered time

* Edited CHANGES and removeunncessary lines from time format checking spec

* Removed unncessary spaces
Soumit Bose 8 years ago
parent
commit
2c5ecd7120
5 changed files with 33 additions and 1 deletions
  1. 1 0
      docs/CHANGES.md
  2. 11 0
      docs/source/configuration.rst
  3. 19 0
      spec/chatbox.js
  4. 1 1
      src/converse-chatview.js
  5. 1 0
      src/converse-core.js

+ 1 - 0
docs/CHANGES.md

@@ -4,6 +4,7 @@
 
 
 - #585 Duplicate contact created due to JID case sensivity [saganshul]
 - #585 Duplicate contact created due to JID case sensivity [saganshul]
 - #628 Fixes the bug in displaying chat status during private chat. [saganshul]
 - #628 Fixes the bug in displaying chat status during private chat. [saganshul]
+- #797 Time format made configurable. [smitbose]
 - #806 The `_converse.listen` API event listeners aren't triggered. [jcbrand]
 - #806 The `_converse.listen` API event listeners aren't triggered. [jcbrand]
 - #807 Error: Plugin "converse-dragresize" tried to override HeadlinesBoxView but it's not found. [jcbrand]
 - #807 Error: Plugin "converse-dragresize" tried to override HeadlinesBoxView but it's not found. [jcbrand]
 
 

+ 11 - 0
docs/source/configuration.rst

@@ -1067,6 +1067,17 @@ If set to ``false``, this feature is disabled.
 
 
 If set to ``a resource name``, converse.js will synchronize only with a client that has that particular resource assigned to it.
 If set to ``a resource name``, converse.js will synchronize only with a client that has that particular resource assigned to it.
 
 
+time_format
+-----------
+
+* Default: ``HH:MM``
+
+Examples: ``HH:MM``, ``hh:mm``, ``hh:mm a``.
+
+This option makes the time format for the time shown, for each message, configurable. Converse uses `moment.js <https://momentjs.com/>`_
+for showing time. This option allows the configuration of the format in which `moment` will display the time for the messages. For detailed
+description of time-format options available for `moment` you can check this `link <https://momentjs.com/docs/#/parsing/string-format/>`_.
+
 use_otr_by_default
 use_otr_by_default
 ------------------
 ------------------
 
 

+ 19 - 0
spec/chatbox.js

@@ -1240,6 +1240,25 @@
                     });
                     });
                 }));
                 }));
 
 
+                it("will render the message time as configured", mock.initConverse(function (_converse) {
+                    test_utils.createContacts(_converse, 'current');
+                    
+                    _converse.time_format = 'hh:mm';
+                    var contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
+                    test_utils.openChatBoxFor(_converse, contact_jid);
+                    var view = _converse.chatboxviews.get(contact_jid);
+                    var message = 'This message is sent from this chatbox';
+                    test_utils.sendMessage(view, message);
+                    
+                    var chatbox = _converse.chatboxes.get(contact_jid);
+                    expect(chatbox.messages.models.length, 1);
+                    var msg_object = chatbox.messages.models[0];
+                    var msg_time_author = view.$el.find('.chat-content').find('.chat-message')
+                                            .last().find('.chat-msg-author.chat-msg-me').text();
+                    var msg_time_rendered = msg_time_author.split(" ",1);
+                    var msg_time = moment(msg_object.get('time')).format(_converse.time_format);
+                    expect(msg_time_rendered[0]).toBe(msg_time);
+                }));
             });
             });
 
 
             describe("A Chat Status Notification", function () {
             describe("A Chat Status Notification", function () {

+ 1 - 1
src/converse-chatview.js

@@ -348,7 +348,7 @@
                         _.extend(this.getExtraMessageTemplateAttributes(attrs), {
                         _.extend(this.getExtraMessageTemplateAttributes(attrs), {
                             'msgid': attrs.msgid,
                             'msgid': attrs.msgid,
                             'sender': attrs.sender,
                             'sender': attrs.sender,
-                            'time': msg_time.format('hh:mm'),
+                            'time': msg_time.format(_converse.time_format),
                             'isodate': msg_time.format(),
                             'isodate': msg_time.format(),
                             'username': username,
                             'username': username,
                             'extra_classes': this.getExtraMessageClasses(attrs)
                             'extra_classes': this.getExtraMessageClasses(attrs)

+ 1 - 0
src/converse-core.js

@@ -267,6 +267,7 @@
             whitelisted_plugins: [],
             whitelisted_plugins: [],
             xhr_custom_status: false,
             xhr_custom_status: false,
             xhr_custom_status_url: '',
             xhr_custom_status_url: '',
+            time_format: 'HH:MM',
         };
         };
         _.assignIn(this, this.default_settings);
         _.assignIn(this, this.default_settings);
         // Allow only whitelisted configuration attributes to be overwritten
         // Allow only whitelisted configuration attributes to be overwritten