Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5

This commit is contained in:
johnnyq
2026-08-14 13:22:11 -04:00
parent 691059aab2
commit a084e37c39
458 changed files with 6069 additions and 8634 deletions

View File

@@ -25,9 +25,9 @@ $num_rows = mysqli_num_rows($sql);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-robot mr-2"></i>AI Models</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-robot me-2"></i>AI Models</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ai/ai_model_add.php"><i class="fas fa-plus mr-2"></i>Add Model</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ai/ai_model_add.php"><i class="fas fa-plus me-2"></i>Add Model</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -79,18 +79,18 @@ $num_rows = mysqli_num_rows($sql);
<td><?= $use_case ?></td> <td><?= $use_case ?></td>
<td><?= $prompt ?></td> <td><?= $prompt ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/ai/ai_model_edit.php?id=<?= $model_id ?>"> data-modal-url="modals/ai/ai_model_edit.php?id=<?= $model_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_ai_model=<?= $model_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_ai_model=<?= $model_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -14,9 +14,9 @@ $num_rows = mysqli_num_rows($sql);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-robot mr-2"></i>AI Providers</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-robot me-2"></i>AI Providers</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ai/ai_provider_add.php"><i class="fas fa-plus mr-2"></i>Add Provider</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ai/ai_provider_add.php"><i class="fas fa-plus me-2"></i>Add Provider</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -68,20 +68,20 @@ $num_rows = mysqli_num_rows($sql);
<td><?= $url ?></td> <td><?= $url ?></td>
<td><?= $key ?></td> <td><?= $key ?></td>
<td class="text-center"> <td class="text-center">
<a class="badge badge-dark badge-pill p-2" href="ai_models.php"><?= $ai_model_count ?></a> <a class="badge bg-dark rounded-pill p-2" href="ai_models.php"><?= $ai_model_count ?></a>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/ai/ai_provider_edit.php?id=<?= $provider_id ?>"> data-modal-url="modals/ai/ai_provider_edit.php?id=<?= $provider_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_ai_provider=<?= $provider_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_ai_provider=<?= $provider_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -20,9 +20,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-key mr-2"></i>API Keys</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-key me-2"></i>API Keys</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/api/api_key_add.php"><i class="fas fa-plus mr-2"></i>New API Key</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/api/api_key_add.php"><i class="fas fa-plus me-2"></i>New API Key</button>
</div> </div>
</div> </div>
@@ -34,22 +34,20 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search keys"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search keys">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
<div class="btn-group float-right"> <div class="btn-group float-end">
<div class="dropdown ml-2" id="bulkActionButton" hidden> <div class="dropdown ms-2" id="bulkActionButton" hidden>
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-fw fa-layer-group mr-2"></i>Bulk Action (<span id="selectedCount">0</span>) <i class="fas fa-fw fa-layer-group me-2"></i>Bulk Action (<span id="selectedCount">0</span>)
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<button class="dropdown-item text-danger text-bold" <button class="dropdown-item text-danger text-bold"
type="submit" form="bulkActions" name="bulk_delete_api_keys"> type="submit" form="bulkActions" name="bulk_delete_api_keys">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</button> </button>
</div> </div>
</div> </div>
@@ -69,7 +67,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<table class="table table-striped table-borderless table-hover"> <table class="table table-striped table-borderless table-hover">
<thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?>"> <thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?>">
<tr> <tr>
<td class="pr-0"> <td class="pe-0">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" onclick="checkAll(this)"> <input class="form-check-input" type="checkbox" onclick="checkAll(this)">
</div> </div>
@@ -119,7 +117,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
?> ?>
<tr> <tr>
<td class="pr-0"> <td class="pe-0">
<div class="form-check"> <div class="form-check">
<input class="form-check-input bulk-select" type="checkbox" name="api_key_ids[]" value="<?= $api_key_id ?>"> <input class="form-check-input bulk-select" type="checkbox" name="api_key_ids[]" value="<?= $api_key_id ?>">
</div> </div>
@@ -130,22 +128,22 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $api_key_created_at ?></td> <td><?= $api_key_created_at ?></td>
<td><?= $api_key_expire ?></td> <td><?= $api_key_expire ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/api/api_key_edit.php?id=<?= $api_key_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/api/api_key_edit.php?id=<?= $api_key_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if ($api_key_expire > date("Y-m-d H:i:s")) { ?> <?php if ($api_key_expire > date("Y-m-d H:i:s")) { ?>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?revoke_api_key=<?= $api_key_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?revoke_api_key=<?= $api_key_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-times mr-2"></i>Revoke <i class="fas fa-fw fa-times me-2"></i>Revoke
</a> </a>
<?php } ?> <?php } ?>
<?php if ($api_key_expire < date("Y-m-d H:i:s")) { ?> <?php if ($api_key_expire < date("Y-m-d H:i:s")) { ?>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_api_key=<?= $api_key_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_api_key=<?= $api_key_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-times mr-2"></i>Delete <i class="fas fa-fw fa-times me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -42,25 +42,23 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-history mr-2"></i>App Logs</h3> <h3 class="card-title"><i class="fas fa-fw fa-history me-2"></i>App Logs</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form autocomplete="off"> <form autocomplete="off">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-group"> <div class="mb-3">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search app logs"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search app logs">
<div class="input-group-append"> <button class="btn btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-2"> <div class="col-sm-2">
<div class="form-group"> <div class="mb-3">
<select class="form-control select2" name="type" onchange="this.form.submit()"> <select class="form-control select2" name="type" onchange="this.form.submit()">
<option value="">- All Types -</option> <option value="">- All Types -</option>
@@ -79,7 +77,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
</div> </div>
<div class="col-sm-2"> <div class="col-sm-2">
<div class="form-group"> <div class="mb-3">
<select class="form-control select2" name="category" onchange="this.form.submit()"> <select class="form-control select2" name="category" onchange="this.form.submit()">
<option value="">- All Categories -</option> <option value="">- All Categories -</option>
@@ -100,7 +98,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter"> <div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter">
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<div class="form-group"> <div class="mb-3">
<label>Date range</label> <label>Date range</label>
<input type="text" id="dateFilter" class="form-control" autocomplete="off"> <input type="text" id="dateFilter" class="form-control" autocomplete="off">
<input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>"> <input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>">
@@ -151,7 +149,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
?> ?>
<tr> <tr>
<td class="text-monospace"><?= $log_created_at ?></td> <td class="font-monospace"><?= $log_created_at ?></td>
<td><?= $log_type ?></td> <td><?= $log_type ?></td>
<td><?= $log_category ?></td> <td><?= $log_category ?></td>
<td><?= $log_details ?></td> <td><?= $log_details ?></td>

View File

@@ -67,7 +67,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-history mr-2"></i>Audit Logs</h3> <h3 class="card-title"><i class="fas fa-fw fa-history me-2"></i>Audit Logs</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form class="mb-4" autocomplete="off"> <form class="mb-4" autocomplete="off">
@@ -75,10 +75,8 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-sm-4"> <div class="col-sm-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search audit logs"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search audit logs">
<div class="input-group-append"> <button class="btn btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
@@ -163,7 +161,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter"> <div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter">
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<div class="form-group"> <div class="mb-3">
<label>Date range</label> <label>Date range</label>
<input type="text" id="dateFilter" class="form-control" autocomplete="off"> <input type="text" id="dateFilter" class="form-control" autocomplete="off">
<input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>"> <input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>">
@@ -255,7 +253,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
?> ?>
<tr> <tr>
<td class="text-monospace"><?= $log_created_at ?></td> <td class="font-monospace"><?= $log_created_at ?></td>
<td><?= $user_name_display ?></td> <td><?= $user_name_display ?></td>
<?php if(empty($client)) { ?> <?php if(empty($client)) { ?>
<td><?= $client_name_display ?></td> <td><?= $client_name_display ?></td>
@@ -263,7 +261,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $log_type ?></td> <td><?= $log_type ?></td>
<td><?= $log_action ?></td> <td><?= $log_action ?></td>
<td><?= $log_description ?></td> <td><?= $log_description ?></td>
<td class="text-monospace"><?= $log_ip ?></td> <td class="font-monospace"><?= $log_ip ?></td>
<td><?= "$log_user_os<div class='text-secondary'>$log_user_browser</div>" ?></td> <td><?= "$log_user_os<div class='text-secondary'>$log_user_browser</div>" ?></td>
</tr> </tr>

View File

@@ -33,15 +33,15 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
unset($_SESSION['backup_master_key_reveal']); unset($_SESSION['backup_master_key_reveal']);
?> ?>
<div class="alert alert-warning"> <div class="alert alert-warning">
<h5><i class="fas fa-fw fa-key mr-2"></i>Master encryption key</h5> <h5><i class="fas fa-fw fa-key me-2"></i>Master encryption key</h5>
<p class="mb-2">Shown once. Refreshing this page will not show it again.</p> <p class="mb-2">Shown once. Refreshing this page will not show it again.</p>
<input type="text" class="form-control text-monospace" value="<?= escapeHtml($master_key_reveal) ?>" readonly onclick="this.select();"> <input type="text" class="form-control font-monospace" value="<?= escapeHtml($master_key_reveal) ?>" readonly onclick="this.select();">
</div> </div>
<?php } ?> <?php } ?>
<?php if ($backup_key === '') { ?> <?php if ($backup_key === '') { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
<h5><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>No backup encryption key</h5> <h5><i class="fas fa-fw fa-exclamation-triangle me-2"></i>No backup encryption key</h5>
ITFlow could not write a backup encryption key to <strong>config.php</strong>, so it cannot produce an encrypted backup. ITFlow could not write a backup encryption key to <strong>config.php</strong>, so it cannot produce an encrypted backup.
Make config.php writable by the web server user and reload this page, or add a line like Make config.php writable by the web server user and reload this page, or add a line like
<code>$config_backup_key = '&lt;32 random characters&gt;';</code> to it yourself. <code>$config_backup_key = '&lt;32 random characters&gt;';</code> to it yourself.
@@ -50,26 +50,26 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<?php if (!$cron_is_running) { ?> <?php if (!$cron_is_running) { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
<h5><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>Cron is not running</h5> <h5><i class="fas fa-fw fa-exclamation-triangle me-2"></i>Cron is not running</h5>
Backups are built by the cron dispatcher, not by your browser. Until cron is running, anything you Backups are built by the cron dispatcher, not by your browser. Until cron is running, anything you
start here will sit in the queue. See <a href="cron.php">Maintenance &gt; Cron</a>. start here will sit in the queue. See <a href="cron.php">Maintenance &gt; Cron</a>.
</div> </div>
<?php } elseif ($config_enable_cron == 0) { ?> <?php } elseif ($config_enable_cron == 0) { ?>
<div class="alert alert-warning"> <div class="alert alert-warning">
<i class="fas fa-fw fa-exclamation-circle mr-2"></i>Cron is switched off in <i class="fas fa-fw fa-exclamation-circle me-2"></i>Cron is switched off in
<a href="cron.php">Maintenance &gt; Cron</a>. <a href="cron.php">Maintenance &gt; Cron</a>.
</div> </div>
<?php } ?> <?php } ?>
<div class="card card-dark mb-3"> <div class="card card-dark mb-3">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-cloud-upload-alt mr-2"></i>Create a Backup</h3> <h3 class="card-title"><i class="fas fa-fw fa-cloud-upload-alt me-2"></i>Create a Backup</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<?php if ($pending_count > 0) { ?> <?php if ($pending_count > 0) { ?>
<div class="alert alert-info"> <div class="alert alert-info">
<i class="fas fa-fw fa-spinner mr-2"></i><strong><?= $pending_count ?></strong> backup<?= $pending_count == 1 ? ' is' : 's are' ?> <i class="fas fa-fw fa-spinner me-2"></i><strong><?= $pending_count ?></strong> backup<?= $pending_count == 1 ? ' is' : 's are' ?>
queued or building. You will get a notification when ready - this page does not refresh itself. queued or building. You will get a notification when ready - this page does not refresh itself.
</div> </div>
<?php } ?> <?php } ?>
@@ -81,7 +81,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<h5>Full Backup</h5> <h5>Full Backup</h5>
<p class="text-muted small">The database and everything in the uploads folder. This is the one to keep.</p> <p class="text-muted small">The database and everything in the uploads folder. This is the one to keep.</p>
<a class="btn btn-primary <?= $backup_key === '' ? 'disabled' : '' ?>" href="post.php?queue_backup=full&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-primary <?= $backup_key === '' ? 'disabled' : '' ?>" href="post.php?queue_backup=full&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-play mr-2"></i>Start <i class="fas fa-fw fa-play me-2"></i>Start
</a> </a>
</div> </div>
</div> </div>
@@ -91,7 +91,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<h5>Database Only</h5> <h5>Database Only</h5>
<p class="text-muted small">Just the SQL dump. Much smaller and much quicker, but no attachments or documents.</p> <p class="text-muted small">Just the SQL dump. Much smaller and much quicker, but no attachments or documents.</p>
<a class="btn btn-primary <?= $backup_key === '' ? 'disabled' : '' ?>" href="post.php?queue_backup=database&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-primary <?= $backup_key === '' ? 'disabled' : '' ?>" href="post.php?queue_backup=database&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-play mr-2"></i>Start <i class="fas fa-fw fa-play me-2"></i>Start
</a> </a>
</div> </div>
</div> </div>
@@ -100,8 +100,8 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<i class="fas fa-fw fa-3x fa-key text-dark mb-3"></i> <i class="fas fa-fw fa-3x fa-key text-dark mb-3"></i>
<h5>Master Key</h5> <h5>Master Key</h5>
<p class="text-muted small">The credential vault key. Only needed if every user password is lost - a normal restore recovers the vault on its own.</p> <p class="text-muted small">The credential vault key. Only needed if every user password is lost - a normal restore recovers the vault on its own.</p>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#masterKeyModal"> <button type="button" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#masterKeyModal">
<i class="fas fa-fw fa-key mr-2"></i>Export <i class="fas fa-fw fa-key me-2"></i>Export
</button> </button>
</div> </div>
</div> </div>
@@ -112,7 +112,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="card card-dark mb-3"> <div class="card card-dark mb-3">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-archive mr-2"></i>Backups</h3> <h3 class="card-title"><i class="fas fa-fw fa-archive me-2"></i>Backups</h3>
</div> </div>
<div class="card-body p-0"> <div class="card-body p-0">
<div class="table-responsive"> <div class="table-responsive">
@@ -124,7 +124,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<th>Size</th> <th>Size</th>
<th>Source</th> <th>Source</th>
<th>Status</th> <th>Status</th>
<th class="text-right">Action</th> <th class="text-end">Action</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -153,7 +153,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<br><small class="text-danger"><?= escapeHtml($backup['backup_error']) ?></small> <br><small class="text-danger"><?= escapeHtml($backup['backup_error']) ?></small>
<?php } ?> <?php } ?>
</td> </td>
<td class="text-right"> <td class="text-end">
<?php if ($status === 'Complete') { ?> <?php if ($status === 'Complete') { ?>
<a class="btn btn-sm btn-primary" href="backup_download.php?backup_id=<?= $backup_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-sm btn-primary" href="backup_download.php?backup_id=<?= $backup_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-download"></i> <i class="fas fa-fw fa-download"></i>
@@ -173,11 +173,11 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="card card-dark mb-3"> <div class="card card-dark mb-3">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-lock mr-2"></i>Encryption Key</h3> <h3 class="card-title"><i class="fas fa-fw fa-lock me-2"></i>Encryption Key</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="alert alert-warning mb-3"> <div class="alert alert-warning mb-3">
<i class="fas fa-fw fa-exclamation-triangle mr-2"></i> <i class="fas fa-fw fa-exclamation-triangle me-2"></i>
<strong>Write this down and keep it somewhere other than this server.</strong> <strong>Write this down and keep it somewhere other than this server.</strong>
Every backup is encrypted with it, and without it a backup cannot be restored - not by you, Every backup is encrypted with it, and without it a backup cannot be restored - not by you,
not by anyone. It is stored in config.php and never in the database, which is what stops a not by anyone. It is stored in config.php and never in the database, which is what stops a
@@ -186,12 +186,10 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<?php if ($backup_key !== '') { ?> <?php if ($backup_key !== '') { ?>
<div class="input-group col-md-6 px-0"> <div class="input-group col-md-6 px-0">
<input type="text" class="form-control text-monospace" value="<?= escapeHtml($backup_key) ?>" readonly onclick="this.select();"> <input type="text" class="form-control font-monospace" value="<?= escapeHtml($backup_key) ?>" readonly onclick="this.select();">
<div class="input-group-append">
<button class="btn btn-secondary" type="button" onclick="navigator.clipboard.writeText('<?= escapeHtml($backup_key) ?>');"> <button class="btn btn-secondary" type="button" onclick="navigator.clipboard.writeText('<?= escapeHtml($backup_key) ?>');">
<i class="fas fa-fw fa-copy"></i> <i class="fas fa-fw fa-copy"></i>
</button> </button>
</div>
</div> </div>
<?php } ?> <?php } ?>
@@ -204,43 +202,43 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="card card-dark mb-3"> <div class="card card-dark mb-3">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-clock mr-2"></i>Scheduled Backups &amp; Retention</h3> <h3 class="card-title"><i class="fas fa-fw fa-clock me-2"></i>Scheduled Backups &amp; Retention</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="POST" autocomplete="off"> <form action="post.php" method="POST" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-4"> <div class="mb-3 col-md-4">
<label>Scheduled backup type</label> <label>Scheduled backup type</label>
<select class="form-control" name="config_backup_cron_type"> <select class="form-control" name="config_backup_cron_type">
<option <?= $config_backup_cron_type === 'full' ? 'selected' : '' ?> value="full">Full Backup</option> <option <?= $config_backup_cron_type === 'full' ? 'selected' : '' ?> value="full">Full Backup</option>
<option <?= $config_backup_cron_type === 'database' ? 'selected' : '' ?> value="database">Database Only</option> <option <?= $config_backup_cron_type === 'database' ? 'selected' : '' ?> value="database">Database Only</option>
</select> </select>
</div> </div>
<div class="form-group col-md-4"> <div class="mb-3 col-md-4">
<label>Keep backups for (days)</label> <label>Keep backups for (days)</label>
<input type="number" class="form-control" name="config_backup_retention_days" min="0" value="<?= intval($config_backup_retention_days) ?>"> <input type="number" class="form-control" name="config_backup_retention_days" min="0" value="<?= intval($config_backup_retention_days) ?>">
<small class="text-muted">0 disables age-based deletion.</small> <small class="text-muted">0 disables age-based deletion.</small>
</div> </div>
<div class="form-group col-md-4"> <div class="mb-3 col-md-4">
<label>Keep at most (per type)</label> <label>Keep at most (per type)</label>
<input type="number" class="form-control" name="config_backup_retention_count" min="1" value="<?= intval($config_backup_retention_count) ?>"> <input type="number" class="form-control" name="config_backup_retention_count" min="1" value="<?= intval($config_backup_retention_count) ?>">
<small class="text-muted">Counted separately for each type. The newest of each is never deleted.</small> <small class="text-muted">Counted separately for each type. The newest of each is never deleted.</small>
</div> </div>
</div> </div>
<button type="submit" name="edit_backup_settings" class="btn btn-primary"><i class="fas fa-fw fa-check mr-2"></i>Save</button> <button type="submit" name="edit_backup_settings" class="btn btn-primary"><i class="fas fa-fw fa-check me-2"></i>Save</button>
</form> </form>
<hr> <hr>
<p class="mb-0"> <p class="mb-0">
<?php if (!empty($backup_job) && intval($backup_job['cron_job_enabled']) === 1) { ?> <?php if (!empty($backup_job) && intval($backup_job['cron_job_enabled']) === 1) { ?>
<i class="fas fa-fw fa-check text-success mr-2"></i>Scheduled backups run daily at <i class="fas fa-fw fa-check text-success me-2"></i>Scheduled backups run daily at
<strong><?= escapeHtml(substr((string)$backup_job['cron_job_daily_at'], 0, 5)) ?></strong>. <strong><?= escapeHtml(substr((string)$backup_job['cron_job_daily_at'], 0, 5)) ?></strong>.
<?php } else { ?> <?php } else { ?>
<i class="fas fa-fw fa-times text-danger mr-2"></i>Scheduled backups are switched off. <i class="fas fa-fw fa-times text-danger me-2"></i>Scheduled backups are switched off.
<?php } ?> <?php } ?>
Turn them on or change the time in <a href="cron.php">Maintenance &gt; Cron</a>. Turn them on or change the time in <a href="cron.php">Maintenance &gt; Cron</a>.
</p> </p>
@@ -253,7 +251,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-undo mr-2"></i>Restoring</h3> <h3 class="card-title"><i class="fas fa-fw fa-undo me-2"></i>Restoring</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<p>Restoring replaces the database and the uploads folder with what is in the archive. It cannot be done from here, on purpose - a running install is the wrong place to be dropping its own tables from a browser.</p> <p>Restoring replaces the database and the uploads folder with what is in the archive. It cannot be done from here, on purpose - a running install is the wrong place to be dropping its own tables from a browser.</p>
@@ -267,8 +265,8 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title"><i class="fas fa-fw fa-key mr-2"></i>Export Master Key</h5> <h5 class="modal-title"><i class="fas fa-fw fa-key me-2"></i>Export Master Key</h5>
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button> <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div> </div>
<form action="post.php" method="POST" autocomplete="off"> <form action="post.php" method="POST" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -276,13 +274,13 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
<div class="alert alert-warning"> <div class="alert alert-warning">
This key decrypts every credential in this install. It is shown on screen and is not written anywhere. This key decrypts every credential in this install. It is shown on screen and is not written anywhere.
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Confirm your account password</label> <label>Confirm your account password</label>
<input type="password" class="form-control" name="password" autocomplete="new-password" required> <input type="password" class="form-control" name="password" autocomplete="new-password" required>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="backup_master_key" class="btn btn-primary"><i class="fas fa-fw fa-key mr-2"></i>Show Master Key</button> <button type="submit" name="backup_master_key" class="btn btn-primary"><i class="fas fa-fw fa-key me-2"></i>Show Master Key</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -67,7 +67,7 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-list-ul mr-2"></i> <h3 class="card-title mt-2"><i class="fa fa-fw fa-list-ul me-2"></i>
<?= escapeHtml($category_label) ?> Categories <?= escapeHtml($category_label) ?> Categories
</h3> </h3>
<?php <?php
@@ -75,7 +75,7 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
?> ?>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/category/category_add.php?category=<?= escapeHtml($category) ?>"><i <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/category/category_add.php?category=<?= escapeHtml($category) ?>"><i
class="fas fa-plus mr-2"></i>New <?= escapeHtml($category_label) ?> Category</button> class="fas fa-plus me-2"></i>New <?= escapeHtml($category_label) ?> Category</button>
</div> </div>
<?php <?php
} }
@@ -85,15 +85,15 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
<div class="row"> <div class="row">
<!-- Category types --> <!-- Category types -->
<div class="col-md-3 border-right mb-3"> <div class="col-md-3 border-end mb-3">
<ul class="nav nav-pills flex-column bg-light"> <ul class="nav nav-pills flex-column bg-light">
<?php foreach ($category_types as $category_type => $category_type_details) { ?> <?php foreach ($category_types as $category_type => $category_type_details) { ?>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link<?php if ($category == $category_type) { <a class="nav-link<?php if ($category == $category_type) {
echo ' active'; echo ' active';
} ?>" href="?category=<?= urlencode($category_type) ?>"> } ?>" href="?category=<?= urlencode($category_type) ?>">
<i class="fa fa-fw <?= $category_type_details['icon'] ?> mr-2"></i><?= escapeHtml($category_type_details['label']) ?> <i class="fa fa-fw <?= $category_type_details['icon'] ?> me-2"></i><?= escapeHtml($category_type_details['label']) ?>
<span class="badge badge-pill badge-dark float-right mt-1"><?= $category_type_counts[$category_type] ?? 0 ?></span> <span class="badge rounded-pill bg-dark float-end mt-1"><?= $category_type_counts[$category_type] ?? 0 ?></span>
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
@@ -115,19 +115,17 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
echo stripslashes(escapeHtml($q)); echo stripslashes(escapeHtml($q));
} ?>" } ?>"
placeholder="Search <?= escapeHtml($category_label) ?> Categories "> placeholder="Search <?= escapeHtml($category_label) ?> Categories ">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6 mb-2"> <div class="col-sm-6 mb-2">
<a href="<?= $archive_toggle_url ?>" <a href="<?= $archive_toggle_url ?>"
class="btn float-right <?php if ($archived) { class="btn float-end <?php if ($archived) {
echo 'btn-primary'; echo 'btn-primary';
} else { } else {
echo 'btn-default'; echo 'btn-default';
} ?>"><i } ?>"><i
class="fas fa-fw fa-archive mr-2"></i>Archived</a> class="fas fa-fw fa-archive me-2"></i>Archived</a>
</div> </div>
</div> </div>
</form> </form>
@@ -165,8 +163,8 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
</td> </td>
<td><i class="fa fa-3x fa-circle" style="color:<?= $category_color ?>;"></i></td> <td><i class="fa fa-3x fa-circle" style="color:<?= $category_color ?>;"></i></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
@@ -175,22 +173,22 @@ $archive_toggle_url = '?' . http_build_query($archive_toggle_query);
?> ?>
<a class="dropdown-item text-info confirm-link" <a class="dropdown-item text-info confirm-link"
href="post.php?restore_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> href="post.php?restore_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-redo mr-2"></i>Restore <i class="fas fa-fw fa-redo me-2"></i>Restore
</a> </a>
<a class="dropdown-item text-danger confirm-link" <a class="dropdown-item text-danger confirm-link"
href="post.php?delete_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> href="post.php?delete_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php <?php
} else { } else {
?> ?>
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/category/category_edit.php?id=<?= $category_id ?>"> data-modal-url="modals/category/category_edit.php?id=<?= $category_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<a class="dropdown-item text-danger confirm-link" <a class="dropdown-item text-danger confirm-link"
href="post.php?archive_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> href="post.php?archive_category=<?= $category_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php <?php
} }

View File

@@ -20,10 +20,10 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-file-contract mr-2"></i>Contract Templates</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-file-contract me-2"></i>Contract Templates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/contract_template/contract_template_add.php" data-modal-size="lg"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/contract_template/contract_template_add.php" data-modal-size="lg">
<i class="fas fa-plus mr-2"></i>New Template <i class="fas fa-plus me-2"></i>New Template
</button> </button>
</div> </div>
</div> </div>
@@ -32,9 +32,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<form autocomplete="off"> <form autocomplete="off">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search templates"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search templates">
<div class="input-group-append">
<button class="btn btn-secondary"><i class="fa fa-search"></i></button> <button class="btn btn-secondary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</form> </form>
<hr> <hr>
@@ -95,19 +93,19 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $created ?></td> <td><?= $created ?></td>
<td><?= $updated ?></td> <td><?= $updated ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-size="xl" data-modal-size="xl"
data-modal-url="modals/contract_template/contract_template_edit.php?id=<?= $id ?>"> data-modal-url="modals/contract_template/contract_template_edit.php?id=<?= $id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_contract_template=<?= $id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold" href="post.php?delete_contract_template=<?= $id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -35,13 +35,13 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-clock mr-2"></i>Cron</h3> <h3 class="card-title"><i class="fas fa-fw fa-clock me-2"></i>Cron</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<?php if (!$cron_is_running) { ?> <?php if (!$cron_is_running) { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
<h5><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>Cron is not running</h5> <h5><i class="fas fa-fw fa-exclamation-triangle me-2"></i>Cron is not running</h5>
ITFlow last heard from cron <strong><?= escapeHtml(strtolower(cronJobTimeAgo($cron_last_dispatch_at))) ?></strong>. ITFlow last heard from cron <strong><?= escapeHtml(strtolower(cronJobTimeAgo($cron_last_dispatch_at))) ?></strong>.
Nothing below will run - no mail is being sent, no email is being turned into tickets, and invoices are not being generated. Nothing below will run - no mail is being sent, no email is being turned into tickets, and invoices are not being generated.
Add this line to the crontab of the user that owns the ITFlow files: Add this line to the crontab of the user that owns the ITFlow files:
@@ -49,26 +49,26 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
</div> </div>
<?php } else { ?> <?php } else { ?>
<div class="alert alert-success"> <div class="alert alert-success">
<i class="fas fa-fw fa-check mr-2"></i>Cron last checked in <strong><?= escapeHtml(strtolower(cronJobTimeAgo($cron_last_dispatch_at))) ?></strong>. <i class="fas fa-fw fa-check me-2"></i>Cron last checked in <strong><?= escapeHtml(strtolower(cronJobTimeAgo($cron_last_dispatch_at))) ?></strong>.
<span class="text-muted ml-2"><?= escapeHtml($cron_command) ?></span> <span class="text-muted ms-2"><?= escapeHtml($cron_command) ?></span>
</div> </div>
<?php } ?> <?php } ?>
<?php if ($config_enable_cron == 0) { ?> <?php if ($config_enable_cron == 0) { ?>
<div class="alert alert-warning"> <div class="alert alert-warning">
<div class="float-right"> <div class="float-end">
<a class="btn btn-sm btn-warning" href="post.php?enable_cron=1&amp;csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-sm btn-warning" href="post.php?enable_cron=1&amp;csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-power-off mr-2"></i>Turn cron on <i class="fas fa-fw fa-power-off me-2"></i>Turn cron on
</a> </a>
</div> </div>
<h5><i class="fas fa-fw fa-exclamation-circle mr-2"></i>Cron is switched off</h5> <h5><i class="fas fa-fw fa-exclamation-circle me-2"></i>Cron is switched off</h5>
The dispatcher is running, but every job below stops itself immediately while this is off - The dispatcher is running, but every job below stops itself immediately while this is off -
no mail is sent, no email becomes a ticket, and nothing is invoiced. no mail is sent, no email becomes a ticket, and nothing is invoiced.
</div> </div>
<?php } else { ?> <?php } else { ?>
<p class="text-muted"> <p class="text-muted">
<small> <small>
<i class="fas fa-fw fa-power-off mr-1"></i>The master switch is <strong>on</strong>. Turning it off <i class="fas fa-fw fa-power-off me-1"></i>The master switch is <strong>on</strong>. Turning it off
stops every job at once without touching their schedules, which is what you want on a restored stops every job at once without touching their schedules, which is what you want on a restored
backup or a staging clone - those come up with every job enabled and will otherwise email clients backup or a staging clone - those come up with every job enabled and will otherwise email clients
and charge cards. Switching back on returns you to exactly this configuration. and charge cards. Switching back on returns you to exactly this configuration.
@@ -112,24 +112,24 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
$next_run = $job_row ? cronJobNextRun($job_row) : null; $next_run = $job_row ? cronJobNextRun($job_row) : null;
if ($run_now) { if ($run_now) {
$status_badge = '<span class="badge badge-warning">Queued</span>'; $status_badge = '<span class="badge bg-warning text-dark">Queued</span>';
} elseif ($last_status === 'Running') { } elseif ($last_status === 'Running') {
$status_badge = '<span class="badge badge-info">Running</span>'; $status_badge = '<span class="badge bg-info text-dark">Running</span>';
} elseif ($last_status === 'Completed') { } elseif ($last_status === 'Completed') {
$status_badge = '<span class="badge badge-success">Completed</span>'; $status_badge = '<span class="badge bg-success">Completed</span>';
} elseif ($last_status === 'Failed') { } elseif ($last_status === 'Failed') {
$status_badge = '<span class="badge badge-danger">Failed</span>'; $status_badge = '<span class="badge bg-danger">Failed</span>';
} elseif ($last_status !== null) { } elseif ($last_status !== null) {
$status_badge = '<span class="badge badge-secondary">Stopped</span>'; $status_badge = '<span class="badge bg-secondary">Stopped</span>';
} else { } else {
$status_badge = '<span class="badge badge-light">Never run</span>'; $status_badge = '<span class="badge bg-light text-dark">Never run</span>';
} }
?> ?>
<tr class="<?= $enabled ? '' : 'text-muted' ?>"> <tr class="<?= $enabled ? '' : 'text-muted' ?>">
<td> <td>
<strong><?= escapeHtml($job['label']) ?></strong> <strong><?= escapeHtml($job['label']) ?></strong>
<?php if (!$enabled) { ?><span class="badge badge-secondary ml-1">Disabled</span><?php } ?> <?php if (!$enabled) { ?><span class="badge bg-secondary ms-1">Disabled</span><?php } ?>
<br><small class="text-secondary"><?= escapeHtml($job['description']) ?></small> <br><small class="text-secondary"><?= escapeHtml($job['description']) ?></small>
<br><small class="text-muted"><code>cron/<?= escapeHtml($job['script']) ?></code></small> <br><small class="text-muted"><code>cron/<?= escapeHtml($job['script']) ?></code></small>
</td> </td>
@@ -147,25 +147,25 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
</td> </td>
<td><?= $next_run === null ? '-' : escapeHtml(cronJobTimeAgo($next_run)) ?></td> <td><?= $next_run === null ? '-' : escapeHtml(cronJobTimeAgo($next_run)) ?></td>
<td class="text-center"> <td class="text-center">
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i> <i class="fas fa-ellipsis-v"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item <?= $cron_job_id === 0 ? 'disabled' : '' ?>" href="post.php?run_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item <?= $cron_job_id === 0 ? 'disabled' : '' ?>" href="post.php?run_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-play mr-2"></i>Run Now <i class="fas fa-fw fa-play me-2"></i>Run Now
</a> </a>
<button class="dropdown-item ajax-modal <?= $cron_job_id === 0 ? 'disabled' : '' ?>" type="button" data-toggle="ajax-modal" <button class="dropdown-item ajax-modal <?= $cron_job_id === 0 ? 'disabled' : '' ?>" type="button" data-toggle="ajax-modal"
data-modal-url="modals/cron/cron_edit.php?id=<?= $cron_job_id ?>"> data-modal-url="modals/cron/cron_edit.php?id=<?= $cron_job_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit Schedule <i class="fas fa-fw fa-edit me-2"></i>Edit Schedule
</button> </button>
<?php if ($enabled) { ?> <?php if ($enabled) { ?>
<a class="dropdown-item text-danger" href="post.php?disable_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger" href="post.php?disable_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-pause mr-2"></i>Disable <i class="fas fa-fw fa-pause me-2"></i>Disable
</a> </a>
<?php } else { ?> <?php } else { ?>
<a class="dropdown-item text-success" href="post.php?enable_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-success" href="post.php?enable_cron_job=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-play-circle mr-2"></i>Enable <i class="fas fa-fw fa-play-circle me-2"></i>Enable
</a> </a>
<?php } ?> <?php } ?>
</div> </div>
@@ -176,13 +176,13 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
<tr> <tr>
<td colspan="7" class="pt-0"> <td colspan="7" class="pt-0">
<div class="alert alert-danger mb-0 py-2"> <div class="alert alert-danger mb-0 py-2">
<div class="float-right"> <div class="float-end">
<a class="text-danger" href="post.php?clear_cron_error=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>" title="Dismiss"> <a class="text-danger" href="post.php?clear_cron_error=<?= $cron_job_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>" title="Dismiss">
<i class="fas fa-fw fa-times"></i> <i class="fas fa-fw fa-times"></i>
</a> </a>
</div> </div>
<strong><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>Last error</strong> <strong><i class="fas fa-fw fa-exclamation-triangle me-2"></i>Last error</strong>
<small class="text-muted ml-2"><?= escapeHtml(cronJobTimeAgo($last_error_at)) ?></small> <small class="text-muted ms-2"><?= escapeHtml(cronJobTimeAgo($last_error_at)) ?></small>
<div class="mt-1"><small><?= escapeHtml($last_error) ?></small></div> <div class="mt-1"><small><?= escapeHtml($last_error) ?></small></div>
</div> </div>
</td> </td>
@@ -195,7 +195,7 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
<p class="text-muted mb-0"> <p class="text-muted mb-0">
<small> <small>
<i class="fas fa-fw fa-info-circle mr-1"></i>Run Now does not start the job in your browser - it asks the <i class="fas fa-fw fa-info-circle me-1"></i>Run Now does not start the job in your browser - it asks the
dispatcher to pick it up on its next pass, so a job starts within a minute and still runs on the command dispatcher to pick it up on its next pass, so a job starts within a minute and still runs on the command
line with the same locking as a scheduled run. Detailed per-job output is in line with the same locking as a scheduled run. Detailed per-job output is in
<a href="app_logs.php">App Logs</a>. <a href="app_logs.php">App Logs</a>.

View File

@@ -20,9 +20,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-external-link-alt mr-2"></i>Custom Links</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-external-link-alt me-2"></i>Custom Links</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/custom_link/custom_link_add.php"><i class="fas fa-plus mr-2"></i>New Link</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/custom_link/custom_link_add.php"><i class="fas fa-plus me-2"></i>New Link</button>
</div> </div>
</div> </div>
@@ -32,9 +32,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<form autocomplete="off"> <form autocomplete="off">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Links"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Links">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</form> </form>
</div> </div>
@@ -108,24 +106,24 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td> <td>
<a class="ajax-modal" href="#" <a class="ajax-modal" href="#"
data-modal-url="modals/custom_link/custom_link_edit.php?id=<?= $custom_link_id ?>"> data-modal-url="modals/custom_link/custom_link_edit.php?id=<?= $custom_link_id ?>">
<i class="fa fa-fw fa-<?= $custom_link_icon ?> mr-2"></i><?= $custom_link_name ?> <i class="fa fa-fw fa-<?= $custom_link_icon ?> me-2"></i><?= $custom_link_name ?>
</a> </a>
</td> </td>
<td><?= $custom_link_order_display ?></td> <td><?= $custom_link_order_display ?></td>
<td><?= "$custom_link_uri $custom_link_new_tab_display" ?></td> <td><?= "$custom_link_uri $custom_link_new_tab_display" ?></td>
<td><?= $custom_link_location_display ?></td> <td><?= $custom_link_location_display ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/custom_link/custom_link_edit.php?id=<?= $custom_link_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/custom_link/custom_link_edit.php?id=<?= $custom_link_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_link=<?= $custom_link_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_link=<?= $custom_link_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -508,7 +508,7 @@ $mysqli->close();
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-bug mr-2"></i>Debug</h3> <h3 class="card-title"><i class="fas fa-fw fa-bug me-2"></i>Debug</h3>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -44,19 +44,19 @@ $document_template_updated_at = escapeHtml($row['document_template_updated_at'])
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="document_templates.php">Document Templates</a> <a href="document_templates.php">Document Templates</a>
</li> </li>
<li class="breadcrumb-item active"><i class="fas fa-file-alt mr-2"></i><?= $document_template_name ?></li> <li class="breadcrumb-item active"><i class="fas fa-file-alt me-2"></i><?= $document_template_name ?></li>
</ol> </ol>
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header">
<h3 class="card-title mt-1"><i class="fa fa-fw fa-file-alt mr-2"></i><?= $document_template_name ?></h3> <h3 class="card-title mt-1"><i class="fa fa-fw fa-file-alt me-2"></i><?= $document_template_name ?></h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-tool ajax-modal" <button type="button" class="btn btn-tool ajax-modal"
data-modal-size="xl" data-modal-size="xl"
data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>"> data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>">
<i class="fas fa-edit mr-2"></i> <i class="fas fa-edit me-2"></i>
</button> </button>
</div> </div>
</div> </div>

View File

@@ -21,10 +21,10 @@
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-file-alt mr-2"></i>Document Templates</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-file-alt me-2"></i>Document Templates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/document_template/document_template_add.php" data-modal-size="xl"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/document_template/document_template_add.php" data-modal-size="xl">
<i class="fas fa-plus mr-2"></i>New Template <i class="fas fa-plus me-2"></i>New Template
</button> </button>
</div> </div>
</div> </div>
@@ -33,9 +33,7 @@
<form autocomplete="off"> <form autocomplete="off">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control " name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search templates"> <input type="search" class="form-control " name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search templates">
<div class="input-group-append">
<button class="btn btn-secondary"><i class="fa fa-search"></i></button> <button class="btn btn-secondary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</form> </form>
<hr> <hr>
@@ -83,9 +81,9 @@
<a class="text-dark ajax-modal" href="#" <a class="text-dark ajax-modal" href="#"
data-modal-size="xl" data-modal-size="xl"
data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>"> data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>">
<div class="media"> <div class="d-flex">
<i class="fas fa-fw fa-2x fa-file-alt mr-2"></i> <i class="fas fa-fw fa-2x fa-file-alt me-2"></i>
<div class="media-body"> <div class="flex-grow-1">
<div><?= $document_template_name ?></div> <div><?= $document_template_name ?></div>
<div><small class="text-secondary"><?= $document_template_description ?></small></div> <div><small class="text-secondary"><?= $document_template_description ?></small></div>
</div> </div>
@@ -98,23 +96,23 @@
</td> </td>
<td><?= $document_template_updated_at ?></td> <td><?= $document_template_updated_at ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href="document_template.php?document_template_id=<?= $document_template_id ?>"> <a class="dropdown-item" href="document_template.php?document_template_id=<?= $document_template_id ?>">
<i class="fas fa-fw fa-eye mr-2"></i>View <i class="fas fa-fw fa-eye me-2"></i>View
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-size="xl" data-modal-size="xl"
data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>"> data-modal-url="modals/document_template/document_template_edit.php?id=<?= $document_template_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_document_template=<?= $document_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold" href="post.php?delete_document_template=<?= $document_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -4,7 +4,7 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-fingerprint mr-2"></i>Identity Providers</h3> <h3 class="card-title"><i class="fas fa-fw fa-fingerprint me-2"></i>Identity Providers</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
@@ -12,12 +12,10 @@ require_once "includes/inc_all_admin.php";
<h4>Client Portal SSO via Microsoft Entra</h4> <h4>Client Portal SSO via Microsoft Entra</h4>
<div class="form-group"> <div class="mb-3">
<label>Identity Provider <small class='text-secondary'>(Currently only works with Microsoft Entra ID/AAD)</small></label> <label>Identity Provider <small class='text-secondary'>(Currently only works with Microsoft Entra ID/AAD)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span>
</div>
<select class="form-control select2" readonly> <select class="form-control select2" readonly>
<option <?php if (empty($config_azure_client_id)) { echo "selected"; } ?>>Disabled</option> <option <?php if (empty($config_azure_client_id)) { echo "selected"; } ?>>Disabled</option>
<option <?php if ($config_azure_client_id) { echo "selected"; } ?>>Microsoft Entra</option> <option <?php if ($config_azure_client_id) { echo "selected"; } ?>>Microsoft Entra</option>
@@ -27,29 +25,25 @@ require_once "includes/inc_all_admin.php";
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>MS Entra OAuth App (Client) ID</label> <label>MS Entra OAuth App (Client) ID</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<input type="text" class="form-control" name="azure_client_id" placeholder="e721e3b6-01d6-50e8-7f22-c84d951a52e7" maxlength="200" value="<?= escapeHtml($config_azure_client_id) ?>"> <input type="text" class="form-control" name="azure_client_id" placeholder="e721e3b6-01d6-50e8-7f22-c84d951a52e7" maxlength="200" value="<?= escapeHtml($config_azure_client_id) ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>MS Entra OAuth Secret</label> <label>MS Entra OAuth Secret</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="password" class="form-control" name="azure_client_secret" placeholder="Auto-generated from App Registration" maxlength="200" value="<?= escapeHtml($config_azure_client_secret) ?>" autocomplete="new-password"> <input type="password" class="form-control" name="azure_client_secret" placeholder="Auto-generated from App Registration" maxlength="200" value="<?= escapeHtml($config_azure_client_secret) ?>" autocomplete="new-password">
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_identity_provider" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_identity_provider" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -1,8 +1,8 @@
<!-- Main Sidebar Container --> <!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-dark-<?= escapeHtml($config_theme) ?> d-print-none"> <aside class="app-sidebar shadow d-print-none" data-bs-theme="dark">
<a class="brand-link pb-1 mt-1" href="/agent/<?= $config_start_page ?>"> <a class="brand-link pb-1 mt-1" href="/agent/<?= $config_start_page ?>">
<p class="h6"> <p class="h6">
<i class="nav-icon fas fa-arrow-left ml-3 mr-2"></i> <i class="nav-icon fas fa-arrow-left ms-3 me-2"></i>
<span class="brand-text"> <span class="brand-text">
Back | <strong>Administration</strong> Back | <strong>Administration</strong>
</span> </span>
@@ -10,10 +10,10 @@
</a> </a>
<!-- Sidebar --> <!-- Sidebar -->
<div class="sidebar"> <div class="sidebar-wrapper">
<!-- Sidebar Menu --> <!-- Sidebar Menu -->
<nav> <nav>
<ul class="nav nav-pills nav-sidebar flex-column mt-2" data-widget="treeview" data-accordion="false"> <ul class="nav nav-pills sidebar-menu flex-column mt-2" data-lte-toggle="treeview" data-accordion="false">
<li class="nav-header">ACCESS</li> <li class="nav-header">ACCESS</li>
<li class="nav-item"> <li class="nav-item">
<a href="/admin/users.php" class="nav-link <?php if (basename($_SERVER["PHP_SELF"]) == "users.php") {echo "active";} ?>"> <a href="/admin/users.php" class="nav-link <?php if (basename($_SERVER["PHP_SELF"]) == "users.php") {echo "active";} ?>">
@@ -336,7 +336,7 @@
<a href="<?= $custom_link_uri ?>" <?= $target ?> class="nav-link <?php if (basename($_SERVER["PHP_SELF"]) == basename($custom_link_uri)) { echo "active"; } ?>"> <a href="<?= $custom_link_uri ?>" <?= $target ?> class="nav-link <?php if (basename($_SERVER["PHP_SELF"]) == basename($custom_link_uri)) { echo "active"; } ?>">
<i class="fas fa-<?= $custom_link_icon ?> nav-icon"></i> <i class="fas fa-<?= $custom_link_icon ?> nav-icon"></i>
<p><?= $custom_link_name ?></p> <p><?= $custom_link_name ?></p>
<i class="fas fa-angle-right nav-icon float-right"></i> <i class="fas fa-angle-right nav-icon float-end"></i>
</a> </a>
</li> </li>

View File

@@ -21,7 +21,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-inbox mr-2"></i>Email Queue</h3> <h3 class="card-title"><i class="fas fa-fw fa-inbox me-2"></i>Email Queue</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form class="mb-4" autocomplete="off"> <form class="mb-4" autocomplete="off">
@@ -29,26 +29,24 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-sm-4"> <div class="col-sm-4">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search mail queue"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search mail queue">
<div class="input-group-append"> <button class="btn btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="dropdown float-right" id="bulkActionButton" hidden> <div class="dropdown float-end" id="bulkActionButton" hidden>
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-fw fa-layer-group mr-2"></i>Bulk Action (<span id="selectedCount">0</span>) <i class="fas fa-fw fa-layer-group me-2"></i>Bulk Action (<span id="selectedCount">0</span>)
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<button class="dropdown-item" <button class="dropdown-item"
type="submit" form="bulkActions" name="bulk_cancel_emails"> type="submit" form="bulkActions" name="bulk_cancel_emails">
<i class="fas fa-fw fa-ban mr-2"></i>Cancel <i class="fas fa-fw fa-ban me-2"></i>Cancel
</button> </button>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<button class="dropdown-item text-danger text-bold" <button class="dropdown-item text-danger text-bold"
type="submit" form="bulkActions" name="bulk_delete_emails"> type="submit" form="bulkActions" name="bulk_delete_emails">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</button> </button>
</div> </div>
</div> </div>
@@ -57,7 +55,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter"> <div class="collapse mt-3 <?php if (isset($_GET['dtf']) && $_GET['dtf'] !== '1970-01-01') { echo "show"; } ?>" id="advancedFilter">
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-3">
<div class="form-group"> <div class="mb-3">
<label>Date range</label> <label>Date range</label>
<input type="text" id="dateFilter" class="form-control" autocomplete="off"> <input type="text" id="dateFilter" class="form-control" autocomplete="off">
<input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>"> <input type="hidden" name="canned_date" id="canned_date" value="<?= escapeHtml($_GET['canned_date']) ?? '' ?>">
@@ -76,7 +74,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<table class="table table-sm table-striped table-borderless table-hover"> <table class="table table-sm table-striped table-borderless table-hover">
<thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?>"> <thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?>">
<tr> <tr>
<td class="bg-light pr-0"> <td class="bg-light pe-0">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" id="selectAllCheckbox" type="checkbox" onclick="checkAll(this)"> <input class="form-check-input" id="selectAllCheckbox" type="checkbox" onclick="checkAll(this)">
</div> </div>
@@ -134,22 +132,22 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
} elseif($email_status == 1) { } elseif($email_status == 1) {
$email_status_display = "<div class='text-warning'>Sending</div>"; $email_status_display = "<div class='text-warning'>Sending</div>";
} elseif($email_status == 2) { } elseif($email_status == 2) {
$email_status_display = "<div class='text-danger'>Failed</div><small class='text-secondary text-monospace'>$email_failed_at</small>"; $email_status_display = "<div class='text-danger'>Failed</div><small class='text-secondary font-monospace'>$email_failed_at</small>";
} else { } else {
$email_status_display = "<div class='text-success'>Sent</div><small class='text-secondary text-monospace'>$email_sent_at</small>"; $email_status_display = "<div class='text-success'>Sent</div><small class='text-secondary font-monospace'>$email_sent_at</small>";
} }
?> ?>
<tr> <tr>
<td class="pr-0 bg-light"> <td class="pe-0 bg-light">
<?php if ($email_status !== 3) { ?> <?php if ($email_status !== 3) { ?>
<div class="form-check"> <div class="form-check">
<input class="form-check-input bulk-select" type="checkbox" name="email_ids[]" value="<?= $email_id ?>"> <input class="form-check-input bulk-select" type="checkbox" name="email_ids[]" value="<?= $email_id ?>">
</div> </div>
<?php } ?> <?php } ?>
</td> </td>
<td class="text-monospace"><?= $email_queued_at ?></td> <td class="font-monospace"><?= $email_queued_at ?></td>
<td><?= "$email_from<br><small class='text-secondary'>$email_from_name</small>" ?></td> <td><?= "$email_from<br><small class='text-secondary'>$email_from_name</small>" ?></td>
<td><?= "$email_recipient<br><small class='text-secondary'>$email_recipient_name</small>" ?></td> <td><?= "$email_recipient<br><small class='text-secondary'>$email_recipient_name</small>" ?></td>
<td><?= $email_subject ?></td> <td><?= $email_subject ?></td>

View File

@@ -7,22 +7,18 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-robot mr-2"></i>Add AI Model</h5> <h5 class="modal-title"><i class="fa fa-fw fa-robot me-2"></i>Add AI Model</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Provider <strong class="text-danger">*</strong></label> <label>Provider <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<select class="form-control select2" name="provider" required> <select class="form-control select2" name="provider" required>
<option value="">- Select an AI Provider -</option> <option value="">- Select an AI Provider -</option>
<?php <?php
@@ -38,22 +34,18 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Model Name <strong class="text-danger">*</strong></label> <label>Model Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<input type="text" class="form-control" name="model" placeholder="ex gpt-4" maxlength="200"> <input type="text" class="form-control" name="model" placeholder="ex gpt-4" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Use Case <strong class="text-danger">*</strong></label> <label>Use Case <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-th-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-th-list"></i></span>
</div>
<select class="form-control select2" name="use_case"> <select class="form-control select2" name="use_case">
<option>General</option> <option>General</option>
<option>Tickets</option> <option>Tickets</option>
@@ -62,25 +54,23 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Temperature</label> <label>Temperature</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-thermometer-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-thermometer-half"></i></span>
</div>
<input type="number" class="form-control" name="temperature" step="0.1" min="0" max="2" value="" placeholder="Provider default"> <input type="number" class="form-control" name="temperature" step="0.1" min="0" max="2" value="" placeholder="Provider default">
</div> </div>
<small class="form-text text-muted">Optional. Leave blank to let the provider use its default - some newer models reject every other value.</small> <small class="form-text text-muted">Optional. Leave blank to let the provider use its default - some newer models reject every other value.</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="8" name="prompt" placeholder="Enter a model prompt:"></textarea> <textarea class="form-control" rows="8" name="prompt" placeholder="Enter a model prompt:"></textarea>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_ai_model" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_ai_model" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -19,10 +19,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-robot mr-2"></i>Editing: <strong><?= $model_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-robot me-2"></i>Editing: <strong><?= $model_name ?></strong></h5>
<button type="button" class="close text-light" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -30,12 +28,10 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Provider <strong class="text-danger">*</strong></label> <label>Provider <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<select class="form-control select2" name="provider" required> <select class="form-control select2" name="provider" required>
<option value="">- Select an AI Provider -</option> <option value="">- Select an AI Provider -</option>
<?php <?php
@@ -51,22 +47,18 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Model Name <strong class="text-danger">*</strong></label> <label>Model Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<input type="text" class="form-control" name="model" value="<?= $model_name ?>" placeholder="ex gpt-4" maxlength="200"> <input type="text" class="form-control" name="model" value="<?= $model_name ?>" placeholder="ex gpt-4" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Use Case <strong class="text-danger">*</strong></label> <label>Use Case <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-th-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-th-list"></i></span>
</div>
<select class="form-control select2" name="use_case"> <select class="form-control select2" name="use_case">
<option <?php if ($use_case == 'General') { echo "selected"; } ?>>General</option> <option <?php if ($use_case == 'General') { echo "selected"; } ?>>General</option>
<option <?php if ($use_case == 'Tickets') { echo "selected"; } ?>>Tickets</option> <option <?php if ($use_case == 'Tickets') { echo "selected"; } ?>>Tickets</option>
@@ -75,24 +67,22 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Temperature</label> <label>Temperature</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-thermometer-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-thermometer-half"></i></span>
</div>
<input type="number" class="form-control" name="temperature" step="0.1" min="0" max="2" value="<?= $temperature ?>" placeholder="Provider default"> <input type="number" class="form-control" name="temperature" step="0.1" min="0" max="2" value="<?= $temperature ?>" placeholder="Provider default">
</div> </div>
<small class="form-text text-muted">Optional. Leave blank to let the provider use its default - some newer models reject every other value.</small> <small class="form-text text-muted">Optional. Leave blank to let the provider use its default - some newer models reject every other value.</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="8" name="prompt" placeholder="Enter a model prompt:"><?= $prompt ?></textarea> <textarea class="form-control" rows="8" name="prompt" placeholder="Enter a model prompt:"><?= $prompt ?></textarea>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_ai_model" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ai_model" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -7,50 +7,42 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-robot mr-2"></i>New AI Provider</h5> <h5 class="modal-title"><i class="fa fa-fw fa-robot me-2"></i>New AI Provider</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Provider Name <strong class="text-danger">*</strong></label> <label>Provider Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<input type="text" class="form-control" name="provider" placeholder="ex OpenAI" maxlength="200"> <input type="text" class="form-control" name="provider" placeholder="ex OpenAI" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>URL <strong class="text-danger">*</strong></label> <label>URL <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
</div>
<input type="url" class="form-control" name="url" placeholder="ex https://ai.company.ext/api" maxlength="200"> <input type="url" class="form-control" name="url" placeholder="ex https://ai.company.ext/api" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>API Key</label> <label>API Key</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="api_key" placeholder="Enter API key here" maxlength="200"> <input type="text" class="form-control" name="api_key" placeholder="Enter API key here" maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_ai_provider" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_ai_provider" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -16,10 +16,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-robot mr-2"></i>Editing: <strong><?= $provider_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-robot me-2"></i>Editing: <strong><?= $provider_name ?></strong></h5>
<button type="button" class="close text-light" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -27,40 +25,34 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Provider Name <strong class="text-danger">*</strong></label> <label>Provider Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-robot"></i></span>
</div>
<input type="text" class="form-control" name="provider" value="<?= $provider_name ?>" placeholder="ex OpenAI" maxlength="200"> <input type="text" class="form-control" name="provider" value="<?= $provider_name ?>" placeholder="ex OpenAI" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>URL <strong class="text-danger">*</strong></label> <label>URL <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
</div>
<input type="url" class="form-control" name="url" value="<?= $url ?>" placeholder="ex https://ai.company.ext/api" maxlength="200"> <input type="url" class="form-control" name="url" value="<?= $url ?>" placeholder="ex https://ai.company.ext/api" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>API Key</label> <label>API Key</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="api_key" value="<?= $key ?>" placeholder="Enter API key here" maxlength="200"> <input type="text" class="form-control" name="api_key" value="<?= $key ?>" placeholder="Enter API key here" maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_ai_provider" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ai_provider" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -10,20 +10,18 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-key mr-2"></i>New Key</h5> <h5 class="modal-title"><i class="fas fa-fw fa-key me-2"></i>New Key</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<div class="modal-body"> <div class="modal-body">
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-api-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-api-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-api-keys">Keys</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-api-keys">Keys</a>
</li> </li>
</ul> </ul>
<hr> <hr>
@@ -35,32 +33,26 @@ ob_start();
<input type="hidden" name="key" value="<?= $key ?>"> <input type="hidden" name="key" value="<?= $key ?>">
<input type="hidden" name="password" value="<?= $decryptPW ?>"> <input type="hidden" name="password" value="<?= $decryptPW ?>">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sticky-note"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sticky-note"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Key Name" maxlength="255" required autofocus> <input type="text" class="form-control" name="name" placeholder="Key Name" maxlength="255" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expiration Date <strong class="text-danger">*</strong></label> <label>Expiration Date <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="date" class="form-control" name="expire" min="<?= date('Y-m-d') ?>" max="2999-12-31" required> <input type="date" class="form-control" name="expire" min="<?= date('Y-m-d') ?>" max="2999-12-31" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Run as User <strong class="text-danger">*</strong></label> <label>Run as User <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="run_as_user" required> <select class="form-control select2" name="run_as_user" required>
<option value="">- Select a user -</option> <option value="">- Select a user -</option>
<?php <?php
@@ -77,38 +69,28 @@ ob_start();
</div> </div>
<div class="tab-pane fade" id="pills-api-keys"> <div class="tab-pane fade" id="pills-api-keys">
<div class="form-group"> <div class="mb-3">
<label>API Key <strong class="text-danger">*</strong></label> <label>API Key <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" value="<?= $key ?>" required disabled> <input type="text" class="form-control" value="<?= $key ?>" required disabled>
<div class="input-group-append">
<button class="btn btn-default clipboardjs" type="button" data-clipboard-text="<?= $key ?>"><i class="fa fa-fw fa-copy"></i></button> <button class="btn btn-default clipboardjs" type="button" data-clipboard-text="<?= $key ?>"><i class="fa fa-fw fa-copy"></i></button>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Login credential decryption password <strong class="text-danger">*</strong></label> <label>Login credential decryption password <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-unlock-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-unlock-alt"></i></span>
</div>
<input type="text" class="form-control" value="<?= $decryptPW ?>" required disabled> <input type="text" class="form-control" value="<?= $decryptPW ?>" required disabled>
<div class="input-group-append">
<button class="btn btn-default clipboardjs" type="button" data-clipboard-text="<?= $decryptPW ?>"><i class="fa fa-fw fa-copy"></i></button> <button class="btn btn-default clipboardjs" type="button" data-clipboard-text="<?= $decryptPW ?>"><i class="fa fa-fw fa-copy"></i></button>
</div>
</div> </div>
</div> </div>
<br> <br>
<div class="form-group"> <div class="mb-3">
<label>I have made a copy of the key(s)<strong class="text-danger">*</strong></label> <label>I have made a copy of the key(s)<strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<input type="checkbox" name="ack" value="1" required> <input type="checkbox" name="ack" value="1" required>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -117,8 +99,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_api_key" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_api_key" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -14,11 +14,9 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-key mr-2"></i>Editing API Key: <h5 class="modal-title"><i class="fas fa-fw fa-key me-2"></i>Editing API Key:
<strong><?= $api_key_name ?></strong></h5> <strong><?= $api_key_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<div class="modal-body"> <div class="modal-body">
@@ -26,34 +24,28 @@ ob_start();
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="api_key_id" value="<?= $api_key_id ?>"> <input type="hidden" name="api_key_id" value="<?= $api_key_id ?>">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sticky-note"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sticky-note"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Key Name" maxlength="255" <input type="text" class="form-control" name="name" placeholder="Key Name" maxlength="255"
value="<?= $api_key_name ?>" required autofocus> value="<?= $api_key_name ?>" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expiration Date <strong class="text-danger">*</strong></label> <label>Expiration Date <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="date" class="form-control" name="expire" min="<?= date('Y-m-d') ?>" max="2999-12-31" <input type="date" class="form-control" name="expire" min="<?= date('Y-m-d') ?>" max="2999-12-31"
value="<?= $api_key_expire ?>" required> value="<?= $api_key_expire ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Run as User <strong class="text-danger">*</strong></label> <label>Run as User <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="run_as_user" required> <select class="form-control select2" name="run_as_user" required>
<option value="">- Select a user -</option> <option value="">- Select a user -</option>
<?php <?php
@@ -70,8 +62,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_api_key" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_api_key" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -9,10 +9,8 @@ $category_types_array = ['Expense', 'Income', 'Referral', 'Ticket'];
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-list-ul mr-2"></i>New <strong><?= escapeHtml(ucwords(str_replace('_', ' ', $category))); ?></strong> Category</h5> <h5 class="modal-title"><i class="fa fa-fw fa-list-ul me-2"></i>New <strong><?= escapeHtml(ucwords(str_replace('_', ' ', $category))); ?></strong> Category</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -23,12 +21,10 @@ $category_types_array = ['Expense', 'Income', 'Referral', 'Ticket'];
<input type="hidden" name="type" value="<?= $category ?>"> <input type="hidden" name="type" value="<?= $category ?>">
<?php } else { ?> <?php } else { ?>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select Type -</option> <option value="">- Select Type -</option>
<?php foreach ($category_types_array as $type_select) { ?> <?php foreach ($category_types_array as $type_select) { ?>
@@ -40,40 +36,34 @@ $category_types_array = ['Expense', 'Income', 'Referral', 'Ticket'];
<?php } ?> <?php } ?>
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Category name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Category name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" required> <input type="color" class="form-control col-3" name="color" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-fw fa-align-left"></i></span> <span class="input-group-text"><i class="fas fa-fw fa-align-left"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Enter a description" maxlength="200"> <input type="text" class="form-control" name="description" placeholder="Enter a description" maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_category" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create Category</button> <button type="submit" name="add_category" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create Category</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -16,10 +16,8 @@ $category_type = escapeHtml($row['category_type']);
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-list-ul mr-2"></i>Editing category: <strong><?= $category_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-list-ul me-2"></i>Editing category: <strong><?= $category_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -27,40 +25,34 @@ ob_start();
<input type="hidden" name="type" value="<?= $category_type ?>"> <input type="hidden" name="type" value="<?= $category_type ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span>
</div>
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $category_name ?>" required> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $category_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" value="<?= $category_color ?>" required> <input type="color" class="form-control col-3" name="color" value="<?= $category_color ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-fw fa-align-left"></i></span> <span class="input-group-text"><i class="fas fa-fw fa-align-left"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Enter a description" maxlength="200" value="<?= $category_description ?>"> <input type="text" class="form-control" name="description" placeholder="Enter a description" maxlength="200" value="<?= $category_description ?>">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_category" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_category" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -9,23 +9,23 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-file-contract mr-2"></i>New Contract Template</h5> <h5 class="modal-title"><i class="fa fa-fw fa-file-contract me-2"></i>New Contract Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"><span>&times;</span></button> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div> </div>
<!-- Tabs Navigation --> <!-- Tabs Navigation -->
<ul class="modal-header nav nav-pills nav-justified"> <ul class="modal-header nav nav-pills nav-justified">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" id="general-tab" data-toggle="tab" href="#general" role="tab">General Info</a> <a class="nav-link active" id="general-tab" data-bs-toggle="tab" href="#general" role="tab">General Info</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="sla-tab" data-toggle="tab" href="#sla" role="tab">SLA</a> <a class="nav-link" id="sla-tab" data-bs-toggle="tab" href="#sla" role="tab">SLA</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="rates-tab" data-toggle="tab" href="#rates" role="tab">Rates & Support</a> <a class="nav-link" id="rates-tab" data-bs-toggle="tab" href="#rates" role="tab">Rates & Support</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="details-tab" data-toggle="tab" href="#details" role="tab">Details</a> <a class="nav-link" id="details-tab" data-bs-toggle="tab" href="#details" role="tab">Details</a>
</li> </li>
</ul> </ul>
@@ -37,33 +37,27 @@ ob_start();
<!-- General Info Tab --> <!-- General Info Tab -->
<div class="tab-pane fade show active" id="general" role="tabpanel"> <div class="tab-pane fade show active" id="general" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-file-contract"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-file-contract"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Contract Template Name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Contract Template Name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Template Description <strong class="text-danger">*</strong></label> <label>Template Description <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span>
</div>
<input type="text" class="form-control" name="description" <input type="text" class="form-control" name="description"
placeholder="Contract Template Description" maxlength="200" required> placeholder="Contract Template Description" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Contract Type <strong class="text-danger">*</strong></label> <label>Contract Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select Type -</option> <option value="">- Select Type -</option>
<?php foreach ($contract_types_array as $type) { ?> <?php foreach ($contract_types_array as $type) { ?>
@@ -73,12 +67,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Renewal Frequency</label> <label>Renewal Frequency</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sync-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sync-alt"></i></span>
</div>
<select class="form-control select2" name="renewal_frequency"> <select class="form-control select2" name="renewal_frequency">
<option value="">- Select Frequency -</option> <option value="">- Select Frequency -</option>
<?php foreach ($renewal_frequency_array as $renewal_frequency) { ?> <?php foreach ($renewal_frequency_array as $renewal_frequency) { ?>
@@ -91,64 +83,52 @@ ob_start();
<!-- SLA Tab --> <!-- SLA Tab -->
<div class="tab-pane fade" id="sla" role="tabpanel"> <div class="tab-pane fade" id="sla" role="tabpanel">
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Low Priority Response (hrs)</label> <label>Low Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="sla_low_response_time" placeholder="e.g., 24"> <input type="number" class="form-control" name="sla_low_response_time" placeholder="e.g., 24">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Low Priority Resolution (hrs)</label> <label>Low Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span>
</div>
<input type="number" class="form-control" name="sla_low_resolution_time" placeholder="e.g., 48"> <input type="number" class="form-control" name="sla_low_resolution_time" placeholder="e.g., 48">
</div> </div>
</div> </div>
</div> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Medium Priority Response (hrs)</label> <label>Medium Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="sla_medium_response_time" placeholder="e.g., 12"> <input type="number" class="form-control" name="sla_medium_response_time" placeholder="e.g., 12">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Medium Priority Resolution (hrs)</label> <label>Medium Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span>
</div>
<input type="number" class="form-control" name="sla_medium_resolution_time" placeholder="e.g., 24"> <input type="number" class="form-control" name="sla_medium_resolution_time" placeholder="e.g., 24">
</div> </div>
</div> </div>
</div> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>High Priority Response (hrs)</label> <label>High Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-bolt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-bolt"></i></span>
</div>
<input type="number" class="form-control" name="sla_high_response_time" placeholder="e.g., 1"> <input type="number" class="form-control" name="sla_high_response_time" placeholder="e.g., 1">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>High Priority Resolution (hrs)</label> <label>High Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<input type="number" class="form-control" name="sla_high_resolution_time" placeholder="e.g., 4"> <input type="number" class="form-control" name="sla_high_resolution_time" placeholder="e.g., 4">
</div> </div>
</div> </div>
@@ -157,42 +137,34 @@ ob_start();
<!-- Rates & Support Tab --> <!-- Rates & Support Tab -->
<div class="tab-pane fade" id="rates" role="tabpanel"> <div class="tab-pane fade" id="rates" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<label>Standard Hourly Rate</label> <label>Standard Hourly Rate</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-dollar-sign"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-dollar-sign"></i></span>
</div>
<input type="text" class="form-control" name="rate_standard" placeholder="e.g., 100"> <input type="text" class="form-control" name="rate_standard" placeholder="e.g., 100">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>After Hours Hourly Rate</label> <label>After Hours Hourly Rate</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-moon"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-moon"></i></span>
</div>
<input type="text" class="form-control" name="rate_after_hours" placeholder="e.g., 150"> <input type="text" class="form-control" name="rate_after_hours" placeholder="e.g., 150">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Hours</label> <label>Support Hours</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="text" class="form-control" name="support_hours" placeholder="e.g., Mon-Fri 9am-5pm" maxlength="100"> <input type="text" class="form-control" name="support_hours" placeholder="e.g., Mon-Fri 9am-5pm" maxlength="100">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Net Terms</label> <label>Net Terms</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-file-invoice-dollar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-file-invoice-dollar"></i></span>
</div>
<input type="text" class="form-control" name="net_terms" placeholder="e.g., Net 30" maxlength="50"> <input type="text" class="form-control" name="net_terms" placeholder="e.g., Net 30" maxlength="50">
</div> </div>
</div> </div>
@@ -200,7 +172,7 @@ ob_start();
<!-- Details Tab --> <!-- Details Tab -->
<div class="tab-pane fade" id="details" role="tabpanel"> <div class="tab-pane fade" id="details" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<textarea class="form-control tinymce" rows="6" name="details" placeholder="Enter Contract Details"></textarea> <textarea class="form-control tinymce" rows="6" name="details" placeholder="Enter Contract Details"></textarea>
</div> </div>
</div> </div>
@@ -210,10 +182,10 @@ ob_start();
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_contract_template" class="btn btn-primary text-bold"> <button type="submit" name="add_contract_template" class="btn btn-primary text-bold">
<i class="fa fa-check mr-2"></i>Create Template <i class="fa fa-check me-2"></i>Create Template
</button> </button>
<button type="button" class="btn btn-light" data-dismiss="modal"> <button type="button" class="btn btn-light" data-bs-dismiss="modal">
<i class="fa fa-times mr-2"></i>Cancel <i class="fa fa-times me-2"></i>Cancel
</button> </button>
</div> </div>
</form> </form>

View File

@@ -37,23 +37,23 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-file-contract mr-2"></i>Edit Contract Template</h5> <h5 class="modal-title"><i class="fa fa-fw fa-file-contract me-2"></i>Edit Contract Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"><span>&times;</span></button> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div> </div>
<!-- Tabs Navigation --> <!-- Tabs Navigation -->
<ul class="modal-header nav nav-pills nav-justified"> <ul class="modal-header nav nav-pills nav-justified">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" id="general-tab" data-toggle="tab" href="#general" role="tab">General Info</a> <a class="nav-link active" id="general-tab" data-bs-toggle="tab" href="#general" role="tab">General Info</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="sla-tab" data-toggle="tab" href="#sla" role="tab">SLA</a> <a class="nav-link" id="sla-tab" data-bs-toggle="tab" href="#sla" role="tab">SLA</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="rates-tab" data-toggle="tab" href="#rates" role="tab">Rates & Support</a> <a class="nav-link" id="rates-tab" data-bs-toggle="tab" href="#rates" role="tab">Rates & Support</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" id="details-tab" data-toggle="tab" href="#details" role="tab">Details</a> <a class="nav-link" id="details-tab" data-bs-toggle="tab" href="#details" role="tab">Details</a>
</li> </li>
</ul> </ul>
@@ -66,36 +66,30 @@ ob_start();
<!-- General Info Tab --> <!-- General Info Tab -->
<div class="tab-pane fade show active" id="general" role="tabpanel"> <div class="tab-pane fade show active" id="general" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-file-contract"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-file-contract"></i></span>
</div>
<input type="text" class="form-control" name="name" <input type="text" class="form-control" name="name"
placeholder="Contract Template Name" maxlength="200" required autofocus placeholder="Contract Template Name" maxlength="200" required autofocus
value="<?= $name ?>"> value="<?= $name ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Template Description <strong class="text-danger">*</strong></label> <label>Template Description <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span>
</div>
<input type="text" class="form-control" name="description" <input type="text" class="form-control" name="description"
placeholder="Contract Template Description" maxlength="200" required placeholder="Contract Template Description" maxlength="200" required
value="<?= $description ?>"> value="<?= $description ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Contract Type <strong class="text-danger">*</strong></label> <label>Contract Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select Type -</option> <option value="">- Select Type -</option>
<?php foreach ($contract_types_array as $type_select) { ?> <?php foreach ($contract_types_array as $type_select) { ?>
@@ -105,12 +99,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Renewal Frequency</label> <label>Renewal Frequency</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sync-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sync-alt"></i></span>
</div>
<select class="form-control select2" name="renewal_frequency"> <select class="form-control select2" name="renewal_frequency">
<option value="">- Select Frequency -</option> <option value="">- Select Frequency -</option>
<?php foreach ($renewal_frequency_array as $renewal_frequency_select) { ?> <?php foreach ($renewal_frequency_array as $renewal_frequency_select) { ?>
@@ -123,69 +115,57 @@ ob_start();
<!-- SLA Tab --> <!-- SLA Tab -->
<div class="tab-pane fade" id="sla" role="tabpanel"> <div class="tab-pane fade" id="sla" role="tabpanel">
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Low Priority Response (hrs)</label> <label>Low Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="sla_low_response_time" placeholder="e.g., 24" <input type="number" class="form-control" name="sla_low_response_time" placeholder="e.g., 24"
value="<?= $sla_low_resp ?>"> value="<?= $sla_low_resp ?>">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Low Priority Resolution (hrs)</label> <label>Low Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span>
</div>
<input type="number" class="form-control" name="sla_low_resolution_time" placeholder="e.g., 48" <input type="number" class="form-control" name="sla_low_resolution_time" placeholder="e.g., 48"
value="<?= $sla_low_res ?>"> value="<?= $sla_low_res ?>">
</div> </div>
</div> </div>
</div> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Medium Priority Response (hrs)</label> <label>Medium Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="sla_medium_response_time" placeholder="e.g., 12" <input type="number" class="form-control" name="sla_medium_response_time" placeholder="e.g., 12"
value="<?= $sla_med_resp ?>"> value="<?= $sla_med_resp ?>">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Medium Priority Resolution (hrs)</label> <label>Medium Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-hourglass-half"></i></span>
</div>
<input type="number" class="form-control" name="sla_medium_resolution_time" placeholder="e.g., 24" <input type="number" class="form-control" name="sla_medium_resolution_time" placeholder="e.g., 24"
value="<?= $sla_med_res ?>"> value="<?= $sla_med_res ?>">
</div> </div>
</div> </div>
</div> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>High Priority Response (hrs)</label> <label>High Priority Response (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-bolt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-bolt"></i></span>
</div>
<input type="number" class="form-control" name="sla_high_response_time" placeholder="e.g., 1" <input type="number" class="form-control" name="sla_high_response_time" placeholder="e.g., 1"
value="<?= $sla_high_resp ?>"> value="<?= $sla_high_resp ?>">
</div> </div>
</div> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>High Priority Resolution (hrs)</label> <label>High Priority Resolution (hrs)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<input type="number" class="form-control" name="sla_high_resolution_time" placeholder="e.g., 4" <input type="number" class="form-control" name="sla_high_resolution_time" placeholder="e.g., 4"
value="<?= $sla_high_res ?>"> value="<?= $sla_high_res ?>">
</div> </div>
@@ -195,45 +175,37 @@ ob_start();
<!-- Rates & Support Tab --> <!-- Rates & Support Tab -->
<div class="tab-pane fade" id="rates" role="tabpanel"> <div class="tab-pane fade" id="rates" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<label>Standard Hourly Rate</label> <label>Standard Hourly Rate</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-dollar-sign"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-dollar-sign"></i></span>
</div>
<input type="text" class="form-control" name="rate_standard" placeholder="e.g., 100" <input type="text" class="form-control" name="rate_standard" placeholder="e.g., 100"
value="<?= $rate_standard ?>"> value="<?= $rate_standard ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>After Hours Hourly Rate</label> <label>After Hours Hourly Rate</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-moon"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-moon"></i></span>
</div>
<input type="text" class="form-control" name="rate_after_hours" placeholder="e.g., 150" <input type="text" class="form-control" name="rate_after_hours" placeholder="e.g., 150"
value="<?= $rate_after_hours ?>"> value="<?= $rate_after_hours ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Hours</label> <label>Support Hours</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="text" class="form-control" name="support_hours" placeholder="e.g., Mon-Fri 9am-5pm" maxlength="100" <input type="text" class="form-control" name="support_hours" placeholder="e.g., Mon-Fri 9am-5pm" maxlength="100"
value="<?= $support_hours ?>"> value="<?= $support_hours ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Net Terms</label> <label>Net Terms</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-file-invoice-dollar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-file-invoice-dollar"></i></span>
</div>
<input type="text" class="form-control" name="net_terms" placeholder="e.g., Net 30" maxlength="50" <input type="text" class="form-control" name="net_terms" placeholder="e.g., Net 30" maxlength="50"
value="<?= $net_terms ?>"> value="<?= $net_terms ?>">
</div> </div>
@@ -242,12 +214,10 @@ ob_start();
<!-- Details Tab --> <!-- Details Tab -->
<div class="tab-pane fade" id="details" role="tabpanel"> <div class="tab-pane fade" id="details" role="tabpanel">
<div class="form-group"> <div class="mb-3">
<label>Contract Details</label> <label>Contract Details</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-align-left"></i></span>
</div>
<textarea class="form-control tinymce" rows="6" name="details" <textarea class="form-control tinymce" rows="6" name="details"
placeholder="Enter Contract Details"><?= $details ?></textarea> placeholder="Enter Contract Details"><?= $details ?></textarea>
</div> </div>
@@ -259,10 +229,10 @@ ob_start();
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_contract_template" class="btn btn-primary text-bold"> <button type="submit" name="edit_contract_template" class="btn btn-primary text-bold">
<i class="fa fa-check mr-2"></i>Save Changes <i class="fa fa-check me-2"></i>Save Changes
</button> </button>
<button type="button" class="btn btn-light" data-dismiss="modal"> <button type="button" class="btn btn-light" data-bs-dismiss="modal">
<i class="fa fa-times mr-2"></i>Cancel <i class="fa fa-times me-2"></i>Cancel
</button> </button>
</div> </div>
</form> </form>

View File

@@ -27,30 +27,26 @@ if (empty($cron_job_daily_at)) {
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-clock mr-2"></i>Editing: <strong><?= $cron_job_label ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-clock me-2"></i>Editing: <strong><?= $cron_job_label ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="cron_job_id" value="<?= $cron_job_id ?>"> <input type="hidden" name="cron_job_id" value="<?= $cron_job_id ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="enabled" value="1" id="cronJobEnabledSwitch" <?= $cron_job_enabled == 1 ? 'checked' : '' ?>> <input type="checkbox" class="form-check-input" name="enabled" value="1" id="cronJobEnabledSwitch" <?= $cron_job_enabled == 1 ? 'checked' : '' ?>>
<label class="custom-control-label" for="cronJobEnabledSwitch">Enabled</label> <label class="form-check-label" for="cronJobEnabledSwitch">Enabled</label>
</div> </div>
<small class="text-muted">A disabled job never runs on its schedule, but Run Now still works.</small> <small class="text-muted">A disabled job never runs on its schedule, but Run Now still works.</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Schedule</label> <label>Schedule</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<select class="form-control" name="schedule" id="cronJobSchedule"> <select class="form-control" name="schedule" id="cronJobSchedule">
<?php if ($cron_job_interval_safe) { ?> <?php if ($cron_job_interval_safe) { ?>
<option value="Interval" <?= $cron_job_schedule === 'Interval' ? 'selected' : '' ?>>Every so many minutes</option> <option value="Interval" <?= $cron_job_schedule === 'Interval' ? 'selected' : '' ?>>Every so many minutes</option>
@@ -63,26 +59,20 @@ ob_start();
<?php } ?> <?php } ?>
</div> </div>
<div class="form-group" id="cronJobIntervalGroup"> <div class="mb-3" id="cronJobIntervalGroup">
<label>Run every</label> <label>Run every</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-redo"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-redo"></i></span>
</div>
<input type="number" class="form-control" name="interval_minutes" value="<?= $cron_job_interval_minutes ?>" min="1" max="1440"> <input type="number" class="form-control" name="interval_minutes" value="<?= $cron_job_interval_minutes ?>" min="1" max="1440">
<div class="input-group-append">
<span class="input-group-text">minutes</span> <span class="input-group-text">minutes</span>
</div>
</div> </div>
<small class="text-muted">Cron wakes once a minute, so 1 is as often as anything can run.</small> <small class="text-muted">Cron wakes once a minute, so 1 is as often as anything can run.</small>
</div> </div>
<div class="form-group" id="cronJobDailyGroup"> <div class="mb-3" id="cronJobDailyGroup">
<label>Run at</label> <label>Run at</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="time" class="form-control" name="daily_at" value="<?= $cron_job_daily_at ?>"> <input type="time" class="form-control" name="daily_at" value="<?= $cron_job_daily_at ?>">
</div> </div>
<small class="text-muted">Your ITFlow timezone. A run missed because the server was off happens at the next opportunity instead of waiting a day.</small> <small class="text-muted">Your ITFlow timezone. A run missed because the server was off happens at the next opportunity instead of waiting a day.</small>
@@ -90,8 +80,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_cron_job" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_cron_job" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -2,10 +2,8 @@
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-th-list mr-2"></i>Create <?= escapeHtml($table) ?> field</h5> <h5 class="modal-title"><i class="fa fa-fw fa-th-list me-2"></i>Create <?= escapeHtml($table) ?> field</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -13,17 +11,15 @@
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Label <strong class="text-danger">*</strong></label> <label>Label <strong class="text-danger">*</strong></label>
<input type="text" class="form-control" name="label" placeholder="Enter a custom field label" maxlength="255" required autofocus> <input type="text" class="form-control" name="label" placeholder="Enter a custom field label" maxlength="255" required autofocus>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-th"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-th"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select a field type -</option> <option value="">- Select a field type -</option>
<option>Text</option> <option>Text</option>
@@ -33,8 +29,8 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="create_custom_field" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="create_custom_field" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -2,27 +2,23 @@
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-th-list mr-2"></i>Editing custom field: <strong><?= $custom_field_label ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-th-list me-2"></i>Editing custom field: <strong><?= $custom_field_label ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="custom_field_id" value="<?= $custom_field_id ?>"> <input type="hidden" name="custom_field_id" value="<?= $custom_field_id ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Label <strong class="text-danger">*</strong></label> <label>Label <strong class="text-danger">*</strong></label>
<input type="text" class="form-control" name="label" maxlength="255" value="<?= $custom_field_label ?>" required> <input type="text" class="form-control" name="label" maxlength="255" value="<?= $custom_field_label ?>" required>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-th"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-th"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select a field type -</option> <option value="">- Select a field type -</option>
<option <?php if ($custom_field_type == 'text') { echo "selected"; } ?> value="text">Text</option> <option <?php if ($custom_field_type == 'text') { echo "selected"; } ?> value="text">Text</option>
@@ -32,8 +28,8 @@
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_custom_field" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_custom_field" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -7,67 +7,53 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-external-link-alt mr-2"></i>New Custom Link</h5> <h5 class="modal-title"><i class="fas fa-fw fa-external-link-alt me-2"></i>New Custom Link</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Link name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Link name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Order</label> <label>Order</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span>
</div>
<input type="number" class="form-control" name="order" placeholder="Leave blank for no order"> <input type="number" class="form-control" name="order" placeholder="Leave blank for no order">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>URI <strong class="text-danger">*</strong></label> / <span class="text-secondary">Open New Tab</span> <label>URI <strong class="text-danger">*</strong></label> / <span class="text-secondary">Open New Tab</span>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-external-link-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-external-link-alt"></i></span>
</div>
<input type="text" class="form-control" name="uri" placeholder="Enter Link" maxlength="500" required> <input type="text" class="form-control" name="uri" placeholder="Enter Link" maxlength="500" required>
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="new_tab" value="1"> <input type="checkbox" name="new_tab" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Icon</label> <label>Icon</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-image"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-image"></i></span>
</div>
<input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200"> <input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Location <strong class="text-danger">*</strong></label> <label>Location <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-home"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-home"></i></span>
</div>
<select class="form-control select2" name="location" required> <select class="form-control select2" name="location" required>
<option value="1">Main Side Nav</option> <option value="1">Main Side Nav</option>
<option value="2">Top Nav (Icon Required)</option> <option value="2">Top Nav (Icon Required)</option>
@@ -80,8 +66,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_custom_link" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create</button> <button type="submit" name="add_custom_link" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -19,10 +19,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-external-link-alt mr-2"></i>Editing link: <strong><?= $custom_link_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-external-link-alt me-2"></i>Editing link: <strong><?= $custom_link_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -30,57 +28,45 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list-ul"></i></span>
</div>
<input type="text" class="form-control" name="name" value="<?= $custom_link_name ?>" maxlength="200" required> <input type="text" class="form-control" name="name" value="<?= $custom_link_name ?>" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Order</label> <label>Order</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span>
</div>
<input type="number" class="form-control" name="order" placeholder="Leave blank for no order" value="<?= $custom_link_order ?>"> <input type="number" class="form-control" name="order" placeholder="Leave blank for no order" value="<?= $custom_link_order ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>URI <strong class="text-danger">*</strong></label> / <span class="text-secondary">Open New Tab</span> <label>URI <strong class="text-danger">*</strong></label> / <span class="text-secondary">Open New Tab</span>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-external-link-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-external-link-alt"></i></span>
</div>
<input type="text" class="form-control" name="uri" placeholder="Enter Link" maxlength="500" value="<?= $custom_link_uri ?>" required> <input type="text" class="form-control" name="uri" placeholder="Enter Link" maxlength="500" value="<?= $custom_link_uri ?>" required>
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="new_tab" value="1" <?php if ($custom_link_new_tab == 1) { echo "checked"; } ?>> <input type="checkbox" name="new_tab" value="1" <?php if ($custom_link_new_tab == 1) { echo "checked"; } ?>>
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Icon</label> <label>Icon</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-image"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-image"></i></span>
</div>
<input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200" value="<?= $custom_link_icon ?>"> <input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200" value="<?= $custom_link_icon ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Location <strong class="text-danger">*</strong></label> <label>Location <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-home"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-home"></i></span>
</div>
<select class="form-control select2" name="location" required> <select class="form-control select2" name="location" required>
<option value="1" <?php if ($custom_link_location === 1) { echo "selected"; } ?> >Main Side Nav</option> <option value="1" <?php if ($custom_link_location === 1) { echo "selected"; } ?> >Main Side Nav</option>
<option value="2" <?php if ($custom_link_location === 2) { echo "selected"; } ?> >Top Nav (Icon Required)</option> <option value="2" <?php if ($custom_link_location === 2) { echo "selected"; } ?> >Top Nav (Icon Required)</option>
@@ -93,8 +79,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_custom_link" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_custom_link" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -7,38 +7,34 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-file-alt mr-2"></i>Creating Document Template</h5> <h5 class="modal-title"><i class="fa fa-fw fa-file-alt me-2"></i>Creating Document Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<input type="text" class="form-control" name="name" placeholder="Template name" maxlength="200"> <input type="text" class="form-control" name="name" placeholder="Template name" maxlength="200">
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Enter a prompt for the type of IT documentation you want to generate:</label> <label>Enter a prompt for the type of IT documentation you want to generate:</label>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input type="text" class="form-control" id="aiPrompt" placeholder="e.g. 'A network troubleshooting guide for junior technicians'"> <input type="text" class="form-control" id="aiPrompt" placeholder="e.g. 'A network troubleshooting guide for junior technicians'">
<div class="input-group-append">
<button class="btn btn-info" type="button" id="generateAIContent"> <button class="btn btn-info" type="button" id="generateAIContent">
<i class="fa fa-fw fa-magic mr-1"></i>Generate with AI <i class="fa fa-fw fa-magic me-1"></i>Generate with AI
</button> </button>
</div>
</div> </div>
</div> </div>
<!-- TinyMCE Content --> <!-- TinyMCE Content -->
<div class="form-group"> <div class="mb-3">
<textarea class="form-control tinymce" name="content"></textarea> <textarea class="form-control tinymce" name="content"></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<input type="text" class="form-control" name="description" placeholder="Enter a short summary"> <input type="text" class="form-control" name="description" placeholder="Enter a short summary">
</div> </div>
@@ -46,8 +42,8 @@ ob_start();
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_document_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save template</button> <button type="submit" name="add_document_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save template</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>
@@ -78,7 +74,7 @@ $(document).ready(function(){
alert('Error generating content. Please try again.'); alert('Error generating content. Please try again.');
}, },
complete: function() { complete: function() {
$('#generateAIContent').prop('disabled', false).html('<i class="fa fa-fw fa-magic mr-1"></i>Generate with AI'); $('#generateAIContent').prop('disabled', false).html('<i class="fa fa-fw fa-magic me-1"></i>Generate with AI');
} }
}); });
}); });

View File

@@ -14,10 +14,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-file-alt mr-2"></i>Editing template: <strong><?= $document_template_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-file-alt me-2"></i>Editing template: <strong><?= $document_template_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -25,22 +23,22 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $document_template_name ?>" placeholder="Name" required> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $document_template_name ?>" placeholder="Name" required>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control tinymce" name="content"><?= $document_template_content ?></textarea> <textarea class="form-control tinymce" name="content"><?= $document_template_content ?></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<input type="text" class="form-control" name="description" value="<?= $document_template_description ?>" placeholder="Short summary"> <input type="text" class="form-control" name="description" value="<?= $document_template_description ?>" placeholder="Short summary">
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_document_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save template</button> <button type="submit" name="edit_document_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save template</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -42,10 +42,8 @@ if ($email_status == 0) {
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class='fas fa-fw fa-envelope-open mr-2'></i><strong><?= $email_subject ?></strong></h5> <h5 class="modal-title"><i class='fas fa-fw fa-envelope-open me-2'></i><strong><?= $email_subject ?></strong></h5>
<button type="button" class="close text-light" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="row"> <div class="row">

View File

@@ -7,34 +7,30 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-credit-card mr-2"></i>Creating: <strong>Payment Method</strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-credit-card me-2"></i>Creating: <strong>Payment Method</strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Payment method name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Payment method name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="3" name="description" placeholder="Enter a description..." maxlength="250"></textarea> <textarea class="form-control" rows="3" name="description" placeholder="Enter a description..." maxlength="250"></textarea>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_payment_method" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_payment_method" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -15,34 +15,30 @@ $payment_method_description = escapeHtml($row['payment_method_description']);
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-credit-card mr-2"></i>Editing: <strong><?= $payment_method_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-credit-card me-2"></i>Editing: <strong><?= $payment_method_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="payment_method_id" value="<?= $payment_method_id ?>"> <input type="hidden" name="payment_method_id" value="<?= $payment_method_id ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<input type="text" class="form-control" name="name" value="<?= $payment_method_name ?>" placeholder="Payment method name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" value="<?= $payment_method_name ?>" placeholder="Payment method name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="3" name="description" placeholder="Enter a description..." maxlength="250"><?= $payment_method_description ?></textarea> <textarea class="form-control" rows="3" name="description" placeholder="Enter a description..." maxlength="250"><?= $payment_method_description ?></textarea>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_payment_method" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_payment_method" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -6,10 +6,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-credit-card mr-2"></i>Add Payment Provider</h5> <h5 class="modal-title"><i class="fa fa-fw fa-credit-card me-2"></i>Add Payment Provider</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -18,10 +16,10 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-expense">Expense</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-expense">Expense</a>
</li> </li>
</ul> </ul>
@@ -31,44 +29,36 @@ ob_start();
<div class="tab-pane fade show active" id="pills-details"> <div class="tab-pane fade show active" id="pills-details">
<div class="form-group"> <div class="mb-3">
<label>Provider <strong class="text-danger">*</strong></label> <label>Provider <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<select class="form-control select2" name="provider"> <select class="form-control select2" name="provider">
<option>Stripe</option> <option>Stripe</option>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Publishable key <strong class="text-danger">*</strong></label> <label>Publishable key <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
<input type="text" class="form-control" name="public_key" placeholder="Publishable API Key (pk_...)" maxlength="250"> <input type="text" class="form-control" name="public_key" placeholder="Publishable API Key (pk_...)" maxlength="250">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Secret key <strong class="text-danger">*</strong></label> <label>Secret key <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="private_key" placeholder="Secret API Key (sk_...)" maxlength="250"> <input type="text" class="form-control" name="private_key" placeholder="Secret API Key (sk_...)" maxlength="250">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Income / Expense Account <strong class="text-danger">*</strong></label> <label>Income / Expense Account <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-piggy-bank"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-piggy-bank"></i></span>
</div>
<select class="form-control select2" name="account" required> <select class="form-control select2" name="account" required>
<option value="">- Select an Account -</option> <option value="">- Select an Account -</option>
<?php <?php
@@ -88,12 +78,10 @@ ob_start();
<small class="form-text text-muted">Should have a seperate account created off the payment provider's name e.g. Stripe</small> <small class="form-text text-muted">Should have a seperate account created off the payment provider's name e.g. Stripe</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Threshold</label> <label>Threshold</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span>
</div>
<input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="threshold" placeholder="1000.00"> <input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="threshold" placeholder="1000.00">
</div> </div>
<small class="form-text text-muted">Will not show as an option at Checkout if invoice amount is above this number, 0 disables the threshold check.</small> <small class="form-text text-muted">Will not show as an option at Checkout if invoice amount is above this number, 0 disables the threshold check.</small>
@@ -107,19 +95,17 @@ ob_start();
Payment Processing Fee Expenses get reconciled nighly via the cron Payment Processing Fee Expenses get reconciled nighly via the cron
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="enable_expense" checked value="1" id="enableExpenseSwitch"> <input type="checkbox" class="form-check-input" name="enable_expense" checked value="1" id="enableExpenseSwitch">
<label class="custom-control-label" for="enableExpenseSwitch">Enable Expense</label> <label class="form-check-label" for="enableExpenseSwitch">Enable Expense</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Payment Provider Vendor <strong class="text-danger">*</strong></label> <label>Payment Provider Vendor <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-building"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
</div>
<select class="form-control select2" name="expense_vendor" required> <select class="form-control select2" name="expense_vendor" required>
<option value="0">Expense Disabled</option> <option value="0">Expense Disabled</option>
<?php <?php
@@ -139,12 +125,10 @@ ob_start();
<small class="form-text text-muted">Payment Privider name e.g. Stripe</small> <small class="form-text text-muted">Payment Privider name e.g. Stripe</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expense Category <strong class="text-danger">*</strong></label> <label>Expense Category <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list"></i></span>
</div>
<select class="form-control select2" name="expense_category" required> <select class="form-control select2" name="expense_category" required>
<option value="">- Select a Category -</option> <option value="">- Select a Category -</option>
<?php <?php
@@ -160,12 +144,10 @@ ob_start();
} }
?> ?>
</select> </select>
<div class="input-group-append">
<button class="btn btn-secondary ajax-modal" type="button" <button class="btn btn-secondary ajax-modal" type="button"
data-modal-url="../admin/modals/category/category_add.php?category=Expense"> data-modal-url="../admin/modals/category/category_add.php?category=Expense">
<i class="fas fa-plus"></i> <i class="fas fa-plus"></i>
</button> </button>
</div>
</div> </div>
<small class="form-text text-muted">Processing Fee, Credit Card Fee etc</small> <small class="form-text text-muted">Processing Fee, Credit Card Fee etc</small>
</div> </div>
@@ -174,8 +156,8 @@ ob_start();
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_payment_provider" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Add</button> <button type="submit" name="add_payment_provider" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Add</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -22,10 +22,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-credit-card mr-2"></i>Editing: <strong><?= $provider_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-credit-card me-2"></i>Editing: <strong><?= $provider_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -35,10 +33,10 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-expense">Expense</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-expense">Expense</a>
</li> </li>
</ul> </ul>
@@ -48,32 +46,26 @@ ob_start();
<div class="tab-pane fade show active" id="pills-details"> <div class="tab-pane fade show active" id="pills-details">
<div class="form-group"> <div class="mb-3">
<label>Publishable key <strong class="text-danger">*</strong></label> <label>Publishable key <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
<input type="text" class="form-control" name="public_key" placeholder="Publishable API Key (pk_...)" maxlength="250" value="<?= $public_key ?>"> <input type="text" class="form-control" name="public_key" placeholder="Publishable API Key (pk_...)" maxlength="250" value="<?= $public_key ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Secret key <strong class="text-danger">*</strong></label> <label>Secret key <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="private_key" placeholder="Secret API Key (sk_...)" maxlength="250" value="<?= $private_key ?>"> <input type="text" class="form-control" name="private_key" placeholder="Secret API Key (sk_...)" maxlength="250" value="<?= $private_key ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Income / Expense Account <strong class="text-danger">*</strong></label> <label>Income / Expense Account <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-piggy-bank"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-piggy-bank"></i></span>
</div>
<select class="form-control select2" name="account" required> <select class="form-control select2" name="account" required>
<option value="">- Select an Account -</option> <option value="">- Select an Account -</option>
<?php <?php
@@ -93,12 +85,10 @@ ob_start();
<small class="form-text text-muted">Should have a seperate account created off the payment provider's name e.g. Stripe</small> <small class="form-text text-muted">Should have a seperate account created off the payment provider's name e.g. Stripe</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Threshold</label> <label>Threshold</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span>
</div>
<input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="threshold" placeholder="1000.00" value="<?= $threshold ?>"> <input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="threshold" placeholder="1000.00" value="<?= $threshold ?>">
</div> </div>
<small class="form-text text-muted">Will not show as an option at Checkout if above this number</small> <small class="form-text text-muted">Will not show as an option at Checkout if above this number</small>
@@ -112,12 +102,10 @@ ob_start();
Payment Processing Fee Expenses get reconciled nighly via the cron Payment Processing Fee Expenses get reconciled nighly via the cron
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Payment Provider Vendor <strong class="text-danger">*</strong></label> <label>Payment Provider Vendor <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-building"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
</div>
<select class="form-control select2" name="expense_vendor" required> <select class="form-control select2" name="expense_vendor" required>
<option value="0">Expense Disabled</option> <option value="0">Expense Disabled</option>
<?php <?php
@@ -139,12 +127,10 @@ ob_start();
<small class="form-text text-muted">Payment Privider name e.g. Stripe</small> <small class="form-text text-muted">Payment Privider name e.g. Stripe</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expense Category <strong class="text-danger">*</strong></label> <label>Expense Category <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-list"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-list"></i></span>
</div>
<select class="form-control select2" name="expense_category" required> <select class="form-control select2" name="expense_category" required>
<option value="">- Select a Category -</option> <option value="">- Select a Category -</option>
<?php <?php
@@ -160,12 +146,10 @@ ob_start();
} }
?> ?>
</select> </select>
<div class="input-group-append">
<button class="btn btn-secondary ajax-modal" type="button" <button class="btn btn-secondary ajax-modal" type="button"
data-modal-url="../admin/modals/category/category_add.php?category=Expense"> data-modal-url="../admin/modals/category/category_add.php?category=Expense">
<i class="fas fa-plus"></i> <i class="fas fa-plus"></i>
</button> </button>
</div>
</div> </div>
<small class="form-text text-muted">Processing Fee, Credit Card Fee etc</small> <small class="form-text text-muted">Processing Fee, Credit Card Fee etc</small>
</div> </div>
@@ -173,8 +157,8 @@ ob_start();
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_payment_provider" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_payment_provider" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -6,39 +6,33 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-project-diagram mr-2"></i>Creating Project Template</h5> <h5 class="modal-title"><i class="fas fa-fw fa-project-diagram me-2"></i>Creating Project Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Project Template Name <strong class="text-danger">*</strong></label> <label>Project Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Project Template Name" maxlength="255" required autofocus> <input type="text" class="form-control" name="name" placeholder="Project Template Name" maxlength="255" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Description"> <input type="text" class="form-control" name="description" placeholder="Description">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_project_template" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create</button> <button type="submit" name="add_project_template" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -14,32 +14,26 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-project-diagram mr-2"></i>Editing Project Template: <strong><?= $project_template_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-project-diagram me-2"></i>Editing Project Template: <strong><?= $project_template_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="project_template_id" value="<?= $project_template_id ?>"> <input type="hidden" name="project_template_id" value="<?= $project_template_id ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Project Template Name <strong class="text-danger">*</strong></label> <label>Project Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Project Template Name" maxlength="255" value="<?= $project_template_name ?>" required autofocus> <input type="text" class="form-control" name="name" placeholder="Project Template Name" maxlength="255" value="<?= $project_template_name ?>" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Description" value="<?= $project_template_description ?>"> <input type="text" class="form-control" name="description" placeholder="Description" value="<?= $project_template_description ?>">
</div> </div>
</div> </div>
@@ -47,8 +41,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_project_template" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_project_template" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -9,10 +9,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-life-ring mr-2"></i>Adding Ticket Template</h5> <h5 class="modal-title"><i class="fas fa-fw fa-life-ring me-2"></i>Adding Ticket Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -20,12 +18,10 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Ticket Template <strong class="text-danger">*</strong></label> <label>Ticket Template <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span>
</div>
<select class="form-control select2" name="ticket_template_id" required> <select class="form-control select2" name="ticket_template_id" required>
<option value="">- Select a Ticket Template -</option> <option value="">- Select a Ticket Template -</option>
<?php <?php
@@ -51,12 +47,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Order</label> <label>Order</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span>
</div>
<input type="text" class="form-control" name="order" value="1"> <input type="text" class="form-control" name="order" value="1">
</div> </div>
</div> </div>
@@ -64,8 +58,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_ticket_template_to_project_template" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Add</button> <button type="submit" name="add_ticket_template_to_project_template" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Add</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -6,10 +6,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-shield mr-2"></i>New Role</h5> <h5 class="modal-title"><i class="fas fa-fw fa-user-shield me-2"></i>New Role</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
@@ -19,10 +17,10 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-role-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-role-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-role-permissions">Permissions</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-role-permissions">Permissions</a>
</li> </li>
</ul> </ul>
@@ -33,39 +31,35 @@ ob_start();
<!-- DETAILS TAB --> <!-- DETAILS TAB -->
<div class="tab-pane fade show active" id="pills-role-details"> <div class="tab-pane fade show active" id="pills-role-details">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<input type="text" class="form-control" name="role_name" placeholder="Role Name" maxlength="200" required> <input type="text" class="form-control" name="role_name" placeholder="Role Name" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description <strong class="text-danger">*</strong></label> <label>Description <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-chevron-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-chevron-right"></i></span>
</div>
<input type="text" class="form-control" name="role_description" placeholder="Role Description" maxlength="200" required> <input type="text" class="form-control" name="role_description" placeholder="Role Description" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Admin Access <strong class="text-danger">*</strong></label> <label>Admin Access <strong class="text-danger">*</strong></label>
<div class="custom-control custom-radio mb-2"> <div class="form-check mb-2">
<input type="radio" class="custom-control-input" id="admin_no" name="role_is_admin" value="0" checked required> <input type="radio" class="form-check-input" id="admin_no" name="role_is_admin" value="0" checked required>
<label class="custom-control-label" for="admin_no"> <label class="form-check-label" for="admin_no">
No - use permissions on the next tab No - use permissions on the next tab
</label> </label>
</div> </div>
<div class="custom-control custom-radio"> <div class="form-check">
<input type="radio" class="custom-control-input" id="admin_yes" name="role_is_admin" value="1" required> <input type="radio" class="form-check-input" id="admin_yes" name="role_is_admin" value="1" required>
<label class="custom-control-label" for="admin_yes"> <label class="form-check-label" for="admin_yes">
Yes - this role should have full admin access Yes - this role should have full admin access
</label> </label>
</div> </div>
@@ -98,10 +92,10 @@ ob_start();
$group_id = "perm_group_$module_id"; $group_id = "perm_group_$module_id";
?> ?>
<div class="form-group"> <div class="mb-3">
<label><?= $module_name_display_safe ?> <strong class="text-danger">*</strong></label> <label><?= $module_name_display_safe ?> <strong class="text-danger">*</strong></label>
<div class="btn-group btn-group-toggle btn-block" data-toggle="buttons" role="group" <div class="btn-group btn-group-toggle w-100" data-toggle="buttons" role="group"
aria-label="Permissions for <?= $module_name_display_safe ?>"> aria-label="Permissions for <?= $module_name_display_safe ?>">
<label class="btn btn-outline-secondary btn-sm active" title="No Access"> <label class="btn btn-outline-secondary btn-sm active" title="No Access">
@@ -125,7 +119,7 @@ ob_start();
value="1" value="1"
autocomplete="off" autocomplete="off"
> >
<i class="fas fa-fw fa-eye mr-1"></i>Read <i class="fas fa-fw fa-eye me-1"></i>Read
</label> </label>
<label class="btn btn-outline-warning btn-sm" title="Read, Edit, Archive"> <label class="btn btn-outline-warning btn-sm" title="Read, Edit, Archive">
@@ -136,7 +130,7 @@ ob_start();
value="2" value="2"
autocomplete="off" autocomplete="off"
> >
<i class="fas fa-fw fa-edit mr-1"></i>Modify <i class="fas fa-fw fa-edit me-1"></i>Modify
</label> </label>
<label class="btn btn-outline-danger btn-sm" title="Read, Edit, Archive, Delete"> <label class="btn btn-outline-danger btn-sm" title="Read, Edit, Archive, Delete">
@@ -147,7 +141,7 @@ ob_start();
value="3" value="3"
autocomplete="off" autocomplete="off"
> >
<i class="fas fa-fw fa-trash mr-1"></i>Full <i class="fas fa-fw fa-trash me-1"></i>Full
</label> </label>
</div> </div>
@@ -164,10 +158,10 @@ ob_start();
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_role" class="btn btn-primary text-bold"> <button type="submit" name="add_role" class="btn btn-primary text-bold">
<i class="fas fa-check mr-2"></i>Create <i class="fas fa-check me-2"></i>Create
</button> </button>
<button type="button" class="btn btn-light" data-dismiss="modal"> <button type="button" class="btn btn-light" data-bs-dismiss="modal">
<i class="fas fa-times mr-2"></i>Cancel <i class="fas fa-times me-2"></i>Cancel
</button> </button>
</div> </div>
</form> </form>

View File

@@ -35,11 +35,9 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-shield mr-2"></i>Editing role: <h5 class="modal-title"><i class="fas fa-fw fa-user-shield me-2"></i>Editing role:
<strong><?= $role_name ?></strong></h5> <strong><?= $role_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -47,11 +45,11 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-role-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-role-details">Details</a>
</li> </li>
<?php if (!$role_admin) { ?> <?php if (!$role_admin) { ?>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-role-permissions">Permissions</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-role-permissions">Permissions</a>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
@@ -62,41 +60,37 @@ ob_start();
<div class="tab-pane fade show active" id="pills-role-details"> <div class="tab-pane fade show active" id="pills-role-details">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<input type="text" class="form-control" name="role_name" placeholder="Role Name" maxlength="200" value="<?= $role_name ?>" required> <input type="text" class="form-control" name="role_name" placeholder="Role Name" maxlength="200" value="<?= $role_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description <strong class="text-danger">*</strong></label> <label>Description <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-chevron-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-chevron-right"></i></span>
</div>
<input type="text" class="form-control" name="role_description" placeholder="Role Description" maxlength="200" value="<?= $role_description ?>" required> <input type="text" class="form-control" name="role_description" placeholder="Role Description" maxlength="200" value="<?= $role_description ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Admin Access <strong class="text-danger">*</strong></label> <label>Admin Access <strong class="text-danger">*</strong></label>
<div class="custom-control custom-radio mb-2"> <div class="form-check mb-2">
<input type="radio" class="custom-control-input" id="admin_yes" name="role_is_admin" value="1" <input type="radio" class="form-check-input" id="admin_yes" name="role_is_admin" value="1"
<?php if ($role_admin) { echo 'checked'; } ?> required> <?php if ($role_admin) { echo 'checked'; } ?> required>
<label class="custom-control-label" for="admin_yes"> <label class="form-check-label" for="admin_yes">
Yes - this role should have full admin access Yes - this role should have full admin access
</label> </label>
</div> </div>
<div class="custom-control custom-radio"> <div class="form-check">
<input type="radio" class="custom-control-input" id="admin_no" name="role_is_admin" value="0" <input type="radio" class="form-check-input" id="admin_no" name="role_is_admin" value="0"
<?php if (!$role_admin) { echo 'checked'; } ?> required> <?php if (!$role_admin) { echo 'checked'; } ?> required>
<label class="custom-control-label" for="admin_no"> <label class="form-check-label" for="admin_no">
No - use permissions on the next tab No - use permissions on the next tab
</label> </label>
</div> </div>
@@ -128,14 +122,14 @@ ob_start();
} }
?> ?>
<div class="form-group"> <div class="mb-3">
<label> <?= $module_name_display ?> <strong class="text-danger">*</strong></label> <label> <?= $module_name_display ?> <strong class="text-danger">*</strong></label>
<?php <?php
$field_name = "$module_id##$module_name"; $field_name = "$module_id##$module_name";
$group_id = "perm_group_$module_id"; $group_id = "perm_group_$module_id";
?> ?>
<div class="btn-group btn-group-toggle btn-block" data-toggle="buttons" role="group" aria-label="Permissions for <?= $module_name_display ?>"> <div class="btn-group btn-group-toggle w-100" data-toggle="buttons" role="group" aria-label="Permissions for <?= $module_name_display ?>">
<label class="btn btn-outline-secondary btn-sm <?php if ($module_permission == 0) { echo 'active'; } ?>" title="No Access"> <label class="btn btn-outline-secondary btn-sm <?php if ($module_permission == 0) { echo 'active'; } ?>" title="No Access">
<input <input
@@ -159,7 +153,7 @@ ob_start();
autocomplete="off" autocomplete="off"
<?php if ($module_permission == 1) { echo 'checked'; } ?> <?php if ($module_permission == 1) { echo 'checked'; } ?>
> >
<i class="fas fa-fw fa-eye mr-1"></i>Read <i class="fas fa-fw fa-eye me-1"></i>Read
</label> </label>
<label class="btn btn-outline-warning btn-sm <?php if ($module_permission == 2) { echo 'active'; } ?>" title="Read, Edit, Archive"> <label class="btn btn-outline-warning btn-sm <?php if ($module_permission == 2) { echo 'active'; } ?>" title="Read, Edit, Archive">
@@ -171,7 +165,7 @@ ob_start();
autocomplete="off" autocomplete="off"
<?php if ($module_permission == 2) { echo 'checked'; } ?> <?php if ($module_permission == 2) { echo 'checked'; } ?>
> >
<i class="fas fa-fw fa-edit mr-1"></i>Modify <i class="fas fa-fw fa-edit me-1"></i>Modify
</label> </label>
<label class="btn btn-outline-danger btn-sm <?php if ($module_permission == 3) { echo 'active'; } ?>" title="Read, Edit, Archive, Delete"> <label class="btn btn-outline-danger btn-sm <?php if ($module_permission == 3) { echo 'active'; } ?>" title="Read, Edit, Archive, Delete">
@@ -183,7 +177,7 @@ ob_start();
autocomplete="off" autocomplete="off"
<?php if ($module_permission == 3) { echo 'checked'; } ?> <?php if ($module_permission == 3) { echo 'checked'; } ?>
> >
<i class="fas fa-fw fa-trash mr-1"></i>Full <i class="fas fa-fw fa-trash me-1"></i>Full
</label> </label>
</div> </div>
@@ -201,8 +195,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_role" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_role" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -4,59 +4,49 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-stopwatch mr-2"></i>New SLA</h5> <h5 class="modal-title"><i class="fas fa-fw fa-stopwatch me-2"></i>New SLA</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="SLA name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="SLA name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-comment"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-comment"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Short description" maxlength="500"> <input type="text" class="form-control" name="description" placeholder="Short description" maxlength="500">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Response target (business minutes) <strong class="text-danger">*</strong></label> <label>Response target (business minutes) <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-reply"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-reply"></i></span>
</div>
<input type="number" class="form-control" name="response_minutes" min="1" placeholder="e.g. 60" required> <input type="number" class="form-control" name="response_minutes" min="1" placeholder="e.g. 60" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Resolution target (business minutes)</label> <label>Resolution target (business minutes)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-flag-checkered"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-flag-checkered"></i></span>
</div>
<input type="number" class="form-control" name="resolution_minutes" min="1" placeholder="Leave empty for response-only"> <input type="number" class="form-control" name="resolution_minutes" min="1" placeholder="Leave empty for response-only">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_sla" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create</button> <button type="submit" name="add_sla" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -14,52 +14,42 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-stopwatch mr-2"></i>Editing SLA: <strong><?= $sla_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-stopwatch me-2"></i>Editing SLA: <strong><?= $sla_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="sla_id" value="<?= $sla_id ?>"> <input type="hidden" name="sla_id" value="<?= $sla_id ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<input type="text" class="form-control" name="name" value="<?= $sla_name ?>" maxlength="200" required> <input type="text" class="form-control" name="name" value="<?= $sla_name ?>" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-comment"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-comment"></i></span>
</div>
<input type="text" class="form-control" name="description" value="<?= $sla_description ?>" maxlength="500"> <input type="text" class="form-control" name="description" value="<?= $sla_description ?>" maxlength="500">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Response target (business minutes) <strong class="text-danger">*</strong></label> <label>Response target (business minutes) <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-reply"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-reply"></i></span>
</div>
<input type="number" class="form-control" name="response_minutes" min="1" value="<?= $sla_response_minutes ?>" required> <input type="number" class="form-control" name="response_minutes" min="1" value="<?= $sla_response_minutes ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Resolution target (business minutes)</label> <label>Resolution target (business minutes)</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-flag-checkered"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-flag-checkered"></i></span>
</div>
<input type="number" class="form-control" name="resolution_minutes" min="1" value="<?= $sla_resolution_minutes ?: '' ?>" placeholder="Leave empty for response-only"> <input type="number" class="form-control" name="resolution_minutes" min="1" value="<?= $sla_resolution_minutes ?: '' ?>" placeholder="Leave empty for response-only">
</div> </div>
<small class="text-muted">Saving recalculates targets on open tickets using this SLA.</small> <small class="text-muted">Saving recalculates targets on open tickets using this SLA.</small>
@@ -67,8 +57,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_sla" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_sla" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -17,52 +17,42 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-cube mr-2"></i>New License Template</h5> <h5 class="modal-title"><i class="fa fa-fw fa-cube me-2"></i>New License Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Software name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Software name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Version</label> <label>Version</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<input type="text" class="form-control" name="version" placeholder="Software version" maxlength="200"> <input type="text" class="form-control" name="version" placeholder="Software version" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Short description"> <input type="text" class="form-control" name="description" placeholder="Short description">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select Type -</option> <option value="">- Select Type -</option>
<<?php <<?php
@@ -81,12 +71,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>License Type</label> <label>License Type</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<select class="form-control select2" name="license_type"> <select class="form-control select2" name="license_type">
<option value="">- Select a License Type -</option> <option value="">- Select a License Type -</option>
<?php foreach($license_types_array as $license_type) { ?> <?php foreach($license_types_array as $license_type) { ?>
@@ -100,8 +88,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_software_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_software_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -29,10 +29,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-cube mr-2"></i>Editing template: <strong><?= $software_name ?></strong></h5> <h5 class="modal-title"><i class="fa fa-fw fa-cube me-2"></i>Editing template: <strong><?= $software_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -40,42 +38,34 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Software name" maxlength="200" value="<?= $software_name ?>" required> <input type="text" class="form-control" name="name" placeholder="Software name" maxlength="200" value="<?= $software_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Version</label> <label>Version</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<input type="text" class="form-control" name="version" placeholder="Software version" maxlength="200" value="<?= $software_version ?>"> <input type="text" class="form-control" name="version" placeholder="Software version" maxlength="200" value="<?= $software_version ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Short description" value="<?= $software_description ?>"> <input type="text" class="form-control" name="description" placeholder="Short description" value="<?= $software_description ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Select Type -</option> <option value="">- Select Type -</option>
<<?php <<?php
@@ -96,12 +86,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>License Type</label> <label>License Type</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-cube"></i></span>
</div>
<select class="form-control select2" name="license_type"> <select class="form-control select2" name="license_type">
<option value="">- Select a License Type -</option> <option value="">- Select a License Type -</option>
<?php foreach($license_types_array as $license_type_select) { ?> <?php foreach($license_types_array as $license_type_select) { ?>
@@ -115,8 +103,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_software_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_software_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -24,22 +24,18 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-tag mr-2"></i>New <strong><?= $type_display ?></strong> Tag</h5> <h5 class="modal-title"><i class="fas fa-fw fa-tag me-2"></i>New <strong><?= $type_display ?></strong> Tag</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="type" value="<?= $type ?>"> <input type="hidden" name="type" value="<?= $type ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Tag name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Tag name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
@@ -50,12 +46,10 @@ ob_start();
<?php } else { ?> <?php } else { ?>
<div class="form-group"> <div class="mb-3">
<label>Type <strong class="text-danger">*</strong></label> <label>Type <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-th"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-th"></i></span>
</div>
<select class="form-control select2" name="type" required> <select class="form-control select2" name="type" required>
<option value="">- Type -</option> <option value="">- Type -</option>
<option value="1">Client Tag</option> <option value="1">Client Tag</option>
@@ -69,30 +63,26 @@ ob_start();
<?php } ?> <?php } ?>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" required> <input type="color" class="form-control col-3" name="color" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Icon</label> <label>Icon</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-image"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-image"></i></span>
</div>
<input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200"> <input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_tag" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create Tag</button> <button type="submit" name="add_tag" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create Tag</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -29,10 +29,8 @@ if ($tag_type == 1) {
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-tag mr-2"></i><?= $tag_type_display ?> Tag: <strong><?= $tag_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-tag me-2"></i><?= $tag_type_display ?> Tag: <strong><?= $tag_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -40,40 +38,34 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $tag_name ?>" required> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $tag_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" value="<?= $tag_color ?>" required> <input type="color" class="form-control col-3" name="color" value="<?= $tag_color ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Icon</label> <label>Icon</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-image"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-image"></i></span>
</div>
<input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200" value="<?= $tag_icon ?>"> <input type="text" class="form-control" name="icon" placeholder="Icon ex handshake" maxlength="200" value="<?= $tag_icon ?>">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_tag" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save changes</button> <button type="submit" name="edit_tag" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save changes</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -7,27 +7,25 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-balance-scale mr-2"></i>New Tax</h5> <h5 class="modal-title"><i class="fas fa-fw fa-balance-scale me-2"></i>New Tax</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<input type="text" class="form-control" name="name" placeholder="Tax name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Tax name" maxlength="200" required autofocus>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Percent <strong class="text-danger">*</strong></label> <label>Percent <strong class="text-danger">*</strong></label>
<input type="number" min="0" step="any" class="form-control col-md-4" name="percent"> <input type="number" min="0" step="any" class="form-control col-md-4" name="percent">
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_tax" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create</button> <button type="submit" name="add_tax" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -14,10 +14,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-balance-scale mr-2"></i>Editing tax: <strong><?= $tax_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-balance-scale me-2"></i>Editing tax: <strong><?= $tax_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -25,20 +23,20 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $tax_name ?>" required> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $tax_name ?>" required>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Percent <strong class="text-danger">*</strong></label> <label>Percent <strong class="text-danger">*</strong></label>
<input type="number" min="0" step="any" class="form-control col-md-4" name="percent" value="<?= $tax_percent ?>"> <input type="number" min="0" step="any" class="form-control col-md-4" name="percent" value="<?= $tax_percent ?>">
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_tax" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_tax" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -4,42 +4,34 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-info-circle mr-2"></i>New Ticket Status</h5> <h5 class="modal-title"><i class="fas fa-fw fa-info-circle me-2"></i>New Ticket Status</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-info-circle"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-info-circle"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Ticket Status name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Ticket Status name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" required> <input type="color" class="form-control col-3" name="color" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>SLA</label> <label>SLA</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<select class="form-control select2" name="pauses_sla"> <select class="form-control select2" name="pauses_sla">
<option value="0">Resolution clock keeps running</option> <option value="0">Resolution clock keeps running</option>
<option value="1">Pause the resolution clock</option> <option value="1">Pause the resolution clock</option>
@@ -49,8 +41,8 @@ ob_start();
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_ticket_status" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create</button> <button type="submit" name="add_ticket_status" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -18,10 +18,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-info-circle mr-2"></i>Editing Ticket Status: <strong><?= $ticket_status_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-info-circle me-2"></i>Editing Ticket Status: <strong><?= $ticket_status_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -29,42 +27,34 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $ticket_status_name ?>" required <?php if ($ticket_status_id <= 5) { echo "readonly"; } ?>> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $ticket_status_name ?>" required <?php if ($ticket_status_id <= 5) { echo "readonly"; } ?>>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Color <strong class="text-danger">*</strong></label> <label>Color <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-paint-brush"></i></span>
</div>
<input type="color" class="form-control col-3" name="color" value="<?= $ticket_status_color ?>" required> <input type="color" class="form-control col-3" name="color" value="<?= $ticket_status_color ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Order</label> <label>Order</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-sort-numeric-down"></i></span>
</div>
<input type="number" class="form-control" name="order" placeholder="Leave blank for no order" value="<?= $ticket_status_order ?>"> <input type="number" class="form-control" name="order" placeholder="Leave blank for no order" value="<?= $ticket_status_order ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Status <strong class="text-danger">*</strong></label> <label>Status <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-info-circle"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-info-circle"></i></span>
</div>
<select class="form-control select2" name="status" required> <select class="form-control select2" name="status" required>
<option <?php if ($ticket_status_active == 1) { echo "selected"; } ?> value="1">Active</option> <option <?php if ($ticket_status_active == 1) { echo "selected"; } ?> value="1">Active</option>
<option <?php if ($ticket_status_active == 0) { echo "selected"; } ?> value="0" <?php if ($ticket_status_id <= 5) { echo "disabled"; } ?>>Inactive</option> <option <?php if ($ticket_status_active == 0) { echo "selected"; } ?> value="0" <?php if ($ticket_status_id <= 5) { echo "disabled"; } ?>>Inactive</option>
@@ -72,12 +62,10 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>SLA</label> <label>SLA</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-stopwatch"></i></span>
</div>
<select class="form-control select2" name="pauses_sla"> <select class="form-control select2" name="pauses_sla">
<option <?php if ($ticket_status_pauses_sla == 0) { echo "selected "; } ?>value="0">Resolution clock keeps running</option> <option <?php if ($ticket_status_pauses_sla == 0) { echo "selected "; } ?>value="0">Resolution clock keeps running</option>
<option <?php if ($ticket_status_pauses_sla == 1) { echo "selected "; } ?>value="1">Pause the resolution clock</option> <option <?php if ($ticket_status_pauses_sla == 1) { echo "selected "; } ?>value="1">Pause the resolution clock</option>
@@ -88,8 +76,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_ticket_status" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ticket_status" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -6,56 +6,46 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-life-ring mr-2"></i>New Ticket Template</h5> <h5 class="modal-title"><i class="fa fa-fw fa-life-ring me-2"></i>New Ticket Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Template name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Template name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Subject</label> <label>Subject</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="subject" placeholder="Subject" maxlength="500"> <input type="text" class="form-control" name="subject" placeholder="Subject" maxlength="500">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control tinymceTicket" name="details"></textarea> <textarea class="form-control tinymceTicket" name="details"></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Short description"> <input type="text" class="form-control" name="description" placeholder="Short description">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Add it to a Project Template?</label> <label>Add it to a Project Template?</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-project-diagram"></i></span>
</div>
<select class="form-control select2" name="project_template"> <select class="form-control select2" name="project_template">
<option value="0">- No -</option> <option value="0">- No -</option>
<?php <?php
@@ -72,8 +62,8 @@ ob_start();
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_ticket_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create Template</button> <button type="submit" name="add_ticket_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create Template</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -3,10 +3,8 @@
<div class="modal-dialog modal-lg"> <div class="modal-dialog modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-life-ring mr-2"></i>Editing Ticket Template: <?= $ticket_template_name ?></h5> <h5 class="modal-title"><i class="fa fa-fw fa-life-ring me-2"></i>Editing Ticket Template: <?= $ticket_template_name ?></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -14,44 +12,38 @@
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Template Name <strong class="text-danger">*</strong></label> <label>Template Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span>
</div>
<input type="text" class="form-control" name="name" maxlength="200" value="<?= $ticket_template_name ?>" placeholder="Template name" required autofocus> <input type="text" class="form-control" name="name" maxlength="200" value="<?= $ticket_template_name ?>" placeholder="Template name" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Subject</label> <label>Subject</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="subject" maxlength="500" value="<?= $ticket_template_subject ?>" placeholder="Subject"> <input type="text" class="form-control" name="subject" maxlength="500" value="<?= $ticket_template_subject ?>" placeholder="Subject">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<textarea class="form-control tinymceTicket" name="details"><?= $ticket_template_details ?></textarea> <textarea class="form-control tinymceTicket" name="details"><?= $ticket_template_details ?></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" value="<?= $ticket_template_description ?>" placeholder="Short description"> <input type="text" class="form-control" name="description" value="<?= $ticket_template_description ?>" placeholder="Short description">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_ticket_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ticket_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -18,10 +18,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-tasks mr-2"></i>Editing task</h5> <h5 class="modal-title"><i class="fa fa-fw fa-tasks me-2"></i>Editing task</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -29,22 +27,18 @@ ob_start();
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-tag"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Name the task" maxlength="255" value="<?= $task_template_name ?>" required autofocus> <input type="text" class="form-control" name="name" placeholder="Name the task" maxlength="255" value="<?= $task_template_name ?>" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Estimated Completion Time <span class="text-secondary">(Minutes)</span></label> <label>Estimated Completion Time <span class="text-secondary">(Minutes)</span></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="completion_estimate" placeholder="Estimated time to complete task in mins" value="<?= $task_template_completion_estimate ?>"> <input type="number" class="form-control" name="completion_estimate" placeholder="Estimated time to complete task in mins" value="<?= $task_template_completion_estimate ?>">
</div> </div>
</div> </div>
@@ -52,8 +46,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_ticket_template_task" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ticket_template_task" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -6,10 +6,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-plus mr-2"></i>New User</h5> <h5 class="modal-title"><i class="fas fa-fw fa-user-plus me-2"></i>New User</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -17,10 +15,10 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-user-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-user-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-user-access">Restrict Access</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-user-access">Restrict Access</a>
</li> </li>
</ul> </ul>
@@ -30,48 +28,36 @@ ob_start();
<div class="tab-pane fade show active" id="pills-user-details"> <div class="tab-pane fade show active" id="pills-user-details">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Full Name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Full Name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email <strong class="text-danger">*</strong></label> <label>Email <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200" required> <input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Password <strong class="text-danger">*</strong></label> <label>Password <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
</div>
<input type="password" class="form-control" data-toggle="password" name="password" id="password" placeholder="Enter a Password" autocomplete="new-password" minlength="8" required> <input type="password" class="form-control" data-toggle="password" name="password" id="password" placeholder="Enter a Password" autocomplete="new-password" minlength="8" required>
<div class="input-group-append">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
<div class="input-group-append">
<span class="btn btn-default"><i class="fa fa-fw fa-question" onclick="generatePassword()"></i></span> <span class="btn btn-default"><i class="fa fa-fw fa-question" onclick="generatePassword()"></i></span>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Role <strong class="text-danger">*</strong></label> <label>Role <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="role" required> <select class="form-control select2" name="role" required>
<option value="">- Role -</option> <option value="">- Role -</option>
<?php <?php
@@ -87,24 +73,24 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Avatar</label> <label>Avatar</label>
<input type="file" class="form-control-file" accept="image/*" name="file"> <input type="file" class="form-control" accept="image/*" name="file">
</div> </div>
<div class="form-group" <?php if(empty($config_smtp_host)) { echo "hidden"; } ?>> <div class="mb-3" <?php if(empty($config_smtp_host)) { echo "hidden"; } ?>>
<div class="custom-control custom-checkbox"> <div class="form-check">
<input class="custom-control-input" type="checkbox" id="sendEmailCheckBox" name="send_email" value="" checked> <input class="form-check-input" type="checkbox" id="sendEmailCheckBox" name="send_email" value="" checked>
<label for="sendEmailCheckBox" class="custom-control-label"> <label for="sendEmailCheckBox" class="form-check-label">
Send user e-mail with login details? Send user e-mail with login details?
</label> </label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-checkbox"> <div class="form-check">
<input class="custom-control-input" type="checkbox" id="forceMFACheckBox" name="force_mfa" value=1> <input class="form-check-input" type="checkbox" id="forceMFACheckBox" name="force_mfa" value=1>
<label for="forceMFACheckBox" class="custom-control-label"> <label for="forceMFACheckBox" class="form-check-label">
Force MFA Force MFA
</label> </label>
</div> </div>
@@ -119,7 +105,7 @@ ob_start();
</div> </div>
<div class="mb-2"> <div class="mb-2">
<small class="text-muted mr-2">Set all:</small> <small class="text-muted me-2">Set all:</small>
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="document.querySelectorAll('#accessTable .perm-none').forEach(r => r.checked = true);">No Rule</button> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="document.querySelectorAll('#accessTable .perm-none').forEach(r => r.checked = true);">No Rule</button>
<button type="button" class="btn btn-sm btn-outline-success" onclick="document.querySelectorAll('#accessTable .perm-allow').forEach(r => r.checked = true);">Allow</button> <button type="button" class="btn btn-sm btn-outline-success" onclick="document.querySelectorAll('#accessTable .perm-allow').forEach(r => r.checked = true);">Allow</button>
<button type="button" class="btn btn-sm btn-outline-danger" onclick="document.querySelectorAll('#accessTable .perm-deny').forEach(r => r.checked = true);">Deny</button> <button type="button" class="btn btn-sm btn-outline-danger" onclick="document.querySelectorAll('#accessTable .perm-deny').forEach(r => r.checked = true);">Deny</button>
@@ -169,8 +155,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_user" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Create</button> <button type="submit" name="add_user" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Create</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -18,16 +18,14 @@ ob_start();
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="row col-7 offset-4"> <div class="row col-7 offset-4">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<input type="password" class="form-control" placeholder="Enter your account password to continue" name="admin_password" required> <input type="password" class="form-control" placeholder="Enter your account password to continue" name="admin_password" required>
</div>
</div> </div>
</div> </div>
<br> <br>
<button class="btn btn-danger" type="submit" name="ir_reset_user_password"><i class="fas fa-fw fa-key mr-2"></i>Reset passwords</button> <button class="btn btn-danger" type="submit" name="ir_reset_user_password"><i class="fas fa-fw fa-key me-2"></i>Reset passwords</button>
</form> </form>
</div> </div>
<button type="button" class="btn btn-outline-secondary btn-lg px-5 mr-4" data-dismiss="modal">Cancel</button> <button type="button" class="btn btn-outline-secondary btn-lg px-5 me-4" data-bs-dismiss="modal">Cancel</button>
</div> </div>

View File

@@ -26,11 +26,9 @@ $recurring_ticket_count = mysqli_num_rows($sql_related_recurring_tickets);
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-slash mr-2"></i>Archiving user: <h5 class="modal-title"><i class="fas fa-fw fa-user-slash me-2"></i>Archiving user:
<strong><?= $user_name ?></strong></h5> <strong><?= $user_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -50,12 +48,10 @@ ob_start();
</center> </center>
<div class="form-group"> <div class="mb-3">
<label>Reassign <?= $ticket_count ?> Open Tickets and <?= $recurring_ticket_count ?> Recurring Tickets To:</label> <label>Reassign <?= $ticket_count ?> Open Tickets and <?= $recurring_ticket_count ?> Recurring Tickets To:</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<select class="form-control select2" name="ticket_assign" required> <select class="form-control select2" name="ticket_assign" required>
<option value="0">No one</option> <option value="0">No one</option>
<?php <?php
@@ -74,8 +70,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="archive_user" class="btn btn-danger text-bold"><i class="fas fa-archive mr-2"></i>Archive</button> <button type="submit" name="archive_user" class="btn btn-danger text-bold"><i class="fas fa-archive me-2"></i>Archive</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -35,11 +35,9 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-edit mr-2"></i>Editing user: <h5 class="modal-title"><i class="fas fa-fw fa-user-edit me-2"></i>Editing user:
<strong><?= $user_name ?></strong></h5> <strong><?= $user_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -48,10 +46,10 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-user-details<?= $user_id ?>">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-user-details<?= $user_id ?>">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-user-access<?= $user_id ?>">Restrict Access</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-user-access<?= $user_id ?>">Restrict Access</a>
</li> </li>
</ul> </ul>
@@ -72,51 +70,39 @@ ob_start();
<?php } ?> <?php } ?>
</center> </center>
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Full Name" maxlength="200" <input type="text" class="form-control" name="name" placeholder="Full Name" maxlength="200"
value="<?= $user_name ?>" required> value="<?= $user_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email <strong class="text-danger">*</strong></label> <label>Email <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200" <input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200"
value="<?= $user_email ?>" required> value="<?= $user_email ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>New Password</label> <label>New Password</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
</div>
<input type="password" class="form-control" data-toggle="password" name="new_password" id="password" <input type="password" class="form-control" data-toggle="password" name="new_password" id="password"
placeholder="Leave Blank For No Password Change" autocomplete="new-password"> placeholder="Leave Blank For No Password Change" autocomplete="new-password">
<div class="input-group-append">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
<div class="input-group-append">
<span class="btn btn-default"><i class="fa fa-fw fa-question" onclick="generatePassword()"></i></span> <span class="btn btn-default"><i class="fa fa-fw fa-question" onclick="generatePassword()"></i></span>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Role <strong class="text-danger">*</strong></label> <label>Role <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="role" required> <select class="form-control select2" name="role" required>
<?php <?php
$sql_user_roles = mysqli_query($mysqli, "SELECT role_id, role_name FROM user_roles WHERE role_archived_at IS NULL"); $sql_user_roles = mysqli_query($mysqli, "SELECT role_id, role_name FROM user_roles WHERE role_archived_at IS NULL");
@@ -132,15 +118,15 @@ ob_start();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Avatar</label> <label>Avatar</label>
<input type="file" class="form-control-file" accept="image/*" name="file"> <input type="file" class="form-control" accept="image/*" name="file">
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-checkbox"> <div class="form-check">
<input class="custom-control-input" type="checkbox" id="forceMFACheckBox<?= $user_id ?>" name="force_mfa" value="1" <?php if($user_config_force_mfa == 1){ echo "checked"; } ?>> <input class="form-check-input" type="checkbox" id="forceMFACheckBox<?= $user_id ?>" name="force_mfa" value="1" <?php if($user_config_force_mfa == 1){ echo "checked"; } ?>>
<label for="forceMFACheckBox<?= $user_id ?>" class="custom-control-label"> <label for="forceMFACheckBox<?= $user_id ?>" class="form-check-label">
Force MFA Force MFA
</label> </label>
</div> </div>
@@ -148,12 +134,10 @@ ob_start();
<?php if (!empty($user_token)) { ?> <?php if (!empty($user_token)) { ?>
<div class="form-group"> <div class="mb-3">
<label>2FA</label> <label>2FA</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-id-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-id-card"></i></span>
</div>
<select class="form-control" name="2fa"> <select class="form-control" name="2fa">
<option value="">Keep enabled</option> <option value="">Keep enabled</option>
<option value="disable">Disable</option> <option value="disable">Disable</option>
@@ -171,7 +155,7 @@ ob_start();
</div> </div>
<div class="mb-2"> <div class="mb-2">
<small class="text-muted mr-2">Set all:</small> <small class="text-muted me-2">Set all:</small>
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-none').forEach(r => r.checked = true);">No Rule</button> <button type="button" class="btn btn-sm btn-outline-secondary" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-none').forEach(r => r.checked = true);">No Rule</button>
<button type="button" class="btn btn-sm btn-outline-success" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-allow').forEach(r => r.checked = true);">Allow</button> <button type="button" class="btn btn-sm btn-outline-success" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-allow').forEach(r => r.checked = true);">Allow</button>
<button type="button" class="btn btn-sm btn-outline-danger" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-deny').forEach(r => r.checked = true);">Deny</button> <button type="button" class="btn btn-sm btn-outline-danger" onclick="document.querySelectorAll('#accessTable<?= $user_id ?> .perm-deny').forEach(r => r.checked = true);">Deny</button>
@@ -222,8 +206,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="edit_user" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_user" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -22,10 +22,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-download mr-2"></i>Export Users</h5> <h5 class="modal-title"><i class="fas fa-fw fa-download me-2"></i>Export Users</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<?php exportTabsNav(); ?> <?php exportTabsNav(); ?>
@@ -37,22 +35,18 @@ ob_start();
<?php exportTabsFiltersOpen(); ?> <?php exportTabsFiltersOpen(); ?>
<div class="form-group"> <div class="mb-3">
<label>Search</label> <label>Search</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-search"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-search"></i></span>
</div>
<input type="text" class="form-control" name="q" value="<?= stripslashes(escapeHtml($q_filter)) ?>" placeholder="Name or email"> <input type="text" class="form-control" name="q" value="<?= stripslashes(escapeHtml($q_filter)) ?>" placeholder="Name or email">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Archived</label> <label>Archived</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-archive"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-archive"></i></span>
</div>
<select class="form-control select2" name="archived"> <select class="form-control select2" name="archived">
<option <?php if (!$archived_filter) { echo "selected"; } ?> value="0">Active only</option> <option <?php if (!$archived_filter) { echo "selected"; } ?> value="0">Active only</option>
<option <?php if ($archived_filter) { echo "selected"; } ?> value="1">Archived only</option> <option <?php if ($archived_filter) { echo "selected"; } ?> value="1">Archived only</option>

View File

@@ -7,30 +7,24 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-user-plus"></i>Invite User</h5> <h5 class="modal-title"><i class="fas fa-fw fa-user-plus"></i>Invite User</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="mb-3">
<label>Email <strong class="text-danger">*</strong></label> <label>Email <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200" required> <input type="email" class="form-control" name="email" placeholder="Email Address" maxlength="200" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Role <strong class="text-danger">*</strong></label> <label>Role <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="role" required> <select class="form-control select2" name="role" required>
<option value="">- Role -</option> <option value="">- Role -</option>
<!-- //TODO: Pull from roles --> <!-- //TODO: Pull from roles -->
@@ -40,8 +34,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="invite_user" class="btn btn-primary text-bold"><i class="fas fa-paper-plane mr-2"></i>Send Invite</button> <button type="submit" name="invite_user" class="btn btn-primary text-bold"><i class="fas fa-paper-plane me-2"></i>Send Invite</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -18,11 +18,9 @@ $user_role_id = intval($row['user_role_id']);
ob_start(); ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-redo-alt mr-2"></i>Restoring user: <h5 class="modal-title"><i class="fas fa-fw fa-redo-alt me-2"></i>Restoring user:
<strong><?= $user_name ?></strong></h5> <strong><?= $user_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -41,26 +39,20 @@ ob_start();
<?php } ?> <?php } ?>
</center> </center>
<div class="form-group"> <div class="mb-3">
<label>Set a New Password</label> <label>Set a New Password</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
</div>
<input type="password" class="form-control" data-toggle="password" name="new_password" <input type="password" class="form-control" data-toggle="password" name="new_password"
placeholder="Enter a new password" autocomplete="new-password" required> placeholder="Enter a new password" autocomplete="new-password" required>
<div class="input-group-append">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Role <strong class="text-danger">*</strong></label> <label>Role <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user-shield"></i></span>
</div>
<select class="form-control select2" name="role" required> <select class="form-control select2" name="role" required>
<?php <?php
$sql_user_roles = mysqli_query($mysqli, "SELECT role_id, role_name FROM user_roles WHERE role_archived_at IS NULL"); $sql_user_roles = mysqli_query($mysqli, "SELECT role_id, role_name FROM user_roles WHERE role_archived_at IS NULL");
@@ -78,8 +70,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="restore_user" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Restore</button> <button type="submit" name="restore_user" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Restore</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fas fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -7,10 +7,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-building mr-2"></i>New Vendor Template</h5> <h5 class="modal-title"><i class="fas fa-fw fa-building me-2"></i>New Vendor Template</h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -19,13 +17,13 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-details">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-details">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-support">Support</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-support">Support</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-notes">Notes</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-notes">Notes</a>
</li> </li>
</ul> </ul>
@@ -35,42 +33,34 @@ ob_start();
<div class="tab-pane fade show active" id="pills-details"> <div class="tab-pane fade show active" id="pills-details">
<div class="form-group"> <div class="mb-3">
<label>Vendor Name <strong class="text-danger">*</strong></label> <label>Vendor Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-building"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Vendor Name" maxlength="200" required autofocus> <input type="text" class="form-control" name="name" placeholder="Vendor Name" maxlength="200" required autofocus>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Description" maxlength="200"> <input type="text" class="form-control" name="description" placeholder="Description" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Account Number</label> <label>Account Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span>
</div>
<input type="text" class="form-control" name="account_number" placeholder="Account number" maxlength="200"> <input type="text" class="form-control" name="account_number" placeholder="Account number" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Account Manager</label> <label>Account Manager</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<input type="text" class="form-control" name="contact_name" placeholder="Account manager's name" maxlength="200"> <input type="text" class="form-control" name="contact_name" placeholder="Account manager's name" maxlength="200">
</div> </div>
</div> </div>
@@ -80,71 +70,59 @@ ob_start();
<div class="tab-pane fade" id="pills-support"> <div class="tab-pane fade" id="pills-support">
<label>Support Phone / <span class="text-secondary">Extension</span></label> <label>Support Phone / <span class="text-secondary">Extension</span></label>
<div class="form-row"> <div class="row g-2">
<div class="col-9"> <div class="col-9">
<div class="form-group"> <div class="mb-3">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span>
</div>
<input type="tel" class="form-control col-2" name="phone_country_code" placeholder="+" maxlength="4"> <input type="tel" class="form-control col-2" name="phone_country_code" placeholder="+" maxlength="4">
<input type="tel" class="form-control" name="phone" placeholder="Phone Number" maxlength="200"> <input type="tel" class="form-control" name="phone" placeholder="Phone Number" maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="col-3"> <div class="col-3">
<div class="form-group"> <div class="mb-3">
<input type="text" class="form-control" name="extension" placeholder="ext." maxlength="200"> <input type="text" class="form-control" name="extension" placeholder="ext." maxlength="200">
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Hours</label> <label>Support Hours</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="text" class="form-control" name="hours" placeholder="Support Hours" maxlength="200"> <input type="text" class="form-control" name="hours" placeholder="Support Hours" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Email</label> <label>Support Email</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Support Email" maxlength="200"> <input type="email" class="form-control" name="email" placeholder="Support Email" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Website URL</label> <label>Support Website URL</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
</div>
<input type="text" class="form-control" name="website" placeholder="Do not include http(s)://" maxlength="200"> <input type="text" class="form-control" name="website" placeholder="Do not include http(s)://" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Pin/Code</label> <label>Pin/Code</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="code" placeholder="Access Code or Pin" maxlength="200"> <input type="text" class="form-control" name="code" placeholder="Access Code or Pin" maxlength="200">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>SLA</label> <label>SLA</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-handshake"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-handshake"></i></span>
</div>
<input type="text" class="form-control" name="sla" placeholder="SLA Response Time" maxlength="200"> <input type="text" class="form-control" name="sla" placeholder="SLA Response Time" maxlength="200">
</div> </div>
</div> </div>
@@ -153,7 +131,7 @@ ob_start();
<div class="tab-pane fade" id="pills-notes"> <div class="tab-pane fade" id="pills-notes">
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="8" placeholder="Enter some notes" name="notes"></textarea> <textarea class="form-control" rows="8" placeholder="Enter some notes" name="notes"></textarea>
</div> </div>
@@ -163,8 +141,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" name="add_vendor_template" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Create Template</button> <button type="submit" name="add_vendor_template" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Create Template</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -28,10 +28,8 @@ ob_start();
?> ?>
<div class="modal-header bg-dark"> <div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-building mr-2"></i>Editing vendor template: <strong><?= $vendor_name ?></strong></h5> <h5 class="modal-title"><i class="fas fa-fw fa-building me-2"></i>Editing vendor template: <strong><?= $vendor_name ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal"> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<span>&times;</span>
</button>
</div> </div>
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
@@ -41,13 +39,13 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3"> <ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-details<?= $vendor_template_id ?>">Details</a> <a class="nav-link active" data-bs-toggle="pill" href="#pills-details<?= $vendor_template_id ?>">Details</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-support<?= $vendor_template_id ?>">Support</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-support<?= $vendor_template_id ?>">Support</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-notes<?= $vendor_template_id ?>">Notes</a> <a class="nav-link" data-bs-toggle="pill" href="#pills-notes<?= $vendor_template_id ?>">Notes</a>
</li> </li>
</ul> </ul>
@@ -60,70 +58,54 @@ ob_start();
<div class="tab-pane fade show active" id="pills-details<?= $vendor_template_id ?>"> <div class="tab-pane fade show active" id="pills-details<?= $vendor_template_id ?>">
<div class="form-group"> <div class="mb-3">
<label>Vendor Name <strong class="text-danger">*</strong></label> <label>Vendor Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-building"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Vendor Name" maxlength="200" value="<?= "$vendor_name" ?>" required> <input type="text" class="form-control" name="name" placeholder="Vendor Name" maxlength="200" value="<?= "$vendor_name" ?>" required>
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_name" value="1"> <input type="checkbox" name="global_update_vendor_name" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Description</label> <label>Description</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-angle-right"></i></span>
</div>
<input type="text" class="form-control" name="description" placeholder="Description" maxlength="200" value="<?= $vendor_description ?>"> <input type="text" class="form-control" name="description" placeholder="Description" maxlength="200" value="<?= $vendor_description ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_description" value="1"> <input type="checkbox" name="global_update_vendor_description" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Account Number</label> <label>Account Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-fingerprint"></i></span>
</div>
<input type="text" class="form-control" name="account_number" placeholder="Account number" maxlength="200" value="<?= $vendor_account_number ?>"> <input type="text" class="form-control" name="account_number" placeholder="Account number" maxlength="200" value="<?= $vendor_account_number ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_account_number" value="1"> <input type="checkbox" name="global_update_vendor_account_number" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Account Manager</label> <label>Account Manager</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<input type="text" class="form-control" name="contact_name" maxlength="200" value="<?= $vendor_contact_name ?>" placeholder="Vendor contact name"> <input type="text" class="form-control" name="contact_name" maxlength="200" value="<?= $vendor_contact_name ?>" placeholder="Vendor contact name">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_contact_name" value="1"> <input type="checkbox" name="global_update_vendor_contact_name" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-checkbox"> <div class="form-check">
<input type="checkbox" class="custom-control-input" id="updateVendorsCheckbox<?= $vendor_template_id ?>" name="update_base_vendors" value="1" > <input type="checkbox" class="form-check-input" id="updateVendorsCheckbox<?= $vendor_template_id ?>" name="update_base_vendors" value="1" >
<label class="custom-control-label" for="updateVendorsCheckbox<?= $vendor_template_id ?>">Update All Base Vendors</label> <label class="form-check-label" for="updateVendorsCheckbox<?= $vendor_template_id ?>">Update All Base Vendors</label>
</div> </div>
</div> </div>
@@ -132,13 +114,11 @@ ob_start();
<div class="tab-pane fade" id="pills-support<?= $vendor_template_id ?>"> <div class="tab-pane fade" id="pills-support<?= $vendor_template_id ?>">
<label>Support Phone</label> <label>Support Phone</label>
<div class="form-row"> <div class="row g-2">
<div class="col-8"> <div class="col-8">
<div class="form-group"> <div class="mb-3">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span>
</div>
<input type="tel" class="form-control col-2" name="phone_country_code" placeholder="+" maxlength="4" value="<?= $vendor_phone_country_code ?>"> <input type="tel" class="form-control col-2" name="phone_country_code" placeholder="+" maxlength="4" value="<?= $vendor_phone_country_code ?>">
<input type="tel" class="form-control" name="phone" maxlength="200" value="<?= $vendor_phone ?>"> <input type="tel" class="form-control" name="phone" maxlength="200" value="<?= $vendor_phone ?>">
</div> </div>
@@ -147,87 +127,65 @@ ob_start();
<div class="col-4"> <div class="col-4">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" name="extension" placeholder="Prompts" maxlength="200" value="<?= $vendor_extension ?>"> <input type="text" class="form-control" name="extension" placeholder="Prompts" maxlength="200" value="<?= $vendor_extension ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_phone" value="1"> <input type="checkbox" name="global_update_vendor_phone" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Hours</label> <label>Support Hours</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<input type="text" class="form-control" name="hours" placeholder="Support Hours" maxlength="200" value="<?= $vendor_hours ?>"> <input type="text" class="form-control" name="hours" placeholder="Support Hours" maxlength="200" value="<?= $vendor_hours ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_hours" value="1"> <input type="checkbox" name="global_update_vendor_hours" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Email</label> <label>Support Email</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Support Email" maxlength="200" value="<?= $vendor_email ?>"> <input type="email" class="form-control" name="email" placeholder="Support Email" maxlength="200" value="<?= $vendor_email ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_email" value="1"> <input type="checkbox" name="global_update_vendor_email" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Support Website URL</label> <label>Support Website URL</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
</div>
<input type="text" class="form-control" name="website" placeholder="Do not include http(s)://" maxlength="200" value="<?= $vendor_website ?>"> <input type="text" class="form-control" name="website" placeholder="Do not include http(s)://" maxlength="200" value="<?= $vendor_website ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_website" value="1"> <input type="checkbox" name="global_update_vendor_website" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>SLA</label> <label>SLA</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-handshake"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-handshake"></i></span>
</div>
<input type="text" class="form-control" name="sla" placeholder="SLA Response Time" maxlength="200" value="<?= $vendor_sla ?>"> <input type="text" class="form-control" name="sla" placeholder="SLA Response Time" maxlength="200" value="<?= $vendor_sla ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_sla" value="1"> <input type="checkbox" name="global_update_vendor_sla" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Pin/Code</label> <label>Pin/Code</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="code" placeholder="Access Code or Pin" maxlength="200" value="<?= $vendor_code ?>"> <input type="text" class="form-control" name="code" placeholder="Access Code or Pin" maxlength="200" value="<?= $vendor_code ?>">
<div class="input-group-append">
<div class="input-group-text"> <div class="input-group-text">
<input type="checkbox" name="global_update_vendor_code" value="1"> <input type="checkbox" name="global_update_vendor_code" value="1">
</div> </div>
</div>
</div> </div>
</div> </div>
@@ -235,11 +193,11 @@ ob_start();
<div class="tab-pane fade" id="pills-notes<?= $vendor_template_id ?>"> <div class="tab-pane fade" id="pills-notes<?= $vendor_template_id ?>">
<div class="form-group"> <div class="mb-3">
<textarea class="form-control" rows="8" placeholder="Enter some notes" name="notes"><?= $vendor_notes ?></textarea> <textarea class="form-control" rows="8" placeholder="Enter some notes" name="notes"><?= $vendor_notes ?></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Update Notes Globally?</label> <label>Update Notes Globally?</label>
<input type="checkbox" name="global_update_vendor_notes" value="1"> <input type="checkbox" name="global_update_vendor_notes" value="1">
</div> </div>
@@ -250,8 +208,8 @@ ob_start();
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="submit" class="btn btn-primary text-bold" name="edit_vendor_template"><i class="fa fa-check mr-2"></i>Update Template</button> <button type="submit" class="btn btn-primary text-bold" name="edit_vendor_template"><i class="fa fa-check me-2"></i>Update Template</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button> <button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
</div> </div>
</form> </form>

View File

@@ -19,11 +19,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-puzzle-piece mr-2"></i>Access Modules</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-puzzle-piece me-2"></i>Access Modules</h3>
<div class="card-tools"> <div class="card-tools">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/module/module_add.php"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/module/module_add.php">
<i class="fas fa-fw fa-plus mr-2"></i>New Module <i class="fas fa-fw fa-plus me-2"></i>New Module
</button> </button>
</div> </div>
</div> </div>
@@ -34,9 +34,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Modules"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Modules">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -72,20 +70,20 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
</td> </td>
<td> <td>
<?php if ($module_id > 6) { ?> <?php if ($module_id > 6) { ?>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/module/module_edit.php?id=<?= $module_id ?>"> data-modal-url="modals/module/module_edit.php?id=<?= $module_id ?>">
<i class="fas fa-fw fa-user-edit mr-2"></i>Edit <i class="fas fa-fw fa-user-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_module=<?= $module_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_module=<?= $module_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Delete <i class="fas fa-fw fa-archive me-2"></i>Delete
</a> </a>
</div> </div>

View File

@@ -15,9 +15,9 @@ $num_rows = mysqli_num_rows($sql);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-credit-card mr-2"></i>Payment Methods</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-credit-card me-2"></i>Payment Methods</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/payment_method/payment_method_add.php"><i class="fas fa-plus mr-2"></i>Add Payment Method</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/payment_method/payment_method_add.php"><i class="fas fa-plus me-2"></i>Add Payment Method</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -63,18 +63,18 @@ $num_rows = mysqli_num_rows($sql);
<td><?= $payment_method_description ?></td> <td><?= $payment_method_description ?></td>
<td><?= $payment_method_created_at ?></td> <td><?= $payment_method_created_at ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/payment_method/payment_method_edit.php?id=<?= $payment_method_id ?>"> data-modal-url="modals/payment_method/payment_method_edit.php?id=<?= $payment_method_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_payment_method=<?= $payment_method_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_payment_method=<?= $payment_method_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -20,9 +20,9 @@ $num_rows = mysqli_num_rows($sql);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-credit-card mr-2"></i>Payment Providers</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-credit-card me-2"></i>Payment Providers</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/payment_provider/payment_provider_add.php"><i class="fas fa-plus mr-2"></i>Add Provider</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/payment_provider/payment_provider_add.php"><i class="fas fa-plus me-2"></i>Add Provider</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -95,21 +95,21 @@ $num_rows = mysqli_num_rows($sql);
<td><?= $vendor_name ?></td> <td><?= $vendor_name ?></td>
<td><?= $category ?></td> <td><?= $category ?></td>
<td class="text-center"> <td class="text-center">
<a class="badge badge-dark badge-pill p-2" href="saved_payment_methods.php"><?= $saved_payment_count ?></a> <a class="badge bg-dark rounded-pill p-2" href="saved_payment_methods.php"><?= $saved_payment_count ?></a>
</td> </td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/payment_provider/payment_provider_edit.php?id=<?= $provider_id ?>"> data-modal-url="modals/payment_provider/payment_provider_edit.php?id=<?= $provider_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_payment_provider=<?= $provider_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_payment_provider=<?= $provider_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i><strong>Delete Provider and</strong> <i class="fas fa-fw fa-trash me-2"></i><strong>Delete Provider and</strong>
<ul class="text-xs"> <ul class="text-xs">
<li>Related Recurring Payments</li> <li>Related Recurring Payments</li>
<li>Related Saved cards</li> <li>Related Saved cards</li>

View File

@@ -63,19 +63,19 @@ if (isset($_GET['project_template_id'])) {
<div class="card card-body"> <div class="card card-body">
<div class="row"> <div class="row">
<div class="col-sm-4"> <div class="col-sm-4">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-project-diagram text-secondary mr-3"></i> <i class="fa fa-fw fa-2x fa-project-diagram text-secondary me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<h3 class="mb-0"><?= $project_template_name ?><span class='badge badge-pill badge-info ml-2'>Template</span></h3> <h3 class="mb-0"><?= $project_template_name ?><span class='badge rounded-pill bg-info ms-2'>Template</span></h3>
<div><small class="text-secondary"><?= $project_template_description ?></small></div> <div><small class="text-secondary"><?= $project_template_description ?></small></div>
</div> </div>
</div> </div>
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-life-ring text-secondary mr-3"></i> <i class="fa fa-fw fa-2x fa-life-ring text-secondary me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<div>Ticket Templates</div> <div>Ticket Templates</div>
<h3 class="mb-0"><?= $ticket_template_count ?></h3> <h3 class="mb-0"><?= $ticket_template_count ?></h3>
</div> </div>
@@ -83,9 +83,9 @@ if (isset($_GET['project_template_id'])) {
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-tasks text-secondary mr-3"></i> <i class="fa fa-fw fa-2x fa-tasks text-secondary me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<div>Task Templates</div> <div>Task Templates</div>
<h3 class="mb-0"><?= $task_template_count ?></h3> <h3 class="mb-0"><?= $task_template_count ?></h3>
</div> </div>
@@ -93,28 +93,28 @@ if (isset($_GET['project_template_id'])) {
</div> </div>
<div class="col-sm-2"> <div class="col-sm-2">
<div class="btn-group float-right"> <div class="btn-group float-end">
<button type="button" class="btn btn-primary btn-sm ajax-modal" href="#" data-modal-url="modals/project_template/project_template_ticket_template_add.php?project_template_id=<?= $project_template_id ?>"> <button type="button" class="btn btn-primary btn-sm ajax-modal" href="#" data-modal-url="modals/project_template/project_template_ticket_template_add.php?project_template_id=<?= $project_template_id ?>">
<i class="fas fa-fw fa-plus mr-2"></i>Add Ticket Template <i class="fas fa-fw fa-plus me-2"></i>Add Ticket Template
</button> </button>
<div class="dropdown dropleft text-center ml-3"> <div class="dropdown dropstart text-center ms-3">
<button class="btn btn-secondary btn-sm" type="button" id="dropdownMenuButton" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown">
<i class="fas fa-fw fa-ellipsis-v"></i> <i class="fas fa-fw fa-ellipsis-v"></i>
</button> </button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/project_template/project_template_edit.php?project_template_id=<?= $project_template_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/project_template/project_template_edit.php?project_template_id=<?= $project_template_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit Template <i class="fas fa-fw fa-edit me-2"></i>Edit Template
</a> </a>
<?php if ($session_user_role == 3) { ?> <?php if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?archive_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?archive_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive (not yet implemented) <i class="fas fa-fw fa-archive me-2"></i>Archive (not yet implemented)
</a> </a>
<?php } ?> <?php } ?>
<?php if ($session_user_role == 3) { ?> <?php if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>
@@ -131,7 +131,7 @@ if (isset($_GET['project_template_id'])) {
<?php if (mysqli_num_rows($sql_ticket_templates) > 0) { ?> <?php if (mysqli_num_rows($sql_ticket_templates) > 0) { ?>
<div class="card card-body card-outline card-dark mb-3"> <div class="card card-body card-outline card-dark mb-3">
<h5 class="text-secondary"><i class="fa fa-fw fa-life-ring mr-2"></i>Project Ticket Templates</h5> <h5 class="text-secondary"><i class="fa fa-fw fa-life-ring me-2"></i>Project Ticket Templates</h5>
<div class="table-responsive-sm"> <div class="table-responsive-sm">
<table class="table table-striped table-borderless table-hover" id="ticket_templates"> <table class="table table-striped table-borderless table-hover" id="ticket_templates">
<thead class="text-dark"> <thead class="text-dark">
@@ -158,7 +158,7 @@ if (isset($_GET['project_template_id'])) {
<tr data-task-id="<?= $ticket_template_id ?>"> <tr data-task-id="<?= $ticket_template_id ?>">
<td> <td>
<a href="#" class="drag-handle"><i class="fas fa-bars text-muted mr-2"></i></a> <a href="#" class="drag-handle"><i class="fas fa-bars text-muted me-2"></i></a>
<a href="ticket_template.php?ticket_template_id=<?= $ticket_template_id ?>"> <a href="ticket_template.php?ticket_template_id=<?= $ticket_template_id ?>">
<?= $ticket_template_name ?> <?= $ticket_template_name ?>
</a> </a>
@@ -192,7 +192,7 @@ if (isset($_GET['project_template_id'])) {
<!-- Task Templates Card --> <!-- Task Templates Card -->
<?php if (mysqli_num_rows($sql_task_templates) > 0) { ?> <?php if (mysqli_num_rows($sql_task_templates) > 0) { ?>
<div class="card card-body card-outline card-dark"> <div class="card card-body card-outline card-dark">
<h5 class="text-secondary"><i class="fas fa-fw fa-tasks mr-2"></i>Project Task Templates</h5> <h5 class="text-secondary"><i class="fas fa-fw fa-tasks me-2"></i>Project Task Templates</h5>
<table class="table"> <table class="table">
<?php <?php
while($row = mysqli_fetch_assoc($sql_task_templates)){ while($row = mysqli_fetch_assoc($sql_task_templates)){
@@ -201,7 +201,7 @@ if (isset($_GET['project_template_id'])) {
?> ?>
<tr> <tr>
<td> <td>
<i class="far fa-fw fa-check-square text-primary mr-3"></i> <i class="far fa-fw fa-check-square text-primary me-3"></i>
<?= $task_template_name ?> <?= $task_template_name ?>
</td> </td>
</tr> </tr>

View File

@@ -21,9 +21,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-project-diagram mr-2"></i>Project Templates</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-project-diagram me-2"></i>Project Templates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/project_template/project_template_add.php"><i class="fas fa-plus mr-2"></i>New Project Template</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/project_template/project_template_add.php"><i class="fas fa-plus me-2"></i>New Project Template</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -33,9 +33,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Project Templates"> <input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Project Templates">
<div class="input-group-append">
<button class="btn btn-dark"><i class="fa fa-search"></i></button> <button class="btn btn-dark"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
@@ -89,9 +87,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<tr> <tr>
<td> <td>
<a class="text-dark" href="project_template.php?project_template_id=<?= $project_template_id ?>"> <a class="text-dark" href="project_template.php?project_template_id=<?= $project_template_id ?>">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-project-diagram mr-3"></i> <i class="fa fa-fw fa-2x fa-project-diagram me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<div> <div>
<?= $project_template_name ?> <?= $project_template_name ?>
</div> </div>
@@ -105,18 +103,18 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $ticket_template_count ?></td> <td><?= $ticket_template_count ?></td>
<td><?= $task_template_count ?></td> <td><?= $task_template_count ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/project_template/project_template_edit.php?project_template_id=<?= $project_template_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/project_template/project_template_edit.php?project_template_id=<?= $project_template_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if($session_user_role == 3) { ?> <?php if($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_project_template=<?= $project_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -20,11 +20,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-user-shield mr-2"></i>Roles</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-user-shield me-2"></i>Roles</h3>
<div class="card-tools"> <div class="card-tools">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/role/role_add.php"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/role/role_add.php">
<i class="fas fa-fw fa-user-plus mr-2"></i>New Role <i class="fas fa-fw fa-user-plus me-2"></i>New Role
</button> </button>
</div> </div>
</div> </div>
@@ -35,9 +35,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Roles"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Roles">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -95,9 +93,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<tr> <tr>
<td> <td>
<a class="<?php if ($role_id !== 3) { ?> ajax-modal" data-modal-url="modals/role/role_edit.php?id=<?= $role_id ?>" <?php } ?> href="#"> <a class="<?php if ($role_id !== 3) { ?> ajax-modal" data-modal-url="modals/role/role_edit.php?id=<?= $role_id ?>" <?php } ?> href="#">
<div class="media"> <div class="d-flex">
<i class="fas fa-fw fa-2x fa-user-shield text-dark mr-2"></i> <i class="fas fa-fw fa-2x fa-user-shield text-dark me-2"></i>
<div class="media-body"> <div class="flex-grow-1">
<div><?= $role_name ?></div> <div><?= $role_name ?></div>
<div><small class="text-secondary"><?= $role_description ?></small></div> <div><small class="text-secondary"><?= $role_description ?></small></div>
</div> </div>
@@ -108,21 +106,21 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $role_admin ? 'Yes' : 'No' ?></td> <td><?= $role_admin ? 'Yes' : 'No' ?></td>
<td> <td>
<?php if ($role_id !== 3) { ?> <?php if ($role_id !== 3) { ?>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/role/role_edit.php?id=<?= $role_id ?>"> data-modal-url="modals/role/role_edit.php?id=<?= $role_id ?>">
<i class="fas fa-fw fa-user-edit mr-2"></i>Edit <i class="fas fa-fw fa-user-edit me-2"></i>Edit
</a> </a>
<?php if (empty($role_archived_at) && $role_user_count == 0) { ?> <?php if (empty($role_archived_at) && $role_user_count == 0) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?archive_role=<?= $role_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?archive_role=<?= $role_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php } ?> <?php } ?>

View File

@@ -45,7 +45,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><i class="fas fa-fw fa-credit-card mr-2"></i>Saved Payment Methods</h3> <h3 class="card-title"><i class="fas fa-fw fa-credit-card me-2"></i>Saved Payment Methods</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form class="mb-4" autocomplete="off"> <form class="mb-4" autocomplete="off">
@@ -53,9 +53,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Saved Payment Methods"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Saved Payment Methods">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
@@ -133,7 +131,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $saved_payment_created_at ?></td> <td><?= $saved_payment_created_at ?></td>
<td> <td>
<a class="btn btn-outline-danger confirm-link" href="post.php?delete_saved_payment=<?= $saved_payment_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-outline-danger confirm-link" href="post.php?delete_saved_payment=<?= $saved_payment_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</td> </td>
</tr> </tr>

View File

@@ -29,7 +29,7 @@ $company_initials = escapeHtml(initials($company_name));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><i class="fas fa-fw fa-briefcase mr-2"></i>Company Details</h3> <h3 class="card-title"><i class="fas fa-fw fa-briefcase me-2"></i>Company Details</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
@@ -39,72 +39,60 @@ $company_initials = escapeHtml(initials($company_name));
<div class="col-md-3 text-center"> <div class="col-md-3 text-center">
<?php if ($company_logo) { ?> <?php if ($company_logo) { ?>
<img class="img-thumbnail" src="<?= "../uploads/settings/$company_logo" ?>"> <img class="img-thumbnail" src="<?= "../uploads/settings/$company_logo" ?>">
<a href="post.php?remove_company_logo&csrf_token=<?= $_SESSION['csrf_token'] ?>" class="btn btn-outline-danger btn-block">Remove Logo</a> <a href="post.php?remove_company_logo&csrf_token=<?= $_SESSION['csrf_token'] ?>" class="btn btn-outline-danger w-100">Remove Logo</a>
<hr> <hr>
<?php } ?> <?php } ?>
<div class="form-group"> <div class="mb-3">
<label>Upload company logo</label> <label>Upload company logo</label>
<input type="file" class="form-control-file" name="file" accept=".jpg, .jpeg, .png"> <input type="file" class="form-control" name="file" accept=".jpg, .jpeg, .png">
</div> </div>
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<div class="form-group"> <div class="mb-3">
<label>Name <strong class="text-danger">*</strong></label> <label>Name <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-building"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
</div>
<input type="text" class="form-control" name="name" placeholder="Company Name" maxlength="200" value="<?= $company_name ?>" required> <input type="text" class="form-control" name="name" placeholder="Company Name" maxlength="200" value="<?= $company_name ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Address</label> <label>Address</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-map-marker-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-map-marker-alt"></i></span>
</div>
<input type="text" class="form-control" name="address" placeholder="Street Address" maxlength="200" value="<?= $company_address ?>"> <input type="text" class="form-control" name="address" placeholder="Street Address" maxlength="200" value="<?= $company_address ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>City</label> <label>City</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-city"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-city"></i></span>
</div>
<input type="text" class="form-control" name="city" placeholder="City" maxlength="200" value="<?= $company_city ?>"> <input type="text" class="form-control" name="city" placeholder="City" maxlength="200" value="<?= $company_city ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>State / Province</label> <label>State / Province</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-flag"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-flag"></i></span>
</div>
<input type="text" class="form-control" name="state" placeholder="State or Province" maxlength="200" value="<?= $company_state ?>"> <input type="text" class="form-control" name="state" placeholder="State or Province" maxlength="200" value="<?= $company_state ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Postal Code</label> <label>Postal Code</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fab fa-fw fa-usps"></i></span> <span class="input-group-text"><i class="fab fa-fw fa-usps"></i></span>
</div>
<input type="text" class="form-control" name="zip" placeholder="Zip or Postal Code" maxlength="200" value="<?= $company_zip ?>"> <input type="text" class="form-control" name="zip" placeholder="Zip or Postal Code" maxlength="200" value="<?= $company_zip ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Country</label> <label>Country</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe-americas"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe-americas"></i></span>
</div>
<select class="form-control select2" name="country"> <select class="form-control select2" name="country">
<option value="">- Country -</option> <option value="">- Country -</option>
<?php foreach($countries_array as $country_name) { ?> <?php foreach($countries_array as $country_name) { ?>
@@ -115,13 +103,11 @@ $company_initials = escapeHtml(initials($company_name));
</div> </div>
<label>Phone</label> <label>Phone</label>
<div class="form-row"> <div class="row g-2">
<div class="col-md-9"> <div class="col-md-9">
<div class="form-group"> <div class="mb-3">
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-phone"></i></span>
</div>
<input type="tel" class="form-control col-2" name="phone_country_code" value="<?= $company_phone_country_code ?>" placeholder="+" maxlength="4"> <input type="tel" class="form-control col-2" name="phone_country_code" value="<?= $company_phone_country_code ?>" placeholder="+" maxlength="4">
<input type="tel" class="form-control" name="phone" value="<?= $company_phone ?>" placeholder="Phone Number" maxlength="200"> <input type="tel" class="form-control" name="phone" value="<?= $company_phone ?>" placeholder="Phone Number" maxlength="200">
</div> </div>
@@ -129,39 +115,33 @@ $company_initials = escapeHtml(initials($company_name));
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email</label> <label>Email</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-envelope"></i></span>
</div>
<input type="email" class="form-control" name="email" placeholder="Email address" maxlength="200" value="<?= $company_email ?>"> <input type="email" class="form-control" name="email" placeholder="Email address" maxlength="200" value="<?= $company_email ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Website</label> <label>Website</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
</div>
<input type="text" class="form-control" name="website" placeholder="Website address" maxlength="200" value="<?= $company_website ?>"> <input type="text" class="form-control" name="website" placeholder="Website address" maxlength="200" value="<?= $company_website ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Tax ID</label> <label>Tax ID</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-balance-scale"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-balance-scale"></i></span>
</div>
<input type="text" class="form-control" name="tax_id" value="<?= $company_tax_id ?>" placeholder="Tax ID" maxlength="200"> <input type="text" class="form-control" name="tax_id" value="<?= $company_tax_id ?>" placeholder="Tax ID" maxlength="200">
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_company" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_company" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -28,9 +28,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-th-list mr-2"></i><?= escapeHtml($table) ?> Fields</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-th-list me-2"></i><?= escapeHtml($table) ?> Fields</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#createCustomFieldModal"><i class="fas fa-plus mr-2"></i>Create</button> <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#createCustomFieldModal"><i class="fas fa-plus me-2"></i>Create</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -40,13 +40,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-sm-4 mb-2"> <div class="col-sm-4 mb-2">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<div class="btn-group float-right"> <div class="btn-group float-end">
<a href="?table=client_assets" class="btn <?php if ($table == 'client_assets') { echo 'btn-primary'; } else { echo 'btn-default'; } ?>">Assets</a> <a href="?table=client_assets" class="btn <?php if ($table == 'client_assets') { echo 'btn-primary'; } else { echo 'btn-default'; } ?>">Assets</a>
<a href="?table=clients" class="btn <?php if ($table == 'clients') { echo 'btn-primary'; } else { echo 'btn-default'; } ?>">Clients</a> <a href="?table=clients" class="btn <?php if ($table == 'clients') { echo 'btn-primary'; } else { echo 'btn-default'; } ?>">Clients</a>
</div> </div>
@@ -75,20 +73,20 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
?> ?>
<tr> <tr>
<td><a class="text-dark" href="#" data-toggle="modal" data-target="#editCustomFieldModal<?= $custom_field_id ?>"><?= $custom_field_label ?></a></td> <td><a class="text-dark" href="#" data-bs-toggle="modal" data-bs-target="#editCustomFieldModal<?= $custom_field_id ?>"><?= $custom_field_label ?></a></td>
<td><?= $custom_field_type ?></td> <td><?= $custom_field_type ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#editCustomFieldModal<?= $custom_field_id ?>"> <a class="dropdown-item" href="#" data-bs-toggle="modal" data-bs-target="#editCustomFieldModal<?= $custom_field_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_field=<?= $custom_field_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_custom_field=<?= $custom_field_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -23,18 +23,16 @@ $net_terms_array = array (
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-cogs mr-2"></i>Defaults</h3> <h3 class="card-title"><i class="fas fa-fw fa-cogs me-2"></i>Defaults</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Start Page</label> <label>Start Page</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-home"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-home"></i></span>
</div>
<select class="form-control select2" name="start_page" data-tags="true" required> <select class="form-control select2" name="start_page" data-tags="true" required>
<?php if (!in_array($config_start_page, array_keys($start_page_select_array))) { ?> <?php if (!in_array($config_start_page, array_keys($start_page_select_array))) { ?>
<option selected> <?= escapeHtml($config_start_page) ?></option> <option selected> <?= escapeHtml($config_start_page) ?></option>
@@ -49,12 +47,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Calendar</label> <label>Calendar</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<select class="form-control select2" name="calendar"> <select class="form-control select2" name="calendar">
<option value="0">- None -</option> <option value="0">- None -</option>
<?php <?php
@@ -72,12 +68,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Transfer From Account</label> <label>Transfer From Account</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-exchange-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-exchange-alt"></i></span>
</div>
<select class="form-control select2" name="transfer_from_account"> <select class="form-control select2" name="transfer_from_account">
<option value="0">- None -</option> <option value="0">- None -</option>
<?php <?php
@@ -95,12 +89,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Transfer To Account</label> <label>Transfer To Account</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-exchange-alt"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-exchange-alt"></i></span>
</div>
<select class="form-control select2" name="transfer_to_account"> <select class="form-control select2" name="transfer_to_account">
<option value="0">- None -</option> <option value="0">- None -</option>
<?php <?php
@@ -118,12 +110,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Payment Account</label> <label>Payment Account</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<select class="form-control select2" name="payment_account"> <select class="form-control select2" name="payment_account">
<option value="0">- None -</option> <option value="0">- None -</option>
<?php <?php
@@ -143,12 +133,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expense Account</label> <label>Expense Account</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-shopping-cart"></i></span>
</div>
<select class="form-control select2" name="expense_account"> <select class="form-control select2" name="expense_account">
<option value="0">- None -</option> <option value="0">- None -</option>
<?php <?php
@@ -166,12 +154,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Payment Method</label> <label>Payment Method</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<select class="form-control select2" name="payment_method"> <select class="form-control select2" name="payment_method">
<option value="">- None -</option> <option value="">- None -</option>
<?php <?php
@@ -188,12 +174,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Expense Payment Method</label> <label>Expense Payment Method</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-credit-card"></i></span>
</div>
<select class="form-control select2" name="expense_payment_method"> <select class="form-control select2" name="expense_payment_method">
<option value="">- None -</option> <option value="">- None -</option>
<?php <?php
@@ -210,12 +194,10 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Net Terms</label> <label>Net Terms</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-calendar"></i></span>
</div>
<select class="form-control select2" name="net_terms"> <select class="form-control select2" name="net_terms">
<?php foreach ($net_terms_array as $net_term_value => $net_term_name) { ?> <?php foreach ($net_terms_array as $net_term_value => $net_term_name) { ?>
<option <?php if ($config_default_net_terms == $net_term_value) { <option <?php if ($config_default_net_terms == $net_term_value) {
@@ -226,19 +208,17 @@ $net_terms_array = array (
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Client Hourly Rate</label> <label>Client Hourly Rate</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="hourly_rate" value="<?= number_format($config_default_hourly_rate, 2, '.', '') ?>" placeholder="0.00" required> <input type="text" class="form-control" inputmode="decimal" pattern="[0-9]*\.?[0-9]{0,2}" name="hourly_rate" value="<?= number_format($config_default_hourly_rate, 2, '.', '') ?>" placeholder="0.00" required>
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_default_settings" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_default_settings" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -4,7 +4,7 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-file-invoice mr-2"></i>Invoice Settings</h3> <h3 class="card-title"><i class="fas fa-fw fa-file-invoice me-2"></i>Invoice Settings</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
@@ -12,66 +12,58 @@ require_once "includes/inc_all_admin.php";
<h4>Invoice</h4> <h4>Invoice</h4>
<div class="form-group"> <div class="mb-3">
<label>Invoice Prefix</label> <label>Invoice Prefix</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="text" class="form-control" name="config_invoice_prefix" placeholder="Invoice Prefix" maxlength="200" value="<?= escapeHtml($config_invoice_prefix) ?>" required> <input type="text" class="form-control" name="config_invoice_prefix" placeholder="Invoice Prefix" maxlength="200" value="<?= escapeHtml($config_invoice_prefix) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Next Number</label> <label>Next Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="number" min="0" class="form-control" name="config_invoice_next_number" placeholder="Next Invoice Number" value="<?= intval($config_invoice_next_number) ?>" required> <input type="number" min="0" class="form-control" name="config_invoice_next_number" placeholder="Next Invoice Number" value="<?= intval($config_invoice_next_number) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Invoice Footer</label> <label>Invoice Footer</label>
<textarea class="form-control" rows="4" name="config_invoice_footer"><?= escapeHtml($config_invoice_footer) ?></textarea> <textarea class="form-control" rows="4" name="config_invoice_footer"><?= escapeHtml($config_invoice_footer) ?></textarea>
</div> </div>
<h5>Show Tax ID On Invoices</h5> <h5>Show Tax ID On Invoices</h5>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_invoice_show_tax_id" <?php if ($config_invoice_show_tax_id == 1) { echo "checked"; } ?> value="1" id="customSwitch1"> <input type="checkbox" class="form-check-input" name="config_invoice_show_tax_id" <?php if ($config_invoice_show_tax_id == 1) { echo "checked"; } ?> value="1" id="customSwitch1">
<label class="custom-control-label" for="customSwitch1">Show Tax ID</label> <label class="form-check-label" for="customSwitch1">Show Tax ID</label>
</div> </div>
</div> </div>
<h5>Invoice Late Fees</h5> <h5>Invoice Late Fees</h5>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_invoice_late_fee_enable" <?php if ($config_invoice_late_fee_enable == 1) { echo "checked"; } ?> value="1" id="customSwitch2"> <input type="checkbox" class="form-check-input" name="config_invoice_late_fee_enable" <?php if ($config_invoice_late_fee_enable == 1) { echo "checked"; } ?> value="1" id="customSwitch2">
<label class="custom-control-label" for="customSwitch2">Enable Late Fee</label> <label class="form-check-label" for="customSwitch2">Enable Late Fee</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Late Fee %</label> <label>Late Fee %</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-percent"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-percent"></i></span>
</div>
<input type="number" class="form-control" min="0" max="100" step="0.01" name="config_invoice_late_fee_percent" value="<?= $config_invoice_late_fee_percent ?>"> <input type="number" class="form-control" min="0" max="100" step="0.01" name="config_invoice_late_fee_percent" value="<?= $config_invoice_late_fee_percent ?>">
</div> </div>
<small class="text-secondary">We recommend updating the invoice footer to include policies on your late charges. This will be applied every 30 days after the invoice Due Date.</small> <small class="text-secondary">We recommend updating the invoice footer to include policies on your late charges. This will be applied every 30 days after the invoice Due Date.</small>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email address to notify when invoices are paid online <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label> <label>Email address to notify when invoices are paid online <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span>
</div>
<input type="email" class="form-control" name="config_invoice_paid_notification_email" placeholder="Address to notify for paid invoices, leave blank for none" maxlength="200" value="<?= escapeHtml($config_invoice_paid_notification_email) ?>"> <input type="email" class="form-control" name="config_invoice_paid_notification_email" placeholder="Address to notify for paid invoices, leave blank for none" maxlength="200" value="<?= escapeHtml($config_invoice_paid_notification_email) ?>">
</div> </div>
</div> </div>
@@ -80,22 +72,18 @@ require_once "includes/inc_all_admin.php";
<h4>Recurring Invoice</h4> <h4>Recurring Invoice</h4>
<div class="form-group"> <div class="mb-3">
<label>Recurring Prefix</label> <label>Recurring Prefix</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="text" class="form-control" name="config_recurring_invoice_prefix" placeholder="Recurring Invoice Prefix" maxlength="200" value="<?= escapeHtml($config_recurring_invoice_prefix) ?>" required> <input type="text" class="form-control" name="config_recurring_invoice_prefix" placeholder="Recurring Invoice Prefix" maxlength="200" value="<?= escapeHtml($config_recurring_invoice_prefix) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Next Number</label> <label>Next Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="number" min="0" class="form-control" name="config_recurring_invoice_next_number" placeholder="Next Recurring Invoice Number" value="<?= intval($config_recurring_invoice_next_number) ?>" required> <input type="number" min="0" class="form-control" name="config_recurring_invoice_next_number" placeholder="Next Recurring Invoice Number" value="<?= intval($config_recurring_invoice_next_number) ?>" required>
</div> </div>
</div> </div>
@@ -104,7 +92,7 @@ require_once "includes/inc_all_admin.php";
<hr> <hr>
<button type="submit" name="edit_invoice_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_invoice_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -15,18 +15,16 @@ $timezones = DateTimeZone::listIdentifiers();
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-globe mr-2"></i>Localization</h3> <h3 class="card-title"><i class="fas fa-fw fa-globe me-2"></i>Localization</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Language <strong class="text-danger">*</strong></label> <label>Language <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-language"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-language"></i></span>
</div>
<select class="form-control select2" name="locale" required> <select class="form-control select2" name="locale" required>
<option value="">- Select a Locale -</option> <option value="">- Select a Locale -</option>
<?php foreach($locales_array as $locale_code => $locale_name) { ?> <?php foreach($locales_array as $locale_code => $locale_name) { ?>
@@ -36,12 +34,10 @@ $timezones = DateTimeZone::listIdentifiers();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Currency <strong class="text-danger">*</strong></label> <label>Currency <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-money-bill"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-money-bill"></i></span>
</div>
<select class="form-control select2" name="currency_code" required> <select class="form-control select2" name="currency_code" required>
<option value="">- Currency -</option> <option value="">- Currency -</option>
<?php foreach($currencies_array as $currency_code => $currency_name) { ?> <?php foreach($currencies_array as $currency_code => $currency_name) { ?>
@@ -51,12 +47,10 @@ $timezones = DateTimeZone::listIdentifiers();
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Timezone <strong class="text-danger">*</strong></label> <label>Timezone <strong class="text-danger">*</strong></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-business-time"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-business-time"></i></span>
</div>
<select class="form-control select2" name="timezone" required> <select class="form-control select2" name="timezone" required>
<option value="">- Select a Timezone -</option> <option value="">- Select a Timezone -</option>
<?php foreach ($timezones as $tz) { ?> <?php foreach ($timezones as $tz) { ?>
@@ -68,7 +62,7 @@ $timezones = DateTimeZone::listIdentifiers();
<hr> <hr>
<button type="submit" name="edit_localization" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_localization" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -4,8 +4,8 @@ require_once "includes/inc_all_admin.php";
// ---- Tiny status dot for tab labels ---------------------------------------- // ---- Tiny status dot for tab labels ----------------------------------------
function renderMailStatusDot($on) { function renderMailStatusDot($on) {
return $on return $on
? '<i class="fas fa-circle text-success ml-2" style="font-size:.5rem;vertical-align:middle;" title="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 ml-2" style="font-size:.5rem;vertical-align:middle;" title="Not 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); $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 card-dark">
<div class="card-header py-3"> <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>
<div class="card-body"> <div class="card-body">
<ul class="nav nav-tabs" id="mailTabs" role="tablist"> <ul class="nav nav-tabs" id="mailTabs" role="tablist">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <?php if ($active_tab === 'smtp') { echo 'active'; } ?>" href="?tab=smtp" data-target="#tab-smtp"> <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 mr-1"></i>Sending<?= renderMailStatusDot($smtp_on) ?> <i class="fas fa-fw fa-paper-plane me-1"></i>Sending<?= renderMailStatusDot($smtp_on) ?>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <?php if ($active_tab === 'imap') { echo 'active'; } ?>" href="?tab=imap" data-target="#tab-imap"> <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 mr-1"></i>Receiving<?= renderMailStatusDot($imap_on) ?> <i class="fas fa-fw fa-inbox me-1"></i>Receiving<?= renderMailStatusDot($imap_on) ?>
</a> </a>
</li> </li>
<li class="nav-item" id="tabitem-oauth" style="<?= $oauth_needed ? '' : 'display:none;' ?>"> <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"> <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 mr-1"></i>OAuth <i class="fas fa-fw fa-key me-1"></i>OAuth
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <?php if ($active_tab === 'from') { echo 'active'; } ?>" href="?tab=from" data-target="#tab-from"> <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 mr-1"></i>From Addresses <i class="fas fa-fw fa-at me-1"></i>From Addresses
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <?php if ($active_tab === 'tests') { echo 'active'; } ?>" href="?tab=tests" data-target="#tab-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 mr-1"></i>Tests <i class="fas fa-fw fa-vial me-1"></i>Tests
</a> </a>
</li> </li>
</ul> </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="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="tab" value="smtp"> <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> <label>SMTP Provider <small class="text-muted">— outbound</small></label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span></div>
<select class="form-control" name="config_smtp_provider" id="config_smtp_provider"> <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="" <?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> <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>
<div id="smtp_conn_fields"> <div id="smtp_conn_fields">
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>SMTP Host</label> <label>SMTP Host</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span></div>
<input type="text" class="form-control" name="config_smtp_host" placeholder="smtp.yourcompany.com" maxlength="200" value="<?= escapeHtml($config_smtp_host) ?>" required> <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> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Port</label> <label>Port</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span></div>
<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> <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> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Encryption</label> <label>Encryption</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span></div>
<select class="form-control" name="config_smtp_encryption"> <select class="form-control" name="config_smtp_encryption">
<option value="">None</option> <option value="">None</option>
<option <?php if ($config_smtp_encryption == 'tls') { echo "selected"; } ?> value="tls">TLS</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> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6" id="smtp_user_group"> <div class="mb-3 col-md-6" id="smtp_user_group">
<label id="smtp_user_label">SMTP Username</label> <label id="smtp_user_label">SMTP Username</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span></div>
<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) ?>"> <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> </div>
<small class="form-text text-muted" id="smtp_user_hint">Leave blank if no authentication is required.</small> <small class="form-text text-muted" id="smtp_user_hint">Leave blank if no authentication is required.</small>
</div> </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> <label>SMTP Password</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
<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"><span class="input-group-text"><i class="fa fa-fw fa-eye"></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">
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
</div> </div>
</div> </div>
</div> </div>
<div class="alert alert-info" id="smtp_oauth_pointer" style="display:none;"> <div class="alert alert-info" id="smtp_oauth_pointer" style="display:none;">
<div class="d-flex align-items-center justify-content-between"> <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> <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 ml-3 text-nowrap"><i class="fas fa-fw fa-key mr-1"></i>Open OAuth</button> <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>
</div> </div>
<hr> <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> </form>
</div> </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="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="tab" value="imap"> <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> <label>IMAP Provider <small class="text-muted">— inbound ticket inbox</small></label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-cloud"></i></span></div>
<select class="form-control" name="config_imap_provider" id="config_imap_provider"> <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="" <?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> <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>
<div id="imap_conn_fields"> <div id="imap_conn_fields">
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>IMAP Host</label> <label>IMAP Host</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-server"></i></span></div>
<input type="text" class="form-control" name="config_imap_host" placeholder="imap.yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_host) ?>"> <input type="text" class="form-control" name="config_imap_host" placeholder="imap.yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_host) ?>">
</div> </div>
</div> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Port</label> <label>Port</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-plug"></i></span></div>
<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) : '' ?>"> <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> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Encryption</label> <label>Encryption</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-lock"></i></span></div>
<select class="form-control" name="config_imap_encryption"> <select class="form-control" name="config_imap_encryption">
<option value="">None</option> <option value="">None</option>
<option <?php if ($config_imap_encryption == 'tls') { echo "selected"; } ?> value="tls">TLS</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> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6" id="imap_user_group"> <div class="mb-3 col-md-6" id="imap_user_group">
<label id="imap_user_label">IMAP Username</label> <label id="imap_user_label">IMAP Username</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-user"></i></span></div>
<input type="text" class="form-control" name="config_imap_username" placeholder="tickets@yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_username) ?>" required> <input type="text" class="form-control" name="config_imap_username" placeholder="tickets@yourcompany.com" maxlength="200" value="<?= escapeHtml($config_imap_username) ?>" required>
</div> </div>
<small class="form-text text-muted" id="imap_user_hint">The mailbox address to monitor for incoming tickets.</small> <small class="form-text text-muted" id="imap_user_hint">The mailbox address to monitor for incoming tickets.</small>
</div> </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> <label>IMAP Password</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
<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"><span class="input-group-text"><i class="fa fa-fw fa-eye"></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">
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
</div> </div>
</div> </div>
</div> </div>
<div class="alert alert-info" id="imap_oauth_pointer" style="display:none;"> <div class="alert alert-info" id="imap_oauth_pointer" style="display:none;">
<div class="d-flex align-items-center justify-content-between"> <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> <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 ml-3 text-nowrap"><i class="fas fa-fw fa-key mr-1"></i>Open OAuth</button> <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>
</div> </div>
<hr> <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> </form>
</div> </div>
@@ -271,63 +257,56 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
<input type="hidden" name="tab" value="oauth"> <input type="hidden" name="tab" value="oauth">
<div class="alert alert-secondary" id="oauth_hint"> <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>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>OAuth Client ID</label> <label>OAuth Client ID</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-id-badge"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-id-badge"></i></span></div>
<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 ?? '') ?>"> <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> </div>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>OAuth Client Secret</label> <label>OAuth Client Secret</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
<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"><span class="input-group-text"><i class="fa fa-fw fa-eye"></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">
<div class="input-group-append"><span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span></div>
</div> </div>
</div> </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> <label>Tenant ID <small class="text-muted">— Microsoft 365 only</small></label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-building"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-building"></i></span></div>
<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 ?? '') ?>"> <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> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Refresh Token</label> <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> <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>
<div class="form-group col-md-6"> <div class="mb-3 col-md-6">
<label>Access Token <small class="text-muted">— optional</small></label> <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> <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> <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> </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> <label>Microsoft OAuth Connect (Web)</label>
<div class="input-group"> <div class="input-group"><span class="input-group-text"><i class="fa fa-fw fa-link"></i></span>
<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-fw fa-link"></i></span></div>
<input type="text" class="form-control" readonly value="<?= htmlspecialchars($mail_oauth_callback_uri) ?>"> <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"> <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> </button>
</div>
</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> <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> </div>
<hr> <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> </form>
</div> </div>
@@ -371,7 +350,7 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
</tbody> </tbody>
</table> </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> </form>
</div> </div>
@@ -380,13 +359,13 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
<?php if (!$send_ready && !$imap_ready && !$oauth_has_required_fields) { ?> <?php if (!$send_ready && !$imap_ready && !$oauth_has_required_fields) { ?>
<div class="alert alert-secondary mb-0"> <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> </div>
<?php } ?> <?php } ?>
<?php if ($send_ready) { ?> <?php if ($send_ready) { ?>
<div class="mb-4"> <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"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="tab" value="tests"> <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 } ?> <?php if ($config_ticket_from_email) { ?><option value="4"><?= escapeHtml($config_ticket_from_name) ?> (<?= escapeHtml($config_ticket_from_email) ?>)</option><?php } ?>
</select> </select>
<input type="email" class="form-control" name="email_to" placeholder="recipient@example.com"> <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 me-2"></i>Send</button>
<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>
</div> </div>
</form> </form>
</div> </div>
@@ -409,24 +386,24 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
<?php if ($imap_ready) { ?> <?php if ($imap_ready) { ?>
<div class="mb-4"> <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"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="tab" value="tests"> <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> </form>
</div> </div>
<?php } ?> <?php } ?>
<?php if ($oauth_has_required_fields) { ?> <?php if ($oauth_has_required_fields) { ?>
<div> <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"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="tab" value="tests"> <input type="hidden" name="tab" value="tests">
<input type="hidden" name="oauth_provider" value="<?= htmlspecialchars($oauth_provider_for_test) ?>"> <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> <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> </form>
</div> </div>
<?php } ?> <?php } ?>
@@ -545,12 +522,12 @@ $imap_ready = $imap_standard_ready || $imap_oauth_ready;
: 'xxxxxxxxxxxx.apps.googleusercontent.com'; : 'xxxxxxxxxxxx.apps.googleusercontent.com';
if (oauthClientSecret) oauthClientSecret.placeholder = anyMs ? 'Entra client secret value' : 'Google client secret'; if (oauthClientSecret) oauthClientSecret.placeholder = anyMs ? 'Entra client secret value' : 'Google client secret';
if (oauthHint) oauthHint.innerHTML = anyMs 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.' ? '<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 mr-2"></i>Google Workspace: Client ID / Secret from Google Cloud; refresh token obtained via the consent flow.' : 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 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.';
if (!anyOauth && !forcedOauthTab) { 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'); if (oauthLink && oauthLink.classList.contains('active')) activateTab('#tab-smtp');
} }
} }

View File

@@ -4,50 +4,50 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-cube mr-2"></i>Modules</h3> <h3 class="card-title"><i class="fas fa-fw fa-cube me-2"></i>Modules</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_module_enable_itdoc" <?php if ($config_module_enable_itdoc == 1) { echo "checked"; } ?> value="1" id="customSwitch1"> <input type="checkbox" class="form-check-input" name="config_module_enable_itdoc" <?php if ($config_module_enable_itdoc == 1) { echo "checked"; } ?> value="1" id="customSwitch1">
<label class="custom-control-label" for="customSwitch1">Show IT Documentation</label> <label class="form-check-label" for="customSwitch1">Show IT Documentation</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_module_enable_ticketing" <?php if ($config_module_enable_ticketing == 1) { echo "checked"; } ?> value="1" id="customSwitch2"> <input type="checkbox" class="form-check-input" name="config_module_enable_ticketing" <?php if ($config_module_enable_ticketing == 1) { echo "checked"; } ?> value="1" id="customSwitch2">
<label class="custom-control-label" for="customSwitch2">Show Ticketing</label> <label class="form-check-label" for="customSwitch2">Show Ticketing</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_module_enable_accounting" <?php if ($config_module_enable_accounting == 1) { echo "checked"; } ?> value="1" id="customSwitch3"> <input type="checkbox" class="form-check-input" name="config_module_enable_accounting" <?php if ($config_module_enable_accounting == 1) { echo "checked"; } ?> value="1" id="customSwitch3">
<label class="custom-control-label" for="customSwitch3">Show Invoicing / Accounting</label> <label class="form-check-label" for="customSwitch3">Show Invoicing / Accounting</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_client_portal_enable" <?php if ($config_client_portal_enable == 1) { echo "checked"; } ?> value="1" id="customSwitch4"> <input type="checkbox" class="form-check-input" name="config_client_portal_enable" <?php if ($config_client_portal_enable == 1) { echo "checked"; } ?> value="1" id="customSwitch4">
<label class="custom-control-label" for="customSwitch4">Enable Client Portal</label> <label class="form-check-label" for="customSwitch4">Enable Client Portal</label>
</div> </div>
</div> </div>
<hr> <hr>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" disabled class="custom-control-input" name="config_whitelabel_enabled" <?php if ($config_whitelabel_enabled == 1) { echo "checked"; } ?> value="1" id="customSwitch5"> <input type="checkbox" disabled class="form-check-input" name="config_whitelabel_enabled" <?php if ($config_whitelabel_enabled == 1) { echo "checked"; } ?> value="1" id="customSwitch5">
<label class="custom-control-label" for="customSwitch5">White-label <small class="text-secondary">(Hides 'Powered by ITFlow' banner)</small></label> <label class="form-check-label" for="customSwitch5">White-label <small class="text-secondary">(Hides 'Powered by ITFlow' banner)</small></label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>White-label key</label> <label>White-label key</label>
<textarea class="form-control" name="config_whitelabel_key" rows="2" placeholder="Enter a key to enable white-labelling the client portal"><?= escapeHtml($config_whitelabel_key) ?></textarea> <textarea class="form-control" name="config_whitelabel_key" rows="2" placeholder="Enter a key to enable white-labelling the client portal"><?= escapeHtml($config_whitelabel_key) ?></textarea>
</div> </div>
@@ -58,7 +58,7 @@ require_once "includes/inc_all_admin.php";
$key_org = $key_info["organisation"]; $key_org = $key_info["organisation"];
$key_expires = $key_info["expires"]; $key_expires = $key_info["expires"];
?> ?>
<div class="form-group"> <div class="mb-3">
<p>White-labelling is active - thank you for your support! :)</p> <p>White-labelling is active - thank you for your support! :)</p>
<ul> <ul>
<li>Key: <?= $key_desc ?></li> <li>Key: <?= $key_desc ?></li>
@@ -71,7 +71,7 @@ require_once "includes/inc_all_admin.php";
<hr> <hr>
<button type="submit" name="edit_module_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_module_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -6,7 +6,7 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-bell mr-2"></i>Notifications</h3> <h3 class="card-title"><i class="fas fa-fw fa-bell me-2"></i>Notifications</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
@@ -14,7 +14,7 @@ require_once "includes/inc_all_admin.php";
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered"> <table class="table table-bordered">
<thead class="thead-dark"> <thead class="table-dark">
<tr> <tr>
<th>Notification</th> <th>Notification</th>
<th>App Notify</th> <th>App Notify</th>
@@ -29,15 +29,15 @@ require_once "includes/inc_all_admin.php";
</tr> </tr>
<tr> <tr>
<th> <th>
<div><i class="fas fa-fw fa-globe mr-2"></i>Domain Expiration Notice</div> <div><i class="fas fa-fw fa-globe me-2"></i>Domain Expiration Notice</div>
<small class="text-muted"> <small class="text-muted">
(This setting triggers a notification when a domain is approaching its expiration date, specifically at 1, 7 and 45 days prior to expiry.) (This setting triggers a notification when a domain is approaching its expiration date, specifically at 1, 7 and 45 days prior to expiry.)
</small> </small>
</th> </th>
<td> <td>
<div class="custom-control custom-checkbox text-center"> <div class="form-check text-center">
<input type="checkbox" class="custom-control-input" name="config_enable_alert_domain_expire" id="customCheck1" <?php if ($config_enable_alert_domain_expire == 1) { echo "checked"; } ?> value="1"> <input type="checkbox" class="form-check-input" name="config_enable_alert_domain_expire" id="customCheck1" <?php if ($config_enable_alert_domain_expire == 1) { echo "checked"; } ?> value="1">
<label class="custom-control-label" for="customCheck1"></label> <label class="form-check-label" for="customCheck1"></label>
</div> </div>
</td> </td>
<td></td> <td></td>
@@ -49,7 +49,7 @@ require_once "includes/inc_all_admin.php";
</tr> </tr>
<tr> <tr>
<th> <th>
<div><i class="fas fa-fw fa-file-invoice mr-2"></i>Invoice Reminders</div> <div><i class="fas fa-fw fa-file-invoice me-2"></i>Invoice Reminders</div>
<small class="text-muted"> <small class="text-muted">
(This will automatically dispatch a reminder email for the invoice to the primary contact's email every 30 days following the invoice's due date.) (This will automatically dispatch a reminder email for the invoice to the primary contact's email every 30 days following the invoice's due date.)
</small> </small>
@@ -59,16 +59,16 @@ require_once "includes/inc_all_admin.php";
</td> </td>
<td></td> <td></td>
<td> <td>
<div class="custom-control custom-checkbox text-center"> <div class="form-check text-center">
<input type="checkbox" class="custom-control-input" name="config_send_invoice_reminders" <?php if ($config_send_invoice_reminders == 1) { echo "checked"; } ?> value="1" id="sendInvoiceRemindersSwitch"> <input type="checkbox" class="form-check-input" name="config_send_invoice_reminders" <?php if ($config_send_invoice_reminders == 1) { echo "checked"; } ?> value="1" id="sendInvoiceRemindersSwitch">
<label class="custom-control-label" for="sendInvoiceRemindersSwitch"></label> <label class="form-check-label" for="sendInvoiceRemindersSwitch"></label>
</div> </div>
</td> </td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<th> <th>
<div><i class="fas fa-fw fa-redo-alt mr-2"></i>Send Recurring Invoice</div> <div><i class="fas fa-fw fa-redo-alt me-2"></i>Send Recurring Invoice</div>
<small class="text-muted"> <small class="text-muted">
(This will notify all primary and billing contacts of a client that a new invoice was generated from recurring invoices) (This will notify all primary and billing contacts of a client that a new invoice was generated from recurring invoices)
</small> </small>
@@ -78,9 +78,9 @@ require_once "includes/inc_all_admin.php";
</td> </td>
<td></td> <td></td>
<td> <td>
<div class="custom-control custom-checkbox text-center"> <div class="form-check text-center">
<input type="checkbox" class="custom-control-input" name="config_recurring_auto_send_invoice" <?php if ($config_recurring_auto_send_invoice == 1) { echo "checked"; } ?> value="1" id="sendRecurringSwitch"> <input type="checkbox" class="form-check-input" name="config_recurring_auto_send_invoice" <?php if ($config_recurring_auto_send_invoice == 1) { echo "checked"; } ?> value="1" id="sendRecurringSwitch">
<label class="custom-control-label" for="sendRecurringSwitch"></label> <label class="form-check-label" for="sendRecurringSwitch"></label>
</div> </div>
</td> </td>
<td></td> <td></td>
@@ -90,15 +90,15 @@ require_once "includes/inc_all_admin.php";
</tr> </tr>
<tr> <tr>
<th> <th>
<div><i class="fas fa-fw fa-bell mr-2"></i>Send clients general notification emails</div> <div><i class="fas fa-fw fa-bell me-2"></i>Send clients general notification emails</div>
<small class="text-secondary">(Should clients receive automatic emails when tickets are raised/closed?)</small> <small class="text-secondary">(Should clients receive automatic emails when tickets are raised/closed?)</small>
</th> </th>
<td></td> <td></td>
<td></td> <td></td>
<td> <td>
<div class="custom-control custom-checkbox text-center"> <div class="form-check text-center">
<input type="checkbox" class="custom-control-input" name="config_ticket_client_general_notifications" <?php if($config_ticket_client_general_notifications == 1){ echo "checked"; } ?> value="1" id="ticketNotificationSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_client_general_notifications" <?php if($config_ticket_client_general_notifications == 1){ echo "checked"; } ?> value="1" id="ticketNotificationSwitch">
<label class="custom-control-label" for="ticketNotificationSwitch"></label> <label class="form-check-label" for="ticketNotificationSwitch"></label>
</div> </div>
</td> </td>
<td></td> <td></td>
@@ -109,7 +109,7 @@ require_once "includes/inc_all_admin.php";
<hr> <hr>
<button type="submit" name="edit_notification_settings" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_notification_settings" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -4,7 +4,7 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-project-diagram mr-2"></i>Project Settings</h3> <h3 class="card-title"><i class="fas fa-fw fa-project-diagram me-2"></i>Project Settings</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
@@ -12,29 +12,25 @@ require_once "includes/inc_all_admin.php";
<h4>Project</h4> <h4>Project</h4>
<div class="form-group"> <div class="mb-3">
<label>Project Prefix</label> <label>Project Prefix</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="text" class="form-control" name="config_project_prefix" placeholder="Project Prefix" maxlength="200" value="<?= escapeHtml($config_project_prefix) ?>" required> <input type="text" class="form-control" name="config_project_prefix" placeholder="Project Prefix" maxlength="200" value="<?= escapeHtml($config_project_prefix) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Next Number</label> <label>Next Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="number" min="0" class="form-control" name="config_project_next_number" placeholder="Next Project Number" value="<?= intval($config_project_next_number) ?>" required> <input type="number" min="0" class="form-control" name="config_project_next_number" placeholder="Next Project Number" value="<?= intval($config_project_next_number) ?>" required>
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_project_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_project_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -4,50 +4,44 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-comment-dollar mr-2"></i>Quote Settings</h3> <h3 class="card-title"><i class="fas fa-fw fa-comment-dollar me-2"></i>Quote Settings</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Quote Prefix</label> <label>Quote Prefix</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="text" class="form-control" name="config_quote_prefix" placeholder="Quote Prefix" maxlength="200" value="<?= escapeHtml($config_quote_prefix) ?>" required> <input type="text" class="form-control" name="config_quote_prefix" placeholder="Quote Prefix" maxlength="200" value="<?= escapeHtml($config_quote_prefix) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Next Number</label> <label>Next Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="number" min="0" class="form-control" name="config_quote_next_number" placeholder="Next Quote Number" value="<?= intval($config_quote_next_number) ?>" required> <input type="number" min="0" class="form-control" name="config_quote_next_number" placeholder="Next Quote Number" value="<?= intval($config_quote_next_number) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Quote Footer</label> <label>Quote Footer</label>
<textarea class="form-control" rows="4" name="config_quote_footer"><?= escapeHtml($config_quote_footer) ?></textarea> <textarea class="form-control" rows="4" name="config_quote_footer"><?= escapeHtml($config_quote_footer) ?></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email address to notify when quotes are accepted/declined <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label> <label>Email address to notify when quotes are accepted/declined <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span>
</div>
<input type="email" class="form-control" name="config_quote_notification_email" placeholder="Address to notify for quote accept/declines, leave blank for none" maxlength="200" value="<?= escapeHtml($config_quote_notification_email) ?>"> <input type="email" class="form-control" name="config_quote_notification_email" placeholder="Address to notify for quote accept/declines, leave blank for none" maxlength="200" value="<?= escapeHtml($config_quote_notification_email) ?>">
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_quote_settings" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Save</button> <button type="submit" name="edit_quote_settings" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -5,57 +5,51 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-shield-alt mr-2"></i>Security</h3> <h3 class="card-title"><i class="fas fa-fw fa-shield-alt me-2"></i>Security</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Login Message</label> <label>Login Message</label>
<textarea class="form-control" name="config_login_message" rows="5" placeholder="Enter a message to be displayed on the login screen"><?= escapeHtml($config_login_message) ?></textarea> <textarea class="form-control" name="config_login_message" rows="5" placeholder="Enter a message to be displayed on the login screen"><?= escapeHtml($config_login_message) ?></textarea>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_login_key_required" <?php if ($config_login_key_required == 1) { echo "checked"; } ?> value="1" id="customSwitch1"> <input type="checkbox" class="form-check-input" name="config_login_key_required" <?php if ($config_login_key_required == 1) { echo "checked"; } ?> value="1" id="customSwitch1">
<label class="custom-control-label" for="customSwitch1">Require a login key to access the technician login page?</label> <label class="form-check-label" for="customSwitch1">Require a login key to access the technician login page?</label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Login key secret value <small class="text-secondary">(This must be provided in the URL as /login.php?key=<?= escapeHtml($config_login_key_secret) ?>)</small></label> <label>Login key secret value <small class="text-secondary">(This must be provided in the URL as /login.php?key=<?= escapeHtml($config_login_key_secret) ?>)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-key"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-key"></i></span>
</div>
<input type="text" class="form-control" name="config_login_key_secret" pattern="\w{3,99}" placeholder="Something really easy for techs to remember: e.g. MYSECRET" maxlength="99" value="<?= escapeHtml($config_login_key_secret) ?>"> <input type="text" class="form-control" name="config_login_key_secret" pattern="\w{3,99}" placeholder="Something really easy for techs to remember: e.g. MYSECRET" maxlength="99" value="<?= escapeHtml($config_login_key_secret) ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>2FA Remember Me Expire <small class="text-secondary">(The amount of days before a device 2FA remember me token will expire)</small></label> <label>2FA Remember Me Expire <small class="text-secondary">(The amount of days before a device 2FA remember me token will expire)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="config_login_remember_me_expire" placeholder="Enter Days to Expire" value="<?= intval($config_login_remember_me_expire) ?>"> <input type="number" class="form-control" name="config_login_remember_me_expire" placeholder="Enter Days to Expire" value="<?= intval($config_login_remember_me_expire) ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Log retention <small class="text-secondary">(The amount of days before app/audit/auth logs are deleted during nightly cron)</small></label> <label>Log retention <small class="text-secondary">(The amount of days before app/audit/auth logs are deleted during nightly cron)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" class="form-control" name="config_log_retention" placeholder="Enter days to retain" value="<?= intval($config_log_retention) ?>"> <input type="number" class="form-control" name="config_log_retention" placeholder="Enter days to retain" value="<?= intval($config_log_retention) ?>">
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_security_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_security_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -4,7 +4,7 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-satellite-dish mr-2"></i>Telemetry</h3> <h3 class="card-title"><i class="fas fa-fw fa-satellite-dish me-2"></i>Telemetry</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -13,13 +13,11 @@ require_once "includes/inc_all_admin.php";
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Telemetry</label> <label>Telemetry</label>
<p><i>If you can't measure it, you can't improve it. Please consider turning on telemetry data to provide valuable insights on how you're using ITFlow - so we can improve it for everyone. </i></p> <p><i>If you can't measure it, you can't improve it. Please consider turning on telemetry data to provide valuable insights on how you're using ITFlow - so we can improve it for everyone. </i></p>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-broadcast-tower"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-broadcast-tower"></i></span>
</div>
<select class="form-control" name="config_telemetry"> <select class="form-control" name="config_telemetry">
<option <?php if ($config_telemetry == "0") { echo "selected"; } ?> value = "0">Disabled</option> <option <?php if ($config_telemetry == "0") { echo "selected"; } ?> value = "0">Disabled</option>
<option <?php if ($config_telemetry == "1") { echo "selected"; } ?> value = "1">Basic</option> <option <?php if ($config_telemetry == "1") { echo "selected"; } ?> value = "1">Basic</option>
@@ -31,7 +29,7 @@ require_once "includes/inc_all_admin.php";
<hr> <hr>
<button type="submit" name="edit_telemetry_settings" class="btn btn-primary text-bold float-right"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_telemetry_settings" class="btn btn-primary text-bold float-end"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -26,14 +26,14 @@ $theme_colors_array = array (
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-paint-brush mr-2"></i>Theme</h3> <h3 class="card-title"><i class="fas fa-fw fa-paint-brush me-2"></i>Theme</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<label>Select a Theme</label> <label>Select a Theme</label>
<div class="form-row"> <div class="row g-2">
<?php <?php
@@ -42,10 +42,10 @@ $theme_colors_array = array (
?> ?>
<div class="col-4 text-center mb-3"> <div class="col-4 text-center mb-3">
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-radio"> <div class="form-check">
<input class="custom-control-input" type="radio" onchange="this.form.submit()" id="customRadio<?= $theme_color ?>" name="edit_theme_settings" value="<?= $theme_color ?>" <?php if ($config_theme == $theme_color) { echo "checked"; } ?>> <input class="form-check-input" type="radio" onchange="this.form.submit()" id="customRadio<?= $theme_color ?>" name="edit_theme_settings" value="<?= $theme_color ?>" <?php if ($config_theme == $theme_color) { echo "checked"; } ?>>
<label for="customRadio<?= $theme_color ?>" class="custom-control-label"> <label for="customRadio<?= $theme_color ?>" class="form-check-label">
<i class="fa fa-fw fa-6x fa-circle text-<?= $theme_color ?>"></i> <i class="fa fa-fw fa-6x fa-circle text-<?= $theme_color ?>"></i>
<br> <br>
<?= $theme_color ?> <?= $theme_color ?>
@@ -64,7 +64,7 @@ $theme_colors_array = array (
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-image mr-2"></i>Favicon</h3> <h3 class="card-title"><i class="fas fa-fw fa-image me-2"></i>Favicon</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off"> <form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
@@ -72,15 +72,15 @@ $theme_colors_array = array (
<img class="mb-3" src="<?php if(file_exists("../uploads/favicon.ico")) { echo "../uploads/favicon.ico"; } else { echo "../favicon.ico"; } ?>"> <img class="mb-3" src="<?php if(file_exists("../uploads/favicon.ico")) { echo "../uploads/favicon.ico"; } else { echo "../favicon.ico"; } ?>">
<div class="form-group"> <div class="mb-3">
<input type="file" class="form-control-file" name="file" accept=".ico"> <input type="file" class="form-control" name="file" accept=".ico">
</div> </div>
<hr> <hr>
<button type="submit" name="edit_favicon_settings" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Upload Icon</button> <button type="submit" name="edit_favicon_settings" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Upload Icon</button>
<?php if(file_exists("../uploads/favicon.ico")) { ?> <?php if(file_exists("../uploads/favicon.ico")) { ?>
<a href="post.php?reset_favicon&csrf_token=<?= $_SESSION['csrf_token'] ?>" class="btn btn-outline-danger"><i class="fas fa-redo-alt mr-2"></i>Reset Favicon</a> <a href="post.php?reset_favicon&csrf_token=<?= $_SESSION['csrf_token'] ?>" class="btn btn-outline-danger"><i class="fas fa-redo-alt me-2"></i>Reset Favicon</a>
<?php } ?> <?php } ?>
</form> </form>
</div> </div>

View File

@@ -4,88 +4,78 @@ require_once "includes/inc_all_admin.php";
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-life-ring mr-2"></i>Ticket Settings</h3> <h3 class="card-title"><i class="fas fa-fw fa-life-ring me-2"></i>Ticket Settings</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Ticket Prefix</label> <label>Ticket Prefix</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-life-ring"></i></span>
</div>
<input type="text" class="form-control" name="config_ticket_prefix" placeholder="Ticket Prefix" maxlength="200" value="<?= escapeHtml($config_ticket_prefix) ?>" pattern="^[A-Za-z-]+$" title="Only letters and hyphens are allowed" required> <input type="text" class="form-control" name="config_ticket_prefix" placeholder="Ticket Prefix" maxlength="200" value="<?= escapeHtml($config_ticket_prefix) ?>" pattern="^[A-Za-z-]+$" title="Only letters and hyphens are allowed" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Next Number</label> <label>Next Number</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-barcode"></i></span>
</div>
<input type="number" min="<?= intval($config_ticket_next_number) ?>" class="form-control" name="config_ticket_next_number" placeholder="Next Ticket Number" value="<?= intval($config_ticket_next_number) ?>" required> <input type="number" min="<?= intval($config_ticket_next_number) ?>" class="form-control" name="config_ticket_next_number" placeholder="Next Ticket Number" value="<?= intval($config_ticket_next_number) ?>" required>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_email_parse" <?php if($config_ticket_email_parse == 1){ echo "checked"; } ?> value="1" id="emailToTicketParseSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_email_parse" <?php if($config_ticket_email_parse == 1){ echo "checked"; } ?> value="1" id="emailToTicketParseSwitch">
<label class="custom-control-label" for="emailToTicketParseSwitch">Email-to-ticket parsing <small class="text-secondary">(the Ticket Email Parser cron job must also be enabled - see <a href="cron.php">Maintenance &gt; Cron</a>)</small></label> <label class="form-check-label" for="emailToTicketParseSwitch">Email-to-ticket parsing <small class="text-secondary">(the Ticket Email Parser cron job must also be enabled - see <a href="cron.php">Maintenance &gt; Cron</a>)</small></label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_email_parse_unknown_senders" <?php if($config_ticket_email_parse_unknown_senders == 1){ echo "checked"; } ?> value="1" id="emailToTicketAnonParseSwitch" <?php if($config_ticket_email_parse == 0){ echo "disabled"; } ?>> <input type="checkbox" class="form-check-input" name="config_ticket_email_parse_unknown_senders" <?php if($config_ticket_email_parse_unknown_senders == 1){ echo "checked"; } ?> value="1" id="emailToTicketAnonParseSwitch" <?php if($config_ticket_email_parse == 0){ echo "disabled"; } ?>>
<label class="custom-control-label" for="emailToTicketAnonParseSwitch">Create tickets for emails from unknown senders/domains <small class="text-secondary">(Enable to ensure all emails automatically create tickets)</small></label> <label class="form-check-label" for="emailToTicketAnonParseSwitch">Create tickets for emails from unknown senders/domains <small class="text-secondary">(Enable to ensure all emails automatically create tickets)</small></label>
</div> </div>
</div> </div>
<?php if ($config_module_enable_accounting) { ?> <?php if ($config_module_enable_accounting) { ?>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_default_billable" <?php if ($config_ticket_default_billable == 1) { echo "checked"; } ?> value="1" id="ticketBillableSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_default_billable" <?php if ($config_ticket_default_billable == 1) { echo "checked"; } ?> value="1" id="ticketBillableSwitch">
<label class="custom-control-label" for="ticketBillableSwitch">Default to Billable <small class="text-secondary">(This will check the billable box on all new tickets)</small></label> <label class="form-check-label" for="ticketBillableSwitch">Default to Billable <small class="text-secondary">(This will check the billable box on all new tickets)</small></label>
</div> </div>
</div> </div>
<?php } ?> <?php } ?>
<div class="form-group"> <div class="mb-3">
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_timer_autostart" <?php if ($config_ticket_timer_autostart == 1) { echo "checked"; } ?> value="1" id="ticketTimerSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_timer_autostart" <?php if ($config_ticket_timer_autostart == 1) { echo "checked"; } ?> value="1" id="ticketTimerSwitch">
<label class="custom-control-label" for="ticketTimerSwitch">Autostart Ticket Timer <small class="text-secondary">(This option will control if the timer starts automatically or manually)</small></label> <label class="form-check-label" for="ticketTimerSwitch">Autostart Ticket Timer <small class="text-secondary">(This option will control if the timer starts automatically or manually)</small></label>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Number of hours to auto close resolved tickets</label> <label>Number of hours to auto close resolved tickets</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
</div>
<input type="number" min="24" class="form-control" name="config_ticket_autoclose_hours" placeholder="Delay in hours before a resolved ticket is fully closed" value="<?= intval($config_ticket_autoclose_hours) ?>"> <input type="number" min="24" class="form-control" name="config_ticket_autoclose_hours" placeholder="Delay in hours before a resolved ticket is fully closed" value="<?= intval($config_ticket_autoclose_hours) ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Email address to notify when new tickets are raised <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label> <label>Email address to notify when new tickets are raised <small class="text-secondary">(Ideally a distribution list/shared mailbox)</small></label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-bell"></i></span>
</div>
<input type="email" class="form-control" name="config_ticket_new_ticket_notification_email" placeholder="Address to notify for new tickets, leave blank for none" maxlength="200" value="<?= escapeHtml($config_ticket_new_ticket_notification_email) ?>"> <input type="email" class="form-control" name="config_ticket_new_ticket_notification_email" placeholder="Address to notify for new tickets, leave blank for none" maxlength="200" value="<?= escapeHtml($config_ticket_new_ticket_notification_email) ?>">
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Tickets Default View</label> <label>Tickets Default View</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span> <span class="input-group-text"><i class="fa fa-fw fa-eye"></i></span>
</div>
<select class="form-control" name="config_ticket_default_view"> <select class="form-control" name="config_ticket_default_view">
<option value=0 <?php if ($config_ticket_default_view == 0) { echo "selected"; } ?>>List</option> <option value=0 <?php if ($config_ticket_default_view == 0) { echo "selected"; } ?>>List</option>
<option value=1 <?php if ($config_ticket_default_view == 1) { echo "selected"; } ?>>Compact</option> <option value=1 <?php if ($config_ticket_default_view == 1) { echo "selected"; } ?>>Compact</option>
@@ -93,21 +83,21 @@ require_once "includes/inc_all_admin.php";
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="mb-3">
<label>Kanban Settings</label> <label>Kanban Settings</label>
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_ordering" <?php if ($config_ticket_ordering == 1) { echo "checked"; } ?> value="1" id="ticketOrderingSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_ordering" <?php if ($config_ticket_ordering == 1) { echo "checked"; } ?> value="1" id="ticketOrderingSwitch">
<label class="custom-control-label" for="ticketOrderingSwitch">Allow ticket ordering within its column<small class="text-secondary"> (unchecked = order by priority and id)</small></label> <label class="form-check-label" for="ticketOrderingSwitch">Allow ticket ordering within its column<small class="text-secondary"> (unchecked = order by priority and id)</small></label>
</div> </div>
<div class="custom-control custom-switch"> <div class="form-check form-switch">
<input type="checkbox" class="custom-control-input" name="config_ticket_moving_columns" <?php if ($config_ticket_moving_columns == 1) { echo "checked"; } ?> value="1" id="ticketMovingColumnsSwitch"> <input type="checkbox" class="form-check-input" name="config_ticket_moving_columns" <?php if ($config_ticket_moving_columns == 1) { echo "checked"; } ?> value="1" id="ticketMovingColumnsSwitch">
<label class="custom-control-label" for="ticketMovingColumnsSwitch">Allow moving columns</label> <label class="form-check-label" for="ticketMovingColumnsSwitch">Allow moving columns</label>
</div> </div>
</div> </div>
<hr> <hr>
<button type="submit" name="edit_ticket_settings" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button> <button type="submit" name="edit_ticket_settings" class="btn btn-primary text-bold"><i class="fas fa-check me-2"></i>Save</button>
</form> </form>
</div> </div>

View File

@@ -34,9 +34,9 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-stopwatch mr-2"></i>SLAs</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-stopwatch me-2"></i>SLAs</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/sla/sla_add.php"><i class="fas fa-plus mr-2"></i>New SLA</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/sla/sla_add.php"><i class="fas fa-plus me-2"></i>New SLA</button>
</div> </div>
</div> </div>
@@ -84,22 +84,22 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<?php } ?> <?php } ?>
</td> </td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/sla/sla_edit.php?id=<?= $sla_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/sla/sla_edit.php?id=<?= $sla_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<?php if ($sla_archived_at) { ?> <?php if ($sla_archived_at) { ?>
<a class="dropdown-item" href="post.php?unarchive_sla=<?= $sla_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item" href="post.php?unarchive_sla=<?= $sla_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-undo mr-2"></i>Restore <i class="fas fa-fw fa-undo me-2"></i>Restore
</a> </a>
<?php } else { ?> <?php } else { ?>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?archive_sla=<?= $sla_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?archive_sla=<?= $sla_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php } ?> <?php } ?>
</div> </div>
@@ -115,7 +115,7 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-random mr-2"></i>SLA Assignments</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-random me-2"></i>SLA Assignments</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -124,11 +124,11 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<strong>Default (all clients)</strong> <strong>Default (all clients)</strong>
<div class="form-row mt-2"> <div class="row g-2 mt-2">
<?php foreach (['Low', 'Medium', 'High', 'Urgent'] as $priority) { <?php foreach (['Low', 'Medium', 'High', 'Urgent'] as $priority) {
$selected_sla_id = $assignments[0][$priority] ?? 0; $selected_sla_id = $assignments[0][$priority] ?? 0;
?> ?>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label><?= $priority ?></label> <label><?= $priority ?></label>
<select class="form-control" name="global_sla_<?= strtolower($priority) ?>"> <select class="form-control" name="global_sla_<?= strtolower($priority) ?>">
<option value="0">None</option> <option value="0">None</option>
@@ -139,7 +139,7 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
</div> </div>
<?php } ?> <?php } ?>
</div> </div>
<button type="submit" name="save_sla_assignments" class="btn btn-primary"><i class="fas fa-check mr-2"></i>Save Defaults</button> <button type="submit" name="save_sla_assignments" class="btn btn-primary"><i class="fas fa-check me-2"></i>Save Defaults</button>
</form> </form>
<small class="text-muted d-block mt-2">Per-client overrides are set on each client (edit client, Notes tab).</small> <small class="text-muted d-block mt-2">Per-client overrides are set on each client (edit client, Notes tab).</small>
@@ -148,7 +148,7 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-business-time mr-2"></i>Business Hours &amp; Notifications</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-business-time me-2"></i>Business Hours &amp; Notifications</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -156,7 +156,7 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="form-group"> <div class="mb-3">
<label>Business days</label> <label>Business days</label>
<div> <div>
<?php foreach ([1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat', 7 => 'Sun'] as $day_number => $day_name) { ?> <?php foreach ([1 => 'Mon', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'Sat', 7 => 'Sun'] as $day_number => $day_name) { ?>
@@ -169,20 +169,20 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<small class="text-muted">SLA clocks only run during business hours on these days. Unchecking everything makes SLAs count 24x7.</small> <small class="text-muted">SLA clocks only run during business hours on these days. Unchecking everything makes SLAs count 24x7.</small>
</div> </div>
<div class="form-row"> <div class="row g-2">
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Business hours start</label> <label>Business hours start</label>
<input type="time" class="form-control" name="business_hours_start" value="<?= $config_business_hours_start ?>" required> <input type="time" class="form-control" name="business_hours_start" value="<?= $config_business_hours_start ?>" required>
</div> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Business hours end</label> <label>Business hours end</label>
<input type="time" class="form-control" name="business_hours_end" value="<?= $config_business_hours_end ?>" required> <input type="time" class="form-control" name="business_hours_end" value="<?= $config_business_hours_end ?>" required>
</div> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Warn at % of target</label> <label>Warn at % of target</label>
<input type="number" class="form-control" name="warning_percent" min="1" max="99" value="<?= $config_sla_warning_percent ?>" required> <input type="number" class="form-control" name="warning_percent" min="1" max="99" value="<?= $config_sla_warning_percent ?>" required>
</div> </div>
<div class="form-group col-md-3"> <div class="mb-3 col-md-3">
<label>Notification email <small class="text-muted">(optional)</small></label> <label>Notification email <small class="text-muted">(optional)</small></label>
<input type="email" class="form-control" name="notification_email" placeholder="dispatch@example.com" maxlength="200" value="<?= $config_sla_notification_email ?>"> <input type="email" class="form-control" name="notification_email" placeholder="dispatch@example.com" maxlength="200" value="<?= $config_sla_notification_email ?>">
</div> </div>
@@ -190,7 +190,7 @@ while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
<small class="text-muted d-block mb-3">Warnings and breach alerts also notify the assigned agent in-app and by email. Requires cron/ticket_sla.php running every minute.</small> <small class="text-muted d-block mb-3">Warnings and breach alerts also notify the assigned agent in-app and by email. Requires cron/ticket_sla.php running every minute.</small>
<button type="submit" name="edit_sla_settings" class="btn btn-primary"><i class="fas fa-check mr-2"></i>Save Settings</button> <button type="submit" name="edit_sla_settings" class="btn btn-primary"><i class="fas fa-check me-2"></i>Save Settings</button>
</form> </form>
</div> </div>

View File

@@ -21,9 +21,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-cube mr-2"></i>License Templates</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-cube me-2"></i>License Templates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/software_template/software_template_add.php"><i class="fas fa-plus mr-2"></i>New License Template</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/software_template/software_template_add.php"><i class="fas fa-plus me-2"></i>New License Template</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -33,9 +33,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search License Templates"> <input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search License Templates">
<div class="input-group-append">
<button class="btn btn-dark"><i class="fa fa-search"></i></button> <button class="btn btn-dark"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
@@ -83,9 +81,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<tr> <tr>
<td> <td>
<a class="text-dark ajax-modal" href="#" data-modal-url="modals/software_template/software_template_edit.php?id=<?= $software_template_id ?>"> <a class="text-dark ajax-modal" href="#" data-modal-url="modals/software_template/software_template_edit.php?id=<?= $software_template_id ?>">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-cube mr-3"></i> <i class="fa fa-fw fa-2x fa-cube me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<div><?= "$software_template_name <span>$software_template_version</span>" ?></div> <div><?= "$software_template_name <span>$software_template_version</span>" ?></div>
<div><small class="text-secondary"><?= $software_template_description ?></small></div> <div><small class="text-secondary"><?= $software_template_description ?></small></div>
</div> </div>
@@ -95,18 +93,18 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $software_template_type ?></td> <td><?= $software_template_type ?></td>
<td><?= $software_template_license_type ?></td> <td><?= $software_template_license_type ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/software_template/software_template_edit.php?id=<?= $software_template_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/software_template/software_template_edit.php?id=<?= $software_template_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if($session_user_role == 3) { ?> <?php if($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_software_template=<?= $software_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_software_template=<?= $software_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -17,13 +17,13 @@ foreach ($starter_content_status as $pack_status) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-seedling mr-2"></i>Starter Content</h3> <h3 class="card-title"><i class="fas fa-fw fa-seedling me-2"></i>Starter Content</h3>
<?php if ($total_missing) { ?> <?php if ($total_missing) { ?>
<div class="card-tools"> <div class="card-tools">
<form action="post.php" method="POST" autocomplete="off"> <form action="post.php" method="POST" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<button type="submit" name="load_starter_content" value="all" class="btn btn-primary btn-sm"> <button type="submit" name="load_starter_content" value="all" class="btn btn-primary btn-sm">
<i class="fas fa-fw fa-download mr-2"></i>Add all <?= $total_missing ?> missing <i class="fas fa-fw fa-download me-2"></i>Add all <?= $total_missing ?> missing
</button> </button>
</form> </form>
</div> </div>
@@ -50,7 +50,7 @@ foreach ($starter_content_status as $pack_status) {
<th class="text-center">In library</th> <th class="text-center">In library</th>
<th class="text-center">Already here</th> <th class="text-center">Already here</th>
<th class="text-center">Will be added</th> <th class="text-center">Will be added</th>
<th class="text-right"></th> <th class="text-end"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -59,7 +59,7 @@ foreach ($starter_content_status as $pack_status) {
?> ?>
<tr> <tr>
<td> <td>
<strong><i class="fas fa-fw <?= escapeHtml($pack_details['icon']) ?> mr-2"></i><?= escapeHtml($pack_details['label']) ?></strong> <strong><i class="fas fa-fw <?= escapeHtml($pack_details['icon']) ?> me-2"></i><?= escapeHtml($pack_details['label']) ?></strong>
<br><small class="text-muted"><?= escapeHtml($pack_details['description']) ?></small> <br><small class="text-muted"><?= escapeHtml($pack_details['description']) ?></small>
<?php <?php
// Loading out of order works, it just produces less - say so up front // Loading out of order works, it just produces less - say so up front
@@ -67,24 +67,24 @@ foreach ($starter_content_status as $pack_status) {
$requires = $pack_details['requires'] ?? ''; $requires = $pack_details['requires'] ?? '';
if ($requires && !empty($starter_content_status[$requires]['missing'])) { if ($requires && !empty($starter_content_status[$requires]['missing'])) {
?> ?>
<br><small class="text-warning"><i class="fas fa-fw fa-exclamation-triangle mr-1"></i>Add <?= escapeHtml($starter_content_packs[$requires]['label']) ?> first, or these come in without them.</small> <br><small class="text-warning"><i class="fas fa-fw fa-exclamation-triangle me-1"></i>Add <?= escapeHtml($starter_content_packs[$requires]['label']) ?> first, or these come in without them.</small>
<?php } ?> <?php } ?>
</td> </td>
<td class="text-center"><?= intval($pack_status['total']) ?></td> <td class="text-center"><?= intval($pack_status['total']) ?></td>
<td class="text-center"><?= intval($pack_status['present']) ?></td> <td class="text-center"><?= intval($pack_status['present']) ?></td>
<td class="text-center"> <td class="text-center">
<?php if ($pack_status['missing']) { ?> <?php if ($pack_status['missing']) { ?>
<span class="badge badge-warning p-2"><?= intval($pack_status['missing']) ?></span> <span class="badge bg-warning text-dark p-2"><?= intval($pack_status['missing']) ?></span>
<?php } else { ?> <?php } else { ?>
<span class="text-success"><i class="fas fa-fw fa-check"></i></span> <span class="text-success"><i class="fas fa-fw fa-check"></i></span>
<?php } ?> <?php } ?>
</td> </td>
<td class="text-right"> <td class="text-end">
<?php if ($pack_status['missing']) { ?> <?php if ($pack_status['missing']) { ?>
<form action="post.php" method="POST" autocomplete="off"> <form action="post.php" method="POST" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<button type="submit" name="load_starter_content" value="<?= escapeHtml($pack) ?>" class="btn btn-primary btn-sm"> <button type="submit" name="load_starter_content" value="<?= escapeHtml($pack) ?>" class="btn btn-primary btn-sm">
<i class="fas fa-fw fa-plus mr-2"></i>Add <i class="fas fa-fw fa-plus me-2"></i>Add
</button> </button>
</form> </form>
<?php } else { ?> <?php } else { ?>

View File

@@ -45,9 +45,9 @@ while ($row = mysqli_fetch_assoc($sql_tag_type_counts)) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-tags mr-2"></i><?= $tag_type_display ?> Tags</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-tags me-2"></i><?= $tag_type_display ?> Tags</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/tag/tag_add.php?type=<?= $type_filter ?>"><i class="fas fa-plus mr-2"></i>New <?= $tag_type_display ?> Tag</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/tag/tag_add.php?type=<?= $type_filter ?>"><i class="fas fa-plus me-2"></i>New <?= $tag_type_display ?> Tag</button>
</div> </div>
</div> </div>
@@ -55,15 +55,15 @@ while ($row = mysqli_fetch_assoc($sql_tag_type_counts)) {
<div class="row"> <div class="row">
<!-- Tag types --> <!-- Tag types -->
<div class="col-md-3 border-right mb-3"> <div class="col-md-3 border-end mb-3">
<ul class="nav nav-pills flex-column bg-light"> <ul class="nav nav-pills flex-column bg-light">
<?php foreach ($tag_types as $tag_type => $tag_type_details) { ?> <?php foreach ($tag_types as $tag_type => $tag_type_details) { ?>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link<?php if ($type_filter == $tag_type) { <a class="nav-link<?php if ($type_filter == $tag_type) {
echo ' active'; echo ' active';
} ?>" href="?type=<?= $tag_type ?>"> } ?>" href="?type=<?= $tag_type ?>">
<i class="fa fa-fw <?= $tag_type_details['icon'] ?> mr-2"></i><?= escapeHtml($tag_type_details['label']) ?> <i class="fa fa-fw <?= $tag_type_details['icon'] ?> me-2"></i><?= escapeHtml($tag_type_details['label']) ?>
<span class="badge badge-pill badge-dark float-right mt-1"><?= $tag_type_counts[$tag_type] ?? 0 ?></span> <span class="badge rounded-pill bg-dark float-end mt-1"><?= $tag_type_counts[$tag_type] ?? 0 ?></span>
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
@@ -81,19 +81,17 @@ while ($row = mysqli_fetch_assoc($sql_tag_type_counts)) {
<div class="col-sm-6 mb-2"> <div class="col-sm-6 mb-2">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search <?= $tag_type_display ?> Tags"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search <?= $tag_type_display ?> Tags">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-sm-6 mb-2"> <div class="col-sm-6 mb-2">
<a href="?<?= $url_query_strings_sort ?>&archived=1" <a href="?<?= $url_query_strings_sort ?>&archived=1"
class="btn float-right <?php if (isset($_GET['archived'])) { class="btn float-end <?php if (isset($_GET['archived'])) {
echo 'btn-primary'; echo 'btn-primary';
} else { } else {
echo 'btn-default'; echo 'btn-default';
} ?>"><i } ?>"><i
class="fas fa-fw fa-archive mr-2"></i>Archived</a> class="fas fa-fw fa-archive me-2"></i>Archived</a>
</div> </div>
</div> </div>
</form> </form>
@@ -124,22 +122,22 @@ while ($row = mysqli_fetch_assoc($sql_tag_type_counts)) {
<td> <td>
<a class="ajax-modal" href="#" <a class="ajax-modal" href="#"
data-modal-url="modals/tag/tag_edit.php?id=<?= $tag_id ?>"> data-modal-url="modals/tag/tag_edit.php?id=<?= $tag_id ?>">
<span class='badge text-light p-2 mr-1' style="background-color: <?= $tag_color ?>"><i class="fa fa-fw fa-<?= $tag_icon ?> mr-2"></i><?= $tag_name ?></span> <span class='badge text-light p-2 me-1' style="background-color: <?= $tag_color ?>"><i class="fa fa-fw fa-<?= $tag_icon ?> me-2"></i><?= $tag_name ?></span>
</a> </a>
</td> </td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/tag/tag_edit.php?id=<?= $tag_id ?>"> data-modal-url="modals/tag/tag_edit.php?id=<?= $tag_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_tag=<?= $tag_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_tag=<?= $tag_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -19,9 +19,9 @@ $num_rows = mysqli_num_rows($sql);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-balance-scale mr-2"></i>Tax Rates</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-balance-scale me-2"></i>Tax Rates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/tax/tax_add.php"><i class="fas fa-plus mr-2"></i>New Tax Rate</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/tax/tax_add.php"><i class="fas fa-plus me-2"></i>New Tax Rate</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -60,18 +60,18 @@ $num_rows = mysqli_num_rows($sql);
</td> </td>
<td><?= "$tax_percent%" ?></td> <td><?= "$tax_percent%" ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/tax/tax_edit.php?id=<?= $tax_id ?>"> data-modal-url="modals/tax/tax_edit.php?id=<?= $tax_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?archive_tax=<?= $tax_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?archive_tax=<?= $tax_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
</div> </div>
</div> </div>

View File

@@ -20,9 +20,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-info-circle mr-2"></i>Tickets Statuses</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-info-circle me-2"></i>Tickets Statuses</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ticket_status/ticket_status_add.php"><i class="fas fa-plus mr-2"></i>New Ticket Status</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ticket_status/ticket_status_add.php"><i class="fas fa-plus me-2"></i>New Ticket Status</button>
</div> </div>
</div> </div>
@@ -32,9 +32,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<form autocomplete="off"> <form autocomplete="off">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Ticket Statuses"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Ticket Statuses">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</form> </form>
</div> </div>
@@ -93,28 +91,28 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
</a> </a>
</td> </td>
<td> <td>
<span class='badge badge-pill text-light p-2' style="background-color: <?= $ticket_status_color ?>"><?= $ticket_status_name ?></span> <span class='badge rounded-pill text-light p-2' style="background-color: <?= $ticket_status_color ?>"><?= $ticket_status_name ?></span>
<td><?= $ticket_status_display ?></td> <td><?= $ticket_status_display ?></td>
<td> <td>
<?php if ($ticket_status_pauses_sla) { ?> <?php if ($ticket_status_pauses_sla) { ?>
<span class="text-warning"><i class="fas fa-fw fa-pause-circle mr-1"></i>Paused</span> <span class="text-warning"><i class="fas fa-fw fa-pause-circle me-1"></i>Paused</span>
<?php } else { ?> <?php } else { ?>
<span class="text-secondary">Running</span> <span class="text-secondary">Running</span>
<?php } ?> <?php } ?>
</td> </td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/ticket_status/ticket_status_edit.php?id=<?= $ticket_status_id ?>"> <a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/ticket_status/ticket_status_edit.php?id=<?= $ticket_status_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if (!$ticket_status_active) { ?> <?php if (!$ticket_status_active) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_ticket_status=<?= $ticket_status_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_ticket_status=<?= $ticket_status_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -48,7 +48,7 @@ $sql_task_templates = mysqli_query($mysqli, "SELECT task_template_completion_est
<li class="breadcrumb-item"> <li class="breadcrumb-item">
<a href="ticket_templates.php">Ticket Templates</a> <a href="ticket_templates.php">Ticket Templates</a>
</li> </li>
<li class="breadcrumb-item active"><i class="fas fa-life-ring mr-2"></i><?= $ticket_template_name ?></li> <li class="breadcrumb-item active"><i class="fas fa-life-ring me-2"></i><?= $ticket_template_name ?></li>
</ol> </ol>
<div class="row"> <div class="row">
@@ -58,7 +58,7 @@ $sql_task_templates = mysqli_query($mysqli, "SELECT task_template_completion_est
<div class="card-header"> <div class="card-header">
<h3 class="card-title mt-1"><?= $ticket_template_name ?></h3> <h3 class="card-title mt-1"><?= $ticket_template_name ?></h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-tool btn-sm" data-toggle="modal" data-target="#editTicketTemplateModal"> <button type="button" class="btn btn-tool btn-sm" data-bs-toggle="modal" data-bs-target="#editTicketTemplateModal">
<i class="fas fa-edit"></i> <i class="fas fa-edit"></i>
</button> </button>
</div> </div>
@@ -74,18 +74,16 @@ $sql_task_templates = mysqli_query($mysqli, "SELECT task_template_completion_est
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header"> <div class="card-header">
<h5 class="card-title"><i class="fa fa-fw fa-tasks mr-2"></i>Tasks</h5> <h5 class="card-title"><i class="fa fa-fw fa-tasks me-2"></i>Tasks</h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="post.php" method="post" autocomplete="off"> <form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>"> <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="ticket_template_id" value="<?= $ticket_template_id ?>"> <input type="hidden" name="ticket_template_id" value="<?= $ticket_template_id ?>">
<div class="form-group"> <div class="mb-3">
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<input type="text" class="form-control" name="task_name" placeholder="Create a task" required maxlength="200"> <input type="text" class="form-control" name="task_name" placeholder="Create a task" required maxlength="200">
<div class="input-group-append">
<button type="submit" name="add_ticket_template_task" class="btn btn-primary"><i class="fas fa-fw fa-check"></i></button> <button type="submit" name="add_ticket_template_task" class="btn btn-primary"><i class="fas fa-fw fa-check"></i></button>
</div>
</div> </div>
</div> </div>
</form> </form>
@@ -99,23 +97,23 @@ $sql_task_templates = mysqli_query($mysqli, "SELECT task_template_completion_est
?> ?>
<tr data-task-id="<?= $task_id ?>"> <tr data-task-id="<?= $task_id ?>">
<td> <td>
<a href="#" class="drag-handle"><i class="fas fa-bars text-muted mr-2"></i></a> <a href="#" class="drag-handle"><i class="fas fa-bars text-muted me-2"></i></a>
<span class="text-dark"><?= $task_name ?></span> <span class="text-dark"><?= $task_name ?></span>
</td> </td>
<td class="text-right"> <td class="text-end">
<div class="float-right"> <div class="float-end">
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-light text-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-light text-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i> <i class="fas fa-ellipsis-v"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/ticket_template/ticket_template_task_edit.php?id=<?= $task_id ?>"> data-modal-url="modals/ticket_template/ticket_template_task_edit.php?id=<?= $task_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger confirm-link" href="post.php?delete_task_template=<?= $task_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger confirm-link" href="post.php?delete_task_template=<?= $task_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash-alt mr-2"></i>Delete <i class="fas fa-fw fa-trash-alt me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -25,9 +25,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-life-ring mr-2"></i>Ticket Templates</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-life-ring me-2"></i>Ticket Templates</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ticket_template/ticket_template_add.php" data-modal-size="lg"><i class="fas fa-plus mr-2"></i>New Ticket Template</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/ticket_template/ticket_template_add.php" data-modal-size="lg"><i class="fas fa-plus me-2"></i>New Ticket Template</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -37,9 +37,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Ticket Templates"> <input type="search" class="form-control" name="q" value="<?php if(isset($q)){ echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Ticket Templates">
<div class="input-group-append">
<button class="btn btn-dark"><i class="fa fa-search"></i></button> <button class="btn btn-dark"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
@@ -81,9 +79,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<tr> <tr>
<td> <td>
<a class="text-dark"> <a class="text-dark">
<div class="media"> <div class="d-flex">
<i class="fa fa-fw fa-2x fa-life-ring mr-3"></i> <i class="fa fa-fw fa-2x fa-life-ring me-3"></i>
<div class="media-body"> <div class="flex-grow-1">
<div> <div>
<a href="ticket_template.php?ticket_template_id=<?= $ticket_template_id ?>"> <a href="ticket_template.php?ticket_template_id=<?= $ticket_template_id ?>">
<?= $ticket_template_name ?> <?= $ticket_template_name ?>
@@ -96,13 +94,13 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
</td> </td>
<td><?= $task_count ?></td> <td><?= $task_count ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_ticket_template=<?= $ticket_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_ticket_template=<?= $ticket_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
</div> </div>

View File

@@ -41,13 +41,13 @@ $app_update_available = !empty($pending_commits);
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-3"> <div class="card-header py-3">
<h3 class="card-title"><i class="fas fa-fw fa-download mr-2"></i>Update</h3> <h3 class="card-title"><i class="fas fa-fw fa-download me-2"></i>Update</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<?php if (!$fetch_ok) { ?> <?php if (!$fetch_ok) { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
<h5><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>Cannot reach the Git remote</h5> <h5><i class="fas fa-fw fa-exclamation-triangle me-2"></i>Cannot reach the Git remote</h5>
ITFlow updates itself with Git, so nothing below is current until this is fixed. ITFlow updates itself with Git, so nothing below is current until this is fixed.
<?php if (!empty($updates->output)) { ?> <?php if (!empty($updates->output)) { ?>
<pre class="bg-dark text-white p-2 mt-2 mb-2"><?= escapeHtml(implode("\n", $updates->output)) ?></pre> <pre class="bg-dark text-white p-2 mt-2 mb-2"><?= escapeHtml(implode("\n", $updates->output)) ?></pre>
@@ -99,16 +99,14 @@ $app_update_available = !empty($pending_commits);
<?php if (rand(1, 10) == 1) { ?> <?php if (rand(1, 10) == 1) { ?>
<div class="alert alert-info alert-dismissible fade show mb-0" role="alert"> <div class="alert alert-info alert-dismissible fade show mb-0" role="alert">
You are up to date, but when did you last check that your backup restores? You are up to date, but when did you last check that your backup restores?
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<?php } ?> <?php } ?>
<?php } else { ?> <?php } else { ?>
<div class="alert alert-danger"> <div class="alert alert-danger">
<h5><i class="fas fa-fw fa-exclamation-triangle mr-2"></i>Do not update without a backup</h5> <h5><i class="fas fa-fw fa-exclamation-triangle me-2"></i>Do not update without a backup</h5>
A VM snapshot is the safest option - other methods are covered in the A VM snapshot is the safest option - other methods are covered in the
<a href="https://docs.itflow.org/backups" class="alert-link" target="_blank">docs</a>. Read the <a href="https://docs.itflow.org/backups" class="alert-link" target="_blank">docs</a>. Read the
<a href="https://github.com/itflow-org/itflow/blob/master/CHANGELOG.md" class="alert-link" target="_blank">changelog</a> <a href="https://github.com/itflow-org/itflow/blob/master/CHANGELOG.md" class="alert-link" target="_blank">changelog</a>
@@ -117,7 +115,7 @@ $app_update_available = !empty($pending_commits);
<?php if ($app_update_available && $db_update_available) { ?> <?php if ($app_update_available && $db_update_available) { ?>
<p class="text-muted"> <p class="text-muted">
<i class="fas fa-fw fa-info-circle mr-1"></i>Both are pending. Update the application files first - <i class="fas fa-fw fa-info-circle me-1"></i>Both are pending. Update the application files first -
they bring the database migrations that the second step then applies. they bring the database migrations that the second step then applies.
</p> </p>
<?php } ?> <?php } ?>
@@ -130,10 +128,10 @@ $app_update_available = !empty($pending_commits);
behind <code><?= escapeHtml("origin/$repo_branch") ?></code>. behind <code><?= escapeHtml("origin/$repo_branch") ?></code>.
</p> </p>
<a class="btn btn-primary confirm-link" href="post.php?update&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-primary confirm-link" href="post.php?update&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-download mr-2"></i>Update App <i class="fas fa-fw fa-download me-2"></i>Update App
</a> </a>
<a class="btn btn-outline-danger ml-2 confirm-link" href="post.php?update&force_update=1&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-outline-danger ms-2 confirm-link" href="post.php?update&force_update=1&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-hammer mr-2"></i>Force Update <i class="fas fa-fw fa-hammer me-2"></i>Force Update
</a> </a>
<p class="text-muted mt-2 mb-0"> <p class="text-muted mt-2 mb-0">
<small> <small>
@@ -154,7 +152,7 @@ $app_update_available = !empty($pending_commits);
this is applied. this is applied.
</p> </p>
<a class="btn btn-dark confirm-link" href="post.php?update_db&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="btn btn-dark confirm-link" href="post.php?update_db&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-database mr-2"></i>Update Database <i class="fas fa-fw fa-database me-2"></i>Update Database
</a> </a>
<p class="text-muted mt-2 mb-0"> <p class="text-muted mt-2 mb-0">
<small> <small>

View File

@@ -24,25 +24,25 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-users mr-2"></i>Users</h3> <h3 class="card-title mt-2"><i class="fas fa-fw fa-users me-2"></i>Users</h3>
<div class="card-tools"> <div class="card-tools">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/user/user_add.php"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/user/user_add.php">
<i class="fas fa-fw fa-user-plus mr-2"></i>New User <i class="fas fa-fw fa-user-plus me-2"></i>New User
</button> </button>
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button> <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown"></button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<!--<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/user/user_invite.php"><i class="fas fa-paper-plane mr-2"></i>Invite User</a>--> <!--<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/user/user_invite.php"><i class="fas fa-paper-plane me-2"></i>Invite User</a>-->
<?php if ($num_rows[0] > 1) { ?> <?php if ($num_rows[0] > 1) { ?>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="<?= buildExportModalUrl('modals/user/user_export.php', ['archived', 'q']) ?>"> data-modal-url="<?= buildExportModalUrl('modals/user/user_export.php', ['archived', 'q']) ?>">
<i class="fa fa-fw fa-download mr-2"></i>Export <i class="fa fa-fw fa-download me-2"></i>Export
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger ajax-modal" href="#" <a class="dropdown-item text-danger ajax-modal" href="#"
data-modal-url="modals/user/user_all_reset_password.php" data-modal-url="modals/user/user_all_reset_password.php"
data-modal-size="lg"> data-modal-size="lg">
<i class="fas fa-skull-crossbones mr-2"></i>IR <i class="fas fa-skull-crossbones me-2"></i>IR
</a> </a>
<?php } ?> <?php } ?>
</div> </div>
@@ -55,16 +55,14 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Users"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) {echo stripslashes(escapeHtml($q));} ?>" placeholder="Search Users">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
<div class="btn-group float-right"> <div class="btn-group float-end">
<a href="?archived=<?php if($archived == 1){ echo 0; } else { echo 1; } ?>" <a href="?archived=<?php if($archived == 1){ echo 0; } else { echo 1; } ?>"
class="btn btn-<?php if($archived == 1){ echo "primary"; } else { echo "default"; } ?>"> class="btn btn-<?php if($archived == 1){ echo "primary"; } else { echo "default"; } ?>">
<i class="fa fa-fw fa-archive mr-2"></i>Archived <i class="fa fa-fw fa-archive me-2"></i>Archived
</a> </a>
</div> </div>
</div> </div>
@@ -190,37 +188,37 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<td><?= $last_login ?></td> <td><?= $last_login ?></td>
<td> <td>
<?php if ($user_id !== $session_user_id) { // Prevent modifying self ?> <?php if ($user_id !== $session_user_id) { // Prevent modifying self ?>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/user/user_edit.php?id=<?= $user_id ?>"> data-modal-url="modals/user/user_edit.php?id=<?= $user_id ?>">
<i class="fas fa-fw fa-user-edit mr-2"></i>Edit <i class="fas fa-fw fa-user-edit me-2"></i>Edit
</a> </a>
<?php if ($remember_token_count > 0) { ?> <?php if ($remember_token_count > 0) { ?>
<a class="dropdown-item" href="post.php?revoke_remember_me=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-ban mr-2"></i>Revoke <?= $remember_token_count ?> Remember Tokens <a class="dropdown-item" href="post.php?revoke_remember_me=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-ban me-2"></i>Revoke <?= $remember_token_count ?> Remember Tokens
</a> </a>
<?php } ?> <?php } ?>
<?php if ($user_status == 0) { ?> <?php if ($user_status == 0) { ?>
<a class="dropdown-item text-success" href="post.php?activate_user=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-success" href="post.php?activate_user=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-user-check mr-2"></i>Activate <i class="fas fa-fw fa-user-check me-2"></i>Activate
</a> </a>
<?php }elseif ($user_status == 1) { ?> <?php }elseif ($user_status == 1) { ?>
<a class="dropdown-item text-danger" href="post.php?disable_user=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger" href="post.php?disable_user=<?= $user_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-user-slash mr-2"></i>Disable <i class="fas fa-fw fa-user-slash me-2"></i>Disable
</a> </a>
<?php } ?> <?php } ?>
<?php if ($user_archived_at) { ?> <?php if ($user_archived_at) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-info ajax-modal" href="#" data-modal-url="modals/user/user_restore.php?id=<?= $user_id ?>"> <a class="dropdown-item text-info ajax-modal" href="#" data-modal-url="modals/user/user_restore.php?id=<?= $user_id ?>">
<i class="fas fa-fw fa-redo-alt mr-2"></i>Restore <i class="fas fa-fw fa-redo-alt me-2"></i>Restore
</a> </a>
<?php } else { ?> <?php } else { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger ajax-modal" href="#" data-modal-url="modals/user/user_archive.php?id=<?= $user_id ?>"> <a class="dropdown-item text-danger ajax-modal" href="#" data-modal-url="modals/user/user_archive.php?id=<?= $user_id ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -22,11 +22,11 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"> <h3 class="card-title mt-2">
<i class="fas fa-fw fa-building mr-2"></i>Vendor Templates <i class="fas fa-fw fa-building me-2"></i>Vendor Templates
</h3> </h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/vendor_template/vendor_template_add.php"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/vendor_template/vendor_template_add.php">
<i class="fas fa-plus mr-2"></i>New Vendor Template <i class="fas fa-plus me-2"></i>New Vendor Template
</button> </button>
</div> </div>
</div> </div>
@@ -37,9 +37,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="col-md-4"> <div class="col-md-4">
<div class="input-group mb-3 mb-md-0"> <div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Vendors Templates"> <input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Vendors Templates">
<div class="input-group-append">
<button class="btn btn-dark"><i class="fa fa-search"></i></button> <button class="btn btn-dark"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
@@ -97,7 +95,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<th> <th>
<a class="text-dark ajax-modal" href="#" <a class="text-dark ajax-modal" href="#"
data-modal-url="modals/vendor_template/vendor_template_edit.php?id=<?= $vendor_template_id ?>"> data-modal-url="modals/vendor_template/vendor_template_edit.php?id=<?= $vendor_template_id ?>">
<i class="fa fa-fw fa-building text-secondary mr-2"></i><?= $vendor_template_name ?> <i class="fa fa-fw fa-building text-secondary me-2"></i><?= $vendor_template_name ?>
</a> </a>
<?php <?php
if (!empty($vendor_template_account_number)) { if (!empty($vendor_template_account_number)) {
@@ -113,7 +111,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<?php <?php
if (!empty($vendor_template_contact_name)) { if (!empty($vendor_template_contact_name)) {
?> ?>
<i class="fa fa-fw fa-user text-secondary mr-2 mb-2"></i><?= $vendor_template_contact_name_display ?> <i class="fa fa-fw fa-user text-secondary me-2 mb-2"></i><?= $vendor_template_contact_name_display ?>
<br> <br>
<?php <?php
} else { } else {
@@ -121,30 +119,30 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
} }
if (!empty($vendor_template_phone)) { ?> if (!empty($vendor_template_phone)) { ?>
<i class="fa fa-fw fa-phone text-secondary mr-2 mb-2"></i><?= $vendor_template_phone ?> <i class="fa fa-fw fa-phone text-secondary me-2 mb-2"></i><?= $vendor_template_phone ?>
<br> <br>
<?php } <?php }
if (!empty($vendor_template_email)) { ?> if (!empty($vendor_template_email)) { ?>
<i class="fa fa-fw fa-envelope text-secondary mr-2 mb-2"></i><?= $vendor_template_email ?> <i class="fa fa-fw fa-envelope text-secondary me-2 mb-2"></i><?= $vendor_template_email ?>
<br> <br>
<?php } ?> <?php } ?>
</td> </td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/vendor_template/vendor_template_edit.php?id=<?= $vendor_template_id ?>"> data-modal-url="modals/vendor_template/vendor_template_edit.php?id=<?= $vendor_template_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if ($session_user_role == 3) { ?> <?php if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_vendor_template=<?= $vendor_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_vendor_template=<?= $vendor_template_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -23,18 +23,16 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-piggy-bank mr-2"></i>Accounts</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-piggy-bank me-2"></i>Accounts</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/account/account_add.php"><i class="fas fa-plus mr-2"></i>New Account</button> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/account/account_add.php"><i class="fas fa-plus me-2"></i>New Account</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<form autocomplete="off"> <form autocomplete="off">
<div class="input-group"> <div class="input-group">
<input type="search" class="form-control col-md-4" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Accounts"> <input type="search" class="form-control col-md-4" name="q" value="<?php if (isset($q)) { echo stripslashes(escapeHtml($q)); } ?>" placeholder="Search Accounts">
<div class="input-group-append">
<button class="btn btn-primary"><i class="fa fa-search"></i></button> <button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</form> </form>
<hr> <hr>
@@ -52,7 +50,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
Currency <?php if ($sort == 'account_currency_code') { echo $order_icon; } ?> Currency <?php if ($sort == 'account_currency_code') { echo $order_icon; } ?>
</a> </a>
</th> </th>
<th class="text-right">Balance</th> <th class="text-end">Balance</th>
<th class="text-center">Action</th> <th class="text-center">Action</th>
</tr> </tr>
</thead> </thead>
@@ -89,21 +87,21 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
</a> </a>
</td> </td>
<td><?= $account_currency_code ?></td> <td><?= $account_currency_code ?></td>
<td class="text-right text-monospace"><?= numfmt_format_currency($currency_format, $balance, $account_currency_code) ?></td> <td class="text-end font-monospace"><?= numfmt_format_currency($currency_format, $balance, $account_currency_code) ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/account/account_edit.php?id=<?= $account_id ?>"> data-modal-url="modals/account/account_edit.php?id=<?= $account_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if ($balance == 0 && $account_id != $config_stripe_account) { //Cannot Archive an Account until it reaches 0 Balance and cant be selected as an online account ?> <?php if ($balance == 0 && $account_id != $config_stripe_account) { //Cannot Archive an Account until it reaches 0 Balance and cant be selected as an online account ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="post.php?archive_account=<?= $account_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger" href="post.php?archive_account=<?= $account_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

View File

@@ -141,10 +141,10 @@ if (isset($_GET['ticket_query_views'])) {
$users = array_unique($users); $users = array_unique($users);
if (count($users) > 1) { if (count($users) > 1) {
// Multiple viewers // Multiple viewers
$response['message'] = "<i class='fas fa-fw fa-eye mr-2'></i>" . escapeHtml(implode(", ", $users) . " are viewing this ticket."); $response['message'] = "<i class='fas fa-fw fa-eye me-2'></i>" . escapeHtml(implode(", ", $users) . " are viewing this ticket.");
} else { } else {
// Single viewer // Single viewer
$response['message'] = "<i class='fas fa-fw fa-eye mr-2'></i>" . escapeHtml(implode("", $users) . " is viewing this ticket."); $response['message'] = "<i class='fas fa-fw fa-eye me-2'></i>" . escapeHtml(implode("", $users) . " is viewing this ticket.");
} }
} else { } else {
// No viewers // No viewers
@@ -797,7 +797,7 @@ if (isset($_GET['client_duplicate_check'])) {
if (mysqli_num_rows($sql_clients) > 0) { if (mysqli_num_rows($sql_clients) > 0) {
while ($row = mysqli_fetch_assoc($sql_clients)) { while ($row = mysqli_fetch_assoc($sql_clients)) {
$response['message'] = "<i class='fas fa-fw fa-copy mr-2'></i> Potential duplicate: <i>" . escapeHtml($row['client_name']) . "</i> already exists."; $response['message'] = "<i class='fas fa-fw fa-copy me-2'></i> Potential duplicate: <i>" . escapeHtml($row['client_name']) . "</i> already exists.";
} }
} }
} }
@@ -819,13 +819,13 @@ if (isset($_GET['contact_email_check'])) {
$sql_contacts = mysqli_query($mysqli, "SELECT contact_email FROM contacts WHERE contact_email = '$email' LIMIT 1"); $sql_contacts = mysqli_query($mysqli, "SELECT contact_email FROM contacts WHERE contact_email = '$email' LIMIT 1");
if (mysqli_num_rows($sql_contacts) > 0) { if (mysqli_num_rows($sql_contacts) > 0) {
while ($row = mysqli_fetch_assoc($sql_contacts)) { while ($row = mysqli_fetch_assoc($sql_contacts)) {
$response['message'] = "<i class='fas fa-fw fa-copy mr-2'></i> Potential duplicate: <i>" . escapeHtml($row['contact_email']) . "</i> already exists."; $response['message'] = "<i class='fas fa-fw fa-copy me-2'></i> Potential duplicate: <i>" . escapeHtml($row['contact_email']) . "</i> already exists.";
} }
} }
// 2. MX record check // 2. MX record check
if (!checkdnsrr($domain, 'MX')) { if (!checkdnsrr($domain, 'MX')) {
$response['message'] = "<i class='fas fa-fw fa-exclamation-triangle mr-2'></i> E-mail domain invalid."; $response['message'] = "<i class='fas fa-fw fa-exclamation-triangle me-2'></i> E-mail domain invalid.";
} }
} }
@@ -1035,7 +1035,7 @@ if (isset($_GET['apex_domain_check'])) {
// SOA record check // SOA record check
// This isn't 100%, as sub-domains can have their own SOA but will capture 99% // This isn't 100%, as sub-domains can have their own SOA but will capture 99%
if (!checkdnsrr($domain, 'SOA')) { if (!checkdnsrr($domain, 'SOA')) {
$response['message'] = "<i class='fas fa-fw fa-exclamation-triangle mr-2'></i> Domain name is invalid."; $response['message'] = "<i class='fas fa-fw fa-exclamation-triangle me-2'></i> Domain name is invalid.";
} }
} }

View File

@@ -148,7 +148,7 @@ if (isset($_GET['asset_id'])) {
} }
$asset_tag_id_array[] = $asset_tag_id; $asset_tag_id_array[] = $asset_tag_id;
$asset_tag_name_display_array[] = "<a href='client_assets.php?client_id=$client_id&q=$asset_tag_name'><span class='badge text-light p-1 mr-1' style='background-color: $asset_tag_color;'><i class='fa fa-fw fa-$asset_tag_icon mr-2'></i>$asset_tag_name</span></a>"; $asset_tag_name_display_array[] = "<a href='client_assets.php?client_id=$client_id&q=$asset_tag_name'><span class='badge text-light p-1 me-1' style='background-color: $asset_tag_color;'><i class='fa fa-fw fa-$asset_tag_icon me-2'></i>$asset_tag_name</span></a>";
} }
$asset_tags_display = implode('', $asset_tag_name_display_array); $asset_tags_display = implode('', $asset_tag_name_display_array);
@@ -299,11 +299,11 @@ if (isset($_GET['asset_id'])) {
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<button type="button" class="btn btn-light float-right ajax-modal" <button type="button" class="btn btn-light float-end ajax-modal"
data-modal-url="modals/asset/asset_edit.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_edit.php?id=<?= $asset_id ?>">
<i class="fas fa-fw fa-edit"></i> <i class="fas fa-fw fa-edit"></i>
</button> </button>
<h4 class="text-bold"><i class="fa fa-fw text-secondary fa-<?= $device_icon; ?> mr-2"></i><?= $asset_name; ?> <h4 class="text-bold"><i class="fa fa-fw text-secondary fa-<?= $device_icon; ?> me-2"></i><?= $asset_name; ?>
<?php if ($asset_favorite) { ?><i class="fas fa-fw text-warning fa-star" title="Favorite"></i><?php } ?> <?php if ($asset_favorite) { ?><i class="fas fa-fw text-warning fa-star" title="Favorite"></i><?php } ?>
</h4> </h4>
<?php if ($asset_photo) { ?> <?php if ($asset_photo) { ?>
@@ -320,25 +320,25 @@ if (isset($_GET['asset_id'])) {
</div> </div>
<?php } ?> <?php } ?>
<?php if ($asset_type) { ?> <?php if ($asset_type) { ?>
<div class="mt-1"><i class="fa fa-fw fa-tag text-secondary mr-2"></i><?= $asset_type; ?></div> <div class="mt-1"><i class="fa fa-fw fa-tag text-secondary me-2"></i><?= $asset_type; ?></div>
<?php } <?php }
if ($asset_make) { ?> if ($asset_make) { ?>
<div class="mt-2"><i class="fa fa-fw fa-circle text-secondary mr-2"></i><?= "$asset_make $asset_model"; ?></div> <div class="mt-2"><i class="fa fa-fw fa-circle text-secondary me-2"></i><?= "$asset_make $asset_model"; ?></div>
<?php } <?php }
if ($asset_os) { ?> if ($asset_os) { ?>
<div class="mt-2"><i class="fab fa-fw fa-windows text-secondary mr-2"></i><?= "$asset_os"; ?></div> <div class="mt-2"><i class="fab fa-fw fa-windows text-secondary me-2"></i><?= "$asset_os"; ?></div>
<?php } <?php }
if ($asset_serial) { ?> if ($asset_serial) { ?>
<div class="mt-2"><i class="fa fa-fw fa-barcode text-secondary mr-1"></i><span class="badge"><?= $asset_serial; ?></span></div> <div class="mt-2"><i class="fa fa-fw fa-barcode text-secondary me-1"></i><span class="badge"><?= $asset_serial; ?></span></div>
<?php } <?php }
if ($asset_purchase_date) { ?> if ($asset_purchase_date) { ?>
<div class="mt-2"><i class="fa fa-fw fa-shopping-cart text-secondary mr-2"></i><?= date('Y-m-d', strtotime($asset_purchase_date)); ?></div> <div class="mt-2"><i class="fa fa-fw fa-shopping-cart text-secondary me-2"></i><?= date('Y-m-d', strtotime($asset_purchase_date)); ?></div>
<?php } <?php }
if ($asset_install_date) { ?> if ($asset_install_date) { ?>
<div class="mt-2"><i class="fa fa-fw fa-calendar-check text-secondary mr-2"></i><?= date('Y-m-d', strtotime($asset_install_date)); ?></div> <div class="mt-2"><i class="fa fa-fw fa-calendar-check text-secondary me-2"></i><?= date('Y-m-d', strtotime($asset_install_date)); ?></div>
<?php } <?php }
if ($asset_warranty_expire) { ?> if ($asset_warranty_expire) { ?>
<div class="mt-2"><i class="fa fa-fw fa-exclamation-triangle text-secondary mr-2"></i><?= date('Y-m-d', strtotime($asset_warranty_expire)); ?></div> <div class="mt-2"><i class="fa fa-fw fa-exclamation-triangle text-secondary me-2"></i><?= date('Y-m-d', strtotime($asset_warranty_expire)); ?></div>
<?php } ?> <?php } ?>
</div> </div>
</div> </div>
@@ -349,23 +349,23 @@ if (isset($_GET['asset_id'])) {
</div> </div>
<div class="card-body"> <div class="card-body">
<?php if ($asset_ip) { ?> <?php if ($asset_ip) { ?>
<div><i class="fa fa-fw fa-globe text-secondary mr-2"></i><span class="text-monospace"><?= $asset_ip; ?></span></div> <div><i class="fa fa-fw fa-globe text-secondary me-2"></i><span class="font-monospace"><?= $asset_ip; ?></span></div>
<?php } ?> <?php } ?>
<?php if ($asset_nat_ip) { ?> <?php if ($asset_nat_ip) { ?>
<div class="mt-2"><i class="fa fa-fw fa-random text-secondary mr-2"></i><span class="text-monospace"><?= $asset_nat_ip; ?></span></div> <div class="mt-2"><i class="fa fa-fw fa-random text-secondary me-2"></i><span class="font-monospace"><?= $asset_nat_ip; ?></span></div>
<?php } <?php }
if ($asset_mac) { ?> if ($asset_mac) { ?>
<div class="mt-2"><i class="fa fa-fw fa-ethernet text-secondary mr-2"></i><span class="text-monospace"><?= $asset_mac; ?></span></div> <div class="mt-2"><i class="fa fa-fw fa-ethernet text-secondary me-2"></i><span class="font-monospace"><?= $asset_mac; ?></span></div>
<?php } <?php }
if ($asset_uri) { ?> if ($asset_uri) { ?>
<div class="mt-2"><i class="fa fa-fw fa-link text-secondary mr-2"></i><a href="<?= $asset_uri; ?>" target="_blank" title="<?= $asset_uri; ?>"><?= truncate($asset_uri, 40); ?></a></div> <div class="mt-2"><i class="fa fa-fw fa-link text-secondary me-2"></i><a href="<?= $asset_uri; ?>" target="_blank" title="<?= $asset_uri; ?>"><?= truncate($asset_uri, 40); ?></a></div>
<?php } <?php }
if ($asset_uri_2) { ?> if ($asset_uri_2) { ?>
<div class="mt-2"><i class="fa fa-fw fa-link text-secondary mr-2"></i><a href="<?= $asset_uri_2; ?>" target="_blank" title="<?= $asset_uri_2; ?>"><?= truncate($asset_uri_2, 40); ?></a></div> <div class="mt-2"><i class="fa fa-fw fa-link text-secondary me-2"></i><a href="<?= $asset_uri_2; ?>" target="_blank" title="<?= $asset_uri_2; ?>"><?= truncate($asset_uri_2, 40); ?></a></div>
<?php } ?> <?php } ?>
<?php <?php
if ($asset_uri_client) { ?> if ($asset_uri_client) { ?>
<div class="mt-2"><i class="fa fa-fw fa-link text-secondary mr-2"></i>Client URI: <a href="<?= $asset_uri_client; ?>" target="_blank" title="<?= $asset_uri_client ?>"><?= truncate($asset_uri_client, 40); ?></a></div> <div class="mt-2"><i class="fa fa-fw fa-link text-secondary me-2"></i>Client URI: <a href="<?= $asset_uri_client; ?>" target="_blank" title="<?= $asset_uri_client ?>"><?= truncate($asset_uri_client, 40); ?></a></div>
<?php } ?> <?php } ?>
</div> </div>
</div> </div>
@@ -377,22 +377,22 @@ if (isset($_GET['asset_id'])) {
</div> </div>
<div class="card-body"> <div class="card-body">
<?php if ($location_name) { ?> <?php if ($location_name) { ?>
<div><i class="fa fa-fw fa-map-marker-alt text-secondary mr-2"></i><?= $location_name_display; ?></div> <div><i class="fa fa-fw fa-map-marker-alt text-secondary me-2"></i><?= $location_name_display; ?></div>
<?php } <?php }
if ($contact_name) { ?> if ($contact_name) { ?>
<div class="mt-2"><i class="fa fa-fw fa-user text-secondary mr-2"></i><?= $contact_name_display; ?></div> <div class="mt-2"><i class="fa fa-fw fa-user text-secondary me-2"></i><?= $contact_name_display; ?></div>
<?php } <?php }
if ($contact_email) { ?> if ($contact_email) { ?>
<div class="mt-2"><i class="fa fa-fw fa-envelope text-secondary mr-2"></i><a href='mailto:<?= $contact_email; ?>'><?= $contact_email; ?></a><button class='btn btn-sm clipboardjs' data-clipboard-text='<?= $contact_email; ?>'><i class='far fa-copy text-secondary'></i></button></div> <div class="mt-2"><i class="fa fa-fw fa-envelope text-secondary me-2"></i><a href='mailto:<?= $contact_email; ?>'><?= $contact_email; ?></a><button class='btn btn-sm clipboardjs' data-clipboard-text='<?= $contact_email; ?>'><i class='far fa-copy text-secondary'></i></button></div>
<?php } <?php }
if ($contact_phone) { ?> if ($contact_phone) { ?>
<div class="mt-2"><i class="fa fa-fw fa-phone text-secondary mr-2"></i><?= $contact_phone ?></div> <div class="mt-2"><i class="fa fa-fw fa-phone text-secondary me-2"></i><?= $contact_phone ?></div>
<?php } <?php }
if ($contact_extension) { ?> if ($contact_extension) { ?>
<div class="mt-1"><i class="fa fa-fw text-secondary mr-2"></i><?= "ext. $contact_extension" ?></div> <div class="mt-1"><i class="fa fa-fw text-secondary me-2"></i><?= "ext. $contact_extension" ?></div>
<?php } <?php }
if ($contact_mobile) { ?> if ($contact_mobile) { ?>
<div class="mt-2"><i class="fa fa-fw fa-mobile-alt text-secondary mr-2"></i><?= $contact_mobile ?></div> <div class="mt-2"><i class="fa fa-fw fa-mobile-alt text-secondary me-2"></i><?= $contact_mobile ?></div>
<?php } ?> <?php } ?>
</div> </div>
@@ -423,62 +423,62 @@ if (isset($_GET['asset_id'])) {
</ol> </ol>
<div class="btn-group mb-3"> <div class="btn-group mb-3">
<div class="dropdown dropleft mr-2"> <div class="dropdown dropstart me-2">
<button type="button" class="btn btn-primary" data-toggle="dropdown"><i class="fas fa-plus mr-2"></i>New</button> <button type="button" class="btn btn-primary" data-bs-toggle="dropdown"><i class="fas fa-plus me-2"></i>New</button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/ticket/ticket_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg"> <a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/ticket/ticket_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg">
<i class="fa fa-fw fa-life-ring mr-2"></i>New Ticket <i class="fa fa-fw fa-life-ring me-2"></i>New Ticket
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/recurring_ticket/recurring_ticket_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg"> <a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/recurring_ticket/recurring_ticket_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg">
<i class="fa fa-fw fa-recycle mr-2"></i>New Recurring Ticket <i class="fa fa-fw fa-recycle me-2"></i>New Recurring Ticket
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/credential/credential_add.php?<?= $client_url ?>asset_id=<?= $asset_id ?>"> <a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/credential/credential_add.php?<?= $client_url ?>asset_id=<?= $asset_id ?>">
<i class="fa fa-fw fa-key mr-2"></i>New Credential <i class="fa fa-fw fa-key me-2"></i>New Credential
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/document/document_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg"> <a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/document/document_add.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>" data-modal-size="lg">
<i class="fa fa-fw fa-file-alt mr-2"></i>New Document <i class="fa fa-fw fa-file-alt me-2"></i>New Document
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/file/file_upload.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>"> <a class="dropdown-item text-dark ajax-modal" href="#" data-modal-url="modals/file/file_upload.php?<?= $client_url ?>&asset_id=<?= $asset_id ?>">
<i class="fa fa-fw fa-upload mr-2"></i>Upload file(s) <i class="fa fa-fw fa-upload me-2"></i>Upload file(s)
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_note_add.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_note_add.php?id=<?= $asset_id ?>">
<i class="fas fa-fw fa-sticky-note mr-2"></i>New Note <i class="fas fa-fw fa-sticky-note me-2"></i>New Note
</a> </a>
</div> </div>
</div> </div>
<div class="dropdown dropleft"> <div class="dropdown dropstart">
<button type="button" class="btn btn-outline-primary" data-toggle="dropdown"><i class="fas fa-link mr-2"></i>Link</button> <button type="button" class="btn btn-outline-primary" data-bs-toggle="dropdown"><i class="fas fa-link me-2"></i>Link</button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_link_software.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_link_software.php?id=<?= $asset_id ?>">
<i class="fa fa-fw fa-cube mr-2"></i>License <i class="fa fa-fw fa-cube me-2"></i>License
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_link_credential.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_link_credential.php?id=<?= $asset_id ?>">
<i class="fa fa-fw fa-key mr-2"></i>Credential <i class="fa fa-fw fa-key me-2"></i>Credential
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_link_service.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_link_service.php?id=<?= $asset_id ?>">
<i class="fa fa-fw fa-stream mr-2"></i>Service <i class="fa fa-fw fa-stream me-2"></i>Service
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_link_document.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_link_document.php?id=<?= $asset_id ?>">
<i class="fa fa-fw fa-folder mr-2"></i>Document <i class="fa fa-fw fa-folder me-2"></i>Document
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_link_file.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_link_file.php?id=<?= $asset_id ?>">
<i class="fa fa-fw fa-paperclip mr-2"></i>File <i class="fa fa-fw fa-paperclip me-2"></i>File
</a> </a>
</div> </div>
</div> </div>
@@ -486,51 +486,51 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark"> <div class="card card-dark">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-1"><i class="fa fa-fw fa-ethernet mr-2"></i>Interfaces</h3> <h3 class="card-title mt-1"><i class="fa fa-fw fa-ethernet me-2"></i>Interfaces</h3>
<div class="card-tools"> <div class="card-tools">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-tool ajax-modal" data-modal-url="modals/asset/asset_interface_add.php?&asset_id=<?= $asset_id ?>"> <button type="button" class="btn btn-tool ajax-modal" data-modal-url="modals/asset/asset_interface_add.php?&asset_id=<?= $asset_id ?>">
<i class="fas fa-plus mr-2"></i>New Interface <i class="fas fa-plus me-2"></i>New Interface
</button> </button>
<button type="button" class="btn btn-tool dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button> <button type="button" class="btn btn-tool dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown"></button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-dark" href="#" data-toggle="modal" data-target="#addMultipleAssetInterfacesModal"> <a class="dropdown-item text-dark" href="#" data-bs-toggle="modal" data-bs-target="#addMultipleAssetInterfacesModal">
<i class="fa fa-fw fa-check-double mr-2"></i>Add Multiple <i class="fa fa-fw fa-check-double me-2"></i>Add Multiple
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark" href="#" data-toggle="modal" data-target="#importAssetInterfaceModal"> <a class="dropdown-item text-dark" href="#" data-bs-toggle="modal" data-bs-target="#importAssetInterfaceModal">
<i class="fa fa-fw fa-upload mr-2"></i>Import <i class="fa fa-fw fa-upload me-2"></i>Import
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark" href="#" data-toggle="modal" data-target="#exportAssetInterfaceModal"> <a class="dropdown-item text-dark" href="#" data-bs-toggle="modal" data-bs-target="#exportAssetInterfaceModal">
<i class="fa fa-fw fa-download mr-2"></i>Export <i class="fa fa-fw fa-download me-2"></i>Export
</a> </a>
</div> </div>
<div class="dropdown ml-2" id="bulkActionButton" hidden> <div class="dropdown ms-2" id="bulkActionButton" hidden>
<button class="btn btn-tool dropdown-toggle" type="button" data-toggle="dropdown"> <button class="btn btn-tool dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-fw fa-layer-group mr-2"></i>Bulk Action (<span id="selectedCount">0</span>) <i class="fas fa-fw fa-layer-group me-2"></i>Bulk Action (<span id="selectedCount">0</span>)
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_interface_bulk_edit_network.php?client_id=<?= $client_id ?>" data-modal-url="modals/asset/asset_interface_bulk_edit_network.php?client_id=<?= $client_id ?>"
data-bulk="true"> data-bulk="true">
<i class="fas fa-fw fa-network-wired mr-2"></i>Assign Network <i class="fas fa-fw fa-network-wired me-2"></i>Assign Network
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-dark ajax-modal" href="#" <a class="dropdown-item text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_interface_bulk_edit_type.php?client_id=<?= $client_id ?>" data-modal-url="modals/asset/asset_interface_bulk_edit_type.php?client_id=<?= $client_id ?>"
data-bulk="true"> data-bulk="true">
<i class="fas fa-fw fa-ethernet mr-2"></i>Set Type <i class="fas fa-fw fa-ethernet me-2"></i>Set Type
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<button class="dropdown-item text-dark" type="submit" form="bulkActions" name="bulk_edit_asset_interface_ip_dhcp"> <button class="dropdown-item text-dark" type="submit" form="bulkActions" name="bulk_edit_asset_interface_ip_dhcp">
<i class="fas fa-fw fa-list-ul mr-2"></i>Set to DHCP <i class="fas fa-fw fa-list-ul me-2"></i>Set to DHCP
</button> </button>
<?php if (lookupUserPermission("module_support") === 3) { ?> <?php if (lookupUserPermission("module_support") === 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<button class="dropdown-item text-danger text-bold confirm-link" type="submit" form="bulkActions" name="bulk_delete_asset_interfaces"> <button class="dropdown-item text-danger text-bold confirm-link" type="submit" form="bulkActions" name="bulk_delete_asset_interfaces">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</button> </button>
<?php } ?> <?php } ?>
</div> </div>
@@ -579,7 +579,7 @@ if (isset($_GET['asset_id'])) {
$interface_ip_display = $interface_ip ?: '-'; $interface_ip_display = $interface_ip ?: '-';
$interface_type_display = $interface_type ?: '-'; $interface_type_display = $interface_type ?: '-';
$network_name_display = $network_name $network_name_display = $network_name
? "<i class='fas fa-fw fa-network-wired mr-1'></i>$network_name" ? "<i class='fas fa-fw fa-network-wired me-1'></i>$network_name"
: '-'; : '-';
// Connected interface details // Connected interface details
@@ -595,7 +595,7 @@ if (isset($_GET['asset_id'])) {
$connected_to_display = "<a class='ajax-modal' href='#' $connected_to_display = "<a class='ajax-modal' href='#'
data-modal-size='lg' data-modal-size='lg'
data-modal-url='modals/asset/asset.php?id=$connected_asset_id'> data-modal-url='modals/asset/asset.php?id=$connected_asset_id'>
<strong><i class='fa fa-fw text-dark fa-$connected_asset_icon mr-1'></i>$connected_asset_name</strong> - $connected_interface_name <strong><i class='fa fa-fw text-dark fa-$connected_asset_icon me-1'></i>$connected_asset_name</strong> - $connected_interface_name
</a>"; </a>";
} else { } else {
$connected_to_display = "-"; $connected_to_display = "-";
@@ -608,7 +608,7 @@ if (isset($_GET['asset_id'])) {
</div> </div>
</td> </td>
<td> <td>
<i class="fa fa-fw fa-ethernet text-secondary mr-1"></i> <i class="fa fa-fw fa-ethernet text-secondary me-1"></i>
<a class="text-dark ajax-modal" href="#" <a class="text-dark ajax-modal" href="#"
data-modal-url="modals/asset/asset_interface_edit.php?id=<?= $interface_id ?>"> data-modal-url="modals/asset/asset_interface_edit.php?id=<?= $interface_id ?>">
<?= $interface_name ?> <?php if($interface_primary) { echo "<small class='text-primary'>(Primary)</small>"; } ?> <?= $interface_name ?> <?php if($interface_primary) { echo "<small class='text-primary'>(Primary)</small>"; } ?>
@@ -616,26 +616,26 @@ if (isset($_GET['asset_id'])) {
</td> </td>
<td><?= $interface_type_display; ?></td> <td><?= $interface_type_display; ?></td>
<td><?= $network_name_display; ?></td> <td><?= $network_name_display; ?></td>
<td class="text-monospace"> <td class="font-monospace">
<?= $interface_ip_display; ?> <?= $interface_ip_display; ?>
<div><small class="text-secondary"><?= $interface_ipv6 ?></small></div> <div><small class="text-secondary"><?= $interface_ipv6 ?></small></div>
</td> </td>
<td class="text-monospace"><?= $interface_mac_display; ?></td> <td class="font-monospace"><?= $interface_mac_display; ?></td>
<td><?= $connected_to_display; ?></td> <td><?= $connected_to_display; ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-tool btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-tool btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i> <i class="fas fa-ellipsis-v"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/asset/asset_interface_edit.php?id=<?= $interface_id ?>"> data-modal-url="modals/asset/asset_interface_edit.php?id=<?= $interface_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<?php if ($session_user_role == 3 && $interface_primary == 0): ?> <?php if ($session_user_role == 3 && $interface_primary == 0): ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_asset_interface=<?= $interface_id; ?>&csrf_token=<?= $_SESSION['csrf_token']; ?>"> <a class="dropdown-item text-danger text-bold" href="post.php?delete_asset_interface=<?= $interface_id; ?>&csrf_token=<?= $_SESSION['csrf_token']; ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php endif; ?> <?php endif; ?>
</div> </div>
@@ -653,7 +653,7 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($credential_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($credential_count == 0) { echo "d-none"; } ?>">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><i class="fa fa-fw fa-key mr-2"></i>Credentials</h3> <h3 class="card-title"><i class="fa fa-fw fa-key me-2"></i>Credentials</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="table-responsive-sm-sm"> <div class="table-responsive-sm-sm">
@@ -717,7 +717,7 @@ if (isset($_GET['asset_id'])) {
} }
$credential_tag_id_array[] = $credential_tag_id; $credential_tag_id_array[] = $credential_tag_id;
$credential_tag_name_display_array[] = "<a href='credentials.php?client_id=$client_id&tags[]=$credential_tag_id'><span class='badge text-light p-1 mr-1' style='background-color: $credential_tag_color;'><i class='fa fa-fw fa-$credential_tag_icon mr-2'></i>$credential_tag_name</span></a>"; $credential_tag_name_display_array[] = "<a href='credentials.php?client_id=$client_id&tags[]=$credential_tag_id'><span class='badge text-light p-1 me-1' style='background-color: $credential_tag_color;'><i class='fa fa-fw fa-$credential_tag_icon me-2'></i>$credential_tag_name</span></a>";
} }
$credential_tags_display = implode('', $credential_tag_name_display_array); $credential_tags_display = implode('', $credential_tag_name_display_array);
@@ -738,26 +738,26 @@ if (isset($_GET['asset_id'])) {
<td><?= $otp_display; ?></td> <td><?= $otp_display; ?></td>
<td><?= $credential_uri_display; ?></td> <td><?= $credential_uri_display; ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/credential/credential_edit.php?id=<?= $credential_id ?>"> data-modal-url="modals/credential/credential_edit.php?id=<?= $credential_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#shareModal" onclick="populateShareModal(<?= "$client_id, 'Credential', $credential_id"; ?>)"> <a class="dropdown-item" href="#" data-bs-toggle="modal" data-bs-target="#shareModal" onclick="populateShareModal(<?= "$client_id, 'Credential', $credential_id"; ?>)">
<i class="fas fa-fw fa-share-alt mr-2"></i>Share <i class="fas fa-fw fa-share-alt me-2"></i>Share
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="post.php?unlink_credential_from_asset&asset_id=<?= $asset_id; ?>&credential_id=<?= $credential_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item" href="post.php?unlink_credential_from_asset&asset_id=<?= $asset_id; ?>&credential_id=<?= $credential_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-unlink mr-2"></i>Unlink <i class="fas fa-fw fa-unlink me-2"></i>Unlink
</a> </a>
<?php if ($session_user_role == 3) { ?> <?php if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_credential=<?= $credential_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold" href="post.php?delete_credential=<?= $credential_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>
@@ -782,10 +782,10 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($software_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($software_count == 0) { echo "d-none"; } ?>">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-cube mr-2"></i>Licenses</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-cube me-2"></i>Licenses</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_software.php?id=<?= $asset_id ?>"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_software.php?id=<?= $asset_id ?>">
<i class="fas fa-link mr-2"></i>Link Software <i class="fas fa-link me-2"></i>Link Software
</button> </button>
</div> </div>
</div> </div>
@@ -868,10 +868,10 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($document_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($document_count == 0) { echo "d-none"; } ?>">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-folder mr-2"></i>Documents</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-folder me-2"></i>Documents</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_document.php?id=<?= $asset_id ?>"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_document.php?id=<?= $asset_id ?>">
<i class="fas fa-link mr-2"></i>Link Document <i class="fas fa-link me-2"></i>Link Document
</button> </button>
</div> </div>
</div> </div>
@@ -934,7 +934,7 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($files_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($files_count == 0) { echo "d-none"; } ?>">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-cube mr-2"></i>Files</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-cube me-2"></i>Files</h3>
<div class="card-tools"> <div class="card-tools">
<div class="btn-group"> <div class="btn-group">
<?php <?php
@@ -952,7 +952,7 @@ if (isset($_GET['asset_id'])) {
?> ?>
</div> </div>
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_file.php?id=<?= $asset_id ?>"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_file.php?id=<?= $asset_id ?>">
<i class="fas fa-link mr-2"></i>Link File <i class="fas fa-link me-2"></i>Link File
</button> </button>
</div> </div>
</div> </div>
@@ -1024,7 +1024,7 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($recurring_ticket_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($recurring_ticket_count == 0) { echo "d-none"; } ?>">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><i class="fa fa-fw fa-recycle mr-2"></i>Recurring Tickets</h3> <h3 class="card-title"><i class="fa fa-fw fa-recycle me-2"></i>Recurring Tickets</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="table-responsive-sm"> <div class="table-responsive-sm">
@@ -1064,25 +1064,25 @@ if (isset($_GET['asset_id'])) {
<td><?= $recurring_ticket_next_run ?></td> <td><?= $recurring_ticket_next_run ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" <a class="dropdown-item ajax-modal" href="#"
data-modal-size="lg" data-modal-size="lg"
data-modal-url="modals/recurring_ticket/recurring_ticket_edit.php?id=<?= $recurring_ticket_id; ?>"> data-modal-url="modals/recurring_ticket/recurring_ticket_edit.php?id=<?= $recurring_ticket_id; ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit <i class="fas fa-fw fa-edit me-2"></i>Edit
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="post.php?force_recurring_ticket=<?= $recurring_ticket_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item" href="post.php?force_recurring_ticket=<?= $recurring_ticket_id; ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fa fa-fw fa-paper-plane text-secondary mr-2"></i>Force Reoccur <i class="fa fa-fw fa-paper-plane text-secondary me-2"></i>Force Reoccur
</a> </a>
<?php <?php
if ($session_user_role == 3) { ?> if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_recurring_ticket=<?= $recurring_ticket_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_recurring_ticket=<?= $recurring_ticket_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
</div> </div>
<?php } ?> <?php } ?>
@@ -1100,7 +1100,7 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($ticket_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($ticket_count == 0) { echo "d-none"; } ?>">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><i class="fa fa-fw fa-life-ring mr-2"></i>Tickets</h3> <h3 class="card-title"><i class="fa fa-fw fa-life-ring me-2"></i>Tickets</h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="table-responsive-sm"> <div class="table-responsive-sm">
@@ -1142,13 +1142,13 @@ if (isset($_GET['asset_id'])) {
$ticket_closed_at = escapeHtml($row['ticket_closed_at']); $ticket_closed_at = escapeHtml($row['ticket_closed_at']);
if ($ticket_priority == "Urgent") { if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>"; $ticket_priority_display = "<span class='p-2 badge bg-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") { } elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>"; $ticket_priority_display = "<span class='p-2 badge bg-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") { } elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>"; $ticket_priority_display = "<span class='p-2 badge bg-warning text-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "Low") { } elseif ($ticket_priority == "Low") {
$ticket_priority_display = "<span class='p-2 badge badge-info'>$ticket_priority</span>"; $ticket_priority_display = "<span class='p-2 badge bg-info text-dark'>$ticket_priority</span>";
} else { } else {
$ticket_priority_display = "-"; $ticket_priority_display = "-";
} }
@@ -1166,11 +1166,11 @@ if (isset($_GET['asset_id'])) {
?> ?>
<tr> <tr>
<td><a href="ticket.php?client_id=<?= $client_id; ?>&ticket_id=<?= $ticket_id; ?>"><span class="badge badge-pill badge-secondary p-3"><?= "$ticket_prefix$ticket_number"; ?></span></a></td> <td><a href="ticket.php?client_id=<?= $client_id; ?>&ticket_id=<?= $ticket_id; ?>"><span class="badge rounded-pill bg-secondary p-3"><?= "$ticket_prefix$ticket_number"; ?></span></a></td>
<td><a href="ticket.php?client_id=<?= $client_id; ?>&ticket_id=<?= $ticket_id; ?>"><?= $ticket_subject; ?></a></td> <td><a href="ticket.php?client_id=<?= $client_id; ?>&ticket_id=<?= $ticket_id; ?>"><?= $ticket_subject; ?></a></td>
<td><?= $ticket_priority_display; ?></td> <td><?= $ticket_priority_display; ?></td>
<td> <td>
<span class='badge badge-pill text-light p-2' style="background-color: <?= $ticket_status_color; ?>"><?= $ticket_status_name; ?></span> <span class='badge rounded-pill text-light p-2' style="background-color: <?= $ticket_status_color; ?>"><?= $ticket_status_name; ?></span>
</td> </td>
<td><?= $ticket_assigned_to_display; ?></td> <td><?= $ticket_assigned_to_display; ?></td>
<td><?= $ticket_updated_at_display; ?></td> <td><?= $ticket_updated_at_display; ?></td>
@@ -1191,10 +1191,10 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($service_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($service_count == 0) { echo "d-none"; } ?>">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-stream mr-2"></i>Linked Services</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-stream me-2"></i>Linked Services</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_service.php?id=<?= $asset_id ?>"> <button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/asset/asset_link_service.php?id=<?= $asset_id ?>">
<i class="fas fa-link mr-2"></i>Link Service <i class="fas fa-link me-2"></i>Link Service
</button> </button>
</div> </div>
</div> </div>
@@ -1249,11 +1249,11 @@ if (isset($_GET['asset_id'])) {
<div class="card card-dark <?php if ($note_count == 0) { echo "d-none"; } ?>"> <div class="card card-dark <?php if ($note_count == 0) { echo "d-none"; } ?>">
<div class="card-header py-2"> <div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fa fa-fw fa-sticky-note mr-2"></i>Notes</h3> <h3 class="card-title mt-2"><i class="fa fa-fw fa-sticky-note me-2"></i>Notes</h3>
<div class="card-tools"> <div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" <button type="button" class="btn btn-primary ajax-modal"
data-modal-url="modals/asset/asset_note_add.php?id=<?= $asset_id ?>"> data-modal-url="modals/asset/asset_note_add.php?id=<?= $asset_id ?>">
<i class="fas fa-plus mr-2"></i>New Note <i class="fas fa-plus me-2"></i>New Note
</button> </button>
</div> </div>
</div> </div>
@@ -1285,23 +1285,23 @@ if (isset($_GET['asset_id'])) {
?> ?>
<tr> <tr>
<td><i class="fa fa-fw <?= $note_type_icon ?> mr-2"></i><?= $asset_note_type ?></td> <td><i class="fa fa-fw <?= $note_type_icon ?> me-2"></i><?= $asset_note_type ?></td>
<td><?= $asset_note ?></td> <td><?= $asset_note ?></td>
<td><?= $note_by ?></td> <td><?= $note_by ?></td>
<td><?= $asset_note_created_at ?></td> <td><?= $asset_note_created_at ?></td>
<td> <td>
<div class="dropdown dropleft text-center"> <div class="dropdown dropstart text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown"> <button class="btn btn-secondary btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i> <i class="fas fa-ellipsis-h"></i>
</button> </button>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item text-danger" href="post.php?archive_asset_note=<?= $asset_note_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger" href="post.php?archive_asset_note=<?= $asset_note_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-archive mr-2"></i>Archive <i class="fas fa-fw fa-archive me-2"></i>Archive
</a> </a>
<?php if (lookupUserPermission("module_support") >= 3) { ?> <?php if (lookupUserPermission("module_support") >= 3) { ?>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold" href="post.php?delete_asset_note=<?= $asset_note_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>"> <a class="dropdown-item text-danger text-bold" href="post.php?delete_asset_note=<?= $asset_note_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete <i class="fas fa-fw fa-trash me-2"></i>Delete
</a> </a>
<?php } ?> <?php } ?>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More