Mercurial > prosody-modules
comparison mod_http_muc_log/mod_http_muc_log.lua @ 4676:a2cf3b69a3d6
mod_http_muc_log: Add way to list certain rooms in a specified order
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 12 Sep 2021 00:13:32 +0200 |
parents | 38f501dca618 |
children | 823370bc2e4c |
comparison
equal
deleted
inserted
replaced
4675:c9397cd5cfe6 | 4676:a2cf3b69a3d6 |
---|---|
432 links = links; | 432 links = links; |
433 dates = {}; -- COMPAT util.interpolation {nil|func#...} bug | 433 dates = {}; -- COMPAT util.interpolation {nil|func#...} bug |
434 }); | 434 }); |
435 end | 435 end |
436 | 436 |
437 local room_weights = setmetatable(module:get_option_array(module.name.."_list_order", {}):reverse(), nil); | |
438 for i = #room_weights, 1, -1 do | |
439 local room_jid = room_weights[i]; | |
440 room_weights[i] = nil; | |
441 room_weights[room_jid] = i; | |
442 end | |
443 | |
437 local function list_rooms(event) | 444 local function list_rooms(event) |
438 local request, response = event.request, event.response; | 445 local request, response = event.request, event.response; |
439 local room_list, i = {}, 1; | 446 local room_list, i = {}, 1; |
440 for room in each_room() do | 447 for room in each_room() do |
441 if not (room.get_hidden or room.is_hidden)(room) then | 448 if not (room.get_hidden or room.is_hidden)(room) then |
445 localpart = localpart; | 452 localpart = localpart; |
446 href = get_link(localpart, default_view); | 453 href = get_link(localpart, default_view); |
447 name = room:get_name() or localpart; | 454 name = room:get_name() or localpart; |
448 lang = room.get_language and room:get_language(); | 455 lang = room.get_language and room:get_language(); |
449 description = room:get_description(); | 456 description = room:get_description(); |
457 priority = room_weights[ room.jid ] or 0; | |
450 }, i + 1; | 458 }, i + 1; |
451 end | 459 end |
452 end | 460 end |
453 | 461 |
454 table.sort(room_list, function (a, b) | 462 table.sort(room_list, function (a, b) |
463 if a.priority ~= b.priority then return a.priority > b.priority; end | |
455 return a.jid < b.jid; | 464 return a.jid < b.jid; |
456 end); | 465 end); |
457 | 466 |
458 response.headers.content_type = "text/html; charset=utf-8"; | 467 response.headers.content_type = "text/html; charset=utf-8"; |
459 return render(template, { | 468 return render(template, { |