From 693d7f4acfbd984ffb5d13851a8c91650a01195a Mon Sep 17 00:00:00 2001
From: iBNu Maksum <me@ibnux.net>
Date: Tue, 18 Feb 2025 14:28:55 +0700
Subject: [PATCH] widget multiple section

---
 system/controllers/widgets.php            |  2 +
 system/lan/english.json                   | 11 +++++-
 ui/ui/admin/dashboard_widget.tpl          | 46 ++++++++++++++++++-----
 ui/ui/admin/settings/widgets.tpl          | 20 ++++------
 ui/ui/admin/settings/widgets_add_edit.tpl |  9 +++--
 5 files changed, 62 insertions(+), 26 deletions(-)

diff --git a/system/controllers/widgets.php b/system/controllers/widgets.php
index d03fbcd2..c55edf15 100644
--- a/system/controllers/widgets.php
+++ b/system/controllers/widgets.php
@@ -105,6 +105,8 @@ if ($action == 'add') {
     r2(getUrl('widgets'), 's', 'Widget order Saved Successfully');
 } else {
     $widgets = ORM::for_table('tbl_widgets')->selects("position", 1)->order_by_asc("orders")->find_many();
+    $max = ORM::for_table('tbl_widgets')->max('position');
     $ui->assign('widgets', $widgets);
+    $ui->assign('max', $max);
     $ui->display('admin/settings/widgets.tpl');
 }
diff --git a/system/lan/english.json b/system/lan/english.json
index 9ac639f1..ddbe684e 100644
--- a/system/lan/english.json
+++ b/system/lan/english.json
@@ -1040,5 +1040,14 @@
     "Not_all_widgets_require_content__HTML_widgets_require_content__either_text_or_PHP_code__Please_be_careful_when_writing_this_content_": "Not all widgets require content. HTML widgets require content, either text or PHP code. Please be careful when writing this content.",
     "Area_Fields": "Area Fields",
     "Add_new_widget": "Add new widget",
-    "Tambah": "Tambah"
+    "Tambah": "Tambah",
+    "All": "All",
+    "Enter_your_message_here___": "Enter your message here...",
+    "Close": "Close",
+    "Please_select_at_least_one_customer_to_send_a_message_": "Please select at least one customer to send a message.",
+    "Please_enter_a_message_to_send_": "Please enter a message to send.",
+    "Sending___": "Sending...",
+    "Message_sent_successfully_": "Message sent successfully.",
+    "Error_sending_message__": "Error sending message: ",
+    "Failed_to_send_the_message__Please_try_again_": "Failed to send the message. Please try again."
 }
\ No newline at end of file
diff --git a/ui/ui/admin/dashboard_widget.tpl b/ui/ui/admin/dashboard_widget.tpl
index af3fba80..90281c54 100644
--- a/ui/ui/admin/dashboard_widget.tpl
+++ b/ui/ui/admin/dashboard_widget.tpl
@@ -10,17 +10,45 @@
 
 
 
-{showWidget widgets=$widgets pos=1}
-<div class="row">
-    <div class="col-md-7">
-        {showWidget widgets=$widgets pos=2}
+{if $_c['dashboard'] == '1.55.1'}
+    {showWidget widgets=$widgets pos=1}
+    <div class="row">
+        <div class="col-md-6">
+            {showWidget widgets=$widgets pos=2}
+        </div>
+        <div class="col-md-6">
+            {showWidget widgets=$widgets pos=3}
+        </div>
     </div>
-    <div class="col-md-5">
-        {showWidget widgets=$widgets pos=3}
+    {showWidget widgets=$widgets pos=4}
+{elseif $_c['dashboard'] == '1.57.1'}
+    {showWidget widgets=$widgets pos=1}
+    <div class="row">
+        <div class="col-md-5">
+            {showWidget widgets=$widgets pos=2}
+        </div>
+        <div class="col-md-7">
+            {showWidget widgets=$widgets pos=3}
+        </div>
     </div>
-</div>
-{showWidget widgets=$widgets pos=4}
-
+    {showWidget widgets=$widgets pos=4}
+{elseif $_c['dashboard'] == '1.1.1.1'}
+    {showWidget widgets=$widgets pos=1}
+    {showWidget widgets=$widgets pos=2}
+    {showWidget widgets=$widgets pos=3}
+    {showWidget widgets=$widgets pos=4}
+{else}
+    {showWidget widgets=$widgets pos=1}
+    <div class="row">
+        <div class="col-md-7">
+            {showWidget widgets=$widgets pos=2}
+        </div>
+        <div class="col-md-5">
+            {showWidget widgets=$widgets pos=3}
+        </div>
+    </div>
+    {showWidget widgets=$widgets pos=4}
+{/if}
 
 {if $_c['new_version_notify'] != 'disable'}
     <script>
diff --git a/ui/ui/admin/settings/widgets.tpl b/ui/ui/admin/settings/widgets.tpl
index 76c749ad..27069371 100644
--- a/ui/ui/admin/settings/widgets.tpl
+++ b/ui/ui/admin/settings/widgets.tpl
@@ -22,11 +22,12 @@
                                     </td>
                                     <td width="130">
                                         <div class="btn-group btn-group-justified" role="group">
-                                            <a href="{Text::url('widgets/edit/', $w['id'])}" class="btn btn-sm btn-success">{Lang::T("Edit")}</a>
                                             <a href="{Text::url('widgets/delete/', $w['id'])}"
                                                 onclick="return ask(this, 'Delete this widget?')" class="btn btn-sm btn-danger">
                                                 <i class="glyphicon glyphicon-trash"></i>
                                             </a>
+                                            <a href="{Text::url('widgets/edit/', $w['id'])}"
+                                                class="btn btn-sm btn-success">{Lang::T("Edit")}</a>
                                         </div>
                                     </td>
                                 </tr>
@@ -48,18 +49,11 @@
 {/function}
 
 <div class="row">
-    <div class="col-md-6 col-lg-4">
-        {showWidget widgets=$widgets pos=1}
-    </div>
-    <div class="col-md-6 col-lg-4">
-        {showWidget widgets=$widgets pos=2}
-    </div>
-    <div class="col-md-6 col-lg-4">
-        {showWidget widgets=$widgets pos=3}
-    </div>
-    <div class="col-md-6 col-lg-4">
-        {showWidget widgets=$widgets pos=4}
-    </div>
+    {for $pos=1 to $max}
+        <div class="col-md-6 col-lg-4">
+            {showWidget widgets=$widgets pos=$pos}
+        </div>
+    {/for}
 </div>
 
 {include file="sections/footer.tpl"}
\ No newline at end of file
diff --git a/ui/ui/admin/settings/widgets_add_edit.tpl b/ui/ui/admin/settings/widgets_add_edit.tpl
index 18af55e5..390329a1 100644
--- a/ui/ui/admin/settings/widgets_add_edit.tpl
+++ b/ui/ui/admin/settings/widgets_add_edit.tpl
@@ -2,7 +2,7 @@
 
 <form method="post" action="{Text::url('widgets/', $do)}">
     <div class="row">
-        <div class="col-md-6 col-md-offset-3">
+        <div class="col-md-12">
             <div class="panel panel-info">
                 <div class="panel-heading">{if $do == 'add'}{Lang::T('Tambah')}{else}{Lang::T('Edit')}{/if} Widget</div>
                 <div class="panel-body">
@@ -40,7 +40,7 @@
                         <label class="col-md-3 control-label">{Lang::T('Position')}</label>
                         <div class="col-md-5">
                             <select name="position" id="position" class="form-control">
-                                {for $pos=1 to 4}
+                                {for $pos=1 to 12}
                                     <option value="{$pos}" {if $widget['position'] eq $pos}selected="selected" {/if}>
                                         Area {$pos}
                                     </option>
@@ -66,7 +66,7 @@
                     <div class="form-group">
                         <label class="col-md-3 control-label">{Lang::T('Content')}</label>
                         <div class="col-md-9">
-                            <textarea name="content" rows="5" id="content" class="form-control">{$widget['content']}</textarea>
+                            <textarea name="content" rows="15" id="summernote" class="form-control">{$widget['content']}</textarea>
                             <p class="help-block">{Lang::T("Not all widgets require content. HTML widgets require content, either text or PHP code. Please be careful when writing this content.")}</p>
                         </div>
                     </div>
@@ -93,6 +93,9 @@
         var name = sel.options[sel.selectedIndex].text;
         document.getElementById('title').value = name;
     }
+    document.addEventListener("DOMContentLoaded", function() {
+        $('#summernote').summernote();
+    });
 </script>
 
 {include file="sections/footer.tpl"}