diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index 761e5b8ac..1ed6f6517 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -1250,6 +1250,10 @@ void OptionsDialog::on_buttonBox_accepted() m_ui->tabSelection->setCurrentRow(TAB_WEBUI); return; } + if (!isAlternativeWebUIPathValid()) { + m_ui->tabSelection->setCurrentRow(TAB_WEBUI); + return; + } m_applyButton->setEnabled(false); this->hide(); saveOptions(); @@ -1269,6 +1273,10 @@ void OptionsDialog::applySettings(QAbstractButton *button) m_ui->tabSelection->setCurrentRow(TAB_WEBUI); return; } + if (!isAlternativeWebUIPathValid()) { + m_ui->tabSelection->setCurrentRow(TAB_WEBUI); + return; + } saveOptions(); } } @@ -1751,6 +1759,15 @@ bool OptionsDialog::webUIAuthenticationOk() return true; } +bool OptionsDialog::isAlternativeWebUIPathValid() +{ + if (m_ui->groupAltWebUI->isChecked() && m_ui->textWebUIRootFolder->selectedPath().trimmed().isEmpty()) { + QMessageBox::warning(this, tr("Location Error"), tr("The alternative Web UI files location cannot be blank.")); + return false; + } + return true; +} + void OptionsDialog::on_banListButton_clicked() { // call dialog window diff --git a/src/gui/optionsdialog.h b/src/gui/optionsdialog.h index 37d475c50..7ab204c6e 100644 --- a/src/gui/optionsdialog.h +++ b/src/gui/optionsdialog.h @@ -172,6 +172,7 @@ private: bool setSslCertificate(const QByteArray &cert); bool schedTimesOk(); bool webUIAuthenticationOk(); + bool isAlternativeWebUIPathValid(); QByteArray m_sslCert, m_sslKey; diff --git a/src/webui/www/private/preferences_content.html b/src/webui/www/private/preferences_content.html index cfedc1b48..2ae863e93 100644 --- a/src/webui/www/private/preferences_content.html +++ b/src/webui/www/private/preferences_content.html @@ -1667,8 +1667,14 @@ settings.set('bypass_auth_subnet_whitelist', $('bypass_auth_subnet_whitelist_textarea').getProperty('value')); // Use alternative Web UI - settings.set('alternative_webui_enabled', $('use_alt_webui_checkbox').getProperty('checked')); - settings.set('alternative_webui_path', $('webui_files_location_textarea').getProperty('value')); + var alternative_webui_enabled = $('use_alt_webui_checkbox').getProperty('checked'); + var webui_files_location_textarea = $('webui_files_location_textarea').getProperty('value'); + if (alternative_webui_enabled && (webui_files_location_textarea.trim() === "")) { + alert("QBT_TR(The alternative Web UI files location cannot be blank.)QBT_TR[CONTEXT=OptionsDialog]"); + return; + } + settings.set('alternative_webui_enabled', alternative_webui_enabled); + settings.set('alternative_webui_path', webui_files_location_textarea); settings.set('web_ui_clickjacking_protection_enabled', $('clickjacking_protection_checkbox').getProperty('checked')); settings.set('web_ui_csrf_protection_enabled', $('csrf_protection_checkbox').getProperty('checked'));