Software / code / prosody
Annotate
plugins/muc/name.lib.lua @ 10911:9dc34e1556d9
util.human.io.table: Allow a map callaback per column
This allows e.g. mapping booleans to "yes" or "no", specific number
formatting or generating virtual columns. All while not mutating the
underlying data or creating additional temporary tables.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 04 Jun 2020 21:32:28 +0200 |
| parent | 9034:1c709e3d2e5e |
| child | 11057:13eee48071c8 |
| rev | line source |
|---|---|
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
1 -- Prosody IM |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
4 -- Copyright (C) 2014 Daurnimator |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
5 -- |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
6 -- This project is MIT/X11 licensed. Please see the |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
7 -- COPYING file in the source package for more information. |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
8 -- |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
9 |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
10 local jid_split = require "util.jid".split; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
11 |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
12 local function get_name(room) |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
13 return room._data.name or jid_split(room.jid); |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
14 end |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
15 |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
16 local function set_name(room, name) |
|
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
17 if name == "" then name = nil; end |
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
18 if room._data.name == name then return false; end |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
19 room._data.name = name; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
20 return true; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
21 end |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
22 |
|
8988
d92b8bc6614c
MUC: Remove empty statement [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8986
diff
changeset
|
23 local function insert_name_into_form(event) |
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
24 table.insert(event.form, { |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
25 name = "muc#roomconfig_roomname"; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
26 type = "text-single"; |
|
9034
1c709e3d2e5e
MUC: Improve labels of all config form items
Matthew Wild <mwild1@gmail.com>
parents:
8988
diff
changeset
|
27 label = "Title"; |
|
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
28 value = event.room._data.name; |
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
29 }); |
|
8986
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
30 end |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
31 |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
32 module:hook("muc-disco#info", function(event) |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
33 event.reply:tag("identity", {category="conference", type="text", name=get_name(event.room)}):up(); |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
34 insert_name_into_form(event); |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
35 end); |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
36 |
|
320ae6dbb2e8
MUC: Add roomconfig_roomname to disco#info, and ensure it's not auto-generated
Matthew Wild <mwild1@gmail.com>
parents:
7401
diff
changeset
|
37 module:hook("muc-config-form", insert_name_into_form, 100-1); |
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
38 |
|
6991
84e01dbb739e
MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents:
6209
diff
changeset
|
39 module:hook("muc-config-submitted/muc#roomconfig_roomname", function(event) |
|
84e01dbb739e
MUC: Update all config form handlers to take advantage of the new per-option events
Matthew Wild <mwild1@gmail.com>
parents:
6209
diff
changeset
|
40 if set_name(event.room, event.value) then |
|
6209
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
41 event.status_codes["104"] = true; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
42 end |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
43 end); |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
44 |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
45 return { |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
46 get = get_name; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
47 set = set_name; |
|
cc00e78e6a31
plugins/muc: Move name functions to seperate module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
48 }; |