diff --git a/gluon/gluon-luci-node-role/Makefile b/gluon/gluon-luci-node-role/Makefile new file mode 100644 index 0000000..5e0fbb0 --- /dev/null +++ b/gluon/gluon-luci-node-role/Makefile @@ -0,0 +1,37 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gluon-luci-node-role +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(GLUONDIR)/include/package.mk + +define Package/gluon-luci-node-role + SECTION:=gluon + CATEGORY:=Gluon + DEPENDS:=+gluon-luci-admin +gluon-node-info + TITLE:=UI for specifying node role +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/gluon-luci-node-role/install + $(CP) ./files/* $(1)/ +endef + +define Package/gluon-luci-node-role/postinst +#!/bin/sh +$(call GluonCheckSite,check_site.lua) +endef + +$(eval $(call BuildPackage,gluon-luci-node-role)) diff --git a/gluon/gluon-luci-node-role/check_site.lua b/gluon/gluon-luci-node-role/check_site.lua new file mode 100644 index 0000000..cd3ca93 --- /dev/null +++ b/gluon/gluon-luci-node-role/check_site.lua @@ -0,0 +1,8 @@ +local function check_role(k, _) + local role = string.format('roles.list[%q]', k) + + need_string(role) +end + +need_string('roles.default') +need_table('roles.list', check_role) diff --git a/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/controller/admin/noderole.lua b/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/controller/admin/noderole.lua new file mode 100644 index 0000000..dcde01f --- /dev/null +++ b/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/controller/admin/noderole.lua @@ -0,0 +1,5 @@ +module("luci.controller.admin.noderole", package.seeall) + +function index() + entry({"admin", "noderole"}, cbi("admin/noderole"), "Verwendungszweck", 20) +end diff --git a/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/model/cbi/admin/noderole.lua b/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/model/cbi/admin/noderole.lua new file mode 100644 index 0000000..1d6d179 --- /dev/null +++ b/gluon/gluon-luci-node-role/files/usr/lib/lua/luci/model/cbi/admin/noderole.lua @@ -0,0 +1,36 @@ +local f, s, o +local site = require 'gluon.site_config' +local uci = luci.model.uci.cursor() +local config = 'gluon-node-info' + +-- where to read the configuration from +local role = uci:get(config, uci:get_first(config, "system"), "role") + +f = SimpleForm("role", "Verwendungszweck") +f.reset = false +f.template = "admin/expertmode" +f.submit = "Fertig" + +s = f:section(SimpleSection, nil, [[ +Wenn dein Freifunk-Router eine besondere Rolle im Freifunk Netz einnimmt, kannst du diese hier angeben. +Bringe bitte zuvor in Erfahrung welche Auswirkungen die zur Verfügung stehenden Rollen im Freifunk-Netz haben. +Setze die Rolle nur, wenn du weißt was du machst. +]]) + +o = s:option(ListValue, "role", "Rolle") +o.default = role +o.rmempty = false +for role, prettyname in pairs(site.roles.list) do + o:value(role, prettyname) +end + +function f.handle(self, state, data) + if state == FORM_VALID then + uci:set(config, uci:get_first(config, "system"), "role", data.role) + + uci:save(config) + uci:commit(config) + end +end + +return f