perkeep/doc/publishing
Attila Tajti c275aed960 doc: explain how publisher paths work with permanodes
Change-Id: I7ddf1c5f2bc93961fbadba978e65819c0bdf5b24
2017-01-18 18:51:08 +01:00
..
README.md doc: explain how publisher paths work with permanodes 2017-01-18 18:51:08 +01:00

README.md

Publishing

Camlistore delegates publishing to the publisher server application, which uses Go html templates (http://golang.org/pkg/text/template/) to publish pages.

Resources for publishing, such as go templates, javascript and css files should be placed in the application source directory - app/publisher/ - so they can be served directly when using the dev server or automatically embedded in production.

You should then specify the Go template to be used through the configuration file. The CSS files are automatically all available to the app. For example, there already is a go template (gallery.html), and css file (pics.css) that work together to provide publishing for image galleries. The dev server config (config/dev-server-config.json) already uses them. Here is how one would configure publishing for an image gallery in the server config ($HOME/.config/camlistore/server-config.json):

"publish": {
  "/pics/": {
    "camliRoot": "mypics",
    "cacheRoot": "/home/joe/var/camlistore/blobs/cache",
    "goTemplate": "gallery.html"
  }
}

For this to work you need a single permanode with an attribute "camliRoot" set to "mypics" which will serve as the root node for publishing.

Suppose you want to publish two permanodes as "foo" and "bar". The root node needs the following atributes:

camliRoot = mypics // must match server-config.json
camilPath:foo = sha1-foo
camliPath:bar = sha1-bar

where sha1-foo (and sha1-bar) is either a permanode with some camliContent, or a permanode with some camliMembers.

This will serve content at the publisher root http(s)://«camlihost:port»/pics/ but note that publisher hides the contents of the root path. Keeping with the example above, it would serve http(s)://«camlihost:port»/pics/foo and http(s)://«camlihost:port»/pics/bar .

The parameters for setting up the app's process ("listen", "backendURL", and "apiHost") are derived from the Camlistore server's "listen", and "baseURL", but should the need arise (e.g. with a proxy setup) they can be specified as well. See serverconfig.Publish type for the details.

If you want to provide your own (Go) template, see camlistore.org/pkg/publish for the data structures and functions available to the template.