mirror of
https://github.com/itflow-org/itflow
synced 2026-08-04 22:57:14 +00:00
Move Attachments to Assignment in new ticket get rid of help texts in reply for attachments and update changelog
This commit is contained in:
21
CHANGELOG.md
21
CHANGELOG.md
@@ -33,6 +33,12 @@ This file documents all notable changes made to ITFlow.
|
||||
> Run `--update_db` after **every** ITFlow update from now on, not just this one — any release may
|
||||
> contain database changes.
|
||||
>
|
||||
> On an install with a lot of ticket history the database update can take **a minute or more** —
|
||||
> one step generates a guest URL key for every ticket that is missing one, row by row. Let it run
|
||||
> to completion. If it is interrupted it resumes cleanly on the next run, but this is another
|
||||
> reason not to attempt the update through the web interface, which is bound by PHP's execution
|
||||
> time limit.
|
||||
>
|
||||
> **Back up your database before upgrading.**
|
||||
|
||||
- **A new cron job is required if you intend to use ticket SLAs.** `cron/ticket_sla.php` moves
|
||||
@@ -79,6 +85,17 @@ This file documents all notable changes made to ITFlow.
|
||||
onto every ticket the schedule raises - from the nightly cron run and from a forced run alike.
|
||||
Clearing the template leaves the recurring ticket's own subject and details untouched. The
|
||||
recurring ticket list shows which schedules carry a template and how many tasks it adds.
|
||||
- **Recurring tickets now own their task list.** A linked ticket template fills the list in when
|
||||
it is picked, but the list can then be edited per schedule, and it is those edits the run reads.
|
||||
Existing schedules are backfilled from their template by the database update, so every recurring
|
||||
ticket keeps raising exactly the tasks it raises today.
|
||||
- **Agents can attach files to tickets from within the app**, both when raising a ticket and on a
|
||||
reply. Attachments are emailed to the contact through the mail queue. A 10 MB ceiling applies to
|
||||
each message as a whole; anything that does not fit stays on the ticket for the recipient to
|
||||
download instead.
|
||||
- Tasks can now be added and edited inline in the add-ticket and add-recurring-ticket modals.
|
||||
- The older add-ticket modal has been retired — there is now a single add-ticket modal.
|
||||
- Watchers have moved into the assignment section of the add-ticket modal.
|
||||
- Added **ticket reply API endpoints** for creating and reading replies.
|
||||
- Payments and Revenues have been combined into a single **Income** page, keeping all income in
|
||||
one place, with CSV export. Revenue not tied to an invoice can still be added there; payments
|
||||
@@ -164,6 +181,10 @@ This file documents all notable changes made to ITFlow.
|
||||
and the confirmation message, reading an unrelated record's id in place of the name.
|
||||
- Bulk-creating tickets from a template against multiple assets only added the template's tasks to
|
||||
the first ticket, and dropped each task's completion estimate.
|
||||
- Deleting a ticket template now unlinks it from any recurring ticket that referenced it, instead
|
||||
of leaving the schedule pointing at a template that no longer exists.
|
||||
- Fixed the asset section in the recurring ticket modal when opened outside a client, and project
|
||||
selection when raising a ticket.
|
||||
- Tickets raised by the nightly recurring schedule were created without a guest URL key, so the
|
||||
"View ticket" link in reply and task-approval emails for those tickets could not be opened.
|
||||
Cron now generates a key like every other path that raises a ticket, and existing tickets
|
||||
|
||||
@@ -203,11 +203,6 @@ ob_start();
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="form-group">
|
||||
<label><i class="fa fa-fw fa-paperclip mr-1"></i>Attachments</label>
|
||||
<input type="file" class="form-control-file" name="attachments[]" multiple accept=".jpg, .jpeg, .gif, .png, .webp, .pdf, .txt, .md, .doc, .docx, .odt, .csv, .xls, .xlsx, .ods, .pptx, .odp, .zip, .tar, .gz, .xml, .msg, .json, .wav, .mp3, .ogg, .mov, .mp4, .av1, .ovpn">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="pills-add-tasks">
|
||||
@@ -302,6 +297,11 @@ ob_start();
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label><i class="fa fa-fw fa-paperclip mr-1"></i>Attachments</label>
|
||||
<input type="file" class="form-control-file" name="attachments[]" multiple accept=".jpg, .jpeg, .gif, .png, .webp, .pdf, .txt, .md, .doc, .docx, .odt, .csv, .xls, .xlsx, .ods, .pptx, .odp, .zip, .tar, .gz, .xml, .msg, .json, .wav, .mp3, .ogg, .mov, .mp4, .av1, .ovpn">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -315,12 +315,14 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
||||
data-modal-url="modals/recurring_ticket/recurring_ticket_edit.php?id=<?= $recurring_ticket_id ?>">
|
||||
<?= $recurring_ticket_subject ?>
|
||||
</a>
|
||||
<?php if ($recurring_ticket_template_name) { ?>
|
||||
<span title="Template: <?= $recurring_ticket_template_name ?>"
|
||||
<i class='fas fa-puzzle-piece text-secondary ml-1'></i>
|
||||
</span>
|
||||
<?php } ?>
|
||||
<?php if ($recurring_ticket_task_count) { ?>
|
||||
<span class="badge badge-secondary"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="Adds <?= $recurring_ticket_task_count ?> task<?php if ($recurring_ticket_task_count != 1) { echo "s"; } ?> to each ticket raised<?php if ($recurring_ticket_template_name) { ?>, from template: <?= $recurring_ticket_template_name ?><?php } ?>">
|
||||
<i class="fa fa-fw fa-tasks"></i><?= $recurring_ticket_task_count ?>
|
||||
<span title="Adds <?= $recurring_ticket_task_count ?> Tasks">
|
||||
<i class="fas fa-fw fa-tasks mr-1"></i><?= $recurring_ticket_task_count ?>
|
||||
</span>
|
||||
<?php } ?>
|
||||
</td>
|
||||
|
||||
@@ -599,8 +599,8 @@ if (isset($_GET['ticket_id'])) {
|
||||
<a target='_blank' class='mr-1 ml-1' href='ticket_attachment.php?attachment_id=<?= $ticket_attachment_id; ?>&action=view'>[View]</a><a href='ticket_attachment.php?attachment_id=<?= $ticket_attachment_id; ?>'>[Download]</a><?php if (lookupUserPermission("module_support") >= 3) { ?><a class='confirm-link ml-1 text-danger' href='post.php?delete_ticket_attachment=<?= $ticket_attachment_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>'>[Delete]</a><?php } ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
@@ -643,9 +643,7 @@ if (isset($_GET['ticket_id'])) {
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="text-muted small mb-1"><i class="fa fa-fw fa-paperclip mr-1"></i>Attachments</label>
|
||||
<input type="file" class="form-control-file" name="attachments[]" multiple accept=".jpg, .jpeg, .gif, .png, .webp, .pdf, .txt, .md, .doc, .docx, .odt, .csv, .xls, .xlsx, .ods, .pptx, .odp, .zip, .tar, .gz, .xml, .msg, .json, .wav, .mp3, .ogg, .mov, .mp4, .av1, .ovpn">
|
||||
<small class="form-text text-muted">Stored against this reply, or against the ticket itself if you submit without any text. A Public + Email reply sends them to the contact and any watchers.</small>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
@@ -839,8 +837,8 @@ if (isset($_GET['ticket_id'])) {
|
||||
<a target='_blank' class='mr-1 ml-1' href='ticket_attachment.php?attachment_id=<?= $ticket_attachment_id; ?>&action=view'>[View]</a><a href='ticket_attachment.php?attachment_id=<?= $ticket_attachment_id; ?>'>[Download]</a><?php if (lookupUserPermission("module_support") >= 3) { ?><a class='confirm-link ml-1 text-danger' href='post.php?delete_ticket_attachment=<?= $ticket_attachment_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>'>[Delete]</a><?php } ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user