aboutsummaryrefslogtreecommitdiff
path: root/src/mod_muc_log.erl
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-09-23 15:17:20 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-09-23 15:17:20 +0300
commit5770946f03ba669ea867b787fbd546333a8a3814 (patch)
tree73a03717ac5d4c31e12b92c1aba3b407f3c5329c /src/mod_muc_log.erl
parentFix unicode formatting in ACME module (diff)
Correctly handle unicode in log messages
Diffstat (limited to '')
-rw-r--r--src/mod_muc_log.erl88
1 files changed, 44 insertions, 44 deletions
diff --git a/src/mod_muc_log.erl b/src/mod_muc_log.erl
index 676498724..b20d94935 100644
--- a/src/mod_muc_log.erl
+++ b/src/mod_muc_log.erl
@@ -257,26 +257,26 @@ write_last_lines(F, Images_dir, _FileFormat) ->
fw(F, <<"<div class=\"legend\">">>),
fw(F,
<<" <a href=\"http://www.ejabberd.im\"><img "
- "style=\"border:0\" src=\"~s/powered-by-ejabbe"
+ "style=\"border:0\" src=\"~ts/powered-by-ejabbe"
"rd.png\" alt=\"Powered by ejabberd - robust, scalable and extensible XMPP server\"/></a>">>,
[Images_dir]),
fw(F,
<<" <a href=\"http://www.erlang.org/\"><img "
- "style=\"border:0\" src=\"~s/powered-by-erlang"
+ "style=\"border:0\" src=\"~ts/powered-by-erlang"
".png\" alt=\"Powered by Erlang\"/></a>">>,
[Images_dir]),
fw(F, <<"<span class=\"w3c\">">>),
fw(F,
<<" <a href=\"http://validator.w3.org/check?uri"
"=referer\"><img style=\"border:0;width:88px;h"
- "eight:31px\" src=\"~s/valid-xhtml10.png\" "
+ "eight:31px\" src=\"~ts/valid-xhtml10.png\" "
"alt=\"Valid XHTML 1.0 Transitional\" "
"/></a>">>,
[Images_dir]),
fw(F,
<<" <a href=\"http://jigsaw.w3.org/css-validato"
"r/\"><img style=\"border:0;width:88px;height:"
- "31px\" src=\"~s/vcss.png\" alt=\"Valid "
+ "31px\" src=\"~ts/vcss.png\" alt=\"Valid "
"CSS!\"/></a>">>,
[Images_dir]),
fw(F, <<"</span></div></body></html>">>).
@@ -345,7 +345,7 @@ add_message_to_log(Nick1, Message, RoomJID, Opts,
RoomConfig = roomconfig_to_string(Room#room.config,
Lang, FileFormat),
put_room_config(F, RoomConfig, Lang, FileFormat),
- io_lib:format("<font class=\"mrcm\">~s</font><br/>",
+ io_lib:format("<font class=\"mrcm\">~ts</font><br/>",
[tr(Lang, ?T("Chatroom configuration modified"))]);
{roomconfig_change, Occupants} ->
RoomConfig = roomconfig_to_string(Room#room.config,
@@ -354,70 +354,70 @@ add_message_to_log(Nick1, Message, RoomJID, Opts,
RoomOccupants = roomoccupants_to_string(Occupants,
FileFormat),
put_room_occupants(F, RoomOccupants, Lang, FileFormat),
- io_lib:format("<font class=\"mrcm\">~s</font><br/>",
+ io_lib:format("<font class=\"mrcm\">~ts</font><br/>",
[tr(Lang, ?T("Chatroom configuration modified"))]);
join ->
- io_lib:format("<font class=\"mj\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mj\">~ts ~ts</font><br/>",
[Nick, tr(Lang, ?T("joins the room"))]);
leave ->
- io_lib:format("<font class=\"ml\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"ml\">~ts ~ts</font><br/>",
[Nick, tr(Lang, ?T("leaves the room"))]);
{leave, Reason} ->
- io_lib:format("<font class=\"ml\">~s ~s: ~s</font><br/>",
+ io_lib:format("<font class=\"ml\">~ts ~ts: ~ts</font><br/>",
[Nick, tr(Lang, ?T("leaves the room")),
htmlize(Reason, NoFollow, FileFormat)]);
{kickban, 301, <<"">>} ->
- io_lib:format("<font class=\"mb\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mb\">~ts ~ts</font><br/>",
[Nick, tr(Lang, ?T("has been banned"))]);
{kickban, 301, Reason} ->
- io_lib:format("<font class=\"mb\">~s ~s: ~s</font><br/>",
+ io_lib:format("<font class=\"mb\">~ts ~ts: ~ts</font><br/>",
[Nick, tr(Lang, ?T("has been banned")),
htmlize(Reason, FileFormat)]);
{kickban, 307, <<"">>} ->
- io_lib:format("<font class=\"mk\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mk\">~ts ~ts</font><br/>",
[Nick, tr(Lang, ?T("has been kicked"))]);
{kickban, 307, Reason} ->
- io_lib:format("<font class=\"mk\">~s ~s: ~s</font><br/>",
+ io_lib:format("<font class=\"mk\">~ts ~ts: ~ts</font><br/>",
[Nick, tr(Lang, ?T("has been kicked")),
htmlize(Reason, FileFormat)]);
{kickban, 321, <<"">>} ->
- io_lib:format("<font class=\"mk\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mk\">~ts ~ts</font><br/>",
[Nick,
tr(Lang, ?T("has been kicked because of an affiliation "
"change"))]);
{kickban, 322, <<"">>} ->
- io_lib:format("<font class=\"mk\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mk\">~ts ~ts</font><br/>",
[Nick,
tr(Lang, ?T("has been kicked because the room has "
"been changed to members-only"))]);
{kickban, 332, <<"">>} ->
- io_lib:format("<font class=\"mk\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mk\">~ts ~ts</font><br/>",
[Nick,
tr(Lang, ?T("has been kicked because of a system "
"shutdown"))]);
{nickchange, OldNick} ->
- io_lib:format("<font class=\"mnc\">~s ~s ~s</font><br/>",
+ io_lib:format("<font class=\"mnc\">~ts ~ts ~ts</font><br/>",
[htmlize(OldNick, FileFormat),
tr(Lang, ?T("is now known as")), Nick]);
{subject, T} ->
- io_lib:format("<font class=\"msc\">~s~s~s</font><br/>",
+ io_lib:format("<font class=\"msc\">~ts~ts~ts</font><br/>",
[Nick, tr(Lang, ?T(" has set the subject to: ")),
htmlize(T, NoFollow, FileFormat)]);
{body, T} ->
case {ejabberd_regexp:run(T, <<"^/me ">>), Nick} of
{_, <<"">>} ->
- io_lib:format("<font class=\"msm\">~s</font><br/>",
+ io_lib:format("<font class=\"msm\">~ts</font><br/>",
[htmlize(T, NoFollow, FileFormat)]);
{match, _} ->
- io_lib:format("<font class=\"mne\">~s ~s</font><br/>",
+ io_lib:format("<font class=\"mne\">~ts ~ts</font><br/>",
[Nick,
str:substr(htmlize(T, FileFormat), 5)]);
{nomatch, _} ->
- io_lib:format("<font class=\"mn\">~s</font> ~s<br/>",
+ io_lib:format("<font class=\"mn\">~ts</font> ~ts<br/>",
[Nick2, htmlize(T, NoFollow, FileFormat)])
end;
{room_existence, RoomNewExistence} ->
- io_lib:format("<font class=\"mrcm\">~s</font><br/>",
+ io_lib:format("<font class=\"mrcm\">~ts</font><br/>",
[get_room_existence_string(RoomNewExistence,
Lang)])
end,
@@ -425,12 +425,12 @@ add_message_to_log(Nick1, Message, RoomJID, Opts,
STime = io_lib:format("~2..0w:~2..0w:~2..0w",
[Hour, Minute, Second]),
{_, _, Microsecs} = Now,
- STimeUnique = io_lib:format("~s.~w",
+ STimeUnique = io_lib:format("~ts.~w",
[STime, Microsecs]),
catch fw(F,
list_to_binary(
- io_lib:format("<a id=\"~s\" name=\"~s\" href=\"#~s\" "
- "class=\"ts\">[~s]</a> ",
+ io_lib:format("<a id=\"~ts\" name=\"~ts\" href=\"#~ts\" "
+ "class=\"ts\">[~ts]</a> ",
[STimeUnique, STimeUnique, STimeUnique, STime])
++ Text),
FileFormat),
@@ -477,12 +477,12 @@ get_dateweek(Date, Lang) ->
list_to_binary(
case Lang of
<<"en">> ->
- io_lib:format("~s, ~s ~w, ~w", [Weekday, Month, D, Y]);
+ io_lib:format("~ts, ~ts ~w, ~w", [Weekday, Month, D, Y]);
<<"es">> ->
- io_lib:format("~s ~w de ~s de ~w",
+ io_lib:format("~ts ~w de ~ts de ~w",
[Weekday, D, Month, Y]);
_ ->
- io_lib:format("~s, ~w ~s ~w", [Weekday, D, Month, Y])
+ io_lib:format("~ts, ~w ~ts ~w", [Weekday, D, Month, Y])
end).
make_dir_rec(Dir) ->
@@ -504,7 +504,7 @@ create_image_files(Images_dir) ->
case file:copy(Src, Dst) of
{ok, _} -> ok;
{error, Why} ->
- ?ERROR_MSG("Failed to copy ~s to ~s: ~s",
+ ?ERROR_MSG("Failed to copy ~ts to ~ts: ~ts",
[Src, Dst, file:format_error(Why)])
end
end, Filenames).
@@ -537,13 +537,13 @@ put_header(F, Room, Date, CSSFile, Lang, Hour_offset,
"org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">">>),
fw(F,
<<"<html xmlns=\"http://www.w3.org/1999/xhtml\" "
- "xml:lang=\"~s\" lang=\"~s\">">>,
+ "xml:lang=\"~ts\" lang=\"~ts\">">>,
[Lang, Lang]),
fw(F, <<"<head>">>),
fw(F,
<<"<meta http-equiv=\"Content-Type\" content=\"t"
"ext/html; charset=utf-8\" />">>),
- fw(F, <<"<title>~s - ~s</title>">>,
+ fw(F, <<"<title>~ts - ~ts</title>">>,
[htmlize(Room#room.title), Date]),
put_header_css(F, CSSFile),
put_header_script(F),
@@ -554,19 +554,19 @@ put_header(F, Room, Date, CSSFile, Lang, Hour_offset,
<<"<div style=\"text-align: right;\"><a "
"style=\"color: #AAAAAA; font-family: "
"monospace; text-decoration: none; font-weight"
- ": bold;\" href=\"~s\">~s</a></div>">>,
+ ": bold;\" href=\"~ts\">~ts</a></div>">>,
[Top_url, Top_text]),
- fw(F, <<"<div class=\"roomtitle\">~s</div>">>,
+ fw(F, <<"<div class=\"roomtitle\">~ts</div>">>,
[htmlize(Room#room.title)]),
fw(F,
- <<"<a class=\"roomjid\" href=\"xmpp:~s?join\">~s"
+ <<"<a class=\"roomjid\" href=\"xmpp:~ts?join\">~ts"
"</a>">>,
[Room#room.jid, Room#room.jid]),
fw(F,
- <<"<div class=\"logdate\">~s<span class=\"w3c\">"
- "<a class=\"nav\" href=\"~s\">&lt;</a> "
+ <<"<div class=\"logdate\">~ts<span class=\"w3c\">"
+ "<a class=\"nav\" href=\"~ts\">&lt;</a> "
"<a class=\"nav\" href=\"./\">^</a> <a "
- "class=\"nav\" href=\"~s\">&gt;</a></span></di"
+ "class=\"nav\" href=\"~ts\">&gt;</a></span></di"
"v>">>,
[Date, Date_prev, Date_next]),
case {htmlize(Room#room.subject_author),
@@ -574,7 +574,7 @@ put_header(F, Room, Date, CSSFile, Lang, Hour_offset,
of
{<<"">>, <<"">>} -> ok;
{SuA, Su} ->
- fw(F, <<"<div class=\"roomsubject\">~s~s~s</div>">>,
+ fw(F, <<"<div class=\"roomsubject\">~ts~ts~ts</div>">>,
[SuA, tr(Lang, ?T(" has set the subject to: ")), Su])
end,
RoomConfig = roomconfig_to_string(Room#room.config,
@@ -588,7 +588,7 @@ put_header(F, Room, Date, CSSFile, Lang, Hour_offset,
true -> io_lib:format("~p", [Hour_offset]);
false -> io_lib:format("+~p", [Hour_offset])
end,
- fw(F, <<"<br/><a class=\"ts\">GMT~s</a><br/>">>,
+ fw(F, <<"<br/><a class=\"ts\">GMT~ts</a><br/>">>,
[Time_offset_str]).
put_header_css(F, {file, Path}) ->
@@ -603,7 +603,7 @@ put_header_css(F, {file, Path}) ->
put_header_css(F, {url, URL}) ->
fw(F,
<<"<link rel=\"stylesheet\" type=\"text/css\" "
- "href=\"~s\" media=\"all\">">>,
+ "href=\"~ts\" media=\"all\">">>,
[URL]).
put_header_script(F) ->
@@ -621,11 +621,11 @@ put_room_config(F, RoomConfig, Lang, _FileFormat) ->
fw(F, <<"<div class=\"rc\">">>),
fw(F,
<<"<div class=\"rct\" onclick=\"sh('a~p');return "
- "false;\">~s</div>">>,
+ "false;\">~ts</div>">>,
[Now2, tr(Lang, ?T("Room Configuration"))]),
fw(F,
<<"<div class=\"rcos\" id=\"a~p\" style=\"displa"
- "y: none;\" ><br/>~s</div>">>,
+ "y: none;\" ><br/>~ts</div>">>,
[Now2, RoomConfig]),
fw(F, <<"</div>">>).
@@ -641,11 +641,11 @@ put_room_occupants(F, RoomOccupants, Lang,
fw(F, <<"<div class=\"rc\">">>),
fw(F,
<<"<div class=\"rct\" onclick=\"sh('o~p');return "
- "false;\">~s</div>">>,
+ "false;\">~ts</div>">>,
[Now2, tr(Lang, ?T("Room Occupants"))]),
fw(F,
<<"<div class=\"rcos\" id=\"o~p\" style=\"displa"
- "y: none;\" ><br/>~s</div>">>,
+ "y: none;\" ><br/>~ts</div>">>,
[Now2, RoomOccupants]),
fw(F, <<"</div>">>).