From d03c88afb41deac8dbc9c9bea2b8946db503b967 Mon Sep 17 00:00:00 2001 From: Ruben Barkow Date: Wed, 7 Sep 2016 06:44:57 +0200 Subject: [PATCH] gluon-config-mode-contact-info: define an "obligatory" option in site.conf (#843) --- .../gluon-config-mode-contact-info.rst | 28 +++++++++++++++++++ docs/site-example/site.conf | 13 ++++++--- .../gluon-config-mode-contact-info/Makefile | 12 +++++++- .../check_site.lua | 3 ++ .../gluon-config-mode-contact-info/i18n/de.po | 10 +++---- .../gluon-config-mode-contact-info/i18n/fr.po | 7 +++-- .../i18n/gluon-config-mode-contact-info.pot | 4 +-- .../config-mode/wizard/0500-contact-info.lua | 7 +++-- 8 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 docs/package/gluon-config-mode-contact-info.rst create mode 100644 package/gluon-config-mode-contact-info/check_site.lua diff --git a/docs/package/gluon-config-mode-contact-info.rst b/docs/package/gluon-config-mode-contact-info.rst new file mode 100644 index 00000000..a38cc0a5 --- /dev/null +++ b/docs/package/gluon-config-mode-contact-info.rst @@ -0,0 +1,28 @@ +gluon-config-mode-contact-info +============================== + +This package allows the user to provide contact information within config mode to be +distributed in the mesh. You can define whether the owner contact field is +obligatory or not in your site.conf. + +site.conf +--------- + +config_mode.owner.obligatory : this whole section is optional + - ``true`` field is obligatory: gluon-node-info.@owner[0].contact may not be empty + - ``false`` field is optional: gluon-node-info.@owner[0].contact may be empty + - defaults to ``false`` + +# example: + + config_mode = { + geo_location = { + show_altitude = true, + }, + owner = { + obligatory = true + }, + }, + + + \ No newline at end of file diff --git a/docs/site-example/site.conf b/docs/site-example/site.conf index 964324df..6dee6df2 100644 --- a/docs/site-example/site.conf +++ b/docs/site-example/site.conf @@ -192,10 +192,15 @@ -- skip = true, -- }, - -- Show/hide the altitude field -- config_mode = { - -- geo_location = { - -- show_altitude = false, - -- }, + -- Show/hide the altitude field + -- geo_location = { + -- show_altitude = false, + -- }, + -- define if the contact field is obligatory (optional) + -- owner = { + -- obligatory = true + -- }, -- }, + } diff --git a/package/gluon-config-mode-contact-info/Makefile b/package/gluon-config-mode-contact-info/Makefile index 801fad61..3ac8a0b3 100644 --- a/package/gluon-config-mode-contact-info/Makefile +++ b/package/gluon-config-mode-contact-info/Makefile @@ -13,10 +13,15 @@ PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG) define Package/gluon-config-mode-contact-info SECTION:=gluon CATEGORY:=Gluon - TITLE:=Set a custom string that will be distributed in the mesh. + TITLE:=Allows the user to provide contact information to be distributed in the mesh DEPENDS:=gluon-config-mode-core-virtual +gluon-node-info endef +define Package/gluon-config-mode-contact-info/description + Allows the user to provide contact information to be distributed in the mesh. + Can be made obligatory in site.conf +endef + define Build/Prepare mkdir -p $(PKG_BUILD_DIR) endef @@ -34,4 +39,9 @@ define Package/gluon-config-mode-contact-info/install $(call GluonInstallI18N,gluon-config-mode-contact-info,$(1)) endef +define Package/gluon-config-mode-contact-info/postinst +#!/bin/sh +$(call GluonCheckSite,check_site.lua) +endef + $(eval $(call BuildPackage,gluon-config-mode-contact-info)) diff --git a/package/gluon-config-mode-contact-info/check_site.lua b/package/gluon-config-mode-contact-info/check_site.lua new file mode 100644 index 00000000..fe818616 --- /dev/null +++ b/package/gluon-config-mode-contact-info/check_site.lua @@ -0,0 +1,3 @@ +if need_table('config_mode', nil, false) and need_table('config_mode.owner', nil, false) then + need_boolean('config_mode.owner.obligatory', false) +end diff --git a/package/gluon-config-mode-contact-info/i18n/de.po b/package/gluon-config-mode-contact-info/i18n/de.po index 719246f4..35f0ee95 100644 --- a/package/gluon-config-mode-contact-info/i18n/de.po +++ b/package/gluon-config-mode-contact-info/i18n/de.po @@ -14,13 +14,13 @@ msgid "Contact info" msgstr "Kontakt" msgid "" -"You can provide your contact information here to allow others to contact " -"you. Please note that this information will be visible publicly on " +"Please provide your contact information here to allow others to contact " +"you. Note that this information will be visible publicly on " "the internet together with your node's coordinates." msgstr "" -"Hier kannst du einen öffentlichen Hinweis hinterlegen, um anderen " -"zu ermöglichen, Kontakt mit dir aufzunehmen. Bitte beachte, dass " -"dieser Hinweis auch öffentlich im Internet, zusammen mit den Koordinaten " +"Bitte hinterlege hier einen Hinweis, um anderen zu ermöglichen, " +"Kontakt mit dir aufzunehmen. Beachte, dass dieser Hinweis auch " +"öffentlich im Internet, zusammen mit den Koordinaten " "deines Knotens, einsehbar sein wird." msgid "e.g. E-mail or phone number" diff --git a/package/gluon-config-mode-contact-info/i18n/fr.po b/package/gluon-config-mode-contact-info/i18n/fr.po index 779e15fe..624b1864 100644 --- a/package/gluon-config-mode-contact-info/i18n/fr.po +++ b/package/gluon-config-mode-contact-info/i18n/fr.po @@ -14,11 +14,12 @@ msgid "Contact info" msgstr "Informations de Contact" msgid "" -"You can provide your contact information here to allow others to contact " -"you. Please note that this information will be visible publicly on " +"Please provide your contact information here to allow others to contact " +"you. Note that this information will be visible publicly on " "the internet together with your node's coordinates." msgstr "" -"Ici vous pouvez donner des informations publiques pour permettre aux autres de vous contacter. " +"S'il vous plaît entrez ici des informations publiques pour " +"permettre aux autres de vous contacter. " "Ces informations seront affichées en ligne, avec les coordonnées du nœud." msgid "e.g. E-mail or phone number" diff --git a/package/gluon-config-mode-contact-info/i18n/gluon-config-mode-contact-info.pot b/package/gluon-config-mode-contact-info/i18n/gluon-config-mode-contact-info.pot index 63939a83..9dcaf9ec 100644 --- a/package/gluon-config-mode-contact-info/i18n/gluon-config-mode-contact-info.pot +++ b/package/gluon-config-mode-contact-info/i18n/gluon-config-mode-contact-info.pot @@ -5,8 +5,8 @@ msgid "Contact info" msgstr "" msgid "" -"You can provide your contact information here to allow others to contact " -"you. Please note that this information will be visible publicly on " +"Please provide your contact information here to allow others to contact " +"you. Note that this information will be visible publicly on " "the internet together with your node's coordinates." msgstr "" diff --git a/package/gluon-config-mode-contact-info/luasrc/lib/gluon/config-mode/wizard/0500-contact-info.lua b/package/gluon-config-mode-contact-info/luasrc/lib/gluon/config-mode/wizard/0500-contact-info.lua index a2182f95..46ff4567 100644 --- a/package/gluon-config-mode-contact-info/luasrc/lib/gluon/config-mode/wizard/0500-contact-info.lua +++ b/package/gluon-config-mode-contact-info/luasrc/lib/gluon/config-mode/wizard/0500-contact-info.lua @@ -1,13 +1,14 @@ local cbi = require "luci.cbi" local i18n = require "luci.i18n" local uci = luci.model.uci.cursor() +local site = require 'gluon.site_config' local M = {} function M.section(form) local s = form:section(cbi.SimpleSection, nil, i18n.translate( - 'You can provide your contact information here to ' - .. 'allow others to contact you. Please note that ' + 'Please provide your contact information here to ' + .. 'allow others to contact you. Note that ' .. 'this information will be visible publicly ' .. 'on the internet together with your node\'s coordinates.' ) @@ -15,7 +16,7 @@ function M.section(form) local o = s:option(cbi.Value, "_contact", i18n.translate("Contact info")) o.default = uci:get_first("gluon-node-info", "owner", "contact", "") - o.rmempty = true + o.rmempty = not ((site.config_mode or {}).owner or {}).obligatory o.datatype = "string" o.description = i18n.translate("e.g. E-mail or phone number") o.maxlen = 140