]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1565403 - Log how a bug was filed (via standard, guided, custom bug form or API)
authorKohei Yoshino <kohei.yoshino@gmail.com>
Fri, 2 Aug 2019 16:35:46 +0000 (12:35 -0400)
committerGitHub <noreply@github.com>
Fri, 2 Aug 2019 16:35:46 +0000 (12:35 -0400)
48 files changed:
Bugzilla/Bug.pm
Bugzilla/DB/Schema.pm
Bugzilla/Field.pm
Bugzilla/Hook.pm
Bugzilla/Install/DB.pm
Bugzilla/WebService/Bug.pm
bugzilla.dtd
docs/en/rst/api/core/v1/bug.rst
extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl
extensions/BMO/template/en/default/bug/create/create-blocklist.html.tmpl
extensions/BMO/template/en/default/bug/create/create-client-bounty.html.tmpl
extensions/BMO/template/en/default/bug/create/create-comm-newsletter.html.tmpl
extensions/BMO/template/en/default/bug/create/create-costume.html.tmpl
extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl
extensions/BMO/template/en/default/bug/create/create-crm.html.tmpl
extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl
extensions/BMO/template/en/default/bug/create/create-finance.html.tmpl
extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl
extensions/BMO/template/en/default/bug/create/create-intern.html.tmpl
extensions/BMO/template/en/default/bug/create/create-ipp.html.tmpl
extensions/BMO/template/en/default/bug/create/create-itrequest.html.tmpl
extensions/BMO/template/en/default/bug/create/create-legal.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mobile-compat.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mozlist.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl
extensions/BMO/template/en/default/bug/create/create-name-clearance.html.tmpl
extensions/BMO/template/en/default/bug/create/create-nda.html.tmpl
extensions/BMO/template/en/default/bug/create/create-recoverykey.html.tmpl
extensions/BMO/template/en/default/bug/create/create-recruiting.html.tmpl
extensions/BMO/template/en/default/bug/create/create-screen-share-whitelist.html.tmpl
extensions/BMO/template/en/default/bug/create/create-shield-studies.html.tmpl
extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl
extensions/BMO/template/en/default/bug/create/create-trademark.html.tmpl
extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl
extensions/BMO/template/en/default/bug/create/create-web-bounty.html.tmpl
extensions/GuidedBugEntry/Extension.pm
extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl
extensions/MozProjectReview/template/en/default/bug/create/create-moz-project-review.html.tmpl
extensions/REMO/template/en/default/bug/create/create-csa-discourse.html.tmpl
extensions/REMO/template/en/default/bug/create/create-mozreps.html.tmpl
extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl
extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl
post_bug.cgi
qa/t/lib/QA/Util.pm
template/en/default/bug/create/create.html.tmpl
template/en/default/global/field-descs.none.tmpl
template/en/default/pages/bugzilla.dtd.tmpl

index bc5416fc4100c7bb73b80ac4a63c5f601dbcc1d7..5a224451fdeacbe0f3959262ebc8f17979bfa475 100644 (file)
@@ -91,6 +91,7 @@ sub DB_COLUMNS {
       delta_ts
       estimated_time
       everconfirmed
+      filed_via
       lastdiffed
       op_sys
       priority
@@ -130,6 +131,7 @@ sub VALIDATORS {
     dup_id            => \&_check_dup_id,
     estimated_time    => \&_check_time_field,
     everconfirmed     => \&Bugzilla::Object::check_boolean,
+    filed_via         => \&_check_filed_via,
     groups            => \&_check_groups,
     keywords          => \&_check_keywords,
     op_sys            => \&_check_select_field,
@@ -311,6 +313,15 @@ use constant REQUIRED_FIELD_MAP =>
 use constant EXTRA_REQUIRED_FIELDS =>
   qw(creation_ts target_milestone cc qa_contact groups);
 
+sub BUG_FILE_METHODS {
+  my @methods = qw(standard_form custom_form api);
+
+  # Allow extensions to add other methods, e.g. `guided_form`
+  Bugzilla::Hook::process('bug_file_methods', {methods => \@methods});
+
+  return @methods;
+}
+
 with 'Bugzilla::Elastic::Role::Object';
 
 sub ES_TYPE {'bug'}
@@ -873,6 +884,7 @@ sub possible_duplicates {
 # C<status_whiteboard> - A string.
 # C<bug_status>   - The initial status of the bug, a string.
 # C<bug_file_loc> - The URL field.
+# C<filed_via>    - How this bug is being filed.
 #
 # C<assigned_to> - The full login name of the user who the bug is
 #                  initially assigned to.
@@ -1948,6 +1960,13 @@ sub _check_component {
   return $object;
 }
 
+sub _check_filed_via {
+  my ($invocant, $method) = @_;
+
+  return $method if defined $method && grep(/^$method$/, BUG_FILE_METHODS());
+  return 'unknown';
+}
+
 sub _check_creation_ts {
   return Bugzilla->dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)');
 }
@@ -2633,7 +2652,7 @@ sub fields {
 
     # Standard Fields
     # Keep this ordering in sync with bugzilla.dtd.
-    qw(bug_id alias creation_ts short_desc delta_ts
+    qw(bug_id alias filed_via creation_ts short_desc delta_ts
       reporter_accessible cclist_accessible
       classification_id classification
       product component version rep_platform op_sys
@@ -3675,6 +3694,7 @@ sub deadline            { return $_[0]->{deadline} }
 sub delta_ts            { return $_[0]->{delta_ts} }
 sub error               { return $_[0]->{error} }
 sub everconfirmed       { return $_[0]->{everconfirmed} }
+sub filed_via           { return $_[0]->{filed_via} }
 sub lastdiffed          { return $_[0]->{lastdiffed} }
 sub op_sys              { return $_[0]->{op_sys} }
 sub priority            { return $_[0]->{priority} }
index dce61c08b7a3041dd1681fe47697b4a822dd21e5..2ea176c50f54401db1799dcf940be82378e5de36 100644 (file)
@@ -247,6 +247,7 @@ use constant ABSTRACT_SCHEMA => {
       bug_severity => {TYPE => 'varchar(64)',  NOTNULL => 1},
       bug_status   => {TYPE => 'varchar(64)',  NOTNULL => 1},
       bug_type     => {TYPE => 'varchar(20)',  NOTNULL => 1},
+      filed_via    => {TYPE => 'varchar(40)',  NOTNULL => 1, DEFAULT => "'unknown'"},
       creation_ts  => {TYPE => 'DATETIME'},
       delta_ts     => {TYPE => 'DATETIME',     NOTNULL => 1},
       short_desc   => {TYPE => 'varchar(255)', NOTNULL => 1},
index 503befdb94956e38339d6493772366e670aae87b..e19f8543562a30a2a1cfeeb6b240b8e0d2347362 100644 (file)
@@ -423,6 +423,7 @@ use constant DEFAULT_FIELDS => (
   },
 
   {name => 'target_milestone',    desc => 'Target Milestone',   buglist    => 1},
+  {name => 'filed_via', desc => 'Filed via', buglist => 1,},
   {
     name    => 'creation_ts',
     desc    => 'Opened',
index 22b15c876b9292d66a7bac95e91b37f97fd5e402..ad6c8ebabf2e32c0cd33b60d1931138407543256 100644 (file)
@@ -400,6 +400,20 @@ User is not a sufficiently empowered user, so B<deny>.
 
 =back
 
+=head2 bug_file_methods
+
+This happens in L<Bugzilla::Bug/BUG_FILE_METHODS>, and allows you to add one or
+more valid file methods stored with bugs.
+
+Params:
+
+=over
+
+=item C<method> - A arrayref containing an array of method names. Push your
+method name(s) onto the array.
+
+=back
+
 =head2 bug_fields
 
 Allows the addition of database fields from the bugs table to the standard
index 6cee28e108795ef5087547dc9c01a3553c820c99..6ff2d4d51cdae6ce9479aa0775f2aab363d60559 100644 (file)
@@ -798,6 +798,10 @@ sub update_table_definitions {
 
   _add_oauth2_jwt_support();
 
+  # Bug 1565403 - kohei.yoshino@gmail.com
+  $dbh->bz_add_column('bugs', 'filed_via',
+    {TYPE => 'varchar(40)', NOTNULL => 1, DEFAULT => "'unknown'"});
+
   ################################################################
   # New --TABLE-- changes should go *** A B O V E *** this point #
   ################################################################
index 5b1dca146269fd938f0eab38ce0dd4d852bb6f65..1ac75a5855cbb36e9f1f1fc77c9b88f147d9a2e7 100644 (file)
@@ -878,6 +878,9 @@ sub create {
 
   $params = Bugzilla::Bug::map_fields($params);
 
+  # Define the bug file method if missing
+  $params->{filed_via} //= 'api';
+
   my $flags = delete $params->{flags};
 
   # We start a nested transaction in case flag setting fails
@@ -1526,6 +1529,9 @@ sub _bug_to_hash {
   if (filter_wants $params, 'duplicates') {
     $item{'duplicates'} = [map { $self->type('int', $_->id) } @{$bug->duplicates}];
   }
+  if (filter_wants $params, 'filed_via', ['extra']) {
+    $item{'filed_via'} = $self->type('string', $bug->filed_via);
+  }
   if (filter_wants $params, 'groups') {
     my @groups = map { $self->type('string', $_->name) } @{$bug->groups_in};
     $item{'groups'} = \@groups;
@@ -2868,6 +2874,13 @@ take.
 If you are not in the time-tracking group, this field will not be included
 in the return value.
 
+=item C<filed_via>
+
+How the bug was filed, e.g. C<standard_form>.
+
+This is an B<extra> field returned only by specifying C<filed_via> or
+C<_extra> in C<include_fields>.
+
 =item C<flags>
 
 An array of hashes containing the information about flags currently set
@@ -3218,8 +3231,9 @@ and all custom fields.
 in Bugzilla B<4.4>.
 
 =item The C<attachments>, C<comment_count>, C<comments>, C<counts>,
-C<description>, C<duplicates>, C<history>, C<regressed_by>, C<regressions>,
-C<triage_owner> and C<type> fields were added in Bugzilla B<6.0>.
+C<description>, C<duplicates>, C<filed_via>, C<history>, C<regressed_by>,
+C<regressions>, C<triage_owner> and C<type> fields were added in Bugzilla
+B<6.0>.
 
 =back
 
@@ -3497,6 +3511,10 @@ backwards compatibility with older Bugzillas.
 
 C<string> The description (initial comment) of the bug.
 
+=item C<filed_via>
+
+C<string> Searches for bugs that were created with this method.
+
 =item C<id>
 
 C<int> The numeric id of the bug.
@@ -3726,6 +3744,9 @@ the version the bug was found in.
 =item C<description> (string) B<Defaulted> - The description (initial comment)
 of the bug. Some Bugzilla installations require this to not be blank.
 
+=item C<filed_via> (string) B<Defaulted> - How the bug is being filed.
+It will be C<api> by default when filing through the API.
+
 =item C<op_sys> (string) B<Defaulted> - The operating system the bug was
 discovered on.
 
index 88ebab14dc5137ae5f68e030e098afe0e9878052..a9eb46935623f0cb7ca948e48e989f006a43eb70 100644 (file)
@@ -5,7 +5,7 @@
           maintainer CDATA #REQUIRED
           exporter CDATA #IMPLIED
 >
-<!ELEMENT bug (bug_id, (alias?, creation_ts, short_desc, delta_ts, reporter_accessible,
+<!ELEMENT bug (bug_id, (alias?, filed_via, creation_ts, short_desc, delta_ts, reporter_accessible,
     cclist_accessible, classification_id, classification, product, component,
     version, rep_platform, op_sys, bug_status, resolution?, dup_id?, duplicates*, see_also*,
     bug_file_loc?, status_whiteboard?, keywords*, bug_type, priority, bug_severity,
index f42e268cff8ab0e18a0ee878d608d4a36b79136b..5efd0b0c91e39d2a7e13773d298e078ff90ea5d4 100644 (file)
@@ -262,6 +262,7 @@ counts               object  An object containing the numbers of the items in th
                              ``depends_on``, ``regressed_by``, ``regressions``
                              and ``duplicates``.
 description          string  The description (initial comment) of the bug.
+filed_via            string  How the bug was filed, e.g. ``standard_form``.
 history              array   Each array item is a History object. See
                              :ref:`rest_history` for details of the object.
 tags                 array   Each array item is a tag name. Note that tags are
@@ -504,6 +505,7 @@ creator           string    The login name of the user who created the bug. You
                             ``reporter``, for backwards compatibility with
                             older Bugzillas.
 description       string    The description (initial comment) of the bug.
+filed_via         string    Searches for bugs that were created with this method.
 id                int       The numeric ID of the bug.
 last_change_time  datetime  Searches for bugs that were modified at this time
                             or later. May not be an array.
@@ -645,6 +647,8 @@ name                type     description
 description         string   (defaulted) The description (initial comment) of the
                              bug. Some Bugzilla installations require this to not
                              be blank.
+filed_via           string   (defaulted) How the bug is being filed. It will be
+                             ``api`` by default when filing through the API.
 op_sys              string   (defaulted) The operating system the bug was
                              discovered on.
 platform            string   (defaulted) What type of hardware the bug was
index 4a13bca0ad72416b148ee227ae3e469165046450..483a2642bab270ee1c6e65942b50bbbf838fc8f5 100644 (file)
@@ -80,6 +80,7 @@ function validateAndSubmit() {
 
 <form id="automative_form" method="post" action="[% basepath FILTER none %]post_bug.cgi"
   enctype="multipart/form-data" onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="automative">
   <input type="hidden" name="product" value="Testing">
   <input type="hidden" name="component" value="General">
index f3c95fa15ca0af6609dac02fa22b4f2db189e3bb..63d95e0d9092d9e93b1d5d027d3001b2a6a76283 100644 (file)
@@ -131,6 +131,7 @@ window.addEventListener("DOMContentLoaded", function() {
 [% cgi = Bugzilla.cgi %]
 
 <form id="blocklist_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data" class="noscript" onSubmit="return validateAndSubmit()">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="product" value="Toolkit">
   <input type="hidden" name="component" value="Blocklist Policy Requests">
   <input type="hidden" name="rep_platform" value="All">
index 79d18b8a270bd08b13049ec432b21a9863333882..35c0ae02c5c5bce1038f8d54e74c1f736d155598 100644 (file)
@@ -112,6 +112,7 @@ function validateAndSubmit() {
 
 <form id="client_bounty_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="product" value="Firefox">
   <input type="hidden" name="component" value="Security">
   <input type="hidden" name="rep_platform" value="unspecified">
index 5166ec49a3a940a258e8fb8075317938e7784b58..c0858d29fe748e3465f33796c2534969ac325cbb 100644 (file)
@@ -81,6 +81,7 @@ function toggleAreaOther() {
 
 <form id="newsletter_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="comm-newsletter">
   <input type="hidden" name="product" value="Marketing">
   <input type="hidden" name="component" value="Community">
index 8e21feeeade2d1fcf03995336e3fbd2b23c39821..7f6329614031464c429754d8cd93622f8978e9b2 100644 (file)
@@ -143,6 +143,7 @@ YAHOO.util.Event.onDOMReady(function() {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="costume">
   <input type="hidden" name="product" value="Marketing">
   <input type="hidden" name="component" value="General">
index 15b196c8c25b75987b3b694f9e094f3e9e09815d..b8e352afc205dea8297c03e9e62157265b5b4dd6 100644 (file)
@@ -115,6 +115,7 @@ function toggleTypeOther(element) {
 
 <form id="creative_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="creative">
   <input type="hidden" name="product" value="Marketing">
   <input type="hidden" name="component" value="Design">
index 79b32559272fe7dbc7e7fddece3a5e5d2118ce53..c0e4bc944d32c80934f5d0bddf3c29eb8b5e7a2f 100644 (file)
@@ -85,6 +85,7 @@ $(document).ready(function() {
     the invite details once you submit the [% terms.bug %]):</p>
 
   <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="crmForm">
+    <input type="hidden" name="filed_via" value="custom_form">
     <input type="hidden" id="short_desc" name="short_desc" value="CRM/Email Marketing Request">
     <input type="hidden" name="product" value="Marketing">
     <input type="hidden" name="component" value="Email">
index ceb13b3b82c09077857c7ac2d6a75a36f7391271..812786ebb10777714132a2b8cdd395b9081b4723 100644 (file)
@@ -75,6 +75,7 @@
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="data_comp_form"
       class="enter_bug_form" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+<input type="hidden" name="filed_via" value="custom_form">
 <input type="hidden" name="format" value="data-compliance">
 <input type="hidden" name="product" value="Data Compliance">
 <input type="hidden" name="component" value="General">
index a6fe44678181fdea943a9007048947a273d1c40f..271df63147e5f0690fa7e37d66346626a7bd55be 100644 (file)
@@ -77,6 +77,7 @@
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="bug_form" class="enter_bug_form"
       enctype="multipart/form-data" onsubmit="return onSubmit();">
+<input type="hidden" name="filed_via" value="custom_form">
 <input type="hidden" name="format" value="finance">
 <input type="hidden" name="product" value="Finance">
 <input type="hidden" name="rep_platform" value="All">
index 47d705a7f03613ba6aa0572ddbfa6092e07a1d48..c1a1862a99a78a4f6763c6d973299850500ab8fc 100644 (file)
@@ -84,6 +84,7 @@ function validateAndSubmit() {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="fsa_form" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="fsa-budget">
   <input type="hidden" name="product" value="FSA">
   <input type="hidden" name="component" value="Budget Requests">
index d0e88ccc604c51e690fb428fdd11c75fdaa7f999..af0f2920c9d9c7730fe80d3433004e03da19b445 100644 (file)
@@ -107,6 +107,7 @@ $(document).ready(function() {
   </p>
 
   <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="internForm">
+    <input type="hidden" name="filed_via" value="custom_form">
     <input type="hidden" id="short_desc" name="short_desc" value="">
     <input type="hidden" name="product" value="Recruiting">
     <input type="hidden" name="component" value="Intern">
index 6689c7a3ff614794fd0446267e51ef95c3a783a1..d0742d5400ead7cf5ef5f76cd335eaa074fb8513 100644 (file)
@@ -65,6 +65,7 @@ function validateAndSubmit() {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="ipp">
   <input type="hidden" name="product" value="Internet Public Policy">
   <input type="hidden" name="rep_platform" value="All">
index b25059c8028e87156b6f6ce50f859eda4e1b0dd3..a40940856e8ebc51a01938b9bbe70655dd5516c3 100644 (file)
@@ -93,6 +93,7 @@
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="itRequestForm" enctype="multipart/form-data"
       onsubmit="return on_submit()">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" id="product" name="product" value="Infrastructure & Operations">
   <input type="hidden" name="rep_platform" value="All">
   <input type="hidden" name="op_sys" value="Other">
index d3b894c5faa076df29b8bb79d31f9ac8764dd0b7..d650089a6758fb5a2c9f8f5939ddac9679acb0db 100644 (file)
@@ -76,6 +76,7 @@ label.required:before {
 <p>[ <span class="required_star">*</span> Required Field ]</p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="legalRequestForm" enctype="multipart/form-data">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="product" value="Legal">
   <input type="hidden" name="rep_platform" value="All">
   <input type="hidden" name="op_sys" value="Other">
index 986847afe5d4916e81f8c3b4c86b141939eda0a0..4e7e1dcef9eb38594eefe021862e74ce3dbdf67e 100644 (file)
@@ -178,6 +178,7 @@ strong.required:before {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return mdn.validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="mdn">
   <input type="hidden" name="product" value="developer.mozilla.org">
   <input type="hidden" name="rep_platform" value="All">
index ae0059f7d47bff98200384da69784e2fbe96445d..e28579e5f002801454cbbfb077facb797ff42e86 100644 (file)
@@ -77,6 +77,7 @@ function validateAndSubmit() {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format"       value="mobile-compat">
   <input type="hidden" name="product"      value="Tech Evangelism">
   <input type="hidden" name="component"    value="Mobile">
index af11e11cea414cd70e4bc792c934ad9634aaaa3a..131bcf3ce4883dbaecf5143430da13c1fdbd12b7 100644 (file)
@@ -62,6 +62,7 @@
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="mozListRequestForm"
       enctype="multipart/form-data" onSubmit="return trySubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" id="format" name="format" value="mozlist">
   <input type="hidden" id="product" name="product" value="mozilla.org">
   <input type="hidden" id="rep_platform" name="rep_platform" value="All">
index 39241e78c78d40daf840009d06263243f7eb7848..5cce042727b6088d01bd965effc70a0b05436d0e 100644 (file)
@@ -284,6 +284,7 @@ function validate_form() {
 
 <form id="pr_form" name="pr_form" method="post" action="[% basepath FILTER none %]post_bug.cgi"
       enctype="multipart/form-data" onSubmit="return validate_form()">
+<input type="hidden" name="filed_via" value="custom_form">
 <input type="hidden" name="format" value="mozpr">
 <input type="hidden" name="product" value="Mozilla PR">
 <input type="hidden" name="component" value="Projects">
index e2488c827f8e63c77312bb111b59a68e6bbd1508..0c9431abfbad8c3a590f87a6b691ca324913a9e6 100644 (file)
@@ -72,6 +72,7 @@ $(function() {
 <p>[ <span class="required_star">*</span> <span class="required_explanation">Required Field</span> ]</p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="nameForm">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" id="short_desc" name="short_desc" value="New Name Clearance Request">
   <input type="hidden" name="product" value="Legal">
   <input type="hidden" name="component" value="Name Clearance (Trademark Search)">
index f36c8807ddacd771065f157cec00bb79fd119392..5234473ec0f9bb3f4e630445e6193857cffceb28 100644 (file)
@@ -63,6 +63,7 @@ $(function() {
   of the ticket.</p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="ndaForm">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" id="short_desc" name="short_desc" value="New NDA Request">
   <input type="hidden" name="product" value="Legal">
   <input type="hidden" name="component" value="NDA">
index f6c99d633bd31b0dbe67a76a171ae4d8521c1399..4403102091989159fff6d4c6984ba8488bb536f5 100644 (file)
@@ -34,6 +34,7 @@
 </ul>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="recoveryKeyForm" enctype="multipart/form-data">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="product" value="mozilla.org">
   <input type="hidden" name="component" value="Server Operations: Desktop Issues">
   <input type="hidden" name="rep_platform" value="All">
index 57377e1bbb64bf09c2f09f8c8d07c31a2e03eaad..ea7877039c31d18bad2f1520a9a68a03e45d7f37 100644 (file)
@@ -72,6 +72,7 @@ function jobDescToggle(what) {
   </p>
 
   <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="recruitingForm" enctype="multipart/form-data">
+    <input type="hidden" name="filed_via" value="custom_form">
     <input type="hidden" name="product" value="Recruiting">
     <input type="hidden" name="component" value="General">
     <input type="hidden" name="rep_platform" value="All">
index a5e406f2acbf10855dd2245c7b965ee2feb57cca..4d610582045f006c0cf1ce981a67aef4e89e9293 100644 (file)
@@ -90,6 +90,7 @@ function fieldValue(elem_id) {
 
 <form id="whitelist_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="screen-share-whitelist">
   <input type="hidden" name="product" value="Firefox">
   <input type="hidden" name="component" value="Screen Sharing Whitelist">
index b55a1245ec10b7783e778976202b8096ed719e7e..c284ff73520554091bb5f1aaa874711749611caf 100644 (file)
@@ -43,6 +43,7 @@
 </p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="shieldStudies" class="enter_bug_form" enctype="multipart/form-data">
+<input type="hidden" name="filed_via" value="custom_form">
 <input type="hidden" name="format" id="format" value="shield-studies">
 <input type="hidden" name="product" id="product" value="Shield">
 <input type="hidden" name="component" id="component" value="Shield Study">
index e6625ac649e709214eb15ff9793ad8e5b93fd09d..fb948c120c381f938f7caaa0214afa790c07a133 100644 (file)
@@ -535,6 +535,7 @@ function showGear() {
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="swag">
   <input type="hidden" name="product" value="Marketing">
   <input type="hidden" name="component" value="Swag Requests">
index c1835c113391d17fb33644bbb98d6cbafdbdff70..4ad8dc20b5672f8b92ca205d451a801bb3349be9 100644 (file)
@@ -40,6 +40,7 @@
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm">
 
+        <input type="hidden" name="filed_via" value="custom_form">
         <input type="hidden" name="product" value="Marketing">
         <input type="hidden" name="component" value="Trademark Permissions">
         <input type="hidden" name="bug_type" value="task">
index 3e64fa939fc24856c233fe1bbab9799edbe32ceb..343ec20e13137e7843a29ee37e9a9eaa73ef68e9 100644 (file)
@@ -81,6 +81,7 @@ function toggleGoalOther() {
 
 <form id="engagement_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="user-engagement">
   <input type="hidden" name="product" value="Marketing">
   <input type="hidden" name="component" value="User Engagement">
index b49916cc0aab0d5a4f1c737a56034f78ff022727..7f5a9c87c736f5947341912cd24107aac404ac04 100644 (file)
@@ -68,6 +68,7 @@ function validateAndSubmit() {
 
 <form id="web_bounty_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="product" value="Websites">
   <input type="hidden" name="component" value="Other">
   <input type="hidden" name="rep_platform" value="All">
index bed190c02b20bd111cc963881a59cbe4b3d7d112..ec6dcc5d8a236ce260807a332aa537a4037f70dd 100644 (file)
@@ -22,6 +22,12 @@ use Bugzilla::Extension::BMO::Data;
 
 our $VERSION = '1';
 
+sub bug_file_methods {
+  my ($self, $args) = @_;
+
+  push(@{$args->{methods}}, 'guided_form');
+}
+
 sub enter_bug_start {
   my ($self, $args) = @_;
   my $vars     = $args->{vars};
index c70da8b141fa27a5c1ca9e81a26ae75a7116268d..d425e6094956e1e8929924dca6ac442374e3a45a 100644 (file)
@@ -26,7 +26,7 @@
 
 <noscript>
 You require JavaScript to use this [% terms.bug %] entry form.<br><br>
-Please use the <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">advanced [% terms.bug %] entry form</a>.
+Please use the <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">standard [% terms.bug %] entry form</a>.
 </noscript>
 
 <div id="loading" class="hidden">
@@ -47,7 +47,7 @@ YAHOO.util.Dom.removeClass('loading', 'hidden');
 <div id="advanced">
   <a id="advanced_img" href="[% basepath FILTER none %]enter_bug.cgi?format=__default__"><img
   src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/advanced.png" width="16" height="16" border="0"></a>
-  <a id="advanced_link" href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">Switch to the advanced [% terms.bug %] entry form</a>
+  <a id="advanced_link" href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">Switch to the standard [% terms.bug %] entry form</a>
 </div>
 
 <script [% script_nonce FILTER none %]>
@@ -325,6 +325,7 @@ Product: <b><span id="dupes_product_name">?</span></b>:
 [% INCLUDE page_title %]
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data" onsubmit="return bugForm.validate()">
+<input type="hidden" name="filed_via" value="guided_form">
 <input type="hidden" name="token" value="[% token FILTER html %]">
 <input type="hidden" name="product" id="product" value="">
 <input type="hidden" name="component" id="component" value="">
index 47b8a8d028e1862e838374b9a93ac3a3658661d5..7aaba8d3112990ffdb98e303659d78b5c55b582b 100644 (file)
@@ -48,6 +48,7 @@
 </p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="mozProjectForm" enctype="multipart/form-data">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" id="bug_type" name="bug_type" value="task">
   <input type="hidden" id="product" name="product" value="Legal">
   <input type="hidden" id="component" name="component" value="General">
index 0143dc5326a78b6b187bcd60505f3794689b82b1..bba79e5db76f88f1bb7c23d07f36083f0702904e 100644 (file)
@@ -23,6 +23,7 @@
 <h1>Community IT Discourse Request</h1>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm" name="f">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="bug_type" value="task">
   <input type="hidden" name="product" value="Infrastructure & Operations">
   <input type="hidden" name="component" value="Community IT: Discourse">
index 67a4de772d6649904118005d236ff6b0a7cfe20d..8f1244e9ae5a7fd820b69cd4ad8afa721afaed85 100644 (file)
@@ -39,6 +39,7 @@
 </p>
 
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm">
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="bug_type" value="task">
   <input type="hidden" name="product" value="Mozilla Reps">
   <input type="hidden" name="component" value="Mentorship">
index 8cb22c75af1251e0206ffeffb125b3f49cadacd9..2f049ca8d5c1b4e9102b1e39d666db72631933c6 100644 (file)
@@ -77,6 +77,7 @@ function validateAndSubmit() {
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
 
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="remo-budget">
   <input type="hidden" name="created-format" value="remo-budget">
   <input type="hidden" name="bug_type" value="task">
index c188f7a7cfabb7b28d13359403c05a536d99033e..944e6916fd0122e734370ed0de1eca3bc2d88496 100644 (file)
@@ -70,6 +70,7 @@ function validateAndSubmit() {
 <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
       onSubmit="return validateAndSubmit();">
 
+  <input type="hidden" name="filed_via" value="custom_form">
   <input type="hidden" name="format" value="remo-swag">
   <input type="hidden" name="bug_type" value="task">
   <input type="hidden" name="product" value="Mozilla Reps">
index 35d8b815ab9ed4ddf2309304f601ccd083122f99..9e8790e2b13b16e3509e1e639dacc6affdc4a55c 100755 (executable)
@@ -117,6 +117,7 @@ push(
     bug_status
     bug_type
     dependson
+    filed_via
     keywords
     short_desc
     op_sys
index b616d957f65020dc7cc9958fb8be3f503dfe5f2a..ef3289efd1d199ae6d5dde5b282763233b7a3bcc 100644 (file)
@@ -227,8 +227,8 @@ sub file_bug_in_product {
   $sel->wait_for_page_to_load(WAIT_TIME);
 
   # Use normal bug form instead of helper
-  if ($sel->is_text_present('Switch to the advanced bug entry form')) {
-    $sel->click_ok('//a[@id="advanced_link"]', undef, 'Switch to the advanced bug entry form');
+  if ($sel->is_text_present('Switch to the standard bug entry form')) {
+    $sel->click_ok('//a[@id="advanced_link"]', undef, 'Switch to the standard bug entry form');
   }
 
   my $title = $sel->get_title();
index 843da73606d42c78a56f2c9072c4903837d825ee..5cdfe6d1d8762e5928d9470992be1036c7f3d26f 100644 (file)
@@ -223,6 +223,7 @@ TUI_hide_default('expert_fields');
 <form name="Create" id="Create" method="post" action="[% basepath FILTER none %]post_bug.cgi"
       class="enter_bug_form" enctype="multipart/form-data"
       onsubmit="return validateEnterBug(this)">
+<input type="hidden" name="filed_via" value="standard_form">
 <input type="hidden" name="product" value="[% product.name FILTER html %]">
 <input type="hidden" name="token" value="[% token FILTER html %]">
 <input type="hidden" name="bug_ignored" value="[% bug_ignored ? "1" : "0" %]">
index e1186bb12667a527f6ae5df9599c10ab618565e8..b0fa4e6050f4bd3e66213624d335f87b98e4a3a6 100644 (file)
@@ -135,6 +135,7 @@ if ( $stash->get("in_template_var") ) {
         "duplicates"              => "Duplicates",
         "estimated_time"          => "Orig. Est.",
         "everconfirmed"           => "Ever confirmed",
+        "filed_via"               => "Filed via",
         "flagtypes.name"          => "Flags",
         "keywords"                => "Keywords",
         "keywords.count"          => "Number of Keywords",
index 59bc954fc3dd38a812c20bb57e04cbd3ed7a8520..a3de93644b82f34fba299f47e609b56853514258 100644 (file)
@@ -37,6 +37,7 @@
 >
 <!ELEMENT [% "bug" %] (bug_id,
                (alias?,
+                filed_via,
                 creation_ts,
                 short_desc,
                 delta_ts,