diff --git a/sys0-code/api/uploader/cloudprint.php b/sys0-code/api/uploader/cloudprint.php
index 5b36f93..cd1adb1 100644
--- a/sys0-code/api/uploader/cloudprint.php
+++ b/sys0-code/api/uploader/cloudprint.php
@@ -6,5 +6,9 @@
}
$username=$_SESSION["username"];
$path = "/var/www/html/user_files/$username/";
- $_SESSION["current_file"]=$path.$_GET["file"];
+ $public_path = "/var/www/html/user_files/public/";
+ if($_GET["pc"]=="1")
+ $_SESSION["current_file"]=$public_path.$_GET["file"];
+ else
+ $_SESSION["current_file"]=$path.$_GET["file"];
?>
diff --git a/sys0-code/api/uploader/image_preview.php b/sys0-code/api/uploader/image_preview.php
index 1d22ad1..2fd3230 100644
--- a/sys0-code/api/uploader/image_preview.php
+++ b/sys0-code/api/uploader/image_preview.php
@@ -7,8 +7,10 @@ session_start();
exit;
}
$username=$_SESSION["username"];
-echo(get_base64_preview("/var/www/html/user_files/$username/".$_GET["file"]));
-
+if($_GET["pc"]=="1")
+ echo(get_base64_preview("/var/www/html/user_files/public/".$_GET["file"]));
+else
+ echo(get_base64_preview("/var/www/html/user_files/$username/".$_GET["file"]));
function get_base64_preview($filename){
$base64="";
$file=fopen($filename,"r");
diff --git a/sys0-code/app/overview.php b/sys0-code/app/overview.php
index 71e6d56..b8faf1a 100644
--- a/sys0-code/app/overview.php
+++ b/sys0-code/app/overview.php
@@ -469,43 +469,68 @@ document.addEventListener('DOMContentLoaded', () => {
Warteschlange
| Datei | Drucken auf Drucker | aus der Warteschlange entfernen |
");
- $last_id=0;
- $form_userid=0;
- $print_on=0;
- while($cnt!=0)
- {
- $sql="select id,filepath,from_userid,print_on from queue where id>$last_id order by id";
- $cancel=0;
- $stmt = mysqli_prepare($link, $sql);
- echo mysqli_error($link);
- mysqli_stmt_execute($stmt);
- mysqli_stmt_store_result($stmt);
- mysqli_stmt_bind_result($stmt, $queue_id,$filepath,$from_userid,$print_on);
- mysqli_stmt_fetch($stmt);
- $filepath=basename($filepath);
- $last_id=$queue_id;
- echo("| $filepath | ");
- if($print_on==-1)
- echo("Erster verfügbarer Drucker | ");
- else
- echo("$print_on | ");
- if($_SESSION["role"][3]==="1" or $_SESSION["id"]==$from_userid)
- echo(" |
");
+
+ $userid = $_SESSION["id"];
+ $cnt = 0;
+ $sql = "SELECT COUNT(*) FROM queue";
- $cnt--;
- }
- echo("
");
+ $stmt = mysqli_prepare($link, $sql);
+ mysqli_stmt_execute($stmt);
+ mysqli_stmt_bind_result($stmt, $cnt);
+ mysqli_stmt_fetch($stmt);
+ mysqli_stmt_close($stmt);
+
+ $last_id = 0;
+
+ echo "
+
+
+
+ | Datei |
+ Drucken auf Drucker |
+ Auftrag von |
+ Aus der Warteschlange entfernen |
+
+
+ ";
+
+ while ($cnt > 0) {
+ $sql = "SELECT q.id, q.filepath, q.from_userid, q.print_on, u.username
+ FROM queue q
+ JOIN users u ON q.from_userid = u.id
+ WHERE q.id > ?
+ ORDER BY q.id LIMIT 1";
+
+ $stmt = mysqli_prepare($link, $sql);
+ mysqli_stmt_bind_param($stmt, "i", $last_id);
+ mysqli_stmt_execute($stmt);
+ mysqli_stmt_bind_result($stmt, $queue_id, $filepath, $from_userid, $print_on, $from_user);
+ mysqli_stmt_fetch($stmt);
+ mysqli_stmt_close($stmt);
+
+ if (!$queue_id) break; // Exit if no more entries
+
+ $filepath = basename($filepath);
+ $last_id = $queue_id;
+
+ echo "
+ | {$filepath} |
+ " . ($print_on == -1 ? "Erster verfügbarer Drucker" : htmlspecialchars($print_on)) . " |
+ {$from_user} | ";
+
+ if ($_SESSION["role"][3] === "1" || $_SESSION["id"] == $from_userid) {
+ echo "
+
+ | ";
+ }
+ echo "
";
+
+ $cnt--;
+ }
+
+ echo "
";
?>
let cloudprint=1;");
- echo '';
+ echo '';
}else{
echo("");
}
@@ -96,6 +96,9 @@
if(item.error_status==0){
if(item.free==1){
option.textContent = `Drucker ${item.id} - ${item.color}`;
+ if(preselectId==null){
+ option.selected="true";
+ }
}else{
option.textContent = `Drucker ${item.id} - ${item.color} - Warteschlange`;
}
@@ -108,6 +111,44 @@
})
.catch(error => console.error("Error fetching data:", error));
});
+ async function reload_printer_selection(){
+ document.getElementById("selectOption").innerHTML = "";
+ const selectElement = document.getElementById("selectOption");
+ const apiUrl = "/api/uploader/fetch_printers.php"; // Replace with your actual API URL
+ function getUrlParam(name) {
+ const urlParams = new URLSearchParams(window.location.search);
+ return urlParams.get(name);
+ }
+
+ const preselectId = getUrlParam("preselect"); // Get "preselect" value from URL
+ const option_1 = document.createElement("option");
+ option_1.value = "not_set";
+ option_1.textContent = "Bitte wähle einen Drucker";
+ selectElement.appendChild(option_1);
+ fetch(apiUrl)
+ .then(response => response.json())
+ .then(data => {
+ data.forEach(item => {
+ const option = document.createElement("option");
+ option.value = item.id;
+ if(item.error_status==0){
+ if(item.free==1){
+ option.textContent = `Drucker ${item.id} - ${item.color}`;
+ if(preselectId==null){
+ option.selected="true";
+ }
+ }else{
+ option.textContent = `Drucker ${item.id} - ${item.color} - Warteschlange`;
+ }
+ if (item.id == preselectId) {
+ option.selected = true;
+ }
+ selectElement.appendChild(option);
+ }
+ });
+ })
+ .catch(error => console.error("Error fetching data:", error));
+ }
async function start_upload(use_checks){
document.getElementById("close_progress_modal2").click();
//main function handles the steps from user pressing upload button via checking params to starting job via api
@@ -142,7 +183,7 @@
}
}else{
//just tell the server what the file is.
- await fetch("/api/uploader/cloudprint.php?file=");
+ await fetch("/api/uploader/cloudprint.php?file=&pc=");
}
global_error="";
//check if there is a reservation ongoing during this print
@@ -208,6 +249,7 @@
return;
}
show_close_button();
+ reload_printer_selection();
}
function add_circumvent_link(progressContent) {