History

Move doc links to manifest

Thibaut committed 11 years ago

Commit b29d6ca1 parent 34e804d7 files · +50 −36Browse files

Unified · Split

7 files
  1. assets/javascripts/models/doc.coffee +1 −1
  2. assets/javascripts/views/content/entry_page.coffee +13 −1
  3. assets/stylesheets/components/_page.scss +31 −0
  4. lib/docs/core/doc.rb +2 −1
  5. lib/docs/core/scraper.rb +2 −6
  6. lib/docs/filters/core/links.rb +0 −26
  7. test/lib/docs/core/doc_test.rb +1 −1
assets/javascripts/models/doc.coffee+1−1
@@ -1,5 +1,5 @@
1class app.models.Doc extends app.Model1class app.models.Doc extends app.Model
2 # Attributes: name, slug, type, version, index_path, db_path, db_size, mtime2 # Attributes: name, slug, type, version, index_path, db_path, db_size, mtime, links
3 3
4 constructor: ->4 constructor: ->
5 super5 super
assets/javascripts/views/content/entry_page.coffee+13−1
@@ -36,6 +36,18 @@ class app.views.EntryPage extends app.View · 35 unmodified lines
36 @trigger 'loaded'36 @trigger 'loaded'
37 return37 return
38 38
39 LINKS =
40 home: 'Homepage'
41 code: 'Source code'
42
43 prepareContent: (content) ->
44 return content unless @entry.isIndex() and @entry.doc.links
45
46 links = for link, url of @entry.doc.links
47 """<a href="#{url}" class="_links-link">#{LINKS[link]}</a>"""
48
49 """<p class="_links">#{links.join('')}</p>#{content}"""
50
39 empty: ->51 empty: ->
40 @subview?.deactivate()52 @subview?.deactivate()
41 @subview = null53 @subview = null
@@ -78,7 +90,7 @@ class app.views.EntryPage extends app.View · 36 unmodified lines
78 90
79 onSuccess: (response) =>91 onSuccess: (response) =>
80 @xhr = null92 @xhr = null
81 @render response93 @render @prepareContent(response)
82 return94 return
83 95
84 onError: =>96 onError: =>
assets/stylesheets/components/_page.scss+31−0
@@ -3,6 +3,8 @@ · 2 unmodified lines
3//3//
4 4
5._page {5._page {
6 position: relative;
7
6 > h1 { @extend ._lined-heading; }8 > h1 { @extend ._lined-heading; }
7 > h1:first-child { margin-top: 0; }9 > h1:first-child { margin-top: 0; }
8 10
@@ -22,6 +24,35 @@ · 13 unmodified lines
22 }24 }
23}25}
24 26
27//
28// Links
29//
30
31._links {
32 position: absolute;
33 top: 0;
34 right: 0;
35 margin: 0;
36 line-height: 2em;
37 text-align: right;
38
39 + h1 { margin-top: 0; }
40
41 @media (max-width: 1023px) { display: none; }
42}
43
44._links-link {
45 display: inline-block;
46 vertical-align: top;
47 padding: 0 .5rem;
48 background: white;
49 @extend %internal-link;
50
51 & + & { margin-left: .75rem; }
52 &:first-child { padding-left: 1rem; }
53 &:last-child { padding-right: 0; }
54}
55
25//56//
26// Attribution box57// Attribution box
27//58//
lib/docs/core/doc.rb+2−1
@@ -38,7 +38,8 @@ module Docs · 37 unmodified lines
38 type: type,38 type: type,
39 version: version,39 version: version,
40 index_path: index_path,40 index_path: index_path,
41 db_path: db_path }41 db_path: db_path,
42 links: links }
42 end43 end
43 44
44 def store_page(store, id)45 def store_page(store, id)
lib/docs/core/scraper.rb+2−6
@@ -34,7 +34,7 @@ module Docs · 33 unmodified lines
34 self.text_filters = FilterStack.new34 self.text_filters = FilterStack.new
35 35
36 html_filters.push 'container', 'clean_html', 'normalize_urls', 'internal_urls', 'normalize_paths'36 html_filters.push 'container', 'clean_html', 'normalize_urls', 'internal_urls', 'normalize_paths'
37 text_filters.push 'inner_html', 'clean_text', 'links', 'attribution'37 text_filters.push 'inner_html', 'clean_text', 'attribution'
38 38
39 def build_page(path)39 def build_page(path)
40 response = request_one url_for(path)40 response = request_one url_for(path)
@@ -65,10 +65,6 @@ module Docs · 24 unmodified lines
65 @root_url ||= root_path? ? URL.parse(File.join(base_url.to_s, root_path)) : base_url.normalize65 @root_url ||= root_path? ? URL.parse(File.join(base_url.to_s, root_path)) : base_url.normalize
66 end66 end
67 67
68 def links
69 self.class.links
70 end
71
72 def root_path68 def root_path
73 self.class.root_path69 self.class.root_path
74 end70 end
@@ -93,7 +89,7 @@ module Docs · 18 unmodified lines
93 89
94 def options90 def options
95 @options ||= self.class.options.deep_dup.tap do |options|91 @options ||= self.class.options.deep_dup.tap do |options|
96 options.merge! base_url: base_url, root_url: root_url, links: links,92 options.merge! base_url: base_url, root_url: root_url,
97 root_path: root_path, initial_paths: initial_paths93 root_path: root_path, initial_paths: initial_paths
98 94
99 if root_path?95 if root_path?
lib/docs/filters/core/links.rb+0−26
@@ -1,26 +0,0 @@
1module Docs
2 class LinksFilter < Filter
3 def call
4 html.prepend(links_html) if root_page? && links
5 html
6 end
7
8 NAMES = {
9 home: 'Homepage',
10 code: 'Source code'
11 }
12
13 def links_html
14 links = self.links.map do |name, link|
15 %(<li><a href="#{link}" class="_toc-link">#{NAMES[name]}</a></li>)
16 end
17
18 <<-HTML.strip_heredoc
19 <div class="_toc">
20 <div class="_toc-title">Resources</div>
21 <ul class="_toc-list">#{links.join}</ul>
22 </div>
23 HTML
24 end
25 end
26end
test/lib/docs/core/doc_test.rb+1−1
@@ -116,7 +116,7 @@ class DocsDocTest < MiniTest::Spec · 115 unmodified lines
116 end116 end
117 117
118 it "includes the doc's name, slug, type, version, index_path and db_path" do118 it "includes the doc's name, slug, type, version, index_path and db_path" do
119 %w(name slug type version index_path db_path).each do |attribute|119 %w(name slug type version index_path db_path links).each do |attribute|
120 eval "stub(doc).#{attribute} { attribute }"120 eval "stub(doc).#{attribute} { attribute }"
121 assert_equal attribute, doc.as_json[attribute.to_sym]121 assert_equal attribute, doc.as_json[attribute.to_sym]
122 end122 end