gluon-config-mode-hostname: add config_mode.hostname.optional site option

This setting allows to enforce manually setting a hostname.

In the initial configuration, the hostname field is now left empty; when
setting the hostname is not enforced, the default hostname is shown as the
field placeholder.

Fixes #1139
This commit is contained in:
Matthias Schiffer 2018-03-17 12:48:11 +01:00
parent 486c2e4821
commit 7827f8960f
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
3 changed files with 24 additions and 3 deletions

View File

@ -370,6 +370,10 @@ config_mode \: optional
Additional configuration for the configuration web interface. All values are
optional.
When no hostname is specified, a default hostname based on the *hostname_prefix*
and the node's primary MAC address is assigned. Manually setting a hostname
can be enforced by setting *hostname.optional* to *false*.
By default, no altitude fields are shown by the *gluon-config-mode-geo-location*
package. If *geo_location.show_altitude* is set to *true*, the *gluon-config-mode:altitude-label*
and *gluon-config-mode:altitude-help* strings must be provided in the site i18n
@ -385,6 +389,9 @@ config_mode \: optional
::
config_mode = {
hostname = {
optional = false,
},
geo_location = {
show_altitude = true,
},

View File

@ -0,0 +1 @@
need_boolean(in_site({'config_mode', 'hostname', 'optional'}), false)

View File

@ -1,19 +1,32 @@
return function(form, uci)
local pkg_i18n = i18n 'gluon-config-mode-hostname'
local pretty_hostname = require "pretty_hostname"
local pretty_hostname = require 'pretty_hostname'
local site = require 'gluon.site'
local util = require 'gluon.util'
form:section(Section, nil, pkg_i18n.translate(
"The node name is used solely for identification of your node, e.g. on a "
.. "node map. It does not affect the name (SSID) of the broadcasted WLAN."
))
local current_hostname = pretty_hostname.get(uci)
local default_hostname = util.default_hostname()
local configured = uci:get_first('gluon-setup-mode', 'setup_mode', 'configured', false) or (current_hostname ~= default_hostname)
local s = form:section(Section)
local o = s:option(Value, "hostname", pkg_i18n.translate("Node name"))
o.default = pretty_hostname.get(uci)
o.datatype = 'minlength(1)'
if site.config_mode.hostname.optional(true) then
o.optional = true
o.placeholder = default_hostname
end
if configured then
o.default = current_hostname
end
function o:write(data)
pretty_hostname.set(uci, data)
pretty_hostname.set(uci, data or default_hostname)
end
return {'system'}