Initial commit
This commit is contained in:
230
pagecontent/program-editor.php
Executable file
230
pagecontent/program-editor.php
Executable file
@@ -0,0 +1,230 @@
|
||||
<?php
|
||||
|
||||
// Diese Seite lädt alle (Unter)Seiten des Programmeditors
|
||||
|
||||
session_start();
|
||||
$db = new SQLite3('../db-test/test.db');
|
||||
|
||||
$view = $_GET["view"];
|
||||
$meta = $_GET["meta"];
|
||||
|
||||
$_SESSION["meta"]=$meta;
|
||||
|
||||
$plug = json_decode(file_get_contents("../settings.json"), true)["plug"];
|
||||
|
||||
|
||||
switch($view) {
|
||||
default: // Standardseite (Übersicht)
|
||||
?>
|
||||
<div class="content-header">Programm-Editor - Übersicht</div>
|
||||
<div class="action-menu">
|
||||
<img src="/vendor/icons/plus.svg" onclick="window.location.href='#program-editor'; pageload('add');" />
|
||||
</div>
|
||||
<div class="plug-table">
|
||||
<?php
|
||||
|
||||
// Hole die Programme aus der Datenbank
|
||||
$result = $db->query("SELECT * FROM programs WHERE plug_id = '" . $plug . "';");
|
||||
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
|
||||
$results = true;
|
||||
?>
|
||||
<div class="row">
|
||||
<?php
|
||||
print('
|
||||
<div class="label" style="width: 30%">
|
||||
<span>');
|
||||
// Stelle die einzelnen Programmziffern dar
|
||||
$program_identifiers = $db->query("SELECT * FROM program_id_bits WHERE program_id = '" . $row['id'] . "';");
|
||||
|
||||
while ($program_identifier = $program_identifiers->fetchArray(SQLITE3_ASSOC)) {
|
||||
echo '<span class="label-char">' . $program_identifier["value"] . '</span>';
|
||||
}
|
||||
print('
|
||||
</span>
|
||||
</div>');
|
||||
|
||||
// Die erforderlichen Brücken werden aus der Datenbank geholt (via program_bridge_relation)
|
||||
$bridges_url = [];
|
||||
$bridges = $db->query("SELECT * FROM program_bridge_relation WHERE program_id = '" . $row['id'] . "';");
|
||||
|
||||
while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {
|
||||
$bridges_url[] = $bridge["bridge_id"];
|
||||
}
|
||||
|
||||
$url = '../stecker.php?translate=true&data=' . urlencode(json_encode($bridges_url)); // URL parsen; Modus: Programmanzeige
|
||||
|
||||
print('<img id="bridge-editor-img" style="width: 55%" src="' . $url . '" />');
|
||||
// Aktionsmenü (mit hässlichem Inline-Code)
|
||||
print('
|
||||
<div class="options">
|
||||
<img src="/vendor/icons/edit-pencil.svg" onclick="window.location.href=\'#program-editor\'; pageload(\'edit\',\'' . $row['id'] . '\');"/>
|
||||
<img src="/vendor/icons/trash.svg"onclick="
|
||||
if(confirm(\'Sicher? Diese Änderung kann nicht rückgängig gemacht werden! (Die darin enthaltenen Brücken bleiben erhalten und werden nicht gelöscht )\') == true){
|
||||
save(\'program-editor\',\'remove\',\'' . $row['id'] . '\')
|
||||
}" />
|
||||
</div>
|
||||
');
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
// Wenn Ergebnisliste leer
|
||||
if($results != true) {
|
||||
print("<p align='center'>Es sind keine Programme für diesen Stecker gespeichert.<br>Eventuell muss ein anderer Stecker gewählt werden.</p>");
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Neues Hinzufügen eines Programms
|
||||
case "add":
|
||||
|
||||
$meta = json_decode(urldecode($meta), true);
|
||||
?>
|
||||
<div class="content-header">Programm-Editor - Neu anlegen</div>
|
||||
<img id="program-editor-img" src="../stecker.php" />
|
||||
<hr />
|
||||
<p>Zugehörige Brücken</p>
|
||||
<i>Wählen Sie die Brücken, welche von diesem Programm gefordert werden</i>
|
||||
|
||||
<div class="program-field">
|
||||
<?php
|
||||
|
||||
//zählen der Ergebnisse
|
||||
$result = $db->query("SELECT COUNT(*) as anzahl FROM bridges WHERE plug_id = '" . $plug . "';");
|
||||
$row = $result->fetchArray(SQLITE3_ASSOC);
|
||||
$results_full = $row['anzahl'];
|
||||
|
||||
$count = 0;
|
||||
|
||||
// Holen der Ergebnisse
|
||||
$result = $db->query("SELECT * FROM bridges WHERE plug_id = '" . $plug . "';");
|
||||
|
||||
// Zeigt ein horizonales Auswhl-Menü an, das alle Brücken als auswahl bietet
|
||||
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
|
||||
?>
|
||||
<label class="checkbox-container">
|
||||
<input onchange="programBridge(<?php echo $results_full; ?>)" type="checkbox" id="programSelect_<?php echo $count; ?>" value="<?php echo $row['id']; ?>">
|
||||
<span class="checkbox-text">
|
||||
<?php echo $row['id']; ?>
|
||||
</span>
|
||||
</label>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
|
||||
?>
|
||||
</div>
|
||||
<hr />
|
||||
<p>Name für dieses Programm</p>
|
||||
<i>
|
||||
Hinweis: Der Name kann aus Sicherheitsgründen im Nachhinein nicht mehr geändert werden. Bei dieser Stellwerksart ist die ID fünfstellig<br>Ein '-' kennzeichnet ein "Don't-Care". Darüber hinaus sind nur Großbuchstaben und Zahlen zugelassen
|
||||
</i>
|
||||
<div class="distinctly-input">
|
||||
<input oninput="distinctlyInput(1)" type="text" maxlength="1" class="code-input" id="distinctlyInput1">
|
||||
<input oninput="distinctlyInput(2)" type="text" maxlength="1" class="code-input" id="distinctlyInput2">
|
||||
<input oninput="distinctlyInput(3)" type="text" maxlength="1" class="code-input" id="distinctlyInput3">
|
||||
<input oninput="distinctlyInput(4)" type="text" maxlength="1" class="code-input" id="distinctlyInput4">
|
||||
<input oninput="distinctlyInput(5)" type="text" maxlength="1" class="code-input" id="distinctlyInput5">
|
||||
</div>
|
||||
<hr />
|
||||
<p>Beschreibung für dieses Programm</p>
|
||||
<textarea id="program-description" placeholder="Wählen Sie eine möglichst präzise Beschreibung. Zum Beispiel: 'Relaisgruppe für eine nicht isolierte Weiche, die eine einfache Kreuzungsweiche mit Bogenfahrt über den Plusstrang ist'"></textarea>
|
||||
<hr />
|
||||
<div class="save-button" onclick="save('program-editor','add',<?php echo $results_full; ?>)"><img src="/vendor/icons/floppy-disk.svg" \>Speichern</div>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case "edit":
|
||||
$meta = json_decode(urldecode($meta), true);
|
||||
?>
|
||||
<div class="content-header">Programm-Editor - Bearbeiten</div>
|
||||
<?php
|
||||
$bridges_url = [];
|
||||
|
||||
$bridges = $db->query("SELECT * FROM program_bridge_relation WHERE program_id = '" . $meta . "';");
|
||||
|
||||
while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {
|
||||
|
||||
$bridges_url[] = $bridge["bridge_id"];
|
||||
|
||||
}
|
||||
|
||||
$url = '../stecker.php?translate=true&data=' . urlencode(json_encode($bridges_url)); // URL parsen
|
||||
|
||||
print('<img id="program-editor-img" src="../stecker.php?translate=true&data=' . $url . '" />');
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<hr />
|
||||
<p>Zugehörige Brücken</p>
|
||||
<i>Wählen Sie die Brücken, welche von diesem Programm gefordert werden</i>
|
||||
|
||||
<div class="program-field">
|
||||
|
||||
<?php
|
||||
// Hole Anzahl der Brücken aus der DB
|
||||
$number_bridges = $db->query("SELECT COUNT(*) as anzahl FROM bridges WHERE plug_id = '" . $plug . "';");
|
||||
|
||||
$number_bridges = $number_bridges->fetchArray(SQLITE3_ASSOC);
|
||||
$number_bridges = $number_bridges['anzahl'];
|
||||
$number_joined = 0;
|
||||
|
||||
// Hole zunächst ALLE Brücken aus der DB
|
||||
$bridges = $db->query("SELECT * FROM bridges WHERE plug_id = '" . $plug . "';");
|
||||
|
||||
while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {
|
||||
|
||||
// schaue nun, ob diese Brücke Teil des Programms ist
|
||||
$bridges_contained = $db->query("SELECT COUNT(*) as anzahl FROM program_bridge_relation WHERE plug_id = '" . $plug . "' and bridge_id = '" . $bridge["id"] . "' and program_id = '" . $meta . "';");
|
||||
|
||||
$row = $bridges_contained->fetchArray(SQLITE3_ASSOC);
|
||||
$number = $row['anzahl'];
|
||||
|
||||
// Die Anzahl gibt Aufschlus darüber, ob Brücke von Programm gefordert ist -> wenn schon vorhanden, markiere diese Brücke schon vor ("checked"-Attribut)
|
||||
?>
|
||||
<label class="checkbox-container">
|
||||
<input onchange="programBridge(<?php echo $number_bridges; ?>)" type="checkbox" <?php if($number > 0) { echo "checked"; } ?> id="programSelect_<?php echo $number_joined; ?>" value="<?php echo $bridge["id"]; ?>">
|
||||
<span class="checkbox-text">
|
||||
<?php echo $bridge["id"]; ?>
|
||||
</span>
|
||||
</label>
|
||||
<?php
|
||||
|
||||
$number_joined++;
|
||||
}
|
||||
|
||||
?>
|
||||
</div>
|
||||
<hr />
|
||||
<p>Name für dieses Programm</p>
|
||||
<i>Darf auf Sicherheitsgründen nicht mehr geändert werden</i>
|
||||
|
||||
<div class="distinctly-input">
|
||||
<?php
|
||||
// Hole die ganzen Programmbezeichner raus aus der DB
|
||||
$program_identifiers = $db->query("SELECT * FROM program_id_bits WHERE program_id = '" . $meta . "' ORDER BY position;");
|
||||
while ($program_identifier = $program_identifiers->fetchArray(SQLITE3_ASSOC)) {
|
||||
echo '<input type="text" maxlength="1" value="' . $program_identifier["value"] . '" disabled class="code-input">';
|
||||
}
|
||||
|
||||
// Vorausgefüllte Programmbezeichnung
|
||||
$description = ($row = $db->querySingle("SELECT program_description FROM programs WHERE id = '$meta' and plug_id = '$plug'", true)) ? $row['program_description'] : null;
|
||||
|
||||
?>
|
||||
</div>
|
||||
<hr />
|
||||
<p>Beschreibung für dieses Programm</p>
|
||||
<textarea id="program-description" value="Value" placeholder="Wählen Sie eine möglichst präzise Beschreibung. Zum Beispiel: 'Relaisgruppe für eine nicht isolierte Weiche, die eine einfache Kreuzungsweiche mit Bogenfahrt über den Plusstrang ist'"><?php echo $description; ?></textarea>
|
||||
<hr />
|
||||
<div class="save-button" onclick="save('program-editor','edit',<?php echo $number_bridges; ?>)"><img src="/vendor/icons/floppy-disk.svg" \>Speichern</div>
|
||||
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
Reference in New Issue
Block a user