Browse Source

Add shims to webpack config and fix bugs in templates

JC Brand 7 years ago
parent
commit
74eed32e82

+ 24 - 23
dev.html

@@ -11,34 +11,35 @@
     <link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
     <link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
     <link type="text/css" rel="stylesheet" media="screen" href="css/fullpage.css" />
     <link type="text/css" rel="stylesheet" media="screen" href="css/fullpage.css" />
     <link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
     <link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
-    <script src="node_modules/requirejs/require.js"></script>
-    <script src="src/config.js"></script>
+
+    <![if gte IE 11]>
+        <link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
+        <script src="dist/converse.js"></script>
+    <![endif]>
 </head>
 </head>
 
 
 <body class="reset">
 <body class="reset">
 
 
 <script>
 <script>
-    require(['converse'], function (converse) {
-        converse.initialize({
-            auto_away: 300,
-            i18n: 'en',
-            // auto_join_rooms: [
-            //     'discuss@conference.conversejs.org',
-            //     'prosody@conference.prosody.im',
-            //     'jdev@conference.jabber.org'
-            // ],
-            websocket_url: 'ws://chat.example.org:5280/xmpp-websocket',
-            view_mode: 'fullscreen',
-            archived_messages_page_size: '500',
-            allow_public_bookmarks: true,
-            notify_all_room_messages: [
-                'discuss@conference.conversejs.org'
-            ],
-            bosh_service_url: 'http://chat.example.org:5280/http-bind/',
-            bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
-            message_archiving: 'always',
-            debug: true
-        });
+    converse.initialize({
+        auto_away: 300,
+        i18n: 'en',
+        // auto_join_rooms: [
+        //     'discuss@conference.conversejs.org',
+        //     'prosody@conference.prosody.im',
+        //     'jdev@conference.jabber.org'
+        // ],
+        // websocket_url: 'ws://chat.example.org:5280/xmpp-websocket',
+        view_mode: 'fullscreen',
+        archived_messages_page_size: '500',
+        allow_public_bookmarks: true,
+        notify_all_room_messages: [
+            'discuss@conference.conversejs.org'
+        ],
+        // bosh_service_url: 'http://chat.example.org:5280/http-bind/',
+        bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
+        message_archiving: 'always',
+        debug: true
     });
     });
 </script>
 </script>
 </body>
 </body>

File diff suppressed because it is too large
+ 0 - 0
dist/converse.js


File diff suppressed because it is too large
+ 237 - 71
package-lock.json


+ 2 - 0
package.json

@@ -47,9 +47,11 @@
     "es6-promise": "^4.1.0",
     "es6-promise": "^4.1.0",
     "eslint": "4.19.1",
     "eslint": "4.19.1",
     "eslint-plugin-lodash": "^2.3.3",
     "eslint-plugin-lodash": "^2.3.3",
+    "exports-loader": "^0.7.0",
     "filesize": "^3.6.1",
     "filesize": "^3.6.1",
     "font-awesome": "^4.7.0",
     "font-awesome": "^4.7.0",
     "http-server": "^0.10.0",
     "http-server": "^0.10.0",
+    "imports-loader": "^0.8.0",
     "install": "^0.9.5",
     "install": "^0.9.5",
     "jasmine-core": "2.6.4",
     "jasmine-core": "2.6.4",
     "jed": "1.1.1",
     "jed": "1.1.1",

+ 2 - 1
src/converse-chatview.js

@@ -150,6 +150,7 @@
                     return tpl_emojis(
                     return tpl_emojis(
                         _.extend(
                         _.extend(
                             this.model.toJSON(), {
                             this.model.toJSON(), {
+                                '_': _,
                                 'transform': _converse.use_emojione ? emojione.shortnameToImage : emojione.shortnameToUnicode,
                                 'transform': _converse.use_emojione ? emojione.shortnameToImage : emojione.shortnameToUnicode,
                                 'emojis_by_category': u.getEmojisByCategory(_converse, emojione),
                                 'emojis_by_category': u.getEmojisByCategory(_converse, emojione),
                                 'toned_emojis': u.getTonedEmojis(_converse),
                                 'toned_emojis': u.getTonedEmojis(_converse),
@@ -657,7 +658,7 @@
                             tpl_help_message({
                             tpl_help_message({
                                 'isodate': moment().format(),
                                 'isodate': moment().format(),
                                 'type': type,
                                 'type': type,
-                                'message': xss.filterXSS(msg, {'whiteList': {'strong': []}})
+                                'message': filterXSS(msg, {'whiteList': {'strong': []}})
                             })
                             })
                         );
                         );
                     });
                     });

+ 4 - 1
src/converse-muc-views.js

@@ -1580,7 +1580,10 @@
                     const show = this.model.get('show');
                     const show = this.model.get('show');
                     return tpl_occupant(
                     return tpl_occupant(
                         _.extend(
                         _.extend(
-                            { 'jid': '',
+                            { '_': _, // XXX Normally this should already be included,
+                                      // but with the current webpack build,
+                                      // we only get a subset of the _ methods.
+                              'jid': '',
                               'show': show,
                               'show': show,
                               'hint_show': _converse.PRETTY_CHAT_STATUS[show],
                               'hint_show': _converse.PRETTY_CHAT_STATUS[show],
                               'hint_occupant': __('Click to mention %1$s in your message.', this.model.get('nick')),
                               'hint_occupant': __('Click to mention %1$s in your message.', this.model.get('nick')),

+ 1 - 1
src/templates/alert_modal.html

@@ -7,7 +7,7 @@
           <span aria-hidden="true">&times;</span>
           <span aria-hidden="true">&times;</span>
         </button>
         </button>
       </div>
       </div>
-      <div class="modal-body">{[ _.each(o.messages, function (message) { ]}
+      <div class="modal-body">{[o.messages.each(function (message) { ]}
           <p>{{{message}}}</p>
           <p>{{{message}}}</p>
       {[ }) ]}
       {[ }) ]}
     </div>
     </div>

+ 4 - 4
src/templates/emojis.html

@@ -1,7 +1,7 @@
 <div class="emoji-picker-container">
 <div class="emoji-picker-container">
-{[ _.forEach(o.emojis_by_category, function (obj, category) { ]}
+{[ o._.forEach(o.emojis_by_category, function (obj, category) { ]}
     <ul class="emoji-picker emoji-picker-{{{category}}} {[ if (o.current_category !== category) { ]} hidden {[ } ]}">
     <ul class="emoji-picker emoji-picker-{{{category}}} {[ if (o.current_category !== category) { ]} hidden {[ } ]}">
-        {[ _.forEach(o.emojis_by_category[category], function (emoji) { ]}
+        {[ o._.forEach(o.emojis_by_category[category], function (emoji) { ]}
         <li class="emoji insert-emoji {[ if (o.shouldBeHidden(emoji._shortname, o.current_skintone, o.toned_emojis)) { ]} hidden {[ }; ]}"
         <li class="emoji insert-emoji {[ if (o.shouldBeHidden(emoji._shortname, o.current_skintone, o.toned_emojis)) { ]} hidden {[ }; ]}"
             data-emoji="{{{emoji._shortname}}}">
             data-emoji="{{{emoji._shortname}}}">
                 <a href="#" data-emoji="{{{emoji._shortname}}}"> {{ o.transform(emoji._shortname) }}  </a>
                 <a href="#" data-emoji="{{{emoji._shortname}}}"> {{ o.transform(emoji._shortname) }}  </a>
@@ -12,7 +12,7 @@
 <ul class="emoji-toolbar">
 <ul class="emoji-toolbar">
     <li class="emoji-category-picker">
     <li class="emoji-category-picker">
         <ul>
         <ul>
-            {[ _.forEach(o.emojis_by_category, function (obj, category) { ]}
+            {[ o._.forEach(o.emojis_by_category, function (obj, category) { ]}
                 <li data-category="{{{category}}}" class="emoji-category {[ if (o.current_category === category) { ]} picked {[ } ]}">
                 <li data-category="{{{category}}}" class="emoji-category {[ if (o.current_category === category) { ]} picked {[ } ]}">
                     <a class="pick-category" href="#" data-category="{{{category}}}"> {{ o.transform(o.emojis_by_category[category][0]._shortname) }} </a>
                     <a class="pick-category" href="#" data-category="{{{category}}}"> {{ o.transform(o.emojis_by_category[category][0]._shortname) }} </a>
                 </li>
                 </li>
@@ -21,7 +21,7 @@
     </li>
     </li>
     <li class="emoji-skintone-picker">
     <li class="emoji-skintone-picker">
         <ul>
         <ul>
-            {[ _.forEach(o.skintones, function (skintone) { ]}
+            {[ o._.forEach(o.skintones, function (skintone) { ]}
                 <li data-skintone="{{{skintone}}}" class="emoji-skintone {[ if (o.current_skintone === skintone) { ]} picked {[ } ]}">
                 <li data-skintone="{{{skintone}}}" class="emoji-skintone {[ if (o.current_skintone === skintone) { ]} picked {[ } ]}">
                     <a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ o.transform(':'+skintone+':') }} </a>
                     <a class="pick-skintone" href="#" data-skintone="{{{skintone}}}"> {{ o.transform(':'+skintone+':') }} </a>
                 </li>
                 </li>

+ 1 - 1
src/templates/field.html

@@ -1,6 +1,6 @@
 <field var="{{{o.name}}}">
 <field var="{{{o.name}}}">
 {[ if (_.isArray(o.value)) { ]}
 {[ if (_.isArray(o.value)) { ]}
-    {[ _.each(o.value,function(arrayValue) { ]}<value>{{{arrayValue}}}</value>{[ }); ]}
+    {[ o.value.forEach(function (arrayValue) { ]}<value>{{{arrayValue}}}</value>{[ }); ]}
 {[ } else { ]}
 {[ } else { ]}
     <value>{{{o.value}}}</value>
     <value>{{{o.value}}}</value>
 {[ } ]}</field>
 {[ } ]}</field>

+ 1 - 1
src/templates/message.html

@@ -5,7 +5,7 @@
     <div class="chat-msg-content">
     <div class="chat-msg-content">
         <span class="chat-msg-heading">
         <span class="chat-msg-heading">
             <span class="chat-msg-author">{{{o.username}}}
             <span class="chat-msg-author">{{{o.username}}}
-                {[ _.each(o.roles, function (role) { ]} <span class="badge badge-secondary">{{{role}}}</span> {[ }); ]}
+                {[o.roles.forEach(function (role) { ]} <span class="badge badge-secondary">{{{role}}}</span> {[ }); ]}
             </span>
             </span>
             <span class="chat-msg-time">{{{o.pretty_time}}}</span>
             <span class="chat-msg-time">{{{o.pretty_time}}}</span>
         </span>
         </span>

+ 1 - 1
src/templates/occupant.html

@@ -8,7 +8,7 @@
     {[ if (o.role === "visitor") { ]}
     {[ if (o.role === "visitor") { ]}
        title="{{{ o.jid }}} {{{ o.desc_visitor }}} {{{ o.hint_occupant }}}"
        title="{{{ o.jid }}} {{{ o.desc_visitor }}} {{{ o.hint_occupant }}}"
     {[ } ]}
     {[ } ]}
-    {[ if (!_.includes(["visitor", "participant", "moderator"], o.role)) { ]}
+    {[ if (!o._.includes(["visitor", "participant", "moderator"], o.role)) { ]}
        title="{{{ o.jid }}} {{{ o.hint_occupant }}}"
        title="{{{ o.jid }}} {{{ o.hint_occupant }}}"
     {[ } ]}>
     {[ } ]}>
     <div class="row no-gutters">
     <div class="row no-gutters">

+ 22 - 1
webpack.config.js

@@ -13,7 +13,28 @@ const config = {
     },
     },
     devtool: 'source-map',
     devtool: 'source-map',
     module: {
     module: {
-        rules: [{
+        rules: [
+        {
+            test: path.resolve(__dirname, "node_modules/backbone.overview/dist/backbone.orderedlistview"),
+            use: 'imports-loader?backbone.nativeview'
+        },
+        {
+            test: path.resolve(__dirname, "node_modules/backbone.overview/dist/backbone.overview"),
+            use: 'imports-loader?backbone.nativeview'
+        },
+        {
+            test: path.resolve(__dirname, "node_modules/backbone.vdomview/dist/backbone.vdomview"),
+            use: 'imports-loader?backbone.nativeview'
+        },
+        {
+            test: path.resolve(__dirname, "node_modules/awesomplete-avoid-xss/awesomplete"),
+            use: "exports-loader?Awesomplete"
+        },
+        {
+            test: path.resolve(__dirname, "node_modules/xss/dist/xss"),
+            use: "exports-loader?filterXSS,filterCSS"
+        },
+        {
             test: /\.html$/,
             test: /\.html$/,
             exclude: /node_modules/,
             exclude: /node_modules/,
             use: [{
             use: [{

Some files were not shown because too many files changed in this diff