mirror of https://github.com/itflow-org/itflow
Ticket watchers can now be add and deleted
This commit is contained in:
parent
76b0954d25
commit
dd46c5bcab
|
|
@ -201,3 +201,6 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||
require_once("ticket_add_modal.php");
|
||||
require_once("client_ticket_export_modal.php");
|
||||
require_once("footer.php");
|
||||
?>
|
||||
|
||||
<script src="js/ticket_add_remove_watchers.js"></script>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
function addWatcher(button) {
|
||||
var container = button.previousElementSibling;
|
||||
var textFieldWrapper = document.createElement("div");
|
||||
textFieldWrapper.className = "input-group mb-3";
|
||||
|
||||
var prependWrapper = document.createElement("div");
|
||||
prependWrapper.className = "input-group-prepend";
|
||||
var iconSpan = document.createElement("span");
|
||||
iconSpan.className = "input-group-text";
|
||||
iconSpan.innerHTML = "<i class='fas fa-fw fa-envelope'></i>";
|
||||
prependWrapper.appendChild(iconSpan);
|
||||
|
||||
var textField = document.createElement("input");
|
||||
textField.type = "email";
|
||||
textField.className = "form-control";
|
||||
textField.name = "watchers[]";
|
||||
|
||||
var removeButtonWrapper = document.createElement("div");
|
||||
removeButtonWrapper.className = "input-group-append";
|
||||
|
||||
var removeButton = document.createElement("button");
|
||||
removeButton.className = "btn btn-danger";
|
||||
removeButton.type = "button";
|
||||
removeButton.innerHTML = "<i class='fas fa-fw fa-minus'></i>";
|
||||
removeButton.onclick = function() {
|
||||
removeWatcher(this);
|
||||
};
|
||||
|
||||
removeButtonWrapper.appendChild(removeButton);
|
||||
textFieldWrapper.appendChild(prependWrapper);
|
||||
textFieldWrapper.appendChild(textField);
|
||||
textFieldWrapper.appendChild(removeButtonWrapper);
|
||||
container.appendChild(textFieldWrapper);
|
||||
}
|
||||
|
||||
function removeWatcher(button) {
|
||||
var container = button.parentNode.parentNode.parentNode; // Navigate to the container
|
||||
var textFieldWrapper = button.parentNode.parentNode;
|
||||
container.removeChild(textFieldWrapper);
|
||||
}
|
||||
|
|
@ -108,6 +108,19 @@ if (isset($_POST['edit_ticket'])) {
|
|||
|
||||
mysqli_query($mysqli,"UPDATE tickets SET ticket_subject = '$subject', ticket_priority = '$priority', ticket_details = '$details', ticket_vendor_ticket_number = '$vendor_ticket_number', ticket_assigned_to = $assigned_to, ticket_contact_id = $contact_id, ticket_vendor_id = $vendor_id, ticket_asset_id = $asset_id WHERE ticket_id = $ticket_id");
|
||||
|
||||
// Add Watchers
|
||||
if (!empty($_POST['watchers'])) {
|
||||
|
||||
// Remove all watchers first
|
||||
mysqli_query($mysqli,"DELETE FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id");
|
||||
|
||||
//Add the Watchers
|
||||
foreach($_POST['watchers'] as $watcher) {
|
||||
$watcher_email = sanitizeInput($watcher);
|
||||
mysqli_query($mysqli,"INSERT INTO ticket_watchers SET watcher_email = '$watcher_email', watcher_ticket_id = $ticket_id");
|
||||
}
|
||||
}
|
||||
|
||||
//Logging
|
||||
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Ticket', log_action = 'Modify', log_description = '$session_name modified ticket $ticket_number - $subject', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id, log_entity_id = $ticket_id");
|
||||
|
||||
|
|
|
|||
|
|
@ -759,3 +759,4 @@ if ($ticket_status !== "Closed") { ?>
|
|||
<script src="js/ticket_button_respond_note.js"></script>
|
||||
<?php } ?>
|
||||
|
||||
<script src="js/ticket_add_remove_watchers.js"></script>
|
||||
|
|
|
|||
|
|
@ -162,53 +162,10 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label>Watchers <span class="text-danger">Work in Progress</span></label>
|
||||
<div id="text-fields"></div>
|
||||
<button type="button" class="btn btn-primary" onclick="addTextField()"><i class="fas fa-fw fa-plus"></i> Add Watcher</button>
|
||||
<div class="text-fields"></div>
|
||||
<button type="button" class="btn btn-primary" onclick="addWatcher(this)"><i class="fas fa-fw fa-plus"></i> Add Watcher</button>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function addTextField() {
|
||||
var container = document.getElementById("text-fields");
|
||||
var textFieldWrapper = document.createElement("div");
|
||||
textFieldWrapper.className = "input-group mb-3";
|
||||
|
||||
var prependWrapper = document.createElement("div");
|
||||
prependWrapper.className = "input-group-prepend";
|
||||
var iconSpan = document.createElement("span");
|
||||
iconSpan.className = "input-group-text";
|
||||
iconSpan.innerHTML = "<i class='fa fa-fw fa-envelope'></i>";
|
||||
prependWrapper.appendChild(iconSpan);
|
||||
|
||||
var textField = document.createElement("input");
|
||||
textField.type = "email";
|
||||
textField.className = "form-control";
|
||||
textField.name = "watchers[]";
|
||||
|
||||
var removeButtonWrapper = document.createElement("div");
|
||||
removeButtonWrapper.className = "input-group-append";
|
||||
|
||||
var removeButton = document.createElement("button");
|
||||
removeButton.className = "btn btn-danger";
|
||||
removeButton.type = "button";
|
||||
removeButton.innerHTML = "<i class='fas fa-fw fa-minus'></i>";
|
||||
removeButton.onclick = function() {
|
||||
removeTextField(this);
|
||||
};
|
||||
|
||||
removeButtonWrapper.appendChild(removeButton);
|
||||
textFieldWrapper.appendChild(prependWrapper);
|
||||
textFieldWrapper.appendChild(textField);
|
||||
textFieldWrapper.appendChild(removeButtonWrapper);
|
||||
container.appendChild(textFieldWrapper);
|
||||
}
|
||||
|
||||
function removeTextField(button) {
|
||||
var container = document.getElementById("text-fields");
|
||||
var textFieldWrapper = button.parentNode.parentNode; // Since we added an extra wrapping div
|
||||
container.removeChild(textFieldWrapper);
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="pills-assets">
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@
|
|||
<div class="form-group">
|
||||
<label>Watchers <span class="text-danger">Work in Progress</span></label>
|
||||
|
||||
<div id="text-fields">
|
||||
<div class="text-fields">
|
||||
<?php
|
||||
$sql_watchers = mysqli_query($mysqli, "SELECT * FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id");
|
||||
while ($row = mysqli_fetch_array($sql_watchers)) {
|
||||
|
|
@ -150,7 +150,7 @@
|
|||
</div>
|
||||
<input type="text" class="form-control" name="watchers[]" value="<?php echo $watcher_email; ?>">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-danger"><i class="fas fa-fw fa-plus"></i></button>
|
||||
<button type="button" class="btn btn-danger" onclick="removeWatcher(this)"><i class="fas fa-fw fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
|
|
@ -158,52 +158,9 @@
|
|||
?>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" type="button" onclick="addTextField()"><i class="fas fa-fw fa-plus"></i> Add Watcher</button>
|
||||
<button class="btn btn-primary" type="button" onclick="addWatcher(this)"><i class="fas fa-fw fa-plus"></i> Add Watcher</button>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function addTextField<?php echo $ticket_id; ?>() {
|
||||
var container = document.getElementById("text-fields<?php echo $ticket_id; ?>");
|
||||
var textFieldWrapper = document.createElement("div");
|
||||
textFieldWrapper.className = "input-group mb-3";
|
||||
|
||||
var prependWrapper = document.createElement("div");
|
||||
prependWrapper.className = "input-group-prepend";
|
||||
var iconSpan = document.createElement("span");
|
||||
iconSpan.className = "input-group-text";
|
||||
iconSpan.innerHTML = "<i class='fa fa-fw fa-envelope'></i>";
|
||||
prependWrapper.appendChild(iconSpan);
|
||||
|
||||
var textField = document.createElement("input");
|
||||
textField.type = "email";
|
||||
textField.className = "form-control";
|
||||
textField.name = "watchers[]";
|
||||
|
||||
var removeButtonWrapper = document.createElement("div");
|
||||
removeButtonWrapper.className = "input-group-append";
|
||||
|
||||
var removeButton = document.createElement("button");
|
||||
removeButton.className = "btn btn-danger";
|
||||
removeButton.type = "button";
|
||||
removeButton.innerHTML = "<i class='fas fa-fw fa-minus'></i>";
|
||||
removeButton.onclick = function() {
|
||||
removeTextField(this);
|
||||
};
|
||||
|
||||
removeButtonWrapper.appendChild(removeButton);
|
||||
textFieldWrapper.appendChild(prependWrapper);
|
||||
textFieldWrapper.appendChild(textField);
|
||||
textFieldWrapper.appendChild(removeButtonWrapper);
|
||||
container.appendChild(textFieldWrapper);
|
||||
}
|
||||
|
||||
function removeTextField(button) {
|
||||
var container = document.getElementById("text-fields");
|
||||
var textFieldWrapper = button.parentNode.parentNode; // Since we added an extra wrapping div
|
||||
container.removeChild(textFieldWrapper);
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="pills-assets<?php echo $ticket_id; ?>">
|
||||
|
|
|
|||
|
|
@ -390,3 +390,6 @@ $user_active_assigned_tickets = intval($row['total_tickets_assigned']);
|
|||
<?php
|
||||
require_once("ticket_add_modal.php");
|
||||
require_once("footer.php");
|
||||
?>
|
||||
|
||||
<script src="js/ticket_add_remove_watchers.js"></script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue