Added UI support for linking assets, contacts, and licenses to Documents

This commit is contained in:
johnnyq 2023-09-19 15:55:35 -04:00
parent 5d74226762
commit 0c0cb2cec9
7 changed files with 393 additions and 36 deletions

View File

@ -61,39 +61,108 @@ $document_folder_id = intval($row['document_folder_id']);
<button type="button" class="btn btn-secondary btn-block" onclick="window.print();"><i class="fas fa-fw fa-print mr-2"></i>Print</button>
<hr>
<h5>Related</h5>
<h6>
<i class="fas fa-fw fa-paperclip text-secondary mr-2"></i>Files
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#associateFileToDocumentModal">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
<h6>
<i class="fas fa-fw fa-key text-secondary mr-2"></i>Passwords
<button type="button" class="btn btn-link btn-sm">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
<h6>
<i class="fas fa-fw fa-users text-secondary mr-2"></i>Contacts
<button type="button" class="btn btn-link btn-sm">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#linkContactToDocumentModal">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
<ul>
<?php
$sql_contacts = mysqli_query($mysqli, "SELECT * FROM contacts, contact_documents
WHERE contacts.contact_id = contact_documents.contact_id
AND contact_documents.document_id = $document_id
ORDER BY contact_name ASC"
);
$linked_contacts = array();
while ($row = mysqli_fetch_array($sql_contacts)) {
$contact_id = intval($row['contact_id']);
$contact_name = nullable_htmlentities($row['contact_name']);
$linked_contacts[] = $contact_id;
?>
<li>
<?php echo $contact_name; ?>
<a href="post.php?unlink_contact_from_document&contact_id=<?php echo $contact_id; ?>&document_id=<?php echo $document_id; ?>">
<i class="fas fa-fw fa-times text-secondary ml-2"></i>
</a>
</li>
<?php
}
?>
</ul>
<h6>
<i class="fas fa-fw fa-laptop text-secondary mr-2"></i>Assets
<button type="button" class="btn btn-link btn-sm">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#linkAssetToDocumentModal">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
<ul>
<?php
$sql_assets = mysqli_query($mysqli, "SELECT * FROM assets, asset_documents
WHERE assets.asset_id = asset_documents.asset_id
AND asset_documents.document_id = $document_id
ORDER BY asset_name ASC"
);
$linked_assets = array();
while ($row = mysqli_fetch_array($sql_assets)) {
$asset_id = intval($row['asset_id']);
$asset_name = nullable_htmlentities($row['asset_name']);
$linked_assets[] = $asset_id;
?>
<li>
<?php echo $asset_name; ?>
<a href="post.php?unlink_asset_from_document&asset_id=<?php echo $asset_id; ?>&document_id=<?php echo $document_id; ?>">
<i class="fas fa-fw fa-times text-secondary ml-2"></i>
</a>
</li>
<?php
}
?>
</ul>
<h6>
<i class="fas fa-fw fa-cube text-secondary mr-2"></i>Software
<button type="button" class="btn btn-link btn-sm">
<i class="fas fa-fw fa-cube text-secondary mr-2"></i>Licenses
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#linkSoftwareToDocumentModal">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
<ul>
<?php
$sql_software = mysqli_query($mysqli, "SELECT * FROM software, software_documents
WHERE software.software_id = software_documents.software_id
AND software_documents.document_id = $document_id
ORDER BY software_name ASC"
);
$linked_software = array();
while ($row = mysqli_fetch_array($sql_software)) {
$software_id = intval($row['software_id']);
$software_name = nullable_htmlentities($row['software_name']);
$linked_software[] = $software_id;
?>
<li>
<?php echo $software_name; ?>
<a href="post.php?unlink_software_from_document&software_id=<?php echo $software_id; ?>&document_id=<?php echo $document_id; ?>">
<i class="fas fa-fw fa-times text-secondary ml-2"></i>
</a>
</li>
<?php
}
?>
</ul>
<h6>
<i class="fas fa-fw fa-building text-secondary mr-2"></i>Vendors
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#associateVendorToDocumentModal">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#linkVendorToDocumentModal">
<i class="fas fa-fw fa-plus"></i>
</button>
</h6>
@ -116,14 +185,14 @@ $document_folder_id = intval($row['document_folder_id']);
?>
<li>
<?php echo $vendor_name; ?>
<a href="post.php?unassociate_vendor_from_document&vendor_id=<?php echo $vendor_id; ?>&document_id=<?php echo $document_id; ?>">
<a href="post.php?unlink_vendor_from_document&vendor_id=<?php echo $vendor_id; ?>&document_id=<?php echo $document_id; ?>">
<i class="fas fa-fw fa-times text-secondary ml-2"></i>
</a>
</li>
<?php
}
?>
</ul>
<?php
}
?>
</ul>
</div>
</div>
@ -134,8 +203,11 @@ $document_folder_id = intval($row['document_folder_id']);
<?php
require_once("client_document_edit_modal.php");
require_once("client_document_associate_file_modal.php");
require_once("client_document_associate_vendor_modal.php");
require_once("client_document_link_file_modal.php");
require_once("client_document_link_contact_modal.php");
require_once("client_document_link_asset_modal.php");
require_once("client_document_link_software_modal.php");
require_once("client_document_link_vendor_modal.php");
require_once("share_modal.php");
require_once("footer.php");

View File

@ -0,0 +1,58 @@
<div class="modal" id="linkAssetToDocumentModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-desktop mr-2"></i>Link Asset to <strong><?php echo $document_name; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="client_id" value="<?php echo $client_id; ?>">
<input type="hidden" name="document_id" value="<?php echo $document_id; ?>">
<div class="modal-body bg-white">
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
</div>
<select class="form-control select2" name="asset_id">
<option value="">- Select an Asset -</option>
<?php
// Check if there are any associated vendors
if (!empty($linked_assets)) {
$excluded_asset_ids = implode(",", $linked_assets);
$exclude_condition = "AND asset_id NOT IN ($excluded_asset_ids)";
} else {
$exclude_condition = ""; // No condition if there are no displayed vendors
}
$sql_assets_select = mysqli_query($mysqli, "SELECT * FROM assets
WHERE asset_client_id = $client_id
AND asset_archived_at IS NULL
$exclude_condition
ORDER BY asset_name ASC"
);
while ($row = mysqli_fetch_array($sql_assets_select)) {
$asset_id = intval($row['asset_id']);
$asset_name = nullable_htmlentities($row['asset_name']);
?>
<option value="<?php echo $asset_id ?>"><?php echo $asset_name; ?></option>
<?php
}
?>
</select>
</div>
</div>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="link_asset_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Link</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -0,0 +1,58 @@
<div class="modal" id="linkContactToDocumentModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-user mr-2"></i>Link Contact to <strong><?php echo $document_name; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="client_id" value="<?php echo $client_id; ?>">
<input type="hidden" name="document_id" value="<?php echo $document_id; ?>">
<div class="modal-body bg-white">
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<select class="form-control select2" name="contact_id">
<option value="">- Select a Contact -</option>
<?php
// Check if there are any associated vendors
if (!empty($linked_contacts)) {
$excluded_contact_ids = implode(",", $linked_contacts);
$exclude_condition = "AND contact_id NOT IN ($excluded_contact_ids)";
} else {
$exclude_condition = ""; // No condition if there are no displayed vendors
}
$sql_contacts_select = mysqli_query($mysqli, "SELECT * FROM contacts
WHERE contact_client_id = $client_id
AND contact_archived_at IS NULL
$exclude_condition
ORDER BY contact_name ASC"
);
while ($row = mysqli_fetch_array($sql_contacts_select)) {
$contact_id = intval($row['contact_id']);
$contact_name = nullable_htmlentities($row['contact_name']);
?>
<option value="<?php echo $contact_id ?>"><?php echo $contact_name; ?></option>
<?php
}
?>
</select>
</div>
</div>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="link_contact_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Link</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -1,8 +1,8 @@
<div class="modal" id="associateFileToDocumentModal" tabindex="-1">
<div class="modal" id="linkFileToDocumentModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-paperclip mr-2"></i>Associate File to <strong><?php echo $document_name; ?></strong></h5>
<h5 class="modal-title"><i class="fa fa-fw fa-paperclip mr-2"></i>Link File to <strong><?php echo $document_name; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
@ -39,7 +39,7 @@
</div>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="associate_file_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Associate</button>
<button type="submit" name="link_file_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Link</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>

View File

@ -0,0 +1,58 @@
<div class="modal" id="linkSoftwareToDocumentModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-user mr-2"></i>Link Software to <strong><?php echo $document_name; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="client_id" value="<?php echo $client_id; ?>">
<input type="hidden" name="document_id" value="<?php echo $document_id; ?>">
<div class="modal-body bg-white">
<div class="form-group">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-box-open"></i></span>
</div>
<select class="form-control select2" name="software_id">
<option value="">- Select a License -</option>
<?php
// Check if there are any associated vendors
if (!empty($linked_software)) {
$excluded_software_ids = implode(",", $linked_software);
$exclude_condition = "AND software_id NOT IN ($excluded_software_ids)";
} else {
$exclude_condition = ""; // No condition if there are no displayed vendors
}
$sql_software_select = mysqli_query($mysqli, "SELECT * FROM software
WHERE software_client_id = $client_id
AND software_archived_at IS NULL
$exclude_condition
ORDER BY software_name ASC"
);
while ($row = mysqli_fetch_array($sql_software_select)) {
$software_id = intval($row['software_id']);
$software_name = nullable_htmlentities($row['software_name']);
?>
<option value="<?php echo $software_id ?>"><?php echo $software_name; ?></option>
<?php
}
?>
</select>
</div>
</div>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="link_software_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Link</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -1,8 +1,8 @@
<div class="modal" id="associateVendorToDocumentModal" tabindex="-1">
<div class="modal" id="linkVendorToDocumentModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-building mr-2"></i>Associate Vendor to <strong><?php echo $document_name; ?></strong></h5>
<h5 class="modal-title"><i class="fa fa-fw fa-building mr-2"></i>Link Vendor to <strong><?php echo $document_name; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
@ -49,7 +49,7 @@
</div>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="associate_vendor_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Associate</button>
<button type="submit" name="link_vendor_to_document" class="btn btn-primary text-bold"><i class="fa fa-check mr-2"></i>Link</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>

View File

@ -132,7 +132,7 @@ if (isset($_POST['move_document'])) {
}
if (isset($_POST['associate_vendor_to_document'])) {
if (isset($_POST['link_vendor_to_document'])) {
validateTechRole();
@ -144,15 +144,15 @@ if (isset($_POST['associate_vendor_to_document'])) {
mysqli_query($mysqli,"INSERT INTO vendor_documents SET vendor_id = $vendor_id, document_id = $document_id");
// Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Create', log_description = 'Created Document Vendor Relation', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id");
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Link', log_description = 'Created Document Vendor link', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Vendor associated with Document";
$_SESSION['alert_message'] = "Vendor linked with Document";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_GET['unassociate_vendor_from_document'])) {
if (isset($_GET['unlink_vendor_from_document'])) {
validateTechRole();
$vendor_id = intval($_GET['vendor_id']);
@ -161,9 +161,120 @@ if (isset($_GET['unassociate_vendor_from_document'])) {
mysqli_query($mysqli,"DELETE FROM vendor_documents WHERE vendor_id = $vendor_id AND document_id = $document_id");
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Delete', log_description = 'Document Vendor relationship removed', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'unLink', log_description = 'Document Vendor link removed', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Vendor has been unassciated";
$_SESSION['alert_message'] = "Vendor has been unlinked";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_POST['link_contact_to_document'])) {
validateTechRole();
$client_id = intval($_POST['client_id']);
$document_id = intval($_POST['document_id']);
$contact_id = intval($_POST['contact_id']);
// Contact add query
mysqli_query($mysqli,"INSERT INTO contact_documents SET contact_id = $contact_id, document_id = $document_id");
// Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Link', log_description = 'Created Document Contact link', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Contact linked with Document";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_GET['unlink_contact_from_document'])) {
validateTechRole();
$contact_id = intval($_GET['contact_id']);
$document_id = intval($_GET['document_id']);
mysqli_query($mysqli,"DELETE FROM contact_documents WHERE contact_id = $contact_id AND document_id = $document_id");
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'unLink', log_description = 'Document Contact link removed', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Contact has been unlinked";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_POST['link_asset_to_document'])) {
validateTechRole();
$client_id = intval($_POST['client_id']);
$document_id = intval($_POST['document_id']);
$asset_id = intval($_POST['asset_id']);
// Contact add query
mysqli_query($mysqli,"INSERT INTO asset_documents SET asset_id = $asset_id, document_id = $document_id");
// Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Link', log_description = 'Created Document Asset link', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Asset linked with Document";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_GET['unlink_asset_from_document'])) {
validateTechRole();
$asset_id = intval($_GET['asset_id']);
$document_id = intval($_GET['document_id']);
mysqli_query($mysqli,"DELETE FROM asset_documents WHERE asset_id = $asset_id AND document_id = $document_id");
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'unLink', log_description = 'Document Asset link removed', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Asset has been unlinked";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_POST['link_software_to_document'])) {
validateTechRole();
$client_id = intval($_POST['client_id']);
$document_id = intval($_POST['document_id']);
$software_id = intval($_POST['software_id']);
// Contact add query
mysqli_query($mysqli,"INSERT INTO software_documents SET software_id = $software_id, document_id = $document_id");
// Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'Link', log_description = 'Created Document Software link', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_client_id = $client_id, log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Contact linked with Document";
header("Location: " . $_SERVER["HTTP_REFERER"]);
}
if (isset($_GET['unlink_software_from_document'])) {
validateTechRole();
$software_id = intval($_GET['software_id']);
$document_id = intval($_GET['document_id']);
mysqli_query($mysqli,"DELETE FROM software_documents WHERE software_id = $software_id AND document_id = $document_id");
//Logging
mysqli_query($mysqli,"INSERT INTO logs SET log_type = 'Document', log_action = 'unLink', log_description = 'Document Software link removed', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
$_SESSION['alert_message'] = "Software has been unlinked";
header("Location: " . $_SERVER["HTTP_REFERER"]);