Skip to content

Commit 146c69d

Browse files
authored
Merge pull request #2739 from jgayfer/docs_site
Add docs site shell
2 parents e547b00 + fc8642e commit 146c69d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+14046
-0
lines changed

docs_site/Gemfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# frozen_string_literal: true
2+
3+
source "https://rubygems.org"
4+
5+
gem "middleman", "~> 4.2"
6+
gem "oga", "~> 2.14"
7+
gem "nokogiri", "~>1.8.1"
8+
gem "middleman-blog", "~> 4.0"
9+
gem "middleman-s3_sync"
10+
gem "redcarpet"

docs_site/README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Based on [https://github.com/joshukraine/middleman-gulp](https://github.com/joshukraine/middleman-gulp)
2+
3+
Requirements
4+
------------
5+
6+
* [Middleman 4.x][middleman-docs]
7+
* [Ruby 2.x][rbenv]
8+
* [Node 8.x][nvm]
9+
* [Gulp CLI][gulp-cli]
10+
11+
Usage
12+
-----
13+
14+
1. Install ruby gems `bundle install`
15+
16+
2. Install npm packages `npm install`
17+
18+
3. Start the Middleman server. Note that this will also invoke Webpack via the external pipeline.
19+
20+
$ bundle exec middleman server
21+
22+
4. To build html and assets for production, run
23+
24+
$ bundle exec middleman build
25+
26+
5. Set proper `base_url` in config.rb

docs_site/config.rb

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# frozen_string_literal: true
2+
3+
require 'helpers/image_helpers'
4+
5+
page "/*.xml", layout: false
6+
page "/*.json", layout: false
7+
page "/*.txt", layout: false
8+
page "/developers/*", layout: 'article'
9+
page "/contributing*", layout: 'article'
10+
page "/acknowledgements*", layout: 'article'
11+
page "/404.html", directory_index: false
12+
13+
set :css_dir, "assets/stylesheets"
14+
set :images_dir, "assets/images"
15+
set :js_dir, "assets/javascripts"
16+
set :base_url, build? ? "https://solidus.io" : "http://localhost:4567"
17+
18+
activate :directory_indexes
19+
page "/developers/*", :directory_index => false
20+
page "/contributing*", :directory_index => false
21+
page "/acknowledgements*", :directory_index => false
22+
23+
helpers do
24+
def kabob_case(title)
25+
title.gsub(' ', '-').downcase
26+
end
27+
28+
def category_matches_page?(href)
29+
current_page.url.include?(href.sub(/\/[^\/]*$/, ''))
30+
end
31+
32+
def menu_item_matches_page?(href)
33+
current_page.url.chomp('/').eql?(href)
34+
end
35+
36+
def retrieve_page_header(page = current_page)
37+
markup = String(page.render( {layout: false} ))
38+
markup[/>(.*?)<\/h1>/, 1]
39+
end
40+
41+
def discover_title(page = current_page)
42+
page_title = current_page.data.title || retrieve_page_header(page)
43+
category = page.path[/\/(.*?)\/.*\.html/, 1]&.gsub('-', ' ')&.capitalize
44+
[category, page_title, "Solidus Developers Guide"].compact.join(" | ")
45+
end
46+
end
47+
48+
class CustomMarkdownRenderer < Redcarpet::Render::HTML
49+
include ImageHelpers
50+
51+
def block_code(code, language)
52+
path = code.lines.first[/^#\s(\S*)$/, 1]
53+
code = code.lines[1..-1].join if path
54+
code = code.gsub('<', '&lt').gsub('>', '&gt')
55+
template = File.read('source/partials/_code_block.erb')
56+
ERB.new(template).result(binding)
57+
end
58+
59+
def table(header, body)
60+
header_labels = header.scan(/<th>([\s\S]*?)<\/th>/).flatten
61+
table_rows = parse_table(body)
62+
template = File.read('source/partials/_table.erb')
63+
ERB.new(template).result(binding)
64+
end
65+
66+
def header(text, header_level)
67+
"<h%s id=\"%s\" class=\"offset\">%s</h%s>" % [header_level, text.parameterize, text, header_level]
68+
end
69+
70+
def link(link, title, content)
71+
template = File.read('source/partials/_anchor.erb')
72+
ERB.new(template).result(binding)
73+
end
74+
75+
private
76+
77+
# This function takes an HTML string and parses it into a nested list
78+
# The outer list represents table rows, while the inner lists represent the table data itself
79+
def parse_table(table_body)
80+
[].tap do |table_rows|
81+
table_body.scan(/<tr>([\s\S]*?)<\/tr>/).flatten.each do |tr_inner_markup|
82+
tds = []
83+
tr_inner_markup.scan(/<td>([\s\S]*?)<\/td>/).flatten.each do |td_inner_markup|
84+
tds << td_inner_markup
85+
end
86+
table_rows << tds
87+
end
88+
end
89+
end
90+
end
91+
92+
set :markdown_engine, :redcarpet
93+
94+
set :markdown,
95+
:tables => true,
96+
:autolink => true,
97+
:fenced_code_blocks => true,
98+
:footnotes => true,
99+
:smartypants => true,
100+
:with_toc_data => true,
101+
:renderer => CustomMarkdownRenderer
102+
103+
activate :external_pipeline,
104+
name: :webpack,
105+
command: build? ? "npm run production" : "npm run development",
106+
source: ".tmp",
107+
latency: 1
108+
109+
activate :s3_sync do |s3_sync|
110+
s3_sync.bucket = ENV["AWS_BUCKET"]
111+
s3_sync.region = ENV["AWS_REGION"]
112+
s3_sync.aws_access_key_id = ENV["AWS_ACCESS"]
113+
s3_sync.aws_secret_access_key = ENV["AWS_SECRET"]
114+
end
115+
116+
default_caching_policy max_age: (60 * 60 * 24 * 365)
117+
caching_policy "text/html", max_age: 0, must_revalidate: true
118+
caching_policy "application/xml", max_age: 0, must_revalidate: true
119+
120+
configure :build do
121+
activate :asset_hash
122+
end
123+
124+
set(:port, 4568)

docs_site/data/nav_tree.yml

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
top:
2+
- title: "Getting started"
3+
dropdown:
4+
- title: "First-time installation"
5+
href: "/developers/getting-started/first-time-installation.html"
6+
- title: "Installation options"
7+
href: "/developers/getting-started/installation-options.html"
8+
- title: "Develop Solidus"
9+
href: "/developers/getting-started/develop-solidus.html"
10+
- title: "Forking Solidus"
11+
href: "/developers/getting-started/forking-solidus.html"
12+
main:
13+
- title: "Adjustments"
14+
dropdown:
15+
- title: "Overview"
16+
href: "/developers/adjustments/overview.html"
17+
- title: "Assets"
18+
dropdown:
19+
- title: "Asset management"
20+
href: "/developers/assets/asset-management.html"
21+
- title: "Override Solidus assets"
22+
href: "/developers/assets/override-solidus-assets.html"
23+
- title: "Calculators"
24+
dropdown:
25+
- title: "Overview"
26+
href: "/developers/calculators/overview.html"
27+
- title: "Promotion calculators"
28+
href: "/developers/calculators/promotion-calculators.html"
29+
- title: "Shipping calculators"
30+
href: "/developers/calculators/shipping-calculators.html"
31+
- title: "Tax calculator"
32+
href: "/developers/calculators/tax-calculator.html"
33+
- title: "Extensions"
34+
dropdown:
35+
- title: "Decorators"
36+
href: "/developers/extensions/decorators.html"
37+
- title: "Installing extensions"
38+
href: "/developers/extensions/installing-extensions.html"
39+
- title: "Testing extensions"
40+
href: "/developers/extensions/testing-extensions.html"
41+
- title: "Inventory"
42+
dropdown:
43+
- title: "Overview"
44+
href: "/developers/inventory/overview.html"
45+
- title: "Inventory units"
46+
href: "/developers/inventory/inventory-units.html"
47+
- title: "Stock items"
48+
href: "/developers/inventory/stock-items.html"
49+
- title: "Stock movements"
50+
href: "/developers/inventory/stock-movements.html"
51+
- title: "Locations"
52+
dropdown:
53+
- title: "Overview"
54+
href: "/developers/locations/overview.html"
55+
- title: "Countries and states"
56+
href: "/developers/locations/countries-and-states.html"
57+
- title: "Zones"
58+
href: "/developers/locations/zones.html"
59+
- title: "Orders"
60+
dropdown:
61+
- title: "Overview"
62+
href: "/developers/orders/overview.html"
63+
- title: "Display total methods"
64+
href: "/developers/orders/display-total-methods.html"
65+
- title: "Order state machine"
66+
href: "/developers/orders/order-state-machine.html"
67+
- title: "Payment states"
68+
href: "/developers/orders/payment-states.html"
69+
- title: "Update orders"
70+
href: "/developers/orders/update-orders.html"
71+
- title: "Payments"
72+
dropdown:
73+
- title: "Overview"
74+
href: "/developers/payments/overview.html"
75+
- title: "Payment methods"
76+
href: "/developers/payments/payment-methods.html"
77+
- title: "Payment processing"
78+
href: "/developers/payments/payment-processing.html"
79+
- title: "Payment service providers"
80+
href: "/developers/payments/payment-service-providers.html"
81+
- title: "Payment sources"
82+
href: "/developers/payments/payment-sources.html"
83+
- title: "Payments"
84+
href: "/developers/payments/payments.html"
85+
- title: "Refunds"
86+
href: "/developers/payments/refunds.html"
87+
- title: "Preferences"
88+
dropdown:
89+
- title: "Add model preferences"
90+
href: "/developers/preferences/add-model-preferences.html"
91+
- title: "App configuration"
92+
href: "/developers/preferences/app-configuration.html"
93+
- title: "Class extension points"
94+
href: "/developers/preferences/class-extension-points.html"
95+
- title: "Products and variants"
96+
dropdown:
97+
- title: "Overview"
98+
href: "/developers/products-and-variants/overview.html"
99+
- title: "Multi-currency support"
100+
href: "/developers/products-and-variants/multi-currency-support.html"
101+
- title: "Product images"
102+
href: "/developers/products-and-variants/product-images.html"
103+
- title: "Product properties"
104+
href: "/developers/products-and-variants/product-properties.html"
105+
- title: "Products"
106+
href: "/developers/products-and-variants/products.html"
107+
- title: "Taxonomies and taxons"
108+
href: "/developers/products-and-variants/taxonomies-and-taxons.html"
109+
- title: "Variants"
110+
href: "/developers/products-and-variants/variants.html"
111+
- title: "Promotions"
112+
dropdown:
113+
- title: "Overview"
114+
href: "/developers/promotions/overview.html"
115+
- title: "Promotion actions"
116+
href: "/developers/promotions/promotion-actions.html"
117+
- title: "Promotion handlers"
118+
href: "/developers/promotions/promotion-handlers.html"
119+
- title: "Promotion rules"
120+
href: "/developers/promotions/promotion-rules.html"
121+
- title: "Returns"
122+
dropdown:
123+
- title: "Overview"
124+
href: "/developers/returns/overview.html"
125+
- title: "Customer returns"
126+
href: "/developers/returns/customer-returns.html"
127+
- title: "Reimbursement types"
128+
href: "/developers/returns/reimbursement-types.html"
129+
- title: "Reimbursements"
130+
href: "/developers/returns/reimbursements.html"
131+
- title: "Return authorizations"
132+
href: "/developers/returns/return-authorizations.html"
133+
- title: "Return items"
134+
href: "/developers/returns/return-items.html"
135+
- title: "Shipments"
136+
dropdown:
137+
- title: "Overview"
138+
href: "/developers/shipments/overview.html"
139+
- title: "Cartons"
140+
href: "/developers/shipments/cartons.html"
141+
- title: "Custom shipping calculators"
142+
href: "/developers/shipments/custom-shipping-calculators.html"
143+
- title: "Shipment setup examples"
144+
href: "/developers/shipments/shipment-setup-examples.html"
145+
- title: "Shipping method filters"
146+
href: "/developers/shipments/shipping-method-filters.html"
147+
- title: "Solidus active shipping extensions"
148+
href: "/developers/shipments/solidus-active-shipping-extension.html"
149+
- title: "Split shipments"
150+
href: "/developers/shipments/split-shipments.html"
151+
- title: "User interface for shipments"
152+
href: "/developers/shipments/user-interface-for-shipments.html"
153+
- title: "Taxation"
154+
dropdown:
155+
- title: "Overview"
156+
href: "/developers/taxation/overview.html"
157+
- title: "Custom tax calculators"
158+
href: "/developers/taxation/custom-tax-calculators.html"
159+
- title: "Displaying prices"
160+
href: "/developers/taxation/displaying-prices.html"
161+
- title: "Example tax setups"
162+
href: "/developers/taxation/example-tax-setups.html"
163+
- title: "Value-added tax (VAT)"
164+
href: "/developers/taxation/value-added-tax.html"
165+
- title: "Upgrades"
166+
dropdown:
167+
- title: "Overview"
168+
href: "/developers/upgrades/overview.html"
169+
- title: "Migrate from Spree"
170+
href: "/developers/upgrades/migrate-from-spree.html"
171+
- title: "Versioning guidelines"
172+
href: "/developers/upgrades/versioning-guidelines.html"
173+
- title: "Users"
174+
dropdown:
175+
- title: "Addresses"
176+
href: "/developers/users/addresses.html"
177+
- title: "Custom authentication"
178+
href: "/developers/users/custom-authentication.html"
179+
- title: "Views"
180+
dropdown:
181+
- title: "Custom frontend"
182+
href: "/developers/views/custom-frontend.html"
183+
- title: "Override views"
184+
href: "/developers/views/override-views.html"
185+
bottom:
186+
- title: "Contributing"
187+
href: "/contributing.html"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# frozen_string_literal: true
2+
3+
module CustomHelpers
4+
def full_title(site_title, page_title = nil)
5+
page_title ||= ""
6+
if page_title.empty?
7+
site_title
8+
else
9+
page_title + " | " + site_title
10+
end
11+
end
12+
13+
def smart_robots(path, env)
14+
# Add paths (like "thank you" pages) that search engines should not index.
15+
# Multiple paths look like this:
16+
# /first_path|another_path|yet_another/
17+
if !!(path =~ /thanks/) || env != "production"
18+
"noindex, nofollow"
19+
else
20+
"index, follow"
21+
end
22+
end
23+
24+
# return "active" if current page = path. used for navigation classes
25+
def nav_active(path)
26+
(current_page.path.start_with? path) ? "active" : ""
27+
end
28+
29+
# return "active" if current page is not in paths array. used for navigation classes
30+
def nav_inactive(paths)
31+
cls = "no-active"
32+
paths.each do |path|
33+
if current_page.path.start_with?(path)
34+
cls = ""
35+
end
36+
end
37+
cls
38+
end
39+
end

0 commit comments

Comments
 (0)