Software /
code /
prosody-modules
Changeset
5581:df483d9056f5
mod_http_muc_log: Hide joins and parts by default
Now both ?p=s(how) and ?p=h(ide) are understood and propagated trough
links, with unset being being hide.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 28 Jun 2023 21:47:22 +0200 |
parents | 5580:feadbd481285 |
children | 5582:825c6fb76c48 |
files | mod_http_muc_log/mod_http_muc_log.lua mod_http_muc_log/res/http_muc_log.html |
diffstat | 2 files changed, 43 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_http_muc_log/mod_http_muc_log.lua Mon Jun 26 00:19:05 2023 +0200 +++ b/mod_http_muc_log/mod_http_muc_log.lua Wed Jun 28 21:47:22 2023 +0200 @@ -128,17 +128,42 @@ local presence_logged = module:get_option_boolean("muc_log_presences", false); -local function hide_presence(request) +local function show_presence(request) --> boolean|nil + -- boolean -> yes or no + -- nil -> dunno if not presence_logged then - return false; + -- No presence stored, skip + return nil; end if request.url.query then local data = httplib.formdecode(request.url.query); - if data then - return data.p == "h" + if type(data) == "table" then + if data.p == "s" or data.p == "h" then + return data.p == "s"; + end end end - return false; +end + +local function presence_with(request) + local show = show_presence(request); + if show == true then + return nil; -- no filter, everything + elseif show == false or show == nil then + -- only messages + return "message<groupchat"; + end +end + +local function presence_query(request) -- > ?p=[sh] + local show = show_presence(request); + if show == true then + return { p = "s" } + elseif show == false then + return { p = "h" } + else + return nil; + end end local function get_dates(room) --> { integer, ... } @@ -254,7 +279,8 @@ room = room_obj._data; jid = room_obj.jid; jid_node = jid_split(room_obj.jid); - hide_presence = hide_presence(request); + q = presence_query(request); + show_presence = show_presence(request); presence_available = presence_logged; dates = date_list; links = { @@ -300,7 +326,7 @@ local iter, err = archive:find(room, { ["start"] = day_start; ["end"] = day_start + 86399; - ["with"] = hide_presence(request) and "message<groupchat" or nil; + ["with"] = presence_with(request); }); if not iter then module:log("warn", "Could not search archive: %s", err or "no error"); @@ -475,7 +501,8 @@ room = room_obj._data; jid = room_obj.jid; jid_node = jid_split(room_obj.jid); - hide_presence = hide_presence(request); + q = presence_query(request); + show_presence = show_presence(request); presence_available = presence_logged; lang = room_obj.get_language and room_obj:get_language(); lines = logs; @@ -524,7 +551,8 @@ static = "./@static"; title = module:get_option_string("name", "Prosody Chatrooms"); jid = module.host; - hide_presence = hide_presence(request); + q = presence_query(request); + show_presence = show_presence(request); presence_available = presence_logged; rooms = room_list; dates = {}; -- COMPAT util.interpolation {nil|func#...} bug
--- a/mod_http_muc_log/res/http_muc_log.html Mon Jun 26 00:19:05 2023 +0200 +++ b/mod_http_muc_log/res/http_muc_log.html Wed Jun 28 21:47:22 2023 +0200 @@ -19,7 +19,7 @@ <li class="button"><a href="{room.webchat_url}">Join via web</a></li> } {links# -<li><a class="{item.rel?}" href="{item.href}{hide_presence&?p=h}" rel="{item.rel?}">{item.text}</a></li>} +<li><a class="{item.rel?}" href="{item.href}{q&?{q%{idx}={item}}}" rel="{item.rel?}">{item.text}</a></li>} </ul> </nav> </header> @@ -28,7 +28,7 @@ <nav> <dl class="room-list"> {rooms# -<dt {item.lang&lang="{item.lang}"} class="name"><a href="{item.href}{hide_presence&?p=h}">{item.name}</a></dt> +<dt {item.lang&lang="{item.lang}"} class="name"><a href="{item.href}{q&?{q%{idx}={item}}}">{item.name}</a></dt> <dd {item.lang&lang="{item.lang}"} class="description">{item.description?}</dd>} </dl> {dates|calendarize# @@ -38,7 +38,7 @@ <caption>{item.month}</caption> <thead><tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr></thead> <tbody>{item.weeks# -<tr>{item.days#<td>{item.href&<a href="{item.href}{hide_presence&?p=h}">}<span>{item.day? }</span>{item.href&</a>}</td>}</tr>} +<tr>{item.days#<td>{item.href&<a href="{item.href}{q&?{q%{idx}={item}}}">}<span>{item.day? }</span>{item.href&</a>}</td>}</tr>} </tbody> </table> } @@ -48,8 +48,8 @@ <div> {presence_available&<form> <label> -<input name="p" value="h" type="checkbox"{hide_presence& checked}> -<span>Hide joins and parts</span> + <input name="p" value="s" type="checkbox"{show_presence& checked}> +<span>show joins and parts</span> </label> <noscript> <button type="submit">Apply</button> @@ -72,7 +72,7 @@ <footer> <nav> <ul>{links# -<li><a class="{item.rel?}" href="{item.href}{hide_presence&?p=h}" rel="{item.rel?}">{item.text}</a></li>} +<li><a class="{item.rel?}" href="{item.href}{q&?{q%{idx}={item}}}" rel="{item.rel?}">{item.text}</a></li>} </ul> </nav> <br>