Added ability to insert custom CSS

pull/96/head
Arjan Mels 6 years ago
parent 68d854a5d7
commit 21011b0826
  1. 11
      src/AutoConnect.h
  2. 2
      src/AutoConnectAux.cpp
  3. 19
      src/AutoConnectPage.cpp

@ -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<std::reference_wrapper<AutoConnectAux>> 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);

@ -36,6 +36,7 @@ const char AutoConnectAux::_PAGE_AUX[] PROGMEM = {
"{{CSS_INPUT_BUTTON}}"
"{{CSS_INPUT_TEXT}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -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));

@ -585,6 +585,7 @@ const char AutoConnect::_PAGE_STAT[] PROGMEM = {
"{{CSS_BASE}}"
"{{CSS_TABLE}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -670,6 +671,7 @@ const char AutoConnect::_PAGE_CONFIGNEW[] PROGMEM = {
"{{CSS_INPUT_BUTTON}}"
"{{CSS_INPUT_TEXT}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -714,6 +716,7 @@ const char AutoConnect::_PAGE_OPENCREDT[] PROGMEM = {
"{{CSS_ICON_LOCK}}"
"{{CSS_INPUT_BUTTON}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -740,6 +743,7 @@ const char AutoConnect::_PAGE_CONNECTING[] PROGMEM = {
"{{CSS_BASE}}"
"{{CSS_SPINNER}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -768,6 +772,7 @@ const char AutoConnect::_PAGE_SUCCESS[] PROGMEM = {
"{{CSS_BASE}}"
"{{CSS_TABLE}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -821,6 +826,7 @@ const char AutoConnect::_PAGE_FAIL[] PROGMEM = {
"{{CSS_BASE}}"
"{{CSS_TABLE}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -851,6 +857,7 @@ const char AutoConnect::_PAGE_DISCONN[] PROGMEM = {
"<style type=\"text/css\">"
"{{CSS_BASE}}"
"{{CSS_LUXBAR}}"
"{{CSS_EXTRA}}"
"</style>"
"</head>"
"<body style=\"padding-top:58px;\">"
@ -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));

Loading…
Cancel
Save