Merge lp:~wgrant/launchpad/series-breadcrumbs-later into lp:launchpad

Proposed by William Grant
Status: Merged
Merged at revision: 17262
Proposed branch: lp:~wgrant/launchpad/series-breadcrumbs-later
Merge into: lp:launchpad
Diff against target: 1004 lines (+171/-168)
37 files modified
lib/canonical/launchpad/icing/css/layout.css (+8/-3)
lib/lp/app/browser/launchpad.py (+21/-12)
lib/lp/app/browser/tales.py (+10/-7)
lib/lp/app/templates/base-layout.pt (+2/-2)
lib/lp/blueprints/stories/standalone/xx-overview.txt (+4/-8)
lib/lp/bugs/stories/bugs/xx-bugs.txt (+1/-1)
lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt (+1/-1)
lib/lp/bugs/stories/patches-view/patches-view.txt (+1/-1)
lib/lp/code/stories/branches/xx-distroseries-branches.txt (+0/-7)
lib/lp/registry/browser/distroseries.py (+1/-6)
lib/lp/registry/browser/productseries.py (+0/-2)
lib/lp/registry/browser/sourcepackage.py (+7/-8)
lib/lp/registry/stories/distroseries/xx-distroseries-index.txt (+2/-2)
lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt (+1/-1)
lib/lp/services/webapp/breadcrumb.py (+4/-4)
lib/lp/services/webapp/doc/menus.txt (+1/-0)
lib/lp/services/webapp/tests/test_breadcrumbs.py (+4/-3)
lib/lp/soyuz/stories/packaging/package-pages-navigation.txt (+31/-34)
lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-person-packages.txt (+1/-1)
lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt (+6/-6)
lib/lp/translations/browser/tests/test_breadcrumbs.py (+12/-6)
lib/lp/translations/stories/importqueue/xx-entry-details.txt (+1/-1)
lib/lp/translations/stories/navigation-links/pofile.txt (+12/-12)
lib/lp/translations/stories/navigation-links/pomsgset.txt (+10/-10)
lib/lp/translations/stories/navigation-links/potemplate.txt (+12/-12)
lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt (+1/-1)
lib/lp/translations/stories/productseries/xx-productseries-translations.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-licensing.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-pofile-export.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt (+4/-4)
lib/lp/translations/stories/standalone/xx-potemplate-index.txt (+2/-2)
lib/lp/translations/stories/standalone/xx-product-export.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt (+1/-1)
lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt (+1/-1)
To merge this branch: bzr merge lp:~wgrant/launchpad/series-breadcrumbs-later
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+242010@code.launchpad.net

Commit message

Include the source package in the page heading, and make facet links always match the heading. Any series now comes *after* the facet in the breadcrumbs.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/canonical/launchpad/icing/css/layout.css'
2--- lib/canonical/launchpad/icing/css/layout.css 2012-03-21 02:32:44 +0000
3+++ lib/canonical/launchpad/icing/css/layout.css 2014-11-27 00:47:32 +0000
4@@ -85,17 +85,22 @@
5 div.watermark-apps-portlet > div > img,
6 div.watermark-apps-portlet > div > a > img {
7 display: block;
8- margin: 0 1.5em 0 0;
9+ margin: 0 1em 0 0;
10 }
11 div.watermark-apps-portlet h1, div.watermark-apps-portlet h2 {
12 color: #000;
13 font-weight: bold;
14 font-size: 30px;
15- line-height: 34px;
16+ line-height: 30px;
17 margin: 0;
18 }
19+div.watermark-apps-portlet h2.secondary {
20+ font-weight: normal;
21+ font-size: 20px;
22+ line-height: 26px;
23+ }
24 .watermark-apps-portlet ul.facetmenu {
25- margin-top: 6px;
26+ margin-top: 12px;
27 margin-left: -0.5em;
28 white-space: nowrap;
29 }
30
31=== modified file 'lib/lp/app/browser/launchpad.py'
32--- lib/lp/app/browser/launchpad.py 2014-11-24 04:31:14 +0000
33+++ lib/lp/app/browser/launchpad.py 2014-11-27 00:47:32 +0000
34@@ -310,6 +310,10 @@
35 Breadcrumb(
36 breadcrumb.context, rootsite=facet.rootsite,
37 text=facet.text))
38+ # Ensure that all remaining breadcrumbs are
39+ # themselves faceted.
40+ for remaining_crumb in breadcrumbs[idx + 1:]:
41+ remaining_crumb.rootsite_override = facet.rootsite
42 break
43 if len(breadcrumbs) > 0:
44 page_crumb = self.makeBreadcrumbForRequestedPage()
45@@ -346,7 +350,7 @@
46 facet = queryUtility(IFacet, name=get_facet(view))
47 if facet is not None:
48 default_views.append(facet.default_view)
49- if view.__name__ not in default_views:
50+ if hasattr(view, '__name__') and view.__name__ not in default_views:
51 title = getattr(view, 'page_title', None)
52 if title is None:
53 title = getattr(view, 'label', None)
54@@ -369,13 +373,12 @@
55 return len(self.items) > 1 and not has_major_heading
56
57 @property
58- def heading_breadcrumb(self):
59- try:
60- return (
61- crumb for crumb in self.items
62- if IHeadingBreadcrumb.providedBy(crumb)).next()
63- except StopIteration:
64- return None
65+ def heading_breadcrumbs(self):
66+ crumbs = [
67+ crumb for crumb in self.items
68+ if IHeadingBreadcrumb.providedBy(crumb)]
69+ assert len(crumbs) <= 2
70+ return crumbs
71
72 def heading(self):
73 """Return the heading text for the page.
74@@ -394,19 +397,25 @@
75 heading = 'h1' if IMajorHeadingView.providedBy(self.context) else 'h2'
76 # If there is actually no root context, then it's a top-level
77 # context-less page so Launchpad.net is shown as the branding.
78- if self.heading_breadcrumb:
79- title = self.heading_breadcrumb.detail
80+ crumbs = self.heading_breadcrumbs
81+ if len(crumbs) >= 1:
82+ title = crumbs[0].detail
83 else:
84 title = 'Launchpad.net'
85 # For non-editable titles, generate the static heading.
86- return structured(
87+ markup = structured(
88 "<%(heading)s>%(title)s</%(heading)s>",
89 heading=heading, title=title).escapedtext
90+ if len(crumbs) >= 2:
91+ markup += structured(
92+ '\n<%(heading)s class="secondary">%(title)s</%(heading)s>',
93+ heading=heading, title=crumbs[1].detail).escapedtext
94+ return markup
95
96 def logo(self):
97 """Return the logo image for the top header breadcrumb's context."""
98 logo_context = (
99- self.heading_breadcrumb.context if self.heading_breadcrumb
100+ self.heading_breadcrumbs[0].context if self.heading_breadcrumbs
101 else None)
102 adapter = queryAdapter(logo_context, IPathAdapter, 'image')
103 if logo_context != self.context.context and logo_context is not None:
104
105=== modified file 'lib/lp/app/browser/tales.py'
106--- lib/lp/app/browser/tales.py 2014-11-16 15:13:55 +0000
107+++ lib/lp/app/browser/tales.py 2014-11-27 00:47:32 +0000
108@@ -81,8 +81,8 @@
109 IContextMenu,
110 IFacetMenu,
111 ILaunchBag,
112+ ILaunchpadRoot,
113 INavigationMenu,
114- IPrimaryContext,
115 NoCanonicalUrl,
116 )
117 from lp.services.webapp.menu import (
118@@ -276,13 +276,16 @@
119
120 def _facet_menu(self):
121 """Return the IFacetMenu related to the context."""
122+ # XXX wgrant 2014-11-26: Manually instantiate a Hierarchy view
123+ # to find the lowest IHeadingBreadcrumb that's in the title,
124+ # ensuring that the facet tabs match what's above them. This
125+ # whole class needs refactoring once the UI is stable.
126+ from lp.app.browser.launchpad import Hierarchy
127 try:
128- try:
129- context = IPrimaryContext(self._context).context
130- except TypeError:
131- # Could not adapt raises a type error. If there was no
132- # way to adapt, then just use self._context.
133- context = self._context
134+ context = self._context
135+ crumbs = Hierarchy(context, self._request).heading_breadcrumbs
136+ if crumbs:
137+ context = crumbs[-1].context
138 menu = nearest_adapter(context, IFacetMenu)
139 except NoCanonicalUrl:
140 menu = None
141
142=== modified file 'lib/lp/app/templates/base-layout.pt'
143--- lib/lp/app/templates/base-layout.pt 2014-11-16 15:13:55 +0000
144+++ lib/lp/app/templates/base-layout.pt 2014-11-27 00:47:32 +0000
145@@ -99,9 +99,9 @@
146 <h2 tal:replace="structure view/@@+hierarchy/heading">
147 Celso Providelo
148 </h2>
149- <metal:heading_nav
150- use-macro="context/@@+base-layout-macros/application-buttons"/>
151 </div>
152+ <metal:heading_nav
153+ use-macro="context/@@+base-layout-macros/application-buttons"/>
154 </div>
155
156 <div class="yui-t4"
157
158=== modified file 'lib/lp/blueprints/stories/standalone/xx-overview.txt'
159--- lib/lp/blueprints/stories/standalone/xx-overview.txt 2011-12-21 08:26:19 +0000
160+++ lib/lp/blueprints/stories/standalone/xx-overview.txt 2014-11-27 00:47:32 +0000
161@@ -50,8 +50,7 @@
162 series as an example. To begin with, there are no blueprints listed on
163 the blueprints page for 1.0:
164
165- >>> user_browser.open('http://launchpad.dev/firefox/1.0')
166- >>> user_browser.getLink('Blueprints').click()
167+ >>> user_browser.open('http://blueprints.launchpad.dev/firefox/1.0')
168 >>> main = find_main_content(user_browser.contents)
169 >>> print extract_text(main).encode('ascii', 'backslashreplace')
170 Blueprints for 1.0
171@@ -114,8 +113,7 @@
172 Now the blueprint listing for the 1.0 series includes an entry for our chosen
173 blueprint. It also lists the milestone to which the blueprint is targeted:
174
175- >>> user_browser.open('http://launchpad.dev/firefox/1.0')
176- >>> user_browser.getLink('Blueprints').click()
177+ >>> user_browser.open('http://blueprints.launchpad.dev/firefox/1.0')
178 >>> main = find_main_content(user_browser.contents)
179 >>> print extract_text(main).encode('ascii', 'backslashreplace')
180 Blueprints for 1.0...
181@@ -152,8 +150,7 @@
182 series as an example. To begin with, there are no blueprints listed on the
183 blueprints page for Grumpy:
184
185- >>> user_browser.open('http://launchpad.dev/ubuntu/grumpy')
186- >>> user_browser.getLink('Blueprints').click()
187+ >>> user_browser.open('http://blueprints.launchpad.dev/ubuntu/grumpy')
188 >>> main = find_main_content(user_browser.contents)
189 >>> print extract_text(main).encode('ascii', 'backslashreplace')
190 Blueprints for Grumpy
191@@ -215,8 +212,7 @@
192 Finally, the blueprint listing for Grumpy includes an entry for our chosen
193 blueprint. It also lists the milestone to which the blueprint is targeted:
194
195- >>> user_browser.open('http://launchpad.dev/ubuntu/grumpy')
196- >>> user_browser.getLink('Blueprints').click()
197+ >>> user_browser.open('http://blueprints.launchpad.dev/ubuntu/grumpy')
198 >>> main = find_main_content(user_browser.contents)
199 >>> print extract_text(main).encode('ascii', 'backslashreplace')
200 Blueprints for Grumpy...
201
202=== modified file 'lib/lp/bugs/stories/bugs/xx-bugs.txt'
203--- lib/lp/bugs/stories/bugs/xx-bugs.txt 2014-02-25 09:43:29 +0000
204+++ lib/lp/bugs/stories/bugs/xx-bugs.txt 2014-11-27 00:47:32 +0000
205@@ -3,7 +3,7 @@
206
207 >>> browser.open('http://localhost/ubuntu/hoary/+bugs')
208 >>> print browser.title
209- Bugs : Hoary (5.04) : Ubuntu
210+ Hoary (5.04) : Bugs : Ubuntu
211
212 This page checks that we can see a list of bugs on the distributions, in
213 this case Ubuntu.
214
215=== modified file 'lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt'
216--- lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt 2012-10-02 06:36:44 +0000
217+++ lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt 2014-11-27 00:47:32 +0000
218@@ -5,7 +5,7 @@
219
220 >>> anon_browser.open('http://bugs.launchpad.dev/ubuntu/warty/+bugs')
221 >>> anon_browser.title
222- 'Bugs : Warty (4.10) : Ubuntu'
223+ 'Warty (4.10) : Bugs : Ubuntu'
224
225 >>> find_tags_by_class(anon_browser.contents, 'buglisting-row') is not None
226 True
227
228=== modified file 'lib/lp/bugs/stories/patches-view/patches-view.txt'
229--- lib/lp/bugs/stories/patches-view/patches-view.txt 2012-10-09 10:28:02 +0000
230+++ lib/lp/bugs/stories/patches-view/patches-view.txt 2014-11-27 00:47:32 +0000
231@@ -276,6 +276,6 @@
232 The page title and other wording in the page reflects the contents.
233
234 >>> print_location(anon_browser.contents)
235- Hierarchy: Patchy 1 > Series trunk > Bugs > Patch attachments in trunk
236+ Hierarchy: Patchy 1 > Bugs > Series trunk > Patch attachments in trunk
237 Tabs: ...
238 Main heading: Patch attachments in trunk
239
240=== modified file 'lib/lp/code/stories/branches/xx-distroseries-branches.txt'
241--- lib/lp/code/stories/branches/xx-distroseries-branches.txt 2011-08-03 11:00:11 +0000
242+++ lib/lp/code/stories/branches/xx-distroseries-branches.txt 2014-11-27 00:47:32 +0000
243@@ -19,13 +19,6 @@
244
245 >>> browser.open('http://launchpad.dev/mint/stable')
246
247-The code tab is now enabled at the distribution series level.
248-
249- >>> print_location_apps(browser.contents)
250- * Overview (selected) ...
251- * Code - http://code.launchpad.dev/mint/stable
252- ...
253-
254 Going to this page shows us a listing of all branches associated with that
255 distribution series ordered by most recently changed first.
256
257
258=== modified file 'lib/lp/registry/browser/distroseries.py'
259--- lib/lp/registry/browser/distroseries.py 2014-11-24 01:20:26 +0000
260+++ lib/lp/registry/browser/distroseries.py 2014-11-27 00:47:32 +0000
261@@ -27,10 +27,7 @@
262 from zope.component import getUtility
263 from zope.event import notify
264 from zope.formlib import form
265-from zope.interface import (
266- implements,
267- Interface,
268- )
269+from zope.interface import Interface
270 from zope.lifecycleevent import ObjectCreatedEvent
271 from zope.schema import (
272 Choice,
273@@ -93,7 +90,6 @@
274 from lp.services.webapp.batching import BatchNavigator
275 from lp.services.webapp.breadcrumb import Breadcrumb
276 from lp.services.webapp.escaping import structured
277-from lp.services.webapp.interfaces import IMultiFacetedBreadcrumb
278 from lp.services.webapp.menu import (
279 ApplicationMenu,
280 enabled_with_permission,
281@@ -202,7 +198,6 @@
282
283 class DistroSeriesBreadcrumb(Breadcrumb):
284 """Builds a breadcrumb for an `IDistroSeries`."""
285- implements(IMultiFacetedBreadcrumb)
286
287 @property
288 def text(self):
289
290=== modified file 'lib/lp/registry/browser/productseries.py'
291--- lib/lp/registry/browser/productseries.py 2014-11-24 01:20:26 +0000
292+++ lib/lp/registry/browser/productseries.py 2014-11-27 00:47:32 +0000
293@@ -136,7 +136,6 @@
294 from lp.services.webapp.batching import BatchNavigator
295 from lp.services.webapp.breadcrumb import Breadcrumb
296 from lp.services.webapp.escaping import structured
297-from lp.services.webapp.interfaces import IMultiFacetedBreadcrumb
298 from lp.services.worlddata.helpers import browser_languages
299 from lp.services.worlddata.interfaces.country import ICountry
300 from lp.services.worlddata.interfaces.language import ILanguageSet
301@@ -189,7 +188,6 @@
302
303 class ProductSeriesBreadcrumb(Breadcrumb):
304 """Builds a breadcrumb for an `IProductSeries`."""
305- implements(IMultiFacetedBreadcrumb)
306
307 @property
308 def text(self):
309
310=== modified file 'lib/lp/registry/browser/sourcepackage.py'
311--- lib/lp/registry/browser/sourcepackage.py 2014-11-24 03:49:26 +0000
312+++ lib/lp/registry/browser/sourcepackage.py 2014-11-27 00:47:32 +0000
313@@ -31,7 +31,6 @@
314 Item,
315 )
316 from lazr.restful.interface import copy_field
317-from lazr.restful.utils import smartquote
318 from z3c.ptcompat import ViewPageTemplateFile
319 from zope.component import (
320 adapter,
321@@ -41,10 +40,7 @@
322 from zope.formlib.form import Fields
323 from zope.formlib.interfaces import IInputWidget
324 from zope.formlib.widgets import DropdownWidget
325-from zope.interface import (
326- implements,
327- Interface,
328- )
329+from zope.interface import Interface
330 from zope.schema import (
331 Choice,
332 TextLine,
333@@ -94,7 +90,7 @@
334 )
335 from lp.services.webapp.breadcrumb import Breadcrumb
336 from lp.services.webapp.escaping import structured
337-from lp.services.webapp.interfaces import IMultiFacetedBreadcrumb
338+from lp.services.webapp.interfaces import IBreadcrumb
339 from lp.services.webapp.publisher import LaunchpadView
340 from lp.services.worlddata.helpers import browser_languages
341 from lp.services.worlddata.interfaces.country import ICountry
342@@ -203,11 +199,14 @@
343 @adapter(ISourcePackage)
344 class SourcePackageBreadcrumb(Breadcrumb):
345 """Builds a breadcrumb for an `ISourcePackage`."""
346- implements(IMultiFacetedBreadcrumb)
347
348 @property
349 def text(self):
350- return smartquote('"%s" source package') % (self.context.name)
351+ return IBreadcrumb(self.context.distroseries).text
352+
353+ @property
354+ def inside(self):
355+ return self.context.distribution_sourcepackage
356
357
358 class SourcePackageFacets(StandardLaunchpadFacets):
359
360=== modified file 'lib/lp/registry/stories/distroseries/xx-distroseries-index.txt'
361--- lib/lp/registry/stories/distroseries/xx-distroseries-index.txt 2014-02-19 02:11:16 +0000
362+++ lib/lp/registry/stories/distroseries/xx-distroseries-index.txt 2014-11-27 00:47:32 +0000
363@@ -7,7 +7,7 @@
364 >>> user_browser.open('http://launchpad.dev/ubuntu/hoary')
365 >>> user_browser.getLink('Help translate').click()
366 >>> print user_browser.title
367- Translations : Hoary (5.04) : Ubuntu
368+ Hoary (5.04) : Translations : Ubuntu
369
370
371 Registering information
372@@ -120,7 +120,7 @@
373 http://launchpad.dev/ubuntu/warty/+subscribe
374
375 >>> print admin_browser.title
376- Subscribe : Bugs : Warty (4.10) : Ubuntu
377+ Subscribe : Warty (4.10) : Bugs : Ubuntu
378
379
380 Upstream packaging portlet
381
382=== modified file 'lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt'
383--- lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt 2014-02-19 02:11:16 +0000
384+++ lib/lp/registry/stories/productseries/xx-productseries-add-and-edit.txt 2014-11-27 00:47:32 +0000
385@@ -126,4 +126,4 @@
386 >>> print browser.url
387 http://launchpad.dev/firefox/unstable/+subscribe
388 >>> print browser.title
389- Subscribe : Bugs : Series unstable : Mozilla Firefox
390+ Subscribe : Series unstable : Bugs : Mozilla Firefox
391
392=== modified file 'lib/lp/services/webapp/breadcrumb.py'
393--- lib/lp/services/webapp/breadcrumb.py 2014-11-24 01:24:27 +0000
394+++ lib/lp/services/webapp/breadcrumb.py 2014-11-27 00:47:32 +0000
395@@ -33,7 +33,7 @@
396 _detail = None
397 _url = None
398 inside = None
399- _rootsite = None
400+ rootsite_override = None
401
402 def __init__(self, context, url=None, text=None, inside=None,
403 rootsite=None):
404@@ -45,7 +45,7 @@
405 if inside is not None:
406 self.inside = inside
407 if rootsite is not None:
408- self._rootsite = rootsite
409+ self.rootsite_override = rootsite
410
411 @property
412 def rootsite(self):
413@@ -54,8 +54,8 @@
414 If the `ICanonicalUrlData` for our context defines a rootsite, we
415 return that, otherwise we return 'mainsite'.
416 """
417- if self._rootsite is not None:
418- return self._rootsite
419+ if self.rootsite_override is not None:
420+ return self.rootsite_override
421 url_data = ICanonicalUrlData(self.context)
422 if url_data.rootsite:
423 return url_data.rootsite
424
425=== modified file 'lib/lp/services/webapp/doc/menus.txt'
426--- lib/lp/services/webapp/doc/menus.txt 2013-04-09 08:22:58 +0000
427+++ lib/lp/services/webapp/doc/menus.txt 2014-11-27 00:47:32 +0000
428@@ -693,6 +693,7 @@
429 ... self.url1 = url1 # returned from getURL(1)
430 ... self.method = 'GET'
431 ... self.annotations = {}
432+ ... self.traversed_objects = []
433 ...
434 ... def getURL(self, level=0):
435 ... assert 0 <= level <=1, 'level must be 0 or 1'
436
437=== modified file 'lib/lp/services/webapp/tests/test_breadcrumbs.py'
438--- lib/lp/services/webapp/tests/test_breadcrumbs.py 2014-11-16 16:23:16 +0000
439+++ lib/lp/services/webapp/tests/test_breadcrumbs.py 2014-11-27 00:47:32 +0000
440@@ -174,11 +174,12 @@
441 def test_package_bugtask(self):
442 target = self.package_bugtask.target
443 distro_url = canonical_url(target.distribution)
444- distroseries_url = canonical_url(target.distroseries)
445- package_url = canonical_url(target)
446+ dsp_url = canonical_url(target.distribution_sourcepackage)
447+ dsp_bugs_url = canonical_url(
448+ target.distribution_sourcepackage, rootsite='bugs')
449 package_bugs_url = canonical_url(target, rootsite='bugs')
450
451 self.assertBreadcrumbUrls(
452- [distro_url, distroseries_url, package_url, package_bugs_url,
453+ [distro_url, dsp_url, dsp_bugs_url, package_bugs_url,
454 self.package_bugtask_url],
455 self.package_bugtask)
456
457=== modified file 'lib/lp/soyuz/stories/packaging/package-pages-navigation.txt'
458--- lib/lp/soyuz/stories/packaging/package-pages-navigation.txt 2014-11-25 07:56:07 +0000
459+++ lib/lp/soyuz/stories/packaging/package-pages-navigation.txt 2014-11-27 00:47:32 +0000
460@@ -65,9 +65,6 @@
461 A distribution source package release build should have almost the same
462 navigation as its parent distribution source package release.
463
464-(XXX 20080611 mpt: A build probably should belong to a distribution *series*
465-source package release, but that's more than I can chew off for now.)
466-
467 >>> anon_browser.open(
468 ... 'http://launchpad.dev/ubuntu/+source/alsa-utils/1.0.9a-4ubuntu1/+build/11')
469 >>> print_location(anon_browser.contents)
470@@ -84,73 +81,73 @@
471
472 == Distribution series source package ==
473
474-A distribution series source package has its own Bugs, Translations,
475-and Answers.
476+A distribution series source package inherits its distribution source
477+package's facets.
478
479 >>> anon_browser.open(
480 ... 'http://launchpad.dev/ubuntu/hoary/+source/alsa-utils')
481 >>> print_location(anon_browser.contents)
482- Hierarchy: Ubuntu > Hoary (5.04) > ?alsa-utils? source package
483+ Hierarchy: Ubuntu > ?alsa-utils? package > Hoary (5.04)
484 Tabs:
485- * Overview (selected) - not linked
486- * Code - http://code.launchpad.dev/ubuntu/hoary/+source/alsa-utils
487- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary/+source/alsa-utils
488+ * Overview (selected) - http://launchpad.dev/ubuntu/+source/alsa-utils
489+ * Code - http://code.launchpad.dev/ubuntu/+source/alsa-utils
490+ * Bugs - http://bugs.launchpad.dev/ubuntu/+source/alsa-utils
491 * Blueprints - not linked
492- * Translations - http://translations.launchpad.dev/ubuntu/hoary/+source/alsa-utils
493- * Answers - not linked
494+ * Translations - http://translations.launchpad.dev/ubuntu/+source/alsa-utils
495+ * Answers - http://answers.launchpad.dev/ubuntu/+source/alsa-utils
496 Main heading: ?alsa-utils? source package in Hoary
497
498
499 == Distribution series architecture ==
500
501-Distribution series architectures pages inherit Code, Bugs, Blueprints and
502-Translations from the distribution series.
503+Distribution series architectures pages inherit facets from the
504+distribution.
505
506 >>> anon_browser.open('http://launchpad.dev/ubuntu/hoary/i386')
507 >>> print_location(anon_browser.contents)
508 Hierarchy: Ubuntu > Hoary (5.04) > i386
509 Tabs:
510- * Overview (selected) - http://launchpad.dev/ubuntu/hoary
511- * Code - http://code.launchpad.dev/ubuntu/hoary
512- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary
513- * Blueprints - http://blueprints.launchpad.dev/ubuntu/hoary
514- * Translations - http://translations.launchpad.dev/ubuntu/hoary
515- * Answers - not linked
516+ * Overview (selected) - http://launchpad.dev/ubuntu
517+ * Code - http://code.launchpad.dev/ubuntu
518+ * Bugs - http://bugs.launchpad.dev/ubuntu
519+ * Blueprints - http://blueprints.launchpad.dev/ubuntu
520+ * Translations - http://translations.launchpad.dev/ubuntu
521+ * Answers - http://answers.launchpad.dev/ubuntu
522 Main heading: Ubuntu Hoary for i386
523
524
525 == Distribution series architecture binary package ==
526
527 The distribution series architecture binary packages page inherits Code,
528-Bugs, Blueprints and Translations from the distribution series.
529+Bugs, Blueprints and Translations from the distribution.
530
531 >>> anon_browser.open('http://launchpad.dev/ubuntu/hoary/i386/pmount')
532 >>> print_location(anon_browser.contents)
533 Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount
534 Tabs:
535- * Overview (selected) - http://launchpad.dev/ubuntu/hoary
536- * Code - http://code.launchpad.dev/ubuntu/hoary
537- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary
538- * Blueprints - http://blueprints.launchpad.dev/ubuntu/hoary
539- * Translations - http://translations.launchpad.dev/ubuntu/hoary
540- * Answers - not linked
541+ * Overview (selected) - http://launchpad.dev/ubuntu
542+ * Code - http://code.launchpad.dev/ubuntu
543+ * Bugs - http://bugs.launchpad.dev/ubuntu
544+ * Blueprints - http://blueprints.launchpad.dev/ubuntu
545+ * Translations - http://translations.launchpad.dev/ubuntu
546+ * Answers - http://answers.launchpad.dev/ubuntu
547 Main heading: ?pmount? binary package in Ubuntu Hoary i386
548
549
550 == Distribution series architecture binary package release ==
551
552-Distribution series architecture binary package releases pages inherit Code,
553-Bugs, Blueprints and Translations from the distribution series.
554+Distribution series architecture binary package releases pages inherit
555+facets from the distribution.
556
557 >>> anon_browser.open(
558 ... 'http://launchpad.dev/ubuntu/hoary/i386/pmount/0.1-1')
559 >>> print_location(anon_browser.contents)
560 Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount > 0.1-1
561 Tabs:
562- * Overview (selected) - http://launchpad.dev/ubuntu/hoary
563- * Code - http://code.launchpad.dev/ubuntu/hoary
564- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary
565- * Blueprints - http://blueprints.launchpad.dev/ubuntu/hoary
566- * Translations - http://translations.launchpad.dev/ubuntu/hoary
567- * Answers - not linked
568+ * Overview (selected) - http://launchpad.dev/ubuntu
569+ * Code - http://code.launchpad.dev/ubuntu
570+ * Bugs - http://bugs.launchpad.dev/ubuntu
571+ * Blueprints - http://blueprints.launchpad.dev/ubuntu
572+ * Translations - http://translations.launchpad.dev/ubuntu
573+ * Answers - http://answers.launchpad.dev/ubuntu
574 Main heading: pmount 0.1-1 (i386 binary) in ubuntu hoary
575
576=== modified file 'lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt'
577--- lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt 2013-07-25 13:45:17 +0000
578+++ lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt 2014-11-27 00:47:32 +0000
579@@ -95,7 +95,7 @@
580 ... "http://launchpad.dev/ubuntu/hoary/+source/pmount")
581 >>> anon_browser.getLink("Show builds").click()
582 >>> print anon_browser.title
583- Builds : ...pmount... source package : Hoary (5.04) : Ubuntu
584+ Builds : Hoary (5.04) : ...pmount... package : Ubuntu
585
586 >>> print check_builds_options(anon_browser.contents)
587 State present, Name not present
588
589=== modified file 'lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt'
590--- lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt 2014-11-09 23:12:08 +0000
591+++ lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt 2014-11-27 00:47:32 +0000
592@@ -223,7 +223,7 @@
593
594 >>> browser.getLink('copyright').click()
595 >>> print browser.title
596- Copyright : ...mozilla-firefox... source package : Warty (4.10) : Ubuntu
597+ Copyright : Warty (4.10) : ...mozilla-firefox... package : Ubuntu
598
599 >>> print extract_text(find_tag_by_id(browser.contents, 'copyright'))
600 Copyright 2010 Ford Prefect.
601
602=== modified file 'lib/lp/soyuz/stories/soyuz/xx-person-packages.txt'
603--- lib/lp/soyuz/stories/soyuz/xx-person-packages.txt 2014-07-08 06:34:37 +0000
604+++ lib/lp/soyuz/stories/soyuz/xx-person-packages.txt 2014-11-27 00:47:32 +0000
605@@ -71,7 +71,7 @@
606 <Link text='Ubuntu Hoary' ...>
607 >>> link.click()
608 >>> browser.title
609- '...cnews... package : Hoary (5.04) : Ubuntu'
610+ 'Hoary (5.04) : ...cnews... package : Ubuntu'
611
612 The third column links to the distribution source package release page. The
613 user follows the cnews version link to see the page.
614
615=== modified file 'lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt'
616--- lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt 2014-11-09 22:19:51 +0000
617+++ lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt 2014-11-27 00:47:32 +0000
618@@ -6,14 +6,14 @@
619 >>> user_browser.open(
620 ... "http://launchpad.dev/ubuntu/hoary/+source/pmount/+changelog")
621 >>> print_location(user_browser.contents)
622- Hierarchy: Ubuntu > Hoary (5.04) > ...pmount... source package > Change log
623+ Hierarchy: Ubuntu > ...pmount... package > Hoary (5.04) > Change log
624 Tabs:
625- * Overview (selected) - http://launchpad.dev/ubuntu/hoary/+source/pmount
626- * Code - http://code.launchpad.dev/ubuntu/hoary/+source/pmount
627- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary/+source/pmount
628+ * Overview (selected) - http://launchpad.dev/ubuntu/+source/pmount
629+ * Code - http://code.launchpad.dev/ubuntu/+source/pmount
630+ * Bugs - http://bugs.launchpad.dev/ubuntu/+source/pmount
631 * Blueprints - not linked
632- * Translations - http://translations.launchpad.dev/ubuntu/hoary/+source/pmount
633- * Answers - not linked
634+ * Translations - http://translations.launchpad.dev/ubuntu/+source/pmount
635+ * Answers - http://answers.launchpad.dev/ubuntu/+source/pmount
636 Main heading: Change logs for ...pmount... in Hoary
637
638 >>> print extract_text(
639
640=== modified file 'lib/lp/translations/browser/tests/test_breadcrumbs.py'
641--- lib/lp/translations/browser/tests/test_breadcrumbs.py 2014-02-19 00:35:25 +0000
642+++ lib/lp/translations/browser/tests/test_breadcrumbs.py 2014-11-27 00:47:32 +0000
643@@ -36,8 +36,9 @@
644 series = self.factory.makeProductSeries(name="test", product=product)
645 self.assertBreadcrumbs(
646 [("Crumb Tester", 'http://launchpad.dev/crumb-tester'),
647- ("Series test", 'http://launchpad.dev/crumb-tester/test'),
648 ("Translations",
649+ 'http://translations.launchpad.dev/crumb-tester'),
650+ ("Series test",
651 'http://translations.launchpad.dev/crumb-tester/test')],
652 series, rootsite='translations')
653
654@@ -57,8 +58,9 @@
655 name="test", version="1.0", distribution=distribution)
656 self.assertBreadcrumbs(
657 [("Crumb Tester", 'http://launchpad.dev/crumb-tester'),
658- ("Test (1.0)", 'http://launchpad.dev/crumb-tester/test'),
659 ("Translations",
660+ 'http://translations.launchpad.dev/crumb-tester'),
661+ ("Test (1.0)",
662 'http://translations.launchpad.dev/crumb-tester/test')],
663 series, rootsite='translations')
664
665@@ -119,8 +121,9 @@
666
667 self.assertBreadcrumbs(
668 [("Crumb Tester", "http://launchpad.dev/crumb-tester"),
669- ("Test (1.0)", "http://launchpad.dev/crumb-tester/test"),
670 ("Translations",
671+ "http://translations.launchpad.dev/crumb-tester"),
672+ ("Test (1.0)",
673 "http://translations.launchpad.dev/crumb-tester/test"),
674 ("Serbian (sr)",
675 "http://translations.launchpad.dev/"
676@@ -138,8 +141,9 @@
677
678 self.assertBreadcrumbs(
679 [("Crumb Tester", "http://launchpad.dev/crumb-tester"),
680- ("Series test", "http://launchpad.dev/crumb-tester/test"),
681 ("Translations",
682+ "http://translations.launchpad.dev/crumb-tester"),
683+ ("Series test",
684 "http://translations.launchpad.dev/crumb-tester/test"),
685 ("Serbian (sr)",
686 "http://translations.launchpad.dev/"
687@@ -160,8 +164,9 @@
688 name="template", productseries=series)
689 self.assertBreadcrumbs(
690 [("Crumb Tester", "http://launchpad.dev/crumb-tester"),
691- ("Series test", "http://launchpad.dev/crumb-tester/test"),
692 ("Translations",
693+ "http://translations.launchpad.dev/crumb-tester"),
694+ ("Series test",
695 "http://translations.launchpad.dev/crumb-tester/test"),
696 (smartquote('Template "template"'),
697 "http://translations.launchpad.dev/"
698@@ -184,8 +189,9 @@
699
700 self.assertBreadcrumbs(
701 [("Crumb Tester", "http://launchpad.dev/crumb-tester"),
702- ("Series test", "http://launchpad.dev/crumb-tester/test"),
703 ("Translations",
704+ "http://translations.launchpad.dev/crumb-tester"),
705+ ("Series test",
706 "http://translations.launchpad.dev/crumb-tester/test"),
707 (smartquote('Template "test-template"'),
708 "http://translations.launchpad.dev/crumb-tester/test"
709
710=== modified file 'lib/lp/translations/stories/importqueue/xx-entry-details.txt'
711--- lib/lp/translations/stories/importqueue/xx-entry-details.txt 2012-10-09 10:28:02 +0000
712+++ lib/lp/translations/stories/importqueue/xx-entry-details.txt 2014-11-27 00:47:32 +0000
713@@ -74,7 +74,7 @@
714
715 >>> admin_browser.getLink('1 template').click()
716 >>> print admin_browser.title
717- All templates : Translations : Series trunk : ...
718+ All templates : Series trunk : Translations : ...
719
720 In that case, the product is also shown to have translatable series.
721
722
723=== modified file 'lib/lp/translations/stories/navigation-links/pofile.txt'
724--- lib/lp/translations/stories/navigation-links/pofile.txt 2011-05-13 03:26:21 +0000
725+++ lib/lp/translations/stories/navigation-links/pofile.txt 2014-11-27 00:47:32 +0000
726@@ -11,15 +11,15 @@
727 >>> print admin_browser.url
728 http://translations.launchpad.dev/evolution/trunk/+pots/evolution-2.2/es
729
730-The Application tabs should point to IProductSeries URLs.
731+The Application tabs should point to IProduct URLs.
732
733 >>> print_location_apps(admin_browser.contents)
734- * Overview - http://launchpad.dev/evolution/trunk
735+ * Overview - http://launchpad.dev/evolution
736 * Code - http://code.launchpad.dev/evolution
737- * Bugs - http://bugs.launchpad.dev/evolution/trunk
738- * Blueprints - http://blueprints.launchpad.dev/evolution/trunk
739- * Translations (selected) - http://translations.launchpad.dev/evolution/trunk
740- * Answers - not linked
741+ * Bugs - http://bugs.launchpad.dev/evolution
742+ * Blueprints - http://blueprints.launchpad.dev/evolution
743+ * Translations (selected) - http://translations.launchpad.dev/evolution
744+ * Answers - http://answers.launchpad.dev/evolution
745
746 Taking an IPOFile for ISourcePackage context:
747
748@@ -29,13 +29,13 @@
749 >>> print admin_browser.url
750 http://translations.launchpad.dev/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es
751
752-The Application tabs should point to ISourcePackage URLs.
753+The Application tabs should point to IDistributionSourcePackage URLs.
754
755 >>> print_location_apps(admin_browser.contents)
756- * Overview - http://launchpad.dev/ubuntu/hoary/+source/evolution
757- * Code - http://code.launchpad.dev/ubuntu/hoary/+source/evolution
758- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary/+source/evolution
759+ * Overview - http://launchpad.dev/ubuntu/+source/evolution
760+ * Code - http://code.launchpad.dev/ubuntu/+source/evolution
761+ * Bugs - http://bugs.launchpad.dev/ubuntu/+source/evolution
762 * Blueprints - not linked
763- * Translations (selected) - http://translations.launchpad.dev/ubuntu/hoary/+source/evolution
764- * Answers - not linked
765+ * Translations (selected) - http://translations.launchpad.dev/ubuntu/+source/evolution
766+ * Answers - http://answers.launchpad.dev/ubuntu/+source/evolution
767
768
769=== modified file 'lib/lp/translations/stories/navigation-links/pomsgset.txt'
770--- lib/lp/translations/stories/navigation-links/pomsgset.txt 2011-05-13 03:26:21 +0000
771+++ lib/lp/translations/stories/navigation-links/pomsgset.txt 2014-11-27 00:47:32 +0000
772@@ -16,12 +16,12 @@
773 The Application tabs should point to IProductSeries URLs.
774
775 >>> print_location_apps(browser.contents)
776- * Overview - http://launchpad.dev/evolution/trunk
777+ * Overview - http://launchpad.dev/evolution
778 * Code - http://code.launchpad.dev/evolution
779- * Bugs - http://bugs.launchpad.dev/evolution/trunk
780- * Blueprints - http://blueprints.launchpad.dev/evolution/trunk
781- * Translations (selected) - http://translations.launchpad.dev/evolution/trunk
782- * Answers - not linked
783+ * Bugs - http://bugs.launchpad.dev/evolution
784+ * Blueprints - http://blueprints.launchpad.dev/evolution
785+ * Translations (selected) - http://translations.launchpad.dev/evolution
786+ * Answers - http://answers.launchpad.dev/evolution
787
788 Taking an IPOMsgSet for ISourcePackage context:
789
790@@ -38,9 +38,9 @@
791 The Application tabs should point to ISourcePackage URLs.
792
793 >>> print_location_apps(browser.contents)
794- * Overview - http://launchpad.dev/ubuntu/hoary/+source/evolution
795- * Code - http://code.launchpad.dev/ubuntu/hoary/+source/evolution
796- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary/+source/evolution
797+ * Overview - http://launchpad.dev/ubuntu/+source/evolution
798+ * Code - http://code.launchpad.dev/ubuntu/+source/evolution
799+ * Bugs - http://bugs.launchpad.dev/ubuntu/+source/evolution
800 * Blueprints - not linked
801- * Translations (selected) - http://translations.launchpad.dev/ubuntu/hoary/+source/evolution
802- * Answers - not linked
803+ * Translations (selected) - http://translations.launchpad.dev/ubuntu/+source/evolution
804+ * Answers - http://answers.launchpad.dev/ubuntu/+source/evolution
805
806=== modified file 'lib/lp/translations/stories/navigation-links/potemplate.txt'
807--- lib/lp/translations/stories/navigation-links/potemplate.txt 2011-05-13 03:26:21 +0000
808+++ lib/lp/translations/stories/navigation-links/potemplate.txt 2014-11-27 00:47:32 +0000
809@@ -9,15 +9,15 @@
810 >>> print admin_browser.url
811 http://translations.launchpad.dev/evolution/trunk/+pots/evolution-2.2
812
813-The Application tabs should point to IProductSeries URLs.
814+The Application tabs should point to IProduct URLs.
815
816 >>> print_location_apps(admin_browser.contents)
817- * Overview - http://launchpad.dev/evolution/trunk
818+ * Overview - http://launchpad.dev/evolution
819 * Code - http://code.launchpad.dev/evolution
820- * Bugs - http://bugs.launchpad.dev/evolution/trunk
821- * Blueprints - http://blueprints.launchpad.dev/evolution/trunk
822- * Translations (selected) - http://translations.launchpad.dev/evolution/trunk
823- * Answers - not linked
824+ * Bugs - http://bugs.launchpad.dev/evolution
825+ * Blueprints - http://blueprints.launchpad.dev/evolution
826+ * Translations (selected) - http://translations.launchpad.dev/evolution
827+ * Answers - http://answers.launchpad.dev/evolution
828
829 Taking an IPOTemplate for ISourcePackage context:
830
831@@ -27,12 +27,12 @@
832 >>> print admin_browser.url
833 http://translations.launchpad.dev/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
834
835-The Application tabs should point to ISourcePackage URLs.
836+The Application tabs should point to IDistributionSourcePackage URLs.
837
838 >>> print_location_apps(admin_browser.contents)
839- * Overview - http://launchpad.dev/ubuntu/hoary/+source/evolution
840- * Code - http://code.launchpad.dev/ubuntu/hoary/+source/evolution
841- * Bugs - http://bugs.launchpad.dev/ubuntu/hoary/+source/evolution
842+ * Overview - http://launchpad.dev/ubuntu/+source/evolution
843+ * Code - http://code.launchpad.dev/ubuntu/+source/evolution
844+ * Bugs - http://bugs.launchpad.dev/ubuntu/+source/evolution
845 * Blueprints - not linked
846- * Translations (selected) - http://translations.launchpad.dev/ubuntu/hoary/+source/evolution
847- * Answers - not linked
848+ * Translations (selected) - http://translations.launchpad.dev/ubuntu/+source/evolution
849+ * Answers - http://answers.launchpad.dev/ubuntu/+source/evolution
850
851=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt'
852--- lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt 2013-09-27 04:13:23 +0000
853+++ lib/lp/translations/stories/productseries/xx-productseries-translation-export.txt 2014-11-27 00:47:32 +0000
854@@ -45,7 +45,7 @@
855 request the download.
856
857 >>> print user_browser.title
858- Download : Translations...
859+ Download : Series trunk : Translations...
860
861
862 === File format ===
863
864=== modified file 'lib/lp/translations/stories/productseries/xx-productseries-translations.txt'
865--- lib/lp/translations/stories/productseries/xx-productseries-translations.txt 2012-09-19 01:19:35 +0000
866+++ lib/lp/translations/stories/productseries/xx-productseries-translations.txt 2014-11-27 00:47:32 +0000
867@@ -47,7 +47,7 @@
868
869 >>> anon_browser.open(frobnicator_trunk_url)
870 >>> print anon_browser.title
871- Translations : Series trunk : Frobnicator
872+ Series trunk : Translations : Frobnicator
873
874 >>> main_content = find_main_content(anon_browser.contents)
875 >>> print extract_text(main_content.findAll('h1')[0])
876
877=== modified file 'lib/lp/translations/stories/standalone/xx-licensing.txt'
878--- lib/lp/translations/stories/standalone/xx-licensing.txt 2013-09-27 04:13:23 +0000
879+++ lib/lp/translations/stories/standalone/xx-licensing.txt 2014-11-27 00:47:32 +0000
880@@ -85,8 +85,8 @@
881 >>> browser.url
882 'http://.../alsa-utils/trunk/+pots/alsa-utils/es/+translate'
883 >>> print browser.title
884- Spanish (es) : Template ...alsa-utils... : Translations :
885- Series trunk : alsa-utils
886+ Spanish (es) : Template ...alsa-utils... : Series trunk :
887+ Translations : alsa-utils
888
889
890 Permissions
891
892=== modified file 'lib/lp/translations/stories/standalone/xx-pofile-export.txt'
893--- lib/lp/translations/stories/standalone/xx-pofile-export.txt 2014-11-24 01:25:09 +0000
894+++ lib/lp/translations/stories/standalone/xx-pofile-export.txt 2014-11-27 00:47:32 +0000
895@@ -19,8 +19,8 @@
896 >>> user_browser.getLink('Download').click()
897
898 >>> print user_browser.title
899- Download translation : Spanish (es)... : Translations :
900- ...evolution... package : Hoary (5.04) : Ubuntu
901+ Download translation : Spanish (es)... : Hoary (5.04) :
902+ Translations : ...evolution... package : Ubuntu
903
904 >>> print find_main_content(user_browser.contents)
905 <...
906
907=== modified file 'lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt'
908--- lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt 2014-11-24 01:25:09 +0000
909+++ lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt 2014-11-27 00:47:32 +0000
910@@ -48,8 +48,8 @@
911 ... 'http://translations.launchpad.dev/ubuntu/hoary/'
912 ... '+source/evolution/+pots/evolution-2.2/es/+translate')
913 >>> print user_browser.title
914- Spanish (es) : Template ...evolution-2.2... : Translations :
915- ...evolution... package : Hoary (5.04) : Ubuntu
916+ Spanish (es) : Template ...evolution-2.2... :
917+ Hoary (5.04) : Translations : ...evolution... package : Ubuntu
918
919 He can see that there are 22 messages.
920
921@@ -126,7 +126,7 @@
922 >>> user_browser.getControl('Change').click()
923 >>> print user_browser.title
924 English (Australia) (en_AU) : Template ...evolution-2.2... :
925- Translations : ...evolution... package : Hoary (5.04) : Ubuntu
926+ Hoary (5.04) : Translations : ...evolution... package : Ubuntu
927
928 >>> contents = find_main_content(user_browser.contents)
929 >>> print_batch_header(contents)
930@@ -194,7 +194,7 @@
931 >>> user_browser.getControl('Change').click()
932 >>> print user_browser.title
933 English (Australia) (en_AU) : Template ...evolution-2.2... :
934- Translations : Series trunk : Evolution
935+ Series trunk : Translations : Evolution
936
937 >>> contents = find_main_content(user_browser.contents)
938 >>> print_batch_header(contents)
939
940=== modified file 'lib/lp/translations/stories/standalone/xx-potemplate-index.txt'
941--- lib/lp/translations/stories/standalone/xx-potemplate-index.txt 2014-11-24 01:25:09 +0000
942+++ lib/lp/translations/stories/standalone/xx-potemplate-index.txt 2014-11-27 00:47:32 +0000
943@@ -12,8 +12,8 @@
944 >>> anon_browser.open("http://translations.launchpad.dev/"
945 ... "ubuntu/hoary/+source/evolution/+pots/evolution-2.2/")
946 >>> print anon_browser.title
947- Template ...evolution-2.2... : Translations :
948- ...evolution... package : Hoary (5.04) : Ubuntu
949+ Template ...evolution-2.2... : Hoary (5.04) :
950+ Translations : ...evolution... package : Ubuntu
951
952 The owner of the template is diplayed.
953
954
955=== modified file 'lib/lp/translations/stories/standalone/xx-product-export.txt'
956--- lib/lp/translations/stories/standalone/xx-product-export.txt 2013-09-27 04:13:23 +0000
957+++ lib/lp/translations/stories/standalone/xx-product-export.txt 2014-11-27 00:47:32 +0000
958@@ -26,7 +26,7 @@
959 it for source packages (tested and documented separately).
960
961 >>> print user_browser.title
962- Download : Translations...
963+ Download : Series trunk : Translations...
964
965 >>> user_browser.getControl('Request Download').click()
966 >>> print_feedback_messages(user_browser.contents)
967
968=== modified file 'lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt'
969--- lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt 2014-11-24 01:25:09 +0000
970+++ lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt 2014-11-27 00:47:32 +0000
971@@ -8,7 +8,7 @@
972 ... 'http://translations.launchpad.dev/ubuntu/hoary/'
973 ... '+source/evolution')
974 >>> anon_browser.title
975- 'Translations : ...evolution...package : Hoary (5.04) : Ubuntu'
976+ 'Hoary (5.04) : Translations : ...evolution...package : Ubuntu'
977
978 >>> content = find_main_content(anon_browser.contents)
979 >>> print extract_text(content.findAll('h1')[0]).encode(
980
981=== modified file 'lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt'
982--- lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt 2012-05-24 20:25:54 +0000
983+++ lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt 2014-11-27 00:47:32 +0000
984@@ -14,7 +14,7 @@
985 http://translations.launchpad.dev/evolution/trunk/+lang/pt_BR
986
987 >>> print browser.title
988- Portuguese (Brazil) (pt_BR) : Translations : Series trunk : Evolution
989+ Portuguese (Brazil) (pt_BR) : Series trunk : Translations : Evolution
990
991 Since there is no translation team to manage Portuguese (Brazil) language
992 in the Evolution's translation group, all users will be informed about it
993
994=== modified file 'lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt'
995--- lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt 2014-11-24 01:25:09 +0000
996+++ lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt 2014-11-27 00:47:32 +0000
997@@ -166,7 +166,7 @@
998 ... 'http://translations.launchpad.dev/'
999 ... 'ubuntu/hoary/+source/mozilla/+export')
1000 >>> browser.title
1001- 'Download : Translations : \xe2\x80\x9cmozilla...
1002+ 'Download : Hoary (5.04) : Translations : \xe2\x80\x9cmozilla...
1003
1004 >>> browser.getControl('Request Download').click()
1005