Move escaping of topic and improve UI for long topics

- Data should be handled as is and only do the escaping on
the view/template or wherever it is used and escaping is necessary.
Keeps things simple and the focus of escaping values in the right place.
- Remove topic capitalization
- For long topics: hide overflow and add a title to topic span
- Also, simplify the code a tiny bit.
This commit is contained in:
Olli Mäntylä 2015-04-27 01:20:54 +03:00
parent dc79d71ae5
commit 4293336f3e
3 changed files with 10 additions and 11 deletions

View File

@ -403,16 +403,14 @@ button {
line-height: 50px !important; line-height: 50px !important;
height: 48px; height: 48px;
padding: 0 20px; padding: 0 20px;
overflow: hidden;
} }
#windows .header .title { #windows .header .title {
font: 14px Lato; font: 14px Lato;
} }
#windows .header .topic { #windows .header .topic {
/* Hidden for now */
display: none;
color: #777; color: #777;
margin-left: 8px; margin-left: 8px;
text-transform: capitalize;
} }
#windows .header .right { #windows .header .right {
float: right; float: right;

View File

@ -315,7 +315,11 @@ $(function() {
}); });
socket.on("topic", function(data) { socket.on("topic", function(data) {
$("#chan-" + data.chan).find(".header .topic").html(data.topic); // .text() escapes HTML but not quotes. That only matters with text inside attributes.
var topic = $("#chan-" + data.chan).find(".header .topic");
topic.text(data.topic);
// .attr() is safe escape-wise but consider the capabilities of the attribute
topic.attr("title", data.topic);
}); });
socket.on("users", function(data) { socket.on("users", function(data) {

View File

@ -9,27 +9,24 @@ module.exports = function(irc, network) {
return; return;
} }
var from = data.nick || chan.name; var from = data.nick || chan.name;
var self = false;
if (from.toLowerCase() == irc.me.toLowerCase()) {
self = true;
}
var topic = data.topic; var topic = data.topic;
var msg = new Msg({ var msg = new Msg({
type: Msg.Type.TOPIC, type: Msg.Type.TOPIC,
mode: chan.getMode(from), mode: chan.getMode(from),
from: from, from: from,
text: topic, text: topic,
self: self self: (from.toLowerCase() === irc.me.toLowerCase())
}); });
chan.messages.push(msg); chan.messages.push(msg);
client.emit("msg", { client.emit("msg", {
chan: chan.id, chan: chan.id,
msg: msg msg: msg
}); });
chan.topic = topic chan.topic = topic;
client.emit("topic", { client.emit("topic", {
chan: chan.id, chan: chan.id,
topic: _.escape(topic) topic: chan.topic
}); });
}); });
}; };