Remove duplicate HTML code by making reusable functions do the work

master
Skylar Ittner 4 years ago
parent c1cd54f7aa
commit df6a3b7e1d

@ -0,0 +1,9 @@
{
"ID number label": "Device ID",
"Page title": "Device Lookup",
"ID number search box placeholder": "Device/Machine ID Number",
"Search box prompt": "Enter a Netsyms Device ID number, serial number, or tracking code.",
"Look up another device prompt": "Look up another device:",
"No device with ID error": "No device with ID <code>{id}</code> could be found.",
"Component exist but isn't attached to a machine": "This component ID exists in the system but has no associated device."
}

@ -1,5 +1,6 @@
{ {
"Date": "Date", "Date": "Date",
"Technician": "Technician", "Technician": "Technician",
"Event": "Event" "Event": "Event",
"event html label": "<b>{name}</b> on {date}"
} }

@ -3,6 +3,6 @@
"Private Notes": "Private Notes", "Private Notes": "Private Notes",
"Machine ID": "Machine ID", "Machine ID": "Machine ID",
"Back": "Back", "Back": "Back",
"Components": "Components" "Components": "Components",
"Component": "Component"
} }

@ -14,5 +14,6 @@
"Tested On": "Tested On", "Tested On": "Tested On",
"Capacity": "Capacity", "Capacity": "Capacity",
"Last Event": "Last Event", "Last Event": "Last Event",
"Client": "Client" "Client": "Client",
"OS": "OS"
} }

@ -0,0 +1,4 @@
{
"Get Info": "Get Info",
"Number": "Number"
}

@ -89,6 +89,69 @@ class Component implements JsonSerializable {
return []; return [];
} }
/**
* Render the component's info to HTML
* @param bool $public
*/
public function toHTML(bool $public = true): string {
global $Strings;
$func = function($param) {
return $param;
};
$line = function($type) use ($public): string {
global $Strings, $SETTINGS;
if ($type == "TestedDate") {
if (!empty($this->getTestedDate())) {
return "<b>" . $Strings->get("Tested On", false) . ":</b> " . date($SETTINGS["date_format"], strtotime($this->getTestedDate())) . "<br />";
}
return "";
}
if ($type == "Price") {
if (!empty($this->getPrice())) {
return "<b>" . $Strings->get("Price", false) . ":</b> $" . number_format($this->getPrice(), 2) . "<br />";
}
return "";
}
if ($type == "PublicNotes") {
if (!empty($this->getPublicNotes())) {
return "<div><b>" . ($public ? $Strings->get("Notes", false) : $Strings->get("Public Notes", false)) . ":</b><br /><div class=\"ml-3\">" . htmlspecialchars($this->getPublicNotes()) . "</div></div>";
}
return "";
}
if ($type == "PrivateNotes") {
if (!empty($this->getPrivateNotes()) && $public == false) {
return "<div><b>" . $Strings->get("Private Notes", false) . ":</b><br /><div class=\"ml-3\">" . htmlspecialchars($this->getPublicNotes()) . "</div></div>";
}
return "";
}
if (empty($this->{"get$type"}())) {
return "";
}
return "<b>" . $Strings->get($type, false) . ":</b> " . htmlspecialchars($this->{"get$type"}()) . "<br />";
};
$html = "";
if ($public == false) {
$html .= <<<HTML
<div class="float-right">
<a class="btn btn-danger btn-sm" href="./action.php?action=unlinkcomponent&source=viewmachine&id={$func($this->getID())}&machine={$func($this->getMachineID())}"><i class="fas fa-unlink"></i> Detach</a>
<a class="btn btn-primary btn-sm" href="./app.php?page=editcomponent&id={$func($this->getID())}"><i class="fas fa-edit"></i> Edit</a>
</div>
HTML;
}
$html .= <<<HTML
<b>{$func($this->getTypeName())}</b><br />
{$line("Model")}
{$line("Capacity")}
{$line("Serial")}
{$line("TestedDate")}
{$line("Price")}
{$line("Manufacturer")}
{$line("PrivateNotes")}
{$line("PublicNotes")}
HTML;
return $html;
}
public function jsonSerialize() { public function jsonSerialize() {
return $this->toArray(); return $this->toArray();
} }

@ -51,7 +51,7 @@ class Event implements JsonSerializable {
} }
public static function getTypes() { public static function getTypes() {
$list = json_decode(file_get_contents(__DIR__ . '/events.json'), true); $list = json_decode(file_get_contents(__DIR__ . '/../custom/events.json'), true);
return $list; return $list;
} }
@ -117,6 +117,30 @@ class Event implements JsonSerializable {
return []; return [];
} }
/**
* Render the events's info to HTML
* @param bool $public
*/
public function toHTML(bool $public = true): string {
global $Strings, $SETTINGS;
$html = $Strings->build("event html label", [
"name" => $this->getName(),
"date" => date($SETTINGS["datetime_format"], strtotime($this->getDate()))
], false);
$html .= "<br>\n";
if (!empty($this->getTechUID()) && $public == false) {
$html .= "<b>" . $Strings->get("Technician", false) . ":</b> " . htmlspecialchars((new User($this->getTechUID()))->getName()) . "<br>\n";
}
if (!empty($this->getPublicNotes())) {
$html .= "<div><b>" . ($public ? $Strings->get("Notes", false) : $Strings->get("Public Notes", false)) . ":</b><br><div class=\"ml-3\">" . htmlspecialchars($this->getPublicNotes()) . "</div></div>";
}
if (!empty($this->getPrivateNotes()) && $public == false) {
$html .= "<div><b>" . $Strings->get("Private Notes", false) . ":</b><br><div class=\"ml-3\">" . htmlspecialchars($this->getPrivateNotes()) . "</div></div>";
}
return $html;
}
public function jsonSerialize() { public function jsonSerialize() {
return $this->toArray(); return $this->toArray();
} }

@ -151,6 +151,119 @@ class Machine implements JsonSerializable {
return []; return [];
} }
public function toHTMLListGroup(bool $public = true): string {
global $Strings;
$func = function($param) {
return $param;
};
$line = function($type) use ($public): string {
global $Strings, $SETTINGS;
$publicsettings = json_decode(file_get_contents(__DIR__ . "/../custom/public.json"), true);
if ($type == "Client") {
if (!empty($this->getClientID()) && $public == false) {
$client = Clients::getClient($this->getClientID());
$rtn = "<b>" . $Strings->get("Client", false) . ":</b> " . htmlspecialchars($client->getName()) . "<br>";
$rtn .= "<div class=\"ml-3\">";
if (!empty($client->getPhone())) {
$rtn .= "<b>Phone:</b> " . $client->getPhone() . "<br>";
}
if (!empty($client->getEmail())) {
$rtn .= "<b>Email:</b> " . $client->getEmail() . "<br>";
}
if (!empty($client->getBillingAddress())) {
$rtn .= "<b>" . $Strings->get("Billing Address", false)
. ":</b><br>"
. str_replace("\n", "\n<br>", htmlspecialchars($client->getBillingAddress()))
. "<br>";
}
if (!empty($client->getMailingAddress())) {
$rtn .= "<b>" . $Strings->get("Mailing Address", false)
. ":</b><br>"
. str_replace("\n", "\n<br>", htmlspecialchars($client->getMailingAddress()))
. "<br>";
}
$rtn .= "</div>";
return $rtn;
}
return "";
}
if ($type == "Condition") {
if (!empty($this->getCondition())) {
$rtn = "<b>" . $Strings->get("Condition", false) . "</b>: ";
$val = $this->getCondition();
$filled = floor($val);
$empty = 10;
while ($filled > 0) {
$filled--;
$empty--;
$rtn .= "<i class=\"fas fa-star\"></i> ";
}
if ($val - floor($val) > 0.75) {
$empty--;
$rtn .= "<i class=\"fas fa-star\"></i> ";
} else if ($val - floor($val) > 0.25) {
$empty--;
$rtn .= "<i class=\"fas fa-star-half-alt\"></i> ";
}
while ($empty > 0) {
$empty--;
$rtn .= "<i class=\"far fa-star\"></i> ";
}
$rtn .= " ($val/10)";
return $rtn;
}
return "";
}
if ($type == "Price") {
if (!empty($this->getPrice())) {
return "<b>" . $Strings->get("Price", false) . ":</b> $" . number_format($this->getPrice(), 2) . "<br />";
}
return "";
}
if ($type == "PublicNotes") {
if (!empty($this->getPublicNotes())) {
return "<b>" . ($public ? $Strings->get("Notes", false) : $Strings->get("Public Notes", false)) . ":</b><br /><div class=\"ml-3\">" . htmlspecialchars($this->getPublicNotes()) . "</div>";
}
return "";
}
if ($type == "PrivateNotes") {
if (!empty($this->getPrivateNotes()) && $public == false) {
return "<b>" . $Strings->get("Private Notes", false) . ":</b><br /><div class=\"ml-3\">" . htmlspecialchars($this->getPrivateNotes()) . "</div>";
}
return "";
}
if ($type == "ID") {
return "<b>" . $publicsettings["ID number label"] . ":</b> " . htmlspecialchars($this->getID()) . "<br />";
}
if (empty($this->{"get$type"}())) {
return "";
}
return "<b>" . $Strings->get($type, false) . ":</b> " . htmlspecialchars($this->{"get$type"}()) . "<br />";
};
$props = ["Client", "OS", "Serial", "Manufacturer", "Model", "Condition", "Price", "PrivateNotes", "PublicNotes"];
if ($public) {
$props = ["ID"] + $props;
}
$html = '<div class="list-group">';
foreach ($props as $prop) {
$l = $line($prop);
if (empty($l)) {
continue;
}
$html .= '<div class="list-group-item">';
$html .= $l;
$html .= '</div>';
}
$html .= '</div>';
return $html;
}
public function jsonSerialize() { public function jsonSerialize() {
return $this->toArray(); return $this->toArray();
} }

@ -51,102 +51,9 @@ $machine = new Machine($machineid);
<div class="row"> <div class="row">
<div class="col-sm-6 mb-3"> <div class="col-sm-6 mb-3">
<h6>Device Info:</h6> <h6>Device Info:</h6>
<div class="list-group">
<?php
if (!empty($machine->getClientID())) {
$client = Clients::getClient($machine->getClientID());
?>
<div class="list-group-item">
<b><?php $Strings->get("Client"); ?></b>: <?php echo htmlspecialchars($client->getName()); ?>
<br />
<div class="ml-3">
<?php if (!empty($client->getPhone())) { ?>
<b>Phone:</b> <?php echo $client->getPhone(); ?>
<br />
<?php } ?>
<?php if (!empty($client->getBillingAddress())) { ?>
<b>Billing address:</b><br><?php echo str_replace("\n", "\n<br>", htmlspecialchars($client->getBillingAddress())); ?>
<br />
<?php } ?>
<?php if (!empty($client->getMailingAddress())) { ?>
<b>Mailing address:</b><br><?php echo str_replace("\n", "\n<br>", htmlspecialchars($client->getMailingAddress())); ?>
<?php } ?>
<br />
</div>
</div>
<?php
}
?>
<?php if (!empty($machine->getOS())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("OS/Software"); ?></b>: <?php echo htmlspecialchars($machine->getOS()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getSerial())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Serial"); ?></b>: <?php echo htmlspecialchars($machine->getSerial()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getManufacturer())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Manufacturer"); ?></b>: <?php echo htmlspecialchars($machine->getManufacturer()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getModel())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Model"); ?></b>: <?php echo htmlspecialchars($machine->getModel()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getCondition())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Condition"); ?></b>: <?php
$val = $machine->getCondition();
$filled = floor($val);
$empty = 10;
while ($filled > 0) {
$filled--;
$empty--;
echo "<i class=\"fas fa-star\"></i> ";
}
if ($val - floor($val) > 0.75) {
$empty--;
echo "<i class=\"fas fa-star\"></i> ";
} else if ($val - floor($val) > 0.25) {
$empty--;
echo "<i class=\"fas fa-star-half-alt\"></i> ";
}
while ($empty > 0) {
$empty--;
echo "<i class=\"far fa-star\"></i> ";
}
echo " ($val/10)";
?>
</div>
<?php } ?>
<?php if (!empty($machine->getPrice())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Price"); ?></b>: $<?php echo number_format($machine->getPrice(), 2); ?>
</div>
<?php } ?>
<?php
if (!empty($machine->getPrivateNotes())) {
?>
<div class="list-group-item">
<b><?php $Strings->get("Private Notes"); ?></b>:<br><div class="ml-3"><?php echo str_replace("\n", "\n<br>", htmlspecialchars($machine->getPrivateNotes())); ?></div>
</div>
<?php
}
if (!empty($machine->getPublicNotes())) {
?>
<div class="list-group-item">
<b><?php $Strings->get("Public Notes"); ?></b>:<br><div class="ml-3"><?php echo str_replace("\n", "\n<br>", htmlspecialchars($machine->getPublicNotes())); ?></div>
</div>
<?php
}
?>
</div>
<?php <?php
echo $machine->toHTMLListGroup(false);
$history = $machine->getEvents(); $history = $machine->getEvents();
if (count($history) > 0) { if (count($history) > 0) {
@ -156,18 +63,11 @@ $machine = new Machine($machineid);
<div class="list-group"> <div class="list-group">
<?php <?php
foreach ($history as $h) { foreach ($history as $h) {
echo "<div class=\"list-group-item\">\n"; ?>
echo "<b>" . $h->getName() . "</b> on " . date($SETTINGS["datetime_format"], strtotime($h->getDate())) . "<br />\n"; <div class="list-group-item">
if (!empty($h->getTechUID())) { <?php echo $h->toHTML(false); ?>
echo "<b>Technician:</b> " . htmlspecialchars((new User($h->getTechUID()))->getName()) . "<br />\n"; </div>
} <?php
if (!empty($h->getPublicNotes())) {
echo "<div><b>Public Notes:</b><br /><div class=\"ml-3\">" . str_replace("\n", "\n<br>", htmlspecialchars($h->getPublicNotes())) . "</div></div>";
}
if (!empty($h->getPrivateNotes())) {
echo "<div><b>Private Notes:</b><br /><div class=\"ml-3\">" . str_replace("\n", "\n<br>", htmlspecialchars($h->getPrivateNotes())) . "</div></div>";
}
echo "\n</div>\n";
} }
?> ?>
</div> </div>
@ -189,64 +89,7 @@ $machine = new Machine($machineid);
foreach ($components as $c) { foreach ($components as $c) {
?> ?>
<div class="list-group-item"> <div class="list-group-item">
<div class="float-right"> <?php echo $c->toHTML(false); ?>
<a class="btn btn-danger btn-sm" href="./action.php?action=unlinkcomponent&source=viewmachine&id=<?php echo $c->getID(); ?>&machine=<?php echo $machine->getID(); ?>"><i class="fas fa-unlink"></i> <?php $Strings->get("Detach"); ?></a>
<a class="btn btn-primary btn-sm" href="./app.php?page=editcomponent&id=<?php echo $c->getID(); ?>"><i class="fas fa-edit"></i> <?php $Strings->get("Edit"); ?></a>
</div>
<b><?php echo $c->getTypeName(); ?></b><br />
<?php
if (!empty($c->getModel())) {
?>
<b><?php $Strings->get("Model"); ?></b>: <?php echo htmlspecialchars($c->getModel()); ?><br />
<?php
}
if (!empty($c->getCapacity())) {
?>
<b><?php $Strings->get("Capacity"); ?></b>: <?php echo htmlspecialchars($c->getCapacity()); ?><br />
<?php
}
if (!empty($c->getSerial())) {
?>
<b><?php $Strings->get("Serial"); ?></b>: <?php echo htmlspecialchars($c->getSerial()); ?><br />
<?php
}
if (!empty($c->getManufacturer())) {
?>
<b><?php $Strings->get("Manufacturer"); ?></b>: <?php echo htmlspecialchars($c->getManufacturer()); ?><br />
<?php
}
if (!empty($c->getTestedDate())) {
?>
<b><?php $Strings->get("Tested On"); ?></b>: <?php echo date($SETTINGS["datetime_format"], strtotime($c->getTestedDate())); ?><br />
<?php
}
if (!empty($c->getPrice())) {
?>
<b><?php $Strings->get("Price"); ?></b>: $<?php echo number_format($c->getPrice(), 2); ?>
<?php
}
if (!empty($c->getPublicNotes())) {
?>
<div>
<b>Public Notes:</b><br />
<div class="ml-3"><?php echo str_replace("\n", "\n<br>", htmlspecialchars($c->getPublicNotes())); ?></div>
</div>
<?php
}
if (!empty($c->getPrivateNotes())) {
?>
<div>
<b>Private Notes:</b><br />
<div class="ml-3"><?php echo str_replace("\n", "\n<br>", htmlspecialchars($c->getPrivateNotes())); ?></div>
</div>
<?php } ?>
</div> </div>
<?php <?php
} }

@ -7,6 +7,47 @@
*/ */
require_once __DIR__ . "/../lib/required_public.php"; require_once __DIR__ . "/../lib/required_public.php";
$publicsettings = json_decode(file_get_contents(__DIR__ . "/../custom/public.json"), true);
function getSearchBox(bool $searchagain = false): string {
global $publicsettings, $Strings;
if (isset($_GET["embed"])) {
return "";
}
$html = '<p>' . ($searchagain ? $publicsettings["Look up another device prompt"] : $publicsettings["Search box prompt"]) . '</p><form method="GET">'
. '<input type="text" name="id" class="form-control" placeholder="' . ($searchagain ? $publicsettings["ID number search box placeholder"] : $Strings->get("Number", false)) . '" required />'
. '<button type="submit" class="btn btn-primary btn-block mt-2">' . $Strings->get("Get Info", false) . '</button>'
. '</form>';
return $html;
}
/**
* Output a Bootstrap card div with the given header HTML and body HTML.
* @param string $header
* @param (string|array) $body string or array of strings
*/
function printCard($header, $body) {
echo '<div class="card">';
echo ' <h3 class="card-header d-flex">';
echo ' <div>';
echo ' ' . $header;
echo ' </div>';
echo ' </h3>';
if (is_array($body)) {
foreach ($body as $b) {
if (empty($b)) {
continue;
}
echo ' <div class="card-body">';
echo $b;
echo ' </div>';
}
} else {
echo $body;
}
echo "<div>";
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
@ -38,33 +79,10 @@ if (isset($_GET["backgroundcolor"]) && !empty($_GET["backgroundcolor"]) && preg_
<?php <?php
if (!empty($_GET["id"]) && strpos($_GET["id"], "68") === 0 && !CheckDigit::validateS10($_GET["id"])) { if (!empty($_GET["id"]) && strpos($_GET["id"], "68") === 0 && !CheckDigit::validateS10($_GET["id"])) {
// Made a typo in the machine ID // Made a typo in the machine ID
?> printCard('<i class="fas fa-desktop"></i> ' . $Strings->get("Device Info", false), [
<div class="card"> '<p class="text-danger"><code>' . htmlspecialchars($_GET['id']) . '</code> is not valid. Please try re-typing it.</p>',
<h3 class="card-header d-flex"> getSearchBox()
<div> ]);
<i class="fas fa-desktop"></i> <?php $Strings->get("Device Info"); ?>
</div>
</h3>
<div class="card-body">
<?php
if (!empty($_GET["id"])) {
?>
<p class="text-danger"><code><?php echo htmlspecialchars($_GET['id']); ?></code> is not valid. Please try re-typing it.</p>
<?php
}
?>
<?php if (!isset($_GET["embed"])) { ?>
<p>
Enter a <?php echo $SETTINGS["branding"]["machineidnumber"]; ?>, serial number, or tracking code.
</p>
<form method="GET">
<input type="text" name="id" class="form-control" placeholder="Number" required />
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
</form>
<?php } ?>
</div>
</div>
<?php
} else if (empty($_GET["id"]) || (!Machine::exists($_GET["id"]) && !Machine::serialExists($_GET["id"]) && !Component::exists($_GET["id"]))) { } else if (empty($_GET["id"]) || (!Machine::exists($_GET["id"]) && !Machine::serialExists($_GET["id"]) && !Component::exists($_GET["id"]))) {
// try package tracking query // try package tracking query
$trackingok = false; $trackingok = false;
@ -93,377 +111,127 @@ if (isset($_GET["backgroundcolor"]) && !empty($_GET["backgroundcolor"]) && preg_
return $status; return $status;
} }
} }
?>
<div class="card"> $html = '<div class="row">
<h3 class="card-header d-flex">
<div>
<i class="fas fa-box"></i> <?php $Strings->get("Tracking Info"); ?>
</div>
</h3>
<div class="card-body">
<div class="row">
<div class="col-12 mb-3"> <div class="col-12 mb-3">
<div class="list-group"> <div class="list-group">
<div class="list-group-item"> <div class="list-group-item">
<b>Tracking code:</b> <span style="font-family: 'Ubuntu Mono', monospace;"><?php echo $trkresp["code"]; ?></span> <b>Tracking code:</b> <span style="font-family: \'Ubuntu Mono\', monospace;">' . $trkresp["code"] . '</span>
</div> </div>
<div class="list-group-item"> <div class="list-group-item">
<b>Current status:</b> <?php echo trackingStatusToNiceString($trkresp["current"]["status"]) . ": " . $trkresp["current"]["details"]; ?> <b>Current status:</b> ' . trackingStatusToNiceString($trkresp["current"]["status"]) . ": " . $trkresp["current"]["details"]
</div> . '</div>
<div class="list-group-item"> <div class="list-group-item">
<b>Last updated:</b> <?php echo date($SETTINGS["datetime_format"], $trkresp["current"]["date"]); ?> <b>Last updated:</b> ' . date($SETTINGS["datetime_format"], $trkresp["current"]["date"])
</div> . '</div>
<div class="list-group-item"> <div class="list-group-item">
<b>Last location:</b> <?php echo implode(" ", $trkresp["current"]["location"]); ?> <b>Last location:</b> ' . implode(" ", $trkresp["current"]["location"])
</div> . '</div>
<div class="list-group-item"> <div class="list-group-item">
<b>Carrier:</b> <?php echo $trkresp["carrier"]["name"]; ?> <b>Carrier:</b> ' . $trkresp["carrier"]["name"] .
</div> '</div>
</div> </div>
</div> </div>
<div class="col-12 mb-3"> <div class="col-12 mb-3">
<h6>History:</h6> <h6>History:</h6>
<div class="list-group"> <div class="list-group">';
<?php foreach ($trkresp["history"] as $his) {
foreach ($trkresp["history"] as $his) { $html .= '<div class="list-group-item">';
?> $html .= '<b>' . trackingStatusToNiceString($his["status"]) . ":</b> " . $his["details"] . '<br>';
<div class="list-group-item"> $html .= date($SETTINGS["datetime_format"], $his["date"]) . '<br>';
<?php echo trackingStatusToNiceString($his["status"]) . ": " . $his["details"]; ?><br /> $html .= implode(" ", $his["location"]);
<?php echo date($SETTINGS["datetime_format"], $his["date"]); ?><br /> $html .= '</div>';
<?php echo implode(" ", $his["location"]); ?> }
</div> $html .= '</div>
<?php
}
?>
</div>
</div> </div>
</div> </div>';
<?php if (!isset($_GET["embed"])) { ?>
<p> printCard('<i class="fas fa-box"></i> ' . $Strings->get("Tracking Info", false), [
Enter a <?php echo $SETTINGS["branding"]["machineidnumber"]; ?>, serial number, or tracking code. $html,
</p> getSearchBox()
<form method="GET"> ]);
<input type="text" name="id" class="form-control" placeholder="Number" required />
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
</form>
<?php } ?>
</div>
</div>
<?php
} }
} }
if (!$trackingok) { if (!$trackingok) {
?> $body = [];
<div class="card"> if (!empty($_GET["id"])) {
<h3 class="card-header d-flex"> $body[] = '<p class="text-danger">' . str_replace("{id}", htmlspecialchars($_GET['id']), $publicsettings["No device with ID error"]) . "</p>";
<div> }
<i class="fas fa-desktop"></i> <?php $Strings->get("Device Info"); ?> $body[] = getSearchBox();
</div> printCard('<i class="fas fa-desktop"></i> ' . $Strings->get("Device Info", false), $body);
</h3>
<div class="card-body">
<?php
if (!empty($_GET["id"])) {
?>
<p class="text-danger">No device with ID <code><?php echo htmlspecialchars($_GET['id']); ?></code> could be found.</p>
<?php
}
?>
<?php if (!isset($_GET["embed"])) { ?>
<p>
Enter a <?php echo $SETTINGS["branding"]["machineidnumber"]; ?>, serial number, or tracking code.
</p>
<form method="GET">
<input type="text" name="id" class="form-control" placeholder="Number" required />
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
</form>
<?php } ?>
</div>
</div>
<?php
} }
} else { } else {
if (Machine::exists($_GET["id"])) { if (Component::exists($_GET["id"])) {
$machine = new Machine($_GET['id']);
} else if (Component::exists($_GET["id"])) {
$component = new Component($_GET["id"]); $component = new Component($_GET["id"]);
$mid = $component->getMachineID(); $mid = $component->getMachineID();
if (!empty($mid) && Machine::exists($mid)) { if (!empty($mid) && Machine::exists($mid)) {
$machine = new Machine($mid); $machine = new Machine($mid);
} else { } else {
// component exists but isn't attached to a machine // component exists but isn't attached to a machine
?> $html = '<div class="alert alert-info">
<div class="card"> <i class="fas fa-info-circle"></i> ' . $publicsettings["Component exist but isn't attached to a machine"]
<h3 class="card-header d-flex"> . '</div>
<div>
<i class="fas fa-memory"></i> <?php echo $component->getTypeName(); ?> Info
</div>
</h3>
<div class="card-body">
<div class="alert alert-info">
<i class="fas fa-info-circle"></i> This component ID exists in the system but has no associated device.
</div>
<div class="row"> <div class="row">
<div class="col-12 mb-3"> <div class="col-12 mb-3">
<div class="list-group"> <div class="list-group">
<div class="list-group-item"> <div class="list-group-item">'
<b><?php $Strings->get("ID"); ?></b>: <?php echo htmlspecialchars($component->getID()); ?> . $component->toHTML(true)
</div> . '</div></div></div></div>';
<?php if (!empty($component->getModel())) { ?> printCard('<i class="fas fa-memory"></i> ' . $Strings->get("Component", false) . ' #' . $component->getID(), [$html, getSearchBox()]);
<div class="list-group-item"><b><?php $Strings->get("Model"); ?></b>: <?php echo htmlspecialchars($component->getModel()); ?></div>
<?php
}
if (!empty($component->getCapacity())) {
?>
<div class="list-group-item"><b><?php $Strings->get("Capacity"); ?></b>: <?php echo htmlspecialchars($component->getCapacity()); ?></div>
<?php
}
if (!empty($component->getSerial())) {
?>
<div class="list-group-item"><b><?php $Strings->get("Serial"); ?></b>: <?php echo htmlspecialchars($component->getSerial()); ?></div>
<?php
}
if (!empty($component->getTestedDate())) {
?>
<div class="list-group-item"><b><?php $Strings->get("Tested On"); ?></b>: <?php echo date($SETTINGS["date_format"], strtotime($component->getTestedDate())); ?></div>
<?php
}
if (!empty($component->getPrice())) {
?>
<div class="list-group-item"><b><?php $Strings->get("Price"); ?></b>: $<?php echo number_format($component->getPrice(), 2); ?></div>
<?php
}
if (!empty($component->getManufacturer())) {
?>
<div class="list-group-item"><b><?php $Strings->get("Manufacturer"); ?></b>: <?php echo htmlspecialchars($component->getManufacturer()); ?></div>
<?php
}
if (!empty($component->getPublicNotes())) {
?>
<div class="list-group-item">
<b>Notes:</b><br>
<div class="ml-3"><?php echo htmlspecialchars($component->getPublicNotes()); ?></div>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
<?php /* Hide this box if we're embedded in another page */ if (!isset($_GET["embed"])) { ?>
<div class="card-body">
<p>
Look up another device:
</p>
<form method="GET">
<input type="text" name="id" class="form-control" placeholder="<?php echo $SETTINGS["branding"]["shortmachineid"]; ?>" required />
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
</form>
</div>
<?php } ?>
</div>
<?php
} }
} else { } else {
$machine = new Machine(Machine::getIDFromSerial($_GET['id'])); if (Machine::exists($_GET["id"])) {
} $machine = new Machine($_GET['id']);
?> } else {
<div class="card"> $machine = new Machine(Machine::getIDFromSerial($_GET['id']));
<h3 class="card-header d-flex"> }
<div>
<i class="<?php echo $machine->getIcon(); ?>"></i> <?php echo $machine->getTypeLabel(); ?> Info
</div>
</h3>
<div class="card-body">
<div class="row">
<div class="col-12 mb-3">
<div class="list-group">
<div class="list-group-item">
<b><?php $Strings->get("ID"); ?></b>: <?php echo htmlspecialchars($machine->getID()); ?>
</div>
<?php if (!empty($machine->getOS())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("OS/Software"); ?></b>: <?php echo htmlspecialchars($machine->getOS()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getSerial())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Serial"); ?></b>: <?php echo htmlspecialchars($machine->getSerial()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getManufacturer())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Manufacturer"); ?></b>: <?php echo htmlspecialchars($machine->getManufacturer()); ?>
</div>
<?php } ?>
<?php if (!empty($machine->getModel())) { ?>
<div class="list-group-item">
<b><?php $Strings->get("Model"); ?></b>: <?php echo htmlspecialchars($machine->getModel()); ?>
</div>
<?php } ?>
<?php
if ($machine->getCondition() > 0) {
?>
<div class="list-group-item">
<b><?php $Strings->get("Condition"); ?></b>: <?php
$val = $machine->getCondition();
$filled = floor($val);
$empty = 10;
while ($filled > 0) {
$filled--;
$empty--;
echo "<i class=\"fas fa-star\"></i> ";
}
if ($val - floor($val) > 0.75) {
$empty--;
echo "<i class=\"fas fa-star\"></i> ";
} else if ($val - floor($val) > 0.25) {
$empty--;
echo "<i class=\"fas fa-star-half-alt\"></i> ";
}
while ($empty > 0) {
$empty--;
echo "<i class=\"far fa-star\"></i> ";
}
echo " ($val/10)";
?>
</div>
<?php
}
?>
<?php
if ($machine->getPrice() > 0) {
?>
<div class="list-group-item">
<b><?php $Strings->get("Price"); ?></b>: $<?php echo number_format($machine->getPrice(), 2); ?>
</div>
<?php
}
?>
<?php
if (!empty($machine->getPublicNotes())) {
?>
<div class="list-group-item">
<b><?php $Strings->get("Notes"); ?></b>: <?php echo str_replace("\n", "\n<br>", htmlspecialchars($machine->getPublicNotes())); ?>
</div>
<?php
}
?>
</div>
</div>
<?php
$history = $machine->getEvents();
$events = [];
foreach ($history as $h) {
$events[] = $h;
}
if (count($events) > 0) {
?>
<div class="col-sm-6 mb-3">
<h6>Events:</h6>
<div class="list-group">
<?php
foreach ($history as $h) {
echo "<div class=\"list-group-item\">\n";
echo "<b>" . $h->getName() . "</b> on " . date($SETTINGS["datetime_format"], strtotime($h->getDate())) . "<br />\n";
if (!empty($h->getPublicNotes())) {
echo "<div><b>Notes:</b><br /><div class=\"ml-3\">" . htmlspecialchars($h->getPublicNotes()) . "</div></div>";
}
echo "\n</div>\n";
}
?>
</div>
</div>
<?php
}
$components = $machine->getComponents();
if (count($components) > 0) {
?>
<div class="col-sm-6 mb-3">
<h6>Components:</h6>
<div class="list-group">
<?php
foreach ($components as $c) {
?>
<div class = "list-group-item">
<b><?php echo $c->getTypeName(); ?></b><br />
<?php
if (!empty($c->getModel())) {
?>
<b><?php $Strings->get("Model"); ?></b>: <?php echo htmlspecialchars($c->getModel()); ?><br />
<?php
}
if (!empty($c->getCapacity())) { $eventshtml = "";
?> $history = $machine->getEvents();
<b><?php $Strings->get("Capacity"); ?></b>: <?php echo htmlspecialchars($c->getCapacity()); ?><br /> $events = [];
<?php foreach ($history as $h) {
} $events[] = $h;
}
if (count($events) > 0) {
$eventshtml = '<div class="col-sm-6 mb-3">
<h6>Events:</h6>
<div class="list-group">';
foreach ($history as $h) {
$eventshtml .= '<div class="list-group-item">'
. $h->toHTML(true)
. '</div>';
}
$eventshtml .= '</div></div>';
}
if (!empty($c->getSerial())) {
?>
<b><?php $Strings->get("Serial"); ?></b>: <?php echo htmlspecialchars($c->getSerial()); ?><br />
<?php
}
if (!empty($c->getTestedDate())) { $componentshtml = "";
?> $components = $machine->getComponents();
<b><?php $Strings->get("Tested On"); ?></b>: <?php echo date($SETTINGS["date_format"], strtotime($c->getTestedDate())); ?><br />
<?php
}
if (!empty($c->getPrice())) { if (count($components) > 0) {
?> $componentshtml = '<div class="col-sm-6 mb-3"><h6>Components:</h6><div class="list-group">';
<b><?php $Strings->get("Price"); ?></b>: $<?php echo number_format($c->getPrice(), 2); ?><br /> foreach ($components as $c) {
<?php $componentshtml .= '<div class = "list-group-item">'
} . $c->toHTML(true)
. '</div>';
}
$componentshtml .= '</div></div>';
}
if (!empty($c->getManufacturer())) { $body = [
?> '<div class="row"><div class="col-12 mb-3">'
<b><?php $Strings->get("Manufacturer"); ?></b>: <?php echo htmlspecialchars($c->getManufacturer()); ?><br /> . $machine->toHTMLListGroup(true)
<?php . '</div>'
} . $eventshtml
. $componentshtml
. "</div>",
getSearchBox(true)
];
if (!empty($c->getPublicNotes())) { printCard('<i class="' . $machine->getIcon() . '"></i> ' . $machine->getTypeLabel() . ' Info', $body);
?> }
<div>
<b>Notes:</b><br />
<div class="ml-3"><?php echo htmlspecialchars($c->getPublicNotes()); ?></div>
</div>
<?php } ?>
</div>
<?php } ?>
</div>
</div>
<?php
}
?>
</div>
</div>
<?php /* Hide this box if we're embedded in another page */ if (!isset($_GET["embed"])) { ?>
<div class="card-body">
<p>
Look up another device:
</p>
<form method="GET">
<input type="text" name="id" class="form-control" placeholder="<?php echo $SETTINGS["branding"]["shortmachineid"]; ?>" required />
<button type="submit" class="btn btn-primary btn-block mt-2">Get Info</button>
</form>
</div>
<?php } ?>
</div>
<?php
} }
?> ?>
</div> </div>

Loading…
Cancel
Save