diff --git a/src/AutoConnect.h b/src/AutoConnect.h index 78e94c3..b7326dc 100644 --- a/src/AutoConnect.h +++ b/src/AutoConnect.h @@ -76,7 +76,8 @@ class AutoConnectConfig { staGateway(0U), staNetmask(0U), dns1(0U), - dns2(0U) {} + dns2(0U), + cssExtra("") {} /** * Configure by SSID for the captive portal access point and password. */ @@ -105,7 +106,8 @@ class AutoConnectConfig { staGateway(0U), staNetmask(0U), dns1(0U), - dns2(0U) {} + dns2(0U), + cssExtra("") {} ~AutoConnectConfig() {} @@ -135,6 +137,7 @@ class AutoConnectConfig { staNetmask = o.staNetmask; dns1 = o.dns1; dns2 = o.dns2; + cssExtra = o.cssExtra; return *this; } @@ -163,6 +166,7 @@ class AutoConnectConfig { IPAddress staNetmask; /**< Station subnet mask */ IPAddress dns1; /**< Primary DNS server */ IPAddress dns2; /**< Secondary DNS server */ + String cssExtra; /**< Extra CSS to be injected at start of every page */ }; typedef std::vector> AutoConnectAuxVT; @@ -292,7 +296,7 @@ class AutoConnect { String _redirectURI; /**< Redirect destination */ String _menuTitle; /**< Title string of the page */ - /** PegeElements of AutoConnect site. */ + /** PageElements of AutoConnect site. */ static const char _CSS_BASE[] PROGMEM; static const char _CSS_UL[] PROGMEM; static const char _CSS_ICON_LOCK[] PROGMEM; @@ -330,6 +334,7 @@ class AutoConnect { String _token_CSS_TABLE(PageArgument& args); String _token_CSS_SPINNER(PageArgument& args); String _token_CSS_LUXBAR(PageArgument& args); + String _token_CSS_EXTRA(PageArgument& args); String _token_HEAD(PageArgument& args); String _token_MENU_PRE(PageArgument& args); String _token_MENU_AUX(PageArgument& args); diff --git a/src/AutoConnectAux.cpp b/src/AutoConnectAux.cpp index d6de164..de27135 100644 --- a/src/AutoConnectAux.cpp +++ b/src/AutoConnectAux.cpp @@ -36,6 +36,7 @@ const char AutoConnectAux::_PAGE_AUX[] PROGMEM = { "{{CSS_INPUT_BUTTON}}" "{{CSS_INPUT_TEXT}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -455,6 +456,7 @@ PageElement* AutoConnectAux::_setupPage(const String& uri) { elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, mother, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_INPUT_TEXT")), std::bind(&AutoConnect::_token_CSS_INPUT_TEXT, mother, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, mother, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, mother, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, mother, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, mother, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, mother, std::placeholders::_1)); diff --git a/src/AutoConnectPage.cpp b/src/AutoConnectPage.cpp index 34fe63a..e14ace2 100644 --- a/src/AutoConnectPage.cpp +++ b/src/AutoConnectPage.cpp @@ -585,6 +585,7 @@ const char AutoConnect::_PAGE_STAT[] PROGMEM = { "{{CSS_BASE}}" "{{CSS_TABLE}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -670,6 +671,7 @@ const char AutoConnect::_PAGE_CONFIGNEW[] PROGMEM = { "{{CSS_INPUT_BUTTON}}" "{{CSS_INPUT_TEXT}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -714,6 +716,7 @@ const char AutoConnect::_PAGE_OPENCREDT[] PROGMEM = { "{{CSS_ICON_LOCK}}" "{{CSS_INPUT_BUTTON}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -740,6 +743,7 @@ const char AutoConnect::_PAGE_CONNECTING[] PROGMEM = { "{{CSS_BASE}}" "{{CSS_SPINNER}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -768,6 +772,7 @@ const char AutoConnect::_PAGE_SUCCESS[] PROGMEM = { "{{CSS_BASE}}" "{{CSS_TABLE}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -821,6 +826,7 @@ const char AutoConnect::_PAGE_FAIL[] PROGMEM = { "{{CSS_BASE}}" "{{CSS_TABLE}}" "{{CSS_LUXBAR}}" + "{{CSS_EXTRA}}" "" "" "" @@ -851,6 +857,7 @@ const char AutoConnect::_PAGE_DISCONN[] PROGMEM = { "" "" "" @@ -965,6 +972,11 @@ String AutoConnect::_token_CSS_LUXBAR(PageArgument& args) { return String(FPSTR(_CSS_LUXBAR)); } +String AutoConnect::_token_CSS_EXTRA(PageArgument& args) { + AC_UNUSED(args); + return _apConfig.cssExtra; +} + String AutoConnect::_token_ESTAB_SSID(PageArgument& args) { AC_UNUSED(args); return (WiFi.status() == WL_CONNECTED ? WiFi.SSID() : String(F("N/A"))); @@ -1275,6 +1287,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); @@ -1305,6 +1318,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_INPUT_TEXT")), std::bind(&AutoConnect::_token_CSS_INPUT_TEXT, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); @@ -1322,6 +1336,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_SPINNER")), std::bind(&AutoConnect::_token_CSS_SPINNER, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CUR_SSID")), std::bind(&AutoConnect::_token_CURRENT_SSID, this, std::placeholders::_1)); @@ -1335,6 +1350,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_ICON_LOCK")), std::bind(&AutoConnect::_token_CSS_ICON_LOCK, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); @@ -1349,6 +1365,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); } @@ -1375,6 +1392,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1)); @@ -1396,6 +1414,7 @@ PageElement* AutoConnect::_setupPage(String uri) { elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1)); + elm->addToken(String(FPSTR("CSS_EXTRA")), std::bind(&AutoConnect::_token_CSS_EXTRA, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1)); elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));