Merge ~ines-almeida/launchpad:frontpage-revamp into launchpad:master
- Git
- lp:~ines-almeida/launchpad
- frontpage-revamp
- Merge into master
Status: | Rejected |
---|---|
Rejected by: | Ines Almeida |
Proposed branch: | ~ines-almeida/launchpad:frontpage-revamp |
Merge into: | launchpad:master |
Diff against target: |
671 lines (+201/-256) 7 files modified
lib/canonical/launchpad/icing/css/components/_index.scss (+1/-0) lib/canonical/launchpad/icing/css/components/homepage.scss (+18/-0) lib/lp/app/browser/doc/root-views.rst (+8/-29) lib/lp/app/browser/root.py (+0/-20) lib/lp/app/browser/tales.py (+15/-8) lib/lp/app/stories/launchpad-root/xx-featuredprojects.rst (+5/-23) lib/lp/app/templates/root-index.pt (+154/-176) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Launchpad code reviewers | Pending | ||
Review via email: mp+460775@code.launchpad.net |
Commit message
ui: Launchpad homepage revamp
- Imported Vanilla framework directly to the homepage
- Re-organized homepage sections and reworked them using Vanilla components
- Cleaned up CSS styling and page views that are no longer used
Description of the change
Initial stab at making Launchpad's homepage a little bit more modern
- 18aae7f... by Ines Almeida
-
tests: remove mentions of top-featured-
project from doc tests
Ines Almeida (ines-almeida) wrote : | # |
Unmerged commits
- 18aae7f... by Ines Almeida
-
tests: remove mentions of top-featured-
project from doc tests -
docs:0 (build) lint:0 (build) mypy:0 (build) 1 → 3 of 3 results First • Previous • Next • Last - f26087e... by Ines Almeida
-
ui: Cleanup homepage CSS styling
Move the CSS that existed in the page into a homepage component and remove everything that is not needed anymore
-
docs:0 (build) lint:0 (build) mypy:0 (build) 1 → 3 of 3 results First • Previous • Next • Last - 7c425d4... by Ines Almeida
-
ui: Update frontpage
Import Vanilla framework to make it look more similar to other (more modern) Canonical pages.
Reorganize the sections, and use some of the components from Vanilla. - 4efce31... by Ines Almeida
-
ui: Add new frontend icons
Preview Diff
1 | diff --git a/lib/canonical/launchpad/icing/css/components/_index.scss b/lib/canonical/launchpad/icing/css/components/_index.scss |
2 | index 59e25ed..057da90 100644 |
3 | --- a/lib/canonical/launchpad/icing/css/components/_index.scss |
4 | +++ b/lib/canonical/launchpad/icing/css/components/_index.scss |
5 | @@ -1,6 +1,7 @@ |
6 | @import 'access_tokens', |
7 | 'batch_navigation', |
8 | 'bug_picker', |
9 | + 'homepage', |
10 | 'profiling_info', |
11 | 'sidebar_portlets', |
12 | 'bug_listing', |
13 | diff --git a/lib/canonical/launchpad/icing/css/components/homepage.scss b/lib/canonical/launchpad/icing/css/components/homepage.scss |
14 | new file mode 100644 |
15 | index 0000000..17b63cc |
16 | --- /dev/null |
17 | +++ b/lib/canonical/launchpad/icing/css/components/homepage.scss |
18 | @@ -0,0 +1,18 @@ |
19 | +.homepage { |
20 | + margin: auto; |
21 | + width: 90%; |
22 | + max-width: 80em; |
23 | +} |
24 | + |
25 | +// Make search box wide |
26 | +#homepage-searchform { |
27 | + width: 100%; |
28 | + |
29 | + .p-form__group { |
30 | + flex-grow: 1; |
31 | + } |
32 | + |
33 | + .p-form__control { |
34 | + width: 100%; |
35 | + } |
36 | +} |
37 | diff --git a/lib/canonical/launchpad/images/add-homepage.png b/lib/canonical/launchpad/images/add-homepage.png |
38 | new file mode 100644 |
39 | index 0000000..0cd9f6f |
40 | Binary files /dev/null and b/lib/canonical/launchpad/images/add-homepage.png differ |
41 | diff --git a/lib/canonical/launchpad/images/bug-homepage.png b/lib/canonical/launchpad/images/bug-homepage.png |
42 | new file mode 100644 |
43 | index 0000000..3599ff9 |
44 | Binary files /dev/null and b/lib/canonical/launchpad/images/bug-homepage.png differ |
45 | diff --git a/lib/canonical/launchpad/images/ppa-icon-homepage.png b/lib/canonical/launchpad/images/ppa-icon-homepage.png |
46 | new file mode 100644 |
47 | index 0000000..f6f529c |
48 | Binary files /dev/null and b/lib/canonical/launchpad/images/ppa-icon-homepage.png differ |
49 | diff --git a/lib/canonical/launchpad/images/question-homepage.png b/lib/canonical/launchpad/images/question-homepage.png |
50 | new file mode 100644 |
51 | index 0000000..f43e96f |
52 | Binary files /dev/null and b/lib/canonical/launchpad/images/question-homepage.png differ |
53 | diff --git a/lib/canonical/launchpad/images/translation-homepage.png b/lib/canonical/launchpad/images/translation-homepage.png |
54 | new file mode 100644 |
55 | index 0000000..6988a2b |
56 | Binary files /dev/null and b/lib/canonical/launchpad/images/translation-homepage.png differ |
57 | diff --git a/lib/lp/app/browser/doc/root-views.rst b/lib/lp/app/browser/doc/root-views.rst |
58 | index 8782f3f..f5c996e 100644 |
59 | --- a/lib/lp/app/browser/doc/root-views.rst |
60 | +++ b/lib/lp/app/browser/doc/root-views.rst |
61 | @@ -12,7 +12,7 @@ special data needed for the layout. |
62 | ... |
63 | >>> LaunchpadRootIndexView._get_day_of_year = staticmethod(day) |
64 | |
65 | -The view has a provides a list of featured projects and a top project. |
66 | +The view has a provides a list of featured projects. |
67 | |
68 | >>> from lp.services.webapp.interfaces import ILaunchpadRoot |
69 | |
70 | @@ -21,36 +21,15 @@ The view has a provides a list of featured projects and a top project. |
71 | >>> for project in view.featured_projects: |
72 | ... print(project.name) |
73 | ... |
74 | - applets bazaar firefox gentoo gnome-terminal mozilla thunderbird ubuntu |
75 | - |
76 | - >>> print(view.featured_projects_top.name) |
77 | + applets |
78 | + bazaar |
79 | + firefox |
80 | + gentoo |
81 | gnome |
82 | - |
83 | -The featured_projects_top property is set by a helper method that pops the |
84 | -project from the list of featured_projects. |
85 | - |
86 | - >>> featured_projects = list(view.featured_projects) |
87 | - >>> featured_projects_top = view.featured_projects_top |
88 | - >>> view._setFeaturedProjectsTop() |
89 | - >>> print(view.featured_projects_top.name) |
90 | gnome-terminal |
91 | - |
92 | - >>> for project in view.featured_projects: |
93 | - ... print(project.name) |
94 | - ... |
95 | - applets bazaar firefox gentoo mozilla thunderbird ubuntu |
96 | - |
97 | -If there are no featured projects, the top featured project is None. |
98 | - |
99 | - >>> view.featured_projects = [] |
100 | - >>> view.featured_projects_top = None |
101 | - >>> view._setFeaturedProjectsTop() |
102 | - >>> print(view.featured_projects_top) |
103 | - None |
104 | - |
105 | - # Put the projects back as they were. |
106 | - >>> view.featured_projects = featured_projects |
107 | - >>> view.featured_projects_top = featured_projects_top |
108 | + mozilla |
109 | + thunderbird |
110 | + ubuntu |
111 | |
112 | The view provides the counts of branches, Git repositories, bugs, |
113 | projects, translations, blueprints, and answers registered in Launchpad. |
114 | diff --git a/lib/lp/app/browser/root.py b/lib/lp/app/browser/root.py |
115 | index 2a87d2b..154b6a5 100644 |
116 | --- a/lib/lp/app/browser/root.py |
117 | +++ b/lib/lp/app/browser/root.py |
118 | @@ -57,21 +57,11 @@ class LaunchpadRootIndexView(HasAnnouncementsView, LaunchpadView): |
119 | |
120 | page_title = "Launchpad" |
121 | featured_projects: List[Any] = [] |
122 | - featured_projects_top = None |
123 | |
124 | # Used by the footer to display the lp-arcana section. |
125 | is_root_page = True |
126 | has_watermark = False |
127 | |
128 | - @staticmethod |
129 | - def _get_day_of_year(): |
130 | - """Calculate the number of the current day. |
131 | - |
132 | - This method gets overridden in tests to make the selection of the |
133 | - top featured project deterministic. |
134 | - """ |
135 | - return time.gmtime()[7] |
136 | - |
137 | def initialize(self): |
138 | """Set up featured projects list and the top featured project.""" |
139 | super().initialize() |
140 | @@ -80,16 +70,6 @@ class LaunchpadRootIndexView(HasAnnouncementsView, LaunchpadView): |
141 | self.featured_projects = list( |
142 | getUtility(IPillarNameSet).featured_projects |
143 | ) |
144 | - self._setFeaturedProjectsTop() |
145 | - |
146 | - def _setFeaturedProjectsTop(self): |
147 | - """Set the top featured project and remove it from the list.""" |
148 | - project_count = len(self.featured_projects) |
149 | - if project_count > 0: |
150 | - top_project = self._get_day_of_year() % project_count |
151 | - self.featured_projects_top = self.featured_projects.pop( |
152 | - top_project |
153 | - ) |
154 | |
155 | @cachedproperty |
156 | def apphomes(self): |
157 | diff --git a/lib/lp/app/browser/tales.py b/lib/lp/app/browser/tales.py |
158 | index c91b890..d6b2760 100644 |
159 | --- a/lib/lp/app/browser/tales.py |
160 | +++ b/lib/lp/app/browser/tales.py |
161 | @@ -826,11 +826,10 @@ class ObjectImageDisplayAPI: |
162 | # XXX: this should go away as soon as all image:icon where replaced |
163 | return None |
164 | |
165 | - def logo(self): |
166 | - """Return the appropriate <img> tag for this object's logo. |
167 | + def logo_src(self): |
168 | + """Return the appropriate src attribute for this object's logo. |
169 | |
170 | - :return: A string, or None if the context object doesn't have |
171 | - a logo. |
172 | + :return: A string, or None if the context object doesn't have a logo. |
173 | """ |
174 | context = self._context |
175 | if not IHasLogo.providedBy(context): |
176 | @@ -843,10 +842,18 @@ class ObjectImageDisplayAPI: |
177 | url = context.logo.getURL() |
178 | else: |
179 | url = self.default_logo_resource(context) |
180 | - if url is None: |
181 | - # We want to indicate that there is no logo for this |
182 | - # object. |
183 | - return None |
184 | + return url |
185 | + |
186 | + def logo(self): |
187 | + """Return the appropriate <img> tag for this object's logo. |
188 | + |
189 | + :return: A string, or None if the context object doesn't have a logo. |
190 | + """ |
191 | + url = self.logo_src() |
192 | + if url is None: |
193 | + # We want to indicate that there is no logo for this |
194 | + # object. |
195 | + return None |
196 | logo = '<img alt="" width="64" height="64" src="%s" />' |
197 | return logo % url |
198 | |
199 | diff --git a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.rst b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.rst |
200 | index e0ff0f6..173eb04 100644 |
201 | --- a/lib/lp/app/stories/launchpad-root/xx-featuredprojects.rst |
202 | +++ b/lib/lp/app/stories/launchpad-root/xx-featuredprojects.rst |
203 | @@ -11,31 +11,14 @@ page and managed via a special admin-only page. |
204 | The home page listing |
205 | --------------------- |
206 | |
207 | -Featured projects are visible to everyone on the home page. One project is |
208 | -featured as "project of the day" depending on the current day. As we do not |
209 | -know the current day, we replace that selection method in the view with a |
210 | -constant value. |
211 | - |
212 | - >>> def fake_get_day_of_year(): |
213 | - ... return 4 |
214 | - ... |
215 | - >>> from lp.app.browser.root import LaunchpadRootIndexView |
216 | - >>> LaunchpadRootIndexView._get_day_of_year = staticmethod( |
217 | - ... fake_get_day_of_year |
218 | - ... ) |
219 | - |
220 | Anonymous users will see the list of featured projects with links to the |
221 | -projects' pages in Launchpad. The "project of the day" is listed separately. |
222 | +projects' pages in Launchpad. |
223 | |
224 | >>> anon_browser.open("http://launchpad.test/") |
225 | >>> featured = find_tag_by_id(anon_browser.contents, "homepage-featured") |
226 | >>> print(extract_text(featured.h2)) |
227 | Featured projects |
228 | |
229 | - >>> top_project = featured.find("", "featured-project-top") |
230 | - >>> print(extract_text(top_project.h3)) |
231 | - GNOME |
232 | - |
233 | >>> featured_list = featured.find("", "featured-projects-list") |
234 | >>> for link in featured_list.find_all("a"): |
235 | ... print(extract_text(link)) |
236 | @@ -44,6 +27,7 @@ projects' pages in Launchpad. The "project of the day" is listed separately. |
237 | Bazaar |
238 | Mozilla Firefox |
239 | Gentoo |
240 | + GNOME |
241 | GNOME Terminal |
242 | The Mozilla Project |
243 | Mozilla Thunderbird |
244 | @@ -98,10 +82,6 @@ is now at index '4' and is therefore displayed as the top project: |
245 | |
246 | >>> anon_browser.open("http://launchpad.test/") |
247 | >>> featured = find_tag_by_id(anon_browser.contents, "homepage-featured") |
248 | - >>> top_project = featured.find("", "featured-project-top") |
249 | - >>> print(extract_text(top_project.h3)) |
250 | - Gentoo |
251 | - |
252 | >>> featured_list = featured.find("", "featured-projects-list") |
253 | >>> for link in featured_list.find_all("a"): |
254 | ... print(extract_text(link)) |
255 | @@ -110,6 +90,7 @@ is now at index '4' and is therefore displayed as the top project: |
256 | Gnome Applets |
257 | Bazaar |
258 | Mozilla Firefox |
259 | + Gentoo |
260 | GNOME |
261 | GNOME Terminal |
262 | The Mozilla Project |
263 | @@ -136,11 +117,12 @@ that Apache has been removed: |
264 | >>> for link in featured.find_all("a"): |
265 | ... print(extract_text(link)) |
266 | ... |
267 | - GNOME |
268 | + See more... |
269 | Gnome Applets |
270 | Bazaar |
271 | Mozilla Firefox |
272 | Gentoo |
273 | + GNOME |
274 | GNOME Terminal |
275 | The Mozilla Project |
276 | Mozilla Thunderbird |
277 | diff --git a/lib/lp/app/templates/root-index.pt b/lib/lp/app/templates/root-index.pt |
278 | index 75084b9..9cf186d 100644 |
279 | --- a/lib/lp/app/templates/root-index.pt |
280 | +++ b/lib/lp/app/templates/root-index.pt |
281 | @@ -6,48 +6,7 @@ |
282 | metal:use-macro="view/macro:page/main_only" |
283 | i18n:domain="launchpad"> |
284 | <metal:head fill-slot="head_epilogue"> |
285 | - <style> |
286 | - .homepage { |
287 | - margin: auto; |
288 | - width: 90%; |
289 | - max-width: 80em; |
290 | - } |
291 | - #homepage-whatslaunchpad ul { |
292 | - margin-left: 1em; |
293 | - margin-bottom: 0.5em; |
294 | - } |
295 | - #homepage-whatslaunchpad ul, |
296 | - #homepage-whatslaunchpad-tour { |
297 | - font-weight: bold; |
298 | - } |
299 | - #homepage-stats { |
300 | - max-width: 50em; |
301 | - margin: auto; |
302 | - padding-top: 0.5em; |
303 | - color: gray; |
304 | - } |
305 | - #homepage-blogposts { |
306 | - padding-right: 4em; |
307 | - } |
308 | - #homepage-getstarted ul { |
309 | - padding-top: 0.5em; |
310 | - } |
311 | - .featured-project-top h3 { |
312 | - font-weight: bold; |
313 | - } |
314 | - .featured-project-top h3 img { |
315 | - vertical-align: middle; |
316 | - } |
317 | - .featured-project-top p { |
318 | - margin-top: 0.5em; |
319 | - margin-bottom: 1em; |
320 | - padding-bottom: .5em; |
321 | - border-bottom: 1px dotted #999; |
322 | - } |
323 | - #launchpad-logo-and-name { |
324 | - width: 250px; |
325 | - } |
326 | - </style> |
327 | + <link rel="stylesheet" href="https://assets.ubuntu.com/v1/vanilla-framework-version-4.7.0.min.css" /> |
328 | </metal:head> |
329 | <body> |
330 | <div metal:fill-slot="main"> |
331 | @@ -67,95 +26,26 @@ |
332 | style="margin: 0 9em 1em 0"/> |
333 | </div> |
334 | |
335 | - <div class="yui-g"> |
336 | - <div class="yui-u first" style="margin-top: 1.5em;"> |
337 | - <div class="homepage-whatslaunchpad" |
338 | - tal:condition="view/show_whatslaunchpad"> |
339 | - <h2><span class="launchpad-gold">Launchpad</span> is a software collaboration platform that provides:</h2> |
340 | - <ul tal:define="apphomes view/apphomes"> |
341 | - <li> |
342 | - <a class="sprite bug" |
343 | - tal:attributes="href apphomes/bugs">Bug tracking</a> |
344 | - </li> |
345 | - <li> |
346 | - <a class="sprite branch" |
347 | - tal:attributes="href apphomes/code">Code hosting</a> |
348 | - using <a href="http://bazaar.canonical.com/">Bazaar</a> |
349 | - and <a href="https://git-scm.com/">Git</a> |
350 | - </li> |
351 | - <li> |
352 | - <a class="sprite yes" |
353 | - href="https://help.launchpad.net/Code/Review">Code reviews</a> |
354 | - </li> |
355 | - <li> |
356 | - <a class="sprite ubuntu-logo" |
357 | - tal:attributes="href apphomes/ubuntu">Ubuntu package building and hosting</a> |
358 | - </li> |
359 | - <li> |
360 | - <a class="sprite translate-icon" |
361 | - tal:attributes="href apphomes/translations">Translations</a> |
362 | - </li> |
363 | - <li> |
364 | - <a class="sprite mail" |
365 | - href="https://help.launchpad.net/Teams/MailingLists">Mailing lists</a> |
366 | - </li> |
367 | - <li> |
368 | - <a class="sprite question" |
369 | - tal:attributes="href apphomes/answers">Answer tracking and FAQs</a> |
370 | - </li> |
371 | - <li> |
372 | - <a class="sprite blueprint" |
373 | - tal:attributes="href apphomes/blueprints">Specification tracking</a> |
374 | - </li> |
375 | - </ul> |
376 | - <div id="homepage-whatslaunchpad-tour"> |
377 | - <a class="sprite tour" href="/+tour">Take the tour!</a> |
378 | - </div> |
379 | - </div> |
380 | - |
381 | - <div id="homepage-blogposts" class="homepage-portlet" |
382 | - tal:condition="features/app.root_blog.enabled"> |
383 | - <h2>Recent Launchpad blog posts</h2> |
384 | - <ul tal:define="posts view/getRecentBlogPosts"> |
385 | - <li class="news" |
386 | - tal:repeat="post posts"> |
387 | - <a href="" tal:attributes="href post/link" |
388 | - tal:content="post/title"> |
389 | - Take the Launchpad survey</a><span class="registered"> |
390 | - – <tal:date content="post/date">01 July 2010</tal:date></span><br /> |
391 | - <tal:description content="structure post/description"> |
392 | - Tell us a little about how you use Launchpad by answering |
393 | - our short survey. |
394 | - </tal:description> |
395 | - </li> |
396 | - <li class="news"> |
397 | - <a href="http://blog.launchpad.net/general/launchpad-is-now-open-source"> |
398 | - Launchpad now open source</a><span class="registered"> – 21 Jul 2009</span><br /> |
399 | - Get the code to Launchpad and join our development community. |
400 | - </li> |
401 | - </ul> |
402 | - <ul class="horizontal"> |
403 | - <li> |
404 | - <strong><a href="http://blog.launchpad.net">Read the blog</a></strong> |
405 | - </li> |
406 | - </ul> |
407 | - </div> |
408 | - </div> |
409 | - |
410 | - <div class="yui-u"> |
411 | - <form id="homepage-searchform" |
412 | + <section class="p-strip is-shallow"> |
413 | + <div class="u-fixed-width"> |
414 | + <form id="homepage-searchform" class="p-form p-form--inline" |
415 | xml:lang="en" lang="en" dir="ltr" |
416 | tal:attributes="action string:${rooturl}+search" |
417 | method="get" accept-charset="UTF-8"> |
418 | - <input id="text" type="text" name="field.text" size="25" /> |
419 | - <input id="search" type="submit" value="Search Launchpad" /> |
420 | + <div class="p-form__group p-form--search"> |
421 | + <label for="search-input" class="u-off-screen">Search</label> |
422 | + <div class="p-form__control u-clearfix"> |
423 | + <input id="search-input" type="search" name="field.text" value="" autofocus=""> |
424 | + </div> |
425 | + </div> |
426 | + <button id="search" class="p-button--positive" type="submit" value="Search">Search</button> |
427 | </form> |
428 | <script type="text/javascript"> |
429 | LPJS.use('lp', function () { |
430 | setFocusByName('field.text'); |
431 | }); |
432 | </script> |
433 | - <div id="homepage-stats"> |
434 | + <div id="homepage-stats" class="u-text--muted"> |
435 | <strong |
436 | tal:content="view/project_count/fmt:intcomma">123</strong> projects, |
437 | <strong |
438 | @@ -172,76 +62,141 @@ |
439 | tal:content="view/blueprint_count/fmt:intcomma">123</strong> blueprints, |
440 | and counting... |
441 | </div> |
442 | - <div id="homepage-getstarted" class="homepage-portlet"> |
443 | - <h2>Get started</h2> |
444 | + </div> |
445 | + </section> |
446 | + |
447 | + <section class="p-strip is-shallow" tal:condition="view/show_whatslaunchpad"> |
448 | + <div class="homepage-whatslaunchpad"> |
449 | + <div class="u-fixed-width u-clearfix"> |
450 | + <h2>Launchpad</h2> |
451 | + <h4>A software collaboration platform that provides</h4> |
452 | + </div> |
453 | + <div class="u-fixed-width u-clearfix"> |
454 | + <ul class="p-list--divided is-split" tal:define="apphomes view/apphomes"> |
455 | + <li class="p-list__item"> |
456 | + <a class="sprite bug" |
457 | + tal:attributes="href apphomes/bugs">Bug tracking</a> |
458 | + </li> |
459 | + <li class="p-list__item"> |
460 | + <a class="sprite branch" |
461 | + tal:attributes="href apphomes/code">Code hosting</a> |
462 | + using <a href="http://bazaar.canonical.com/">Bazaar</a> |
463 | + and <a href="https://git-scm.com/">Git</a> |
464 | + </li> |
465 | + <li class="p-list__item"> |
466 | + <a class="sprite yes" |
467 | + href="https://help.launchpad.net/Code/Review">Code reviews</a> |
468 | + </li> |
469 | + <li class="p-list__item"> |
470 | + <a class="sprite ubuntu-logo" |
471 | + tal:attributes="href apphomes/ubuntu">Ubuntu package building and hosting</a> |
472 | + </li> |
473 | + <li class="p-list__item"> |
474 | + <a class="sprite translate-icon" |
475 | + tal:attributes="href apphomes/translations">Translations</a> |
476 | + </li> |
477 | + <li class="p-list__item"> |
478 | + <a class="sprite mail" |
479 | + href="https://help.launchpad.net/Teams/MailingLists">Mailing lists</a> |
480 | + </li> |
481 | + <li class="p-list__item"> |
482 | + <a class="sprite question" |
483 | + tal:attributes="href apphomes/answers">Answer tracking and FAQs</a> |
484 | + </li> |
485 | + <li class="p-list__item"> |
486 | + <a class="sprite blueprint" |
487 | + tal:attributes="href apphomes/blueprints">Specification tracking</a> |
488 | + </li> |
489 | + </ul> |
490 | + |
491 | + <div id="homepage-whatslaunchpad-tour"> |
492 | + <a class="sprite tour" href="/+tour">Take the tour!</a> |
493 | + </div> |
494 | + </div> |
495 | + </div> |
496 | + </section> |
497 | + |
498 | + <section class="p-strip is-shallow"> |
499 | + <div id="homepage-getstarted" class="homepage-portlet"> |
500 | + <div class="u-fixed-width u-clearfix"> |
501 | + <h2 class="u-float-left">Get started</h2> |
502 | + <a href="/+tour" class="p-button u-float-right u-hide--small p-featured-lp__see-more">Take the tour</a> |
503 | + </div> |
504 | + <div class="u-fixed-width u-clearfix"> |
505 | <tal:logged_out condition="not:view/user" omit-tag=""> |
506 | <a href="/+login">Creating an account</a> allows you to start |
507 | working within Launchpad.<br /> |
508 | </tal:logged_out> |
509 | - <p> |
510 | + <span> |
511 | Learn more about Launchpad in the |
512 | <a href="https://help.launchpad.net/">user guide</a> |
513 | or try it for yourself in our |
514 | <a href="https://qastaging.launchpad.net/">sandbox environment</a>. |
515 | - </p> |
516 | + </span> |
517 | <tal:logged_in condition="view/user" omit-tag=""> |
518 | If you're ready, you can: |
519 | - <ul tal:define="apphomes view/apphomes"> |
520 | - <li> |
521 | - <a class="sprite add" |
522 | - href="/projects/+new">Register a project</a> |
523 | + |
524 | + <ul class="p-matrix" tal:define="apphomes view/apphomes"> |
525 | + <li class="p-matrix__item"> |
526 | + <img class="p-matrix__img" src="/@@/add-homepage.png"> |
527 | + <div class="p-matrix__content"> |
528 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="/projects/+new">Register a project</a></h4> |
529 | + </div> |
530 | </li> |
531 | - <li> |
532 | - <a class="sprite add" |
533 | - href="/people/+newteam">Register a team</a> |
534 | + <li class="p-matrix__item"> |
535 | + <img class="p-matrix__img" src="/@@/add-homepage.png"> |
536 | + <div class="p-matrix__content"> |
537 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="/people/+newteam">Register a team</a></h4> |
538 | + </div> |
539 | </li> |
540 | - <li tal:condition="not:view/show_whatslaunchpad"> |
541 | - <a class="sprite bug" |
542 | - tal:attributes="href apphomes/bugs">Browse bugs</a> |
543 | + <li class="p-matrix__item"> |
544 | + <img class="p-matrix__img" src="/@@/bug-homepage.png"> |
545 | + <div class="p-matrix__content"> |
546 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="apphomes/bugs">Browse bugs</a></h4> |
547 | + </div> |
548 | </li> |
549 | - <li tal:condition="not:view/show_whatslaunchpad"> |
550 | - <a class="sprite translate-icon" |
551 | - tal:attributes="href apphomes/translations">Help translate</a> |
552 | + <li class="p-matrix__item"> |
553 | + <img class="p-matrix__img" src="/@@/translation-homepage.png"> |
554 | + <div class="p-matrix__content"> |
555 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="apphomes/translations">Help translate</a></h4> |
556 | + </div> |
557 | </li> |
558 | - <li tal:condition="not:view/show_whatslaunchpad"> |
559 | - <a class="sprite question" |
560 | - tal:attributes="href apphomes/answers">Find answers</a> |
561 | + <li class="p-matrix__item"> |
562 | + <img class="p-matrix__img" src="/@@/question-homepage.png"> |
563 | + <div class="p-matrix__content"> |
564 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="apphomes/answers">Find answers</a></h4> |
565 | + </div> |
566 | </li> |
567 | - <li> |
568 | - <a class="sprite ppa-icon" |
569 | - href="/ubuntu/+ppas">Browse Ubuntu PPAs</a> |
570 | + <li class="p-matrix__item"> |
571 | + <img class="p-matrix__img" src="/@@/ppa-icon-homepage.png"> |
572 | + <div class="p-matrix__content"> |
573 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="/ubuntu/+ppas">Browse Ubuntu PPAs</a></h4> |
574 | + </div> |
575 | </li> |
576 | - <li tal:condition="not:view/show_whatslaunchpad"> |
577 | - <a class="sprite tour" href="/+tour">Take the tour</a> |
578 | - </li> |
579 | </ul> |
580 | </tal:logged_in> |
581 | </div> |
582 | + </div> |
583 | + </section> |
584 | |
585 | - <div id="homepage-featured" class="homepage-portlet"> |
586 | - <h2>Featured projects</h2> |
587 | - |
588 | - <div class="featured-project-top" |
589 | - tal:define="topproject view/featured_projects_top" |
590 | - tal:condition="topproject"> |
591 | - <h3> |
592 | - <a tal:attributes="href topproject/fmt:url" |
593 | - tal:content="structure topproject/image:logo"><img /></a> |
594 | - <a tal:attributes="href topproject/fmt:url" |
595 | - tal:content="topproject/displayname">Foo project</a> |
596 | - </h3> |
597 | - <p tal:content="structure view/featured_projects_top/summary/fmt:shorten/200"> |
598 | - Foo project is great... |
599 | - </p> |
600 | - </div> |
601 | - |
602 | - <div class="two-column-list"> |
603 | - <ul class="featured-projects-list"> |
604 | - <li tal:repeat="project view/featured_projects"> |
605 | - <a tal:replace="structure project/fmt:link" /> |
606 | - </li> |
607 | - </ul> |
608 | - </div> |
609 | + <section class="p-strip is-shallow"> |
610 | + <div id="homepage-featured" class="homepage-portlet"> |
611 | + <div class="u-fixed-width u-clearfix"> |
612 | + <h2 class="u-float-left">Featured projects</h2> |
613 | + <a href="/projects" class="p-button u-float-right u-hide--small p-featured-lp__see-more">See more...</a> |
614 | + </div> |
615 | + <div class="u-fixed-width u-clearfix"> |
616 | + <ul class="p-matrix featured-projects-list"> |
617 | + <li class="p-matrix__item" tal:repeat="project view/featured_projects"> |
618 | + <img class="p-matrix__img" tal:attributes="src project/image:logo_src; alt project/displayname"> |
619 | + <div class="p-matrix__content"> |
620 | + <h4 class="p-matrix__title"><a class="p-matrix__link" href="#" tal:content="structure project/displayname" tal:attributes="href project/fmt:url"></a></h4> |
621 | + <div class="p-matrix__desc"> |
622 | + <p tal:content="structure project/summary/fmt:shorten/100"></p> |
623 | + </div> |
624 | + </div> |
625 | + </li> |
626 | + </ul> |
627 | |
628 | <ul class="horizontal"> |
629 | <li> |
630 | @@ -250,14 +205,37 @@ |
631 | projects</a>!</strong> |
632 | </li> |
633 | <li tal:condition="context/required:launchpad.Edit"> |
634 | - <a class="sprite edit" href="+featuredprojects">Manage |
635 | - featured project list</a> |
636 | + <a class="sprite edit" href="+featuredprojects"> |
637 | + Manage featured project list |
638 | + </a> |
639 | + </li> |
640 | + </ul> |
641 | + </div> |
642 | + </div> |
643 | + </section> |
644 | + |
645 | + <section class="p-strip is-shallow" tal:condition="features/app.root_blog.enabled"> |
646 | + <div id="homepage-blogposts" class="homepage-portlet"> |
647 | + <div class="u-fixed-width u-clearfix"> |
648 | + <h2 class="u-float-left">Recent Launchpad blog posts</h2> |
649 | + <a href="http://blog.launchpad.net" class="p-button u-float-right u-hide--small p-featured-lp__see-more">Read the blog</a> |
650 | + </div> |
651 | + <div class="u-fixed-width u-clearfix"> |
652 | + <ul tal:define="posts view/getRecentBlogPosts"> |
653 | + <li class="news" tal:repeat="post posts"> |
654 | + <a tal:attributes="href post/link" tal:content="post/title"> |
655 | + </a> |
656 | + <span class="registered">– <tal:date content="post/date"></tal:date></span><br /> |
657 | + <tal:description content="structure post/description"> |
658 | + Tell us a little about how you use Launchpad by answering |
659 | + our short survey. |
660 | + </tal:description> |
661 | </li> |
662 | </ul> |
663 | </div> |
664 | - </div><!-- yui-u --> |
665 | + </div> |
666 | + </section> |
667 | |
668 | - </div><!-- yui-gc --> |
669 | </div><!-- homepage --> |
670 | </div><!--main--> |
671 | </body> |
Rejecting this MP in favor this one: /code.launchpad .net/~ines- almeida/ launchpad/ +git/launchpad/ +merge/ 460819
- https:/
The new MP is proposed against a branch that removes the top project in a separate MP, to remove some clutter from the frontend changes: https:/ /code.launchpad .net/~ines- almeida/ launchpad/ +git/launchpad/ +merge/ 460809