middleman-pagegroups 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +18 -0
- data/LICENSE.md +22 -0
- data/README.md +87 -0
- data/Rakefile +10 -0
- data/bin/middleman-pagegroups +108 -0
- data/documentation_project/.gitignore +25 -0
- data/documentation_project/Gemfile +18 -0
- data/documentation_project/README.md +13 -0
- data/documentation_project/config.rb +109 -0
- data/documentation_project/source/documentation/10_concepts.html.md.erb +111 -0
- data/documentation_project/source/documentation/20_directory_organization.html.md.erb +85 -0
- data/documentation_project/source/documentation/30_frontmatter.html.md.erb +70 -0
- data/documentation_project/source/documentation/40_resources.html.md.erb +79 -0
- data/documentation_project/source/documentation/50_helpers.html.md.erb +252 -0
- data/documentation_project/source/documentation/60_sample_partials.html.md.erb +55 -0
- data/documentation_project/source/documentation/70_sample_layouts.html.md.erb +92 -0
- data/documentation_project/source/documentation/80_config.html.md.erb +98 -0
- data/documentation_project/source/documentation/index.html.md.erb +32 -0
- data/documentation_project/source/documentation/ovum.html.md.erb +27 -0
- data/documentation_project/source/fonts/font-awesome/FontAwesome.otf +0 -0
- data/documentation_project/source/fonts/font-awesome/fontawesome-webfont.eot +0 -0
- data/documentation_project/source/fonts/font-awesome/fontawesome-webfont.svg +655 -0
- data/documentation_project/source/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
- data/documentation_project/source/fonts/font-awesome/fontawesome-webfont.woff +0 -0
- data/documentation_project/source/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
- data/documentation_project/source/images/middleman-pagegroups-small.png +0 -0
- data/documentation_project/source/images/middleman-pagegroups.png +0 -0
- data/documentation_project/source/index.html.md.erb +39 -0
- data/documentation_project/source/javascripts/all.js +1 -0
- data/documentation_project/source/layouts/layout.haml +11 -0
- data/documentation_project/source/layouts/template-logo-large.haml +25 -0
- data/documentation_project/source/layouts/template-logo-medium.haml +26 -0
- data/documentation_project/source/layouts/template-logo-small.haml +26 -0
- data/documentation_project/source/license.html.md.erb +29 -0
- data/documentation_project/source/partials/_nav_breadcrumbs.haml +11 -0
- data/documentation_project/source/partials/_nav_breadcrumbs_alt.haml +15 -0
- data/documentation_project/source/partials/_nav_brethren.haml +18 -0
- data/documentation_project/source/partials/_nav_brethren_index.haml +14 -0
- data/documentation_project/source/partials/_nav_legitimate_children.haml +16 -0
- data/documentation_project/source/partials/_nav_prev_next.haml +21 -0
- data/documentation_project/source/partials/_nav_toc_index.haml +21 -0
- data/documentation_project/source/stylesheets/_github.scss +61 -0
- data/documentation_project/source/stylesheets/_middlemac_minimal.scss +668 -0
- data/documentation_project/source/stylesheets/_normalize.scss +374 -0
- data/documentation_project/source/stylesheets/breadcrumb-separator-light.png +0 -0
- data/documentation_project/source/stylesheets/style.css.scss +3 -0
- data/documentation_project/source/toc.html.md.erb +26 -0
- data/lib/middleman-pagegroups/extension.rb +431 -0
- data/lib/middleman-pagegroups/partials.rb +173 -0
- data/lib/middleman-pagegroups/version.rb +5 -0
- data/lib/middleman-pagegroups.rb +6 -0
- data/middleman-pagegroups.gemspec +26 -0
- metadata +140 -0
Binary file
|
Binary file
|
@@ -0,0 +1,39 @@
|
|
1
|
+
---
|
2
|
+
title: Welcome to <code>middleman-pagegroups</code>
|
3
|
+
blurb: <em>middleman-pageGroups</em> is a great way to serve organized content.
|
4
|
+
layout: template-logo-large
|
5
|
+
navigate: false
|
6
|
+
---
|
7
|
+
|
8
|
+
# <%= current_page.data.title %>
|
9
|
+
|
10
|
+
Thanks for having a look at `middlemac-pagegroups`! This documentation is an
|
11
|
+
example of “eating your own dog food,” and uses the features of this extension
|
12
|
+
to demonstrate itself.
|
13
|
+
|
14
|
+
`middleman-pagegroups` principally enables **automatic navigation** via the
|
15
|
+
management of **sort order**, **groups** (including nested groups), and making
|
16
|
+
a determination about the **legitimacy** of these relationships.
|
17
|
+
|
18
|
+
It provides sample partials to enable **breadcrumbs**, **previous** and
|
19
|
+
**next** buttons, **tables of contents**, and **related pages**, all using the
|
20
|
+
concepts that enable automatic navigation.
|
21
|
+
|
22
|
+
The extension itself is quite simple; it adds a few methods to each resource
|
23
|
+
(those that you access with `current_page`, as well as several helpers, and if
|
24
|
+
you prefer to use partials, `middleman-pagegroups` can even generate some sample
|
25
|
+
partials for you.
|
26
|
+
|
27
|
+
* * *
|
28
|
+
|
29
|
+
<%= nav_legitimate_children %>
|
30
|
+
|
31
|
+
* * *
|
32
|
+
|
33
|
+
The table of contents above is the result of using the `nav_legitimate_children`
|
34
|
+
helper; all of the data comes automatically from the front matter of the files
|
35
|
+
that are part of this `source` group.
|
36
|
+
|
37
|
+
~~~ erb
|
38
|
+
<%%= nav_legitimate_children %>
|
39
|
+
~~~
|
@@ -0,0 +1 @@
|
|
1
|
+
// This is where it all goes :)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title= current_page.data.title || 'middleman-targets'
|
5
|
+
%meta{:content => 'text/html; charset=utf-8', :'http-equiv' => 'Content-Type'}/
|
6
|
+
= stylesheet_link_tag 'style'
|
7
|
+
= javascript_include_tag 'all'
|
8
|
+
%body{:class => "#{page_classes}"}
|
9
|
+
%nav#breadcrumbs
|
10
|
+
= nav_breadcrumbs_alt
|
11
|
+
= yield
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= wrap_layout ('layout'.to_sym) do
|
2
|
+
.container-logo-large
|
3
|
+
%div
|
4
|
+
%div
|
5
|
+
= image_tag 'middleman-pagegroups-small.png', :alt => 'middleman-pagegroups logo'
|
6
|
+
%h1= "#{product_name}"
|
7
|
+
%h2= "version #{product_version}"
|
8
|
+
%a{:href => product_uri}= product_uri
|
9
|
+
|
10
|
+
- if content_for?(:seeAlso)
|
11
|
+
.related_topics
|
12
|
+
%h1 See Also
|
13
|
+
= yield_content :seeAlso
|
14
|
+
|
15
|
+
%div
|
16
|
+
.yield-content
|
17
|
+
~ yield
|
18
|
+
- if current_page.navigator_eligible?
|
19
|
+
%hr
|
20
|
+
= nav_prev_next
|
21
|
+
|
22
|
+
-#
|
23
|
+
This template is suitable for your landing page or major sections, and features
|
24
|
+
a large version of your logo, the application name, and the application URI.
|
25
|
+
It can include optional :seeAlso content below the application URI.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= wrap_layout ('layout'.to_sym) do
|
2
|
+
.container-logo-medium
|
3
|
+
%div
|
4
|
+
.yield-content
|
5
|
+
~ yield
|
6
|
+
- if current_page.navigator_eligible?
|
7
|
+
%hr
|
8
|
+
= nav_prev_next
|
9
|
+
|
10
|
+
%div
|
11
|
+
%div
|
12
|
+
= image_tag 'middleman-pagegroups-small.png', :alt => 'middleman-pagegroups logo'
|
13
|
+
.related_topics
|
14
|
+
%h1 Related Topics
|
15
|
+
= nav_brethren_index
|
16
|
+
|
17
|
+
- if content_for?(:seeAlso)
|
18
|
+
%h1 See Also
|
19
|
+
= yield_content :seeAlso
|
20
|
+
|
21
|
+
-#
|
22
|
+
This template is suitable for general pages within a group, as it makes
|
23
|
+
navigation between the different pages in the group obvious and easy. It
|
24
|
+
features a medium version of your logo on the right, followed by navigation
|
25
|
+
to the other pages in the group. Optionally :seeAlso content can follow the
|
26
|
+
related pages.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= wrap_layout ('layout'.to_sym) do
|
2
|
+
.container-logo-small
|
3
|
+
.yield-content
|
4
|
+
= image_tag 'middleman-pagegroups-small.png', :alt => 'middleman-pagegroups logo'
|
5
|
+
~ yield
|
6
|
+
- if current_page.navigator_eligible?
|
7
|
+
%hr
|
8
|
+
= nav_prev_next
|
9
|
+
|
10
|
+
- if !current_page.brethren.to_a.empty? || content_for?(:seeAlso)
|
11
|
+
%hr/
|
12
|
+
|
13
|
+
.related_topics
|
14
|
+
%h1 Related Topics
|
15
|
+
= nav_brethren_index
|
16
|
+
|
17
|
+
- if content_for?(:seeAlso)
|
18
|
+
%h1 See Also
|
19
|
+
= yield_content :seeAlso
|
20
|
+
|
21
|
+
-#
|
22
|
+
This template is suitable for general pages that aren’t meant to participate
|
23
|
+
within a group. It does show related pages followed by :seeAlso content at
|
24
|
+
the bottom on the page, but it’s not as obvious for simple navigation as the
|
25
|
+
template-logo-medium. It features a small version of your help logo in the
|
26
|
+
top left, followed by the title.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
title: The MIT License
|
3
|
+
blurb: Describes your legal rights and obligations for using these materials.
|
4
|
+
layout: template-logo-medium
|
5
|
+
order: 40
|
6
|
+
navigate: false
|
7
|
+
---
|
8
|
+
|
9
|
+
# <%= current_page.data.title %>
|
10
|
+
|
11
|
+
**Copyright (c) 2016 Jim Derry**
|
12
|
+
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
14
|
+
of this software and associated documentation files (the "Software"), to deal
|
15
|
+
in the Software without restriction, including without limitation the rights
|
16
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
17
|
+
copies of the Software, and to permit persons to whom the Software is
|
18
|
+
furnished to do so, subject to the following conditions:
|
19
|
+
|
20
|
+
The above copyright notice and this permission notice shall be included in
|
21
|
+
all copies or substantial portions of the Software.
|
22
|
+
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
29
|
+
THE SOFTWARE.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
- pages = current_page.breadcrumbs
|
2
|
+
- unless pages.to_a.empty?
|
3
|
+
%div{:class => (defined?(klass) && klass) || nav_breadcrumbs_class}
|
4
|
+
%ul
|
5
|
+
- pages.each do |p|
|
6
|
+
%li= link_to p.data.title, p
|
7
|
+
|
8
|
+
-#
|
9
|
+
- This partial renders links into an <ul>.
|
10
|
+
- You probably need a class in order to render this properly.
|
11
|
+
- :klass - pass in this local to specify a class for the containing div.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- pages = current_page.breadcrumbs
|
2
|
+
- unless pages.to_a.empty?
|
3
|
+
%div{:class => (defined?(klass) && klass) || nav_breadcrumbs_alt_class}
|
4
|
+
%ul
|
5
|
+
- pages[0...pages.count-1].each do |p|
|
6
|
+
%li= link_to p.data.title, p
|
7
|
+
%li= (defined?(label) && label) || nav_breadcrumbs_alt_label
|
8
|
+
|
9
|
+
-#
|
10
|
+
- This partial renders links into an <ul>.
|
11
|
+
- You probably need a class in order to render this properly.
|
12
|
+
- This alternate version replaces the last link with the extension's
|
13
|
+
`nav_breadcrumbs_alt_label` value.
|
14
|
+
- :label - pass in this local instead of using the default.
|
15
|
+
- :klass - pass in this local to specify a class for the containing div.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
- commence = (defined?(start) && start) || current_page
|
2
|
+
- pages = commence.brethren
|
3
|
+
- unless pages.to_a.empty?
|
4
|
+
%div{:class => (defined?(klass) && klass) || nav_brethren_class}
|
5
|
+
%dl
|
6
|
+
- pages.each do |p|
|
7
|
+
%dt<
|
8
|
+
= link_to p.data.title, p
|
9
|
+
- if p.data.blurb
|
10
|
+
%dd= p.data.blurb
|
11
|
+
|
12
|
+
-#
|
13
|
+
- This partial renders links with blurbs into a <dl> to serve as
|
14
|
+
a related links table of contents.
|
15
|
+
- You probably need a class in order to render this properly.
|
16
|
+
- For a compact form without blurbs, see also `_nav_brethren_index.haml.
|
17
|
+
- :klass - pass in this local to specify a class for the containing div.
|
18
|
+
- :start - pass in this local to specify a different starting point.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
- commence = (defined?(start) && start) || current_page
|
2
|
+
- pages = commence.brethren
|
3
|
+
- unless pages.to_a.empty?
|
4
|
+
%div{:class => (defined?(klass) && klass) || nav_brethren_index_class}
|
5
|
+
%ul
|
6
|
+
- pages.each do |p|
|
7
|
+
%li= link_to p.data.title, p
|
8
|
+
|
9
|
+
-#
|
10
|
+
This partial renders brethren into an <ul> to serve as a related-pages type
|
11
|
+
of table of contents.
|
12
|
+
- You probably need a class in order to render this properly.
|
13
|
+
- :klass - pass in this local to specify a class for the containing div.
|
14
|
+
- :start - pass in this local to specify a different starting point.
|
@@ -0,0 +1,16 @@
|
|
1
|
+
- commence = (defined?(start) && start) || current_page
|
2
|
+
- pages = commence.legitimate_children
|
3
|
+
- unless pages.to_a.empty?
|
4
|
+
%div{:class => (defined?(klass) && klass) || nav_legitimate_children_class}
|
5
|
+
%dl
|
6
|
+
- pages.each do |p|
|
7
|
+
%dt= link_to p.data.title, p
|
8
|
+
- if p.data.blurb
|
9
|
+
%dd= p.data.blurb
|
10
|
+
|
11
|
+
-#
|
12
|
+
This partial renders links with blurbs into a <dl> to serve as a high-level
|
13
|
+
table of contents.
|
14
|
+
- You probably need a class in order to render this properly.
|
15
|
+
- :klass - pass in this local to specify a class for the containing div.
|
16
|
+
- :start - pass in this local to specify a different starting point.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- p_prev = current_page.brethren_previous
|
2
|
+
- p_next = current_page.brethren_next
|
3
|
+
- b_prev = (defined?(label_previous) && label_previous) || nav_prev_next_label_prev
|
4
|
+
- b_next = (defined?(label_next) && label_next) || nav_prev_next_label_next
|
5
|
+
%div{:class => (defined?(klass) && klass) || nav_prev_next_class}
|
6
|
+
- if p_prev.nil?
|
7
|
+
%span= b_prev
|
8
|
+
- else
|
9
|
+
= link_to b_prev, p_prev
|
10
|
+
- if p_next.nil?
|
11
|
+
%span= b_next
|
12
|
+
- else
|
13
|
+
= link_to b_next, p_next
|
14
|
+
|
15
|
+
-#
|
16
|
+
This partial renders a div with two spans that are suitable for use as
|
17
|
+
previous and next buttons when properly styled.
|
18
|
+
- You probably need a class in order to render this properly.
|
19
|
+
- :klass - pass in this local to specify a class for the containing div.
|
20
|
+
- :label_previous - the label for the Previous button. Default is "Previous".
|
21
|
+
- :label_next - the label for the Next button. Default is "Next".
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- commence = (defined?(start) && start) || current_page
|
2
|
+
- pages = commence.legitimate_children
|
3
|
+
- if defined?(recurse) && recurse
|
4
|
+
- unless pages.to_a.empty?
|
5
|
+
%ul
|
6
|
+
- pages.each do |p|
|
7
|
+
%li<
|
8
|
+
= link_to p.data.title, p
|
9
|
+
= partial 'partials/toc_index', :locals => { :start => p, :recurse => true }
|
10
|
+
- else
|
11
|
+
%ul{:class => (defined?(klass) && klass) || nav_toc_index_class}
|
12
|
+
%li<
|
13
|
+
= link_to commence.data.title, commence
|
14
|
+
= partial 'partials/toc_index', :locals => { :start => commence, :recurse => true }
|
15
|
+
|
16
|
+
-#
|
17
|
+
- This partial renders nested links into an <ul>. The top level item is the
|
18
|
+
start page followed by the entire directory structure below it.
|
19
|
+
- You probably need a class in order to render this properly.
|
20
|
+
- :start - pass in this local to specify the starting page.
|
21
|
+
- :klass - pass in this local to specify a class for the containing div.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
.hll { background-color: #ffffcc }
|
2
|
+
.c { color: #999988; font-style: italic } /* Comment */
|
3
|
+
.err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
4
|
+
.k { color: #000000; font-weight: bold } /* Keyword */
|
5
|
+
.o { color: #000000; font-weight: bold } /* Operator */
|
6
|
+
.cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
7
|
+
.cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
|
8
|
+
.c1 { color: #999988; font-style: italic } /* Comment.Single */
|
9
|
+
.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
10
|
+
.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
11
|
+
.ge { color: #000000; font-style: italic } /* Generic.Emph */
|
12
|
+
.gr { color: #aa0000 } /* Generic.Error */
|
13
|
+
.gh { color: #999999 } /* Generic.Heading */
|
14
|
+
.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
15
|
+
.go { color: #888888 } /* Generic.Output */
|
16
|
+
.gp { color: #555555 } /* Generic.Prompt */
|
17
|
+
.gs { font-weight: bold } /* Generic.Strong */
|
18
|
+
.gu { color: #aaaaaa } /* Generic.Subheading */
|
19
|
+
.gt { color: #aa0000 } /* Generic.Traceback */
|
20
|
+
.kc { color: #000000; font-weight: bold } /* Keyword.Constant */
|
21
|
+
.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
|
22
|
+
.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
|
23
|
+
.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
|
24
|
+
.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
|
25
|
+
.kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
26
|
+
.m { color: #009999 } /* Literal.Number */
|
27
|
+
.s { color: #d01040 } /* Literal.String */
|
28
|
+
.na { color: #008080 } /* Name.Attribute */
|
29
|
+
.nb { color: #0086B3 } /* Name.Builtin */
|
30
|
+
.nc { color: #445588; font-weight: bold } /* Name.Class */
|
31
|
+
.no { color: #008080 } /* Name.Constant */
|
32
|
+
.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
|
33
|
+
.ni { color: #800080 } /* Name.Entity */
|
34
|
+
.ne { color: #990000; font-weight: bold } /* Name.Exception */
|
35
|
+
.nf { color: #990000; font-weight: bold } /* Name.Function */
|
36
|
+
.nl { color: #990000; font-weight: bold } /* Name.Label */
|
37
|
+
.nn { color: #555555 } /* Name.Namespace */
|
38
|
+
.nt { color: #000080 } /* Name.Tag */
|
39
|
+
.nv { color: #008080 } /* Name.Variable */
|
40
|
+
.ow { color: #000000; font-weight: bold } /* Operator.Word */
|
41
|
+
.w { color: #bbbbbb } /* Text.Whitespace */
|
42
|
+
.mf { color: #009999 } /* Literal.Number.Float */
|
43
|
+
.mh { color: #009999 } /* Literal.Number.Hex */
|
44
|
+
.mi { color: #009999 } /* Literal.Number.Integer */
|
45
|
+
.mo { color: #009999 } /* Literal.Number.Oct */
|
46
|
+
.sb { color: #d01040 } /* Literal.String.Backtick */
|
47
|
+
.sc { color: #d01040 } /* Literal.String.Char */
|
48
|
+
.sd { color: #d01040 } /* Literal.String.Doc */
|
49
|
+
.s2 { color: #d01040 } /* Literal.String.Double */
|
50
|
+
.se { color: #d01040 } /* Literal.String.Escape */
|
51
|
+
.sh { color: #d01040 } /* Literal.String.Heredoc */
|
52
|
+
.si { color: #d01040 } /* Literal.String.Interpol */
|
53
|
+
.sx { color: #d01040 } /* Literal.String.Other */
|
54
|
+
.sr { color: #009926 } /* Literal.String.Regex */
|
55
|
+
.s1 { color: #d01040 } /* Literal.String.Single */
|
56
|
+
.ss { color: #990073 } /* Literal.String.Symbol */
|
57
|
+
.bp { color: #999999 } /* Name.Builtin.Pseudo */
|
58
|
+
.vc { color: #008080 } /* Name.Variable.Class */
|
59
|
+
.vg { color: #008080 } /* Name.Variable.Global */
|
60
|
+
.vi { color: #008080 } /* Name.Variable.Instance */
|
61
|
+
.il { color: #009999 } /* Literal.Number.Integer.Long */
|