Index: appengine/monorail/templates/tracker/issue-search-tips.ezt |
diff --git a/appengine/monorail/templates/tracker/issue-search-tips.ezt b/appengine/monorail/templates/tracker/issue-search-tips.ezt |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a57c2e2efe948065d553debc681b09383ceccd8a |
--- /dev/null |
+++ b/appengine/monorail/templates/tracker/issue-search-tips.ezt |
@@ -0,0 +1,331 @@ |
+[define category_css]css/ph_detail.css[end] |
+[include "../framework/master-header.ezt" "showtabs"] |
+ |
+[# Note: No UI element permission checking needed on this page. ] |
+ |
+<div id="searchtips"> |
+ |
+[# TODO(jrobbins): this page should be redone in the standard Google] |
+[# on-line help system. For now, it helps to document our planned search] |
+[# features. ] |
+ |
+ |
+<h3>Basic issue search</h3> |
+ |
+<p>In most cases you can find the issues that you want to work with |
+very easily by using the issue list headers or by entering a few |
+simple keywords into the main search field.</p> |
+ |
+<p>Whenever you visit the "<a href="list">Issues</a>" tab in your |
+project, you are presented with a table of all open issues. If you |
+see too many results, you can quickly filter your results by clicking |
+on the table headers and choosing a specific value from the "Show |
+only:" submenu.</p> |
+ |
+[# TODO screenshot ] |
+ |
+<p>The main search field consists of two parts:</p> |
+ |
+<ul> |
+ <li>A drop-down selection of search scopes, e.g, "All issues" or just "Open issues".</li> |
+ <li>A search text field where you can enter search terms.</li> |
+</ul> |
+ |
+[# TODO screenshot ] |
+ |
+<p>In the text field, you may enter simple search terms, or add any of |
+the search operators described below.</p> |
+ |
+<p>You can also use the search text field to jump directly to any |
+issue by entering its issue number. If you wish to search for issues |
+that contain a number, rather than jumping to that issue, enclose the |
+number in quotation marks.</p> |
+ |
+<p>Behind the scenes, the search scope is simply an additional set of |
+search terms that is automatically combined with the user's search |
+terms to make a complete query.</p> |
+ |
+ |
+<h3>Advanced issue search</h3> |
+ |
+<p>The <a href="advsearch">Advanced Search</a> page helps you |
+compose a complex query. The advanced search form breaks the search |
+down into several popular criteria and allows you to specify each one |
+easily. The search criteria boil down to the same thing as the search |
+operators described below, but you don't need to remember the operator |
+names.</p> |
+ |
+ |
+ |
+<h3>Search operators</h3> |
+ |
+<p>Just like the Google web search that everyone knows and loves, you |
+can search for issues by simply entering a few words. However, you |
+may get a few more results than you expected. When you need to search |
+more precisely, you can use search operators for more power.</p> |
+ |
+<h4>Searching in specific fields</h4> |
+ |
+<p>Normal search terms will match words found in any field of an |
+issue. You can narrow the search to a specific field by using the |
+name of the field. The built-in field operators are summary:, |
+description:, comment:, status:, reporter:, owner:, cc:, commentby:, |
+and label:. You can limit your search to just open issues by using |
+is:open, or to just closed issues by using isnot:open.</p> |
+[# TODO(jrobbins): dateopened:] |
+ |
+<p>For example, here's how to search for issues with the word |
+<b>calculation</b> in the summary field.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="summary:calculation"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>When searching for issues owned by a specific user, you can use his |
+or her username. When referring to yourself, you can also use the |
+special term <b>me</b>. For example, this restricts the search to |
+issues that are owned by you.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="owner:username"> |
+ <input type="submit" name="btn" value="Search"> |
+</form> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="owner:me"> |
+ <input type="submit" name="btn" [if-any logged_in_user][else]disabled=disabled[end] value="Search"> |
+ [if-any logged_in_user][else] |
+ <span style="white-space:nowrap"><a href="[login_url]" |
+ >Sign in</a> to try this example</span> |
+ [end]</p> |
+</form> |
+ |
+<p>Rather than have a large number of predefined fields, our issue |
+tracker stores many issue details as labels.</p> |
+ |
+<p>For example, if you labeled security-related issues with the label |
+<b>Security</b>, here's how to search for them.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="label:security"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<p>In addition to simple one-word labels, you can use two part labels |
+that specify an attribute and a value, like <b>Priority-High</b>, |
+<b>Priority-Medium</b>, and <b>Priority-Low</b>. You can search for |
+these with the label: operator, or you can use the first part of the |
+label name like an operator.</p> |
+ |
+<p>For example, if you labeled high priority issues with |
+<b>Priority-High</b>, here's one way to search for them.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="label:Priority-High"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>And, here is a more compact way to do the same search.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="Priority:High"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>For <b>components</b>, the default search will find issues in that component |
+and all of its subcomponents.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="component:UI"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>And of course, you can combine any of these field operators.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="is:open owner:me Hostlist:Fixit"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<h3>Empty (or non-empty) field search</h3> |
+ |
+<p>For each built-in field operator, you can use the 'has' operator to search for |
+issues with empty or non-empty fields.</p> |
+ |
+<p>For example, here's how to search for issues whose owner field is non-empty, |
+assigned to someone.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="has:owner"> |
+ <input type="submit" name="btn" value="Search"> |
+</form> |
+ |
+<p>Or, you can use '-has' operator for negation, to search for issues with empty |
+fields.</p> |
+ |
+<p>For example, here's how to search for issues whose owner field is empty |
+because no one is assigned to it.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="-has:owner"> |
+ <input type="submit" name="btn" value="Search"> |
+</form> |
+ |
+ |
+<h3>Multiple values in search terms</h3> |
+ |
+[# TODO(jrobbins): put back OR documentation when OR is working.] |
+ |
+<p>You can search for two values for one field, or two labels |
+with the same prefix by using.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="Priority:High,Medium"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<h3>Exact value search</h3> |
+ |
+<p>You can search for issues that exactly match the given term by using |
+the search operator '='.</p> |
+ |
+<p>For example, searching for 'Milestone=2009' only matches issues with the |
+label 'Milestone-2009', while searching for 'Milestone:2009' matches issues |
+with the labels 'Milestone-2009', 'Milestone-2009-Q1', 'Milestone-2009-Q3', |
+etc.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="Milestone=2009"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>Similarly, using exact matching on components will get you only those issues |
+that are in that component, not including any of its descendants.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="component=UI"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<h3>Star search</h3> |
+ |
+<p>Any logged in user can mark any issue with a star. The star |
+indicates interest in the issue.</p> |
+ |
+<p>For example, to quickly see all the issues in this project that you |
+have starred, you could use the following:</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="is:starred"> |
+ <input type="submit" name="btn" [if-any logged_in_user][else]disabled="disabled"[end] value="Search"> |
+ [if-any logged_in_user][else] |
+ <span style="white-space:nowrap"><a href="[login_url]" |
+ >Sign in</a> to try this example</span> |
+ [end]</p> |
+</form> |
+ |
+<p>And, to see the issues that exactly three users have starred, use the following:</p> |
+[# TODO(jrobbins): should search for issues with *at least* N stars.] |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="stars:3"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<h3>Jump to issue and numeric search</h3> |
+ |
+<p>You can jump directly to a specific issue by entering its ID in the |
+search field.</p> |
+ |
+<p>For example, to jump to issue 1, just search for 1. If there is no |
+existing issue with that ID, the system will search for issues that |
+contain that number anywhere in the issue.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="1"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>If you just want to search for issues that contain the number 1, without |
+jumping to issue 1, enclose the number in quotation marks.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value=""1""> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<h3>Attachment search</h3> |
+ |
+<p>Users can attach files to any issues, either when issues are created or as |
+part of issue comments.</p> |
+ |
+<p>To quickly see all the issues that have attachments, use the following:</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="has:attachment"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>Or, you can search for a specific filename of the attachment.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="attachment:screenshot"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>You can also search for the file extension of the attachment.</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="attachment:png"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+<h3>Date range search</h3> |
+ |
+<p>You can perform searches based on date ranges.</p> |
+ |
+<p>This search syntax is divided into two parts, the action and the date, |
+[[]action]:[[]date]</p> |
+ |
+<p>Supported actions are: 'opened-after', 'opened-before', |
+'modified-after', 'modified-before', 'closed-after', and 'closed-before'. |
+And the date must to be specified as 'YYYY-MM-DD', 'YYYY/MM/DD' or 'today-N'.</p> |
+ |
+<p>For example, if you want to search for issues opened after 2009/4/1, you |
+could do the following:</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="opened-after:2009/4/1"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+<p>Or, if you want to search for issues modified 20 days before today's date, |
+you could do the following:</p> |
+ |
+<form action="list" method="GET"> |
+ <p><input type="text" size="25" name="q" value="modified-before:today-20"> |
+ <input type="submit" name="btn" value="Search"></p> |
+</form> |
+ |
+ |
+</div> |
+ |
+[include "../framework/footer-script.ezt"] |
+ |
+<script type="text/javascript" nonce="[nonce]"> |
+runOnLoad(function() { |
+ _fetchOptions( |
+ '[projectname]', 'issueOptions', |
+ CS_env.token, [project.cached_content_timestamp]); |
+ _onload(); |
+}); |
+</script> |
+ |
+[include "../framework/master-footer.ezt"] |