2013-01-29 19:26:36 -05:00
2013-01-31 05:55:17 -05:00
# The Ardour Manual
2013-01-29 19:26:36 -05:00
2013-01-31 05:55:17 -05:00
This is the project that generates the static ardour manual website available at [manual.ardour.org ](http://manual.ardour.org ).
2013-01-29 19:26:36 -05:00
2015-06-07 20:19:35 -04:00
The site is built using ruby (I use 1.9[.3]) and [liquid ](http://liquidmarkup.org/ ), a ruby gem.
2013-01-31 05:55:17 -05:00
### Get the code
2013-01-29 19:26:36 -05:00
2015-06-07 20:19:35 -04:00
git clone < repo-url > ardour-manual
2013-01-29 19:26:36 -05:00
cd ardour-manual
2015-06-07 20:19:35 -04:00
2013-01-31 12:32:30 -05:00
## Structure of the content
2013-01-29 19:26:36 -05:00
There are 2 different types of content:
2013-01-31 05:55:17 -05:00
- special `_manual` content
2013-01-29 19:26:36 -05:00
- normal content
2013-01-31 05:55:17 -05:00
### Special `_manual` content
2013-01-29 19:26:36 -05:00
This is content that ends up as part of the tree on the left.
2013-01-31 05:55:17 -05:00
The _raw_ content is in `_manual/` directory and has a naming convention as follows:
2013-01-29 19:26:36 -05:00
# content for a page at http://manual.ardour.org/< slug > /
< ordering > _< slug > .< html | md | textile >
^ ^ ^
| | |
| | extension is removed later
2015-06-07 20:19:35 -04:00
| |
2013-01-29 19:26:36 -05:00
| ends up as part of URL
|
only used for ordering
# a folder for subcontent is like this
< ordering > _< slug > /
# more things can then go in here for http://manual.ardour.org/< slug > /< slug2 > /
< ordering > _< slug > /< ordering2 > _< slug2 > .html
So, for example:
2013-01-31 05:55:17 -05:00
| this file | appears at url |
|--------------------------------------------------------|
| _manual/01_main.html | /main/ |
| _manual/01_main/01_subpage.html | /main/subpage/ |
2013-01-29 19:26:36 -05:00
2013-01-31 05:55:17 -05:00
### Normal content
2013-01-29 19:26:36 -05:00
This is anything else, css files, images, fixed pages, layouts. This content lives in the `source` directory.
2013-01-31 05:55:17 -05:00
If you added `source/images/horse.png` is would be available at the url `/images/horse.png` after publishing it.
Content processing is applied to normal content if it has the correct header as described below.
2013-01-29 19:26:36 -05:00
2013-01-31 05:55:17 -05:00
## Content processing
2013-01-29 19:26:36 -05:00
Three types of content can have special processing done.
2013-01-31 05:55:17 -05:00
- `.html` liquid/HTML files
- `.md` markdown files
- `.textile` textile files
2013-01-29 19:26:36 -05:00
2013-01-31 05:55:17 -05:00
All files to be processed should also have a special header at the top too:
2013-01-29 19:26:36 -05:00
---
layout: default
title: Some Very Wordy and Expressive Title
menu_title: Some Title
---
< p > My Actual Content< / p >
2015-06-07 20:19:35 -04:00
2013-01-31 05:55:17 -05:00
The `title` field will end up as an `h1` in the right panel. The `menu_title` is what is used in the menu tree on the left (if not preset it will default to using `title` ).
2015-06-07 20:19:35 -04:00
2013-01-31 05:55:17 -05:00
### `.html` files
These are almost normal html, but extended with [Liquid templates ](http://liquidmarkup.org/ ). There are a couple of special tags created for this project.
- `{% tree %}` is what shows the manual structure in the left column
- `{% children %}` shows the immediate list of children for a page
2013-01-31 12:32:30 -05:00
## More Advanced Stuff
You probably don't want or need to do any of this, but here are some
notes just in case you decide to anyway.
### Run it locally
2015-06-07 20:19:35 -04:00
You may want the manual available on a machine that doesn't have constant
internet access. You will need `git` , `ruby` , and the ruby gem `liquid` installed.
1. Download code and build manual
```
git clone < repo-url > ardour-manual
cd ardour-manual
cp -r source _site
ruby ./build.rb
chmod -R a+rx _site
```
2. open `ardour-manual/_site/index.html` in your favorite web browser
If this page doesn't open and function correctly, follow these optional steps to serve up the page with nginx.
3. Install [nginx ](http://wiki.nginx.org/Install )
4. Configure nginx server block in `/etc/nginx/sites-available/default`
```
server {
listen 80;
server_name localhost;
root ...path_to_.../ardour-manual/_site;
index index.html;
}
```
5. Restart nginx server
service nginx restart
6. The manual will now be available at http://localhost
2013-01-31 12:32:30 -05:00
### manual.rb plugin
2013-01-31 05:55:17 -05:00
2015-06-07 20:19:35 -04:00
Much of the functionality comes from `_plugins/manual.rb` - it takes the _manual format_ (contained in `_manual/` ) and mushes it around a bit into a tmp directory.
2013-01-31 05:55:17 -05:00
This is to enable the directory tree to be understood, child page lists to be constructed, clean URLs, and the correct ordering of pages maintained.
### Clean URLs
To allow the clean URLs (no `.html` extension) _and_ to support simple hosting (no `.htaccess` or apache configuration required) each page ends up in it's own directory with an `index.html` page for the content.
E.g. `02_main/05_more/02_blah.html` after all processing is complete would end up in `_site/main/more/blah/index.html` .
2015-06-07 20:19:35 -04:00
The page format contained in the `_manual/` directory is different to the final rendered output (see special `_manual` content above) to make it simple to create content (you don't need to think about the `index.html` files).
2013-01-31 05:55:17 -05:00
2013-01-29 19:26:36 -05:00