Mercurial > prosody-modules
annotate mod_register_apps/mod_register_apps.lua @ 4682:e4e5474420e6
mod_debug_omemo: OMEMO debugging tool
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 13 Sep 2021 19:24:13 +0100 |
parents | 0b084f63fed0 |
children | 733e5513f691 |
rev | line source |
---|---|
4186
aba0470ed725
mod_register_apps: Ignore the long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
4178
diff
changeset
|
1 -- luacheck: ignore 631 |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 module:depends("http"); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local http_files = module:depends("http_files"); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local app_config = module:get_option("site_apps", { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 name = "Conversations"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 text = [[Conversations is a Jabber/XMPP client for Android 4.0+ smartphones that has been optimized to provide a unique mobile experience.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 image = "assets/logos/conversations.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 link = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 platforms = { "Android" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 magic_link_format = "{app.link!}&referrer={invite.uri}"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 name = "yaxim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 text = [[A lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 image = "assets/logos/yaxim.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 link = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 platforms = { "Android" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 magic_link_format = "{app.link!}&referrer={invite.uri}"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 name = "Siskin IM"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 text = [[A lightweight and powerful XMPP client for iPhone and iPad. It provides an easy way to talk and share moments with your friends.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 image = "assets/logos/siskin-im.png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 link = "https://apps.apple.com/us/app/siskin-im/id1153516838"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 platforms = { "iOS" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 image = "https://linkmaker.itunes.apple.com/en-us/badge-lrg.svg?releaseDate=2017-05-31&kind=iossoftware&bubble=ios_apps"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 url = "https://apps.apple.com/us/app/siskin-im/id1153516838"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 target = "_blank"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 name = "Beagle IM"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 text = [[Beagle IM by Tigase, Inc. is a lightweight and powerful XMPP client for macOS.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 image = "assets/logos/beagle-im.png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 link = "https://apps.apple.com/us/app/beagle-im/id1445349494"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 platforms = { "macOS" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 text = "Download from Mac App Store"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 url = "https://apps.apple.com/us/app/beagle-im/id1445349494"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 target = "_blank"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 }; |
4178
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
72 setup = { |
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
73 text = [[Launch Beagle IM, and select 'Yes' to add a new account. Click the '+' |
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
74 button under the empty account list and then enter your credentials.]]; |
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
75 }; |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 name = "Dino"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 text = [[A modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 image = "assets/logos/dino.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 link = "https://dino.im/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 platforms = { "Linux" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 text = "Click the button to open the Dino website where you can download and install it on your PC."; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 { text = "Download Dino for Linux", url = "https://dino.im/#download", target="_blank" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 name = "Gajim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 text = [[A fully-featured desktop chat client for Windows and Linux.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 image = "assets/logos/gajim.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 link = "https://gajim.org/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 platforms = { "Windows", "Linux" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 buttons = { |
4111
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
98 { |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 text = "Download Gajim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 url = "https://gajim.org/download/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 target = "_blank"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 }); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 |
4113
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
108 local show_apps = module:get_option_set("site_apps_show"); |
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
109 local hide_apps = module:get_option_set("site_apps_hide"); |
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
110 |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 local base_url = module.http_url and module:http_url(); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 local function relurl(s) |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 if s:match("^%w+://") then |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 return s; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 return base_url.."/"..s; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
117 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 local site_apps = module:shared("apps"); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
121 local function add_app(app_info, source) |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
122 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
123 if (not show_apps or show_apps:contains(app_id)) |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
124 and not (hide_apps and hide_apps:contains(app_id)) |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
125 and not site_apps[app_id] then |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
126 app_info.id = app_id; |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
127 app_info.image = relurl(app_info.image); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
128 site_apps[app_id] = app_info; |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
129 app_info._source = source; |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
130 table.insert(site_apps, app_info); |
4111
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
131 end |
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
132 end |
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
133 |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
134 local function remove_app(app_info) |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); |
4187
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
136 for i = #site_apps, 1, -1 do |
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
137 if site_apps[i].id == app_id then |
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
138 table.remove(site_apps, i); |
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
139 end |
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
140 end |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
141 site_apps[app_id] = nil; |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
142 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
143 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
144 local function add_config_apps() |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
145 for _, app_info in ipairs(app_config) do |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
146 add_app(app_info, module.name); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
147 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
148 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
149 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
150 local function module_app_added(event) |
4630
635907a5d2c8
mod_register_apps: Reduce yellow yelling in log message
Kim Alvefur <zash@zash.se>
parents:
4187
diff
changeset
|
151 module:log("info", "Adding %s", event.item.name) |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
152 add_app(event.item, module.name); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
153 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
154 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
155 local function module_app_removed(event) |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
156 remove_app(event.item); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
157 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
158 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
159 -- Remove all apps added by this module |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
160 local function remove_all_apps() |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
161 for k, v in pairs(site_apps) do |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
162 if v._source == module.name then |
4672
0b084f63fed0
mod_register_apps: Fix removal on unload (thanks ibikk)
Kim Alvefur <zash@zash.se>
parents:
4630
diff
changeset
|
163 remove_app(v); |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
164 end |
4113
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
165 end |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
166 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
167 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
168 local mime_map = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
169 png = "image/png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
170 svg = "image/svg+xml"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
171 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
172 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
173 module:provides("http", { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
174 route = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
175 ["GET /assets/*"] = http_files and http_files.serve({ |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
176 path = module:get_directory().."/assets"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
177 mime_map = mime_map; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
178 }); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
179 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
180 }); |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
181 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
182 function module.load() |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
183 add_config_apps(); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
184 module:handle_items("site-app-provider", module_app_added, module_app_removed, true); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
185 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
186 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
187 function module.unload() |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
188 remove_all_apps(); |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
189 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
190 |