]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 287334: Ability to add custom "Bug ID" fields
authormkanat%bugzilla.org <>
Fri, 22 Aug 2008 04:58:43 +0000 (04:58 +0000)
committermkanat%bugzilla.org <>
Fri, 22 Aug 2008 04:58:43 +0000 (04:58 +0000)
Patch By Elliotte Martin <elliotte_martin@yahoo.com> r=mkanat, a=mkanat

Bugzilla/Bug.pm
Bugzilla/Constants.pm
Bugzilla/Field.pm
template/en/default/bug/field.html.tmpl
template/en/default/global/field-descs.none.tmpl

index b367954e656c91f319e59f2d5f9d4ccf35e30426..d82b6f6e6de192c0647912f0e01cd6b89753e3f6 100644 (file)
@@ -150,6 +150,9 @@ sub VALIDATORS {
         elsif ($field->type == FIELD_TYPE_FREETEXT) {
             $validator = \&_check_freetext_field;
         }
+        elsif ($field->type == FIELD_TYPE_BUG_ID) {
+            $validator = \&_check_bugid_field;
+        }
         else {
             $validator = \&_check_default_field;
         }
@@ -1643,6 +1646,12 @@ sub _check_select_field {
     return $value;
 }
 
+sub _check_bugid_field {
+    my ($invocant, $value, $field) = @_;
+    return undef if !$value;
+    return $invocant->check($value, $field)->id;
+}
+
 #####################################################################
 # Class Accessors
 #####################################################################
index b0dd0b6f6606e81df25ac131e180c1ace9e64c8c..e06fee00c81c6112138b2661bb709caaa9d0347d 100644 (file)
@@ -121,6 +121,7 @@ use File::Basename;
     FIELD_TYPE_MULTI_SELECT
     FIELD_TYPE_TEXTAREA
     FIELD_TYPE_DATETIME
+    FIELD_TYPE_BUG_ID
 
     USAGE_MODE_BROWSER
     USAGE_MODE_CMDLINE
@@ -348,6 +349,7 @@ use constant FIELD_TYPE_SINGLE_SELECT => 2;
 use constant FIELD_TYPE_MULTI_SELECT => 3;
 use constant FIELD_TYPE_TEXTAREA  => 4;
 use constant FIELD_TYPE_DATETIME  => 5;
+use constant FIELD_TYPE_BUG_ID  => 6;
 
 # The maximum number of days a token will remain valid.
 use constant MAX_TOKEN_AGE => 3;
index 0d7479034ded25c3b7e503144417cc37d6169120..4b801f13dde2a0ed8883eb002a015cef8025fd9e 100644 (file)
@@ -125,6 +125,7 @@ use constant SQL_DEFINITIONS => {
                                 DEFAULT => "'---'" },
     FIELD_TYPE_TEXTAREA,      { TYPE => 'MEDIUMTEXT' },
     FIELD_TYPE_DATETIME,      { TYPE => 'DATETIME'   },
+    FIELD_TYPE_BUG_ID,        { TYPE => 'INT3'       },
 };
 
 # Field definitions for the fields that ship with Bugzilla.
@@ -253,7 +254,7 @@ sub _check_type {
     my $saved_type = $type;
     # The constant here should be updated every time a new,
     # higher field type is added.
-    (detaint_natural($type) && $type <= FIELD_TYPE_DATETIME)
+    (detaint_natural($type) && $type <= FIELD_TYPE_BUG_ID)
       || ThrowCodeError('invalid_customfield_type', { type => $saved_type });
     return $type;
 }
index 1ba0b1784a45bbb50fe64fd8a361bb24688fcb62..7720ea0f8acc2ac5f4c0d88370f02888b9544a7e 100644 (file)
@@ -17,6 +17,7 @@
   #
   # Contributor(s): Myk Melez <myk@mozilla.org>
   #                 Max Kanat-Alexander <mkanat@bugzilla.org>
+  #                 Elliotte Martin <elliotte_martin@yahoo.com>
   #%]
 
 [%# INTERFACE:
       <script type="text/javascript">
         createCalendar('[% field.name FILTER js %]')
       </script>
+    [% CASE constants.FIELD_TYPE_BUG_ID %]
+        <span id="[% field.name FILTER html %]_input_area">
+          <input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]"
+                 value="[% value FILTER html %]" size="7">
+        </span>
+
+        [% IF bug.${field.name} %]  
+          [% bug.${field.name} FILTER bug_link(bug.${field.name}) FILTER none %]
+        [% END %]
+        <span id="[% field.name FILTER html %]_edit_container" class="edit_me bz_default_hidden">
+          (<a href="#" id="[% field.name FILTER html %]_edit_action">edit</a>)
+        </span>
+        <script type="text/javascript">
+        hideEditableField('[% field.name FILTER html %]_edit_container', 
+                          '[% field.name FILTER html %]_input_area', 
+                          '[% field.name FILTER html %]_edit_action', 
+                          '[% field.name FILTER html %]', 
+                          "[% bug.${field.name} %]");
+        </script>
     [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT 
               constants.FIELD_TYPE_MULTI_SELECT ] %]
         <select id="[% field.name FILTER html %]" 
 [% ELSIF field.type == constants.FIELD_TYPE_TEXTAREA %]
   <div class="uneditable_textarea">[% value FILTER wrap_comment(60)
                                             FILTER html %]</div>
+[% ELSIF field.type == constants.FIELD_TYPE_BUG_ID %]
+    [% IF bug.${field.name} %]  
+        [% bug.${field.name} FILTER bug_link(bug.${field.name}) FILTER none %]
+    [% END %]
 [% ELSE %]
   [% value.join(', ') FILTER html %]
 [% END %]
index 08587a4624dc5cc01fe0dea086bd2b76220e5192..f669df6df2b9a25cae6025261031d679ceab3d1e 100644 (file)
@@ -16,6 +16,7 @@
   # Rights Reserved.
   #
   # Contributor(s): Gervase Markham <gerv@gerv.net>
+  #                 Elliotte Martin <elliotte_martin@yahoo.com>
   #%]
 
 [%# Remember to PROCESS rather than INCLUDE this template. %]
                    ${constants.FIELD_TYPE_MULTI_SELECT}  => "Multiple-Selection Box",
                    ${constants.FIELD_TYPE_TEXTAREA}      => "Large Text Box",
                    ${constants.FIELD_TYPE_DATETIME}      => "Date/Time",
+                   ${constants.FIELD_TYPE_BUG_ID}        => "Bug ID",
                 } %]
 
 [% status_descs = { "UNCONFIRMED" => "UNCONFIRMED",