mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-04 02:48:13 +10:00
Unified casing of strings (#1529)
This commit is contained in:
+36
-36
@@ -44,7 +44,7 @@ const char HTTP_ROOT_MAIN[] PROGMEM = "<h1>{t}</h1><h3>{v}</h3>";
|
|||||||
|
|
||||||
const char * const HTTP_PORTAL_MENU[] PROGMEM = {
|
const char * const HTTP_PORTAL_MENU[] PROGMEM = {
|
||||||
"<form action='/wifi' method='get'><button>Configure WiFi</button></form><br/>\n", // MENU_WIFI
|
"<form action='/wifi' method='get'><button>Configure WiFi</button></form><br/>\n", // MENU_WIFI
|
||||||
"<form action='/0wifi' method='get'><button>Configure WiFi (No Scan)</button></form><br/>\n", // MENU_WIFINOSCAN
|
"<form action='/0wifi' method='get'><button>Configure WiFi (No scan)</button></form><br/>\n", // MENU_WIFINOSCAN
|
||||||
"<form action='/info' method='get'><button>Info</button></form><br/>\n", // MENU_INFO
|
"<form action='/info' method='get'><button>Info</button></form><br/>\n", // MENU_INFO
|
||||||
"<form action='/param' method='get'><button>Setup</button></form><br/>\n",//MENU_PARAM
|
"<form action='/param' method='get'><button>Setup</button></form><br/>\n",//MENU_PARAM
|
||||||
"<form action='/close' method='get'><button>Close</button></form><br/>\n", // MENU_CLOSE
|
"<form action='/close' method='get'><button>Close</button></form><br/>\n", // MENU_CLOSE
|
||||||
@@ -75,15 +75,15 @@ const char HTTP_SCAN_LINK[] PROGMEM = "<br/><form action='/wifi?refresh=1
|
|||||||
const char HTTP_SAVED[] PROGMEM = "<div class='msg'>Saving Credentials<br/>Trying to connect ESP to network.<br />If it fails reconnect to AP to try again</div>";
|
const char HTTP_SAVED[] PROGMEM = "<div class='msg'>Saving Credentials<br/>Trying to connect ESP to network.<br />If it fails reconnect to AP to try again</div>";
|
||||||
const char HTTP_PARAMSAVED[] PROGMEM = "<div class='msg S'>Saved<br/></div>";
|
const char HTTP_PARAMSAVED[] PROGMEM = "<div class='msg S'>Saved<br/></div>";
|
||||||
const char HTTP_END[] PROGMEM = "</div></body></html>";
|
const char HTTP_END[] PROGMEM = "</div></body></html>";
|
||||||
const char HTTP_ERASEBTN[] PROGMEM = "<br/><form action='/erase' method='get'><button class='D'>Erase WiFi Config</button></form>";
|
const char HTTP_ERASEBTN[] PROGMEM = "<br/><form action='/erase' method='get'><button class='D'>Erase WiFi config</button></form>";
|
||||||
const char HTTP_UPDATEBTN[] PROGMEM = "<br/><form action='/update' method='get'><button>Update</button></form>";
|
const char HTTP_UPDATEBTN[] PROGMEM = "<br/><form action='/update' method='get'><button>Update</button></form>";
|
||||||
const char HTTP_BACKBTN[] PROGMEM = "<hr><br/><form action='/' method='get'><button>Back</button></form>";
|
const char HTTP_BACKBTN[] PROGMEM = "<hr><br/><form action='/' method='get'><button>Back</button></form>";
|
||||||
|
|
||||||
const char HTTP_STATUS_ON[] PROGMEM = "<div class='msg S'><strong>Connected</strong> to {v}<br/><em><small>with IP {i}</small></em></div>";
|
const char HTTP_STATUS_ON[] PROGMEM = "<div class='msg S'><strong>Connected</strong> to {v}<br/><em><small>with IP {i}</small></em></div>";
|
||||||
const char HTTP_STATUS_OFF[] PROGMEM = "<div class='msg {c}'><strong>Not Connected</strong> to {v}{r}</div>"; // {c=class} {v=ssid} {r=status_off}
|
const char HTTP_STATUS_OFF[] PROGMEM = "<div class='msg {c}'><strong>Not connected</strong> to {v}{r}</div>"; // {c=class} {v=ssid} {r=status_off}
|
||||||
const char HTTP_STATUS_OFFPW[] PROGMEM = "<br/>Authentication Failure"; // STATION_WRONG_PASSWORD, no eps32
|
const char HTTP_STATUS_OFFPW[] PROGMEM = "<br/>Authentication failure"; // STATION_WRONG_PASSWORD, no eps32
|
||||||
const char HTTP_STATUS_OFFNOAP[] PROGMEM = "<br/>AP not found"; // WL_NO_SSID_AVAIL
|
const char HTTP_STATUS_OFFNOAP[] PROGMEM = "<br/>AP not found"; // WL_NO_SSID_AVAIL
|
||||||
const char HTTP_STATUS_OFFFAIL[] PROGMEM = "<br/>Could not Connect"; // WL_CONNECT_FAILED
|
const char HTTP_STATUS_OFFFAIL[] PROGMEM = "<br/>Could not connect"; // WL_CONNECT_FAILED
|
||||||
const char HTTP_STATUS_NONE[] PROGMEM = "<div class='msg'>No AP set</div>";
|
const char HTTP_STATUS_NONE[] PROGMEM = "<div class='msg'>No AP set</div>";
|
||||||
const char HTTP_BR[] PROGMEM = "<br/>";
|
const char HTTP_BR[] PROGMEM = "<br/>";
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ const char HTTP_STYLE[] PROGMEM = "<style>"
|
|||||||
|
|
||||||
#ifndef WM_NOHELP
|
#ifndef WM_NOHELP
|
||||||
const char HTTP_HELP[] PROGMEM =
|
const char HTTP_HELP[] PROGMEM =
|
||||||
"<br/><h3>Available Pages</h3><hr>"
|
"<br/><h3>Available pages</h3><hr>"
|
||||||
"<table class='table'>"
|
"<table class='table'>"
|
||||||
"<thead><tr><th>Page</th><th>Function</th></tr></thead><tbody>"
|
"<thead><tr><th>Page</th><th>Function</th></tr></thead><tbody>"
|
||||||
"<tr><td><a href='/'>/</a></td>"
|
"<tr><td><a href='/'>/</a></td>"
|
||||||
@@ -136,22 +136,22 @@ const char HTTP_HELP[] PROGMEM =
|
|||||||
"<tr><td><a href='/u'>/u</a></td>"
|
"<tr><td><a href='/u'>/u</a></td>"
|
||||||
"<td>OTA Update</td></tr>"
|
"<td>OTA Update</td></tr>"
|
||||||
"<tr><td><a href='/close'>/close</a></td>"
|
"<tr><td><a href='/close'>/close</a></td>"
|
||||||
"<td>Close the captiveportal popup,configportal will remain active</td></tr>"
|
"<td>Close the captiveportal popup, config portal will remain active</td></tr>"
|
||||||
"<tr><td>/exit</td>"
|
"<tr><td>/exit</td>"
|
||||||
"<td>Exit Config Portal, configportal will close</td></tr>"
|
"<td>Exit Config portal, config portal will close</td></tr>"
|
||||||
"<tr><td>/restart</td>"
|
"<tr><td>/restart</td>"
|
||||||
"<td>Reboot the device</td></tr>"
|
"<td>Reboot the device</td></tr>"
|
||||||
"<tr><td>/erase</td>"
|
"<tr><td>/erase</td>"
|
||||||
"<td>Erase WiFi configuration and reboot Device. Device will not reconnect to a network until new WiFi configuration data is entered.</td></tr>"
|
"<td>Erase WiFi configuration and reboot device. Device will not reconnect to a network until new WiFi configuration data is entered.</td></tr>"
|
||||||
"</table>"
|
"</table>"
|
||||||
"<p/>Github <a href='https://github.com/tzapu/WiFiManager'>https://github.com/tzapu/WiFiManager</a>.";
|
"<p/>Github <a href='https://github.com/tzapu/WiFiManager'>https://github.com/tzapu/WiFiManager</a>.";
|
||||||
#else
|
#else
|
||||||
const char HTTP_HELP[] PROGMEM = "";
|
const char HTTP_HELP[] PROGMEM = "";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char HTTP_UPDATE[] PROGMEM = "Upload New Firmware<br/><form method='POST' action='u' enctype='multipart/form-data' onchange=\"(function(el){document.getElementById('uploadbin').style.display = el.value=='' ? 'none' : 'initial';})(this)\"><input type='file' name='update' accept='.bin,application/octet-stream'><button id='uploadbin' type='submit' class='h D'>Update</button></form><small><a href='http://192.168.4.1/update' target='_blank'>* May not function inside captive portal, Open in browser http://192.168.4.1</a><small>";
|
const char HTTP_UPDATE[] PROGMEM = "Upload new firmware<br/><form method='POST' action='u' enctype='multipart/form-data' onchange=\"(function(el){document.getElementById('uploadbin').style.display = el.value=='' ? 'none' : 'initial';})(this)\"><input type='file' name='update' accept='.bin,application/octet-stream'><button id='uploadbin' type='submit' class='h D'>Update</button></form><small><a href='http://192.168.4.1/update' target='_blank'>* May not function inside captive portal, open in browser http://192.168.4.1</a><small>";
|
||||||
const char HTTP_UPDATE_FAIL[] PROGMEM = "<div class='msg D'><strong>Update Failed!</strong><Br/>Reboot device and try again</div>";
|
const char HTTP_UPDATE_FAIL[] PROGMEM = "<div class='msg D'><strong>Update failed!</strong><Br/>Reboot device and try again</div>";
|
||||||
const char HTTP_UPDATE_SUCCESS[] PROGMEM = "<div class='msg S'><strong>Update Successful. </strong> <br/> Device Rebooting now...</div>";
|
const char HTTP_UPDATE_SUCCESS[] PROGMEM = "<div class='msg S'><strong>Update successful. </strong> <br/> Device rebooting now...</div>";
|
||||||
|
|
||||||
#ifdef WM_JSTEST
|
#ifdef WM_JSTEST
|
||||||
const char HTTP_JS[] PROGMEM =
|
const char HTTP_JS[] PROGMEM =
|
||||||
@@ -177,37 +177,37 @@ const char HTTP_JS[] PROGMEM =
|
|||||||
// @todo remove html elements from progmem, repetetive strings
|
// @todo remove html elements from progmem, repetetive strings
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
const char HTTP_INFO_esphead[] PROGMEM = "<h3>esp32</h3><hr><dl>";
|
const char HTTP_INFO_esphead[] PROGMEM = "<h3>esp32</h3><hr><dl>";
|
||||||
const char HTTP_INFO_chiprev[] PROGMEM = "<dt>Chip Rev</dt><dd>{1}</dd>";
|
const char HTTP_INFO_chiprev[] PROGMEM = "<dt>Chip rev</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_lastreset[] PROGMEM = "<dt>Last reset reason</dt><dd>CPU0: {1}<br/>CPU1: {2}</dd>";
|
const char HTTP_INFO_lastreset[] PROGMEM = "<dt>Last reset reason</dt><dd>CPU0: {1}<br/>CPU1: {2}</dd>";
|
||||||
const char HTTP_INFO_aphost[] PROGMEM = "<dt>Access Point Hostname</dt><dd>{1}</dd>";
|
const char HTTP_INFO_aphost[] PROGMEM = "<dt>Access point hostname</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_psrsize[] PROGMEM = "<dt>PSRAM Size</dt><dd>{1} bytes</dd>";
|
const char HTTP_INFO_psrsize[] PROGMEM = "<dt>PSRAM Size</dt><dd>{1} bytes</dd>";
|
||||||
const char HTTP_INFO_temp[] PROGMEM = "<dt>Temperature</dt><dd>{1} C° / {2} F°</dd><dt>Hall</dt><dd>{3}</dd>";
|
const char HTTP_INFO_temp[] PROGMEM = "<dt>Temperature</dt><dd>{1} C° / {2} F°</dd><dt>Hall</dt><dd>{3}</dd>";
|
||||||
#else
|
#else
|
||||||
const char HTTP_INFO_esphead[] PROGMEM = "<h3>esp8266</h3><hr><dl>";
|
const char HTTP_INFO_esphead[] PROGMEM = "<h3>esp8266</h3><hr><dl>";
|
||||||
const char HTTP_INFO_fchipid[] PROGMEM = "<dt>Flash Chip ID</dt><dd>{1}</dd>";
|
const char HTTP_INFO_fchipid[] PROGMEM = "<dt>Flash chip ID</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_corever[] PROGMEM = "<dt>Core Version</dt><dd>{1}</dd>";
|
const char HTTP_INFO_corever[] PROGMEM = "<dt>Core version</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_bootver[] PROGMEM = "<dt>Boot Version</dt><dd>{1}</dd>";
|
const char HTTP_INFO_bootver[] PROGMEM = "<dt>Boot version</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_lastreset[] PROGMEM = "<dt>Last reset reason</dt><dd>{1}</dd>";
|
const char HTTP_INFO_lastreset[] PROGMEM = "<dt>Last reset reason</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_flashsize[] PROGMEM = "<dt>Real Flash Size</dt><dd>{1} bytes</dd>";
|
const char HTTP_INFO_flashsize[] PROGMEM = "<dt>Real flash size</dt><dd>{1} bytes</dd>";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char HTTP_INFO_memsmeter[] PROGMEM = "<br/><progress value='{1}' max='{2}'></progress></dd>";
|
const char HTTP_INFO_memsmeter[] PROGMEM = "<br/><progress value='{1}' max='{2}'></progress></dd>";
|
||||||
const char HTTP_INFO_memsketch[] PROGMEM = "<dt>Memory - Sketch Size</dt><dd>Used / Total bytes<br/>{1} / {2}";
|
const char HTTP_INFO_memsketch[] PROGMEM = "<dt>Memory - Sketch size</dt><dd>Used / Total bytes<br/>{1} / {2}";
|
||||||
const char HTTP_INFO_freeheap[] PROGMEM = "<dt>Memory - Free Heap</dt><dd>{1} bytes available</dd>";
|
const char HTTP_INFO_freeheap[] PROGMEM = "<dt>Memory - Free heap</dt><dd>{1} bytes available</dd>";
|
||||||
const char HTTP_INFO_wifihead[] PROGMEM = "<br/><h3>WiFi</h3><hr>";
|
const char HTTP_INFO_wifihead[] PROGMEM = "<br/><h3>WiFi</h3><hr>";
|
||||||
const char HTTP_INFO_uptime[] PROGMEM = "<dt>Uptime</dt><dd>{1} Mins {2} Secs</dd>";
|
const char HTTP_INFO_uptime[] PROGMEM = "<dt>Uptime</dt><dd>{1} mins {2} secs</dd>";
|
||||||
const char HTTP_INFO_chipid[] PROGMEM = "<dt>Chip ID</dt><dd>{1}</dd>";
|
const char HTTP_INFO_chipid[] PROGMEM = "<dt>Chip ID</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_idesize[] PROGMEM = "<dt>Flash Size</dt><dd>{1} bytes</dd>";
|
const char HTTP_INFO_idesize[] PROGMEM = "<dt>Flash size</dt><dd>{1} bytes</dd>";
|
||||||
const char HTTP_INFO_sdkver[] PROGMEM = "<dt>SDK Version</dt><dd>{1}</dd>";
|
const char HTTP_INFO_sdkver[] PROGMEM = "<dt>SDK version</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_cpufreq[] PROGMEM = "<dt>CPU Frequency</dt><dd>{1}MHz</dd>";
|
const char HTTP_INFO_cpufreq[] PROGMEM = "<dt>CPU frequency</dt><dd>{1}MHz</dd>";
|
||||||
const char HTTP_INFO_apip[] PROGMEM = "<dt>Access Point IP</dt><dd>{1}</dd>";
|
const char HTTP_INFO_apip[] PROGMEM = "<dt>Access point IP</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_apmac[] PROGMEM = "<dt>Access Point MAC</dt><dd>{1}</dd>";
|
const char HTTP_INFO_apmac[] PROGMEM = "<dt>Access point MAC</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_apssid[] PROGMEM = "<dt>Access Point SSID</dt><dd>{1}</dd>";
|
const char HTTP_INFO_apssid[] PROGMEM = "<dt>Access point SSID</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_apbssid[] PROGMEM = "<dt>BSSID</dt><dd>{1}</dd>";
|
const char HTTP_INFO_apbssid[] PROGMEM = "<dt>BSSID</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_stassid[] PROGMEM = "<dt>Station SSID</dt><dd>{1}</dd>";
|
const char HTTP_INFO_stassid[] PROGMEM = "<dt>Station SSID</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_staip[] PROGMEM = "<dt>Station IP</dt><dd>{1}</dd>";
|
const char HTTP_INFO_staip[] PROGMEM = "<dt>Station IP</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_stagw[] PROGMEM = "<dt>Station Gateway</dt><dd>{1}</dd>";
|
const char HTTP_INFO_stagw[] PROGMEM = "<dt>Station gateway</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_stasub[] PROGMEM = "<dt>Station Subnet</dt><dd>{1}</dd>";
|
const char HTTP_INFO_stasub[] PROGMEM = "<dt>Station subnet</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_dnss[] PROGMEM = "<dt>DNS Server</dt><dd>{1}</dd>";
|
const char HTTP_INFO_dnss[] PROGMEM = "<dt>DNS Server</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_host[] PROGMEM = "<dt>Hostname</dt><dd>{1}</dd>";
|
const char HTTP_INFO_host[] PROGMEM = "<dt>Hostname</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_stamac[] PROGMEM = "<dt>Station MAC</dt><dd>{1}</dd>";
|
const char HTTP_INFO_stamac[] PROGMEM = "<dt>Station MAC</dt><dd>{1}</dd>";
|
||||||
@@ -217,7 +217,7 @@ const char HTTP_INFO_autoconx[] PROGMEM = "<dt>Autoconnect</dt><dd>{1}</dd>";
|
|||||||
const char HTTP_INFO_aboutver[] PROGMEM = "<dt>WiFiManager</dt><dd>{1}</dd>";
|
const char HTTP_INFO_aboutver[] PROGMEM = "<dt>WiFiManager</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_aboutarduino[] PROGMEM = "<dt>Arduino</dt><dd>{1}</dd>";
|
const char HTTP_INFO_aboutarduino[] PROGMEM = "<dt>Arduino</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_aboutsdk[] PROGMEM = "<dt>ESP-SDK/IDF</dt><dd>{1}</dd>";
|
const char HTTP_INFO_aboutsdk[] PROGMEM = "<dt>ESP-SDK/IDF</dt><dd>{1}</dd>";
|
||||||
const char HTTP_INFO_aboutdate[] PROGMEM = "<dt>Build Date</dt><dd>{1}</dd>";
|
const char HTTP_INFO_aboutdate[] PROGMEM = "<dt>Build date</dt><dd>{1}</dd>";
|
||||||
|
|
||||||
const char S_brand[] PROGMEM = "WiFiManager";
|
const char S_brand[] PROGMEM = "WiFiManager";
|
||||||
const char S_debugPrefix[] PROGMEM = "*wm:";
|
const char S_debugPrefix[] PROGMEM = "*wm:";
|
||||||
@@ -229,12 +229,12 @@ const char S_GET[] PROGMEM = "GET";
|
|||||||
const char S_POST[] PROGMEM = "POST";
|
const char S_POST[] PROGMEM = "POST";
|
||||||
const char S_NA[] PROGMEM = "Unknown";
|
const char S_NA[] PROGMEM = "Unknown";
|
||||||
const char S_passph[] PROGMEM = "********";
|
const char S_passph[] PROGMEM = "********";
|
||||||
const char S_titlewifisaved[] PROGMEM = "Credentials Saved";
|
const char S_titlewifisaved[] PROGMEM = "Credentials saved";
|
||||||
const char S_titlewifisettings[] PROGMEM = "Settings Saved";
|
const char S_titlewifisettings[] PROGMEM = "Settings saved";
|
||||||
const char S_titlewifi[] PROGMEM = "Config ESP";
|
const char S_titlewifi[] PROGMEM = "Config ESP";
|
||||||
const char S_titleinfo[] PROGMEM = "Info";
|
const char S_titleinfo[] PROGMEM = "Info";
|
||||||
const char S_titleparam[] PROGMEM = "Setup";
|
const char S_titleparam[] PROGMEM = "Setup";
|
||||||
const char S_titleparamsaved[] PROGMEM = "Setup Saved";
|
const char S_titleparamsaved[] PROGMEM = "Setup saved";
|
||||||
const char S_titleexit[] PROGMEM = "Exit";
|
const char S_titleexit[] PROGMEM = "Exit";
|
||||||
const char S_titlereset[] PROGMEM = "Reset";
|
const char S_titlereset[] PROGMEM = "Reset";
|
||||||
const char S_titleerase[] PROGMEM = "Erase";
|
const char S_titleerase[] PROGMEM = "Erase";
|
||||||
@@ -242,14 +242,14 @@ const char S_titleclose[] PROGMEM = "Close";
|
|||||||
const char S_options[] PROGMEM = "options";
|
const char S_options[] PROGMEM = "options";
|
||||||
const char S_nonetworks[] PROGMEM = "No networks found. Refresh to scan again.";
|
const char S_nonetworks[] PROGMEM = "No networks found. Refresh to scan again.";
|
||||||
const char S_staticip[] PROGMEM = "Static IP";
|
const char S_staticip[] PROGMEM = "Static IP";
|
||||||
const char S_staticgw[] PROGMEM = "Static Gateway";
|
const char S_staticgw[] PROGMEM = "Static gateway";
|
||||||
const char S_staticdns[] PROGMEM = "Static DNS";
|
const char S_staticdns[] PROGMEM = "Static DNS";
|
||||||
const char S_subnet[] PROGMEM = "Subnet";
|
const char S_subnet[] PROGMEM = "Subnet";
|
||||||
const char S_exiting[] PROGMEM = "Exiting";
|
const char S_exiting[] PROGMEM = "Exiting";
|
||||||
const char S_resetting[] PROGMEM = "Module will reset in a few seconds.";
|
const char S_resetting[] PROGMEM = "Module will reset in a few seconds.";
|
||||||
const char S_closing[] PROGMEM = "You can close the page, portal will continue to run";
|
const char S_closing[] PROGMEM = "You can close the page, portal will continue to run";
|
||||||
const char S_error[] PROGMEM = "An Error Occured";
|
const char S_error[] PROGMEM = "An error occured";
|
||||||
const char S_notfound[] PROGMEM = "File Not Found\n\n";
|
const char S_notfound[] PROGMEM = "File not found\n\n";
|
||||||
const char S_uri[] PROGMEM = "URI: ";
|
const char S_uri[] PROGMEM = "URI: ";
|
||||||
const char S_method[] PROGMEM = "\nMethod: ";
|
const char S_method[] PROGMEM = "\nMethod: ";
|
||||||
const char S_args[] PROGMEM = "\nArguments: ";
|
const char S_args[] PROGMEM = "\nArguments: ";
|
||||||
|
|||||||
Reference in New Issue
Block a user