mirror of
https://github.com/itflow-org/itflow
synced 2026-09-08 07:45:11 +00:00
Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5
This commit is contained in:
@@ -4,8 +4,8 @@ require_once "includes/inc_all_admin.php";
|
||||
// ---- Tiny status dot for tab labels ----------------------------------------
|
||||
function renderMailStatusDot($on) {
|
||||
return $on
|
||||
? '<i class="fas fa-circle text-success ml-2" style="font-size:.5rem;vertical-align:middle;" title="Configured"></i>'
|
||||
: '<i class="far fa-circle text-muted ml-2" style="font-size:.5rem;vertical-align:middle;" title="Not configured"></i>';
|
||||
? '<i class="fas fa-circle text-success ms-2" style="font-size:.5rem;vertical-align:middle;" title="Configured"></i>'
|
||||
: '<i class="far fa-circle text-muted ms-2" style="font-size:.5rem;vertical-align:middle;" title="Not configured"></i>';
|
||||
}
|
||||
|
||||
$smtp_on = !empty($config_smtp_provider);
|
||||
@@ -68,34 +68,34 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
|
||||
<div class="card card-dark">
|
||||
<div class="card-header py-3">
|
||||
<h3 class="card-title"><i class="fas fa-fw fa-envelope mr-2"></i>Mail Configuration</h3>
|
||||
<h3 class="card-title"><i class="fas fa-fw fa-envelope me-2"></i>Mail Configuration</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<ul class="nav nav-tabs" id="mailTabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?php if ($active_tab === 'smtp') { echo 'active'; } ?>" href="?tab=smtp" data-target="#tab-smtp">
|
||||
<i class="fas fa-fw fa-paper-plane mr-1"></i>Sending<?= renderMailStatusDot($smtp_on) ?>
|
||||
<a class="nav-link <?php if ($active_tab === 'smtp') { echo 'active'; } ?>" href="?tab=smtp" data-bs-target="#tab-smtp">
|
||||
<i class="fas fa-fw fa-paper-plane me-1"></i>Sending<?= renderMailStatusDot($smtp_on) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?php if ($active_tab === 'imap') { echo 'active'; } ?>" href="?tab=imap" data-target="#tab-imap">
|
||||
<i class="fas fa-fw fa-inbox mr-1"></i>Receiving<?= renderMailStatusDot($imap_on) ?>
|
||||
<a class="nav-link <?php if ($active_tab === 'imap') { echo 'active'; } ?>" href="?tab=imap" data-bs-target="#tab-imap">
|
||||
<i class="fas fa-fw fa-inbox me-1"></i>Receiving<?= renderMailStatusDot($imap_on) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item" id="tabitem-oauth" style="<?= $oauth_needed ? '' : 'display:none;' ?>">
|
||||
<a class="nav-link <?php if ($active_tab === 'oauth') { echo 'active'; } ?>" href="?tab=oauth" data-target="#tab-oauth">
|
||||
<i class="fas fa-fw fa-key mr-1"></i>OAuth
|
||||
<a class="nav-link <?php if ($active_tab === 'oauth') { echo 'active'; } ?>" href="?tab=oauth" data-bs-target="#tab-oauth">
|
||||
<i class="fas fa-fw fa-key me-1"></i>OAuth
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?php if ($active_tab === 'from') { echo 'active'; } ?>" href="?tab=from" data-target="#tab-from">
|
||||
<i class="fas fa-fw fa-at mr-1"></i>From Addresses
|
||||
<a class="nav-link <?php if ($active_tab === 'from') { echo 'active'; } ?>" href="?tab=from" data-bs-target="#tab-from">
|
||||
<i class="fas fa-fw fa-at me-1"></i>From Addresses
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?php if ($active_tab === 'tests') { echo 'active'; } ?>" href="?tab=tests" data-target="#tab-tests">
|
||||
<i class="fas fa-fw fa-vial mr-1"></i>Tests
|
||||
<a class="nav-link <?php if ($active_tab === 'tests') { echo 'active'; } ?>" href="?tab=tests" data-bs-target="#tab-tests">
|
||||
<i class="fas fa-fw fa-vial me-1"></i>Tests
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -108,10 +108,9 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
||||
<input type="hidden" name="tab" value="smtp">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="mb-3">
|
||||
<label>SMTP Provider <small class="text-muted">— outbound</small></label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span>
|
||||
<select class="form-control" name="config_smtp_provider" id="config_smtp_provider">
|
||||
<option value="" <?php if (empty($config_smtp_provider)) { echo 'selected'; } ?>>None (Disabled)</option>
|
||||
<option value="standard_smtp" <?php if ($config_smtp_provider === 'standard_smtp') { echo 'selected'; } ?>>Standard SMTP (Username/Password)</option>
|
||||
@@ -123,25 +122,22 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
</div>
|
||||
|
||||
<div id="smtp_conn_fields">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>SMTP Host</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span>
|
||||
<input type="text" class="form-control" name="config_smtp_host" placeholder="smtp.yourcompany.com" maxlength="200" value="<?= escapeHtml($config_smtp_host) ?>" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<div class="mb-3 col-md-3">
|
||||
<label>Port</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span>
|
||||
<input type="text" class="form-control numeric-only" inputmode="numeric" pattern="[0-9]*" maxlength="5" name="config_smtp_port" placeholder="587 / 465 / 25" value="<?= !empty($config_smtp_port) ? intval($config_smtp_port) : '' ?>" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<div class="mb-3 col-md-3">
|
||||
<label>Encryption</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
|
||||
<select class="form-control" name="config_smtp_encryption">
|
||||
<option value="">None</option>
|
||||
<option <?php if ($config_smtp_encryption == 'tls') { echo "selected"; } ?> value="tls">TLS</option>
|
||||
@@ -152,34 +148,31 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6" id="smtp_user_group">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6" id="smtp_user_group">
|
||||
<label id="smtp_user_label">SMTP Username</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
|
||||
<input type="text" class="form-control" name="config_smtp_username" id="config_smtp_username" placeholder="usually your full email address" maxlength="200" value="<?= escapeHtml($config_smtp_username) ?>">
|
||||
</div>
|
||||
<small class="form-text text-muted" id="smtp_user_hint">Leave blank if no authentication is required.</small>
|
||||
</div>
|
||||
<div class="form-group col-md-6" id="smtp_pass_group">
|
||||
<div class="mb-3 col-md-6" id="smtp_pass_group">
|
||||
<label>SMTP Password</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span></div>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_smtp_password" placeholder="mailbox or app password" maxlength="200" value="<?= escapeHtml($config_smtp_password) ?>" autocomplete="new-password">
|
||||
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_smtp_password" placeholder="mailbox or app password" maxlength="200" value="<?= escapeHtml($config_smtp_password) ?>" autocomplete="new-password"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" id="smtp_oauth_pointer" style="display:none;">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<span><i class="fas fa-fw fa-info-circle mr-2"></i>This provider uses OAuth — the password is ignored. Enter app credentials in the OAuth tab.</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary goto-oauth ml-3 text-nowrap"><i class="fas fa-fw fa-key mr-1"></i>Open OAuth</button>
|
||||
<span><i class="fas fa-fw fa-info-circle me-2"></i>This provider uses OAuth — the password is ignored. Enter app credentials in the OAuth tab.</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary goto-oauth ms-3 text-nowrap"><i class="fas fa-fw fa-key me-1"></i>Open OAuth</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<button type="submit" name="edit_mail_smtp_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save Sending Settings</button>
|
||||
<button type="submit" name="edit_mail_smtp_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save Sending Settings</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -189,10 +182,9 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
||||
<input type="hidden" name="tab" value="imap">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="mb-3">
|
||||
<label>IMAP Provider <small class="text-muted">— inbound ticket inbox</small></label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span>
|
||||
<select class="form-control" name="config_imap_provider" id="config_imap_provider">
|
||||
<option value="" <?php if (empty($config_imap_provider)) { echo 'selected'; } ?>>None (Disabled)</option>
|
||||
<option value="standard_imap" <?php if ($config_imap_provider === 'standard_imap') { echo 'selected'; } ?>>Standard IMAP (Username/Password)</option>
|
||||
@@ -204,25 +196,22 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
</div>
|
||||
|
||||
<div id="imap_conn_fields">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>IMAP Host</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span>
|
||||
<input type="text" class="form-control" name="config_imap_host" placeholder="imap.yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_host) ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<div class="mb-3 col-md-3">
|
||||
<label>Port</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span>
|
||||
<input type="text" class="form-control numeric-only" inputmode="numeric" pattern="[0-9]*" maxlength="5" name="config_imap_port" placeholder="993 / 143" value="<?= !empty($config_imap_port) ? intval($config_imap_port) : '' ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<div class="mb-3 col-md-3">
|
||||
<label>Encryption</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
|
||||
<select class="form-control" name="config_imap_encryption">
|
||||
<option value="">None</option>
|
||||
<option <?php if ($config_imap_encryption == 'tls') { echo "selected"; } ?> value="tls">TLS</option>
|
||||
@@ -233,34 +222,31 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6" id="imap_user_group">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6" id="imap_user_group">
|
||||
<label id="imap_user_label">IMAP Username</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
|
||||
<input type="text" class="form-control" name="config_imap_username" placeholder="tickets@yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_username) ?>" required>
|
||||
</div>
|
||||
<small class="form-text text-muted" id="imap_user_hint">The mailbox address to monitor for incoming tickets.</small>
|
||||
</div>
|
||||
<div class="form-group col-md-6" id="imap_pass_group">
|
||||
<div class="mb-3 col-md-6" id="imap_pass_group">
|
||||
<label>IMAP Password</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span></div>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_imap_password" placeholder="mailbox or app password" maxlength="200" value="<?= escapeHtml($config_imap_password) ?>" autocomplete="new-password">
|
||||
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_imap_password" placeholder="mailbox or app password" maxlength="200" value="<?= escapeHtml($config_imap_password) ?>" autocomplete="new-password"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" id="imap_oauth_pointer" style="display:none;">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<span><i class="fas fa-fw fa-info-circle mr-2"></i>This provider uses OAuth — the password is ignored. Enter app credentials in the OAuth tab.</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary goto-oauth ml-3 text-nowrap"><i class="fas fa-fw fa-key mr-1"></i>Open OAuth</button>
|
||||
<span><i class="fas fa-fw fa-info-circle me-2"></i>This provider uses OAuth — the password is ignored. Enter app credentials in the OAuth tab.</span>
|
||||
<button type="button" class="btn btn-sm btn-outline-primary goto-oauth ms-3 text-nowrap"><i class="fas fa-fw fa-key me-1"></i>Open OAuth</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<button type="submit" name="edit_mail_imap_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save Receiving Settings</button>
|
||||
<button type="submit" name="edit_mail_imap_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save Receiving Settings</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -271,63 +257,56 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
<input type="hidden" name="tab" value="oauth">
|
||||
|
||||
<div class="alert alert-secondary" id="oauth_hint">
|
||||
<i class="fas fa-fw fa-info-circle mr-2"></i>These credentials are shared by any Sending or Receiving provider set to Google / Microsoft OAuth.
|
||||
<i class="fas fa-fw fa-info-circle me-2"></i>These credentials are shared by any Sending or Receiving provider set to Google / Microsoft OAuth.
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>OAuth Client ID</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-id-badge"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-id-badge"></i></span>
|
||||
<input type="text" class="form-control" name="config_mail_oauth_client_id" id="config_mail_oauth_client_id" placeholder="Application (client) ID" maxlength="255" value="<?= escapeHtml($config_mail_oauth_client_id ?? '') ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>OAuth Client Secret</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span></div>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_mail_oauth_client_secret" id="config_mail_oauth_client_secret" placeholder="Client secret value" maxlength="255" value="<?= escapeHtml($config_mail_oauth_client_secret ?? '') ?>" autocomplete="new-password">
|
||||
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
|
||||
<input type="password" class="form-control" data-toggle="password" name="config_mail_oauth_client_secret" id="config_mail_oauth_client_secret" placeholder="Client secret value" maxlength="255" value="<?= escapeHtml($config_mail_oauth_client_secret ?? '') ?>" autocomplete="new-password"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="tenant_row" style="display:none;">
|
||||
<div class="mb-3" id="tenant_row" style="display:none;">
|
||||
<label>Tenant ID <small class="text-muted">— Microsoft 365 only</small></label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-building"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
|
||||
<input type="text" class="form-control" name="config_mail_oauth_tenant_id" placeholder="Directory (tenant) ID, e.g. 00000000-0000-0000-0000-000000000000" maxlength="255" value="<?= escapeHtml($config_mail_oauth_tenant_id ?? '') ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-6">
|
||||
<div class="row g-2">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>Refresh Token</label>
|
||||
<textarea class="form-control" name="config_mail_oauth_refresh_token" rows="2" placeholder="Paste a refresh token, or use the Connect button below to fetch one"><?= escapeHtml($config_mail_oauth_refresh_token ?? '') ?></textarea>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<div class="mb-3 col-md-6">
|
||||
<label>Access Token <small class="text-muted">— optional</small></label>
|
||||
<textarea class="form-control" name="config_mail_oauth_access_token" rows="2" placeholder="Leave blank — auto-refreshed from the refresh token"><?= escapeHtml($config_mail_oauth_access_token ?? '') ?></textarea>
|
||||
<small class="form-text text-muted">Expires at: <?= !empty($config_mail_oauth_access_token_expires_at) ? htmlspecialchars($config_mail_oauth_access_token_expires_at) : 'n/a' ?></small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="ms_connect_group" style="display:none;">
|
||||
<div class="mb-3" id="ms_connect_group" style="display:none;">
|
||||
<label>Microsoft OAuth Connect (Web)</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-link"></i></span></div>
|
||||
<div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-link"></i></span>
|
||||
<input type="text" class="form-control" readonly value="<?= htmlspecialchars($mail_oauth_callback_uri) ?>">
|
||||
<div class="input-group-append">
|
||||
<button type="submit" name="oauth_connect_microsoft_mail" class="btn btn-outline-primary">
|
||||
<i class="fab fa-fw fa-microsoft mr-2"></i>Connect Microsoft 365
|
||||
<i class="fab fa-fw fa-microsoft me-2"></i>Connect Microsoft 365
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<small class="form-text text-muted">Add this callback URI in your Entra App Registration, save credentials, then click Connect to store the refresh token automatically.</small>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<button type="submit" name="edit_mail_oauth_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save OAuth Credentials</button>
|
||||
<button type="submit" name="edit_mail_oauth_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save OAuth Credentials</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -371,7 +350,7 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<button type="submit" name="edit_mail_from_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save From Addresses</button>
|
||||
<button type="submit" name="edit_mail_from_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save From Addresses</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -380,13 +359,13 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
|
||||
<?php if (!$send_ready && !$imap_ready && !$oauth_has_required_fields) { ?>
|
||||
<div class="alert alert-secondary mb-0">
|
||||
<i class="fas fa-fw fa-info-circle mr-2"></i>Finish configuring Sending, Receiving, or OAuth (plus at least one From address) to unlock the tests.
|
||||
<i class="fas fa-fw fa-info-circle me-2"></i>Finish configuring Sending, Receiving, or OAuth (plus at least one From address) to unlock the tests.
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($send_ready) { ?>
|
||||
<div class="mb-4">
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-paper-plane mr-2"></i>Send a Test Email</h6>
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-paper-plane me-2"></i>Send a Test Email</h6>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
||||
<input type="hidden" name="tab" value="tests">
|
||||
@@ -399,9 +378,7 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
<?php if ($config_ticket_from_email) { ?><option value="4"><?= escapeHtml($config_ticket_from_name) ?> (<?= escapeHtml($config_ticket_from_email) ?>)</option><?php } ?>
|
||||
</select>
|
||||
<input type="email" class="form-control" name="email_to" placeholder="recipient@example.com">
|
||||
<div class="input-group-append">
|
||||
<button type="submit" name="test_email_smtp" class="btn btn-success"><i class="fas fa-fw fa-paper-plane mr-2"></i>Send</button>
|
||||
</div>
|
||||
<button type="submit" name="test_email_smtp" class="btn btn-success"><i class="fas fa-fw fa-paper-plane me-2"></i>Send</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -409,24 +386,24 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
|
||||
<?php if ($imap_ready) { ?>
|
||||
<div class="mb-4">
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-plug mr-2"></i>Test IMAP Connection</h6>
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-plug me-2"></i>Test IMAP Connection</h6>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
||||
<input type="hidden" name="tab" value="tests">
|
||||
<button type="submit" name="test_email_imap" class="btn btn-success"><i class="fas fa-fw fa-inbox mr-2"></i>Test IMAP</button>
|
||||
<button type="submit" name="test_email_imap" class="btn btn-success"><i class="fas fa-fw fa-inbox me-2"></i>Test IMAP</button>
|
||||
</form>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($oauth_has_required_fields) { ?>
|
||||
<div>
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-sync-alt mr-2"></i>Test OAuth Token Refresh</h6>
|
||||
<h6 class="text-bold"><i class="fas fa-fw fa-sync-alt me-2"></i>Test OAuth Token Refresh</h6>
|
||||
<form action="post.php" method="post" autocomplete="off">
|
||||
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
||||
<input type="hidden" name="tab" value="tests">
|
||||
<input type="hidden" name="oauth_provider" value="<?= htmlspecialchars($oauth_provider_for_test) ?>">
|
||||
<p class="text-muted mb-2">Validates the refresh token and stores a new access token for <?= $oauth_provider_for_test === 'microsoft_oauth' ? 'Microsoft 365' : 'Google Workspace' ?>.</p>
|
||||
<button type="submit" name="test_oauth_token_refresh" class="btn btn-success"><i class="fas fa-fw fa-sync-alt mr-2"></i>Test OAuth Token Refresh</button>
|
||||
<button type="submit" name="test_oauth_token_refresh" class="btn btn-success"><i class="fas fa-fw fa-sync-alt me-2"></i>Test OAuth Token Refresh</button>
|
||||
</form>
|
||||
</div>
|
||||
<?php } ?>
|
||||
@@ -545,12 +522,12 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
|
||||
: 'xxxxxxxxxxxx.apps.googleusercontent.com';
|
||||
if (oauthClientSecret) oauthClientSecret.placeholder = anyMs ? 'Entra client secret value' : 'Google client secret';
|
||||
if (oauthHint) oauthHint.innerHTML = anyMs
|
||||
? '<i class="fas fa-fw fa-info-circle mr-2"></i>Microsoft 365: Client ID / Secret / Tenant from Entra ID; refresh token via the Connect button below.'
|
||||
: anyOauth ? '<i class="fas fa-fw fa-info-circle mr-2"></i>Google Workspace: Client ID / Secret from Google Cloud; refresh token obtained via the consent flow.'
|
||||
: '<i class="fas fa-fw fa-info-circle mr-2"></i>These credentials are shared by any Sending or Receiving provider set to Google / Microsoft OAuth.';
|
||||
? '<i class="fas fa-fw fa-info-circle me-2"></i>Microsoft 365: Client ID / Secret / Tenant from Entra ID; refresh token via the Connect button below.'
|
||||
: anyOauth ? '<i class="fas fa-fw fa-info-circle me-2"></i>Google Workspace: Client ID / Secret from Google Cloud; refresh token obtained via the consent flow.'
|
||||
: '<i class="fas fa-fw fa-info-circle me-2"></i>These credentials are shared by any Sending or Receiving provider set to Google / Microsoft OAuth.';
|
||||
|
||||
if (!anyOauth && !forcedOauthTab) {
|
||||
const oauthLink = document.querySelector('#mailTabs .nav-link[data-target="#tab-oauth"]');
|
||||
const oauthLink = document.querySelector('#mailTabs .nav-link[data-bs-target="#tab-oauth"]');
|
||||
if (oauthLink && oauthLink.classList.contains('active')) activateTab('#tab-smtp');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user