view mod_muc_moderation_delay/config.lib.lua @ 6214:cc5c0f1dc89b

mod_muc_anonymize_moderation_actions: Fix mentioning Virtualhost for MUC, Compatibility section and License. diff --git a/mod_muc_anonymize_moderation_actions/README.md b/mod_muc_anonymize_moderation_actions/README.md --- a/mod_muc_anonymize_moderation_actions/README.md +++ b/mod_muc_anonymize_moderation_actions/README.md @@ -1,8 +1,10 @@ -<!-- -SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/> -SPDX-License-Identifier: AGPL-3.0-only ---> -# mod_muc_anonymize_moderation_actions +--- +labels: +- 'Stage-Alpha' +summary: Anonymize moderator actions for participants +--- + +## Introduction This modules allows to anonymize affiliation and role changes in MUC rooms. @@ -11,13 +13,10 @@ When the feature is enabled, when a mode This is particularly usefull to prevent some revenge when a moderator bans someone. -This module is under AGPL-3.0 license. - -It was tested on Prosody 0.12.x. ## Configuration -Just enable the module on your MUC VirtualHost. +Just enable the module on your MUC Component. The feature will be accessible throught the room configuration form. You can tweak the position of the settings in the MUC configuration form using `anonymize_moderation_actions_form_position`. @@ -26,7 +25,20 @@ This value will be passed as priority fo By default, the field will be between muc#roomconfig_changesubject and muc#roomconfig_moderatedroom (default value is `78`). ``` lua -VirtualHost "muc.example.com" +Component "muc.example.com" "muc" modules_enabled = { "muc_anonymize_moderation_actions" } anonymize_moderation_actions_form_position = 96 ``` + +## Compatibility + + ------ ---------------------- + trunk Works as of 25-05-12 + 0.13 Works + 0.12 Works + ------ ---------------------- + +### License + +SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/> +SPDX-License-Identifier: AGPL-3.0-only
author Menel <menel@snikket.de>
date Mon, 12 May 2025 10:42:26 +0200
parents 959382fac20c
children
line wrap: on
line source

-- SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/>
-- SPDX-License-Identifier: AGPL-3.0-only

-- Getter/Setter
local function get_moderation_delay(room)
  return room._data.moderation_delay or nil;
end

local function set_moderation_delay(room, delay)
  if delay == 0 then
    delay = nil;
  end
  if delay ~= nil then
    delay = assert(tonumber(delay), "Moderation delay is not a valid number");
    if delay < 0 then
      delay = nil;
    end
  end

  if get_moderation_delay(room) == delay then return false; end

  room._data.moderation_delay = delay;
  return true;
end

-- Discovering support
local function add_disco_form(event)
  table.insert(event.form, {
    name = "muc#roominfo_moderation_delay";
    value = "";
  });
  event.formdata["muc#roominfo_moderation_delay"] = get_moderation_delay(event.room);
end


-- Config form declaration
local function add_form_option(event)
  table.insert(event.form, {
    name = "muc#roomconfig_moderation_delay";
    type = "text-single";
    datatype = "xs:integer";
    range_min = 0;
    range_max = 60; -- do not allow too big values, it does not make sense.
    label = "Moderation delay (0=disabled, any positive integer= messages will be delayed for X seconds for non-moderator participants.)";
    -- desc = "";
    value = get_moderation_delay(event.room);
  });
end

local function config_submitted(event)
  set_moderation_delay(event.room, event.value);
  -- no need to 104 status, this feature is invisible for regular participants.
end

return {
  set_moderation_delay = set_moderation_delay;
  get_moderation_delay = get_moderation_delay;
  add_disco_form = add_disco_form;
  add_form_option = add_form_option;
  config_submitted = config_submitted;
}