applying changing and fixing in frontend
This commit is contained in:
parent
979a68e475
commit
4120be5da9
|
|
@ -10,7 +10,9 @@
|
||||||
<title>~name~</title>
|
<title>~name~</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script>PageSurround();</script>
|
<script>
|
||||||
|
PageSurround();
|
||||||
|
</script>
|
||||||
<!--========== CONTENTS ==========-->
|
<!--========== CONTENTS ==========-->
|
||||||
<main>
|
<main>
|
||||||
<section>
|
<section>
|
||||||
|
|
@ -22,14 +24,14 @@
|
||||||
<table class='cntr'>
|
<table class='cntr'>
|
||||||
<tr>
|
<tr>
|
||||||
<script>PrintSwitch('ETHERNET enabled','ethen','~ethen~','configIPBoxes()');
|
<script>PrintSwitch('ETHERNET enabled','ethen','~ethen~','configIPBoxes()');
|
||||||
PrintSwitch('DHCP enabled','dhcp','~ecbdh~','configIPBoxes()');
|
PrintSwitch('DHCP enabled','edhcp','~ecbdh~','configIPBoxes()');
|
||||||
PrintIPInput('IP address:','ipa','~eip~');
|
PrintIPInput('IP address:','eipa','~eip~');
|
||||||
PrintIPInput('Subnet mask:','mas','~emsk~');
|
PrintIPInput('Subnet mask:','emas','~emsk~');
|
||||||
PrintIPInput('Gateway address:','gte','~egate~');
|
PrintIPInput('Gateway address:','egte','~egate~');
|
||||||
PrintIPInput('DNS1:','dns1','~edns~');
|
PrintIPInput('DNS1:','edns1','~edns~');
|
||||||
PrintIPInput('DNS2:','dns2','~bkedns~');
|
PrintIPInput('DNS2:','edns2','~bkedns~');
|
||||||
PrintIPInput('DNS3:','dns3','~fledns~');
|
PrintIPInput('DNS3:','edns3','~fledns~');
|
||||||
PrintMACInput('MAC:','mac','~emacadr~');
|
PrintMACInput('MAC:','emac','~emacadr~');
|
||||||
</script>
|
</script>
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
|
@ -37,7 +39,7 @@
|
||||||
</table>
|
</table>
|
||||||
<br />
|
<br />
|
||||||
<script>PrintSaveFail('~status_fail~');
|
<script>PrintSaveFail('~status_fail~');
|
||||||
PrintSaveBtn('eth'); PrintApplyBtn('eth');</script>
|
PrintSaveBtn('eth');</script>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -116,7 +118,9 @@
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<script>PrintSaveFail('~status_fail~');
|
<script>PrintSaveFail('~status_fail~');
|
||||||
PrintSaveBtn('wifi'); PrintApplyBtn('wifi');</script>
|
PrintSaveBtn('wifi'); </script>
|
||||||
|
<button type="button" class ='btn' name='startwifi' onclick="StartWiFi()">Start WiFi AP</button>
|
||||||
|
<button type="button" class ='btn' name='stopwifi' onclick="StopWiFi()">Stop WiFi AP</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -192,6 +196,8 @@
|
||||||
console.log('stop wifi scan');
|
console.log('stop wifi scan');
|
||||||
GetDataFile("/api/wifiscan.json", function(data){PrintNetworks(data);});
|
GetDataFile("/api/wifiscan.json", function(data){PrintNetworks(data);});
|
||||||
}
|
}
|
||||||
|
function StartWiFi(){PostData('wifistart=prs', 'adapters.html',false ,false, false);}
|
||||||
|
function StopWiFi(){PostData('wifistop=prs', 'adapters.html',false ,false, false);}
|
||||||
showMenu('header-toggle','navbar');
|
showMenu('header-toggle','navbar');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,20 @@ else {if(reld)location.reload();
|
||||||
if(alrt) alert(alrt);
|
if(alrt) alert(alrt);
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
function PostJSONData(data,page,conf,alrt,reld) {
|
||||||
|
if(conf){if (!confirm(conf)) return;}
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('POST',page, true);
|
||||||
|
xhr.setRequestHeader('Content-type', 'application/json');
|
||||||
|
xhr.timeout = 5000;
|
||||||
|
xhr.send(data);
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState != 4) return;
|
||||||
|
if (Number(xhr.status) >= 200) {alert(xhr.status+': '+xhr.statusText+'\n'+xhr.responseText);}
|
||||||
|
else {if(reld)location.reload();
|
||||||
|
if(alrt) alert(alrt);
|
||||||
|
}}}
|
||||||
|
|
||||||
function GetDataFile(file, callback) {
|
function GetDataFile(file, callback) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.overrideMimeType("application/json");
|
xhr.overrideMimeType("application/json");
|
||||||
|
|
@ -127,6 +141,10 @@ location.reload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*==================== SHOW NAVBAR ====================*/
|
/*==================== SHOW NAVBAR ====================*/
|
||||||
const showMenu = (headerToggle, navbarId) =>{
|
const showMenu = (headerToggle, navbarId) =>{
|
||||||
const toggleBtn = document.getElementById(headerToggle),
|
const toggleBtn = document.getElementById(headerToggle),
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,7 @@ var hedmen = `
|
||||||
|
|
||||||
<div class="nav__dropdown-collapse">
|
<div class="nav__dropdown-collapse">
|
||||||
<div class="nav__dropdown-content">
|
<div class="nav__dropdown-content">
|
||||||
<a href="#" class="nav__dropdown-item">Application settings</a>
|
<a href="vendsettings.html" class="nav__dropdown-item">Controller settings</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@
|
||||||
<tr><td class='rl lab'>Free RAM:</td><td><span id='mem'>?</span></td></tr>
|
<tr><td class='rl lab'>Free RAM:</td><td><span id='mem'>?</span></td></tr>
|
||||||
<tr><td class='rl lab'>Minimal free RAM :</td><td><span id='mmem'>?</span></td></tr>
|
<tr><td class='rl lab'>Minimal free RAM :</td><td><span id='mmem'>?</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
<button type="button" class ='btn' name='rtos' onclick="getrtos()">RTOS stat</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -112,6 +113,9 @@
|
||||||
function fwupd() {
|
function fwupd() {
|
||||||
PostData("upd=prs", "system.html",false ,false, false);
|
PostData("upd=prs", "system.html",false ,false, false);
|
||||||
}
|
}
|
||||||
|
function getrtos(){
|
||||||
|
PostJSONData("rtos=prs", "system.html",false ,false, false);
|
||||||
|
}
|
||||||
showMenu('header-toggle','navbar');
|
showMenu('header-toggle','navbar');
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit d307a365a95771ed45edd945697cada343d639d6
|
Subproject commit 32c90af2c182453caad7003c280e5223cadb5b87
|
||||||
|
|
@ -689,8 +689,12 @@ CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
|
||||||
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
|
CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
|
||||||
# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
|
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
||||||
|
# CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID is not set
|
||||||
|
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y
|
||||||
|
CONFIG_FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER=y
|
||||||
|
# CONFIG_FREERTOS_RUN_TIME_STATS_USING_CPU_CLK is not set
|
||||||
CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
|
CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
|
||||||
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
||||||
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
|
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
|
||||||
|
|
|
||||||
|
|
@ -225,6 +225,7 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
|
||||||
# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
|
# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
|
||||||
# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
|
# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
|
||||||
# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
|
# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
|
||||||
|
# CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM is not set
|
||||||
# end of TWAI configuration
|
# end of TWAI configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -280,9 +281,16 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y
|
||||||
#
|
#
|
||||||
CONFIG_ESP32_REV_MIN_0=y
|
CONFIG_ESP32_REV_MIN_0=y
|
||||||
# CONFIG_ESP32_REV_MIN_1 is not set
|
# CONFIG_ESP32_REV_MIN_1 is not set
|
||||||
|
# CONFIG_ESP32_REV_MIN_1_1 is not set
|
||||||
# CONFIG_ESP32_REV_MIN_2 is not set
|
# CONFIG_ESP32_REV_MIN_2 is not set
|
||||||
# CONFIG_ESP32_REV_MIN_3 is not set
|
# CONFIG_ESP32_REV_MIN_3 is not set
|
||||||
|
# CONFIG_ESP32_REV_MIN_3_1 is not set
|
||||||
CONFIG_ESP32_REV_MIN=0
|
CONFIG_ESP32_REV_MIN=0
|
||||||
|
CONFIG_ESP32_REV_MIN_FULL=0
|
||||||
|
CONFIG_ESP_REV_MIN_FULL=0
|
||||||
|
CONFIG_ESP32_REV_MAX_FULL_STR_OPT=y
|
||||||
|
CONFIG_ESP32_REV_MAX_FULL=399
|
||||||
|
CONFIG_ESP_REV_MAX_FULL=399
|
||||||
CONFIG_ESP32_DPORT_WORKAROUND=y
|
CONFIG_ESP32_DPORT_WORKAROUND=y
|
||||||
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
|
# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
|
||||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
|
CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
|
||||||
|
|
@ -417,6 +425,7 @@ CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
|
||||||
# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
|
# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
|
||||||
CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
|
CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
|
||||||
CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
|
CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
|
||||||
|
# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set
|
||||||
# end of MAC Config
|
# end of MAC Config
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -470,7 +479,10 @@ CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
|
||||||
# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
|
# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
|
||||||
CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
|
CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
|
||||||
CONFIG_ESP_PHY_MAX_TX_POWER=20
|
CONFIG_ESP_PHY_MAX_TX_POWER=20
|
||||||
CONFIG_ESP_PHY_REDUCE_TX_POWER=y
|
CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
|
||||||
|
# CONFIG_ESP_PHY_RF_CAL_NONE is not set
|
||||||
|
# CONFIG_ESP_PHY_RF_CAL_FULL is not set
|
||||||
|
CONFIG_ESP_PHY_CALIBRATION_MODE=0
|
||||||
# end of PHY
|
# end of PHY
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -748,6 +760,7 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
|
||||||
CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
|
CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
|
||||||
# CONFIG_LWIP_NETIF_API is not set
|
# CONFIG_LWIP_NETIF_API is not set
|
||||||
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
|
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
|
||||||
|
# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
|
||||||
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
|
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
|
||||||
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
# CONFIG_LWIP_L2_TO_L3_COPY is not set
|
||||||
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
|
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
|
||||||
|
|
@ -768,12 +781,15 @@ CONFIG_LWIP_IP6_FRAG=y
|
||||||
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
|
||||||
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
CONFIG_LWIP_GARP_TMR_INTERVAL=60
|
||||||
|
CONFIG_LWIP_ESP_MLDV6_REPORT=y
|
||||||
|
CONFIG_LWIP_MLDV6_TMR_INTERVAL=40
|
||||||
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
|
||||||
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
|
CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
|
||||||
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
|
# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
|
||||||
CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
|
CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
|
||||||
# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
|
# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
|
||||||
CONFIG_LWIP_DHCP_OPTIONS_LEN=68
|
CONFIG_LWIP_DHCP_OPTIONS_LEN=68
|
||||||
|
CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# DHCP server
|
# DHCP server
|
||||||
|
|
@ -1187,6 +1203,11 @@ CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
|
||||||
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
|
# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
|
||||||
# end of Unity unit testing library
|
# end of Unity unit testing library
|
||||||
|
|
||||||
|
#
|
||||||
|
# Root Hub configuration
|
||||||
|
#
|
||||||
|
# end of Root Hub configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
# Virtual file system
|
# Virtual file system
|
||||||
#
|
#
|
||||||
|
|
@ -1268,7 +1289,7 @@ CONFIG_TTN_PROVISION_UART_NUM=0
|
||||||
# WebGUIApp
|
# WebGUIApp
|
||||||
#
|
#
|
||||||
CONFIG_GPIO_RANGE_MIN=0
|
CONFIG_GPIO_RANGE_MIN=0
|
||||||
CONFIG_GPIO_RANGE_MAX=36
|
CONFIG_GPIO_RANGE_MAX=39
|
||||||
CONFIG_DEVICE_MODEL_NAME="DEVICE MODEL NAME"
|
CONFIG_DEVICE_MODEL_NAME="DEVICE MODEL NAME"
|
||||||
CONFIG_WEBGUIAPP_HOSTNAME="DEVICE_HOSTNAME"
|
CONFIG_WEBGUIAPP_HOSTNAME="DEVICE_HOSTNAME"
|
||||||
CONFIG_WEBGUIAPP_USERNAME="user"
|
CONFIG_WEBGUIAPP_USERNAME="user"
|
||||||
|
|
@ -1282,16 +1303,16 @@ CONFIG_MAIN_FUNCTIONAL_BUTTON_GPIO=-1
|
||||||
#
|
#
|
||||||
CONFIG_WEBGUIAPP_DEFAULT_COLOR_SCHEME=1
|
CONFIG_WEBGUIAPP_DEFAULT_COLOR_SCHEME=1
|
||||||
CONFIG_WEBGUIAPP_ACCENT_COLOR="#dba617"
|
CONFIG_WEBGUIAPP_ACCENT_COLOR="#dba617"
|
||||||
CONFIG_WEBGUIAPP_SCH1_BACKGROUNG_COLOR="#1D2327"
|
CONFIG_WEBGUIAPP_SCH1_BACKGROUNG_COLOR="#e0e0dd"
|
||||||
CONFIG_WEBGUIAPP_SCH1_PANEL_COLOR="#2c3338"
|
CONFIG_WEBGUIAPP_SCH1_PANEL_COLOR="#f0f0ed"
|
||||||
CONFIG_WEBGUIAPP_SCH1_MENU_COLOR="#3c434a"
|
CONFIG_WEBGUIAPP_SCH1_MENU_COLOR="#ededea"
|
||||||
CONFIG_WEBGUIAPP_SCH1_TEXT_COLOR="#F0F0F0"
|
CONFIG_WEBGUIAPP_SCH1_TEXT_COLOR="#404040"
|
||||||
CONFIG_WEBGUIAPP_SCH1_BORDER_COLOR="#ffffff66"
|
CONFIG_WEBGUIAPP_SCH1_BORDER_COLOR="#00000066"
|
||||||
CONFIG_WEBGUIAPP_SCH2_BACKGROUNG_COLOR="#e0e0dd"
|
CONFIG_WEBGUIAPP_SCH2_BACKGROUNG_COLOR="#1D2327"
|
||||||
CONFIG_WEBGUIAPP_SCH2_PANEL_COLOR="#f0f0ed"
|
CONFIG_WEBGUIAPP_SCH2_PANEL_COLOR="#2c3338"
|
||||||
CONFIG_WEBGUIAPP_SCH2_MENU_COLOR="#ededea"
|
CONFIG_WEBGUIAPP_SCH2_MENU_COLOR="#3c434a"
|
||||||
CONFIG_WEBGUIAPP_SCH2_TEXT_COLOR="#404040"
|
CONFIG_WEBGUIAPP_SCH2_TEXT_COLOR="#F0F0F0"
|
||||||
CONFIG_WEBGUIAPP_SCH2_BORDER_COLOR="#00000066"
|
CONFIG_WEBGUIAPP_SCH2_BORDER_COLOR="#ffffff66"
|
||||||
# end of Web UI settings
|
# end of Web UI settings
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -1497,7 +1518,6 @@ CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
|
||||||
# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
|
# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
|
||||||
CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
|
CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
|
||||||
CONFIG_ESP32_PHY_MAX_TX_POWER=20
|
CONFIG_ESP32_PHY_MAX_TX_POWER=20
|
||||||
CONFIG_ESP32_REDUCE_PHY_TX_POWER=y
|
|
||||||
# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
|
# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
|
||||||
CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
|
CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
|
||||||
# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
|
# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user