From a084e37c39ba91d51a14d917f5143b7da91456f7 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Fri, 14 Aug 2026 13:22:11 -0400 Subject: [PATCH] Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5 --- admin/ai_models.php | 12 +- admin/ai_providers.php | 14 +- admin/api_keys.php | 30 +-- admin/app_logs.php | 16 +- admin/audit_logs.php | 12 +- admin/backup.php | 62 +++-- admin/categories.php | 28 +- admin/contract_templates.php | 14 +- admin/cron.php | 50 ++-- admin/custom_links.php | 16 +- admin/debug.php | 2 +- admin/document_template.php | 6 +- admin/document_templates.php | 22 +- admin/identity_providers.php | 16 +- admin/includes/side_nav.php | 10 +- admin/mail_queue.php | 28 +- admin/modals/ai/ai_model_add.php | 28 +- admin/modals/ai/ai_model_edit.php | 28 +- admin/modals/ai/ai_provider_add.php | 22 +- admin/modals/ai/ai_provider_edit.php | 22 +- admin/modals/api/api_key_add.php | 42 +-- admin/modals/api/api_key_edit.php | 22 +- admin/modals/category/category_add.php | 26 +- admin/modals/category/category_edit.php | 22 +- .../contract_template_add.php | 82 ++---- .../contract_template_edit.php | 84 ++---- admin/modals/cron/cron_edit.php | 32 +-- .../custom_field/custom_field_create.php | 16 +- .../modals/custom_field/custom_field_edit.php | 16 +- admin/modals/custom_link/custom_link_add.php | 32 +-- admin/modals/custom_link/custom_link_edit.php | 32 +-- .../document_template_add.php | 24 +- .../document_template_edit.php | 16 +- .../mail_queue/mail_queue_message_view.php | 6 +- .../payment_method/payment_method_add.php | 16 +- .../payment_method/payment_method_edit.php | 16 +- .../payment_provider/payment_provider_add.php | 52 ++-- .../payment_provider_edit.php | 40 +-- .../project_template/project_template_add.php | 18 +- .../project_template_edit.php | 18 +- .../project_template_ticket_template_add.php | 18 +- admin/modals/role/role_add.php | 48 ++-- admin/modals/role/role_edit.php | 46 ++-- admin/modals/sla/sla_add.php | 26 +- admin/modals/sla/sla_edit.php | 26 +- .../software_template_add.php | 30 +-- .../software_template_edit.php | 30 +-- admin/modals/tag/tag_add.php | 26 +- admin/modals/tag/tag_edit.php | 22 +- admin/modals/tax/tax_add.php | 14 +- admin/modals/tax/tax_edit.php | 14 +- .../ticket_status/ticket_status_add.php | 22 +- .../ticket_status/ticket_status_edit.php | 30 +-- .../ticket_template/ticket_template_add.php | 28 +- .../ticket_template/ticket_template_edit.php | 24 +- .../ticket_template_task_edit.php | 18 +- admin/modals/user/user_add.php | 56 ++-- admin/modals/user/user_all_reset_password.php | 6 +- admin/modals/user/user_archive.php | 14 +- admin/modals/user/user_edit.php | 52 ++-- admin/modals/user/user_export.php | 14 +- admin/modals/user/user_invite.php | 16 +- admin/modals/user/user_restore.php | 20 +- .../vendor_template/vendor_template_add.php | 62 ++--- .../vendor_template/vendor_template_edit.php | 90 ++----- admin/modules.php | 14 +- admin/payment_methods.php | 12 +- admin/payment_providers.php | 14 +- admin/project_template.php | 42 +-- admin/project_templates.php | 20 +- admin/roles.php | 20 +- admin/saved_payment_methods.php | 6 +- admin/settings_company.php | 52 ++-- admin/settings_custom_fields.php | 20 +- admin/settings_default.php | 44 +--- admin/settings_invoice.php | 46 ++-- admin/settings_localization.php | 16 +- admin/settings_mail.php | 177 ++++++------- admin/settings_module.php | 48 ++-- admin/settings_notification.php | 38 +-- admin/settings_project.php | 12 +- admin/settings_quote.php | 18 +- admin/settings_security.php | 26 +- admin/settings_telemetry.php | 8 +- admin/settings_theme.php | 22 +- admin/settings_ticket.php | 70 +++-- admin/sla.php | 38 +-- admin/software_templates.php | 20 +- admin/starter_content.php | 16 +- admin/tags.php | 26 +- admin/tax_rates.php | 12 +- admin/ticket_statuses.php | 18 +- admin/ticket_template.php | 24 +- admin/ticket_templates.php | 18 +- admin/update.php | 20 +- admin/users.php | 34 ++- admin/vendor_templates.php | 22 +- agent/accounts.php | 18 +- agent/ajax.php | 12 +- agent/asset.php | 198 +++++++------- agent/assets.php | 102 ++++---- agent/calendar.php | 46 ++-- agent/certificates.php | 44 ++-- agent/client_autopay.php | 12 +- agent/client_overview.php | 54 ++-- agent/clients.php | 100 ++++--- agent/contact.php | 164 ++++++------ agent/contacts.php | 92 ++++--- agent/credentials.php | 72 +++--- agent/css/ticket_kanban.css | 6 +- agent/custom/includes/custom_side_nav.php | 8 +- agent/custom/index.php | 2 +- agent/dashboard.php | 66 ++--- agent/document.php | 60 ++--- agent/domains.php | 48 ++-- agent/expenses.php | 56 ++-- agent/files.php | 156 ++++++----- agent/global_search.php | 42 +-- agent/includes/client_overview_side_nav.php | 8 +- agent/includes/client_side_nav.php | 20 +- agent/includes/inc_all_client.php | 2 +- agent/includes/inc_client_top_head.php | 84 +++--- agent/includes/inc_ticket_tasks_section.php | 10 +- agent/includes/inc_ticket_template_select.php | 4 +- agent/includes/side_nav.php | 28 +- agent/income.php | 44 ++-- agent/invoice.php | 126 ++++----- agent/invoices.php | 56 ++-- agent/js/ticket_tasks_modal.js | 4 +- agent/locations.php | 50 ++-- agent/modals/account/account_add.php | 24 +- agent/modals/account/account_edit.php | 16 +- agent/modals/asset/asset.php | 118 +++++---- agent/modals/asset/asset_add.php | 156 ++++------- agent/modals/asset/asset_bulk_add_ticket.php | 40 +-- .../asset/asset_bulk_assign_contact.php | 14 +- .../asset/asset_bulk_assign_location.php | 14 +- .../asset_bulk_assign_physical_location.php | 14 +- agent/modals/asset/asset_bulk_assign_tags.php | 16 +- agent/modals/asset/asset_bulk_edit_status.php | 14 +- .../asset/asset_bulk_transfer_client.php | 14 +- agent/modals/asset/asset_copy.php | 140 +++------- agent/modals/asset/asset_documents.php | 8 +- agent/modals/asset/asset_edit.php | 150 ++++------- agent/modals/asset/asset_export.php | 34 +-- agent/modals/asset/asset_import.php | 12 +- agent/modals/asset/asset_interface_add.php | 66 ++--- .../asset_interface_bulk_edit_network.php | 14 +- .../asset/asset_interface_bulk_edit_type.php | 14 +- agent/modals/asset/asset_interface_edit.php | 68 ++--- agent/modals/asset/asset_interface_export.php | 6 +- agent/modals/asset/asset_interface_import.php | 12 +- .../asset/asset_interface_multiple_add.php | 32 +-- agent/modals/asset/asset_link_credential.php | 14 +- agent/modals/asset/asset_link_document.php | 14 +- agent/modals/asset/asset_link_file.php | 14 +- agent/modals/asset/asset_link_service.php | 14 +- agent/modals/asset/asset_link_software.php | 14 +- agent/modals/asset/asset_note_add.php | 16 +- agent/modals/calendar/calendar_add.php | 18 +- agent/modals/calendar/calendar_edit.php | 18 +- agent/modals/calendar/calendar_event_add.php | 76 ++---- agent/modals/calendar/calendar_event_edit.php | 78 +++--- agent/modals/calendar/calendar_share.php | 60 ++--- agent/modals/certificate/certificate_add.php | 50 ++-- agent/modals/certificate/certificate_edit.php | 52 ++-- .../modals/certificate/certificate_export.php | 22 +- agent/modals/client/client_add.php | 128 +++------ .../modals/client/client_bulk_add_ticket.php | 38 +-- .../modals/client/client_bulk_assign_tags.php | 16 +- .../client/client_bulk_edit_hourly_rate.php | 14 +- .../client/client_bulk_edit_industry.php | 14 +- .../client/client_bulk_edit_net_terms.php | 14 +- .../client/client_bulk_edit_referral.php | 16 +- agent/modals/client/client_bulk_email.php | 58 ++--- agent/modals/client/client_credit_add.php | 36 +-- agent/modals/client/client_delete.php | 4 +- agent/modals/client/client_download_pdf.php | 10 +- agent/modals/client/client_edit.php | 64 ++--- agent/modals/client/client_export.php | 38 +-- agent/modals/client/client_import.php | 14 +- agent/modals/contact/contact.php | 98 ++++--- agent/modals/contact/contact_add.php | 112 +++----- agent/modals/contact/contact_archive.php | 42 ++- .../contact/contact_bulk_assign_location.php | 14 +- .../contact/contact_bulk_assign_tags.php | 16 +- .../contact/contact_bulk_edit_department.php | 14 +- .../contact/contact_bulk_edit_phone.php | 14 +- .../modals/contact/contact_bulk_edit_role.php | 34 ++- agent/modals/contact/contact_bulk_email.php | 24 +- agent/modals/contact/contact_edit.php | 110 +++----- agent/modals/contact/contact_export.php | 26 +- agent/modals/contact/contact_import.php | 14 +- agent/modals/contact/contact_invite.php | 46 ++-- agent/modals/contact/contact_link_asset.php | 14 +- .../contact/contact_link_credential.php | 14 +- .../modals/contact/contact_link_document.php | 14 +- agent/modals/contact/contact_link_file.php | 14 +- agent/modals/contact/contact_link_service.php | 14 +- .../modals/contact/contact_link_software.php | 14 +- agent/modals/contact/contact_note_add.php | 16 +- agent/modals/credential/credential_add.php | 72 ++---- .../credential_bulk_assign_tags.php | 18 +- agent/modals/credential/credential_edit.php | 76 ++---- agent/modals/credential/credential_export.php | 22 +- agent/modals/credential/credential_import.php | 14 +- agent/modals/document/document_add.php | 22 +- .../document/document_add_file_relation.php | 14 +- .../document/document_add_from_template.php | 26 +- agent/modals/document/document_bulk_move.php | 14 +- agent/modals/document/document_edit.php | 18 +- .../document/document_edit_visibility.php | 14 +- agent/modals/document/document_link_asset.php | 14 +- .../modals/document/document_link_contact.php | 14 +- agent/modals/document/document_link_file.php | 14 +- .../document/document_link_software.php | 14 +- .../modals/document/document_link_vendor.php | 14 +- agent/modals/document/document_move.php | 14 +- agent/modals/document/document_rename.php | 14 +- .../modals/document/document_version_view.php | 6 +- agent/modals/document/document_view.php | 6 +- agent/modals/domain/domain_add.php | 48 ++-- agent/modals/domain/domain_edit.php | 70 ++--- agent/modals/domain/domain_export.php | 22 +- agent/modals/expense/expense_add.php | 56 ++-- agent/modals/expense/expense_bulk_delete.php | 6 +- .../expense/expense_bulk_edit_account.php | 16 +- .../expense/expense_bulk_edit_category.php | 14 +- .../expense/expense_bulk_edit_client.php | 14 +- agent/modals/expense/expense_copy.php | 50 ++-- agent/modals/expense/expense_edit.php | 54 ++-- agent/modals/expense/expense_export.php | 30 +-- agent/modals/expense/expense_refund.php | 30 +-- agent/modals/file/file_bulk_move.php | 16 +- agent/modals/file/file_delete.php | 2 +- agent/modals/file/file_link_asset.php | 18 +- agent/modals/file/file_move.php | 14 +- agent/modals/file/file_rename.php | 18 +- agent/modals/file/file_upload.php | 22 +- agent/modals/file/file_view.php | 4 +- agent/modals/folder/folder_add.php | 14 +- agent/modals/folder/folder_rename.php | 14 +- .../income/income_bulk_edit_account.php | 16 +- .../income/income_bulk_edit_category.php | 14 +- .../modals/income/income_bulk_edit_method.php | 14 +- agent/modals/income/income_export.php | 34 +-- agent/modals/invoice/invoice_add.php | 30 +-- agent/modals/invoice/invoice_add_ticket.php | 14 +- .../invoice/invoice_bulk_edit_category.php | 14 +- agent/modals/invoice/invoice_copy.php | 14 +- agent/modals/invoice/invoice_edit.php | 30 +-- agent/modals/invoice/invoice_export.php | 26 +- agent/modals/invoice/invoice_item_edit.php | 30 +-- agent/modals/invoice/invoice_note.php | 12 +- agent/modals/invoice/invoice_payments.php | 24 +- .../modals/invoice/invoice_recurring_add.php | 14 +- agent/modals/location/location_add.php | 86 ++---- .../location/location_bulk_assign_tags.php | 16 +- agent/modals/location/location_edit.php | 84 ++---- agent/modals/location/location_export.php | 22 +- agent/modals/location/location_import.php | 14 +- agent/modals/network/network_add.php | 72 ++---- agent/modals/network/network_edit.php | 70 ++--- agent/modals/network/network_export.php | 22 +- agent/modals/network/network_import.php | 14 +- agent/modals/payment/invoice_apply_credit.php | 14 +- agent/modals/payment/payment_add.php | 40 +-- agent/modals/payment/payment_bulk_add.php | 40 +-- agent/modals/payment/payment_edit.php | 32 +-- .../payment/payment_saved_method_add.php | 14 +- agent/modals/product/product_add.php | 44 +--- .../product/product_bulk_edit_category.php | 14 +- agent/modals/product/product_edit.php | 40 +-- agent/modals/product/product_export.php | 22 +- agent/modals/product/product_import.php | 14 +- agent/modals/product/product_stock_add.php | 20 +- agent/modals/project/project_add.php | 34 +-- agent/modals/project/project_edit.php | 28 +- .../project/project_link_closed_ticket.php | 14 +- agent/modals/project/project_link_ticket.php | 14 +- agent/modals/quote/quote_add.php | 32 +-- agent/modals/quote/quote_copy.php | 22 +- agent/modals/quote/quote_edit.php | 30 +-- agent/modals/quote/quote_export.php | 18 +- agent/modals/quote/quote_item_edit.php | 30 +-- agent/modals/quote/quote_note.php | 14 +- agent/modals/quote/quote_to_invoice.php | 18 +- agent/modals/rack/rack_add.php | 52 ++-- agent/modals/rack/rack_device_add.php | 22 +- agent/modals/rack/rack_edit.php | 52 ++-- .../recurring_expense_add.php | 62 ++--- .../recurring_expense_edit.php | 60 ++--- .../recurring_invoice_add.php | 32 +-- .../recurring_invoice_edit.php | 34 +-- .../recurring_invoice_export.php | 22 +- .../recurring_invoice_item_edit.php | 30 +-- .../recurring_invoice_note.php | 12 +- .../recurring_ticket/recurring_ticket_add.php | 70 ++--- .../recurring_ticket_bulk_agent_edit.php | 14 +- .../recurring_ticket_bulk_billable_edit.php | 18 +- .../recurring_ticket_bulk_category_edit.php | 14 +- .../recurring_ticket_bulk_next_run_edit.php | 14 +- .../recurring_ticket_bulk_priority_edit.php | 14 +- .../recurring_ticket_edit.php | 68 ++--- agent/modals/revenue/revenue_add.php | 44 +--- agent/modals/revenue/revenue_edit.php | 44 +--- agent/modals/service/service.php | 38 ++- agent/modals/service/service_add.php | 56 ++-- agent/modals/service/service_edit.php | 52 ++-- agent/modals/share_modal.php | 28 +- agent/modals/software/software_add.php | 76 ++---- .../software/software_add_from_template.php | 18 +- agent/modals/software/software_edit.php | 72 ++---- agent/modals/software/software_export.php | 22 +- agent/modals/ticket/ticket_add.php | 90 +++---- agent/modals/ticket/ticket_add_watcher.php | 16 +- agent/modals/ticket/ticket_assign.php | 16 +- agent/modals/ticket/ticket_billable.php | 16 +- .../modals/ticket/ticket_bulk_add_project.php | 14 +- agent/modals/ticket/ticket_bulk_assign.php | 14 +- .../ticket/ticket_bulk_edit_category.php | 14 +- .../ticket/ticket_bulk_edit_priority.php | 14 +- agent/modals/ticket/ticket_bulk_merge.php | 18 +- agent/modals/ticket/ticket_bulk_reply.php | 24 +- agent/modals/ticket/ticket_bulk_resolve.php | 22 +- agent/modals/ticket/ticket_change_client.php | 18 +- agent/modals/ticket/ticket_contact.php | 16 +- agent/modals/ticket/ticket_edit.php | 78 ++---- agent/modals/ticket/ticket_edit_asset.php | 18 +- agent/modals/ticket/ticket_edit_project.php | 14 +- agent/modals/ticket/ticket_edit_schedule.php | 20 +- agent/modals/ticket/ticket_edit_vendor.php | 14 +- agent/modals/ticket/ticket_export.php | 46 +--- agent/modals/ticket/ticket_invoice_add.php | 52 ++-- agent/modals/ticket/ticket_merge.php | 20 +- agent/modals/ticket/ticket_priority.php | 14 +- agent/modals/ticket/ticket_quote_add.php | 50 ++-- agent/modals/ticket/ticket_reply_edit.php | 18 +- agent/modals/ticket/ticket_reply_redact.php | 12 +- agent/modals/ticket/ticket_sla.php | 14 +- agent/modals/ticket/ticket_summary.php | 4 +- .../ticket/ticket_task_approver_add.php | 22 +- agent/modals/ticket/ticket_task_edit.php | 20 +- agent/modals/top_nav_tickets_modal.php | 4 +- .../modals/transaction/transaction_export.php | 42 +-- agent/modals/transfer/transfer_add.php | 38 +-- agent/modals/transfer/transfer_edit.php | 34 +-- agent/modals/trip/trip_add.php | 40 +-- agent/modals/trip/trip_copy.php | 40 +-- agent/modals/trip/trip_edit.php | 40 +-- agent/modals/trip/trip_export.php | 18 +- agent/modals/vendor/vendor.php | 12 +- agent/modals/vendor/vendor_add.php | 62 ++--- .../vendor/vendor_add_from_template.php | 14 +- agent/modals/vendor/vendor_edit.php | 68 ++--- agent/modals/vendor/vendor_export.php | 14 +- agent/networks.php | 52 ++-- agent/notifications.php | 18 +- agent/products.php | 56 ++-- agent/project.php | 90 +++---- agent/projects.php | 42 ++- agent/quote.php | 92 +++---- agent/quotes.php | 32 ++- agent/racks.php | 44 ++-- agent/recurring_expenses.php | 22 +- agent/recurring_invoice.php | 64 +++-- agent/recurring_invoices.php | 32 ++- agent/recurring_tickets.php | 46 ++-- agent/reports/budget.php | 40 +-- agent/reports/client_ticket_time_detail.php | 70 ++--- agent/reports/credential_rotation.php | 16 +- agent/reports/expense_by_vendor.php | 8 +- agent/reports/expense_summary.php | 38 +-- agent/reports/includes/reports_side_nav.php | 10 +- agent/reports/income_by_client.php | 8 +- agent/reports/income_summary.php | 38 +-- agent/reports/index.php | 2 +- agent/reports/outstanding_balances.php | 8 +- agent/reports/profit_loss.php | 64 ++--- agent/reports/recurring_by_client.php | 10 +- agent/reports/sla_by_client.php | 42 +-- agent/reports/sla_summary.php | 52 ++-- agent/reports/tax_summary.php | 30 +-- agent/reports/ticket_by_client.php | 80 +++--- agent/reports/ticket_summary.php | 34 +-- agent/reports/tickets_unbilled.php | 16 +- agent/reports/time_by_tech.php | 18 +- agent/services.php | 22 +- agent/software.php | 32 ++- agent/ticket.php | 244 +++++++++--------- agent/ticket_kanban.php | 18 +- agent/ticket_list.php | 48 ++-- agent/tickets.php | 58 ++--- agent/transactions.php | 34 ++- agent/transfers.php | 26 +- agent/trips.php | 30 +-- agent/user/includes/user_side_nav.php | 8 +- agent/user/mfa_enforcement.php | 12 +- agent/user/modals/user_mfa_modal.php | 14 +- agent/user/user_activity.php | 8 +- agent/user/user_details.php | 24 +- agent/user/user_preferences.php | 14 +- agent/user/user_security.php | 22 +- agent/vendors.php | 56 ++-- al4_layout.py | 198 ++++++++++++++ bs5_codemod.py | 237 +++++++++++++++++ client/assets.php | 4 +- client/certificates.php | 2 +- client/contact_add.php | 30 +-- client/contact_edit.php | 30 +-- client/contacts.php | 4 +- client/document.php | 18 +- client/documents.php | 56 ++-- client/domains.php | 2 +- client/includes/header.php | 20 +- client/index.php | 8 +- client/invoices.php | 4 +- client/login_reset.php | 8 +- client/profile.php | 6 +- client/quotes.php | 2 +- client/recurring_invoices.php | 2 +- client/saved_payment_methods.php | 6 +- client/ticket.php | 22 +- client/ticket_add.php | 18 +- client/ticket_view_all.php | 2 +- client/tickets.php | 12 +- client/unpaid_invoices.php | 14 +- fetch_adminlte4_libs.sh | 72 ++++++ functions/export.php | 24 +- guest/guest_approve_ticket_task.php | 2 +- guest/guest_pay_invoice_stripe.php | 12 +- guest/guest_quote_upload_file_modal.php | 14 +- guest/guest_view_invoice.php | 56 ++-- guest/guest_view_item.php | 2 +- guest/guest_view_quote.php | 44 ++-- guest/guest_view_ticket.php | 8 +- guest/includes/inc_wrapper.php | 4 +- includes/filter_footer.php | 2 +- includes/footer.php | 13 +- includes/header.php | 16 +- includes/inc_confirm_modal.php | 6 +- includes/inc_wrapper.php | 4 +- includes/top_nav.php | 26 +- js/app.js | 28 +- .../bootstrap-show-password.min.js | 7 - libs/adminlte/css/adminlte-select2.min.css | 12 + libs/adminlte/css/adminlte.min.css | 11 +- libs/adminlte/js/.eslintrc.json | 48 ---- libs/adminlte/js/adminlte.min.js | 6 +- libs/bootstrap/js/bootstrap.bundle.min.js | 6 +- .../select2-bootstrap4.min.css | 2 - .../tempus-dominus/css/tempus-dominus.min.css | 1 + libs/tempus-dominus/js/tempus-dominus.min.js | 6 + .../css/tempusdominus-bootstrap-4.min.css | 5 - .../js/tempusdominus-bootstrap-4.min.js | 6 - login.php | 22 +- modals/notifications.php | 18 +- setup/index.php | 158 ++++-------- 458 files changed, 6069 insertions(+), 8634 deletions(-) create mode 100644 al4_layout.py create mode 100644 bs5_codemod.py create mode 100755 fetch_adminlte4_libs.sh delete mode 100644 libs/Show-Hide-Passwords-Bootstrap-4/bootstrap-show-password.min.js create mode 100644 libs/adminlte/css/adminlte-select2.min.css delete mode 100644 libs/adminlte/js/.eslintrc.json delete mode 100644 libs/select2-bootstrap4-theme/select2-bootstrap4.min.css create mode 100644 libs/tempus-dominus/css/tempus-dominus.min.css create mode 100644 libs/tempus-dominus/js/tempus-dominus.min.js delete mode 100644 libs/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css delete mode 100644 libs/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js diff --git a/admin/ai_models.php b/admin/ai_models.php index db8f96d81..0d89b83af 100644 --- a/admin/ai_models.php +++ b/admin/ai_models.php @@ -25,9 +25,9 @@ $num_rows = mysqli_num_rows($sql);
-

AI Models

+

AI Models

- +
@@ -79,18 +79,18 @@ $num_rows = mysqli_num_rows($sql); - diff --git a/admin/ai_providers.php b/admin/ai_providers.php index b9b728314..5f9819a48 100644 --- a/admin/ai_providers.php +++ b/admin/ai_providers.php @@ -14,9 +14,9 @@ $num_rows = mysqli_num_rows($sql);
-

AI Providers

+

AI Providers

- +
@@ -68,20 +68,20 @@ $num_rows = mysqli_num_rows($sql); - + - diff --git a/admin/api_keys.php b/admin/api_keys.php index c0ed6cae9..47628608a 100644 --- a/admin/api_keys.php +++ b/admin/api_keys.php @@ -20,9 +20,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-

API Keys

+

API Keys

- +
@@ -34,22 +34,20 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
-
-
- @@ -69,7 +67,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); "> - - - + diff --git a/admin/audit_logs.php b/admin/audit_logs.php index 0ce0d9709..b4b84a289 100644 --- a/admin/audit_logs.php +++ b/admin/audit_logs.php @@ -67,7 +67,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-

Audit Logs

+

Audit Logs

@@ -75,10 +75,8 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
- + -
@@ -163,7 +161,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
" id="advancedFilter">
-
+
@@ -255,7 +253,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); ?>
- + @@ -263,7 +261,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); - + diff --git a/admin/backup.php b/admin/backup.php index 209531cfa..0b0b7a54f 100644 --- a/admin/backup.php +++ b/admin/backup.php @@ -33,15 +33,15 @@ if (!empty($_SESSION['backup_master_key_reveal'])) { unset($_SESSION['backup_master_key_reveal']); ?>
-
Master encryption key
+
Master encryption key

Shown once. Refreshing this page will not show it again.

- +
-
No backup encryption key
+
No backup encryption key
ITFlow could not write a backup encryption key to config.php, so it cannot produce an encrypted backup. Make config.php writable by the web server user and reload this page, or add a line like $config_backup_key = '<32 random characters>'; to it yourself. @@ -50,26 +50,26 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
-
Cron is not running
+
Cron is not running
Backups are built by the cron dispatcher, not by your browser. Until cron is running, anything you start here will sit in the queue. See Maintenance > Cron.
- Cron is switched off in + Cron is switched off in Maintenance > Cron.
-

Create a Backup

+

Create a Backup

0) { ?>
- backup + backup queued or building. You will get a notification when ready - this page does not refresh itself.
@@ -81,7 +81,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
Full Backup

The database and everything in the uploads folder. This is the one to keep.

- Start + Start
@@ -91,7 +91,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
Database Only

Just the SQL dump. Much smaller and much quicker, but no attachments or documents.

- Start + Start
@@ -100,8 +100,8 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
Master Key

The credential vault key. Only needed if every user password is lost - a normal restore recovers the vault on its own.

- @@ -112,7 +112,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
-

Backups

+

Backups

@@ -124,7 +124,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
- + @@ -153,7 +153,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
- @@ -147,25 +147,25 @@ while ($job_row = mysqli_fetch_assoc($sql)) { @@ -195,7 +195,7 @@ while ($job_row = mysqli_fetch_assoc($sql)) {

- Run Now does not start the job in your browser - it asks the + Run Now does not start the job in your browser - it asks the dispatcher to pick it up on its next pass, so a job starts within a minute and still runs on the command line with the same locking as a scheduled run. Detailed per-job output is in App Logs. diff --git a/admin/custom_links.php b/admin/custom_links.php index 038dc318d..5fd136d49 100644 --- a/admin/custom_links.php +++ b/admin/custom_links.php @@ -20,9 +20,9 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));

-

Custom Links

+

Custom Links

- +
@@ -32,9 +32,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
-
@@ -108,24 +106,24 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
+
@@ -119,7 +117,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); ?>
+
@@ -130,22 +128,22 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
-
$log_user_browser" ?>
Size Source StatusActionAction
+ @@ -173,11 +173,11 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
-

Encryption Key

+

Encryption Key

- + Write this down and keep it somewhere other than this server. Every backup is encrypted with it, and without it a backup cannot be restored - not by you, not by anyone. It is stored in config.php and never in the database, which is what stops a @@ -186,12 +186,10 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
- -
+ -
@@ -204,43 +202,43 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
-

Scheduled Backups & Retention

+

Scheduled Backups & Retention

-
-
+
+
-
+
0 disables age-based deletion.
-
+
Counted separately for each type. The newest of each is never deleted.
- +

- Scheduled backups run daily at + Scheduled backups run daily at . - Scheduled backups are switched off. + Scheduled backups are switched off. Turn them on or change the time in Maintenance > Cron.

@@ -253,7 +251,7 @@ if (!empty($_SESSION['backup_master_key_reveal'])) {
- - diff --git a/admin/cron.php b/admin/cron.php index b2556072f..ed8d3aa5b 100644 --- a/admin/cron.php +++ b/admin/cron.php @@ -35,13 +35,13 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
-

Cron

+

Cron

-
Cron is not running
+
Cron is not running
ITFlow last heard from cron . Nothing below will run - no mail is being sent, no email is being turned into tickets, and invoices are not being generated. Add this line to the crontab of the user that owns the ITFlow files: @@ -49,26 +49,26 @@ while ($job_row = mysqli_fetch_assoc($sql)) {
- Cron last checked in . - + Cron last checked in . +
-
+ -
Cron is switched off
+
Cron is switched off
The dispatcher is running, but every job below stops itself immediately while this is off - no mail is sent, no email becomes a ticket, and nothing is invoiced.

- The master switch is on. Turning it off + The master switch is on. Turning it off stops every job at once without touching their schedules, which is what you want on a restored backup or a staging clone - those come up with every job enabled and will otherwise email clients and charge cards. Switching back on returns you to exactly this configuration. @@ -112,24 +112,24 @@ while ($job_row = mysqli_fetch_assoc($sql)) { $next_run = $job_row ? cronJobNextRun($job_row) : null; if ($run_now) { - $status_badge = 'Queued'; + $status_badge = 'Queued'; } elseif ($last_status === 'Running') { - $status_badge = 'Running'; + $status_badge = 'Running'; } elseif ($last_status === 'Completed') { - $status_badge = 'Completed'; + $status_badge = 'Completed'; } elseif ($last_status === 'Failed') { - $status_badge = 'Failed'; + $status_badge = 'Failed'; } elseif ($last_status !== null) { - $status_badge = 'Stopped'; + $status_badge = 'Stopped'; } else { - $status_badge = 'Never run'; + $status_badge = 'Never run'; } ?>

- Disabled + Disabled

cron/
-
-
+ - Last error - + Last error +
- + - diff --git a/admin/debug.php b/admin/debug.php index d611dcc66..f4147e4a5 100644 --- a/admin/debug.php +++ b/admin/debug.php @@ -508,7 +508,7 @@ $mysqli->close();
-

Debug

+

Debug

diff --git a/admin/document_template.php b/admin/document_template.php index 3a8dea489..3fc756d07 100644 --- a/admin/document_template.php +++ b/admin/document_template.php @@ -44,19 +44,19 @@ $document_template_updated_at = escapeHtml($row['document_template_updated_at']) - +
-

+

diff --git a/admin/document_templates.php b/admin/document_templates.php index a09cba04a..3f13a6f92 100644 --- a/admin/document_templates.php +++ b/admin/document_templates.php @@ -21,10 +21,10 @@
-

Document Templates

+

Document Templates

@@ -33,9 +33,7 @@
-
-

@@ -83,9 +81,9 @@ -
- -
+
+ +
@@ -98,23 +96,23 @@
- diff --git a/admin/identity_providers.php b/admin/identity_providers.php index 665904f3d..92df76e73 100644 --- a/admin/identity_providers.php +++ b/admin/identity_providers.php @@ -4,7 +4,7 @@ require_once "includes/inc_all_admin.php";
-

Identity Providers

+

Identity Providers

@@ -12,12 +12,10 @@ require_once "includes/inc_all_admin.php";

Client Portal SSO via Microsoft Entra

-
+
-
-
-
+
-
-

- +
diff --git a/admin/includes/side_nav.php b/admin/includes/side_nav.php index 48636100a..f5ec72a11 100644 --- a/admin/includes/side_nav.php +++ b/admin/includes/side_nav.php @@ -1,8 +1,8 @@ -