Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
670450b
Ticket statuses - Allow ordering from admin settings, this can replac…
Apr 23, 2025
e1f212d
Start recording ticket source (API, Email, Portal, Agent)
Apr 28, 2025
429dfa5
Allow file upload extensions: .bat, .stk
wrongecho May 4, 2025
7a7ac4a
Fix Edit Blank Recurring ticket in Asset Details
johnnyq May 6, 2025
58435d3
Add Next Button if Database is already configured
johnnyq May 6, 2025
80625f8
Remove Unused vars in setup, added jpeg to the allow extension for us…
johnnyq May 6, 2025
b943c9c
Remove Influencer as a referral
johnnyq May 6, 2025
241ec50
Add hidden option to restore dumped ITFlow Database during Setup
johnnyq May 7, 2025
069772f
Add Upload uploads.zip file to restore files as well
johnnyq May 7, 2025
2ffb2be
Update the backup code to be a full backup zip file download of uploa…
johnnyq May 7, 2025
fc344ef
add notification paging
johnnyq May 7, 2025
a67675c
Remove 500 Records per page option to reduce Resource strain, 100 rec…
johnnyq May 8, 2025
2a43c5d
Remove DB Check
johnnyq May 8, 2025
1400983
Projects/Tickets
wrongecho May 11, 2025
d856685
Merge branch 'develop' of https://github.com/itflow-org/itflow into d…
wrongecho May 11, 2025
797e02b
Hide Credentials in side nav if no perms to view
wrongecho May 11, 2025
908738b
Ajax active clients - enforce client access restrictions (e.g. when c…
wrongecho May 11, 2025
d5536e7
Ajax contacts - Enforce client access restrictions when getting clien…
wrongecho May 11, 2025
546246d
Project - Allow editing client after creation
wrongecho May 11, 2025
b85fa38
Project - Show client abbreviation in open ticket link modal
wrongecho May 11, 2025
0df5c01
Project - Require CSRF token to delete a project
wrongecho May 11, 2025
be66ad9
Quotes / Invoicing
May 14, 2025
40086f1
Quotes / Invoicing - More role/perms enforcement
May 14, 2025
5bd03be
Ticket tasks - set maxlength html attribute
May 14, 2025
025532f
Fix quote top navbar options not showing following perms work
May 20, 2025
2786fb6
Don't show archived ticket categories in the tickets.php filter options
May 20, 2025
8d937ac
Fix add asset modal icon not showing
May 20, 2025
ccb2af6
Fix category name/type logging when archiving/deleting a category
May 20, 2025
b858d82
Show archived categories properly
May 20, 2025
f53b77b
Migrated asset link models to the new ajax models this fixes the issu…
johnnyq May 21, 2025
fed87c9
Migrated contact link models to the new ajax models this fixes the is…
johnnyq May 21, 2025
6937360
Update changelog
johnnyq May 22, 2025
b6f7308
SMTP Option Encryption None now works as intended
johnnyq May 22, 2025
83ffe05
Update Changelog
johnnyq May 22, 2025
cefbbdc
Bump phpMailer from 6.9.2 to 6.10.0
johnnyq May 22, 2025
0b04bc7
Bump tinyMCE from 7.7.1 to 7.9.0
johnnyq May 22, 2025
96abdef
Bump TCPDF from 6.8.2 to 6.9.4
johnnyq May 22, 2025
4c272b6
Bump DataTables from 2.2.2 to 2.3.1
johnnyq May 22, 2025
b80662b
Bump FullCalendar from 6.1.15 to 6.1.17
johnnyq May 22, 2025
5361391
Update changelog with the bumps
johnnyq May 22, 2025
6a36884
Bump stripe-php from 16.4.0 to 17.2.1
johnnyq May 22, 2025
c0f3343
Client Portal Add Recurrung Invoices with option to Enable or Disable…
johnnyq May 22, 2025
0e38925
Update Changelog
johnnyq May 22, 2025
3d1af05
Updated DB to store Payment details
johnnyq May 23, 2025
e07dfb5
db structure
johnnyq May 23, 2025
e04fa1b
Add stripe_pm_created_at
johnnyq May 23, 2025
f75445b
Limit Stripe Payments to just Credit Cards
johnnyq May 23, 2025
9d74bf8
Use cards in Guest Pay Invoice
johnnyq May 23, 2025
8532bdc
More UI updates to Guest Pay
johnnyq May 23, 2025
14f5630
Fix Invoice Header Button
johnnyq May 23, 2025
c512a71
Fix extra spacing in modal footer in notifications
johnnyq May 23, 2025
77be5af
Update setup to include restore option but place it in its own nav se…
johnnyq May 24, 2025
5ecfb3e
Update setup to include welcome as an option and do not hide the side…
johnnyq May 24, 2025
8113124
If Restore from Backup is chosen show message must configure database…
johnnyq May 24, 2025
d31f197
DB Dump
johnnyq May 24, 2025
61de8bc
Redirect to login when itflow restore completes
johnnyq May 24, 2025
f69de29
Get a more accurate count of Tables rows in Debug using count instead…
johnnyq May 24, 2025
d2e187a
Update security supported versions
wrongecho May 26, 2025
336da07
Admin mail settings
wrongecho May 27, 2025
c486682
Cron mail queue - fix app_log_type not being one of available enums
wrongecho May 27, 2025
40eb40f
Cron mail queue - fix $config_smtp_encryption being set to None in IF…
wrongecho May 27, 2025
8631c06
Stripe - Remove the locally stored payment identifiers (expiry/last 4…
wrongecho May 27, 2025
eb5d596
Don't show Checkbox columns when ticket is closed, compact ticket lis…
johnnyq May 28, 2025
4124188
Ticket UI/UX allow the ticket toolbar to be a little more Mobile frie…
johnnyq May 28, 2025
dcca93e
Only show 8 notifications at a time instead of 10
johnnyq May 28, 2025
b7b24d7
UI/UX Expenses - Combined Category and Description Column with second…
johnnyq May 28, 2025
bb44ece
Trips UI/UX - Move Client at the end column for consistency
johnnyq May 28, 2025
01a7dc2
Allow both Client and Contact to be sorted in same column in ticket list
johnnyq May 28, 2025
c564118
Fix Dupe GET VARS in tickets Removed extra Rebuild URL as this has be…
johnnyq May 28, 2025
0b88ea8
Display Country in Invoices, Quotes, Recurring Invoices, Clients, loc…
johnnyq May 28, 2025
eeef63d
Updated Changelog
johnnyq May 28, 2025
a00f26d
UI/UX Draggables now switch to a hand on hover, updated the UI in inv…
johnnyq May 29, 2025
96fe566
Add location country even when client id uri is not set
johnnyq May 29, 2025
db418ce
Mobile UI/UX - Hide long New Button names and use plus icon only in m…
johnnyq May 29, 2025
8b42b17
Added more text no wrap to table headers
johnnyq May 29, 2025
a8328a3
Add more text-nowrap to more table headers
johnnyq May 29, 2025
0b66c8e
Better naming of Indetity Providers instead of Integrations to make w…
johnnyq May 29, 2025
f572f42
Updated Changelog
johnnyq May 29, 2025
77b3a89
Reword changelog
May 29, 2025
11e8f5a
Bump app version
May 29, 2025
cf083e9
Fix
May 29, 2025
88369d4
Reword changelog
May 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 34 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,39 @@

This file documents all notable changes made to ITFlow.

## [25.05]

### Added / Changed
- Expanded file upload allow-list to include .bat and .stk file types.
- Added full backup/restore functionality. Backup downloads a zip that includes the SQL dump and uploads folder, setup now has option to restore from zip backup.
- Migrated Asset and Contact Links to modals to resolve variable overlap issue.
- Added Pagination to Notification Modal.
- Removed 500 Records Per Page option.
- Removed unused old DB checks in the top nav.
- Clients can now use the portal to setup Stripe automatic payments themselves for recurring invoices
- Automatic payments are now disabled for all recurring invoices if the saved payment method is removed
- Added Card Details and Payment added to Client Stripe.
- UI / UX updates to guest pay Make use of cards.
- Don't show Checkbox columns when ticket is closed, compact ticket list now matches round pills for status and priority.
- Ticket UI/UX update allow the ticket toolbar to be a little more mobile-friendly
- UI / UX Updates to Expenses - Combine Category and Description into 1 column.
- Country information is now displayed in Invoices, Quotes, Recurring Invoices, Clients, Locations, and the client top header.
- Added country-based search filters in Locations and Clients sections.
- Changed the settings name from Integrations to Identity Providers to make room for future iDPs (e.g. Google).
- Bump FullCalendar from 6.1.15 to 6.1.17.
- Bump DataTables from 2.2.2 to 2.3.1.
- Bump TCPDF from 6.8.2 to 6.9.4.
- Bump tinyMCE from 7.7.1 to 7.9.0.
- Bump phpMailer from 6.9.2 to 6.10.0.
- Bump stripe-php from 16.4.0 to 17.2.1.


### Fixed
- "None" option for SMTP encryption now functions correctly.
- Debug table row counts now reflect actual counts instead of relying on SHOW TABLE STATUS.
- Archived Categories now display properly.
- Stripe saved payment methods are now limited to credit/debit cards only.

## [25.03.6]

### Fixed
Expand Down Expand Up @@ -280,4 +313,4 @@ This file documents all notable changes made to ITFlow.
## [24.12]

### Added / Changed
- Introduced versioned releases for the first time!
- Introduced versioned releases for the first time!
6 changes: 2 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@
We operate a rolling release model. Any bug fixes will be released into latest version of ITFlow, so you must stay up-to-date.

| Version | Supported |
| ------- | ------------------ |
| Beta | :x: |
| 24.12 | :white_check_mark: |
| 25.1 | :white_check_mark: (When released) |
|---------| ------------------ |
| 25.05 | :white_check_mark: |

## Reporting a Vulnerability via GitHub Security Advisories

Expand Down
14 changes: 8 additions & 6 deletions admin_app_log.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,16 @@
<h3 class="card-title"><i class="fas fa-fw fa-history mr-2"></i>App Logs</h3>
</div>
<div class="card-body">
<form class="mb-4" autocomplete="off">
<form autocomplete="off">
<div class="row">
<div class="col-sm-4">
<div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(nullable_htmlentities($q)); } ?>" placeholder="Search app logs">
<div class="input-group-append">
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
<div class="form-group">
<div class="input-group">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(nullable_htmlentities($q)); } ?>" placeholder="Search app logs">
<div class="input-group-append">
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div>
</div>
</div>
Expand Down
12 changes: 6 additions & 6 deletions admin_audit_log.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<form class="mb-4" autocomplete="off">
<div class="row">
<div class="col-sm-4">
<div class="input-group">
<div class="input-group mb-3 mb-md-0">
<input type="search" class="form-control" name="q" value="<?php if (isset($q)) { echo stripslashes(nullable_htmlentities($q)); } ?>" placeholder="Search audit logs">
<div class="input-group-append">
<button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#advancedFilter"><i class="fas fa-filter"></i></button>
Expand All @@ -85,7 +85,7 @@
</div>

<div class="col-sm-2">
<div class="form-group">
<div class="input-group mb-3 mb-md-0">
<select class="form-control select2" name="client" onchange="this.form.submit()">
<option value="">- All Clients -</option>

Expand All @@ -105,7 +105,7 @@
</div>

<div class="col-sm-2">
<div class="form-group">
<div class="input-group mb-3 mb-md-0">
<select class="form-control select2" name="user" onchange="this.form.submit()">
<option value="">- All Users -</option>

Expand All @@ -125,7 +125,7 @@
</div>

<div class="col-sm-2">
<div class="form-group">
<div class="input-group mb-3 mb-md-0">
<select class="form-control select2" name="type" onchange="this.form.submit()">
<option value="">- All Types -</option>

Expand All @@ -144,7 +144,7 @@
</div>

<div class="col-sm-2">
<div class="form-group">
<div class="input-group mb-3 mb-md-0">
<select class="form-control select2" name="action" onchange="this.form.submit()">
<option value="">- All Actions -</option>

Expand Down Expand Up @@ -198,7 +198,7 @@
<hr>
<div class="table-responsive-sm">
<table class="table table-sm table-striped table-borderless table-hover">
<thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?>">
<thead class="text-dark <?php if ($num_rows[0] == 0) { echo "d-none"; } ?> text-nowrap">
<tr>
<th>
<a class="text-dark" href="?<?php echo $url_query_strings_sort; ?>&sort=log_created_at&order=<?php echo $disp; ?>">
Expand Down
12 changes: 6 additions & 6 deletions admin_backup.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</div>
<div class="card-body" style="text-align: center;">
<div class="alert alert-secondary">If you are unable to back up the entire VM, you'll need to back up the files & database individually. There is no built-in restore. See the <a href="https://docs.itflow.org/backups" target="_blank">docs here</a>.</div>
<a class="btn btn-primary btn-lg p-3" href="post.php?download_database&csrf_token=<?php echo $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-4x fa-download"></i><br><br>Download database</a>
<a class="btn btn-primary btn-lg p-3" href="post.php?download_backup&csrf_token=<?php echo $_SESSION['csrf_token'] ?>"><i class="fas fa-fw fa-4x fa-download"></i><br><br>Download Backup</a>
</div>
</div>

Expand All @@ -20,12 +20,12 @@
<div class="card-body">
<form action="post.php" method="POST">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token'] ?>">
<div class="row d-flex justify-content-center">
<div class="input-group col-4">
<div class="input-group-prepend">
<input type="password" class="form-control" placeholder="Enter your account password" name="password" autocomplete="new-password" required>
<div class="d-flex justify-content-center">
<div class="input-group col-sm-4">
<input type="password" class="form-control" placeholder="Enter your account password" name="password" autocomplete="new-password" required>
<div class="input-group-append">
<button class="btn btn-primary" type="submit" name="backup_master_key"><i class="fas fa-key"></i></button>
</div>
<button class="btn btn-primary" type="submit" name="backup_master_key"><i class="fas fa-fw fa-key mr-2"></i>Get Master Key</button>
</div>
</div>
</form>
Expand Down
8 changes: 2 additions & 6 deletions admin_category.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@
);
$num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));

if (isset($_GET['archived'])) {
$category = "Archived";
}

?>

<div class="card card-dark">
Expand Down Expand Up @@ -98,7 +94,7 @@ class="btn <?php if ($category == 'Ticket') {
} else {
echo 'btn-default';
} ?>">Ticket</a>
<a href="?archived=1"
<a href="?<?php echo $url_query_strings_sort ?>&archived=1"
class="btn <?php if (isset($_GET['archived'])) {
echo 'btn-primary';
} else {
Expand Down Expand Up @@ -150,7 +146,7 @@ class="fas fa-fw fa-archive mr-2"></i>Archived</a>
</button>
<div class="dropdown-menu">
<?php
if ($category == "Archived") {
if ($archived) {
?>
<a class="dropdown-item text-success confirm-link"
href="post.php?unarchive_category=<?php echo $category_id; ?>">
Expand Down
Loading