Commit 0150862f916e83bc156c043db9312bc63ce89310
Exists in
master
and in
3 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
17 changed files
with
465 additions
and
17 deletions
Show diff stats
amadeus/static/css/.sass-cache/a7f87b90919294b62ab4f8079e31dcda8f485534/green.sassc
No preview for this file type
amadeus/static/css/base/amadeus.css
... | ... | @@ -1393,9 +1393,16 @@ div.dataTables_wrapper div.dataTables_paginate { |
1393 | 1393 | |
1394 | 1394 | .messages-container { |
1395 | 1395 | height: 400px; |
1396 | - overflow-y: scroll; | |
1397 | 1396 | border-top-width: 1px; |
1398 | 1397 | border-top-style: solid; |
1398 | + line-height: 399px; | |
1399 | + overflow-y: scroll; | |
1400 | +} | |
1401 | +.messages-container .messages-list { | |
1402 | + display: inline-block; | |
1403 | + vertical-align: bottom; | |
1404 | + line-height: normal; | |
1405 | + width: 100%; | |
1399 | 1406 | } |
1400 | 1407 | |
1401 | 1408 | .message-sender { |
... | ... | @@ -1438,4 +1445,36 @@ div.dataTables_wrapper div.dataTables_paginate { |
1438 | 1445 | .talk-last_msg { |
1439 | 1446 | font-size: 14px; |
1440 | 1447 | } |
1448 | + | |
1449 | +.message-view { | |
1450 | + border-top-width: 1px; | |
1451 | + border-top-style: solid; | |
1452 | +} | |
1453 | + | |
1454 | +.message-view img { | |
1455 | + margin-bottom: 10px; | |
1456 | +} | |
1457 | + | |
1458 | +.message-view .message-user { | |
1459 | + font-weight: 700; | |
1460 | + font-size: 16px; | |
1461 | +} | |
1462 | + | |
1463 | +.message-view .message-user .message-date { | |
1464 | + font-weight: normal; | |
1465 | + font-size: 12px; | |
1466 | +} | |
1467 | + | |
1468 | +.message-view .btn-group { | |
1469 | + margin-top: -5px; | |
1470 | + margin-bottom: 0px; | |
1471 | +} | |
1472 | + | |
1473 | +.message-view .btn-group .dropdown-menu a { | |
1474 | + cursor: pointer; | |
1475 | +} | |
1476 | + | |
1477 | +.message-view .btn-group .btn_menu i { | |
1478 | + font-size: 16px; | |
1479 | +} | |
1441 | 1480 | /* End Chat */ |
1442 | 1481 | \ No newline at end of file | ... | ... |
amadeus/static/css/themes/green.css
... | ... | @@ -474,7 +474,7 @@ a.add-row { |
474 | 474 | .participant { |
475 | 475 | border-color: #888; } |
476 | 476 | |
477 | -.participant .user-info h4, .modal_profile_sidebar h4 { | |
477 | +.participant .user-info h4, .modal_profile_sidebar h4, .message-view .message-user { | |
478 | 478 | color: #59b75c; } |
479 | 479 | |
480 | 480 | .participant .user-info .status, .modal_profile_sidebar .status { |
... | ... | @@ -504,6 +504,12 @@ a.add-row { |
504 | 504 | .talk-last_msg { |
505 | 505 | color: #888; } |
506 | 506 | |
507 | +.message-view { | |
508 | + border-top-color: #cacaca; } | |
509 | + | |
510 | +.message-view .message-user .message-date { | |
511 | + color: #888; } | |
512 | + | |
507 | 513 | @media(max-width: 768px) { |
508 | 514 | .navbar .navbar-nav .dropdown .dropdown-menu li > a { |
509 | 515 | color: #333333 !important; } | ... | ... |
amadeus/static/css/themes/green.css.map
1 | 1 | { |
2 | 2 | "version": 3, |
3 | -"mappings": "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", | |
3 | +"mappings": "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", | |
4 | 4 | "sources": ["green.sass"], |
5 | 5 | "names": [], |
6 | 6 | "file": "green.css" | ... | ... |
amadeus/static/css/themes/green.sass
... | ... | @@ -645,7 +645,7 @@ a.add-row |
645 | 645 | .participant |
646 | 646 | border-color: #888 |
647 | 647 | |
648 | -.participant .user-info h4, .modal_profile_sidebar h4 | |
648 | +.participant .user-info h4, .modal_profile_sidebar h4, .message-view .message-user | |
649 | 649 | color: #59b75c |
650 | 650 | |
651 | 651 | .participant .user-info .status, .modal_profile_sidebar .status |
... | ... | @@ -676,6 +676,12 @@ a.add-row |
676 | 676 | .talk-last_msg |
677 | 677 | color: #888 |
678 | 678 | |
679 | +.message-view | |
680 | + border-top-color: #cacaca | |
681 | + | |
682 | +.message-view .message-user .message-date | |
683 | + color: #888 | |
684 | + | |
679 | 685 | @media(max-width: 768px) |
680 | 686 | .navbar .navbar-nav .dropdown .dropdown-menu li > a |
681 | 687 | color: #333333 !important | ... | ... |
amadeus/static/js/chat.js
... | ... | @@ -11,6 +11,14 @@ function getModalInfo(btn, space, space_type) { |
11 | 11 | $("#chat-modal-info").modal('show'); |
12 | 12 | |
13 | 13 | $.material.init(); |
14 | + | |
15 | + $('#chat-modal-info').on('shown.bs.modal', function () { | |
16 | + $(".messages-container").each(function () { | |
17 | + var height = $(this)[0].scrollHeight; | |
18 | + | |
19 | + $(this).animate({scrollTop: height}, 0); | |
20 | + }); | |
21 | + }); | |
14 | 22 | } |
15 | 23 | }); |
16 | 24 | } |
... | ... | @@ -43,7 +51,13 @@ function setChatFormSubmit() { |
43 | 51 | dataType: "json", |
44 | 52 | async: false, |
45 | 53 | success: function (data) { |
46 | - $('.messages-container').append(data.view); | |
54 | + $('.messages-list').append(data.view); | |
55 | + | |
56 | + $(".messages-container").each(function () { | |
57 | + var height = $(this)[0].scrollHeight; | |
58 | + | |
59 | + $(this).animate({scrollTop: height}, 0); | |
60 | + }); | |
47 | 61 | |
48 | 62 | $('#chat-modal-form').modal('hide'); |
49 | 63 | ... | ... |
... | ... | @@ -0,0 +1,309 @@ |
1 | +! function(t, e) { | |
2 | + "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.JitsiMeetExternalAPI = e() : t.JitsiMeetExternalAPI = e() | |
3 | +}(this, function() { | |
4 | + return function(t) { | |
5 | + function e(i) { | |
6 | + if (n[i]) return n[i].exports; | |
7 | + var o = n[i] = { | |
8 | + exports: {}, | |
9 | + id: i, | |
10 | + loaded: !1 | |
11 | + }; | |
12 | + return t[i].call(o.exports, o, o.exports, e), o.loaded = !0, o.exports | |
13 | + } | |
14 | + var n = {}; | |
15 | + return e.m = t, e.c = n, e.p = "/libs/", e(0) | |
16 | + }([function(t, e, n) { | |
17 | + (function(e) { | |
18 | + "use strict"; | |
19 | + | |
20 | + function i(t, e) { | |
21 | + t.send(e) | |
22 | + } | |
23 | + | |
24 | + function o(t, e) { | |
25 | + t.numberOfParticipants += e | |
26 | + } | |
27 | + | |
28 | + function r(t, e, n, i, o, r, s, f) { | |
29 | + if ((!n || n < l) && (n = l), (!i || i < h) && (i = h), this.parentNode = null, o) this.parentNode = o; | |
30 | + else { | |
31 | + var p = document.scripts[document.scripts.length - 1]; | |
32 | + this.parentNode = p.parentNode | |
33 | + } | |
34 | + this.iframeHolder = this.parentNode.appendChild(document.createElement("div")), this.iframeHolder.id = "jitsiConference" + u, n && (this.iframeHolder.style.width = "100%"), i && (this.iframeHolder.style.height = "100%"), this.frameName = "jitsiConferenceFrame" + u, this.url = f ? "http" : "https://" + t + "/", e && (this.url += e), this.url += "#jitsi_meet_external_api_id=" + u; | |
35 | + var c; | |
36 | + if (r) | |
37 | + for (c in r) r.hasOwnProperty(c) && "string" == typeof c && (this.url += "&config." + c + "=" + r[c]); | |
38 | + if (s) | |
39 | + for (c in s) s.hasOwnProperty(c) && "string" == typeof c && (this.url += "&interfaceConfig." + c + "=" + s[c]); | |
40 | + this.frame = document.createElement("iframe"), this.frame.src = this.url, this.frame.name = this.frameName, this.frame.id = this.frameName, this.frame.width = "100%", this.frame.height = "100%", this.frame.setAttribute("allowFullScreen", "true"), this.frame = this.iframeHolder.appendChild(this.frame), this.postis = a({ | |
41 | + window: this.frame.contentWindow, | |
42 | + scope: "jitsi_meet_external_api_" + u | |
43 | + }), this.eventHandlers = {}, this.postisListeners = {}, this.numberOfParticipants = 1, this._setupListeners(), u++ | |
44 | + } | |
45 | + var s = n(3).getLogger(e), | |
46 | + a = n(4), | |
47 | + l = 790, | |
48 | + h = 300, | |
49 | + u = 0, | |
50 | + f = { | |
51 | + displayName: "display-name", | |
52 | + toggleAudio: "toggle-audio", | |
53 | + toggleVideo: "toggle-video", | |
54 | + toggleFilmStrip: "toggle-film-strip", | |
55 | + toggleChat: "toggle-chat", | |
56 | + toggleContactList: "toggle-contact-list", | |
57 | + toggleShareScreen: "toggle-share-screen", | |
58 | + hangup: "video-hangup", | |
59 | + email: "email", | |
60 | + avatarUrl: "avatar-url" | |
61 | + }, | |
62 | + p = { | |
63 | + incomingMessage: "incoming-message", | |
64 | + outgoingMessage: "outgoing-message", | |
65 | + displayNameChange: "display-name-change", | |
66 | + participantJoined: "participant-joined", | |
67 | + participantLeft: "participant-left", | |
68 | + videoConferenceJoined: "video-conference-joined", | |
69 | + videoConferenceLeft: "video-conference-left", | |
70 | + readyToClose: "video-ready-to-close" | |
71 | + }; | |
72 | + r.prototype.executeCommand = function(t) { | |
73 | + for (var e = arguments.length, n = Array(e > 1 ? e - 1 : 0), o = 1; o < e; o++) n[o - 1] = arguments[o]; | |
74 | + return t in f ? void i(this.postis, { | |
75 | + method: f[t], | |
76 | + params: n | |
77 | + }) : void s.error("Not supported command name.") | |
78 | + }, r.prototype.executeCommands = function(t) { | |
79 | + for (var e in t) this.executeCommand(e, t[e]) | |
80 | + }, r.prototype.addEventListeners = function(t) { | |
81 | + for (var e in t) this.addEventListener(e, t[e]) | |
82 | + }, r.prototype.addEventListener = function(t, e) { | |
83 | + return t in p ? (this.postisListeners[t] || (this.postis.listen(p[t], function(e) { | |
84 | + t in this.eventHandlers && "function" == typeof this.eventHandlers[t] && this.eventHandlers[t].call(null, e) | |
85 | + }.bind(this)), this.postisListeners[t] = !0), void(this.eventHandlers[t] = e)) : void s.error("Not supported event name.") | |
86 | + }, r.prototype.removeEventListener = function(t) { | |
87 | + return t in this.eventHandlers ? void delete this.eventHandlers[t] : void s.error("The event " + t + " is not registered.") | |
88 | + }, r.prototype.removeEventListeners = function(t) { | |
89 | + for (var e = 0; e < t.length; e++) this.removeEventListener(t[e]) | |
90 | + }, r.prototype.getNumberOfParticipants = function() { | |
91 | + return this.numberOfParticipants | |
92 | + }, r.prototype._setupListeners = function() { | |
93 | + this.postis.listen("participant-joined", o.bind(null, this, 1)), this.postis.listen("participant-left", o.bind(null, this, -1)) | |
94 | + }, r.prototype.dispose = function() { | |
95 | + this.postis.destroy(); | |
96 | + var t = document.getElementById(this.frameName); | |
97 | + t && (t.src = "about:blank"); | |
98 | + var e = this; | |
99 | + window.setTimeout(function() { | |
100 | + e.iframeHolder.removeChild(e.frame), e.iframeHolder.parentNode.removeChild(e.iframeHolder) | |
101 | + }, 10) | |
102 | + }, t.exports = r | |
103 | + }).call(e, "modules/API/external/external_api.js") | |
104 | + }, function(t, e) { | |
105 | + function n() { | |
106 | + var t = { | |
107 | + methodName: "", | |
108 | + fileLocation: "", | |
109 | + line: null, | |
110 | + column: null | |
111 | + }, | |
112 | + e = new Error, | |
113 | + n = e.stack ? e.stack.split("\n") : []; | |
114 | + if (!n || n.length < 1) return t; | |
115 | + var i = null; | |
116 | + return n[3] && (i = n[3].match(/\s*at\s*(.+?)\s*\((\S*)\s*:(\d*)\s*:(\d*)\)/)), !i || i.length <= 4 ? (0 === n[2].indexOf("log@") ? t.methodName = n[3].substr(0, n[3].indexOf("@")) : t.methodName = n[2].substr(0, n[2].indexOf("@")), t) : (t.methodName = i[1], t.fileLocation = i[2], t.line = i[3], t.column = i[4], t) | |
117 | + } | |
118 | + | |
119 | + function i() { | |
120 | + var t = arguments[0], | |
121 | + e = arguments[1], | |
122 | + i = Array.prototype.slice.call(arguments, 2); | |
123 | + if (!(r[e] < t.level)) | |
124 | + for (var o = n(), a = s.concat(t.transports), l = 0; l < a.length; l++) { | |
125 | + var h = a[l], | |
126 | + u = h[e]; | |
127 | + u && "function" == typeof u && u.bind(h, t.id ? "[" + t.id + "]" : "", "<" + o.methodName + ">: ").apply(h, i) | |
128 | + } | |
129 | + } | |
130 | + | |
131 | + function o(t, e, n, o) { | |
132 | + this.id = e, this.format = o, this.transports = n, this.transports || (this.transports = []), this.level = r[t]; | |
133 | + for (var s = Object.keys(r), a = 0; a < s.length; a++) this[s[a]] = i.bind(null, this, s[a]) | |
134 | + } | |
135 | + var r = { | |
136 | + trace: 0, | |
137 | + debug: 1, | |
138 | + info: 2, | |
139 | + log: 3, | |
140 | + warn: 4, | |
141 | + error: 5 | |
142 | + }; | |
143 | + o.consoleTransport = console; | |
144 | + var s = [o.consoleTransport]; | |
145 | + o.addGlobalTransport = function(t) { | |
146 | + s.indexOf(t) === -1 && s.push(t) | |
147 | + }, o.removeGlobalTransport = function(t) { | |
148 | + var e = s.indexOf(t); | |
149 | + e !== -1 && s.splice(e, 1) | |
150 | + }, o.prototype.setLevel = function(t) { | |
151 | + this.level = r[t] | |
152 | + }, t.exports = o, o.levels = { | |
153 | + TRACE: "trace", | |
154 | + DEBUG: "debug", | |
155 | + INFO: "info", | |
156 | + LOG: "log", | |
157 | + WARN: "warn", | |
158 | + ERROR: "error" | |
159 | + } | |
160 | + }, function(t, e, n) { | |
161 | + function i(t, e) { | |
162 | + this.logStorage = t, this.stringifyObjects = !(!e || !e.stringifyObjects) && e.stringifyObjects, this.storeInterval = e && e.storeInterval ? e.storeInterval : 3e4, this.maxEntryLength = e && e.maxEntryLength ? e.maxEntryLength : 1e4, Object.keys(o.levels).forEach(function(t) { | |
163 | + var e = o.levels[t]; | |
164 | + this[e] = function(t) { | |
165 | + this._log.apply(this, arguments) | |
166 | + }.bind(this, t) | |
167 | + }.bind(this)), this.storeLogsIntervalID = null, this.queue = [], this.totalLen = 0, this.outputCache = [] | |
168 | + } | |
169 | + var o = n(1); | |
170 | + i.prototype.stringify = function(t) { | |
171 | + try { | |
172 | + return JSON.stringify(t) | |
173 | + } catch (t) { | |
174 | + return "[object with circular refs?]" | |
175 | + } | |
176 | + }, i.prototype.formatLogMessage = function(t) { | |
177 | + for (var e = "", n = 1, i = arguments.length; n < i; n++) { | |
178 | + var r = arguments[n]; | |
179 | + !this.stringifyObjects && t !== o.levels.ERROR || "object" != typeof r || (r = this.stringify(r)), e += r, n != i - 1 && (e += " ") | |
180 | + } | |
181 | + return e.length ? e : null | |
182 | + }, i.prototype._log = function() { | |
183 | + var t = this.formatLogMessage.apply(this, arguments); | |
184 | + if (t) { | |
185 | + var e = this.queue.length ? this.queue[this.queue.length - 1] : void 0, | |
186 | + n = "object" == typeof e ? e.text : e; | |
187 | + n == t ? "object" == typeof e ? e.count += 1 : this.queue[this.queue.length - 1] = { | |
188 | + text: t, | |
189 | + count: 2 | |
190 | + } : (this.queue.push(t), this.totalLen += t.length) | |
191 | + } | |
192 | + this.totalLen >= this.maxEntryLength && this._flush(!0, !0) | |
193 | + }, i.prototype.start = function() { | |
194 | + this._reschedulePublishInterval() | |
195 | + }, i.prototype._reschedulePublishInterval = function() { | |
196 | + this.storeLogsIntervalID && (window.clearTimeout(this.storeLogsIntervalID), this.storeLogsIntervalID = null), this.storeLogsIntervalID = window.setTimeout(this._flush.bind(this, !1, !0), this.storeInterval) | |
197 | + }, i.prototype.flush = function() { | |
198 | + this._flush(!1, !0) | |
199 | + }, i.prototype._flush = function(t, e) { | |
200 | + this.totalLen > 0 && (this.logStorage.isReady() || t) && (this.logStorage.isReady() ? (this.outputCache.length && (this.outputCache.forEach(function(t) { | |
201 | + this.logStorage.storeLogs(t) | |
202 | + }.bind(this)), this.outputCache = []), this.logStorage.storeLogs(this.queue)) : this.outputCache.push(this.queue), this.queue = [], this.totalLen = 0), e && this._reschedulePublishInterval() | |
203 | + }, i.prototype.stop = function() { | |
204 | + this._flush(!1, !1) | |
205 | + }, t.exports = i | |
206 | + }, function(t, e, n) { | |
207 | + var i = n(1), | |
208 | + o = n(2), | |
209 | + r = {}, | |
210 | + s = [], | |
211 | + a = i.levels.TRACE; | |
212 | + t.exports = { | |
213 | + addGlobalTransport: function(t) { | |
214 | + i.addGlobalTransport(t) | |
215 | + }, | |
216 | + removeGlobalTransport: function(t) { | |
217 | + i.removeGlobalTransport(t) | |
218 | + }, | |
219 | + getLogger: function(t, e, n) { | |
220 | + var o = new i(a, t, e, n); | |
221 | + return t ? (r[t] = r[t] || [], r[t].push(o)) : s.push(o), o | |
222 | + }, | |
223 | + setLogLevelById: function(t, e) { | |
224 | + for (var n = e ? r[e] || [] : s, i = 0; i < n.length; i++) n[i].setLevel(t) | |
225 | + }, | |
226 | + setLogLevel: function(t) { | |
227 | + a = t; | |
228 | + for (var e = 0; e < s.length; e++) s[e].setLevel(t); | |
229 | + for (var n in r) { | |
230 | + var i = r[n] || []; | |
231 | + for (e = 0; e < i.length; e++) i[e].setLevel(t) | |
232 | + } | |
233 | + }, | |
234 | + levels: i.levels, | |
235 | + LogCollector: o | |
236 | + } | |
237 | + }, function(t, e) { | |
238 | + function n(t) { | |
239 | + var e, n = t.scope, | |
240 | + i = t.window, | |
241 | + o = t.windowForEventListening || window, | |
242 | + r = {}, | |
243 | + s = [], | |
244 | + a = {}, | |
245 | + l = !1, | |
246 | + h = "__ready__", | |
247 | + u = function(t) { | |
248 | + var e; | |
249 | + try { | |
250 | + e = JSON.parse(t.data) | |
251 | + } catch (t) { | |
252 | + return | |
253 | + } | |
254 | + if (e.postis && e.scope === n) { | |
255 | + var i = r[e.method]; | |
256 | + if (i) | |
257 | + for (var o = 0; o < i.length; o++) i[o].call(null, e.params); | |
258 | + else a[e.method] = a[e.method] || [], a[e.method].push(e.params) | |
259 | + } | |
260 | + }; | |
261 | + o.addEventListener("message", u, !1); | |
262 | + var f = { | |
263 | + listen: function(t, e) { | |
264 | + r[t] = r[t] || [], r[t].push(e); | |
265 | + var n = a[t]; | |
266 | + if (n) | |
267 | + for (var i = r[t], o = 0; o < i.length; o++) | |
268 | + for (var s = 0; s < n.length; s++) i[o].call(null, n[s]); | |
269 | + delete a[t] | |
270 | + }, | |
271 | + send: function(t) { | |
272 | + var e = t.method; | |
273 | + (l || t.method === h) && i && "function" == typeof i.postMessage ? i.postMessage(JSON.stringify({ | |
274 | + postis: !0, | |
275 | + scope: n, | |
276 | + method: e, | |
277 | + params: t.params | |
278 | + }), "*") : s.push(t) | |
279 | + }, | |
280 | + ready: function(t) { | |
281 | + l ? t() : setTimeout(function() { | |
282 | + f.ready(t) | |
283 | + }, 50) | |
284 | + }, | |
285 | + destroy: function(t) { | |
286 | + clearInterval(e), l = !1, o && "function" == typeof o.removeEventListener && o.removeEventListener("message", u), t && t() | |
287 | + } | |
288 | + }, | |
289 | + p = +new Date + Math.random() + ""; | |
290 | + return e = setInterval(function() { | |
291 | + f.send({ | |
292 | + method: h, | |
293 | + params: p | |
294 | + }) | |
295 | + }, 50), f.listen(h, function(t) { | |
296 | + if (t === p) { | |
297 | + clearInterval(e), l = !0; | |
298 | + for (var n = 0; n < s.length; n++) f.send(s[n]); | |
299 | + s = [] | |
300 | + } else f.send({ | |
301 | + method: h, | |
302 | + params: t | |
303 | + }) | |
304 | + }), f | |
305 | + } | |
306 | + t.exports = n | |
307 | + }]) | |
308 | +}); | |
309 | +//# sourceMappingURL=external_api.min.map | ... | ... |
chat/templates/chat/_message.html
1 | -<div class="col-md-12"> | |
2 | - <p>{{ talk_msg.user }}</p> | |
1 | +<div class="col-md-12 message-view"> | |
2 | + <h4 class="message-user"> | |
3 | + {{ talk_msg.user }} | |
4 | + <span class="message-date"> | |
5 | + ({{ talk_msg.create_date }}) | |
6 | + </span> | |
7 | + <span class="btn-group pull-right"> | |
8 | + <button class="btn btn-sm btn_menu btn_fav" onclick="favorite($(this))" data-url="" data-action="" data-toggle="tooltip" data-placement="top" title=""> | |
9 | + <i class="fa fa-thumb-tack"></i> | |
10 | + </button> | |
11 | + </span> | |
12 | + </h4> | |
3 | 13 | {% autoescape off %} |
4 | 14 | {{ talk_msg.text }} |
5 | 15 | {% endautoescape %} |
16 | + | |
17 | + {% if talk_msg.image %} | |
18 | + <img src="{{ talk_msg.image.url }}" class="img-responsive center-block" /> | |
19 | + {% endif %} | |
6 | 20 | </div> |
7 | 21 | \ No newline at end of file | ... | ... |
chat/templates/chat/list.html
... | ... | @@ -26,10 +26,10 @@ |
26 | 26 | <div class="panel panel-default"> |
27 | 27 | <div class="panel-body"> |
28 | 28 | <div class="col-md-8"> |
29 | - <form action="" method="GET" class="form-horizontal"> | |
29 | + <form action="{% url 'chat:participants_general' %}" method="GET" class="form-horizontal"> | |
30 | 30 | <div class="form-group"> |
31 | 31 | <div class="col-md-11 col-sm-11 col-xs-11"> |
32 | - <input type="text" class="form-control" name="search" placeholder="{% trans 'Search...' %}" /> | |
32 | + <input type="text" class="form-control" name="search" value="{{ search }}" placeholder="{% trans 'Search...' %}" /> | |
33 | 33 | </div> |
34 | 34 | <div class="col-md-1 col-sm-1 col-xs-1"> |
35 | 35 | <button type="submit" class="btn btn-fab btn-fab-mini"> | ... | ... |
chat/templates/chat/list_participants.html
... | ... | @@ -28,10 +28,10 @@ |
28 | 28 | <div class="panel panel-default"> |
29 | 29 | <div class="panel-body"> |
30 | 30 | <div class="col-md-8"> |
31 | - <form action="" method="GET" class="form-horizontal"> | |
31 | + <form action="{% url 'chat:participants_general' %}" method="GET" class="form-horizontal"> | |
32 | 32 | <div class="form-group"> |
33 | 33 | <div class="col-md-11 col-sm-11 col-xs-11"> |
34 | - <input type="text" class="form-control" name="search" placeholder="{% trans 'Search...' %}" /> | |
34 | + <input type="text" class="form-control" name="search" value="{{ search }}" placeholder="{% trans 'Search...' %}" /> | |
35 | 35 | </div> |
36 | 36 | <div class="col-md-1 col-sm-1 col-xs-1"> |
37 | 37 | <button type="submit" class="btn btn-fab btn-fab-mini"> | ... | ... |
chat/templates/chat/talk.html
... | ... | @@ -39,9 +39,9 @@ |
39 | 39 | </div> |
40 | 40 | <div class="row-fluid"> |
41 | 41 | <div class="messages-container"> |
42 | - {% for talk_msg in messages %} | |
43 | - {% include 'chat/_message.html' %} | |
44 | - {% endfor %} | |
42 | + <div class="messages-list"> | |
43 | + {% include 'chat/_list_messages.html' %} | |
44 | + </div> | |
45 | 45 | </div> |
46 | 46 | </div> |
47 | 47 | </div> |
... | ... | @@ -60,4 +60,4 @@ |
60 | 60 | </div> |
61 | 61 | </div> |
62 | 62 | </div> |
63 | 63 | -</div> |
64 | +</div> | |
64 | 65 | \ No newline at end of file | ... | ... |
chat/views.py
... | ... | @@ -60,8 +60,9 @@ class GeneralParticipants(LoginRequiredMixin, generic.ListView): |
60 | 60 | |
61 | 61 | def get_queryset(self): |
62 | 62 | user = self.request.user |
63 | + search = self.request.GET.get('search', '') | |
63 | 64 | |
64 | - users = User.objects.all().exclude(id = user.id).order_by('social_name','username') | |
65 | + users = User.objects.filter(Q(username__icontains = search) | Q(last_name__icontains = search) | Q(social_name__icontains = search) | Q(email__icontains = search)).distinct().order_by('social_name','username').exclude(email = user.email) | |
65 | 66 | |
66 | 67 | self.totals['general'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__generaltalk__isnull = False).count() |
67 | 68 | self.totals['category'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__categorytalk__isnull = False).count() |
... | ... | @@ -74,6 +75,7 @@ class GeneralParticipants(LoginRequiredMixin, generic.ListView): |
74 | 75 | |
75 | 76 | context['title'] = _('Messages - Participants') |
76 | 77 | context['totals'] = self.totals |
78 | + context['search'] = self.request.GET.get('search') | |
77 | 79 | context['chat_menu_active'] = 'subjects_menu_active' |
78 | 80 | |
79 | 81 | return context | ... | ... |
... | ... | @@ -0,0 +1,39 @@ |
1 | +<!DOCTYPE html> | |
2 | +{% load static i18n %} | |
3 | +<html> | |
4 | + <head> | |
5 | + <meta charset="utf-8"> | |
6 | + <title>{% trans "Web Conference" %}</title> | |
7 | + <script type="text/javascript" src="{% static 'js/jquery-3.1.0.min.js' %}"></script> | |
8 | + <!-- <script src="https://meet.jit.si/external_api.js"></script> --> | |
9 | + <script src="{% static 'js/jitsi.js' %}"></script> | |
10 | + <style> | |
11 | + body, html, #jitsi, iframe{ | |
12 | + margin-left: -1px; | |
13 | + margin-right: 0px; | |
14 | + margin-top: -2px; | |
15 | + margin-bottom: -1px; | |
16 | + padding: 0px; | |
17 | + width: 100%; | |
18 | + min-height: 100%; | |
19 | + height: 100%; | |
20 | + } | |
21 | + </style> | |
22 | + </head> | |
23 | + <body> | |
24 | + <div id="jitsi"> | |
25 | + | |
26 | + </div> | |
27 | + | |
28 | + <script> | |
29 | + // code to start jitsi api | |
30 | + var domain = "meet.jit.si"; // domain that jitsi will itself connect | |
31 | + var room = "{{name_room}}"; // name of the room to be created | |
32 | + var width = $("body").width(); // width of the window to be created | |
33 | + var height = $("body").height(); // height of the window to be created | |
34 | + var html = document.getElementById("jitsi"); | |
35 | + var api = new JitsiMeetExternalAPI(domain, room, width, height,html); | |
36 | + </script> | |
37 | + | |
38 | + </body> | |
39 | +</html> | ... | ... |
webconference/templates/webconference/view.html
... | ... | @@ -65,7 +65,7 @@ |
65 | 65 | <!-- Button to join in web conference --> |
66 | 66 | <div class="row"> |
67 | 67 | <div class="text-center"> |
68 | - <a href="#" class="btn btn-raised btn-success">{% trans "Participate" %}</a> | |
68 | + <a href="{% url 'webconferences:conference' webconference.slug %}" class="btn btn-raised btn-success">{% trans "Participate" %}</a> | |
69 | 69 | </div> |
70 | 70 | </div> |
71 | 71 | {% endif %} | ... | ... |
webconference/urls.py
1 | 1 | from django.conf.urls import url |
2 | 2 | from django.contrib.auth import views as auth_views |
3 | +from django.views.generic import TemplateView | |
3 | 4 | |
4 | 5 | from . import views |
5 | 6 | |
... | ... | @@ -9,4 +10,5 @@ urlpatterns = [ |
9 | 10 | url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteView.as_view(), name = 'delete'), |
10 | 11 | url(r'^window_view/(?P<slug>[\w_-]+)/$', views.NewWindowView.as_view(), name = 'window_view'), |
11 | 12 | url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), |
13 | + url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'), | |
12 | 14 | ] | ... | ... |
webconference/views.py
... | ... | @@ -65,6 +65,20 @@ class NewWindowView(LoginRequiredMixin, |
65 | 65 | |
66 | 66 | return context |
67 | 67 | |
68 | +class Conference(LoginRequiredMixin,generic.TemplateView): | |
69 | + | |
70 | + login_url = reverse_lazy("users:login") | |
71 | + redirect_field_name = 'next' | |
72 | + | |
73 | + template_name = 'webconference/jitsi.html' | |
74 | + | |
75 | + | |
76 | + def get_context_data(self, **kwargs): | |
77 | + context = super(Conference, self).get_context_data(**kwargs) | |
78 | + context['name_room'] = kwargs.get('slug') | |
79 | + return context | |
80 | + | |
81 | + | |
68 | 82 | class InsideView(LoginRequiredMixin, |
69 | 83 | # '''LogMixin,''' |
70 | 84 | generic.DetailView): | ... | ... |