Add callback for RT 6.0
authorGérald Sédrati <gsedrati@easter-eggs.com>
Thu, 15 May 2025 09:30:10 +0000 (11:30 +0200)
committerEmmanuel Lacour <elacour@easter-eggs.com>
Thu, 15 May 2025 09:30:10 +0000 (11:30 +0200)
html/Callbacks/Drafts/Ticket/Widgets/Update/Message/AfterMessageBox [new file with mode: 0644]

diff --git a/html/Callbacks/Drafts/Ticket/Widgets/Update/Message/AfterMessageBox b/html/Callbacks/Drafts/Ticket/Widgets/Update/Message/AfterMessageBox
new file mode 100644 (file)
index 0000000..cb0b52d
--- /dev/null
@@ -0,0 +1,38 @@
+% if ( $Draft && $Draft->id && $Draft->Content ) {
+<input type="submit" class="button" name="LoadDraft" value="<&|/l&>Load draft</&>" />
+% }
+<input type="submit" class="button" name="SaveDraft" value="<% ($Draft && $Draft->id) ? loc('Update draft') : loc('Save draft')%>" />
+
+<script type="text/javascript">
+jQuery(function() {
+    timeout_save_draft = window.setTimeout(save_draft, <% RT->Config->Get('AutoSaveDraftPeriod', $session{'CurrentUser'}) || 300 %> * 1000);
+});
+
+function save_draft() {
+    jQuery.post("/Helpers/SaveDraft", {UserId: "<% $session{'CurrentUser'}->id %>", TicketId: "<% $Ticket->id %>", Content: jQuery('#UpdateContent').val(), ContentType: jQuery('#UpdateContent').hasClass('richtext') ? 'text/html' : 'text/plain'},
+        function(res) {
+            console.log(res);
+        }
+    );
+    timeout_save_draft = window.setTimeout(save_draft, <% RT->Config->Get('AutoSaveDraftPeriod', $session{'CurrentUser'}) || 300 %> * 1000);
+}
+</script>
+<%init>
+my $Ticket = LoadTicket($ARGS{'id'});
+
+my $Draft = RT::Attribute->new( $session{'CurrentUser'} );
+$Draft->LoadByNameAndObject( Object => $session{'CurrentUser'}->UserObj, Name => 'Draft-'.$Ticket->id );
+
+if ( $ARGS{'SaveDraft'} ) {
+    if ( $Draft && $Draft->Id ) {
+        $Draft->SetContent( $ARGS{'UpdateContent'} );
+        $Draft->SetContentType( $ARGS{'UpdateContentType'} || 'text/plain' );
+    } else {
+        $Draft->Create( Name => 'Draft-'.$Ticket->id,
+            Object => $session{'CurrentUser'}->UserObj,
+            Content => $ARGS{'UpdateContent'},
+            ContentType => $ARGS{'UpdateContentType'} || 'text/plain',
+        );
+    }
+}
+</%init>