diff options
Diffstat (limited to 'template/en/default/global')
-rw-r--r-- | template/en/default/global/code-error.html.tmpl | 42 | ||||
-rw-r--r-- | template/en/default/global/common-links.html.tmpl | 11 | ||||
-rw-r--r-- | template/en/default/global/field-descs.none.tmpl | 8 | ||||
-rw-r--r-- | template/en/default/global/footer.html.tmpl | 2 | ||||
-rw-r--r-- | template/en/default/global/header.html.tmpl | 191 | ||||
-rw-r--r-- | template/en/default/global/help.html.tmpl | 33 | ||||
-rw-r--r-- | template/en/default/global/messages.html.tmpl | 1 | ||||
-rw-r--r-- | template/en/default/global/setting-descs.none.tmpl | 5 | ||||
-rw-r--r-- | template/en/default/global/user-error.html.tmpl | 124 | ||||
-rw-r--r-- | template/en/default/global/user.html.tmpl | 17 | ||||
-rw-r--r-- | template/en/default/global/userselect.html.tmpl | 2 |
11 files changed, 295 insertions, 141 deletions
diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl index 877fe8d66..62442c268 100644 --- a/template/en/default/global/code-error.html.tmpl +++ b/template/en/default/global/code-error.html.tmpl @@ -262,7 +262,7 @@ Flags cannot be set for objects of type [% caller FILTER html %]. They can only be set for [% terms.bugs %] and attachments. - [% ELSIF error == "flag_requestee_disabled" %] + [% ELSIF error == "flag_type_requestee_disabled" %] [% title = "Flag not Requestable from Specific Person" %] You can't ask a specific person for <em>[% type.name FILTER html %]</em>. @@ -509,31 +509,23 @@ admindocslinks = admindocslinks %] -<tt> - <p> - [% terms.Bugzilla %] has suffered an internal error. Please save this page and send - it to [% Param("maintainer") %] with details of what you were doing at - the time this message appeared. - </p> - <script type="text/javascript"> <!-- - document.write("<p>URL: " + - document.location.href.replace(/&/g,"&") - .replace(/</g,"<") - .replace(/>/g,">") + "</p>"); - // --> - </script> -</tt> - -<table cellpadding="20"> - <tr> - <td id="error_msg" class="throw_error"> - [% error_message FILTER none %] - </td> - </tr> -</table> +[%# return the generated error_message for sentry %] +[% processed.error_message = error_message %] + +<p> + [% terms.Bugzilla %] has suffered an internal error: +</p> -<p>Traceback:</p> -<pre>[% traceback FILTER html %]</pre> +<p class="throw_error"> + [% error_message FILTER none %] +</p> + +[% IF maintainers_notified %] +<p> + The [% terms.Bugzilla %] maintainers have been notified of this error + [#[% uid FILTER html %]]. +</p> +[% END %] [% IF variables %] <pre> diff --git a/template/en/default/global/common-links.html.tmpl b/template/en/default/global/common-links.html.tmpl index 769d41e7e..50cfa020c 100644 --- a/template/en/default/global/common-links.html.tmpl +++ b/template/en/default/global/common-links.html.tmpl @@ -28,7 +28,7 @@ <li><span class="separator">| </span><a href="describecomponents.cgi">Browse</a></li> <li><span class="separator">| </span><a href="query.cgi">Search</a></li> - <li class="form"> + <li class="form quicksearch_form"> <span class="separator">| </span> <form action="buglist.cgi" method="get" onsubmit="if (this.quicksearch.value == '') @@ -39,10 +39,12 @@ <input class="btn" type="submit" value="Search" id="find[% qs_suffix FILTER html %]"> [%-# Work around FF bug: keep this on one line %]</form> - <a href="page.cgi?id=quicksearch.html" title="Quicksearch Help">[?]</a></li> + [<a href="page.cgi?id=quicksearch.html" title="Quicksearch Help">help</a>] + </li> <li><span class="separator">| </span><a href="report.cgi">Reports</a></li> + [% IF user.settings.skin.value != 'Mozilla' && user.settings.skin.value != 'Mozilla-OpenSans' %] <li> [% IF Param('shutdownhtml') || Bugzilla.has_flags %] <span class="separator">| </span> @@ -54,7 +56,11 @@ [% END %] [% END %] [%-# Work around FF bug: keep this on one line %]</li> + [% END %] + + [% Hook.process('action-links') %] + [% IF user.settings.skin.value != 'Mozilla' && user.settings.skin.value != 'Mozilla-OpenSans' %] [% IF user.login %] <li><span class="separator">| </span><a href="userprefs.cgi">Preferences</a></li> [% IF user.in_group('tweakparams') || user.in_group('editusers') || user.can_bless @@ -104,6 +110,7 @@ [% PROCESS "account/auth/login-small.html.tmpl" %] [% END %] [% END %] + [% END %] </ul> [% Hook.process("link-row") %] diff --git a/template/en/default/global/field-descs.none.tmpl b/template/en/default/global/field-descs.none.tmpl index 3e86e9bad..6b365b35f 100644 --- a/template/en/default/global/field-descs.none.tmpl +++ b/template/en/default/global/field-descs.none.tmpl @@ -49,7 +49,9 @@ "changedto" => "changed to", "changedby" => "changed by", "matches" => "matches", - "notmatches" => "does not match", + "notmatches" => "does not match", + "isempty" => "is empty", + "isnotempty" => "is not empty", } %] [% field_types = { ${constants.FIELD_TYPE_UNKNOWN} => "Unknown Type", @@ -58,7 +60,9 @@ ${constants.FIELD_TYPE_MULTI_SELECT} => "Multiple-Selection Box", ${constants.FIELD_TYPE_TEXTAREA} => "Large Text Box", ${constants.FIELD_TYPE_DATETIME} => "Date/Time", + ${constants.FIELD_TYPE_DATE} => "Date", ${constants.FIELD_TYPE_BUG_ID} => "$terms.Bug ID", + ${constants.FIELD_TYPE_EXTENSION} => "Extension", } %] [% IF in_template_var %] @@ -75,6 +79,7 @@ "alias" => "Alias", "assigned_to" => "Assignee", "assigned_to_realname" => "Assignee Real Name", + "assignee_last_login" => "Assignee Last Login Date", "attach_data.thedata" => "Attachment data", "attachments.description" => "Attachment description", "attachments.filename" => "Attachment filename", @@ -107,6 +112,7 @@ "everconfirmed" => "Ever confirmed", "flagtypes.name" => "Flags", "keywords" => "Keywords", + "last_visit_ts" => "Last Visit", "longdesc" => "Comment", "longdescs.count" => "Number of Comments", "longdescs.isprivate" => "Comment is private", diff --git a/template/en/default/global/footer.html.tmpl b/template/en/default/global/footer.html.tmpl index 661f8afe6..29d17bccd 100644 --- a/template/en/default/global/footer.html.tmpl +++ b/template/en/default/global/footer.html.tmpl @@ -24,8 +24,6 @@ # global/useful-links.html.tmpl. #%] -[% INCLUDE "global/help.html.tmpl" %] - </div> [%# Migration note: below this point, this file corresponds to the old Param diff --git a/template/en/default/global/header.html.tmpl b/template/en/default/global/header.html.tmpl index 0dffcb5de..a558d28ed 100644 --- a/template/en/default/global/header.html.tmpl +++ b/template/en/default/global/header.html.tmpl @@ -108,49 +108,33 @@ [% PROCESS 'global/setting-descs.none.tmpl' %] [% SET yui = yui_resolve_deps(yui, yui_deps) %] - [% SET css_sets = css_files(style_urls, yui, yui_css) %] - - [%# CSS cascade, part 1: Standard Bugzilla stylesheet set (persistent). - # Always present. - #%] - [%# This allows people to switch back to the "Classic" skin if they - # are in another skin. - #%] - <link href="[% 'skins/standard/global.css' FILTER mtime FILTER html %]" - rel="alternate stylesheet" - title="[% setting_descs.standard FILTER html %]"> - [% FOREACH style_url = css_sets.standard %] - [% PROCESS format_css_link css_set_name = 'standard' %] - [% END %] - - [%# CSS cascade, part 2 & 3: Third-party stylesheet set (selected and - # selectable). All third-party skins are present as alternate - # stylesheets, even if they are not currently in use. - #%] - [% FOREACH style_url = css_sets.skin %] - [% PROCESS format_css_link css_set_name = user.settings.skin.value %] - [% END %] - [% FOREACH alternate_skin = css_sets.alternate.keys %] - [% FOREACH style_url = css_sets.alternate.$alternate_skin %] - [% PROCESS format_css_link css_set_name = alternate_skin %] + [% SET css_sets = css_files(style_urls, yui, yui_css) %] + [% IF constants.CONCATENATE_ASSETS %] + [% PROCESS format_css_link asset_url = css_sets.unified_standard_skin %] + [% ELSE %] + [% FOREACH asset_url = css_sets.standard %] + [% PROCESS format_css_link %] + [% END %] + [% FOREACH asset_url = css_sets.skin %] + [% PROCESS format_css_link %] [% END %] [% END %] - [%# CSS cascade, part 4: page-specific styles. - #%] [% IF style %] <style type="text/css"> [% style %] </style> [% END %] - [%# CSS cascade, part 5: Custom Bugzilla stylesheet set (persistent). - # Always present. Site administrators may override all other style - # definitions, including skins, using custom stylesheets. - #%] - [% FOREACH style_url = css_sets.custom %] - [% PROCESS format_css_link css_set_name = 'standard' %] + [% IF css_sets.unified_custom %] + [% IF constants.CONCATENATE_ASSETS %] + [% PROCESS format_css_link asset_url = css_sets.unified_custom %] + [% ELSE %] + [% FOREACH asset_rul = css_sets.custom %] + [% PROCESS format_css_link %] + [% END %] + [% END %] [% END %] [%# YUI Scripts %] @@ -159,7 +143,7 @@ [% END %] [% starting_js_urls.push('js/global.js') %] - [% FOREACH javascript_url = starting_js_urls %] + [% FOREACH asset_url = concatenate_js(starting_js_urls) %] [% PROCESS format_js_link %] [% END %] @@ -226,7 +210,7 @@ // --> </script> - [% FOREACH javascript_url = javascript_urls %] + [% FOREACH asset_url = concatenate_js(javascript_urls) %] [% PROCESS format_js_link %] [% END %] @@ -239,8 +223,7 @@ [%# Required for the 'Autodiscovery' feature in Firefox 2 and IE 7. %] <link rel="search" type="application/opensearchdescription+xml" - title="[% terms.Bugzilla %]" href="./search_plugin.cgi"> - <link rel="shortcut icon" href="images/favicon.ico" > + title="[% terms.BugzillaTitle %]" href="./search_plugin.cgi"> [% Hook.process("additional_header") %] </head> @@ -250,6 +233,7 @@ <body onload="[% onload %]" class="[% urlbase.replace('^https?://','').replace('/$','').replace('[-~@:/.]+','-') FILTER css_class_quote %] + skin-[% user.settings.skin.value FILTER css_class_quote %] [% FOREACH class = bodyclasses %] [% ' ' %][% class FILTER css_class_quote %] [% END %] yui-skin-sam"> @@ -260,12 +244,95 @@ <div id="header"> +[% IF user.settings.skin.value == 'Mozilla' || user.settings.skin.value == 'Mozilla-OpenSans' %] + <div class="wrapper"> + <table border="0" cellspacing="0" cellpadding="0" id="titles"> + <tr> + <td id="title"> + <a href="./" title="Home">[% terms.BugzillaTitle %]</a> + </td> + <td> + [% Hook.process("message") %] + </td> + <td id="moz_login"> + [% IF user.id %] + <ul class="links"> + <li class="dropdown"> + <span class="anchor">[% user.login FILTER html %]</span> + <ul> + [% IF user.showmybugslink %] + [% filtered_username = user.login FILTER uri %] + <li><a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">My [% terms.Bugs %]</a></li> + [% END %] + <li><a href="page.cgi?id=mydashboard.html">My Dashboard</a></li> + <li><a href="user_profile">My Profile</a></li> + <li><a href="page.cgi?id=user_activity.html&action=run&who=[% user.login FILTER uri %]">My Activity</a></li> + <li><a href="request.cgi?requester=[% user.login FILTER uri %]&requestee=[% user.login FILTER uri %]&do_union=1&group=type&action=queue">My Requests</a></li> + <li><a href="userprefs.cgi">Preferences</a></li> + [% IF user.in_group('tweakparams') || user.in_group('editusers') || user.can_bless + || (Param('useclassification') && user.in_group('editclassifications')) + || user.in_group('editcomponents') || user.in_group('admin') || user.in_group('creategroups') + || user.in_group('editkeywords') || user.in_group('bz_canusewhines') + || user.get_products_by_permission("editcomponents").size %] + <li><a href="admin.cgi">Administration</a></li> + [% END %] + [% IF user.authorizer.can_logout %] + <li><a href="index.cgi?logout=1">Log out</a></li> + [% END %] + [% IF sudoer %] + <li> + <a href="relogin.cgi?action=end-sudo">End sudo session impersonating [% user.login FILTER html %]</a> + </li> + [% END %] + </ul> + </li> + </ul> + [% ELSE %] + <ul class="login-links"> + [% IF Param('createemailregexp') + && user.authorizer.user_can_create_account %] + <li id="moz_new_account_container_top"><a href="createaccount.cgi">New Account</a></li> + [% END %] + + [%# Only display one login form when we're on a LOGIN_REQUIRED page. That + # way, we're guaranteed that the user will use the form that has + # hidden_fields in it (the center form) instead of this one. Also, it's + # less confusing to have one form (as opposed to three) when you're + # required to log in. + #%] + [% IF user.authorizer.can_login && !Bugzilla.page_requires_login %] + [% PROCESS "account/auth/login-small.html.tmpl" qs_suffix = "_top" %] + [% END %] + </ul> + [% END %] + </td> + <td id="moz_tab"> + <a href="https://www.mozilla.org/" title="Mozilla - Home of the Mozilla Project"> + <img src="skins/contrib/Mozilla/tabzilla.png" border="0" height="42" width="154"></a> + </td> + </tr> + </table> + + [%# display the version number on the index page %] + [% IF title == "$terms.Bugzilla Main Page" %] + <div id="bugzilla_version"> + [% header_addl_info FILTER html %] + </div> + [% END %] + + [% PROCESS "global/common-links.html.tmpl" qs_suffix = "_top" %] + + </div> + +[% ELSE %] + [% INCLUDE global/banner.html.tmpl %] <table border="0" cellspacing="0" cellpadding="0" id="titles"> <tr> <td id="title"> - <p>[% terms.Bugzilla %] + <p>[% terms.BugzillaTitle %] + [% Hook.process("message") %] [% " – $header" IF header %]</p> </td> @@ -302,52 +369,34 @@ </td></tr></table> [% PROCESS "global/common-links.html.tmpl" qs_suffix = "_top" %] + +[% END %] + </div> [%# header %] <div id="bugzilla-body"> +[%# in most cases the "header" variable provides redundant information, however + # there are exceptions where not displaying this text is problematic. %] +[% IF (user.settings.skin.value == 'Mozilla' || user.settings.skin.value == 'Mozilla-OpenSans') + && template.name.match('^attachment/') + && !header.match('^Bug \d+$') +%] + <h2>[% header FILTER none %]</h2> +[% END %] + [% IF Param('announcehtml') %] [% Param('announcehtml') FILTER none %] [% END %] [% IF message %] -<div id="message">[% message %]</div> + <div id="message">[% message %]</div> [% END %] [% BLOCK format_css_link %] - [% IF style_url.match('/IE-fixes\.css') %] - <!--[if lte IE 7]> - [%# Internet Explorer treats [if IE] HTML comments as uncommented. - # We use it to import CSS fixes so that Bugzilla looks decent on IE 7 - # and below. - #%] - [% END %] - - [% IF css_set_name == 'standard' - OR css_set_name == user.settings.skin.value - %] - [% SET css_rel = 'stylesheet' %] - [% SET css_set_display_name = setting_descs.${user.settings.skin.value} - || user.settings.skin.value %] - [% ELSE %] - [% SET css_rel = 'alternate stylesheet' %] - [% SET css_set_display_name = setting_descs.$css_set_name || css_set_name %] - [% END %] - - [% IF css_set_name == 'standard' %] - [% SET css_title_link = '' %] - [% ELSE %] - [% css_title_link = BLOCK ~%] - title="[% css_set_display_name FILTER html %]" - [% END %] - [% END %] - - <link href="[% style_url FILTER html %]" rel="[% css_rel FILTER none %]" - type="text/css" [% css_title_link FILTER none %]> - - [% '<![endif]-->' IF style_url.match('/IE-fixes\.css') %] + <link href="[% asset_url FILTER html %]" rel="stylesheet" type="text/css"> [% END %] [% BLOCK format_js_link %] - <script type="text/javascript" src="[% javascript_url FILTER mtime FILTER html %]"></script> + <script type="text/javascript" src="[% asset_url FILTER mtime FILTER html %]"></script> [% END %] diff --git a/template/en/default/global/help.html.tmpl b/template/en/default/global/help.html.tmpl deleted file mode 100644 index c0ff819ce..000000000 --- a/template/en/default/global/help.html.tmpl +++ /dev/null @@ -1,33 +0,0 @@ -[%# 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): Gervase Markham <gerv@gerv.net> - #%] - -[% USE Bugzilla %] -[% cgi = Bugzilla.cgi %] - -[% IF cgi.param("help") %] - <script type="text/javascript"> <!-- - [% FOREACH help_name = help_html.keys %] - g_helpTexts["[% help_name FILTER js %]"] = - "[%- help_html.$help_name FILTER js -%]"; - [% END %] - // --> - </script> -[% END %] - diff --git a/template/en/default/global/messages.html.tmpl b/template/en/default/global/messages.html.tmpl index 6cc15ccd8..0f408842f 100644 --- a/template/en/default/global/messages.html.tmpl +++ b/template/en/default/global/messages.html.tmpl @@ -652,6 +652,7 @@ [% IF changes.inclusions.defined || changes.exclusions.defined %] <li>The inclusions and exclusions lists have been updated</li> [% END %] + [% Hook.process('flag_type_updated_fields') %] </ul> [% ELSE %] No changes made to flag type <em>[% flagtype.name FILTER html %]</em>. diff --git a/template/en/default/global/setting-descs.none.tmpl b/template/en/default/global/setting-descs.none.tmpl index a0b11f048..5ba100183 100644 --- a/template/en/default/global/setting-descs.none.tmpl +++ b/template/en/default/global/setting-descs.none.tmpl @@ -52,7 +52,10 @@ "email_format" => "Preferred email format", "html" => "HTML", "text_only" => "Text Only", - } + "bugmail_new_prefix" => "Add 'New:' to subject line of email sent when a new $terms.bug is filed", + "possible_duplicates" => "Display possible duplicates when reporting a new $terms.bug", + "requestee_cc" => "Automatically add me to the CC list of $terms.bugs I am requested to review", + } %] [% Hook.process('settings') %] diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index 8de412413..b04deb4d6 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -160,6 +160,8 @@ use [% ELSIF action == "approve" %] approve + [% ELSIF action == "admin_activity" %] + view admin activity for [% ELSE %] [%+ Hook.process('auth_failure_action') %] [% END %] @@ -182,6 +184,8 @@ classifications [% ELSIF object == "components" %] components + [% ELSIF object == "comment_tags" %] + comment tags [% ELSIF object == "custom_fields" %] custom fields [% ELSIF object == "field_values" %] @@ -270,6 +274,8 @@ <li>A ticket in a Trac installation.</li> <li>A b[% %]ug in a MantisBT installation.</li> <li>A b[% %]ug on sourceforge.net.</li> + <li>An issue on github.com.</li> + <li>A question on support.mozilla.org</li> </ul> [% ELSIF reason == 'id' %] There is no valid [% terms.bug %] id in that URL. @@ -322,6 +328,25 @@ Comments cannot be longer than [%+ constants.MAX_COMMENT_LENGTH FILTER html %] characters. + [% ELSIF error == "comment_tag_disabled" %] + [% title = "Comment Tagging Disabled" %] + The comment tagging is not enabled. + + [% ELSIF error == "comment_tag_invalid" %] + [% title = "Invalid Comment Tag" %] + The comment tag "[% tag FILTER html %]" contains invalid characters or + words. + + [% ELSIF error == "comment_tag_too_long" %] + [% title = "Comment Tag Too Long" %] + Comment tags cannot be longer than + [%+ constants.MAX_COMMENT_TAG_LENGTH FILTER html %] characters. + + [% ELSIF error == "comment_tag_too_short" %] + [% title = "Comment Tag Too Short" %] + Comment tags must be at least + [%+ constants.MIN_COMMENT_TAG_LENGTH FILTER html %] characters. + [% ELSIF error == "auth_classification_not_enabled" %] [% title = "Classification Not Enabled" %] Sorry, classification is not enabled. @@ -469,6 +494,15 @@ The first letter of your extension's name must be a capital letter. (You specified '[% name FILTER html %]'.) + [% ELSIF error == "feature_disabled" %] + The [% install_string("feature_$feature") FILTER html %] feature is not + available in this [% terms.Bugzilla %]. + [% IF user.in_group('admin') %] + If you would like to enable this feature, please run + <kbd>checksetup.pl</kbd> to see how to install the necessary + requirements for this feature. + [% END %] + [% ELSIF error == "field_already_exists" %] [% title = "Field Already Exists" %] The field '[% field.name FILTER html %]' @@ -618,6 +652,11 @@ <br>Alternately, if your attachment is an image, you could convert it to a compressible format like JPG or PNG and try again. + [% ELSIF error == "flag_requestee_disabled" %] + [% title = "Flag Requestee Disabled" %] + You can't ask <em>[% requestee.identity FILTER html %]</em> because that + account is disabled. + [% ELSIF error == "flag_requestee_needs_privs" %] [% title = "Flag Requestee Needs Privileges" %] [% requestee.identity FILTER html %] does not have permission to set the @@ -699,6 +738,16 @@ You are not allowed to edit properties of the '[% flagtype.name FILTER html %]' flag type, because this flag type is not available for the products you can administer. + [% ELSIF error == "flag_not_unique" %] + [% title = "Flag not Unique" %] + The flag '[% value FILTER html %]' has been set multiple times. + You must specify the id value to update the flag. + + [% ELSIF error == "flag_type_not_unique" %] + [% title = "Flag Type not Unique" %] + The flag type '[% value FILTER html %]' matches several flag types. + You must specify the type id value to update or add a flag. + [% ELSIF error == "flag_type_not_multiplicable" %] [% docslinks = {'flags-overview.html' => 'An overview on Flags', 'flags.html' => 'Using Flags'} %] @@ -943,6 +992,10 @@ Invalid datasets <em>[% datasets.join(":") FILTER html %]</em>. Only digits, letters and colons are allowed. + [% ELSIF error == "invalid_flag_id" %] + [% title = "Invalid Flag ID" %] + The flag id [% flag_id FILTER html %] is invalid. + [% ELSIF error == "invalid_format" %] [% title = "Invalid Format" %] The format "[% format FILTER html %]" is invalid (must be one of @@ -1013,6 +1066,11 @@ [%+ constants.LOGIN_LOCKOUT_INTERVAL FILTER html %] minutes. [% END %] + [% ELSIF error == "invalid_cookies_or_token" %] + [% title = "Invalid Cookies or Token" %] + The cookies or token provide were not valid or have expired. + You may login again to get new cookies or a new token. + [% ELSIF error == "json_rpc_get_method_required" %] When using JSON-RPC over GET, you must specify a 'method' parameter. See the documentation at @@ -1037,6 +1095,13 @@ For security reasons, you must use HTTP POST to call the '[% method FILTER html %]' method. + [% ELSIF error == "rest_invalid_resource" %] + A REST API resource was not found for '[% method FILTER html +%] [%+ path FILTER html %]'. + + [% ELSIF error == "get_products_invalid_type" %] + The product type '[% type FILTER html %]' is invalid. Valid choices + are 'accessible', 'selectable', and 'enterable'. + [% ELSIF error == "keyword_already_exists" %] [% title = "Keyword Already Exists" %] A keyword with the name [% name FILTER html %] already exists. @@ -1350,6 +1415,40 @@ [% END %] </ul> + [% ELSIF error == "password_not_complex" %] + [% title = "Password Fails Requirements" %] + [% passregex = Param('password_complexity') %] + Password must contain at least one: + <ul> + [% IF passregex.search('letters') %] + <li>UPPERCASE letter</li> + <li>lowercase letter</li> + [% END %] + [% IF passregex.search('numbers') %] + <li>digit</li> + [% END %] + [% IF passregex.search('specialchars') %] + <li>special character</li> + [% END %] + </ul> + + [% ELSIF error == "password_not_complex" %] + [% title = "Password Fails Requirements" %] + [% passregex = Param('password_complexity') %] + Password must contain at least one: + <ul> + [% IF passregex.search('letters') %] + <li>UPPERCASE letter</li> + <li>lowercase letter</li> + [% END %] + [% IF passregex.search('numbers') %] + <li>digit</li> + [% END %] + [% IF passregex.search('specialchars') %] + <li>special character</li> + [% END %] + </ul> + [% ELSIF error == "product_access_denied" %] [% title = "Product Access Denied" %] Either the product @@ -1538,6 +1637,17 @@ and the "matches" search can only be used with the "content" field. + [% ELSIF error == "search_grouped_field_invalid" %] + [% terms.Bugzilla %] does not support using the + "[%+ field_descs.$field FILTER html %]" ([% field FILTER html %]) + field with grouped search conditions. + + [% ELSIF error == "search_grouped_invalid_nesting" %] + You cannot nest clauses within grouped search conditions. + + [% ELSIF error == "search_grouped_field_mismatch" %] + All conditions under a groups search must use the same field. + [% ELSIF error == "search_field_operator_invalid" %] [% terms.Bugzilla %] does not support using the "[%+ field_descs.$field FILTER html %]" ([% field FILTER html %]) @@ -1610,7 +1720,7 @@ [% ELSIF error == "tag_name_too_long" %] [% title = "Tag Name Too Long" %] - The tag name must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %] + The tag must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %] characters long. [% ELSIF error == "token_does_not_exist" %] @@ -1707,6 +1817,16 @@ Sorry, but you are not allowed to (un)mark comments or attachments as private. + [% ELSIF error == "user_not_involved" %] + [% title = "User Not Involved with $terms.Bug" %] + Sorry, but you are not involved with [% terms.Bug %] [%+ + bug_id FILTER bug_link(bug_id) FILTER none %]. + + [% ELSIF error == "webdot_too_large" %] + [% title = "Dependency Graph Too Large" %] + The dependency graph contains too many [% terms.bugs %] to display (more + than [% constants.MAX_WEBDOT_BUGS FILTER html %] [%+ terms.bugs %]). + [% ELSIF error == "wrong_token_for_cancelling_email_change" %] [% title = "Wrong Token" %] That token cannot be used to cancel an email address change. @@ -1764,6 +1884,8 @@ [% error_message FILTER none %] [% END %] [% END %] + + [% Hook.process('error_message') %] [% END %] [%# We only want HTML error messages for ERROR_MODE_WEBPAGE %] diff --git a/template/en/default/global/user.html.tmpl b/template/en/default/global/user.html.tmpl index df902b451..38c1da113 100644 --- a/template/en/default/global/user.html.tmpl +++ b/template/en/default/global/user.html.tmpl @@ -27,12 +27,19 @@ [% FILTER collapse %] [% IF user.id %] <a class="email" href="mailto:[% who.email FILTER html %]" - title="[% who.identity FILTER html %]"> + onclick="return show_usermenu(event, [% who.id FILTER none %], '[% who.email FILTER js %]', + [% user.in_group('editusers') || user.bless_groups.size > 0 ? "true" : "false" %]);" + title="[% who.identity FILTER html %]"> [%- END -%] - [% IF who.name %] - <span class="fn">[% who.name FILTER html %]</span> - [% ELSE %] - [% who.login FILTER email FILTER html %] + [% IF who %] + [% IF who.name %] + <span class="fn">[% who.name FILTER html %]</span> + [% ELSE %] + <span class="ln">[% who.login FILTER email FILTER html %]</span> + [% END %] + [% IF user.id && who.id %] + <span class="arrow_container"><span class="arrow_down"></span></span> + [% END %] [% END %] [% '</a>' IF user.id %] [% END %] diff --git a/template/en/default/global/userselect.html.tmpl b/template/en/default/global/userselect.html.tmpl index 1d0395043..d7b4786f9 100644 --- a/template/en/default/global/userselect.html.tmpl +++ b/template/en/default/global/userselect.html.tmpl @@ -30,6 +30,7 @@ # multiple: optional, do multiselect box, value is size (height) of box # custom_userlist: optional, specify a limited list of users to use # field_title: optional, extra information to display as a tooltip + # placeholder: optional, input only; placeholder attribute value #%] [% IF Param("usemenuforusers") %] @@ -92,6 +93,7 @@ [% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %] [% IF field_title %] title="[% field_title FILTER html %]" [% END %] [% IF size %] size="[% size FILTER html %]" [% END %] + [% IF placeholder %] placeholder="[% placeholder FILTER html %]" [% END %] [% IF id %] id="[% id FILTER html %]" [% END %] > [% IF feature_enabled('jsonrpc') && Param('ajax_user_autocompletion') && id %] |