diff --git a/admin/modals/payment_provider/payment_provider_add.php b/admin/modals/payment_provider/payment_provider_add.php index 5f543a1d..c256708a 100644 --- a/admin/modals/payment_provider/payment_provider_add.php +++ b/admin/modals/payment_provider/payment_provider_add.php @@ -59,7 +59,7 @@ ob_start();
- + Will not show as an option at Checkout if invoice amount is above this number, 0 disables the threshold check. @@ -79,7 +79,7 @@ ob_start();
- + See here for the latest Stripe Fees. @@ -90,7 +90,7 @@ ob_start();
- + See here for the latest Stripe Fees. diff --git a/admin/modals/payment_provider/payment_provider_edit.php b/admin/modals/payment_provider/payment_provider_edit.php index f5e65cb6..154a6074 100644 --- a/admin/modals/payment_provider/payment_provider_edit.php +++ b/admin/modals/payment_provider/payment_provider_edit.php @@ -58,7 +58,7 @@ ob_start();
- + Will not show as an option at Checkout if above this number @@ -79,7 +79,7 @@ ob_start();
- + See here for the latest Stripe Fees. @@ -90,7 +90,7 @@ ob_start();
- + See here for the latest Stripe Fees. diff --git a/admin/settings_default.php b/admin/settings_default.php index 505b1e6f..9348925f 100644 --- a/admin/settings_default.php +++ b/admin/settings_default.php @@ -214,7 +214,7 @@ require_once "includes/inc_all_admin.php";
- + diff --git a/agent/files.php b/agent/files.php index 4387c524..cd41ea8c 100644 --- a/agent/files.php +++ b/agent/files.php @@ -1,12 +1,11 @@ 0) { - $sql_folder = mysqli_query($mysqli, "SELECT folder_name, parent_folder FROM folders WHERE folder_id = $folder_id"); +while ($breadcrumb_folder_id > 0) { + $sql_folder = mysqli_query($mysqli, "SELECT folder_name, parent_folder FROM folders WHERE folder_id = $breadcrumb_folder_id AND folder_client_id = $client_id"); if ($row_folder = mysqli_fetch_assoc($sql_folder)) { $folder_name = nullable_htmlentities($row_folder['folder_name']); $parent_folder = intval($row_folder['parent_folder']); - // Prepend the folder to the beginning of the array - array_unshift($folder_path, array('folder_id' => $folder_id, 'folder_name' => $folder_name)); + array_unshift($folder_path, [ + 'folder_id' => $breadcrumb_folder_id, + 'folder_name' => $folder_name + ]); - // Move up to the parent folder - $folder_id = $parent_folder; + $breadcrumb_folder_id = $parent_folder; } else { - // If the folder is not found, break the loop break; } } +// --------------------------------------------- +// Helper: unified folder tree (no folder_location) +// --------------------------------------------- +function is_ancestor_folder($folder_id, $current_folder_id, $client_id) { + global $mysqli; + + if ($current_folder_id == 0) { + return false; + } + if ($current_folder_id == $folder_id) { + return true; + } + + $result = mysqli_query($mysqli, "SELECT parent_folder FROM folders WHERE folder_id = $current_folder_id AND folder_client_id = $client_id"); + if ($row = mysqli_fetch_assoc($result)) { + $parent_folder_id = intval($row['parent_folder']); + return is_ancestor_folder($folder_id, $parent_folder_id, $client_id); + } else { + return false; + } +} + +function display_folders($parent_folder_id, $client_id, $indent = 0) { + global $mysqli, $get_folder_id, $session_user_role; + + $sql_folders = mysqli_query($mysqli, "SELECT * FROM folders WHERE parent_folder = $parent_folder_id AND folder_client_id = $client_id ORDER BY folder_name ASC"); + while ($row = mysqli_fetch_array($sql_folders)) { + $folder_id = intval($row['folder_id']); + $folder_name = nullable_htmlentities($row['folder_name']); + + // Count files in folder + $row_files = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('file_id') AS num FROM files WHERE file_folder_id = $folder_id AND file_client_id = $client_id AND file_archived_at IS NULL")); + $num_files = intval($row_files['num']); + + // Count documents in folder + $row_docs = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('document_id') AS num FROM documents WHERE document_folder_id = $folder_id AND document_client_id = $client_id AND document_archived_at IS NULL")); + $num_docs = intval($row_docs['num']); + + $num_total = $num_files + $num_docs; + + // Count subfolders + $subfolder_result = mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM folders WHERE parent_folder = $folder_id AND folder_client_id = $client_id"); + $subfolder_count = intval(mysqli_fetch_assoc($subfolder_result)['count']); + + echo ''; + } +} + +// --------------------------------------------- +// DATA LOAD +// view=1 (thumbs) uses original files-only query +// view=0 (list) loads ALL files+documents, merges, sorts in PHP +// --------------------------------------------- + +$items = []; +$num_rows = [0]; + +if ($view == 1) { + + // Thumbnail view - only image files, similar to original behavior + $query_images = "AND (file_ext LIKE 'JPG' OR file_ext LIKE 'jpg' OR file_ext LIKE 'JPEG' OR file_ext LIKE 'jpeg' OR file_ext LIKE 'png' OR file_ext LIKE 'PNG' OR file_ext LIKE 'webp' OR file_ext LIKE 'WEBP')"; + + if ($get_folder_id == 0 && isset($_GET["q"])) { + $sql = mysqli_query( + $mysqli, + "SELECT SQL_CALC_FOUND_ROWS * FROM files + LEFT JOIN users ON file_created_by = user_id + WHERE file_client_id = $client_id + AND file_archived_at IS NULL + AND (file_name LIKE '%$q%' OR file_ext LIKE '%$q%' OR file_description LIKE '%$q%') + $query_images + ORDER BY file_name ASC + LIMIT $record_from, $record_to" + ); + } else { + $sql = mysqli_query( + $mysqli, + "SELECT SQL_CALC_FOUND_ROWS * FROM files + LEFT JOIN users ON file_created_by = user_id + WHERE file_client_id = $client_id + AND file_folder_id = $folder_id + AND file_archived_at IS NULL + AND (file_name LIKE '%$q%' OR file_ext LIKE '%$q%' OR file_description LIKE '%$q%') + $query_images + ORDER BY file_name ASC + LIMIT $record_from, $record_to" + ); + } + + $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); + +} else { + + // -------- LIST VIEW: build unified items[] -------- + + // Folder filter + if ($get_folder_id == 0 && isset($_GET["q"])) { + $file_folder_snippet = ""; // search across all folders + $doc_folder_snippet = ""; + } else { + $file_folder_snippet = "AND file_folder_id = $folder_id"; + $doc_folder_snippet = "AND document_folder_id = $folder_id"; + } + + // Search filters + $safe_q = mysqli_real_escape_string($mysqli, $q); + + $file_search_snippet = ""; + if (!empty($q)) { + $file_search_snippet = "AND (file_name LIKE '%$safe_q%' OR file_ext LIKE '%$safe_q%' OR file_description LIKE '%$safe_q%')"; + } + + $doc_search_snippet = ""; + if (!empty($q)) { + $doc_search_snippet = "AND (MATCH(document_content_raw) AGAINST ('$safe_q') OR document_name LIKE '%$safe_q%')"; + } + + // Files query (NO limit - we'll paginate in PHP) + $sql_files = mysqli_query( + $mysqli, + "SELECT files.*, users.user_name + FROM files + LEFT JOIN users ON file_created_by = user_id + WHERE file_client_id = $client_id + AND file_archived_at IS NULL + $file_folder_snippet + $file_search_snippet" + ); + + // Documents query (NO limit - paginate in PHP) + $sql_documents = mysqli_query( + $mysqli, + "SELECT documents.*, users.user_name + FROM documents + LEFT JOIN users ON document_created_by = user_id + WHERE document_client_id = $client_id + AND document_archived_at IS NULL + $doc_folder_snippet + $doc_search_snippet" + ); + + // Normalize FILES into $items + while ($row = mysqli_fetch_assoc($sql_files)) { + $file_id = intval($row['file_id']); + $file_name = nullable_htmlentities($row['file_name']); + $file_description = nullable_htmlentities($row['file_description']); + $file_reference_name= nullable_htmlentities($row['file_reference_name']); + $file_ext = nullable_htmlentities($row['file_ext']); + $file_size = intval($row['file_size']); + $file_mime_type = nullable_htmlentities($row['file_mime_type']); + $file_uploaded_by = nullable_htmlentities($row['user_name']); + $file_created_at = nullable_htmlentities($row['file_created_at']); + + // determine icon + if ($file_ext == 'pdf') { + $file_icon = "file-pdf"; + } elseif (in_array($file_ext, ['gz','tar','zip','7z','rar'])) { + $file_icon = "file-archive"; + } elseif (in_array($file_ext, ['txt','md'])) { + $file_icon = "file-alt"; + } elseif ($file_ext == 'msg') { + $file_icon = "envelope"; + } elseif (in_array($file_ext, ['doc','docx','odt'])) { + $file_icon = "file-word"; + } elseif (in_array($file_ext, ['xls','xlsx','ods'])) { + $file_icon = "file-excel"; + } elseif (in_array($file_ext, ['pptx','odp'])) { + $file_icon = "file-powerpoint"; + } elseif (in_array($file_ext, ['mp3','wav','ogg'])) { + $file_icon = "file-audio"; + } elseif (in_array($file_ext, ['mov','mp4','av1'])) { + $file_icon = "file-video"; + } elseif (in_array($file_ext, ['jpg','jpeg','png','gif','webp','bmp','tif'])) { + $file_icon = "file-image"; + } else { + $file_icon = "file"; + } + + $items[] = [ + 'kind' => 'file', + 'id' => $file_id, + 'name' => $file_name, + 'description' => $file_description, + 'reference_name' => $file_reference_name, + 'icon' => $file_icon, + 'mime' => $file_mime_type, + 'size' => $file_size, + 'created_at' => $file_created_at, + 'created_by' => $file_uploaded_by, + ]; + } + + // Normalize DOCUMENTS into $items + while ($row = mysqli_fetch_assoc($sql_documents)) { + $document_id = intval($row['document_id']); + $document_name = nullable_htmlentities($row['document_name']); + $document_description = nullable_htmlentities($row['document_description']); + $document_created_by_name = nullable_htmlentities($row['user_name']); + $document_created_at = $row['document_created_at']; + + $items[] = [ + 'kind' => 'document', + 'id' => $document_id, + 'name' => $document_name, + 'description' => $document_description, + 'mime' => 'Document', + 'size' => null, + 'created_at' => $document_created_at, + 'created_by' => $document_created_by_name, + ]; + } + + // Sort combined items + $sort = isset($_GET['sort']) ? $_GET['sort'] : 'name'; + $order = isset($_GET['order']) ? $_GET['order'] : 'ASC'; + + usort($items, function($a, $b) use ($sort, $order) { + $direction = ($order === 'DESC') ? -1 : 1; + + if ($sort == 'created') { + $valA = strtotime($a['created_at']); + $valB = strtotime($b['created_at']); + } elseif ($sort == 'type') { + $valA = strtolower($a['mime']); + $valB = strtolower($b['mime']); + } elseif ($sort == 'size') { + $valA = (int)($a['size'] ?? 0); + $valB = (int)($b['size'] ?? 0); + } else { + // default: name + $valA = strtolower($a['name']); + $valB = strtolower($b['name']); + } + + if ($valA == $valB) { + return 0; + } + + return ($valA < $valB) ? -1 * $direction : 1 * $direction; + }); + + // Total items (for pagination footer) + $total_items = count($items); + $num_rows = [$total_items]; + + // Apply pagination slice + $items = array_slice($items, $record_from, $record_to); +} + +// --------------------------------------------- +// Root folder count (for "/" badge) +// --------------------------------------------- +$row_root_files = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('file_id') AS num FROM files WHERE file_folder_id = 0 AND file_client_id = $client_id AND file_archived_at IS NULL")); +$row_root_docs = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT('document_id') AS num FROM documents WHERE document_folder_id = 0 AND document_client_id = $client_id AND document_archived_at IS NULL")); +$num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num']); + ?>
-

Files

+

Files

@@ -111,126 +398,29 @@ while ($folder_id > 0) {
+ +

Folders


-
- +
+
@@ -238,7 +428,9 @@ while ($folder_id > 0) {
- "> +
@@ -246,8 +438,8 @@ while ($folder_id > 0) {
- "> - "> + "> + "> @@ -272,6 +473,7 @@ while ($folder_id > 0) {
+
- - -
- - $file_id, - 'name' => $file_name, - 'preview' => "../uploads/clients/$client_id/$file_reference_name" - ]; - - ?> - - + + +
- -
+ $files[] = [ + 'id' => $file_id, + 'name' => $file_name, + 'preview' => "../uploads/clients/$client_id/$file_reference_name" + ]; + ?> + + + + + +
-
- - -
- - - "> - - - - - - - - - - - - - - NOW() - AND item_type = 'File' - AND item_related_id = $file_id - LIMIT 1" - ); - $file_shared = (mysqli_num_rows($sql_shared) > 0) ? true : false; - if ($file_shared) { - $row = mysqli_fetch_array($sql_shared); - $item_id = intval($row['item_id']); - $item_active = nullable_htmlentities($row['item_active']); - $item_key = nullable_htmlentities($row['item_key']); - $item_type = nullable_htmlentities($row['item_type']); - $item_related_id = intval($row['item_related_id']); - $item_note = nullable_htmlentities($row['item_note']); - $item_recipient = nullable_htmlentities($row['item_recipient']); - $item_views = nullable_htmlentities($row['item_views']); - $item_view_limit = nullable_htmlentities($row['item_view_limit']); - $item_created_at = nullable_htmlentities($row['item_created_at']); - $item_expire_at = nullable_htmlentities($row['item_expire_at']); - $item_expire_at_human = timeAgo($row['item_expire_at']); - } - - ?> + + + +
+
-
- -
-
- - Name - - - - Type - - - - Size - - - - Uploaded - - Action
+ "> - - - - - + + + + + + + + + - + if ($item['kind'] === 'file') { + $file_id = $item['id']; + $file_name = $item['name']; + $file_description = $item['description']; + $file_reference_name= $item['reference_name']; + $file_icon = $item['icon']; + $file_size = $item['size']; + $file_size_KB = $file_size ? number_format($file_size / 1024) : 0; + $file_mime_type = $item['mime']; + $file_uploaded_by = $item['created_by']; + $file_created_at = $item['created_at']; -
- +
- " target="_blank"> -
- -
-

- -
- -

-
-
+
+ + Name - - KB - -
-
- -
- -
Shared -
- -
-
- -
- - + + Type + + + + Size + + + + Uploaded + + Action
-
-
+ // Shared? + $sql_shared = mysqli_query( + $mysqli, + "SELECT * FROM shared_items + WHERE item_client_id = $client_id + AND item_active = 1 + AND item_views != item_view_limit + AND item_expire_at > NOW() + AND item_type = 'File' + AND item_related_id = $file_id + LIMIT 1" + ); + $file_shared = (mysqli_num_rows($sql_shared) > 0); + if ($file_shared) { + $row_shared = mysqli_fetch_array($sql_shared); + $item_recipient = nullable_htmlentities($row_shared['item_recipient']); + $item_expire_at_human = timeAgo($row_shared['item_expire_at']); + } + ?> + + +
+ +
+ + + " target="_blank"> +
+ +
+

+ +
+ +

+
+
+
+ + + KB + + +
+ + + +
+ +
Shared +
+ +
+
+ + + + + + + NOW() + AND item_type = 'Document' + AND item_related_id = $document_id + LIMIT 1" + ); + $doc_shared = (mysqli_num_rows($sql_shared) > 0); + if ($doc_shared) { + $row_shared = mysqli_fetch_array($sql_shared); + $item_recipient = nullable_htmlentities($row_shared['item_recipient']); + $item_expire_at_human = timeAgo($row_shared['item_expire_at']); + } + ?> + + +
+ +
+ + + +
+ +
+

+ +
+ +

+
+
+
+ + Document + - + + +
+ + + +
+ +
Shared +
+ +
+
+ + + + + + + + + +
+ @@ -604,12 +863,12 @@ function updateModalContent() { } function nextFile() { - currentIndex = (currentIndex + 1) % files.length; // loop around + currentIndex = (currentIndex + 1) % files.length; updateModalContent(); } function prevFile() { - currentIndex = (currentIndex - 1 + files.length) % files.length; // loop around + currentIndex = (currentIndex - 1 + files.length) % files.length; updateModalContent(); } @@ -619,4 +878,5 @@ function prevFile() { 0) { + $sql_folder = mysqli_query($mysqli, "SELECT folder_name, parent_folder FROM folders WHERE folder_id = $folder_id"); + if ($row_folder = mysqli_fetch_assoc($sql_folder)) { + $folder_name = nullable_htmlentities($row_folder['folder_name']); + $parent_folder = intval($row_folder['parent_folder']); + + // Prepend the folder to the beginning of the array + array_unshift($folder_path, array('folder_id' => $folder_id, 'folder_name' => $folder_name)); + + // Move up to the parent folder + $folder_id = $parent_folder; + } else { + // If the folder is not found, break the loop + break; + } +} + +?> + +
+ +
+

Files

+ +
+
+ + + +
+
+
+ +
+
+
+

Folders

+
+ + +
+ + +
+ +
+ + + +
+
+
+ "> +
+ +
+
+
+
+
+ "> + "> + + + +
+
+
+
+ + + +
+ + + +
+ + $file_id, + 'name' => $file_name, + 'preview' => "../uploads/clients/$client_id/$file_reference_name" + ]; + + ?> + + + + + +
+ + + +
+ + +
+ + + "> + + + + + + + + + + + + + + NOW() + AND item_type = 'File' + AND item_related_id = $file_id + LIMIT 1" + ); + $file_shared = (mysqli_num_rows($sql_shared) > 0) ? true : false; + if ($file_shared) { + $row = mysqli_fetch_array($sql_shared); + $item_id = intval($row['item_id']); + $item_active = nullable_htmlentities($row['item_active']); + $item_key = nullable_htmlentities($row['item_key']); + $item_type = nullable_htmlentities($row['item_type']); + $item_related_id = intval($row['item_related_id']); + $item_note = nullable_htmlentities($row['item_note']); + $item_recipient = nullable_htmlentities($row['item_recipient']); + $item_views = nullable_htmlentities($row['item_views']); + $item_view_limit = nullable_htmlentities($row['item_view_limit']); + $item_created_at = nullable_htmlentities($row['item_created_at']); + $item_expire_at = nullable_htmlentities($row['item_expire_at']); + $item_expire_at_human = timeAgo($row['item_expire_at']); + } + + ?> + + + + + + + + + + + + + +
+
+ +
+
+ + Name + + + + Type + + + + Size + + + + Uploaded + + Action
+
+ +
+
+ " target="_blank"> +
+ +
+

+ +
+ +

+
+
+
+
KB + +
+
+ +
+ +
Shared +
+ +
+
+ +
+ +
+
+
+ + + + + +
+
+
+
+ + + + + + - -
diff --git a/agent/modals/client/client_add.php b/agent/modals/client/client_add.php index 644b7d00..f38988a9 100644 --- a/agent/modals/client/client_add.php +++ b/agent/modals/client/client_add.php @@ -207,7 +207,7 @@ ob_start();
- +
@@ -228,7 +228,7 @@ ob_start();
- +
@@ -287,7 +287,7 @@ ob_start();
- +
@@ -324,7 +324,7 @@ ob_start();
- "> + ">
diff --git a/agent/modals/client/client_bulk_edit_hourly_rate.php b/agent/modals/client/client_bulk_edit_hourly_rate.php index 8548b2b8..2b07c8fe 100644 --- a/agent/modals/client/client_bulk_edit_hourly_rate.php +++ b/agent/modals/client/client_bulk_edit_hourly_rate.php @@ -29,7 +29,7 @@ ob_start();
- +
diff --git a/agent/modals/client/client_credit_add.php b/agent/modals/client/client_credit_add.php index 98f4d590..5ff43d73 100644 --- a/agent/modals/client/client_credit_add.php +++ b/agent/modals/client/client_credit_add.php @@ -42,7 +42,7 @@
- +
diff --git a/agent/modals/client/client_edit.php b/agent/modals/client/client_edit.php index 74f2939b..c8f2831c 100644 --- a/agent/modals/client/client_edit.php +++ b/agent/modals/client/client_edit.php @@ -181,7 +181,7 @@ ob_start();
-
diff --git a/agent/modals/expense/expense_add.php b/agent/modals/expense/expense_add.php index 97e21f7b..7fc80a6f 100644 --- a/agent/modals/expense/expense_add.php +++ b/agent/modals/expense/expense_add.php @@ -33,7 +33,7 @@ ob_start();
- +
diff --git a/agent/modals/expense/expense_copy.php b/agent/modals/expense/expense_copy.php index 415bb145..099251df 100644 --- a/agent/modals/expense/expense_copy.php +++ b/agent/modals/expense/expense_copy.php @@ -50,7 +50,7 @@ ob_start();
- + @@ -211,4 +211,3 @@ ob_start(); require_once '../../../includes/modal_footer.php'; ?> - diff --git a/agent/modals/expense/expense_edit.php b/agent/modals/expense/expense_edit.php index 3dfce32c..1fb3aeac 100644 --- a/agent/modals/expense/expense_edit.php +++ b/agent/modals/expense/expense_edit.php @@ -59,7 +59,7 @@ ob_start();
- + diff --git a/agent/modals/expense/expense_refund.php b/agent/modals/expense/expense_refund.php index e6e89c9f..ee8677d0 100644 --- a/agent/modals/expense/expense_refund.php +++ b/agent/modals/expense/expense_refund.php @@ -54,7 +54,7 @@ ob_start();
- + @@ -89,4 +89,3 @@ ob_start(); - + diff --git a/agent/modals/invoice/item_edit.php b/agent/modals/invoice/item_edit.php index 89ffcd3d..c690b4ee 100644 --- a/agent/modals/invoice/item_edit.php +++ b/agent/modals/invoice/item_edit.php @@ -27,7 +27,7 @@ ob_start();
- + @@ -59,7 +59,7 @@ ob_start();
- + @@ -80,8 +80,8 @@ ob_start(); + diff --git a/agent/modals/payment/payment_add.php b/agent/modals/payment/payment_add.php index 6a9d6055..197cc4af 100644 --- a/agent/modals/payment/payment_add.php +++ b/agent/modals/payment/payment_add.php @@ -71,7 +71,7 @@ ob_start();
- + diff --git a/agent/modals/payment/payment_bulk_add.php b/agent/modals/payment/payment_bulk_add.php index 954c4daf..03695aed 100644 --- a/agent/modals/payment/payment_bulk_add.php +++ b/agent/modals/payment/payment_bulk_add.php @@ -74,7 +74,7 @@ ob_start();
- + diff --git a/agent/modals/product/product_add.php b/agent/modals/product/product_add.php index c628516c..37af8e63 100644 --- a/agent/modals/product/product_add.php +++ b/agent/modals/product/product_add.php @@ -94,7 +94,7 @@ ob_start();
- + diff --git a/agent/modals/product/product_edit.php b/agent/modals/product/product_edit.php index bfa8a9ce..d512f04d 100644 --- a/agent/modals/product/product_edit.php +++ b/agent/modals/product/product_edit.php @@ -78,7 +78,7 @@ ob_start();
- + diff --git a/agent/modals/quote/quote_edit.php b/agent/modals/quote/quote_edit.php index 5b4a0ab8..acecd715 100644 --- a/agent/modals/quote/quote_edit.php +++ b/agent/modals/quote/quote_edit.php @@ -88,7 +88,7 @@ ob_start();
- + diff --git a/agent/modals/recurring_expense/recurring_expense_add.php b/agent/modals/recurring_expense/recurring_expense_add.php index ee404d19..8780f1c6 100644 --- a/agent/modals/recurring_expense/recurring_expense_add.php +++ b/agent/modals/recurring_expense/recurring_expense_add.php @@ -74,7 +74,7 @@ ob_start();
- + diff --git a/agent/modals/recurring_expense/recurring_expense_edit.php b/agent/modals/recurring_expense/recurring_expense_edit.php index 6a0d8b9b..072a6935 100644 --- a/agent/modals/recurring_expense/recurring_expense_edit.php +++ b/agent/modals/recurring_expense/recurring_expense_edit.php @@ -97,7 +97,7 @@ ob_start();
- + diff --git a/agent/modals/recurring_invoice/recurring_invoice_edit.php b/agent/modals/recurring_invoice/recurring_invoice_edit.php index 9d8941e8..9af635dc 100644 --- a/agent/modals/recurring_invoice/recurring_invoice_edit.php +++ b/agent/modals/recurring_invoice/recurring_invoice_edit.php @@ -102,7 +102,7 @@ ob_start();
- + diff --git a/agent/modals/revenue/revenue_add.php b/agent/modals/revenue/revenue_add.php index c0e867d2..9ec59631 100644 --- a/agent/modals/revenue/revenue_add.php +++ b/agent/modals/revenue/revenue_add.php @@ -32,7 +32,7 @@ ob_start();
- + diff --git a/agent/modals/revenue/revenue_edit.php b/agent/modals/revenue/revenue_edit.php index 7877cdf0..41f258fe 100644 --- a/agent/modals/revenue/revenue_edit.php +++ b/agent/modals/revenue/revenue_edit.php @@ -49,7 +49,7 @@ ob_start();
- + diff --git a/agent/modals/ticket/ticket_invoice_add.php b/agent/modals/ticket/ticket_invoice_add.php index 1c7ca6b2..4cba203b 100644 --- a/agent/modals/ticket/ticket_invoice_add.php +++ b/agent/modals/ticket/ticket_invoice_add.php @@ -98,7 +98,7 @@ ob_start(); - +
@@ -108,7 +108,7 @@ ob_start();
0) { ?>
" id="pills-add-to-invoice"> @@ -146,7 +146,7 @@ ob_start();
- +
@@ -203,7 +203,7 @@ ob_start();
- +
@@ -260,7 +260,7 @@ ob_start();
- +
Based off Ticket time spent in 15 Min Increments rounded up. @@ -277,7 +277,7 @@ ob_start();
- +
Based off Hourly Client rate of diff --git a/agent/modals/transfer/transfer_add.php b/agent/modals/transfer/transfer_add.php index 288a7ff6..939baf5a 100644 --- a/agent/modals/transfer/transfer_add.php +++ b/agent/modals/transfer/transfer_add.php @@ -32,7 +32,7 @@ ob_start();
- +
@@ -182,7 +182,7 @@ ob_start(); function addOptionToTextbox() { var selectElement = document.getElementById("paymentSelect"); var selectedOption = selectElement.options[selectElement.selectedIndex]; - + var textboxElement = document.getElementById("transferNotes"); textboxElement.value += selectedOption.value + "\n"; } diff --git a/agent/modals/transfer/transfer_edit.php b/agent/modals/transfer/transfer_edit.php index 2230a042..9d4689b7 100644 --- a/agent/modals/transfer/transfer_edit.php +++ b/agent/modals/transfer/transfer_edit.php @@ -57,7 +57,7 @@ ob_start();
- + diff --git a/agent/modals/trip/trip_add.php b/agent/modals/trip/trip_add.php index 62cd18af..8cd4e84a 100644 --- a/agent/modals/trip/trip_add.php +++ b/agent/modals/trip/trip_add.php @@ -14,7 +14,7 @@ ob_start(); - +