summaryrefslogtreecommitdiff
path: root/ikiwiki/website.mdwn
blob: d6b0711c29791f01620e4dae2429e12535d8edb0 (plain)

Ikiwiki for regular websites

[[Ikiwiki]] can be used to administrate regular websites.

Introduction

Websites built with ikiwiki is more complex than plain static websites, but simpler than most web-based content management systems (CMS).

One of the benefits over using static webpages is that text content can be edited independent of the webdesign. This means, that...

  • The editor (e.g. owner of the website or a secretary) need not bother the web designer with text-only changes.
  • The editor can start adding text content even before the visual design is finalized.

One of the benefits compared to using most other CMS or wiki engines is that most pages are served as static html.

Roles

Wiki sites classically is public. Anyone can both read the site and edit its pages.

A regular website is meant to only be edited by som website administrator.

Ikiwiki offers the possibility to separate different administration tasks. You need not be a webdesigner to edit text content, and you need not be limited by the user-friendly text editing interface as a web designer.

[[graph height=8 width=8 src=""" { /* roles */ reader [shape=house, label="Reader"] editor [shape=house, label="Editor"] designer [shape=house, label="Designer"] {rank=same; reader editor designer}

/* targets */
webpages_static [label="website"]
webpages_wiki [label="admin website"]
{rank=same; webpages_static webpages_wiki}

/* input data */
txt [shape=plaintext, label="text"]
media [shape=plaintext, label="graphics"]
tmpl [shape=plaintext, label="templates"]
{rank=same; txt tmpl media}

iki_engine [shape=box, label="web engine"]

/* paths */
reader -> webpages_static [dir=back]
editor -> txt -> iki_engine -> webpages_wiki
designer -> media -> iki_engine
designer -> tmpl -> iki_engine
iki_engine -> webpages_static

} """]]

Reader

The reader gets served a static website:

[[graph height=8 width=8 src=""" { reader [shape=house, label="Reader"]

webpages_static [label="static pages"]

reader -> webpages_static

} """]]

The website can have a search routine added.

The reader then interacts both with static pages and with a search engine, dynamically generating search result pages:

[[graph height=8 width=8 src=""" { reader [shape=house, label="Reader"]

/* targets */
webpages_static [label="static pages"]
webpages_searchresult [label="search results", style=dotted]
{rank=same; webpages_static webpages_searchresult}

search_query [shape=plaintext, label="search query"]

search_db [shape=box, label="search index"]

/* paths */
reader -> webpages_static
reader -> search_query -> search_db -> webpages_searchresult

} """]]

Editor

In addition to the main website, an additional website is generated, with the main feature of Ikiwiki - [[wiki]]-like text editing - enabled:

[[graph height=8 width=8 src=""" { editor [shape=house, label="Editor"]

webpages_wiki [label="wiki pages"]

content_form [shape=plaintext, label="edit form"]

/* stored data */
txt_stored [shape=box, label="text content"]
media_stored [shape=box, label="graphics files"]
tmpl_stored [shape=box, label="html templates"]
{rank=same; txt_stored media_stored tmpl_stored}

/* paths */
editor -> webpages_wiki
editor -> content_form -> txt_stored -> webpages_wiki
media_stored -> webpages_wiki
tmpl_stored -> webpages_wiki

} """]]

Whenever the wiki pages are edited, the static pages are also rebuilt:

[[graph height=8 width=8 src=""" { /* roles */ editor [shape=house, label="Editor"]

/* targets */
webpages_static [label="static pages"]
webpages_wiki [label="wiki pages"]
{rank=same; webpages_static webpages_wiki}

/* input data */
content_form [shape=plaintext, label="edit form"]

/* stored data */
txt_stored [shape=box, label="text content"]
media_stored [shape=box, label="graphics files"]
tmpl_stored [shape=box, label="html templates"]
{rank=same; txt_stored media_stored tmpl_stored}

iki_engine [shape=box, label="html renderer (ikiwiki)"]

/* paths */
editor -> content_form -> txt_stored -> iki_engine -> webpages_wiki
media_stored -> iki_engine
tmpl_stored -> iki_engine
iki_engine -> webpages_static

} """]]

All

Here's a graph of the interaction between the various parts of ikiwiki itself and different kinds of users:

[[graph height=8 width=8 src=""" { // rankdir=LR // rotate=90 center=1

/* roles */
reader [shape=house, label="Reader"]
editor [shape=house, label="Editor"]
designer [shape=house, label="Designer"]
{rank=same; reader editor designer}

/* targets */
webpages [label="static pages"]
webpages_wiki [label="wiki pages"]
webpages_searchresult [label="search results", style=dotted]
{rank=same; webpages webpages_wiki webpages_searchresult}

/* input data */
search_query [shape=plaintext, label="search query"]
txt_editor [shape=plaintext, label="Markdown text"]
txt_designer [shape=plaintext, label="Markdown text"]
media [shape=plaintext, label="graphics files"]
tmpl [shape=plaintext, label="html templates"]

// {rank=same; search_query txt_editor txt_designer tmpl media}

/* user tool */
browser_reader [label="web browser"]
browser_editor [label="web browser"]
browser_designer [label="web browser"]
vcs_txt_local [shape=egg, label="Git repository"]
vcs_tmpl_local [shape=egg, label="Git repository"]
fs_local [shape=egg, label="filesystem"]

/* user interface */
txt_form [shape=box, label="web text editor (ikiwiki)"]
search_form [shape=box, label="search form (ikiwiki)"]
{rank=same; search_form txt_form}

/* storage types */
search_db [shape=egg, label="search index (Hyper Estraier)"]
vcs_txt [shape=egg, label="VCS repository (Git)"]
vcs_tmpl [shape=egg, label="VCS repository (Git)"]
fs [shape=egg, label="filesystem"]

// {rank=same; search_db vcs_txt vcs_tmpl fs}

/* stored data */
txt_stored [shape=plaintext, label="version-controlled Markdown text"]
media_stored [shape=plaintext, label="graphics files"]
tmpl_stored [shape=plaintext, label="version-controlled html templates"]

// {rank=same; txt_stored media_stored tmpl_stored}

/* engines */
iki_engine [shape=box, label="html renderer (Ikiwiki)"]
search_engine [shape=box, label="search engine (Hyper Estraier)"]
{rank=same; iki_engine search_engine}

/* groupings */
subgraph cluster_clitools {
	label="commandline editing"
	style=dashed
	txt_designer
	tmpl
	media
	vcs_tmpl_local
	vcs_txt_local
	fs_local
}
subgraph cluster_webtools {
	label="web editing"
	style=dashed
	txt_editor
	search_query
	{
		rank=same
		browser_reader
		browser_editor
		browser_designer
	}
}
subgraph cluster_storage {
	label="server storage"
	style=dashed
	vcs_tmpl
	vcs_txt
	fs
	search_db
	txt_stored
	tmpl_stored
	media_stored
}

/* paths */

reader -> search_query -> browser_reader -> search_form -> search_engine -> webpages_searchresult
search_db -> search_engine
search_db -> iki_engine [dir=back]

editor -> txt_editor -> browser_editor -> txt_form -> vcs_txt -> txt_stored -> iki_engine -> webpages
iki_engine -> webpages_wiki

designer -> txt_designer -> browser_designer -> txt_form
txt_designer -> vcs_txt_local

vcs_txt_local -> vcs_txt [dir=both]

designer -> tmpl -> vcs_tmpl_local
vcs_tmpl_local -> vcs_tmpl [dir=both]
vcs_tmpl -> tmpl_stored -> iki_engine

designer -> media -> fs_local
fs_local -> fs [dir=both]
fs -> media_stored -> iki_engine

} """]]


See also the simpler graphs focusing on [[roles|ikiroles]] and on the [[design|ikidesign]].