Merge lp:~barry/launchpad/416703-sprints into lp:launchpad
- 416703-sprints
- Merge into devel
Proposed by
Barry Warsaw
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | not available | ||||
Proposed branch: | lp:~barry/launchpad/416703-sprints | ||||
Merge into: | lp:launchpad | ||||
Diff against target: | None lines | ||||
To merge this branch: | bzr merge lp:~barry/launchpad/416703-sprints | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Curtis Hovey (community) | code | Approve | |
Review via email: mp+10551@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Barry Warsaw (barry) wrote : | # |
Revision history for this message
Curtis Hovey (sinzui) wrote : | # |
We discusses the new style added and concluded that .summary and .application-
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/style-3-0.css' | |||
2 | --- lib/canonical/launchpad/icing/style-3-0.css 2009-08-20 14:01:26 +0000 | |||
3 | +++ lib/canonical/launchpad/icing/style-3-0.css 2009-08-20 21:13:30 +0000 | |||
4 | @@ -442,6 +442,15 @@ | |||
5 | 442 | color: #000; | 442 | color: #000; |
6 | 443 | font-weight: normal; | 443 | font-weight: normal; |
7 | 444 | } | 444 | } |
8 | 445 | .application-summary { | ||
9 | 446 | font-size: 123.1%; | ||
10 | 447 | } | ||
11 | 448 | .search-results { | ||
12 | 449 | margin-top: 1em; | ||
13 | 450 | } | ||
14 | 451 | p.search-results { | ||
15 | 452 | font-size: 116%; | ||
16 | 453 | } | ||
17 | 445 | 454 | ||
18 | 446 | 455 | ||
19 | 447 | /* Exceptions they may be common. */ | 456 | /* Exceptions they may be common. */ |
20 | 448 | 457 | ||
21 | === modified file 'lib/canonical/launchpad/pagetitles.py' | |||
22 | --- lib/canonical/launchpad/pagetitles.py 2009-08-21 09:39:13 +0000 | |||
23 | +++ lib/canonical/launchpad/pagetitles.py 2009-08-21 20:04:25 +0000 | |||
24 | @@ -508,8 +508,6 @@ | |||
25 | 508 | 508 | ||
26 | 509 | distroseriessourcepackagerelease_index = ContextTitle('%s') | 509 | distroseriessourcepackagerelease_index = ContextTitle('%s') |
27 | 510 | 510 | ||
28 | 511 | distros_index = 'Distributions registered in Launchpad' | ||
29 | 512 | |||
30 | 513 | edit_bug_supervisor = ContextTitle('Edit bug supervisor for %s') | 511 | edit_bug_supervisor = ContextTitle('Edit bug supervisor for %s') |
31 | 514 | 512 | ||
32 | 515 | errorservice_config = 'Configure error log' | 513 | errorservice_config = 'Configure error log' |
33 | @@ -1065,8 +1063,6 @@ | |||
34 | 1065 | 1063 | ||
35 | 1066 | project_translators = ContextTitle('Set translation group for %s') | 1064 | project_translators = ContextTitle('Set translation group for %s') |
36 | 1067 | 1065 | ||
37 | 1068 | projects_index = 'Project groups registered in Launchpad' | ||
38 | 1069 | |||
39 | 1070 | projects_request = 'Launchpad Translations: Request a project group' | 1066 | projects_request = 'Launchpad Translations: Request a project group' |
40 | 1071 | 1067 | ||
41 | 1072 | projects_search = 'Search for project groups in Launchpad' | 1068 | projects_search = 'Search for project groups in Launchpad' |
42 | @@ -1288,8 +1284,6 @@ | |||
43 | 1288 | 1284 | ||
44 | 1289 | sprints_all = 'All sprints and meetings registered in Launchpad' | 1285 | sprints_all = 'All sprints and meetings registered in Launchpad' |
45 | 1290 | 1286 | ||
46 | 1291 | sprints_index = 'Meetings and sprints registered in Launchpad' | ||
47 | 1292 | |||
48 | 1293 | sprintspecification_decide = 'Consider spec for sprint agenda' | 1287 | sprintspecification_decide = 'Consider spec for sprint agenda' |
49 | 1294 | 1288 | ||
50 | 1295 | sprintspecification_admin = 'Approve blueprint for sprint agenda' | 1289 | sprintspecification_admin = 'Approve blueprint for sprint agenda' |
51 | 1296 | 1290 | ||
52 | === modified file 'lib/lp/blueprints/browser/configure.zcml' | |||
53 | --- lib/lp/blueprints/browser/configure.zcml 2009-08-03 14:38:55 +0000 | |||
54 | +++ lib/lp/blueprints/browser/configure.zcml 2009-08-21 20:04:25 +0000 | |||
55 | @@ -147,9 +147,6 @@ | |||
56 | 147 | <browser:page | 147 | <browser:page |
57 | 148 | name="+all" | 148 | name="+all" |
58 | 149 | template="../templates/sprints-all.pt"/> | 149 | template="../templates/sprints-all.pt"/> |
59 | 150 | <browser:page | ||
60 | 151 | name="+portlet-details" | ||
61 | 152 | template="../templates/sprints-portlet-details.pt"/> | ||
62 | 153 | </browser:pages> | 150 | </browser:pages> |
63 | 154 | <browser:page | 151 | <browser:page |
64 | 155 | name="+new" | 152 | name="+new" |
65 | 156 | 153 | ||
66 | === modified file 'lib/lp/blueprints/browser/sprint.py' | |||
67 | --- lib/lp/blueprints/browser/sprint.py 2009-06-25 00:00:26 +0000 | |||
68 | +++ lib/lp/blueprints/browser/sprint.py 2009-08-21 20:04:25 +0000 | |||
69 | @@ -28,8 +28,9 @@ | |||
70 | 28 | import pytz | 28 | import pytz |
71 | 29 | from StringIO import StringIO | 29 | from StringIO import StringIO |
72 | 30 | 30 | ||
73 | 31 | from zope.app.form.browser import TextAreaWidget | ||
74 | 31 | from zope.component import getUtility | 32 | from zope.component import getUtility |
76 | 32 | from zope.app.form.browser import TextAreaWidget | 33 | from zope.interface import implements |
77 | 33 | 34 | ||
78 | 34 | from canonical.launchpad import _ | 35 | from canonical.launchpad import _ |
79 | 35 | from canonical.cachedproperty import cachedproperty | 36 | from canonical.cachedproperty import cachedproperty |
80 | @@ -40,6 +41,8 @@ | |||
81 | 40 | SpecificationDefinitionStatus, SpecificationFilter, SpecificationPriority, | 41 | SpecificationDefinitionStatus, SpecificationFilter, SpecificationPriority, |
82 | 41 | SpecificationSort) | 42 | SpecificationSort) |
83 | 42 | from lp.blueprints.interfaces.sprint import ISprint, ISprintSet | 43 | from lp.blueprints.interfaces.sprint import ISprint, ISprintSet |
84 | 44 | from lp.registry.browser.menu import ( | ||
85 | 45 | IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) | ||
86 | 43 | from canonical.launchpad.webapp import ( | 46 | from canonical.launchpad.webapp import ( |
87 | 44 | ApplicationMenu, ContextMenu, GetitemNavigation, LaunchpadEditFormView, | 47 | ApplicationMenu, ContextMenu, GetitemNavigation, LaunchpadEditFormView, |
88 | 45 | LaunchpadFormView, LaunchpadView, Link, Navigation, | 48 | LaunchpadFormView, LaunchpadView, Link, Navigation, |
89 | @@ -488,7 +491,22 @@ | |||
90 | 488 | return body.encode('utf-8') | 491 | return body.encode('utf-8') |
91 | 489 | 492 | ||
92 | 490 | 493 | ||
93 | 494 | class SprintSetNavigationMenu(RegistryCollectionActionMenuBase): | ||
94 | 495 | """Action menu for sprints index.""" | ||
95 | 496 | usedfor = ISprintSet | ||
96 | 497 | links = [ | ||
97 | 498 | 'register_team', | ||
98 | 499 | 'register_project', | ||
99 | 500 | 'create_account', | ||
100 | 501 | ] | ||
101 | 502 | |||
102 | 503 | |||
103 | 491 | class SprintSetView(LaunchpadView): | 504 | class SprintSetView(LaunchpadView): |
104 | 505 | """View for the /sprints top level collection page.""" | ||
105 | 506 | |||
106 | 507 | implements(IRegistryCollectionNavigationMenu) | ||
107 | 508 | |||
108 | 509 | page_title = 'Meetings and sprints registered in Launchpad' | ||
109 | 492 | 510 | ||
110 | 493 | def all_batched(self): | 511 | def all_batched(self): |
111 | 494 | return BatchNavigator(self.context.all, self.request) | 512 | return BatchNavigator(self.context.all, self.request) |
112 | 495 | 513 | ||
113 | === modified file 'lib/lp/blueprints/templates/sprints-index.pt' | |||
114 | --- lib/lp/blueprints/templates/sprints-index.pt 2009-07-17 17:59:07 +0000 | |||
115 | +++ lib/lp/blueprints/templates/sprints-index.pt 2009-08-21 20:07:57 +0000 | |||
116 | @@ -6,34 +6,37 @@ | |||
117 | 6 | xml:lang="en" | 6 | xml:lang="en" |
118 | 7 | lang="en" | 7 | lang="en" |
119 | 8 | dir="ltr" | 8 | dir="ltr" |
121 | 9 | metal:use-macro="view/macro:page/pillarindex" | 9 | metal:use-macro="view/macro:page/main_side" |
122 | 10 | i18n:domain="launchpad"> | 10 | i18n:domain="launchpad"> |
123 | 11 | |||
124 | 11 | <body> | 12 | <body> |
125 | 12 | <h1 metal:fill-slot="heading">Coming events</h1> | 13 | <h1 metal:fill-slot="heading">Coming events</h1> |
126 | 13 | 14 | ||
152 | 14 | <metal:rightportlets fill-slot="portlets_two"> | 15 | <tal:side metal:fill-slot="side"> |
153 | 15 | <div tal:replace="structure context/@@+portlet-details" /> | 16 | <tal:menu replace="structure view/@@+global-actions" /> |
154 | 16 | </metal:rightportlets> | 17 | <tal:menu replace="structure context/@@+related-pages" /> |
155 | 17 | 18 | </tal:side> | |
156 | 18 | <div metal:fill-slot="main"> | 19 | |
157 | 19 | 20 | <div metal:fill-slot="main"> | |
158 | 20 | <p id="application-summary"> | 21 | |
159 | 21 | Launchpad can help you organise your developer sprints, summits and | 22 | <table class="listing"> |
160 | 22 | gatherings. Register the meeting here, then you can invite people to | 23 | <tbody> |
161 | 23 | nominate blueprints for discussion at the event. The meeting drivers | 24 | <tal:sprint |
162 | 24 | control the agenda, but everyone can see what's proposed and what's | 25 | repeat="sprint context" |
163 | 25 | been accepted. | 26 | replace="structure sprint/@@+listing-detailed" |
164 | 26 | </p> | 27 | /> |
165 | 27 | 28 | </tbody> | |
166 | 28 | <table> | 29 | </table> |
167 | 29 | <tbody> | 30 | |
168 | 30 | <tal:sprint | 31 | <p/> |
169 | 31 | repeat="sprint context" | 32 | <p id="application-summary"> |
170 | 32 | replace="structure sprint/@@+listing-detailed" | 33 | Launchpad can help you organise your developer sprints, summits and |
171 | 33 | /> | 34 | gatherings. Register the meeting here, then you can invite people to |
172 | 34 | </tbody> | 35 | nominate blueprints for discussion at the event. The meeting drivers |
173 | 35 | </table> | 36 | control the agenda, but everyone can see what's proposed and what's |
174 | 36 | 37 | been accepted. | |
175 | 37 | </div> | 38 | </p> |
176 | 38 | </body> | 39 | |
177 | 40 | </div> | ||
178 | 41 | </body> | ||
179 | 39 | </html> | 42 | </html> |
180 | 40 | 43 | ||
181 | === removed file 'lib/lp/blueprints/templates/sprints-portlet-details.pt' | |||
182 | --- lib/lp/blueprints/templates/sprints-portlet-details.pt 2009-07-17 17:59:07 +0000 | |||
183 | +++ lib/lp/blueprints/templates/sprints-portlet-details.pt 1970-01-01 00:00:00 +0000 | |||
184 | @@ -1,22 +0,0 @@ | |||
185 | 1 | <tal:root | ||
186 | 2 | xmlns:tal="http://xml.zope.org/namespaces/tal" | ||
187 | 3 | xmlns:metal="http://xml.zope.org/namespaces/metal" | ||
188 | 4 | xmlns:i18n="http://xml.zope.org/namespaces/i18n" | ||
189 | 5 | omit-tag=""> | ||
190 | 6 | |||
191 | 7 | <div class="portlet" id="portlet-details"> | ||
192 | 8 | |||
193 | 9 | <h2>About these meetings</h2> | ||
194 | 10 | |||
195 | 11 | <div class="portletBody portletContent"> | ||
196 | 12 | |||
197 | 13 | <img src="/@@/info" /> | ||
198 | 14 | You can register a meeting, and | ||
199 | 15 | then easily manage the agenda of the meeting. Anybody can propose a | ||
200 | 16 | blueprint for discussion at the meeting, but only the meeting | ||
201 | 17 | organisers (the "drivers") can approve a topic on the meeting agenda. | ||
202 | 18 | |||
203 | 19 | </div> | ||
204 | 20 | |||
205 | 21 | </div> | ||
206 | 22 | </tal:root> | ||
207 | 23 | 0 | ||
208 | === modified file 'lib/lp/registry/browser/configure.zcml' | |||
209 | --- lib/lp/registry/browser/configure.zcml 2009-08-20 14:01:26 +0000 | |||
210 | +++ lib/lp/registry/browser/configure.zcml 2009-08-21 15:19:02 +0000 | |||
211 | @@ -424,7 +424,7 @@ | |||
212 | 424 | <browser:pages | 424 | <browser:pages |
213 | 425 | for="lp.registry.interfaces.project.IProjectSet" | 425 | for="lp.registry.interfaces.project.IProjectSet" |
214 | 426 | facet="overview" | 426 | facet="overview" |
216 | 427 | permission="launchpad.ProjectReview" | 427 | permission="zope.Public" |
217 | 428 | class="lp.registry.browser.project.ProjectSetView"> | 428 | class="lp.registry.browser.project.ProjectSetView"> |
218 | 429 | <browser:page | 429 | <browser:page |
219 | 430 | name="+all" | 430 | name="+all" |
220 | @@ -456,16 +456,18 @@ | |||
221 | 456 | template="../templates/project-series-portlet-details.pt"/> | 456 | template="../templates/project-series-portlet-details.pt"/> |
222 | 457 | <browser:menus | 457 | <browser:menus |
223 | 458 | classes=" | 458 | classes=" |
224 | 459 | ProjectFacets | ||
225 | 460 | ProjectActionMenu | 459 | ProjectActionMenu |
226 | 460 | ProjectAnswersMenu | ||
227 | 461 | ProjectBountiesMenu | ||
228 | 462 | ProjectBugsMenu | ||
229 | 461 | ProjectEditNavigationMenu | 463 | ProjectEditNavigationMenu |
230 | 464 | ProjectFacets | ||
231 | 462 | ProjectOverviewMenu | 465 | ProjectOverviewMenu |
232 | 463 | ProjectBountiesMenu | ||
233 | 464 | ProjectBugsMenu | ||
234 | 465 | ProjectSeriesSpecificationsMenu | 466 | ProjectSeriesSpecificationsMenu |
235 | 467 | ProjectSetContextMenu | ||
236 | 468 | ProjectSetNavigationMenu | ||
237 | 466 | ProjectSpecificationsMenu | 469 | ProjectSpecificationsMenu |
240 | 467 | ProjectSetContextMenu | 470 | " |
239 | 468 | ProjectAnswersMenu" | ||
241 | 469 | module="lp.registry.browser.project"/> | 471 | module="lp.registry.browser.project"/> |
242 | 470 | <browser:defaultView | 472 | <browser:defaultView |
243 | 471 | for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage" | 473 | for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage" |
244 | @@ -2010,15 +2012,17 @@ | |||
245 | 2010 | template="../../app/templates/generic-edit.pt"/> | 2012 | template="../../app/templates/generic-edit.pt"/> |
246 | 2011 | <browser:menus | 2013 | <browser:menus |
247 | 2012 | classes=" | 2014 | classes=" |
248 | 2015 | DistributionBountiesMenu | ||
249 | 2016 | DistributionBugsMenu | ||
250 | 2013 | DistributionFacets | 2017 | DistributionFacets |
251 | 2018 | DistributionMirrorsNavigationMenu | ||
252 | 2019 | DistributionNavigationMenu | ||
253 | 2014 | DistributionOverviewMenu | 2020 | DistributionOverviewMenu |
256 | 2015 | DistributionBugsMenu | 2021 | DistributionSetActionNavigationMenu |
257 | 2016 | DistributionBountiesMenu | 2022 | DistributionSetContextMenu |
258 | 2023 | DistributionSetFacets | ||
259 | 2017 | DistributionSpecificationsMenu | 2024 | DistributionSpecificationsMenu |
264 | 2018 | DistributionSetFacets | 2025 | " |
261 | 2019 | DistributionSetContextMenu | ||
262 | 2020 | DistributionNavigationMenu | ||
263 | 2021 | DistributionMirrorsNavigationMenu" | ||
265 | 2022 | module="lp.registry.browser.distribution"/> | 2026 | module="lp.registry.browser.distribution"/> |
266 | 2023 | <browser:defaultView | 2027 | <browser:defaultView |
267 | 2024 | for="lp.registry.interfaces.sourcepackage.ISourcePackage" | 2028 | for="lp.registry.interfaces.sourcepackage.ISourcePackage" |
268 | 2025 | 2029 | ||
269 | === modified file 'lib/lp/registry/browser/distribution.py' | |||
270 | --- lib/lp/registry/browser/distribution.py 2009-08-20 11:15:55 +0000 | |||
271 | +++ lib/lp/registry/browser/distribution.py 2009-08-20 22:59:38 +0000 | |||
272 | @@ -20,11 +20,12 @@ | |||
273 | 20 | 'DistributionFacets', | 20 | 'DistributionFacets', |
274 | 21 | 'DistributionLanguagePackAdminView', | 21 | 'DistributionLanguagePackAdminView', |
275 | 22 | 'DistributionNavigation', | 22 | 'DistributionNavigation', |
276 | 23 | 'DistributionPPASearchView', | ||
277 | 23 | 'DistributionPackageSearchView', | 24 | 'DistributionPackageSearchView', |
278 | 24 | 'DistributionPendingReviewMirrorsView', | 25 | 'DistributionPendingReviewMirrorsView', |
279 | 25 | 'DistributionPPASearchView', | ||
280 | 26 | 'DistributionSeriesMirrorsRSSView', | 26 | 'DistributionSeriesMirrorsRSSView', |
281 | 27 | 'DistributionSeriesMirrorsView', | 27 | 'DistributionSeriesMirrorsView', |
282 | 28 | 'DistributionSetActionNavigationMenu', | ||
283 | 28 | 'DistributionSetBreadcrumbBuilder', | 29 | 'DistributionSetBreadcrumbBuilder', |
284 | 29 | 'DistributionSetContextMenu', | 30 | 'DistributionSetContextMenu', |
285 | 30 | 'DistributionSetFacets', | 31 | 'DistributionSetFacets', |
286 | @@ -46,6 +47,8 @@ | |||
287 | 46 | 47 | ||
288 | 47 | from canonical.cachedproperty import cachedproperty | 48 | from canonical.cachedproperty import cachedproperty |
289 | 48 | from lp.registry.browser.announcement import HasAnnouncementsView | 49 | from lp.registry.browser.announcement import HasAnnouncementsView |
290 | 50 | from lp.registry.browser.menu import ( | ||
291 | 51 | IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) | ||
292 | 49 | from lp.soyuz.browser.archive import traverse_distro_archive | 52 | from lp.soyuz.browser.archive import traverse_distro_archive |
293 | 50 | from lp.bugs.browser.bugtask import BugTargetTraversalMixin | 53 | from lp.bugs.browser.bugtask import BugTargetTraversalMixin |
294 | 51 | from lp.soyuz.browser.build import BuildRecordsView | 54 | from lp.soyuz.browser.build import BuildRecordsView |
295 | @@ -770,12 +773,21 @@ | |||
296 | 770 | self.batchnav = BatchNavigator(results, self.request) | 773 | self.batchnav = BatchNavigator(results, self.request) |
297 | 771 | 774 | ||
298 | 772 | 775 | ||
305 | 773 | class DistributionSetView: | 776 | class DistributionSetActionNavigationMenu(RegistryCollectionActionMenuBase): |
306 | 774 | 777 | """Action menu for `DistributionSetView`.""" | |
307 | 775 | def __init__(self, context, request): | 778 | |
308 | 776 | self.context = context | 779 | usedfor = IDistributionSet |
309 | 777 | self.request = request | 780 | links = ['register_team', 'register_project', 'create_account'] |
310 | 778 | 781 | ||
311 | 782 | |||
312 | 783 | class DistributionSetView(LaunchpadView): | ||
313 | 784 | """View for /distros top level collection.""" | ||
314 | 785 | |||
315 | 786 | implements(IRegistryCollectionNavigationMenu) | ||
316 | 787 | |||
317 | 788 | page_title = 'Distributions registered in Launchpad' | ||
318 | 789 | |||
319 | 790 | @cachedproperty | ||
320 | 779 | def count(self): | 791 | def count(self): |
321 | 780 | return self.context.count() | 792 | return self.context.count() |
322 | 781 | 793 | ||
323 | 782 | 794 | ||
324 | === modified file 'lib/lp/registry/browser/menu.py' | |||
325 | --- lib/lp/registry/browser/menu.py 2009-08-20 16:28:54 +0000 | |||
326 | +++ lib/lp/registry/browser/menu.py 2009-08-21 20:04:25 +0000 | |||
327 | @@ -22,19 +22,19 @@ | |||
328 | 22 | """Menu shared by top level collection objects.""" | 22 | """Menu shared by top level collection objects.""" |
329 | 23 | 23 | ||
330 | 24 | def projects(self): | 24 | def projects(self): |
332 | 25 | return Link('/projects/', 'Projects') | 25 | return Link('/projects/', 'View projects', icon='info') |
333 | 26 | 26 | ||
334 | 27 | def distributions(self): | 27 | def distributions(self): |
336 | 28 | return Link('/distros/', 'Distributions') | 28 | return Link('/distros/', 'View distributions', icon='info') |
337 | 29 | 29 | ||
338 | 30 | def people(self): | 30 | def people(self): |
340 | 31 | return Link('/people/', 'People') | 31 | return Link('/people/', 'View people', icon='info') |
341 | 32 | 32 | ||
342 | 33 | def meetings(self): | 33 | def meetings(self): |
344 | 34 | return Link('/sprints/', 'Meetings') | 34 | return Link('/sprints/', 'View meetings', icon='info') |
345 | 35 | 35 | ||
346 | 36 | def project_groups(self): | 36 | def project_groups(self): |
348 | 37 | return Link('/projectgroups', 'Project groups') | 37 | return Link('/projectgroups', 'View project groups', icon='info') |
349 | 38 | 38 | ||
350 | 39 | def register_project(self): | 39 | def register_project(self): |
351 | 40 | text = 'Register a project' | 40 | text = 'Register a project' |
352 | 41 | 41 | ||
353 | === modified file 'lib/lp/registry/browser/product.py' | |||
354 | --- lib/lp/registry/browser/product.py 2009-08-21 07:17:28 +0000 | |||
355 | +++ lib/lp/registry/browser/product.py 2009-08-21 15:05:23 +0000 | |||
356 | @@ -1393,7 +1393,7 @@ | |||
357 | 1393 | 1393 | ||
358 | 1394 | @enabled_with_permission('launchpad.ProjectReview') | 1394 | @enabled_with_permission('launchpad.ProjectReview') |
359 | 1395 | def review_licenses(self): | 1395 | def review_licenses(self): |
361 | 1396 | return Link('+review-licenses', 'Review projects') | 1396 | return Link('+review-licenses', 'Review projects', icon='edit') |
362 | 1397 | 1397 | ||
363 | 1398 | 1398 | ||
364 | 1399 | class ProductSetView(LaunchpadView): | 1399 | class ProductSetView(LaunchpadView): |
365 | @@ -1405,27 +1405,27 @@ | |||
366 | 1405 | 1405 | ||
367 | 1406 | max_results_to_display = config.launchpad.default_batch_size | 1406 | max_results_to_display = config.launchpad.default_batch_size |
368 | 1407 | results = None | 1407 | results = None |
370 | 1408 | searchrequested = False | 1408 | search_requested = False |
371 | 1409 | 1409 | ||
372 | 1410 | def initialize(self): | 1410 | def initialize(self): |
374 | 1411 | """See `LaunchpadFormView`.""" | 1411 | """See `LaunchpadView`.""" |
375 | 1412 | form = self.request.form_ng | 1412 | form = self.request.form_ng |
376 | 1413 | self.search_string = form.getOne('text') | 1413 | self.search_string = form.getOne('text') |
377 | 1414 | if self.search_string is not None: | 1414 | if self.search_string is not None: |
379 | 1415 | self.searchrequested = True | 1415 | self.search_requested = True |
380 | 1416 | 1416 | ||
381 | 1417 | def all_batched(self): | 1417 | def all_batched(self): |
382 | 1418 | return BatchNavigator(self.context.all_active, self.request) | 1418 | return BatchNavigator(self.context.all_active, self.request) |
383 | 1419 | 1419 | ||
384 | 1420 | @cachedproperty | 1420 | @cachedproperty |
385 | 1421 | def matches(self): | 1421 | def matches(self): |
387 | 1422 | if not self.searchrequested: | 1422 | if not self.search_requested: |
388 | 1423 | return None | 1423 | return None |
389 | 1424 | pillarset = getUtility(IPillarNameSet) | 1424 | pillarset = getUtility(IPillarNameSet) |
390 | 1425 | return pillarset.count_search_matches(self.search_string) | 1425 | return pillarset.count_search_matches(self.search_string) |
391 | 1426 | 1426 | ||
392 | 1427 | @cachedproperty | 1427 | @cachedproperty |
394 | 1428 | def searchresults(self): | 1428 | def search_results(self): |
395 | 1429 | search_string = self.search_string.lower() | 1429 | search_string = self.search_string.lower() |
396 | 1430 | limit = self.max_results_to_display | 1430 | limit = self.max_results_to_display |
397 | 1431 | return getUtility(IPillarNameSet).search(search_string, limit) | 1431 | return getUtility(IPillarNameSet).search(search_string, limit) |
398 | 1432 | 1432 | ||
399 | === modified file 'lib/lp/registry/browser/project.py' | |||
400 | --- lib/lp/registry/browser/project.py 2009-08-20 15:23:34 +0000 | |||
401 | +++ lib/lp/registry/browser/project.py 2009-08-21 15:14:09 +0000 | |||
402 | @@ -6,6 +6,7 @@ | |||
403 | 6 | __metaclass__ = type | 6 | __metaclass__ = type |
404 | 7 | 7 | ||
405 | 8 | __all__ = [ | 8 | __all__ = [ |
406 | 9 | 'ProjectActionMenu', | ||
407 | 9 | 'ProjectAddProductView', | 10 | 'ProjectAddProductView', |
408 | 10 | 'ProjectAddQuestionView', | 11 | 'ProjectAddQuestionView', |
409 | 11 | 'ProjectAddView', | 12 | 'ProjectAddView', |
410 | @@ -18,14 +19,14 @@ | |||
411 | 18 | 'ProjectFacets', | 19 | 'ProjectFacets', |
412 | 19 | 'ProjectMaintainerReassignmentView', | 20 | 'ProjectMaintainerReassignmentView', |
413 | 20 | 'ProjectNavigation', | 21 | 'ProjectNavigation', |
414 | 22 | 'ProjectOverviewMenu', | ||
415 | 21 | 'ProjectRdfView', | 23 | 'ProjectRdfView', |
416 | 22 | 'ProjectReviewView', | 24 | 'ProjectReviewView', |
417 | 23 | 'ProjectActionMenu', | ||
418 | 24 | 'ProjectOverviewMenu', | ||
419 | 25 | 'ProjectSeriesSpecificationsMenu', | 25 | 'ProjectSeriesSpecificationsMenu', |
420 | 26 | 'ProjectSetBreadcrumbBuilder', | 26 | 'ProjectSetBreadcrumbBuilder', |
421 | 27 | 'ProjectSetContextMenu', | 27 | 'ProjectSetContextMenu', |
422 | 28 | 'ProjectSetNavigation', | 28 | 'ProjectSetNavigation', |
423 | 29 | 'ProjectSetNavigationMenu', | ||
424 | 29 | 'ProjectSetView', | 30 | 'ProjectSetView', |
425 | 30 | 'ProjectSpecificationsMenu', | 31 | 'ProjectSpecificationsMenu', |
426 | 31 | 'ProjectView', | 32 | 'ProjectView', |
427 | @@ -49,6 +50,8 @@ | |||
428 | 49 | from lp.registry.interfaces.project import ( | 50 | from lp.registry.interfaces.project import ( |
429 | 50 | IProject, IProjectSeries, IProjectSet) | 51 | IProject, IProjectSeries, IProjectSet) |
430 | 51 | from lp.registry.browser.announcement import HasAnnouncementsView | 52 | from lp.registry.browser.announcement import HasAnnouncementsView |
431 | 53 | from lp.registry.browser.menu import ( | ||
432 | 54 | IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) | ||
433 | 52 | from lp.registry.browser.product import ( | 55 | from lp.registry.browser.product import ( |
434 | 53 | ProductAddView, ProjectAddStepOne, ProjectAddStepTwo) | 56 | ProductAddView, ProjectAddStepOne, ProjectAddStepTwo) |
435 | 54 | from canonical.launchpad.browser.branding import BrandingChangeView | 57 | from canonical.launchpad.browser.branding import BrandingChangeView |
436 | @@ -229,10 +232,6 @@ | |||
437 | 229 | text = 'See all milestones' | 232 | text = 'See all milestones' |
438 | 230 | return Link('+milestones', text) | 233 | return Link('+milestones', text) |
439 | 231 | 234 | ||
440 | 232 | def milestones(self): | ||
441 | 233 | text = 'See all milestones' | ||
442 | 234 | return Link('+milestones', text) | ||
443 | 235 | |||
444 | 236 | def rdf(self): | 235 | def rdf(self): |
445 | 237 | text = structured( | 236 | text = structured( |
446 | 238 | 'Download <abbr title="Resource Description Framework">' | 237 | 'Download <abbr title="Resource Description Framework">' |
447 | @@ -479,10 +478,18 @@ | |||
448 | 479 | return ProjectGroupAddStepOne | 478 | return ProjectGroupAddStepOne |
449 | 480 | 479 | ||
450 | 481 | 480 | ||
451 | 481 | class ProjectSetNavigationMenu(RegistryCollectionActionMenuBase): | ||
452 | 482 | """Action menu for project group index.""" | ||
453 | 483 | usedfor = IProjectSet | ||
454 | 484 | links = ['register_team', 'register_project', 'create_account'] | ||
455 | 485 | |||
456 | 486 | |||
457 | 482 | class ProjectSetView(LaunchpadView): | 487 | class ProjectSetView(LaunchpadView): |
461 | 483 | 488 | """View for project group index page.""" | |
462 | 484 | header = "Project groups registered in Launchpad" | 489 | |
463 | 485 | page_title = header | 490 | implements(IRegistryCollectionNavigationMenu) |
464 | 491 | |||
465 | 492 | page_title = "Project groups registered in Launchpad" | ||
466 | 486 | 493 | ||
467 | 487 | def __init__(self, context, request): | 494 | def __init__(self, context, request): |
468 | 488 | super(ProjectSetView, self).__init__(context, request) | 495 | super(ProjectSetView, self).__init__(context, request) |
469 | @@ -492,17 +499,26 @@ | |||
470 | 492 | self.malone = self.form.getOne('malone', None) | 499 | self.malone = self.form.getOne('malone', None) |
471 | 493 | self.bazaar = self.form.getOne('bazaar', None) | 500 | self.bazaar = self.form.getOne('bazaar', None) |
472 | 494 | self.text = self.form.getOne('text', None) | 501 | self.text = self.form.getOne('text', None) |
474 | 495 | self.searchrequested = False | 502 | self.search_requested = False |
475 | 503 | self.search_string = None | ||
476 | 496 | if (self.text is not None or | 504 | if (self.text is not None or |
477 | 497 | self.bazaar is not None or | 505 | self.bazaar is not None or |
478 | 498 | self.malone is not None or | 506 | self.malone is not None or |
479 | 499 | self.rosetta is not None or | 507 | self.rosetta is not None or |
480 | 500 | self.soyuz is not None): | 508 | self.soyuz is not None): |
482 | 501 | self.searchrequested = True | 509 | self.search_requested = True |
483 | 502 | self.results = None | 510 | self.results = None |
484 | 503 | self.matches = 0 | 511 | self.matches = 0 |
485 | 504 | 512 | ||
487 | 505 | def searchresults(self): | 513 | def initialize(self): |
488 | 514 | """See `LaunchpadView`.""" | ||
489 | 515 | form = self.request.form_ng | ||
490 | 516 | self.search_string = form.getOne('text') | ||
491 | 517 | if self.search_string is not None: | ||
492 | 518 | self.search_requested = True | ||
493 | 519 | |||
494 | 520 | @cachedproperty | ||
495 | 521 | def search_results(self): | ||
496 | 506 | """Use searchtext to find the list of Projects that match | 522 | """Use searchtext to find the list of Projects that match |
497 | 507 | and then present those as a list. Only do this the first | 523 | and then present those as a list. Only do this the first |
498 | 508 | time the method is called, otherwise return previous results. | 524 | time the method is called, otherwise return previous results. |
499 | 509 | 525 | ||
500 | === modified file 'lib/lp/registry/templates/distros-index.pt' | |||
501 | --- lib/lp/registry/templates/distros-index.pt 2009-07-17 17:59:07 +0000 | |||
502 | +++ lib/lp/registry/templates/distros-index.pt 2009-08-20 22:57:10 +0000 | |||
503 | @@ -6,35 +6,23 @@ | |||
504 | 6 | xml:lang="en" | 6 | xml:lang="en" |
505 | 7 | lang="en" | 7 | lang="en" |
506 | 8 | dir="ltr" | 8 | dir="ltr" |
508 | 9 | metal:use-macro="view/macro:page/pillarindex" | 9 | metal:use-macro="view/macro:page/main_side" |
509 | 10 | i18n:domain="launchpad" | 10 | i18n:domain="launchpad" |
510 | 11 | > | 11 | > |
511 | 12 | <body> | 12 | <body> |
512 | 13 | <h1 metal:fill-slot="heading">Registered distributions</h1> | 13 | <h1 metal:fill-slot="heading">Registered distributions</h1> |
513 | 14 | 14 | ||
537 | 15 | <metal:rightportlets fill-slot="portlets_two"> | 15 | <tal:side metal:fill-slot="side"> |
538 | 16 | <div class="portlet"> | 16 | <tal:menu replace="structure view/@@+global-actions" /> |
539 | 17 | <h2>About these distributions</h2> | 17 | <tal:menu replace="structure context/@@+related-pages" /> |
540 | 18 | 18 | </tal:side> | |
541 | 19 | <div class="portletBody portletContent"> | 19 | |
542 | 20 | <img src="/@@/info" /> | 20 | <div metal:fill-slot="main"> |
543 | 21 | Launchpad can manage the source packages, builds, archive publishing | 21 | There are currently |
544 | 22 | and historical record-keeping necessary to create a distribution. | 22 | <strong class="registry-stat" |
545 | 23 | Some of the distributions described here are fully managed in | 23 | tal:content="view/count">2</strong> |
546 | 24 | Launchpad, others are managed elsewhere but Launchpad keeps track of | 24 | distributions registered in Launchpad. |
547 | 25 | their progress. | 25 | <p/> |
525 | 26 | </div> | ||
526 | 27 | </div> | ||
527 | 28 | </metal:rightportlets> | ||
528 | 29 | |||
529 | 30 | <div metal:fill-slot="main"> | ||
530 | 31 | |||
531 | 32 | <div id="application-summary"> | ||
532 | 33 | Launchpad can keep track of the software packages in a distribution, | ||
533 | 34 | and provide information about the bugs, translations and code | ||
534 | 35 | associated with each of them. | ||
535 | 36 | </div> | ||
536 | 37 | |||
548 | 38 | <table class="listing"> | 26 | <table class="listing"> |
549 | 39 | <thead> | 27 | <thead> |
550 | 40 | <tr> | 28 | <tr> |
551 | @@ -67,6 +55,13 @@ | |||
552 | 67 | and its information might be out of date. | 55 | and its information might be out of date. |
553 | 68 | </p> | 56 | </p> |
554 | 69 | 57 | ||
555 | 58 | <div id="application-summary"> | ||
556 | 59 | Launchpad manages the source packages, builds, archive publishing, bugs, | ||
557 | 60 | translations, code, and historical record-keeping necessary to create a | ||
558 | 61 | distribution. Some of the distributions described here are fully | ||
559 | 62 | managed in Launchpad, others are managed elsewhere with Launchpad | ||
560 | 63 | keeping track of their progress. | ||
561 | 64 | </div> | ||
562 | 70 | </div> | 65 | </div> |
563 | 71 | 66 | ||
564 | 72 | </body> | 67 | </body> |
565 | 73 | 68 | ||
566 | === modified file 'lib/lp/registry/templates/products-index.pt' | |||
567 | --- lib/lp/registry/templates/products-index.pt 2009-08-20 16:13:15 +0000 | |||
568 | +++ lib/lp/registry/templates/products-index.pt 2009-08-20 21:13:30 +0000 | |||
569 | @@ -43,17 +43,17 @@ | |||
570 | 43 | tal:attributes="action request/URL" | 43 | tal:attributes="action request/URL" |
571 | 44 | accept-charset="UTF-8"> | 44 | accept-charset="UTF-8"> |
572 | 45 | <input size="30" name="text" tal:attributes="value view/search_string" /> | 45 | <input size="30" name="text" tal:attributes="value view/search_string" /> |
574 | 46 | <input tal:condition="view/searchrequested" | 46 | <input tal:condition="view/search_requested" |
575 | 47 | type="submit" | 47 | type="submit" |
576 | 48 | value="Search again" | 48 | value="Search again" |
577 | 49 | /> | 49 | /> |
579 | 50 | <input tal:condition="not: view/searchrequested" | 50 | <input tal:condition="not: view/search_requested" |
580 | 51 | type="submit" | 51 | type="submit" |
581 | 52 | value="Search projects" | 52 | value="Search projects" |
582 | 53 | /> | 53 | /> |
583 | 54 | </form> | 54 | </form> |
584 | 55 | 55 | ||
586 | 56 | <tal:searching condition="view/searchrequested"> | 56 | <tal:searching condition="view/search_requested"> |
587 | 57 | 57 | ||
588 | 58 | <p id="empty-search-string" tal:condition="not: view/search_string"> | 58 | <p id="empty-search-string" tal:condition="not: view/search_string"> |
589 | 59 | Enter one or more words related to the project you want to find. | 59 | Enter one or more words related to the project you want to find. |
590 | @@ -69,22 +69,22 @@ | |||
591 | 69 | do another search with more relevant search terms. | 69 | do another search with more relevant search terms. |
592 | 70 | </p> | 70 | </p> |
593 | 71 | 71 | ||
604 | 72 | <p tal:condition="view/searchresults"> | 72 | <tal:searching tal:condition="view/search_results"> |
605 | 73 | <span tal:replace="view/matches">3</span> | 73 | <p class="search-results"> |
606 | 74 | <span tal:condition="python: view.matches == 1">project found</span> | 74 | <span tal:replace="view/matches">3</span> |
607 | 75 | <span tal:condition="python: view.matches != 1">projects found</span> | 75 | <span tal:condition="python: view.matches == 1">project found</span> |
608 | 76 | matching “<tal:string replace="view/search_string" />” | 76 | <span tal:condition="python: view.matches != 1">projects found</span> |
609 | 77 | <span tal:condition="view/tooManyResultsFound">, | 77 | matching “<tal:string replace="view/search_string" />” |
610 | 78 | showing the most relevant | 78 | <span tal:condition="view/tooManyResultsFound">, |
611 | 79 | <span tal:replace="view/max_results_to_display" /> | 79 | showing the most relevant |
612 | 80 | </span> | 80 | <span tal:replace="view/max_results_to_display" /> |
613 | 81 | </p> | 81 | </span> |
614 | 82 | </p> | ||
615 | 83 | </tal:searching> | ||
616 | 82 | 84 | ||
622 | 83 | <table | 85 | <table tal:condition="view/matches" |
623 | 84 | tal:condition="view/matches" | 86 | tal:define="results view/search_results" |
624 | 85 | tal:define="results view/searchresults" | 87 | class="search-results"> |
620 | 86 | id="search-results" | ||
621 | 87 | > | ||
625 | 88 | <tbody> | 88 | <tbody> |
626 | 89 | <tr tal:repeat="pillarname results" | 89 | <tr tal:repeat="pillarname results" |
627 | 90 | tal:replace="structure pillarname/@@+listing-simple"> | 90 | tal:replace="structure pillarname/@@+listing-simple"> |
628 | @@ -94,42 +94,32 @@ | |||
629 | 94 | 94 | ||
630 | 95 | <div id="application-summary"> | 95 | <div id="application-summary"> |
631 | 96 | <p class="error" | 96 | <p class="error" |
633 | 97 | tal:condition="not: view/searchresults"> | 97 | tal:condition="not: view/search_results"> |
634 | 98 | No projects matching | 98 | No projects matching |
635 | 99 | “<span tal:replace="view/search_string">moz</span>” | 99 | “<span tal:replace="view/search_string">moz</span>” |
636 | 100 | were found. | 100 | were found. |
637 | 101 | </p> | 101 | </p> |
638 | 102 | 102 | ||
639 | 103 | <h2>Haven’t found your project?</h2> | ||
640 | 104 | |||
641 | 105 | <p> | 103 | <p> |
644 | 106 | If the project you are looking for isn't here, go ahead and register | 104 | If the project you are looking for isn't here, go ahead and |
645 | 107 | it yourself! | 105 | <a href="" |
646 | 106 | tal:attributes="href view/menu:overview/register_project/url" | ||
647 | 107 | >register it yourself!</a> | ||
648 | 108 | </p> | 108 | </p> |
649 | 109 | 109 | ||
650 | 110 | <ul class="rollover buttons"> | ||
651 | 111 | <li> | ||
652 | 112 | <a href="/projects/+new"> | ||
653 | 113 | <img | ||
654 | 114 | alt="Register a project" | ||
655 | 115 | src="/+icing/but-lrg-registerproj.gif" | ||
656 | 116 | /> | ||
657 | 117 | </a> | ||
658 | 118 | </li> | ||
659 | 119 | </ul> | ||
660 | 120 | </div> | 110 | </div> |
661 | 121 | </tal:non-empty-search-string> | 111 | </tal:non-empty-search-string> |
662 | 122 | 112 | ||
663 | 123 | </tal:searching> | 113 | </tal:searching> |
665 | 124 | <tal:no_search condition="not: view/searchrequested"> | 114 | <tal:no_search condition="not: view/search_requested"> |
666 | 125 | 115 | ||
668 | 126 | <p id="application-summary"> | 116 | <p class="application-summary"> |
669 | 127 | Launchpad helps people to work together by making it easy to share | 117 | Launchpad helps people to work together by making it easy to share |
670 | 128 | code, bug reports, translations, and ideas. To get started, search here | 118 | code, bug reports, translations, and ideas. To get started, search here |
671 | 129 | for a project you want to know more about. | 119 | for a project you want to know more about. |
672 | 130 | </p> | 120 | </p> |
673 | 131 | 121 | ||
675 | 132 | <p> | 122 | <p class="application-summary"> |
676 | 133 | If you find a project you run, <a href="/launchpad/+addquestion">ask | 123 | If you find a project you run, <a href="/launchpad/+addquestion">ask |
677 | 134 | us</a> and we'll hand the project over to you. | 124 | us</a> and we'll hand the project over to you. |
678 | 135 | <br />To set that project up for translation to your language, <a | 125 | <br />To set that project up for translation to your language, <a |
679 | 136 | 126 | ||
680 | === modified file 'lib/lp/registry/templates/projects-index.pt' | |||
681 | --- lib/lp/registry/templates/projects-index.pt 2009-07-17 17:59:07 +0000 | |||
682 | +++ lib/lp/registry/templates/projects-index.pt 2009-08-20 21:13:30 +0000 | |||
683 | @@ -6,96 +6,81 @@ | |||
684 | 6 | xml:lang="en" | 6 | xml:lang="en" |
685 | 7 | lang="en" | 7 | lang="en" |
686 | 8 | dir="ltr" | 8 | dir="ltr" |
688 | 9 | metal:use-macro="view/macro:page/pillarindex" | 9 | metal:use-macro="view/macro:page/main_side" |
689 | 10 | i18n:domain="launchpad" | 10 | i18n:domain="launchpad" |
690 | 11 | > | 11 | > |
691 | 12 | <body> | 12 | <body> |
708 | 13 | <h1 metal:fill-slot="heading">Project groups in Launchpad</h1> | 13 | <h1 metal:fill-slot="heading">Project groups</h1> |
709 | 14 | 14 | ||
710 | 15 | <metal:rightportlets fill-slot="portlets_two"> | 15 | <tal:side metal:fill-slot="side"> |
711 | 16 | <div class="portlet"> | 16 | <tal:menu replace="structure view/@@+global-actions" /> |
712 | 17 | <h2>About Projects in Launchpad:</h2> | 17 | <tal:menu replace="structure context/@@+related-pages" /> |
713 | 18 | <div class="portletBody portletContent"> | 18 | </tal:side> |
714 | 19 | <img src="/@@/info" /> | 19 | |
715 | 20 | There are currently | 20 | <div metal:fill-slot="main"> |
716 | 21 | <a href="+all"><span tal:replace="context/count_all">5</span> | 21 | <p>There are |
717 | 22 | projects</a> registered. | 22 | <strong class="registry-stat" |
718 | 23 | <br /> | 23 | tal:content="context/count_all">5</strong> |
719 | 24 | <br /> | 24 | project groups registered in Launchpad. |
720 | 25 | Only the Launchpad administrators and registry experts can register new | 25 | </p> |
721 | 26 | project groups. You can register an individual application (what we call | 26 | |
722 | 27 | a project). To do so, first <a href="/projects/">search to see if your | 27 | <form class="central" method="get" accept-charset="UTF-8"> |
723 | 28 | project is already in Launchpad</a>. | 28 | <input size="30" name="text" tal:attributes="value view/search_string" /> |
724 | 29 | <input | ||
725 | 30 | tal:condition="view/search_requested" | ||
726 | 31 | type="submit" value="Search Again" /> | ||
727 | 32 | <input | ||
728 | 33 | tal:condition="not: view/search_requested" | ||
729 | 34 | type="submit" value="Search project groups" /> | ||
730 | 35 | </form> | ||
731 | 36 | |||
732 | 37 | <div tal:condition="view/search_requested"> | ||
733 | 38 | <tal:searching tal:condition="view/search_results"> | ||
734 | 39 | <p class="search-results"> | ||
735 | 40 | <span tal:replace="view/matches">3</span> | ||
736 | 41 | <span tal:condition="python: view.matches == 1">project | ||
737 | 42 | group found</span> | ||
738 | 43 | <span tal:condition="python: view.matches != 1">projects | ||
739 | 44 | groups found</span> | ||
740 | 45 | matching | ||
741 | 46 | “<tal:string replace="view/search_string" />” | ||
742 | 47 | </p> | ||
743 | 48 | </tal:searching> | ||
744 | 49 | |||
745 | 50 | <table tal:condition="view/matches" | ||
746 | 51 | tal:define="results view/search_results" | ||
747 | 52 | class="search-results"> | ||
748 | 53 | <tbody> | ||
749 | 54 | <tr tal:repeat="product results"> | ||
750 | 55 | <td tal:content="structure product/@@+listing-detailed" /> | ||
751 | 56 | </tr> | ||
752 | 57 | </tbody> | ||
753 | 58 | </table> | ||
754 | 59 | |||
755 | 60 | <p class="error application-summary" | ||
756 | 61 | tal:condition="not: view/search_results"> | ||
757 | 62 | No project groups matching | ||
758 | 63 | “<span tal:replace="view/search_string">moz</span>” | ||
759 | 64 | were found. | ||
760 | 65 | </p> | ||
761 | 66 | </div> | ||
762 | 67 | <p class="application-summary"> | ||
763 | 68 | In Launchpad, <dfn>project groups</dfn> are special groups of | ||
764 | 69 | software projects that share a development community. Examples | ||
765 | 70 | include <a href="gnome">Gnome</a>, | ||
766 | 71 | <a href="kde"><abbr>KDE</abbr></a>, and | ||
767 | 72 | <a href="mozilla">Mozilla</a>. Launchpad allows you to group | ||
768 | 73 | several projects together into a project group, to make coordination | ||
769 | 74 | and tracking simpler. | ||
770 | 75 | </p> | ||
771 | 76 | |||
772 | 77 | <p class="application-summary"> | ||
773 | 78 | Only the Launchpad administrators and registry experts can register | ||
774 | 79 | new project groups. You can register an individual application (what | ||
775 | 80 | we call a project). To do so, first <a href="/projects/">search to | ||
776 | 81 | see if your project is already in Launchpad</a>. | ||
777 | 82 | </p> | ||
778 | 83 | |||
779 | 29 | </div> | 84 | </div> |
851 | 30 | </div> | 85 | </body> |
781 | 31 | </metal:rightportlets> | ||
782 | 32 | |||
783 | 33 | <div metal:fill-slot="main"> | ||
784 | 34 | |||
785 | 35 | <p> | ||
786 | 36 | In Launchpad, <dfn>project groups</dfn> are special groups of software | ||
787 | 37 | projects that share a development community. | ||
788 | 38 | Examples include <a href="gnome">Gnome</a>, | ||
789 | 39 | <a href="kde"><abbr>KDE</abbr></a>, and | ||
790 | 40 | <a href="mozilla">Mozilla</a>. Launchpad allows you to group several | ||
791 | 41 | projects together in a project, to make coordination and tracking | ||
792 | 42 | simpler. | ||
793 | 43 | </p> | ||
794 | 44 | |||
795 | 45 | <form method="get" accept-charset="UTF-8"> | ||
796 | 46 | <label for="text">Search projects:</label> | ||
797 | 47 | <input name="text" tal:attributes="value view/text" /> | ||
798 | 48 | <input | ||
799 | 49 | tal:condition="view/searchrequested" | ||
800 | 50 | type="submit" value="Search Again" /> | ||
801 | 51 | <input | ||
802 | 52 | tal:condition="not: view/searchrequested" | ||
803 | 53 | type="submit" value="Search" /> | ||
804 | 54 | </form> | ||
805 | 55 | |||
806 | 56 | <tal:notsearching condition="not:view/searchrequested"> | ||
807 | 57 | <p> | ||
808 | 58 | For individual computer programs, applications or libraries, | ||
809 | 59 | see <a href="/projects">projects</a>. | ||
810 | 60 | </p> | ||
811 | 61 | |||
812 | 62 | <p> | ||
813 | 63 | For groups of people, see | ||
814 | 64 | <a href="/people">Launchpad teams</a>. | ||
815 | 65 | </p> | ||
816 | 66 | </tal:notsearching> | ||
817 | 67 | |||
818 | 68 | <tal:searching condition="view/searchrequested"> | ||
819 | 69 | |||
820 | 70 | <table class="data" tal:define="results view/searchresults"> | ||
821 | 71 | <thead> | ||
822 | 72 | <tr class="results"> | ||
823 | 73 | <th colspan="0"> | ||
824 | 74 | <span tal:replace="view/matches">3</span> | ||
825 | 75 | <span tal:condition="python: view.matches == 1">result</span> | ||
826 | 76 | <span tal:condition="python: view.matches != 1">results</span> | ||
827 | 77 | </th> | ||
828 | 78 | </tr> | ||
829 | 79 | </thead> | ||
830 | 80 | <tbody> | ||
831 | 81 | <tr tal:condition="view/matches" | ||
832 | 82 | tal:repeat="product results"> | ||
833 | 83 | <td tal:content="structure product/@@+listing-detailed" /> | ||
834 | 84 | </tr> | ||
835 | 85 | <tr tal:condition="not: view/matches"> | ||
836 | 86 | <td tal:condition="not: view/matches"> | ||
837 | 87 | <p>No projects matching | ||
838 | 88 | “<span tal:replace="view/text">moz</span>” | ||
839 | 89 | were found. | ||
840 | 90 | You can <a href="+new">register a new project</a>.</p> | ||
841 | 91 | </td> | ||
842 | 92 | </tr> | ||
843 | 93 | </tbody> | ||
844 | 94 | </table> | ||
845 | 95 | |||
846 | 96 | </tal:searching> | ||
847 | 97 | |||
848 | 98 | </div> | ||
849 | 99 | |||
850 | 100 | </body> | ||
852 | 101 | </html> | 86 | </html> |
= Summary =
Bug 416703 describes the conversion of the top level /sprints page to UI 3.0.
This was a fairly mechanical change given that this is the fifth such related
branch I've done.
NOTE: This branch is dependent on one that has not yet landed. Please use the
attached diff if the generated one does not take the branch dependencies into
account.
== Proposed fix ==
Fiddle with templates, etc.
== Pre-implementation notes ==
Not much, except that after a discussion on irc, it was decided to restore the
'info' icons and the 'View...' prefix in the navmenu, for consistency with the
rest of the ui.
== Implementation details ==
Not much extra.
== Tests ==
Will run through ec2 before landing.
== Demo and Q/A ==
* Visit http:// launchpad. dev/sprints
= Launchpad lint =
Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.
Linting changed files: registry/ browser/ configure. zcml blueprints/ templates/ sprints- index.pt registry/ browser/ menu.py /launchpad/ pagetitles. py registry/ browser/ product. py blueprints/ browser/ sprint. py /launchpad/ icing/style- 3-0.css blueprints/ browser/ configure. zcml registry/ templates/ projects- index.pt registry/ templates/ distros- index.pt registry/ templates/ products- index.pt registry/ browser/ distribution. py registry/ browser/ project. py
lib/lp/
lib/lp/
lib/lp/
lib/canonical
lib/lp/
lib/lp/
lib/canonical
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
lib/lp/
== diff ==
=== modified file 'lib/canonical/ launchpad/ pagetitles. py' launchpad/ pagetitles. py 2009-08-21 15:19:02 +0000 launchpad/ pagetitles. py 2009-08-21 20:04:25 +0000
--- lib/canonical/
+++ lib/canonical/
@@ -1284,8 +1284,6 @@
sprints_all = 'All sprints and meetings registered in Launchpad'
-sprints_index = 'Meetings and sprints registered in Launchpad' ation_decide = 'Consider spec for sprint agenda'
-
sprintspecific
sprintspecific ation_admin = 'Approve blueprint for sprint agenda'
=== modified file 'lib/lp/ blueprints/ browser/ configure. zcml' blueprints/ browser/ configure. zcml 2009-08-03 14:38:55 +0000 blueprints/ browser/ configure. zcml 2009-08-21 20:04:25 +0000
<browser: page
name= "+all"
template= "../templates/ sprints- all.pt" /> portlet- details" "../templates/ sprints- portlet- details. pt"/> browser: pages>
name= "+new"
--- lib/lp/
+++ lib/lp/
@@ -147,9 +147,6 @@
- <browser:page
- name="+
- template=
</
<browser:page
=== modified file 'lib/lp/ blueprints/ browser/ sprint. py' blueprints/ browser/ sprint. py 2009-06-25 00:00:26 +0000 blueprints/ browser/ sprint. py 2009-08-21 20:04:25 +0000
--- lib/lp/
+++ lib/lp/
@@ -28,8 +28,9 @@
import pytz
from StringIO import StringIO
+from zope.app. form.browser import TextAreaWidget form.browser import TextAreaWidget
from zope.component import getUtility
-from zope.app.
+from zope.interface import implements
from canonical.launchpad import _ cachedproperty import cachedproperty ionDefinitionSt atus, SpecificationFi lter, SpecificationPr iority, ionSort) interfaces. sprint import ISprint, ISprintS...
from canonical.
@@ -40,6 +41,8 @@
Specificat
Specificat
from lp.blueprints.