csgen/README.md

97 lines
3 KiB
Markdown
Executable file

# CoolSiteGENerator
csgen stands for CoolSiteGEnerator and as the name implies it is a site generator that
generates pages on-the-fly.
## Features
- Articles are written in Markdown, with extra powerful csgen markup
- Very customizable, minimal but modern UI with very little JavaScript
- Account system, including administrators, moderators and registering
- Comments
- GPL licensed (no proprietary software here)
## Dependencies
- php
- sqlite3
- php-mbstring
- Web server
- On Gentoo, you'll need to enable USE flag `sqlite` for package `dev-lang/php`
in case you're testing locally using `php -S`.
- On Debian, you'll need to install the appropriate Apache
plugin if you want to use Apache.
## Installation
1. Set up a web server with php and sqlite3
2. Point it to `index.php`
3. Make sure users cannot access the database or any of the config files (See docs/apache-sample.conf for an example)
When no admin account is set up, you'll be prompted to create one.
## Configuration
See config.def.ini.
## csgen syntax
csgen supports special syntax. This syntax should be entered in the
Markdown document and it can be at any point.
- `@csgen.title = "myTitleHere";`
- `@csgen.description = "myDescriptionHere";`
- `@csgen.favicon = "myFaviconHere";`
- `@csgen.date = "myDateHere";`
- `@csgen.license = "myLicenseHere";`
- `@csgen.displayTitle = "true";`
- `@csgen.displayDate = "true";`
- `@csgen.displaySource = "true";`
- `@csgen.displayLicense = "true";`
- `@csgen.displayAuthors = "true"`
- `@csgen.enableComments = "true";`
- `@csgen.addAuthor = "one author here";`
- `@csgen.author = "author1|author2|author3";`
- `@csgen.addTag = "one tag here";`
- `@csgen.tag = "tag1|tag2|tag3";`
- `@csgen.markAsFeed = "false";`
- `@csgen.includePage = "/blog/my-awesome-blog-post";`
- `@csgen.redirectTo = "/blog/rss.xml";`
- `@csgen.span<STYLE, TEXT>("color: #0000ff;", "thisIsRedText");`
- `@csgen.span<STYLE, HTML>("color: #0000ff;", "<p>thisIsARedHTMLTag</p>");`
- `@csgen.inline<HTML>("<small>myHtmlHere</small>");`
- `@csgen.inline<CSS>("h1 { color: #0000ff; }");`
- `@csgen.inline<JAVASCRIPT>("alert('Hello world!');");`
- `@csgen.image<SIZE, PATH>("1920x1080", "/attachments/image.png");`
- `@csgen.div<START, NAME>("myFirstDiv");`
- `@csgen.div<END, NAME>("myFirstDiv");`
- `@csgen.div<STYLE, NAME>("text-align: left;", "myFirstDiv");`
- `@csgen.include<HTML>("/attachments/index.html");`
- `@csgen.include<CSS>("/attachments/index.css");`
- `@csgen.include<JAVASCRIPT>("/attachments/index.js");`
There are also special csgen reserved endpoints. These are:
- `/`
- The root document.
- `/_head`
- The header text.
- `/_foot`
- The footer text.
- `/_list`
- Additional items to prepend to the menu.
- `/_404`
- The error to display when no page was found for the endpoint.
- `/_css`
- Stylesheet to append.
- `/_js`
- JavaScript to append.
## License
GNU Affero General Public License version 3.0. See `LICENSE` for details.
The font included is called Noto Sans, and is licensed under the SIL Open
Font License. See `OFL.txt` for copyright details.