From: Israel Madueme Date: Thu, 4 Jul 2019 16:48:27 +0000 (-0400) Subject: Bug 1524175 - Redirect to show_bug.cgi after creating or updating an attachment X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1eabd25b44c8129d44e563c2caec26f3882f3769;p=thirdparty%2Fbugzilla.git Bug 1524175 - Redirect to show_bug.cgi after creating or updating an attachment This causes BMO to redirect when attachments are created/updated/deleted. This lets us have 1 point (show_bug.cgi) that actually renders the show bug page. --- diff --git a/attachment.cgi b/attachment.cgi index 88a59dcf5..b85cb3528 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -653,31 +653,26 @@ sub insert { $dbh->bz_commit_transaction; - # Define the variables and functions that will be passed to the UI template. - $vars->{'attachment'} = $attachment; - - # We cannot reuse the $bug object as delta_ts has eventually been updated - # since the object was created. - $vars->{'bugs'} = [new Bugzilla::Bug($bugid)]; - $vars->{'header_done'} = 1; - $vars->{'contenttypemethod'} = $cgi->param('contenttypemethod'); - + # Persist details of what changed and redirect to show_bug page. my $recipients = {'changer' => $user, 'owner' => $owner}; - $vars->{'sent_bugmail'} = Bugzilla::BugMail::Send($bugid, $recipients); - - # BMO: add show_bug_format hook for experimental UI work - my $show_bug_format = {}; - Bugzilla::Hook::process('show_bug_format', $show_bug_format); - - if ($show_bug_format->{format} eq 'modal') { - $C->content_security_policy(SHOW_BUG_MODAL_CSP($bugid)); - } - - print $cgi->header(); - - # Generate and return the UI (HTML page) from the appropriate template. - $template->process("attachment/created.html.tmpl", $vars) - || ThrowTemplateError($template->error()); + my $sent_bugmail = Bugzilla::BugMail::Send($bugid, $recipients); + my $content_type_method = $cgi->param('contenttypemethod'); + + my $last_sent_attachment_change = { + attachment => { + id => $attachment->id, + bug_id => $attachment->bug_id, + contenttype => $attachment->contenttype, + description => $attachment->description, + }, + type => 'created', + recipient_count => scalar @{$sent_bugmail->{sent}}, + content_type_method => $content_type_method, + }; + $Bugzilla::App::CGI::C->flash(last_sent_attachment_changes => [$last_sent_attachment_change]); + + my $redirect_url = $Bugzilla::App::CGI::C->url_for('show_bugcgi')->query(id => $bugid); + $Bugzilla::App::CGI::C->redirect_to($redirect_url); } # Displays a form for editing attachment properties. @@ -840,26 +835,23 @@ sub update { # Commit the transaction now that we are finished updating the database. $dbh->bz_commit_transaction(); - # Define the variables and functions that will be passed to the UI template. - $vars->{'attachment'} = $attachment; - $vars->{'bugs'} = [$bug]; - $vars->{'header_done'} = 1; - $vars->{'sent_bugmail'} - = Bugzilla::BugMail::Send($bug->id, {'changer' => $user}); - - # BMO: add show_bug_format hook for experimental UI work - my $show_bug_format = {}; - Bugzilla::Hook::process('show_bug_format', $show_bug_format); - - if ($show_bug_format->{format} eq 'modal') { - $C->content_security_policy(SHOW_BUG_MODAL_CSP($bug->id)); - } - - print $cgi->header(); - - # Generate and return the UI (HTML page) from the appropriate template. - $template->process("attachment/updated.html.tmpl", $vars) - || ThrowTemplateError($template->error()); + # Persist details of what changed and redirect to show_bug page. + my $sent_bugmail = Bugzilla::BugMail::Send($bug->id, {'changer' => $user}); + + my $last_sent_attachment_change = { + attachment => { + id => $attachment->id, + bug_id => $attachment->bug_id, + contenttype => $attachment->contenttype, + description => $attachment->description, + }, + type => 'updated', + recipient_count => scalar @{$sent_bugmail->{sent}}, + }; + $Bugzilla::App::CGI::C->flash(last_sent_attachment_changes => [$last_sent_attachment_change]); + + my $redirect_url = $Bugzilla::App::CGI::C->url_for('show_bugcgi')->query(id => $bug->id); + $Bugzilla::App::CGI::C->redirect_to($redirect_url); } # Only administrators can delete attachments. @@ -914,24 +906,23 @@ sub delete_attachment { # Insert the comment. $bug->update(); - # Required to display the bug the deleted attachment belongs to. - $vars->{'bugs'} = [$bug]; - $vars->{'header_done'} = 1; - - $vars->{'sent_bugmail'} - = Bugzilla::BugMail::Send($bug->id, {'changer' => $user}); - - # BMO: add show_bug_format hook for experimental UI work - my $show_bug_format = {}; - Bugzilla::Hook::process('show_bug_format', $show_bug_format); - - if ($show_bug_format->{format} eq 'modal') { - $C->content_security_policy(SHOW_BUG_MODAL_CSP($bug->id)); - } - - print $cgi->header(); - $template->process("attachment/updated.html.tmpl", $vars) - || ThrowTemplateError($template->error()); + # Persist details of what changed and redirect to show_bug page. + my $sent_bugmail = Bugzilla::BugMail::Send($bug->id, {'changer' => $user}); + + my $last_sent_attachment_change = { + attachment => { + id => $attachment->id, + bug_id => $attachment->bug_id, + contenttype => $attachment->contenttype, + description => $attachment->description, + }, + type => 'deleted', + recipient_count => scalar @{$sent_bugmail->{sent}}, + }; + $Bugzilla::App::CGI::C->flash(last_sent_attachment_changes => [$last_sent_attachment_change]); + + my $redirect_url = $Bugzilla::App::CGI::C->url_for('show_bugcgi')->query(id => $bug->id); + $Bugzilla::App::CGI::C->redirect_to($redirect_url); } else { # Create a token. diff --git a/extensions/BugModal/template/en/default/bug/show-modal.html.tmpl b/extensions/BugModal/template/en/default/bug/show-modal.html.tmpl index 3d67379f0..036d1ff14 100644 --- a/extensions/BugModal/template/en/default/bug/show-modal.html.tmpl +++ b/extensions/BugModal/template/en/default/bug/show-modal.html.tmpl @@ -13,7 +13,7 @@ [% header_done = 1 %] [% END %] -[%# Displays changes to bugs that happened in the last request #%] +[%# Display changes to bugs that happened in the last request #%] [% sentmail = c.flash("last_sent_changes") %] [% FOREACH item = sentmail %] [% INCLUDE bug/process/results.html.tmpl @@ -23,5 +23,15 @@ %] [% END %] +[% sentattachmentmail = c.flash("last_sent_attachment_changes") %] +[% FOREACH item = sentattachmentmail %] + [% INCLUDE "bug/process/attachment-results.html.tmpl" + attachment = item.attachment + type = item.type + recipient_count = item.recipient_count + content_type_method = item.content_type_method + %] +[% END %] + [% INCLUDE bug_modal/edit.html.tmpl %] [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/bug/process/attachment-results.html.tmpl b/template/en/default/bug/process/attachment-results.html.tmpl new file mode 100644 index 000000000..8dd793665 --- /dev/null +++ b/template/en/default/bug/process/attachment-results.html.tmpl @@ -0,0 +1,68 @@ +[%# The contents of this file are subject to the Mozilla Public + # License Version 1.1 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.mozilla.org/MPL/ + # + # Software distributed under the License is distributed on an "AS + # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + # implied. See the License for the specific language governing + # rights and limitations under the License. + # + # The Original Code is the Bugzilla Bug Tracking System. + # + # The Initial Developer of the Original Code is Netscape Communications + # Corporation. Portions created by Netscape are + # Copyright (C) 1998 Netscape Communications Corporation. All + # Rights Reserved. + # + # Contributor(s): Israel Madueme + #%] + +[%# INTERFACE: + # attachment: Actual attachment object or dictionary containing all of the following properties: + # {id, bug_id, contenttype, description} + # type: string; the type of change/check that was made. Should be one of: + # (created, updated, deleted) + # recipient_count: string; The number of people that were emailed. + # content_type_method: string; How the content type method was determined; one of: + # ('autodetect', 'manual') + #%] + +[% PROCESS global/variables.none.tmpl %] + +
+
+ [% IF type == 'created' %] + Attachment #[% attachment.id FILTER none %] + to [% "$terms.bug $attachment.bug_id" FILTER bug_link(attachment.bug_id) FILTER none %] created + [% ELSE %] + Changes to + attachment [% attachment.id FILTER none %] + of [% "$terms.bug $attachment.bug_id" FILTER bug_link(attachment.bug_id) FILTER none %] submitted + [% END %] +
+
+ [% INCLUDE "bug/process/bugmail.html.tmpl" + mailing_bugid = attachment.bug_id + recipient_count = recipient_count + %] + [% IF content_type_method == 'autodetect' %] +

+ Note: [% terms.Bugzilla %] automatically detected the content type + [% attachment.contenttype FILTER html %] for this attachment. If this is + incorrect, correct the value by editing the attachment's + details. +

+ [% END %] + + [%# Links to more information about the changed bug. %] + [% Hook.process("links") %] +
+
+ +

+Create + Another Attachment to [% terms.Bug %] [%+ attachment.bug_id FILTER none %] +

diff --git a/template/en/default/bug/show.html.tmpl b/template/en/default/bug/show.html.tmpl index 1ae9d55f3..017f74be5 100644 --- a/template/en/default/bug/show.html.tmpl +++ b/template/en/default/bug/show.html.tmpl @@ -32,7 +32,7 @@ [% header_done = 1 %] [% END %] -[%# Displays changes to bugs that happened in the last request #%] +[%# Display changes to bugs that happened in the last request #%] [% sentmail = c.flash("last_sent_changes") %] [% FOREACH item = sentmail %] [% INCLUDE bug/process/results.html.tmpl @@ -42,6 +42,16 @@ %] [% END %] +[% sentattachmentmail = c.flash("last_sent_attachment_changes") %] +[% FOREACH item = sentattachmentmail %] + [% INCLUDE "bug/process/attachment-results.html.tmpl" + attachment = item.attachment + type = item.type + sent_bugmail = item.sent_bugmail + content_type_method = item.content_type_method + %] +[% END %] + [% IF nextbug %]