From 212c34d77918cb1c8ce6f870e8a1d6444b9009aa Mon Sep 17 00:00:00 2001
From: Erik Thuning <boooink@gmail.com>
Date: Mon, 26 Feb 2024 17:22:26 +0100
Subject: [PATCH] Discarded products are now displayed in a read-only format.
 Also added a fragment for a public view of a product

---
 html/en/fragments.html  | 120 ++++++++++++++++++++++++++++++++++++++++
 html/sv/fragments.html  | 120 ++++++++++++++++++++++++++++++++++++++++
 include/ProductPage.php |  16 +++++-
 style.css               |   4 ++
 4 files changed, 257 insertions(+), 3 deletions(-)

diff --git a/html/en/fragments.html b/html/en/fragments.html
index 252b8db..d42e2e7 100644
--- a/html/en/fragments.html
+++ b/html/en/fragments.html
@@ -307,6 +307,109 @@
   </form>
 </div>
 
+¤¤ product_details_readonly ¤¤
+<div id="product-details">
+  <h2>Product details</h2>
+  <div id="product-data"
+       class="data">
+    <table>
+      <tbody class="single fixedwidth">
+        <tr>
+          <td>
+            Name:
+          </td>
+          <td>
+            ¤name¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Manufacturer:
+          </td>
+          <td>
+            ¤brand¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Invoice number:
+          </td>
+          <td>
+            ¤invoice¤
+          </td>
+        </tr>
+        <tr id="before_info">
+          <td>
+            Serial number:
+          </td>
+          <td>
+            ¤serial¤
+          </td>
+        </tr>
+        ¤info¤
+        <tr>
+          <td>
+            Tags:
+          </td>
+          <td id="tags">
+            ¤tags¤
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
+<div id="product-attachments"
+     class="¤hidden¤">
+  <h2>Attachments</h2>
+  ¤attachments¤
+</div>
+
+¤¤ product_details_public ¤¤
+<div id="product-details">
+  <h2>Product details</h2>
+  <div id="product-data"
+       class="data">
+    <table>
+      <tbody class="single fixedwidth">
+        <tr>
+          <td>
+            Name:
+          </td>
+          <td>
+            ¤name¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Manufacturer:
+          </td>
+          <td>
+            ¤brand¤
+          </td>
+        </tr>
+        <tr id="before_info">
+          <td>
+            Serial number:
+          </td>
+          <td>
+            ¤serial¤
+          </td>
+        </tr>
+        ¤info¤
+        <tr>
+          <td>
+            Tags:
+          </td>
+          <td id="tags">
+            ¤tags¤
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
+
 ¤¤ product_meta ¤¤
 <div id="product-history">
   <h2>Product history</h2>
@@ -418,6 +521,16 @@
   </td>
 </tr>
 
+¤¤ info_item_readonly ¤¤
+<tr>
+  <td>
+    ¤name¤:
+  </td>
+  <td>
+    ¤value¤
+  </td>
+</tr>
+
 ¤¤ tag ¤¤
 <p>
   <span class="tag">
@@ -432,6 +545,13 @@
   </span>
 </p>
 
+¤¤ tag_readonly ¤¤
+<p>
+  <span class="tag">
+    ¤tag¤
+  </span>
+</p>
+
 ¤¤ user_details ¤¤
 <div id="user-details">
   <form onSubmit="JavaScript:updateUser(event)">
diff --git a/html/sv/fragments.html b/html/sv/fragments.html
index 6fe9d30..c65e879 100644
--- a/html/sv/fragments.html
+++ b/html/sv/fragments.html
@@ -307,6 +307,109 @@
   </form>
 </div>
 
+¤¤ product_details_readonly ¤¤
+<div id="product-details">
+  <h2>Artikeldata</h2>
+  <div id="product-data"
+       class="data">
+    <table>
+      <tbody class="single fixedwidth">
+        <tr>
+          <td>
+            Namn:
+          </td>
+          <td>
+            ¤name¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Tillverkare:
+          </td>
+          <td>
+            ¤brand¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Fakturanummer:
+          </td>
+          <td>
+            ¤invoice¤
+          </td>
+        </tr>
+        <tr id="before_info">
+          <td>
+            Serienummer:
+          </td>
+          <td>
+            ¤serial¤
+          </td>
+        </tr>
+        ¤info¤
+        <tr>
+          <td>
+            Taggar:
+          </td>
+          <td id="tags">
+            ¤tags¤
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
+<div id="product-attachments"
+     class="¤hidden¤">
+  <h2>Bilagor</h2>
+  ¤attachments¤
+</div>
+
+¤¤ product_details_public ¤¤
+<div id="product-details">
+  <h2>Artikeldata</h2>
+  <div id="product-data"
+       class="data">
+    <table>
+      <tbody class="single fixedwidth">
+        <tr>
+          <td>
+            Namn:
+          </td>
+          <td>
+            ¤name¤
+          </td>
+        </tr>
+        <tr>
+          <td>
+            Tillverkare:
+          </td>
+          <td>
+            ¤brand¤
+          </td>
+        </tr>
+        <tr id="before_info">
+          <td>
+            Serienummer:
+          </td>
+          <td>
+            ¤serial¤
+          </td>
+        </tr>
+        ¤info¤
+        <tr>
+          <td>
+            Taggar:
+          </td>
+          <td id="tags">
+            ¤tags¤
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</div>
+
 ¤¤ product_meta ¤¤
 <div id="product-history">
   <h2>Artikelhistorik</h2>
@@ -418,6 +521,16 @@
   </td>
 </tr>
 
+¤¤ info_item_readonly ¤¤
+<tr>
+  <td>
+    ¤name¤:
+  </td>
+  <td>
+    ¤value¤
+  </td>
+</tr>
+
 ¤¤ tag ¤¤
 <p>
   <span class="tag">
@@ -432,6 +545,13 @@
   </span>
 </p>
 
+¤¤ tag_readonly ¤¤
+<p>
+  <span class="tag">
+    ¤tag¤
+  </span>
+</p>
+
 ¤¤ user_details ¤¤
 <div id="user-details">
   <form onSubmit="JavaScript:updateUser(event)">
diff --git a/include/ProductPage.php b/include/ProductPage.php
index c1904bf..9939ae7 100644
--- a/include/ProductPage.php
+++ b/include/ProductPage.php
@@ -44,17 +44,27 @@ class ProductPage extends Page {
     }
     
     private function build_product_form() {
+        $discarded = $this->product->get_discardtime();
+
+        $info_item_fragment = $this->fragments['info_item'];
+        $tag_fragment = $this->fragments['tag'];
+        $product_details_fragment = $this->fragments['product_details'];
+        if($discarded) {
+            $info_item_fragment = $this->fragments['info_item_readonly'];
+            $tag_fragment = $this->fragments['tag_readonly'];
+            $product_details_fragment = $this->fragments['product_details_readonly'];
+        }
         $info = '';
         foreach($this->product->get_info() as $key => $value) {
             $info .= replace(array('name' => ucfirst($key),
                                    'key' => $key,
                                    'value' => $value),
-                             $this->fragments['info_item']);
+                             $info_item_fragment);
         }
         $tags = '';
         foreach($this->escape_tags($this->product->get_tags()) as $tag) {
             $tags .= replace(array('tag' => ucfirst($tag)),
-                             $this->fragments['tag']);
+                             $tag_fragment);
         }
         $history = $this->build_history_table($this->product->get_history());
         $attachments = $this->build_attachment_list(
@@ -87,7 +97,7 @@ class ProductPage extends Page {
                 $fields['checkout_hidden'] = '';
             }
         }
-        $out = replace($fields, $this->fragments['product_details']);
+        $out = replace($fields, $product_details_fragment);
         $out .= replace($fields, $this->fragments['product_meta']);
         return $out;
     }
diff --git a/style.css b/style.css
index d3eeec8..bf7a753 100644
--- a/style.css
+++ b/style.css
@@ -145,6 +145,10 @@ input[type="text"].newfield {
     width: 11.5em;
 }
 
+tbody.fixedwidth > tr > td {
+    min-width: 11.5em;
+}
+
 input[type="text"].newtemplate {
     width: 8em;
 }