diff --git a/lib/WiFiManager/include/WiFiManager.h b/lib/WiFiManager/include/WiFiManager.h index 63c3fc8..e543326 100644 --- a/lib/WiFiManager/include/WiFiManager.h +++ b/lib/WiFiManager/include/WiFiManager.h @@ -322,17 +322,6 @@ class WiFiManager //if this is set, it will exit after config, even if connection is unsuccessful. void setBreakAfterConfig(boolean shouldBreak); - //add custom html at inside for all pages - void setCustomHeadElement(const char* html); - - //add custom html at start of for all pages - void setCustomBodyHeader(const char* html); - - //add custom html at end of for all pages - void setCustomBodyFooter(const char* html); - - //if this is set, customise style - void setCustomMenuHTML(const char* html); //if this is true, remove duplicated Access Points - defaut true void setRemoveDuplicateAPs(boolean removeDuplicates); @@ -388,11 +377,6 @@ class WiFiManager // clean connect, always disconnect before connecting void setCleanConnect(bool enable); // default false - - // set custom menu items and order, vector or arr - // see _menutokens for ids - void setMenu(std::vector& menu); - void setMenu(const char* menu[], uint8_t size); // set the webapp title, default WiFiManager void setTitle(String title); @@ -430,12 +414,7 @@ class WiFiManager // set the country code for wifi settings, CN void setCountry(String cc); - - // set body class (invert), may be used for hacking in alt classes - void setClass(String str); - - // set dark mode via invert class - void setDarkMode(bool enable); + // get default ap esp uses , esp_chipid etc String getDefaultAPName(); @@ -535,10 +514,6 @@ class WiFiManager protected: // vars std::unique_ptr _serverManager; - std::vector _menuIds; - std::vector _menuIdsParams = {"wifi","param","info","exit"}; - std::vector _menuIdsUpdate = {"wifi","param","info","update","exit"}; - std::vector _menuIdsDefault = {"wifi","info","exit","sep","update"}; // ip configs @todo struct ? IPAddress _ap_static_ip; @@ -640,12 +615,6 @@ class WiFiManager boolean _enableConfigPortal = true; // FOR autoconnect - start config portal if autoconnect failed boolean _disableConfigPortal = true; // FOR autoconnect - stop config portal if cp wifi save String _hostname = ""; // hostname for esp8266 for dhcp, and or MDNS - - const char* _customHeadElement = ""; // store custom head element html from user inside - const char* _customBodyHeader = ""; // store custom top body element html from user inside - const char* _customBodyFooter = ""; // store custom bottom body element html from user inside - const char* _customMenuHTML = ""; // store custom menu html from user - String _bodyClass = ""; // class to add to body String _title = "WiFiManager"; // app title - default WiFiManager // internal options diff --git a/lib/WiFiManager/include/WiFiManagerServer.h b/lib/WiFiManager/include/WiFiManagerServer.h index 498b4ed..5983b54 100644 --- a/lib/WiFiManager/include/WiFiManagerServer.h +++ b/lib/WiFiManager/include/WiFiManagerServer.h @@ -25,23 +25,6 @@ class WiFiManager; // Forward declaration - full definition needed in .cpp file class WiFiManagerHandlers; -// ----------------------------------------------------------------------------------------------- -// MENU TOKENS (for menu configuration via setMenu) - -extern const char _wifi_token[] PROGMEM; -extern const char _wifinoscan_token[] PROGMEM; -extern const char _info_token[] PROGMEM; -extern const char _param_token[] PROGMEM; -extern const char _close_token[] PROGMEM; -extern const char _restart_token[] PROGMEM; -extern const char _exit_token[] PROGMEM; -extern const char _erase_token[] PROGMEM; -extern const char _update_token[] PROGMEM; -extern const char _sep_token[] PROGMEM; -extern const char _custom_token[] PROGMEM; -extern PGM_P _menutokens[] PROGMEM; -extern const uint8_t _nummenutokens; - // ----------------------------------------------------------------------------------------------- // HTTP ROUTES diff --git a/lib/WiFiManager/src/WiFiManager.cpp b/lib/WiFiManager/src/WiFiManager.cpp index f63213e..63af706 100644 --- a/lib/WiFiManager/src/WiFiManager.cpp +++ b/lib/WiFiManager/src/WiFiManager.cpp @@ -91,7 +91,6 @@ WiFiManager::WiFiManager() { } void WiFiManager::WiFiManagerInit(){ - setMenu(_menuIdsDefault); if(_debug && _debugLevel >= WM_DEBUG_DEV) debugPlatformInfo(); _max_params = WIFI_MANAGER_MAX_PARAMS; // _serverManager is created lazily when config portal is started to save memory @@ -1455,46 +1454,6 @@ void WiFiManager::setConfigPortalTimeoutCallback( std::function func ) { _configportaltimeoutcallback = func; } -/** - * set custom head html - * custom element will be added to head, eg. new meta,style,script tag etc. - * @access public - * @param char element - */ -void WiFiManager::setCustomHeadElement(const char* html) { - _customHeadElement = html; -} - -/** - * set custom html at the top of the body - * custom element will be added after the body tag is opened, eg. to show a logo etc. - * @access public - * @param char element - */ -void WiFiManager::setCustomBodyHeader(const char* html) { - _customBodyHeader = html; -} - -/** - * set custom html at the bottom of the body - * custom element will be added before the body tag is closed - * @access public - * @param char element - */ -void WiFiManager::setCustomBodyFooter(const char* html) { - _customBodyFooter = html; -} - -/** - * set custom menu html - * custom element will be added to menu under custom menu item. - * @access public - * @param char element - */ -void WiFiManager::setCustomMenuHTML(const char* html) { - _customMenuHTML = html; -} - /** * toggle wifiscan hiding of duplicate ssid names * if this is false, wifiscan will remove duplicat Access Points - defaut true @@ -1732,90 +1691,6 @@ void WiFiManager::setTitle(String title){ _title = title; } -/** - * set menu items and order - * if param is present in menu , params will be removed from wifi page automatically - * eg. - * const char * menu[] = {"wifi","setup","sep","info","exit"}; - * WiFiManager.setMenu(menu); - * @since $dev - * @param uint8_t menu[] array of menu ids - */ -// Menu tokens (used by setMenu and handlers) - defined here, declared in WiFiManagerServer.h -const char _wifi_token[] PROGMEM = "wifi"; -const char _wifinoscan_token[] PROGMEM = "wifinoscan"; -const char _info_token[] PROGMEM = "info"; -const char _param_token[] PROGMEM = "param"; -const char _close_token[] PROGMEM = "close"; -const char _restart_token[] PROGMEM = "restart"; -const char _exit_token[] PROGMEM = "exit"; -const char _erase_token[] PROGMEM = "erase"; -const char _update_token[] PROGMEM = "update"; -const char _sep_token[] PROGMEM = "sep"; -const char _custom_token[] PROGMEM = "custom"; -PGM_P _menutokens[] PROGMEM = { - _wifi_token, - _wifinoscan_token, - _info_token, - _param_token, - _close_token, - _restart_token, - _exit_token, - _erase_token, - _update_token, - _sep_token, - _custom_token -}; -const uint8_t _nummenutokens = (sizeof(_menutokens) / sizeof(PGM_P)); - -void WiFiManager::setMenu(const char * menu[], uint8_t size){ -#ifdef WM_DEBUG_LEVEL - // DEBUG_WM(WM_DEBUG_DEV,"setmenu array"); - #endif - _menuIds.clear(); - for(size_t i = 0; i < size; i++){ - for(size_t j = 0; j < _nummenutokens; j++){ - if((String)menu[i] == (__FlashStringHelper *)(_menutokens[j])){ - if((String)menu[i] == "param") _paramsInWifi = false; // param auto flag - _menuIds.push_back(j); - } - delay(0); - } - delay(0); - } - #ifdef WM_DEBUG_LEVEL - // DEBUG_WM(getMenuOut()); - #endif -} - -/** - * setMenu with vector - * eg. - * std::vector menu = {"wifi","setup","sep","info","exit"}; - * WiFiManager.setMenu(menu); - * tokens can be found in _menutokens array in strings_en.h - * @shiftIncrement $dev - * @param {[type]} std::vector& menu [description] - */ -void WiFiManager::setMenu(std::vector& menu){ -#ifdef WM_DEBUG_LEVEL - // DEBUG_WM(WM_DEBUG_DEV,"setmenu vector"); - #endif - _menuIds.clear(); - for(auto menuitem : menu ){ - for(size_t j = 0; j < _nummenutokens; j++){ - if((String)menuitem == (__FlashStringHelper *)(_menutokens[j])){ - if((String)menuitem == "param") _paramsInWifi = false; // param auto flag - _menuIds.push_back(j); - } - } - } - #ifdef WM_DEBUG_LEVEL - // DEBUG_WM(WM_DEBUG_DEV,getMenuOut()); - #endif -} - - /** * Set params as separate page not in wifi * NOT COMPATIBLE WITH setMenu! @@ -1823,7 +1698,6 @@ void WiFiManager::setMenu(std::vector& menu){ */ void WiFiManager::setParamsPage(bool enable){ _paramsInWifi = !enable; - setMenu(enable ? _menuIdsParams : _menuIdsDefault); } // GETTERS @@ -1891,22 +1765,6 @@ void WiFiManager::setCountry(String cc){ _wificountry = cc; } -/** - * setClass - * @param String str body class string - */ -void WiFiManager::setClass(String str){ - _bodyClass = str; -} - -/** - * setDarkMode - * @param bool enable, enable dark mode via invert class - */ -void WiFiManager::setDarkMode(bool enable){ - _bodyClass = enable ? "invert" : ""; -} - /** * setHttpPort * @param uint16_t port webserver port number default 80 diff --git a/lib/WiFiManager/src/WiFiManagerHandlers.cpp b/lib/WiFiManager/src/WiFiManagerHandlers.cpp index 51d4073..84a0405 100644 --- a/lib/WiFiManager/src/WiFiManagerHandlers.cpp +++ b/lib/WiFiManager/src/WiFiManagerHandlers.cpp @@ -16,62 +16,34 @@ #if defined(ESP8266) || defined(ESP32) -WiFiManagerHandlers::WiFiManagerHandlers(WiFiManager* wm) : _wm(wm) { -} +WiFiManagerHandlers::WiFiManagerHandlers(WiFiManager* wm) : _wm(wm) {} // Rendering Methods String WiFiManagerHandlers::getHTTPHead(String title, String classes){ String page; - // Use template for HTML head start page += FPSTR(HTML_HEAD_START); page += title; page += FPSTR(HTML_TITLE_END); page += FPSTR(JS_SCRIPT); page += FPSTR(CSS_STYLE); - page += _wm->_customHeadElement; - - // Build body tag with classes using template page += FPSTR(HTML_HEAD_END_START); - if (_wm->_bodyClass != "") { - if (classes != "") { - classes += " "; // add spacing, if necessary - } - classes += _wm->_bodyClass; // add class str - } page += classes; page += FPSTR(HTML_HEAD_END_WRAP); - - if (_wm->_customBodyHeader) { - page += _wm->_customBodyHeader; - } - return page; } String WiFiManagerHandlers::getHTTPEnd() { - String end = FPSTR(HTML_END); - - if (_wm->_customBodyFooter) { - end = String(_wm->_customBodyFooter) + end; - } - - return end; + return FPSTR(HTML_END); } String WiFiManagerHandlers::getMenuOut(){ - String page; - - for(auto menuId : _wm->_menuIds ){ - if((String)_menutokens[menuId] == "param" && _wm->_paramsCount == 0) continue; // no params set, omit params from menu, @todo this may be undesired by someone, use only menu to force? - if((String)_menutokens[menuId] == "custom" && _wm->_customMenuHTML!=NULL){ - page += _wm->_customMenuHTML; - continue; - } - page += HTML_PORTAL_MENU[menuId]; - delay(0); - } - + String page; + page += HTML_PORTAL_MENU[0]; // WIFI + page += HTML_PORTAL_MENU[2]; // INFO + page += HTML_PORTAL_MENU[6]; // EXIT + page += HTML_PORTAL_MENU[9]; // SEP + page += HTML_PORTAL_MENU[8]; // UPDATE return page; } diff --git a/test/test_wifimanager/tests/test_advanced_options.cpp b/test/test_wifimanager/tests/test_advanced_options.cpp index 0a23dfb..888dbb6 100644 --- a/test/test_wifimanager/tests/test_advanced_options.cpp +++ b/test/test_wifimanager/tests/test_advanced_options.cpp @@ -50,8 +50,6 @@ void test_ui_display_options() { wm.setShowInfoErase(false); wm.setShowInfoUpdate(true); wm.setShowInfoUpdate(false); - wm.setDarkMode(true); - wm.setDarkMode(false); wm.setParamsPage(true); wm.setParamsPage(false); @@ -67,26 +65,8 @@ void test_ui_customization() { WiFiManager wm; - // Test custom HTML elements - wm.setCustomHeadElement(""); - wm.setCustomHeadElement(""); - wm.setCustomBodyHeader("
Custom Header
"); - wm.setCustomBodyHeader(""); - wm.setCustomBodyFooter("
Custom Footer
"); - wm.setCustomBodyFooter(""); - wm.setCustomMenuHTML("
Custom Menu
"); - wm.setCustomMenuHTML(""); - - // Test menu configuration - const char* menu[] = {"wifi", "info", "exit"}; - wm.setMenu(menu, 3); - std::vector menuVec = {"wifi", "info", "param", "exit"}; - wm.setMenu(menuVec); - - // Test CSS class - wm.setClass("invert"); - wm.setClass("custom-class"); - wm.setClass(""); + // Minimal customization retained: title + wm.setTitle("MyDevice"); // All setters executed without crash TEST_ASSERT_TRUE_MESSAGE(true, "UI customization options executed without crash");