Merge lp://staging/~allenap/launchpad/ui-convert-malone-index-3.0-bug-416942 into lp://staging/launchpad

Proposed by Gavin Panella
Status: Merged
Merged at revision: not available
Proposed branch: lp://staging/~allenap/launchpad/ui-convert-malone-index-3.0-bug-416942
Merge into: lp://staging/launchpad
Diff against target: None lines
To merge this branch: bzr merge lp://staging/~allenap/launchpad/ui-convert-malone-index-3.0-bug-416942
Reviewer Review Type Date Requested Status
Eleanor Berger (community) ui Approve
Abel Deuring (community) Approve
Review via email: mp+11208@code.staging.launchpad.net
To post a comment you must log in.
Revision history for this message
Gavin Panella (allenap) wrote :

This does the mechanical changes to the malone index page
(i.e. https://bugs.launchpad.dev/) to convert it to 3.0 layout. It
looks okay, but frankly, it needs some design before it'll make much
sense.

I manually changed the side links (Report a bug and Take a tour) into
an involvement menu, but it was suggested (don't remember who by) that
the links it contained (Take a tour and Report a bug) should be folded
into the main content of the page (Take a tour) or dropped from the
page (Report a bug). Apparently, we're going to phase out reporting
bugs from the bugs front page, so this makes sense.

I changed the stats portlet into a 3.0 stats portlet and dropped the
application-footer class, because it looked wrong. As I said before,
this pages needs more design, but it looks crap in production already
so I don't think it'll do any harm to land this as-is.

I've also added a Related pages portlet, just because I've noticed
before that the only link to the list of external bug trackers is from
the stats blurb. I think it needs a better link, if only to have
something concrete to refer to from the help wiki. It also has a link
to the CVE tracker, just for good measure, and because it has a cool
icon.

./bin/test -vvct 'lp/bugs.*(malone|front-?page)'

Lint free.

Revision history for this message
Gavin Panella (allenap) wrote :

I also remembered I meant to remove MaloneContextMenu as it's unused, so here's a small additional diff for that:

=== modified file 'lib/canonical/launchpad/zcml/launchpad.zcml'
--- lib/canonical/launchpad/zcml/launchpad.zcml 2009-09-03 12:36:28 +0000
+++ lib/canonical/launchpad/zcml/launchpad.zcml 2009-09-04 15:32:52 +0000
@@ -322,11 +322,6 @@
       classes="LaunchpadRootFacets"
       />

- <browser:menus
- module="lp.bugs.browser.malone"
- classes="MaloneContextMenu"
- />
-
   <!-- This is a view on TALES CONTEXTS rather than all dicts. -->
   <browser:page
       for="*"

=== modified file 'lib/lp/bugs/browser/malone.py'
--- lib/lp/bugs/browser/malone.py 2009-09-04 15:06:34 +0000
+++ lib/lp/bugs/browser/malone.py 2009-09-04 15:32:52 +0000
@@ -6,7 +6,7 @@
 __metaclass__ = type
 __all__ = [
     'MaloneApplicationNavigation',
- 'MaloneContextMenu',
+ 'MaloneRelatedPages',
     ]

@@ -16,7 +16,7 @@
 import canonical.launchpad.layers

 from canonical.launchpad.webapp import (
- ContextMenu, Link, Navigation, canonical_url, stepto)
+ Link, Navigation, canonical_url, stepto)
 from canonical.launchpad.webapp.authorization import check_permission
 from canonical.launchpad.webapp.menu import NavigationMenu

@@ -69,16 +69,6 @@
         return bug

-class MaloneContextMenu(ContextMenu):
- # XXX mpt 2006-03-27: No longer visible on Bugs front page.
- usedfor = IMaloneApplication
- links = ['cvetracker']
-
- def cvetracker(self):
- text = 'CVE tracker'
- return Link('cve/', text, icon='cve')
-
-
 class MaloneRelatedPages(NavigationMenu):

     facet = 'bugs'

Revision history for this message
Abel Deuring (adeuring) :
review: Approve
Revision history for this message
Eleanor Berger (intellectronica) wrote :

We agreed that this page could do with a redesign at some point, but for now this conversion is sufficient.

review: Approve (ui)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/bugs/browser/configure.zcml'
2--- lib/lp/bugs/browser/configure.zcml 2009-08-27 15:11:38 +0000
3+++ lib/lp/bugs/browser/configure.zcml 2009-09-04 15:06:34 +0000
4@@ -209,12 +209,12 @@
5 facet="bugs"
6 permission="zope.Public">
7 <browser:page
8- name="+about"
9- template="../templates/malone-about.pt"/>
10- <browser:page
11 name="+portlet-stats"
12 template="../templates/malone-portlet-stats.pt"/>
13 </browser:pages>
14+ <browser:menus
15+ classes="MaloneRelatedPages"
16+ module="lp.bugs.browser.malone"/>
17 <browser:page
18 name="+filebug"
19 for="lp.bugs.interfaces.malone.IMaloneApplication"
20
21=== modified file 'lib/lp/bugs/browser/malone.py'
22--- lib/lp/bugs/browser/malone.py 2009-06-25 00:40:31 +0000
23+++ lib/lp/bugs/browser/malone.py 2009-09-04 15:06:34 +0000
24@@ -18,7 +18,9 @@
25 from canonical.launchpad.webapp import (
26 ContextMenu, Link, Navigation, canonical_url, stepto)
27 from canonical.launchpad.webapp.authorization import check_permission
28+from canonical.launchpad.webapp.menu import NavigationMenu
29
30+from lp.bugs.browser.bug import MaloneView
31 from lp.bugs.interfaces.bug import IBugSet
32 from lp.bugs.interfaces.bugtracker import IBugTrackerSet
33 from lp.bugs.interfaces.cve import ICveSet
34@@ -75,3 +77,20 @@
35 def cvetracker(self):
36 text = 'CVE tracker'
37 return Link('cve/', text, icon='cve')
38+
39+
40+class MaloneRelatedPages(NavigationMenu):
41+
42+ facet = 'bugs'
43+ title = 'Related pages'
44+ usedfor = MaloneView
45+ links = ['bugtrackers', 'cvetracker']
46+
47+ def bugtrackers(self):
48+ url = canonical_url(getUtility(IBugTrackerSet))
49+ text = "Bug trackers"
50+ return Link(url, text, icon='bug')
51+
52+ def cvetracker(self):
53+ text = 'CVE tracker'
54+ return Link('cve/', text, icon='cve')
55
56=== modified file 'lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt'
57--- lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt 2009-06-12 16:36:02 +0000
58+++ lib/lp/bugs/stories/bugs/xx-front-page-statistics.txt 2009-09-04 15:05:26 +0000
59@@ -8,11 +8,10 @@
60 * number of CVE bug links
61
62 >>> anon_browser.open('http://bugs.launchpad.dev/')
63- >>> statistics = find_tag_by_id(
64- ... anon_browser.contents, 'application-footer')
65- >>> for text in statistics.findAll(text=True):
66- ... if text.strip():
67- ... print text
68+ >>> statistics = find_portlet(
69+ ... anon_browser.contents, 'Statistics')
70+ >>> print extract_text(statistics)
71+ Statistics
72 14 bugs reported across 7 projects
73 including 12 links to 8 bug trackers
74 4 bugs are shared across multiple projects
75@@ -31,4 +30,3 @@
76 >>> anon_browser.getLink('CVE entries').click()
77 >>> anon_browser.title
78 'Launchpad CVE tracker'
79-
80
81=== modified file 'lib/lp/bugs/stories/bugs/xx-malone-homepage.txt'
82--- lib/lp/bugs/stories/bugs/xx-malone-homepage.txt 2009-06-12 16:36:02 +0000
83+++ lib/lp/bugs/stories/bugs/xx-malone-homepage.txt 2009-09-04 15:06:34 +0000
84@@ -3,7 +3,24 @@
85 >>> browser.open('http://bugs.launchpad.dev/')
86 >>> browser.url
87 'http://bugs.launchpad.dev/'
88- >>> print browser.contents
89- <!DOCTYPE...
90- ...Bug tracking...
91- ...
92+
93+ >>> print_location(browser.contents)
94+ Hierarchy: None displayed
95+ Tabs:
96+ * Launchpad Home - http://launchpad.dev/
97+ * Code - http://code.launchpad.dev/
98+ * Bugs (selected) - http://bugs.launchpad.dev/
99+ * Blueprints - http://blueprints.launchpad.dev/
100+ * Translations - http://translations.launchpad.dev/
101+ * Answers - http://answers.launchpad.dev/
102+ Main heading: Bug tracking
103+
104+There are a few related pages linked in a portlet:
105+
106+ >>> related_pages = find_portlet(browser.contents, 'Related pages')
107+ >>> for link in related_pages.findAll('a'):
108+ ... print "%s\n --> %s" % (extract_text(link), link.get('href'))
109+ Bug trackers
110+ --> http://bugs.launchpad.dev/bugs/bugtrackers
111+ CVE tracker
112+ --> http://bugs.launchpad.dev/bugs/cve
113
114=== modified file 'lib/lp/bugs/stories/guided-filebug/xx-filing-security-bugs.txt'
115--- lib/lp/bugs/stories/guided-filebug/xx-filing-security-bugs.txt 2009-06-12 16:36:02 +0000
116+++ lib/lp/bugs/stories/guided-filebug/xx-filing-security-bugs.txt 2009-08-24 15:27:48 +0000
117@@ -3,8 +3,7 @@
118 There's an option to file a security related bug on the +filebug page.
119 It's only visible on the second step, after the summary has been submitted.
120
121- >>> user_browser.open('http://bugs.launchpad.dev/')
122- >>> user_browser.getLink('Report a bug').click()
123+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
124 >>> user_browser.getControl('This bug is a security vulnerability')
125 Traceback (most recent call last):
126 ...
127
128=== modified file 'lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-distribution.txt'
129--- lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-distribution.txt 2009-07-24 15:35:47 +0000
130+++ lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-distribution.txt 2009-08-24 15:27:48 +0000
131@@ -2,8 +2,7 @@
132
133 On the Bugs front page there is a link to file a bug.
134
135- >>> user_browser.open('http://bugs.launchpad.dev/')
136- >>> user_browser.getLink('Report a bug').click()
137+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
138 >>> user_browser.title
139 'Report a bug'
140
141@@ -41,8 +40,7 @@
142 After we selected a target and entered a summary, a list of possible
143 duplicates are presented.
144
145- >>> user_browser.open('http://bugs.launchpad.dev/')
146- >>> user_browser.getLink('Report a bug').click()
147+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
148
149 >>> user_browser.getControl('Distribution').selected = True
150 >>> user_browser.getControl(
151@@ -72,8 +70,7 @@
152 When reporting a new bug a user might enter a summary, leaving the
153 location as it is (which is Ubuntu, no package):
154
155- >>> user_browser.open('http://bugs.launchpad.dev/')
156- >>> user_browser.getLink('Report a bug').click()
157+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
158 >>> user_browser.getControl('Summary').value = 'Foo'
159 >>> user_browser.getControl('Continue').click()
160 >>> user_browser.url
161
162=== modified file 'lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-package.txt'
163--- lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-package.txt 2009-07-24 15:35:47 +0000
164+++ lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-package.txt 2009-08-24 15:27:48 +0000
165@@ -2,8 +2,7 @@
166
167 On the Bugs front page there is a link to file a bug.
168
169- >>> user_browser.open('http://bugs.launchpad.dev/')
170- >>> user_browser.getLink('Report a bug').click()
171+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
172 >>> user_browser.title
173 'Report a bug'
174
175@@ -39,8 +38,7 @@
176
177 If we enter an non-existent package, we get an error message.
178
179- >>> user_browser.open('http://bugs.launchpad.dev/')
180- >>> user_browser.getLink('Report a bug').click()
181+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
182 >>> user_browser.getControl('Distribution').selected = True
183 >>> user_browser.getControl(
184 ... name='field.bugtarget.distribution').value = ['ubuntu']
185
186=== modified file 'lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-product.txt'
187--- lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-product.txt 2009-07-24 15:35:47 +0000
188+++ lib/lp/bugs/stories/guided-filebug/xx-frontpage-filebug-product.txt 2009-08-24 16:11:21 +0000
189@@ -2,8 +2,7 @@
190
191 On the Bugs front page there is a link to file a bug.
192
193- >>> user_browser.open('http://bugs.launchpad.dev/')
194- >>> user_browser.getLink('Report a bug').click()
195+ >>> user_browser.open('http://bugs.launchpad.dev/bugs/+filebug')
196 >>> user_browser.title
197 'Report a bug'
198
199
200=== removed file 'lib/lp/bugs/templates/malone-about.pt'
201--- lib/lp/bugs/templates/malone-about.pt 2009-07-17 17:59:07 +0000
202+++ lib/lp/bugs/templates/malone-about.pt 1970-01-01 00:00:00 +0000
203@@ -1,56 +0,0 @@
204-<html
205- xmlns="http://www.w3.org/1999/xhtml"
206- xmlns:tal="http://xml.zope.org/namespaces/tal"
207- xmlns:metal="http://xml.zope.org/namespaces/metal"
208- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
209- xml:lang="en"
210- lang="en"
211- dir="ltr"
212- metal:use-macro="context/@@main_template/master"
213- i18n:domain="malone"
214->
215- <body>
216- <metal:heading fill-slot="pageheading">
217- <h1>About the Launchpad Bug Tracker</h1>
218- </metal:heading>
219-
220-<metal:leftportlets fill-slot="portlets_one">
221- <div tal:replace="structure context/@@+portlet-stats" />
222-</metal:leftportlets>
223-
224-<div metal:fill-slot="main">
225-
226- <p>
227- The Launchpad Bug Tracker is a collaborative bug tracker for the
228- Free Software universe. It works a bit differently from other
229- trackers.
230- </p>
231- <h2>One bug, many places</h2>
232- <p>
233- Some people find bugs in software they install directly from its
234- developers.
235- Other people find bugs in software packages they install as part of
236- a distribution.
237- </p>
238- <p>
239- When these are the same bug, Launchpad can link them together.
240- Once one team fixes the bug, others can share the fix.
241- </p>
242- <h2>One world, many bug trackers</h2>
243- <p>
244- The more software teams use Launchpad, the more useful it becomes.
245- But if a team uses Bugzilla, Sourceforge, or debbugs,
246- Launchpad can link their bug reports with those in Launchpad,
247- and let you know when they&#8217;re fixed.
248- </p>
249- <h2>How to get started</h2>
250- <p>
251- To use Launchpad for your project, first
252- <a href="/projects">check whether it&#8217;s registered already</a>.
253- The admin for a project can set that project to use Launchpad
254- (this is off by default so that people don&#8217;t report bugs that
255- nobody reads).
256- </p>
257- </div>
258- </body>
259-</html>
260
261=== modified file 'lib/lp/bugs/templates/malone-index.pt'
262--- lib/lp/bugs/templates/malone-index.pt 2009-07-17 17:59:07 +0000
263+++ lib/lp/bugs/templates/malone-index.pt 2009-09-04 15:06:34 +0000
264@@ -1,77 +1,30 @@
265-<html
266+<malone-index
267 xmlns="http://www.w3.org/1999/xhtml"
268 xmlns:tal="http://xml.zope.org/namespaces/tal"
269 xmlns:metal="http://xml.zope.org/namespaces/metal"
270 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
271- xml:lang="en"
272- lang="en"
273- dir="ltr"
274- metal:use-macro="view/macro:page/applicationhome"
275- i18n:domain="malone"
276->
277- <body>
278-
279- <div metal:fill-slot="help">
280- <p>
281- Read more <a href="+about">about the Launchpad Bug Tracker</a>,
282- the collaborative bug tracker for the open source world, and how you
283- can share information about bugs in distributions and upstream.
284+ metal:use-macro="view/macro:page/main_only"
285+ i18n:domain="malone">
286+
287+ <h1 metal:fill-slot="heading">Bug tracking</h1>
288+
289+ <div metal:fill-slot="main">
290+
291+ <div class="top-portlet">
292+ <p class="error message"
293+ tal:condition="view/error_message"
294+ tal:content="view/error_message">
295+ Error message.
296 </p>
297- <ul class="info">
298- <li>
299- <a href="https://help.launchpad.net/BugTrackerEmailInterface"
300- >Sending commands by e-mail</a>
301- </li>
302- </ul>
303- </div>
304-
305- <h1 metal:fill-slot="heading">Bug tracking</h1>
306-
307- <div metal:fill-slot="main">
308-
309- <ul class="rollover buttons">
310- <li>
311- <a href="/+tour/bugs"
312- tal:attributes="href string:${rooturl}+tour/bugs">
313- <img
314- alt="Take a tour"
315- src="/+icing/but-lrg-takeatour.gif"
316- />
317- </a>
318- </li>
319- <li>
320- <a href="+filebug">
321- <img
322- alt="Report a bug"
323- src="/+icing/but-lrg-reportabug.gif"
324- />
325- </a>
326- </li>
327- </ul>
328- <p
329- tal:condition="view/error_message"
330- tal:content="view/error_message"
331- class="error message"
332- >Error message.</p>
333 <form class="central" action="/bugs/+bugs" method="get">
334 <table>
335 <tbody>
336 <tr>
337 <td style="text-align: right;">
338- <input
339- tal:replace="structure view/widgets/searchtext"
340- id="text"
341- type="text"
342- name="field.searchtext"
343- size="50"
344- />
345+ <input tal:replace="structure view/widgets/searchtext" />
346 </td>
347 <td>
348- <input
349- type="submit"
350- name="search"
351- value="Search Bug Reports"
352- />
353+ <input type="submit" name="search" value="Search Bug Reports" />
354 </td>
355 </tr>
356 <tr tal:define="options nocall:view/widgets/scope/options;
357@@ -80,24 +33,11 @@
358 style="text-align: right;">
359 <div>
360 <label>
361- <input
362- tal:replace="structure options/all"
363- name="scope"
364- type="radio"
365- value="all"
366- checked="checked"
367- />
368+ <input tal:replace="structure options/all" />
369 All projects
370 </label>
371 <label>
372- <input
373- tal:replace="structure options/project"
374- name="scope"
375- id="scope.project"
376- type="radio"
377- value="project"
378- onclick="document.getElementById('field.target').focus();"
379- />
380+ <input tal:replace="structure options/project" />
381 One project:
382 <tal:input replace="structure target_widget/inputField" />
383 </label>
384@@ -118,41 +58,47 @@
385 tal:content="structure script" />
386 </form>
387 <p id="application-summary">
388- Launchpad&rsquo;s bug tracker helps software teams to
389- collaborate on bug reports and fixes.
390- (<a href="https://help.launchpad.net/Bugs">Read our guide</a>)
391+ Launchpad&rsquo;s bug tracker helps software teams to
392+ collaborate on bug reports and fixes.
393+ (<a href="https://help.launchpad.net/Bugs">Read our guide</a> or
394+ <a href="/+tour">take a tour</a>)
395 </p>
396- <div class="columns">
397- <div class="two column left">
398+ </div>
399+
400+ <div class="yui-g">
401+ <div class="first yui-u">
402+ <div class="portlet">
403 <h2>Recently reported</h2>
404 <table>
405 <tbody>
406- <tr
407- tal:repeat="bug context/latest_bugs"
408- tal:replace="structure bug/@@+listing-detailed"
409- />
410+ <tr tal:repeat="bug context/latest_bugs"
411+ tal:replace="structure bug/@@+listing-detailed" />
412 </tbody>
413 </table>
414 </div>
415- <div class="two column right">
416+ </div>
417+ <div class="yui-u">
418+ <div class="portlet">
419 <h2>Recently fixed</h2>
420 <table id="fixed-bugs">
421 <tbody>
422- <tr
423- tal:repeat="fixed_bug view/getMostRecentlyFixedBugs"
424- tal:replace="structure fixed_bug/@@+listing-detailed"
425- />
426+ <tr tal:repeat="fixed_bug view/getMostRecentlyFixedBugs"
427+ tal:replace="structure fixed_bug/@@+listing-detailed" />
428 </tbody>
429 </table>
430 </div>
431- </div><!--columns-->
432- <div class="clear"></div>
433- <div
434- id="application-footer"
435- tal:content="structure context/@@+portlet-stats"
436- />
437-
438-
439- </div><!--main-->
440- </body>
441-</html>
442+ </div>
443+ </div>
444+
445+ <div class="yui-g">
446+ <div class="first yui-u">
447+ <div tal:replace="structure context/@@+portlet-stats" />
448+ </div>
449+ <div class="yui-u">
450+ <tal:menu replace="structure view/@@+related-pages" />
451+ </div>
452+ </div>
453+
454+ </div>
455+
456+</malone-index>
457
458=== modified file 'lib/lp/bugs/templates/malone-portlet-stats.pt'
459--- lib/lp/bugs/templates/malone-portlet-stats.pt 2009-07-17 17:59:07 +0000
460+++ lib/lp/bugs/templates/malone-portlet-stats.pt 2009-09-04 15:05:26 +0000
461@@ -1,24 +1,28 @@
462-<tal:root
463+<div
464 xmlns:tal="http://xml.zope.org/namespaces/tal"
465 xmlns:metal="http://xml.zope.org/namespaces/metal"
466 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
467- omit-tag="">
468-<div>
469- <strong tal:content="context/bug_count">5</strong> bugs reported across
470- <strong tal:content="context/projects_with_bugs_count">5</strong> projects
471-</div>
472-<div>
473- including <strong tal:content="context/bugwatch_count">5</strong> links
474- to <strong tal:content="context/bugtracker_count">5</strong>
475- <a href="/bugs/bugtrackers">bug trackers</a>
476-</div>
477-<div>
478- <strong tal:content="context/shared_bug_count">7</strong> bugs are
479- <a href="http://help.launchpad.net/CrossProjectBugTracking">shared across
480- multiple projects</a>
481-</div>
482-<div>
483- and <strong tal:content="view/getCveBugLinkCount">5</strong>
484- bugs are related to <a href="/bugs/cve">CVE entries</a>
485-</div>
486-</tal:root>
487+ class="portlet">
488+ <h2>Statistics</h2>
489+ <ul>
490+ <li>
491+ <strong tal:content="context/bug_count">5</strong> bugs reported
492+ across <strong tal:content="context/projects_with_bugs_count" />
493+ projects
494+ </li>
495+ <li>
496+ including <strong tal:content="context/bugwatch_count" /> links
497+ to <strong tal:content="context/bugtracker_count">5</strong> <a
498+ href="/bugs/bugtrackers">bug trackers</a>
499+ </li>
500+ <li>
501+ <strong tal:content="context/shared_bug_count">7</strong> bugs are
502+ <a href="http://help.launchpad.net/CrossProjectBugTracking">shared
503+ across multiple projects</a>
504+ </li>
505+ <li>
506+ and <strong tal:content="view/getCveBugLinkCount">5</strong>
507+ bugs are related to <a href="/bugs/cve">CVE entries</a>
508+ </li>
509+ </ul>
510+</div>