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 | color: #000; |
6 | font-weight: normal; |
7 | } |
8 | +.application-summary { |
9 | + font-size: 123.1%; |
10 | +} |
11 | +.search-results { |
12 | + margin-top: 1em; |
13 | +} |
14 | +p.search-results { |
15 | + font-size: 116%; |
16 | +} |
17 | |
18 | |
19 | /* Exceptions they may be common. */ |
20 | |
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 | |
26 | distroseriessourcepackagerelease_index = ContextTitle('%s') |
27 | |
28 | -distros_index = 'Distributions registered in Launchpad' |
29 | - |
30 | edit_bug_supervisor = ContextTitle('Edit bug supervisor for %s') |
31 | |
32 | errorservice_config = 'Configure error log' |
33 | @@ -1065,8 +1063,6 @@ |
34 | |
35 | project_translators = ContextTitle('Set translation group for %s') |
36 | |
37 | -projects_index = 'Project groups registered in Launchpad' |
38 | - |
39 | projects_request = 'Launchpad Translations: Request a project group' |
40 | |
41 | projects_search = 'Search for project groups in Launchpad' |
42 | @@ -1288,8 +1284,6 @@ |
43 | |
44 | sprints_all = 'All sprints and meetings registered in Launchpad' |
45 | |
46 | -sprints_index = 'Meetings and sprints registered in Launchpad' |
47 | - |
48 | sprintspecification_decide = 'Consider spec for sprint agenda' |
49 | |
50 | sprintspecification_admin = 'Approve blueprint for sprint agenda' |
51 | |
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 | <browser:page |
57 | name="+all" |
58 | template="../templates/sprints-all.pt"/> |
59 | - <browser:page |
60 | - name="+portlet-details" |
61 | - template="../templates/sprints-portlet-details.pt"/> |
62 | </browser:pages> |
63 | <browser:page |
64 | name="+new" |
65 | |
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 | import pytz |
71 | from StringIO import StringIO |
72 | |
73 | +from zope.app.form.browser import TextAreaWidget |
74 | from zope.component import getUtility |
75 | -from zope.app.form.browser import TextAreaWidget |
76 | +from zope.interface import implements |
77 | |
78 | from canonical.launchpad import _ |
79 | from canonical.cachedproperty import cachedproperty |
80 | @@ -40,6 +41,8 @@ |
81 | SpecificationDefinitionStatus, SpecificationFilter, SpecificationPriority, |
82 | SpecificationSort) |
83 | from lp.blueprints.interfaces.sprint import ISprint, ISprintSet |
84 | +from lp.registry.browser.menu import ( |
85 | + IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) |
86 | from canonical.launchpad.webapp import ( |
87 | ApplicationMenu, ContextMenu, GetitemNavigation, LaunchpadEditFormView, |
88 | LaunchpadFormView, LaunchpadView, Link, Navigation, |
89 | @@ -488,7 +491,22 @@ |
90 | return body.encode('utf-8') |
91 | |
92 | |
93 | +class SprintSetNavigationMenu(RegistryCollectionActionMenuBase): |
94 | + """Action menu for sprints index.""" |
95 | + usedfor = ISprintSet |
96 | + links = [ |
97 | + 'register_team', |
98 | + 'register_project', |
99 | + 'create_account', |
100 | + ] |
101 | + |
102 | + |
103 | class SprintSetView(LaunchpadView): |
104 | + """View for the /sprints top level collection page.""" |
105 | + |
106 | + implements(IRegistryCollectionNavigationMenu) |
107 | + |
108 | + page_title = 'Meetings and sprints registered in Launchpad' |
109 | |
110 | def all_batched(self): |
111 | return BatchNavigator(self.context.all, self.request) |
112 | |
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 | xml:lang="en" |
118 | lang="en" |
119 | dir="ltr" |
120 | - metal:use-macro="view/macro:page/pillarindex" |
121 | + metal:use-macro="view/macro:page/main_side" |
122 | i18n:domain="launchpad"> |
123 | + |
124 | <body> |
125 | <h1 metal:fill-slot="heading">Coming events</h1> |
126 | |
127 | -<metal:rightportlets fill-slot="portlets_two"> |
128 | - <div tal:replace="structure context/@@+portlet-details" /> |
129 | -</metal:rightportlets> |
130 | - |
131 | -<div metal:fill-slot="main"> |
132 | - |
133 | - <p id="application-summary"> |
134 | - Launchpad can help you organise your developer sprints, summits and |
135 | - gatherings. Register the meeting here, then you can invite people to |
136 | - nominate blueprints for discussion at the event. The meeting drivers |
137 | - control the agenda, but everyone can see what's proposed and what's |
138 | - been accepted. |
139 | - </p> |
140 | - |
141 | - <table> |
142 | - <tbody> |
143 | - <tal:sprint |
144 | - repeat="sprint context" |
145 | - replace="structure sprint/@@+listing-detailed" |
146 | - /> |
147 | - </tbody> |
148 | - </table> |
149 | - |
150 | -</div> |
151 | -</body> |
152 | + <tal:side metal:fill-slot="side"> |
153 | + <tal:menu replace="structure view/@@+global-actions" /> |
154 | + <tal:menu replace="structure context/@@+related-pages" /> |
155 | + </tal:side> |
156 | + |
157 | + <div metal:fill-slot="main"> |
158 | + |
159 | + <table class="listing"> |
160 | + <tbody> |
161 | + <tal:sprint |
162 | + repeat="sprint context" |
163 | + replace="structure sprint/@@+listing-detailed" |
164 | + /> |
165 | + </tbody> |
166 | + </table> |
167 | + |
168 | + <p/> |
169 | + <p id="application-summary"> |
170 | + Launchpad can help you organise your developer sprints, summits and |
171 | + gatherings. Register the meeting here, then you can invite people to |
172 | + nominate blueprints for discussion at the event. The meeting drivers |
173 | + control the agenda, but everyone can see what's proposed and what's |
174 | + been accepted. |
175 | + </p> |
176 | + |
177 | + </div> |
178 | + </body> |
179 | </html> |
180 | |
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 | -<tal:root |
186 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
187 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
188 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
189 | - omit-tag=""> |
190 | - |
191 | -<div class="portlet" id="portlet-details"> |
192 | - |
193 | - <h2>About these meetings</h2> |
194 | - |
195 | - <div class="portletBody portletContent"> |
196 | - |
197 | - <img src="/@@/info" /> |
198 | - You can register a meeting, and |
199 | - then easily manage the agenda of the meeting. Anybody can propose a |
200 | - blueprint for discussion at the meeting, but only the meeting |
201 | - organisers (the "drivers") can approve a topic on the meeting agenda. |
202 | - |
203 | - </div> |
204 | - |
205 | -</div> |
206 | -</tal:root> |
207 | |
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 | <browser:pages |
213 | for="lp.registry.interfaces.project.IProjectSet" |
214 | facet="overview" |
215 | - permission="launchpad.ProjectReview" |
216 | + permission="zope.Public" |
217 | class="lp.registry.browser.project.ProjectSetView"> |
218 | <browser:page |
219 | name="+all" |
220 | @@ -456,16 +456,18 @@ |
221 | template="../templates/project-series-portlet-details.pt"/> |
222 | <browser:menus |
223 | classes=" |
224 | - ProjectFacets |
225 | ProjectActionMenu |
226 | + ProjectAnswersMenu |
227 | + ProjectBountiesMenu |
228 | + ProjectBugsMenu |
229 | ProjectEditNavigationMenu |
230 | + ProjectFacets |
231 | ProjectOverviewMenu |
232 | - ProjectBountiesMenu |
233 | - ProjectBugsMenu |
234 | ProjectSeriesSpecificationsMenu |
235 | + ProjectSetContextMenu |
236 | + ProjectSetNavigationMenu |
237 | ProjectSpecificationsMenu |
238 | - ProjectSetContextMenu |
239 | - ProjectAnswersMenu" |
240 | + " |
241 | module="lp.registry.browser.project"/> |
242 | <browser:defaultView |
243 | for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage" |
244 | @@ -2010,15 +2012,17 @@ |
245 | template="../../app/templates/generic-edit.pt"/> |
246 | <browser:menus |
247 | classes=" |
248 | + DistributionBountiesMenu |
249 | + DistributionBugsMenu |
250 | DistributionFacets |
251 | + DistributionMirrorsNavigationMenu |
252 | + DistributionNavigationMenu |
253 | DistributionOverviewMenu |
254 | - DistributionBugsMenu |
255 | - DistributionBountiesMenu |
256 | + DistributionSetActionNavigationMenu |
257 | + DistributionSetContextMenu |
258 | + DistributionSetFacets |
259 | DistributionSpecificationsMenu |
260 | - DistributionSetFacets |
261 | - DistributionSetContextMenu |
262 | - DistributionNavigationMenu |
263 | - DistributionMirrorsNavigationMenu" |
264 | + " |
265 | module="lp.registry.browser.distribution"/> |
266 | <browser:defaultView |
267 | for="lp.registry.interfaces.sourcepackage.ISourcePackage" |
268 | |
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 | 'DistributionFacets', |
274 | 'DistributionLanguagePackAdminView', |
275 | 'DistributionNavigation', |
276 | + 'DistributionPPASearchView', |
277 | 'DistributionPackageSearchView', |
278 | 'DistributionPendingReviewMirrorsView', |
279 | - 'DistributionPPASearchView', |
280 | 'DistributionSeriesMirrorsRSSView', |
281 | 'DistributionSeriesMirrorsView', |
282 | + 'DistributionSetActionNavigationMenu', |
283 | 'DistributionSetBreadcrumbBuilder', |
284 | 'DistributionSetContextMenu', |
285 | 'DistributionSetFacets', |
286 | @@ -46,6 +47,8 @@ |
287 | |
288 | from canonical.cachedproperty import cachedproperty |
289 | from lp.registry.browser.announcement import HasAnnouncementsView |
290 | +from lp.registry.browser.menu import ( |
291 | + IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) |
292 | from lp.soyuz.browser.archive import traverse_distro_archive |
293 | from lp.bugs.browser.bugtask import BugTargetTraversalMixin |
294 | from lp.soyuz.browser.build import BuildRecordsView |
295 | @@ -770,12 +773,21 @@ |
296 | self.batchnav = BatchNavigator(results, self.request) |
297 | |
298 | |
299 | -class DistributionSetView: |
300 | - |
301 | - def __init__(self, context, request): |
302 | - self.context = context |
303 | - self.request = request |
304 | - |
305 | +class DistributionSetActionNavigationMenu(RegistryCollectionActionMenuBase): |
306 | + """Action menu for `DistributionSetView`.""" |
307 | + |
308 | + usedfor = IDistributionSet |
309 | + links = ['register_team', 'register_project', 'create_account'] |
310 | + |
311 | + |
312 | +class DistributionSetView(LaunchpadView): |
313 | + """View for /distros top level collection.""" |
314 | + |
315 | + implements(IRegistryCollectionNavigationMenu) |
316 | + |
317 | + page_title = 'Distributions registered in Launchpad' |
318 | + |
319 | + @cachedproperty |
320 | def count(self): |
321 | return self.context.count() |
322 | |
323 | |
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 | """Menu shared by top level collection objects.""" |
329 | |
330 | def projects(self): |
331 | - return Link('/projects/', 'Projects') |
332 | + return Link('/projects/', 'View projects', icon='info') |
333 | |
334 | def distributions(self): |
335 | - return Link('/distros/', 'Distributions') |
336 | + return Link('/distros/', 'View distributions', icon='info') |
337 | |
338 | def people(self): |
339 | - return Link('/people/', 'People') |
340 | + return Link('/people/', 'View people', icon='info') |
341 | |
342 | def meetings(self): |
343 | - return Link('/sprints/', 'Meetings') |
344 | + return Link('/sprints/', 'View meetings', icon='info') |
345 | |
346 | def project_groups(self): |
347 | - return Link('/projectgroups', 'Project groups') |
348 | + return Link('/projectgroups', 'View project groups', icon='info') |
349 | |
350 | def register_project(self): |
351 | text = 'Register a project' |
352 | |
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 | |
358 | @enabled_with_permission('launchpad.ProjectReview') |
359 | def review_licenses(self): |
360 | - return Link('+review-licenses', 'Review projects') |
361 | + return Link('+review-licenses', 'Review projects', icon='edit') |
362 | |
363 | |
364 | class ProductSetView(LaunchpadView): |
365 | @@ -1405,27 +1405,27 @@ |
366 | |
367 | max_results_to_display = config.launchpad.default_batch_size |
368 | results = None |
369 | - searchrequested = False |
370 | + search_requested = False |
371 | |
372 | def initialize(self): |
373 | - """See `LaunchpadFormView`.""" |
374 | + """See `LaunchpadView`.""" |
375 | form = self.request.form_ng |
376 | self.search_string = form.getOne('text') |
377 | if self.search_string is not None: |
378 | - self.searchrequested = True |
379 | + self.search_requested = True |
380 | |
381 | def all_batched(self): |
382 | return BatchNavigator(self.context.all_active, self.request) |
383 | |
384 | @cachedproperty |
385 | def matches(self): |
386 | - if not self.searchrequested: |
387 | + if not self.search_requested: |
388 | return None |
389 | pillarset = getUtility(IPillarNameSet) |
390 | return pillarset.count_search_matches(self.search_string) |
391 | |
392 | @cachedproperty |
393 | - def searchresults(self): |
394 | + def search_results(self): |
395 | search_string = self.search_string.lower() |
396 | limit = self.max_results_to_display |
397 | return getUtility(IPillarNameSet).search(search_string, limit) |
398 | |
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 | __metaclass__ = type |
404 | |
405 | __all__ = [ |
406 | + 'ProjectActionMenu', |
407 | 'ProjectAddProductView', |
408 | 'ProjectAddQuestionView', |
409 | 'ProjectAddView', |
410 | @@ -18,14 +19,14 @@ |
411 | 'ProjectFacets', |
412 | 'ProjectMaintainerReassignmentView', |
413 | 'ProjectNavigation', |
414 | + 'ProjectOverviewMenu', |
415 | 'ProjectRdfView', |
416 | 'ProjectReviewView', |
417 | - 'ProjectActionMenu', |
418 | - 'ProjectOverviewMenu', |
419 | 'ProjectSeriesSpecificationsMenu', |
420 | 'ProjectSetBreadcrumbBuilder', |
421 | 'ProjectSetContextMenu', |
422 | 'ProjectSetNavigation', |
423 | + 'ProjectSetNavigationMenu', |
424 | 'ProjectSetView', |
425 | 'ProjectSpecificationsMenu', |
426 | 'ProjectView', |
427 | @@ -49,6 +50,8 @@ |
428 | from lp.registry.interfaces.project import ( |
429 | IProject, IProjectSeries, IProjectSet) |
430 | from lp.registry.browser.announcement import HasAnnouncementsView |
431 | +from lp.registry.browser.menu import ( |
432 | + IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase) |
433 | from lp.registry.browser.product import ( |
434 | ProductAddView, ProjectAddStepOne, ProjectAddStepTwo) |
435 | from canonical.launchpad.browser.branding import BrandingChangeView |
436 | @@ -229,10 +232,6 @@ |
437 | text = 'See all milestones' |
438 | return Link('+milestones', text) |
439 | |
440 | - def milestones(self): |
441 | - text = 'See all milestones' |
442 | - return Link('+milestones', text) |
443 | - |
444 | def rdf(self): |
445 | text = structured( |
446 | 'Download <abbr title="Resource Description Framework">' |
447 | @@ -479,10 +478,18 @@ |
448 | return ProjectGroupAddStepOne |
449 | |
450 | |
451 | +class ProjectSetNavigationMenu(RegistryCollectionActionMenuBase): |
452 | + """Action menu for project group index.""" |
453 | + usedfor = IProjectSet |
454 | + links = ['register_team', 'register_project', 'create_account'] |
455 | + |
456 | + |
457 | class ProjectSetView(LaunchpadView): |
458 | - |
459 | - header = "Project groups registered in Launchpad" |
460 | - page_title = header |
461 | + """View for project group index page.""" |
462 | + |
463 | + implements(IRegistryCollectionNavigationMenu) |
464 | + |
465 | + page_title = "Project groups registered in Launchpad" |
466 | |
467 | def __init__(self, context, request): |
468 | super(ProjectSetView, self).__init__(context, request) |
469 | @@ -492,17 +499,26 @@ |
470 | self.malone = self.form.getOne('malone', None) |
471 | self.bazaar = self.form.getOne('bazaar', None) |
472 | self.text = self.form.getOne('text', None) |
473 | - self.searchrequested = False |
474 | + self.search_requested = False |
475 | + self.search_string = None |
476 | if (self.text is not None or |
477 | self.bazaar is not None or |
478 | self.malone is not None or |
479 | self.rosetta is not None or |
480 | self.soyuz is not None): |
481 | - self.searchrequested = True |
482 | + self.search_requested = True |
483 | self.results = None |
484 | self.matches = 0 |
485 | |
486 | - def searchresults(self): |
487 | + def initialize(self): |
488 | + """See `LaunchpadView`.""" |
489 | + form = self.request.form_ng |
490 | + self.search_string = form.getOne('text') |
491 | + if self.search_string is not None: |
492 | + self.search_requested = True |
493 | + |
494 | + @cachedproperty |
495 | + def search_results(self): |
496 | """Use searchtext to find the list of Projects that match |
497 | and then present those as a list. Only do this the first |
498 | time the method is called, otherwise return previous results. |
499 | |
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 | xml:lang="en" |
505 | lang="en" |
506 | dir="ltr" |
507 | - metal:use-macro="view/macro:page/pillarindex" |
508 | + metal:use-macro="view/macro:page/main_side" |
509 | i18n:domain="launchpad" |
510 | > |
511 | <body> |
512 | <h1 metal:fill-slot="heading">Registered distributions</h1> |
513 | |
514 | -<metal:rightportlets fill-slot="portlets_two"> |
515 | - <div class="portlet"> |
516 | - <h2>About these distributions</h2> |
517 | - |
518 | - <div class="portletBody portletContent"> |
519 | - <img src="/@@/info" /> |
520 | - Launchpad can manage the source packages, builds, archive publishing |
521 | - and historical record-keeping necessary to create a distribution. |
522 | - Some of the distributions described here are fully managed in |
523 | - Launchpad, others are managed elsewhere but Launchpad keeps track of |
524 | - their progress. |
525 | - </div> |
526 | - </div> |
527 | -</metal:rightportlets> |
528 | - |
529 | -<div metal:fill-slot="main"> |
530 | - |
531 | - <div id="application-summary"> |
532 | - Launchpad can keep track of the software packages in a distribution, |
533 | - and provide information about the bugs, translations and code |
534 | - associated with each of them. |
535 | - </div> |
536 | - |
537 | + <tal:side metal:fill-slot="side"> |
538 | + <tal:menu replace="structure view/@@+global-actions" /> |
539 | + <tal:menu replace="structure context/@@+related-pages" /> |
540 | + </tal:side> |
541 | + |
542 | + <div metal:fill-slot="main"> |
543 | + There are currently |
544 | + <strong class="registry-stat" |
545 | + tal:content="view/count">2</strong> |
546 | + distributions registered in Launchpad. |
547 | + <p/> |
548 | <table class="listing"> |
549 | <thead> |
550 | <tr> |
551 | @@ -67,6 +55,13 @@ |
552 | and its information might be out of date. |
553 | </p> |
554 | |
555 | + <div id="application-summary"> |
556 | + Launchpad manages the source packages, builds, archive publishing, bugs, |
557 | + translations, code, and historical record-keeping necessary to create a |
558 | + distribution. Some of the distributions described here are fully |
559 | + managed in Launchpad, others are managed elsewhere with Launchpad |
560 | + keeping track of their progress. |
561 | + </div> |
562 | </div> |
563 | |
564 | </body> |
565 | |
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 | tal:attributes="action request/URL" |
571 | accept-charset="UTF-8"> |
572 | <input size="30" name="text" tal:attributes="value view/search_string" /> |
573 | - <input tal:condition="view/searchrequested" |
574 | + <input tal:condition="view/search_requested" |
575 | type="submit" |
576 | value="Search again" |
577 | /> |
578 | - <input tal:condition="not: view/searchrequested" |
579 | + <input tal:condition="not: view/search_requested" |
580 | type="submit" |
581 | value="Search projects" |
582 | /> |
583 | </form> |
584 | |
585 | - <tal:searching condition="view/searchrequested"> |
586 | + <tal:searching condition="view/search_requested"> |
587 | |
588 | <p id="empty-search-string" tal:condition="not: view/search_string"> |
589 | Enter one or more words related to the project you want to find. |
590 | @@ -69,22 +69,22 @@ |
591 | do another search with more relevant search terms. |
592 | </p> |
593 | |
594 | - <p tal:condition="view/searchresults"> |
595 | - <span tal:replace="view/matches">3</span> |
596 | - <span tal:condition="python: view.matches == 1">project found</span> |
597 | - <span tal:condition="python: view.matches != 1">projects found</span> |
598 | - matching “<tal:string replace="view/search_string" />” |
599 | - <span tal:condition="view/tooManyResultsFound">, |
600 | - showing the most relevant |
601 | - <span tal:replace="view/max_results_to_display" /> |
602 | - </span> |
603 | - </p> |
604 | + <tal:searching tal:condition="view/search_results"> |
605 | + <p class="search-results"> |
606 | + <span tal:replace="view/matches">3</span> |
607 | + <span tal:condition="python: view.matches == 1">project found</span> |
608 | + <span tal:condition="python: view.matches != 1">projects found</span> |
609 | + matching “<tal:string replace="view/search_string" />” |
610 | + <span tal:condition="view/tooManyResultsFound">, |
611 | + showing the most relevant |
612 | + <span tal:replace="view/max_results_to_display" /> |
613 | + </span> |
614 | + </p> |
615 | + </tal:searching> |
616 | |
617 | - <table |
618 | - tal:condition="view/matches" |
619 | - tal:define="results view/searchresults" |
620 | - id="search-results" |
621 | - > |
622 | + <table tal:condition="view/matches" |
623 | + tal:define="results view/search_results" |
624 | + class="search-results"> |
625 | <tbody> |
626 | <tr tal:repeat="pillarname results" |
627 | tal:replace="structure pillarname/@@+listing-simple"> |
628 | @@ -94,42 +94,32 @@ |
629 | |
630 | <div id="application-summary"> |
631 | <p class="error" |
632 | - tal:condition="not: view/searchresults"> |
633 | + tal:condition="not: view/search_results"> |
634 | No projects matching |
635 | “<span tal:replace="view/search_string">moz</span>” |
636 | were found. |
637 | </p> |
638 | |
639 | - <h2>Haven’t found your project?</h2> |
640 | - |
641 | <p> |
642 | - If the project you are looking for isn't here, go ahead and register |
643 | - it yourself! |
644 | + If the project you are looking for isn't here, go ahead and |
645 | + <a href="" |
646 | + tal:attributes="href view/menu:overview/register_project/url" |
647 | + >register it yourself!</a> |
648 | </p> |
649 | |
650 | - <ul class="rollover buttons"> |
651 | - <li> |
652 | - <a href="/projects/+new"> |
653 | - <img |
654 | - alt="Register a project" |
655 | - src="/+icing/but-lrg-registerproj.gif" |
656 | - /> |
657 | - </a> |
658 | - </li> |
659 | - </ul> |
660 | </div> |
661 | </tal:non-empty-search-string> |
662 | |
663 | </tal:searching> |
664 | - <tal:no_search condition="not: view/searchrequested"> |
665 | + <tal:no_search condition="not: view/search_requested"> |
666 | |
667 | - <p id="application-summary"> |
668 | + <p class="application-summary"> |
669 | Launchpad helps people to work together by making it easy to share |
670 | code, bug reports, translations, and ideas. To get started, search here |
671 | for a project you want to know more about. |
672 | </p> |
673 | |
674 | - <p> |
675 | + <p class="application-summary"> |
676 | If you find a project you run, <a href="/launchpad/+addquestion">ask |
677 | us</a> and we'll hand the project over to you. |
678 | <br />To set that project up for translation to your language, <a |
679 | |
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 | xml:lang="en" |
685 | lang="en" |
686 | dir="ltr" |
687 | - metal:use-macro="view/macro:page/pillarindex" |
688 | + metal:use-macro="view/macro:page/main_side" |
689 | i18n:domain="launchpad" |
690 | > |
691 | <body> |
692 | - <h1 metal:fill-slot="heading">Project groups in Launchpad</h1> |
693 | - |
694 | -<metal:rightportlets fill-slot="portlets_two"> |
695 | - <div class="portlet"> |
696 | - <h2>About Projects in Launchpad:</h2> |
697 | - <div class="portletBody portletContent"> |
698 | - <img src="/@@/info" /> |
699 | - There are currently |
700 | - <a href="+all"><span tal:replace="context/count_all">5</span> |
701 | - projects</a> registered. |
702 | - <br /> |
703 | - <br /> |
704 | - Only the Launchpad administrators and registry experts can register new |
705 | - project groups. You can register an individual application (what we call |
706 | - a project). To do so, first <a href="/projects/">search to see if your |
707 | - project is already in Launchpad</a>. |
708 | + <h1 metal:fill-slot="heading">Project groups</h1> |
709 | + |
710 | + <tal:side metal:fill-slot="side"> |
711 | + <tal:menu replace="structure view/@@+global-actions" /> |
712 | + <tal:menu replace="structure context/@@+related-pages" /> |
713 | + </tal:side> |
714 | + |
715 | + <div metal:fill-slot="main"> |
716 | + <p>There are |
717 | + <strong class="registry-stat" |
718 | + tal:content="context/count_all">5</strong> |
719 | + project groups registered in Launchpad. |
720 | + </p> |
721 | + |
722 | + <form class="central" method="get" accept-charset="UTF-8"> |
723 | + <input size="30" name="text" tal:attributes="value view/search_string" /> |
724 | + <input |
725 | + tal:condition="view/search_requested" |
726 | + type="submit" value="Search Again" /> |
727 | + <input |
728 | + tal:condition="not: view/search_requested" |
729 | + type="submit" value="Search project groups" /> |
730 | + </form> |
731 | + |
732 | + <div tal:condition="view/search_requested"> |
733 | + <tal:searching tal:condition="view/search_results"> |
734 | + <p class="search-results"> |
735 | + <span tal:replace="view/matches">3</span> |
736 | + <span tal:condition="python: view.matches == 1">project |
737 | + group found</span> |
738 | + <span tal:condition="python: view.matches != 1">projects |
739 | + groups found</span> |
740 | + matching |
741 | + “<tal:string replace="view/search_string" />” |
742 | + </p> |
743 | + </tal:searching> |
744 | + |
745 | + <table tal:condition="view/matches" |
746 | + tal:define="results view/search_results" |
747 | + class="search-results"> |
748 | + <tbody> |
749 | + <tr tal:repeat="product results"> |
750 | + <td tal:content="structure product/@@+listing-detailed" /> |
751 | + </tr> |
752 | + </tbody> |
753 | + </table> |
754 | + |
755 | + <p class="error application-summary" |
756 | + tal:condition="not: view/search_results"> |
757 | + No project groups matching |
758 | + “<span tal:replace="view/search_string">moz</span>” |
759 | + were found. |
760 | + </p> |
761 | + </div> |
762 | + <p class="application-summary"> |
763 | + In Launchpad, <dfn>project groups</dfn> are special groups of |
764 | + software projects that share a development community. Examples |
765 | + include <a href="gnome">Gnome</a>, |
766 | + <a href="kde"><abbr>KDE</abbr></a>, and |
767 | + <a href="mozilla">Mozilla</a>. Launchpad allows you to group |
768 | + several projects together into a project group, to make coordination |
769 | + and tracking simpler. |
770 | + </p> |
771 | + |
772 | + <p class="application-summary"> |
773 | + Only the Launchpad administrators and registry experts can register |
774 | + new project groups. You can register an individual application (what |
775 | + we call a project). To do so, first <a href="/projects/">search to |
776 | + see if your project is already in Launchpad</a>. |
777 | + </p> |
778 | + |
779 | </div> |
780 | - </div> |
781 | -</metal:rightportlets> |
782 | - |
783 | -<div metal:fill-slot="main"> |
784 | - |
785 | - <p> |
786 | - In Launchpad, <dfn>project groups</dfn> are special groups of software |
787 | - projects that share a development community. |
788 | - Examples include <a href="gnome">Gnome</a>, |
789 | - <a href="kde"><abbr>KDE</abbr></a>, and |
790 | - <a href="mozilla">Mozilla</a>. Launchpad allows you to group several |
791 | - projects together in a project, to make coordination and tracking |
792 | - simpler. |
793 | - </p> |
794 | - |
795 | - <form method="get" accept-charset="UTF-8"> |
796 | - <label for="text">Search projects:</label> |
797 | - <input name="text" tal:attributes="value view/text" /> |
798 | - <input |
799 | - tal:condition="view/searchrequested" |
800 | - type="submit" value="Search Again" /> |
801 | - <input |
802 | - tal:condition="not: view/searchrequested" |
803 | - type="submit" value="Search" /> |
804 | - </form> |
805 | - |
806 | - <tal:notsearching condition="not:view/searchrequested"> |
807 | - <p> |
808 | - For individual computer programs, applications or libraries, |
809 | - see <a href="/projects">projects</a>. |
810 | - </p> |
811 | - |
812 | - <p> |
813 | - For groups of people, see |
814 | - <a href="/people">Launchpad teams</a>. |
815 | - </p> |
816 | - </tal:notsearching> |
817 | - |
818 | - <tal:searching condition="view/searchrequested"> |
819 | - |
820 | - <table class="data" tal:define="results view/searchresults"> |
821 | - <thead> |
822 | - <tr class="results"> |
823 | - <th colspan="0"> |
824 | - <span tal:replace="view/matches">3</span> |
825 | - <span tal:condition="python: view.matches == 1">result</span> |
826 | - <span tal:condition="python: view.matches != 1">results</span> |
827 | - </th> |
828 | - </tr> |
829 | - </thead> |
830 | - <tbody> |
831 | - <tr tal:condition="view/matches" |
832 | - tal:repeat="product results"> |
833 | - <td tal:content="structure product/@@+listing-detailed" /> |
834 | - </tr> |
835 | - <tr tal:condition="not: view/matches"> |
836 | - <td tal:condition="not: view/matches"> |
837 | - <p>No projects matching |
838 | - “<span tal:replace="view/text">moz</span>” |
839 | - were found. |
840 | - You can <a href="+new">register a new project</a>.</p> |
841 | - </td> |
842 | - </tr> |
843 | - </tbody> |
844 | - </table> |
845 | - |
846 | - </tal:searching> |
847 | - |
848 | -</div> |
849 | - |
850 | -</body> |
851 | + </body> |
852 | </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.