diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php index 451c39ba302e1702bb255a2079c6872318c16719..7c825c979cec0e818c6368d3a7aa09aa90de15b2 100644 --- a/database/backends/PostgresSmartBackend.php +++ b/database/backends/PostgresSmartBackend.php @@ -39,6 +39,7 @@ class PostgresSmartBackend implements Backend ranked_messages.buffername, ranked_messages.networkname, ranked_messages.messageid, + ranked_messages.type, ranked_messages.time, ranked_messages.sender, ts_headline(replace(replace(ranked_messages.message, '<', '<'), '>', '>'), query, 'HighlightAll=TRUE') AS message @@ -64,6 +65,7 @@ class PostgresSmartBackend implements Backend buffer.buffername, buffer.networkid, backlog.senderid, + backlog.type, backlog.time, backlog.message, query, @@ -138,6 +140,7 @@ class PostgresSmartBackend implements Backend buffer.buffername, buffer.networkid, backlog.senderid, + backlog.type, backlog.time, backlog.message, query, @@ -199,6 +202,7 @@ class PostgresSmartBackend implements Backend backlog.bufferid, buffer.buffername, sender.sender, + backlog.type, backlog.time, network.networkname, replace(replace(replace(backlog.message, '&', '&'), '<', '<'), '>', '>') AS message @@ -222,6 +226,7 @@ class PostgresSmartBackend implements Backend backlog.bufferid, buffer.buffername, sender.sender, + backlog.type, backlog.time, network.networkname, replace(replace(replace(backlog.message, '&', '&'), '<', '<'), '>', '>') AS message diff --git a/res/css/_content.sass b/res/css/_content.sass index 93b6bfe4f4c54cf0780b7852103cce34ebf2039c..9e279a671b2d0281422cb693f5ede47059d59bcd 100644 --- a/res/css/_content.sass +++ b/res/css/_content.sass @@ -320,4 +320,25 @@ display: inline span - vertical-align: top \ No newline at end of file + vertical-align: top + &.action + .sender, .content + font-style: italic + + .sender + &:before + content: ' -*- ' + color: #1a237e + + .content + color: #1a237e + + &.notice + .content, .sender + color: #916409 + + .sender + &:before + content: '[' + &:after + content: ']' \ No newline at end of file diff --git a/res/css/search.css b/res/css/search.css index 03156aadbd698abc4c16603ab493bfba5096c588..b08e97fc3cc8931ea1d03d7d792ae6dacc0dc7dd 100644 --- a/res/css/search.css +++ b/res/css/search.css @@ -1188,3 +1188,16 @@ body { display: inline; } .results .buffer .container .context .message .container .content span { vertical-align: top; } } + .results .buffer .container .context .message.action .sender, .results .buffer .container .context .message.action .content { + font-style: italic; } + .results .buffer .container .context .message.action .sender:before { + content: ' -*- '; + color: #1a237e; } + .results .buffer .container .context .message.action .content { + color: #1a237e; } + .results .buffer .container .context .message.notice .content, .results .buffer .container .context .message.notice .sender { + color: #916409; } + .results .buffer .container .context .message.notice .sender:before { + content: '['; } + .results .buffer .container .context .message.notice .sender:after { + content: ']'; } diff --git a/res/js/component/app.js b/res/js/component/app.js index 457a45ec01acda94b6a8b62353e542b93e63c020..d56ee1cc7001c3434443ac8344c4bf62462c757b 100644 --- a/res/js/component/app.js +++ b/res/js/component/app.js @@ -45,7 +45,7 @@ class App { return; this.buffers = result.map(buffer => { return new Buffer(buffer.bufferid, buffer.buffername, buffer.networkname, buffer.hasmore, buffer.messages.map(msg => { - return new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message, true)); + return new Context(new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message, true)); })); }); this.buffers.forEach(buffer => this.insert(buffer)); @@ -99,7 +99,7 @@ class App { after: 0, before: 10 })).then(result => { - context.loadBefore(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadBefore(result.map(msg => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } @@ -113,7 +113,7 @@ class App { after: 10, before: 0 })).then(result => { - context.loadAfter(result.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadAfter(result.map(msg => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } @@ -129,8 +129,8 @@ class App { })).then(result => { const before = result.filter(msg => msg.messageid < context.anchorBefore); const after = result.filter(msg => msg.messageid > context.anchorAfter); - context.loadBefore(before.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); - context.loadAfter(after.map(msg => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadBefore(before.map(msg => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); + context.loadAfter(after.map(msg => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } diff --git a/res/js/component/app.jsx b/res/js/component/app.jsx index bc70e0278b4621ee56328bd4a9aa73cc0d3fd539..115694d047d04e651e87b2919fe568210d634dde 100644 --- a/res/js/component/app.jsx +++ b/res/js/component/app.jsx @@ -49,7 +49,7 @@ class App { this.buffers = result.map((buffer) => { return new Buffer(buffer.bufferid, buffer.buffername, buffer.networkname, buffer.hasmore, buffer.messages.map((msg) => { - return new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message, true)); + return new Context(new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message, true)); })); }); this.buffers.forEach((buffer) => this.insert(buffer)); @@ -107,7 +107,7 @@ class App { after: 0, before: 10 })).then((result) => { - context.loadBefore(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadBefore(result.map((msg) => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } @@ -123,7 +123,7 @@ class App { after: 10, before: 0 })).then((result) => { - context.loadAfter(result.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadAfter(result.map((msg) => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } @@ -142,8 +142,8 @@ class App { const before = result.filter((msg) => msg.messageid < context.anchorBefore); const after = result.filter((msg) => msg.messageid > context.anchorAfter); - context.loadBefore(before.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); - context.loadAfter(after.map((msg) => new Message(msg.messageid, msg.time, msg.sender, msg.message))); + context.loadBefore(before.map((msg) => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); + context.loadAfter(after.map((msg) => new Message(msg.messageid, msg.type, msg.time, msg.sender, msg.message))); context.setLoading(false); }); } diff --git a/res/js/component/message.js b/res/js/component/message.js index c6c33a1555e1a8426dd3f09af74bc3f439505f5b..c8501ca84f543d4fb7c76d43672510f656701b65 100644 --- a/res/js/component/message.js +++ b/res/js/component/message.js @@ -1,7 +1,8 @@ class Message extends Component { - constructor(id, time, sender, content, isAnchor) { + constructor(id, type, time, sender, content, isAnchor) { super(); this.id = id; + this.type = type; this.time = time; this.sender = sender; this.content = content; @@ -9,9 +10,14 @@ class Message extends Component { this.render(); } render() { + const classes = ['message']; + if ((this.type & 2) !== 0) + classes.push('notice'); + if ((this.type & 4) !== 0) + classes.push('action'); return this.elem = function () { var $$a = document.createElement('span'); - $$a.setAttribute('class', 'message'); + $$a.setAttribute('class', classes.join(' ')); var $$b = document.createElement('span'); $$a.appendChild($$b); var $$c = document.createElement('time'); diff --git a/res/js/component/message.jsx b/res/js/component/message.jsx index bb03d6af99361f86e75200b7838530e29eef4da6..cfad04c139ccced2e73937bd5cb05e238e6354cb 100644 --- a/res/js/component/message.jsx +++ b/res/js/component/message.jsx @@ -1,8 +1,9 @@ class Message extends Component { - constructor(id, time, sender, content, isAnchor) { + constructor(id, type, time, sender, content, isAnchor) { super(); this.id = id; + this.type = type; this.time = time; this.sender = sender; this.content = content; @@ -12,8 +13,14 @@ class Message extends Component { } render() { + const classes = ["message"]; + if ((this.type & 0x00000002) !== 0) + classes.push("notice"); + if ((this.type & 0x00000004) !== 0) + classes.push("action"); + return this.elem = ( - <span className="message"> + <span className={classes.join(" ")}> <span><time>{this.formatTime()}</time></span> <span className="container"> <span className="sender" data-sendercolor={SenderColorHandler.nickToColor(this.getNick())}>