diff --git a/public/userarea/ajax_drag_programmazione.php b/public/userarea/ajax_drag_programmazione.php
new file mode 100644
index 0000000..842ca80
--- /dev/null
+++ b/public/userarea/ajax_drag_programmazione.php
@@ -0,0 +1,136 @@
+getConnection();
+
+$STATUS_PROGRAMMATO = 6;
+$STATUS_DA_PROGRAMMARE = 1;
+
+$jsonFile = __DIR__ . "/data/production_priority.json";
+
+/* -------------------------------
+ JSON HELPERS
+---------------------------------*/
+function loadPriority()
+{
+ global $jsonFile;
+ if (!file_exists($jsonFile)) return [];
+ return json_decode(file_get_contents($jsonFile), true) ?: [];
+}
+
+function savePriority($arr)
+{
+ global $jsonFile;
+ file_put_contents($jsonFile, json_encode($arr, JSON_PRETTY_PRINT));
+}
+
+/* -------------------------------
+ LOAD: PROGRAMMATI
+---------------------------------*/
+if ($_GET['mode'] === 'planned') {
+
+ $priority = loadPriority();
+ $map = [];
+ foreach ($priority as $p) $map[$p['id']] = $p['priority'];
+
+ $sql = "SELECT p.*, m.nome AS matrice, ms.nome AS mescola,
+ l.name AS linea, c.nome AS cliente
+ FROM productiondata p
+ LEFT JOIN matrice m ON p.idmatrice = m.id
+ LEFT JOIN mescole ms ON p.idmescola = ms.id
+ LEFT JOIN production_lines l ON p.id_linea = l.id
+ LEFT JOIN clients c ON p.id_cliente = c.id
+ WHERE p.id_status = :s";
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute(['s' => $STATUS_PROGRAMMATO]);
+ $rows = $stmt->fetchAll();
+
+ // Ordina per priority
+ usort($rows, function ($a, $b) use ($map) {
+ return ($map[$a['id']] ?? 9999) <=> ($map[$b['id']] ?? 9999);
+ });
+
+ ob_start();
+ foreach ($rows as $r):
+ $prio = $map[$r['id']] ?? '-';
+?>
+
+
= $prio ?>
+
= date('d/m/Y', strtotime($r['Data'])) ?>
+
= $r['matrice'] ?>
+
= $r['mescola'] ?>
+
= $r['linea'] ?>
+
= $r['cliente'] ?? '-' ?>
+
+ ob_get_clean()]);
+ exit;
+}
+
+/* -------------------------------
+ LOAD: DA PROGRAMMARE
+---------------------------------*/
+if ($_GET['mode'] === 'to_plan') {
+
+ $sql = "SELECT p.*, m.nome AS matrice, ms.nome AS mescola,
+ l.name AS linea, c.nome AS cliente
+ FROM productiondata p
+ LEFT JOIN matrice m ON p.idmatrice = m.id
+ LEFT JOIN mescole ms ON p.idmescola = ms.id
+ LEFT JOIN production_lines l ON p.id_linea = l.id
+ LEFT JOIN clients c ON p.id_cliente = c.id
+ WHERE p.id_status = :s
+ ORDER BY p.Data ASC";
+
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute(['s' => $STATUS_DA_PROGRAMMARE]);
+
+ ob_start();
+ foreach ($stmt as $r): ?>
+
\ No newline at end of file
diff --git a/public/userarea/components/photo_modal.php b/public/userarea/components/photo_modal.php
new file mode 100644
index 0000000..9cf5401
--- /dev/null
+++ b/public/userarea/components/photo_modal.php
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
Carica Foto
+
+
+
+ ✅ Foto caricata correttamente.
+
+
+
+ ⚠️ Errore durante il caricamento.
+
+
+
+
+
+
+
Foto già registrate per questa tipologia
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/userarea/edit_linea.php b/public/userarea/edit_linea.php
index 90264b3..cae8e68 100644
--- a/public/userarea/edit_linea.php
+++ b/public/userarea/edit_linea.php
@@ -115,6 +115,11 @@
+