diff options
author | lpsolit%gmail.com <> | 2007-10-10 17:06:52 +0200 |
---|---|---|
committer | lpsolit%gmail.com <> | 2007-10-10 17:06:52 +0200 |
commit | 997030e295661b4e18f29cef9832af98cc2a4038 (patch) | |
tree | 2fb7181727606276fd30527ac5a2518c1b5d78ec | |
parent | c02ab7f8bd9caf0dffaba6a88030ac57c21951a8 (diff) | |
download | bugzilla-997030e295661b4e18f29cef9832af98cc2a4038.tar.gz bugzilla-997030e295661b4e18f29cef9832af98cc2a4038.tar.xz |
Bug 57842: On enter_bug.cgi, show component description when it is selected - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=mkanat
-rw-r--r-- | skins/standard/global.css | 14 | ||||
-rw-r--r-- | template/en/default/bug/create/create.html.tmpl | 238 |
2 files changed, 137 insertions, 115 deletions
diff --git a/skins/standard/global.css b/skins/standard/global.css index d7765dc88..3c49deefe 100644 --- a/skins/standard/global.css +++ b/skins/standard/global.css @@ -356,10 +356,22 @@ div.user_match { vertical-align: top; font-weight: bold; } -.field_value { +.field_value, form#Create th, form#Create td { vertical-align: top; } +form#Create th { + text-align: right; +} + +form#Create .comment { + vertical-align: top; + overflow: auto; + color: green; + margin: 0 0.5em; + padding: 0.3em; +} + #keyword-chooser { padding: 10px; position: absolute; diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl index fa6b7b020..cfbd2a819 100644 --- a/template/en/default/bug/create/create.html.tmpl +++ b/template/en/default/bug/create/create.html.tmpl @@ -21,6 +21,7 @@ # Marc Schumann <wurblzap@gmail.com> # Akamai Technologies <bugzilla-dev@akamai.com> # Max Kanat-Alexander <mkanat@bugzilla.org> + # Frédéric Buclin <LpSolit@gmail.com> #%] [% PROCESS "global/field-descs.none.tmpl" %] @@ -40,6 +41,7 @@ var initialowners = new Array([% product.components.size %]); var last_initialowner; var initialccs = new Array([% product.components.size %]); var components = new Array([% product.components.size %]); +var comp_desc = new Array([% product.components.size %]); var flags = new Array([% product.components.size %]); [% IF Param("useqacontact") %] var initialqacontacts = new Array([% product.components.size %]); @@ -48,6 +50,7 @@ var flags = new Array([% product.components.size %]); [% count = 0 %] [%- FOREACH c = product.components %] components[[% count %]] = "[% c.name FILTER js %]"; + comp_desc[[% count %]] = "[% c.description FILTER html_light FILTER js %]"; initialowners[[% count %]] = "[% c.default_assignee.login FILTER js %]"; [% flag_list = [] %] [% FOREACH f = c.flag_types.bug %] @@ -101,6 +104,7 @@ function set_assign_to() { } document.getElementById('initial_cc').innerHTML = initialccs[index]; + document.getElementById('comp_desc').innerHTML = comp_desc[index]; [% IF Param("useqacontact") %] var contact = initialqacontacts[index]; @@ -160,11 +164,10 @@ function handleWantsAttachment(wants_attachment) { <input type="hidden" name="product" value="[% product.name FILTER html %]"> <input type="hidden" name="token" value="[% token FILTER html %]"> -<table cellspacing="2" cellpadding="0" border="0"> - +<table cellspacing="4" cellpadding="2" border="0"> +<tbody> <tr> - <td> </td> - <td colspan="3"> + <td colspan="4"> [%# Migration note: The following file corresponds to the old Param # 'entryheaderhtml' #%] @@ -173,39 +176,23 @@ function handleWantsAttachment(wants_attachment) { </tr> <tr> - <td> </td> - <td colspan="3"> </td> + <td colspan="4"> </td> </tr> <tr> - <td align="right" valign="top"><strong>Reporter:</strong></td> - <td valign="top">[% user.login FILTER html %]</td> + <th>Product:</th> + <td width="10%">[% product.name FILTER html %]</td> - <td align="right" valign="top"><strong>Product:</strong></td> - <td valign="top">[% product.name FILTER html %]</td> + <th>Reporter:</th> + <td width="100%">[% user.login FILTER html %]</td> </tr> [%# We can't use the select block in these two cases for various reasons. %] <tr> - <td align="right" valign="top"> - <strong>Version:</strong> - </td> - <td> - <select name="version" size="5"> - [%- FOREACH v = version %] - <option value="[% v FILTER html %]" - [% " selected=\"selected\"" IF v == default.version %]>[% v FILTER html -%] - </option> - [%- END %] - </select> - </td> - - <td align="right" valign="top"> - <strong> - <a href="describecomponents.cgi?product=[% product.name FILTER url_quote %]"> - Component</a>: - </strong> - </td> + <th> + <a href="describecomponents.cgi?product=[% product.name FILTER url_quote %]"> + Component</a>: + </th> <td> <select name="component" onchange="set_assign_to();" size="5"> [%- FOREACH c = product.components %] @@ -216,22 +203,59 @@ function handleWantsAttachment(wants_attachment) { [%- END %] </select> </td> - </tr> - <tr> - <td> </td> - <td colspan="3"> </td> + <td colspan="2"> + [%# Enclose the fieldset in a nested table so that its width changes based + # on the length on the component description. %] + <table> + <tr> + <td> + <fieldset> + <legend>Component Description</legend> + <div id="comp_desc" class="comment">Select a component to read its description.</div> + </fieldset> + </td> + </tr> + </table> + </td> </tr> <tr> + <th rowspan="3">Version:</th> + <td rowspan="3"> + <select name="version" size="5"> + [%- FOREACH v = version %] + <option value="[% v FILTER html %]" + [% ' selected="selected"' IF v == default.version %]>[% v FILTER html -%] + </option> + [%- END %] + </select> + </td> + [% sel = { description => 'Severity', name => 'bug_severity' } %] [% INCLUDE select %] + </tr> + <tr> [% sel = { description => 'Platform', name => 'rep_platform' } %] [% INCLUDE select %] </tr> <tr> + [% sel = { description => 'OS', name => 'op_sys' } %] + [% INCLUDE select %] + </tr> +</tbody> + +<tbody class="expert_fields"> + <tr> + [% IF Param('usetargetmilestone') && Param('letsubmitterchoosemilestone') %] + [% sel = { description => 'Target Milestone', name => 'target_milestone' } %] + [% INCLUDE select %] + [% ELSE %] + <td colspan="2"> </td> + [% END %] + [% IF Param('letsubmitterchoosepriority') %] [% sel = { description => 'Priority', name => 'priority' } %] [% INCLUDE select %] @@ -240,41 +264,52 @@ function handleWantsAttachment(wants_attachment) { <input type="hidden" name="priority" value="[% default.priority FILTER html %]"> </td> [% END %] - - [% sel = { description => 'OS', name => 'op_sys' } %] - [% INCLUDE select %] </tr> +</tbody> - [% IF Param('usetargetmilestone') && Param('letsubmitterchoosemilestone') %] +[% IF !Param('defaultplatform') || !Param('defaultopsys') %] + <tbody> <tr> - [% sel = { description => 'Target Milestone', name => 'target_milestone' } %] - [% INCLUDE select %] - <td colspan="2"> </td> + <th> </th> + <td colspan="3" class="comment"> + We've made a guess at your + [% IF Param('defaultplatform') %] + operating system. Please check it + [% ELSIF Param('defaultopsys') %] + platform. Please check it + [% ELSE %] + operating system and platform. Please check them + [% END %] + and, if we got it wrong, email [% Param('maintainer') %]. + </td> </tr> - [% END %] + </tbody> +[% END %] +<tbody class="expert_fields"> <tr> - <td> </td> - <td colspan="3"> </td> + <td colspan="4"> </td> </tr> <tr> [% IF bug_status.size <= 1 %] <input type="hidden" name="bug_status" value="[% default.bug_status FILTER html %]"> - <td align="right" valign="top"><strong>Initial State:</strong></td> - <td valign="top">[% get_status(default.bug_status) FILTER html %]</td> + <th>Initial State:</th> + <td>[% get_status(default.bug_status) FILTER html %]</td> [% ELSE %] [% sel = { description => 'Initial State', name => 'bug_status' } %] [% INCLUDE select %] [% END %] + <td> </td> [%# Calculate the number of rows we can use for flags %] [% num_rows = 6 + (Param("useqacontact") ? 1 : 0) + (user.in_group(Param('timetrackinggroup')) ? 3 : 0) + (Param("usebugaliases") ? 1 : 0) %] - <td rowspan="[% num_rows FILTER html %]" valign="top"> + + <td rowspan="[% num_rows FILTER html %]"> [% IF product.flag_types.bug.size > 0 %] [% PROCESS "flag/list.html.tmpl" flag_types = product.flag_types.bug any_flags_requesteeble = 1 @@ -285,11 +320,7 @@ function handleWantsAttachment(wants_attachment) { </tr> <tr> - <td align="right"> - <strong> - <a href="page.cgi?id=fields.html#assigned_to">Assign To</a>: - </strong> - </td> + <th><a href="page.cgi?id=fields.html#assigned_to">Assign To</a>:</th> <td colspan="2"> [% INCLUDE global/userselect.html.tmpl name => "assigned_to" @@ -304,7 +335,7 @@ function handleWantsAttachment(wants_attachment) { [% IF Param("useqacontact") %] <tr> - <td align="right"><strong>QA Contact:</strong></td> + <th>QA Contact:</th> <td colspan="2"> [% INCLUDE global/userselect.html.tmpl name => "qa_contact" @@ -319,7 +350,7 @@ function handleWantsAttachment(wants_attachment) { [% END %] <tr> - <td align="right"><strong>Cc:</strong></td> + <th>CC:</th> <td colspan="2"> [% INCLUDE global/userselect.html.tmpl name => "cc" @@ -332,7 +363,7 @@ function handleWantsAttachment(wants_attachment) { </tr> <tr> - <th align="right">Default CC:</th> + <th>Default CC:</th> <td colspan="2"> <div id="initial_cc"> <!-- This has to happen after everything above renders, @@ -344,19 +375,18 @@ function handleWantsAttachment(wants_attachment) { </tr> <tr> - <td> </td> - <td colspan="2"></td> + <td colspan="3"> </td> </tr> [% IF user.in_group(Param('timetrackinggroup')) %] <tr> - <td align="right"><strong>Estimated Hours:</strong></td> + <th>Estimated Hours:</th> <td colspan="2"> <input name="estimated_time" size="6" maxlength="6" value="0.0"> </td> </tr> <tr> - <td align="right"><strong>Deadline:</strong></td> + <th>Deadline:</th> <td colspan="2"> <input name="deadline" size="10" maxlength="10" value="[% deadline FILTER html %]"> <small>(YYYY-MM-DD)</small> @@ -364,14 +394,13 @@ function handleWantsAttachment(wants_attachment) { </tr> <tr> - <td> </td> - <td colspan="2"></td> + <td colspan="3"> </td> </tr> [% END %] [% IF Param("usebugaliases") %] <tr> - <td align="right"><strong>Alias:</strong></td> + <th>Alias:</th> <td colspan="2"> <input name="alias" size="20"> </td> @@ -379,31 +408,37 @@ function handleWantsAttachment(wants_attachment) { [% END %] <tr> - <td align="right"><strong>URL:</strong></td> + <th>URL:</th> <td colspan="2"> <input name="bug_file_loc" size="60" value="[% bug_file_loc FILTER html %]"> </td> </tr> +</tbody> +<tbody> [% USE Bugzilla %] - [% FOREACH field = Bugzilla.get_fields({ obsolete => 0, custom => 1, + [% custom_fields = Bugzilla.get_fields({ obsolete => 0, custom => 1, enter_bug => 1 }) %] + + [% FOREACH field = custom_fields %] [% SET value = ${field.name} IF ${field.name}.defined %] <tr> - [% PROCESS bug/field.html.tmpl editable=1 value_span=2 %] + [% PROCESS bug/field.html.tmpl editable=1 value_span=3 %] </tr> [% END %] <tr> - <td align="right"><strong>Summary:</strong></td> + <th>Summary:</th> <td colspan="2"> <input name="short_desc" size="60" value="[% short_desc FILTER html %]" maxlength="255"> </td> + <td> </td> </tr> - <tr><td align="right" valign="top"><strong>Description:</strong></td> + <tr> + <th>Description:</th> <td colspan="3"> [% defaultcontent = BLOCK %] [% IF cloned_bug_id %] @@ -429,7 +464,7 @@ function handleWantsAttachment(wants_attachment) { [% IF Param("insidergroup") && user.in_group(Param("insidergroup")) %] <tr> - <td></td> + <th> </th> <td colspan="3"> <input type="checkbox" id="commentprivacy" name="commentprivacy" @@ -440,9 +475,11 @@ function handleWantsAttachment(wants_attachment) { </td> </tr> [% END %] +</tbody> +<tbody class="expert_fields"> <tr> - <th align="right" valign="top">Attachment:</th> + <th>Attachment:</th> <td colspan="3"> <script type="text/javascript"> <!-- @@ -479,38 +516,33 @@ function handleWantsAttachment(wants_attachment) { [% IF user.in_group('editbugs', product.id) %] [% IF use_keywords %] <tr> - <td align="right" valign="top"> - <strong> - <a href="describekeywords.cgi">Keywords</a>: - </strong> - </td> + <th><a href="describekeywords.cgi">Keywords</a>:</th> <td colspan="3"> <input id="keywords" name="keywords" size="60" value="[% keywords FILTER html %]" onfocus="this.chooser.open();"> (optional) </td> </tr> [% END %] + <tr> - <td align="right"> - <strong>Depends on:</strong> - </td> - <td> + <th>Depends on:</th> + <td colspan="3"> <input name="dependson" accesskey="d" value="[% dependson FILTER html %]"> </td> </tr> <tr> - <td align="right"> - <strong>Blocks:</strong> - </td> - <td> + <th>Blocks:</th> + <td colspan="3"> <input name="blocked" accesskey="b" value="[% blocked FILTER html %]"> </td> </tr> [% END %] +</tbody> +<tbody> + [% IF group.size %] <tr> - <td></td> + <th> </th> <td colspan="3"> - [% IF group.size %] <br> <strong> Only users in all of the selected groups can view this [% terms.bug %]: @@ -530,46 +562,27 @@ function handleWantsAttachment(wants_attachment) { [% " checked=\"checked\"" IF g.checked %]> <label for="bit-[% g.bit %]">[% g.description FILTER html_light %]</label><br> [% END %] - <br> - [% END %] </td> </tr> + [% END %] [%# Form controls for entering additional data about the bug being created. %] [% Hook.process("form") %] <tr> - <td></td> + <th> </th> <td colspan="3"> - <input type="submit" id="commit" value=" Commit " + <input type="submit" id="commit" value="Commit" onclick="if (this.form.short_desc.value == '') { alert('Please enter a summary sentence for this [% terms.bug %].'); return false; } return true;"> <input type="submit" name="maketemplate" id="maketemplate" - value="Remember values as bookmarkable template"> + value="Remember values as bookmarkable template" + class="expert_fields"> </td> </tr> - -[% UNLESS (Param('defaultplatform') && Param('defaultopsys')) %] - <tr> - <td></td> - <td colspan="3"> - <br> - We've made a guess at your - [% IF Param('defaultplatform') %] - operating system. Please check it - [% ELSIF Param('defaultopsys') %] - platform. Please check it - [% ELSE %] - operating system and platform. Please check them - [% END %] - and, if we got it wrong, email - [%+ Param('maintainer') %]. - </td> - </tr> -[% END %] - +</tbody> </table> <input type="hidden" name="form_name" value="enter_bug"> </form> @@ -591,12 +604,9 @@ function handleWantsAttachment(wants_attachment) { [% BLOCK select %] [% IF sel.description %] - <td align="right"> - <strong> - <a href="page.cgi?id=fields.html#[% sel.name %]"> - [% sel.description %]</a>: - </strong> - </td> + <th> + <a href="page.cgi?id=fields.html#[% sel.name %]">[% sel.description %]</a>: + </th> [% END %] <td> |