- Plugin repository for Nim Website Creator.
To update the available plugins go to <webpage>/plugins/repo
. NimWC will clone this repo to ensure, that the latest available plugins are shown.
To enable or disable a plugin go to <webpage>/plugins
. Only plugins installed at <webpage>/plugins/repo
will be available.
Plugins are loaded at compile time with macros, therefore it can take up to ~60 seconds to enable or disable a plugin. The interface will notify you, when the plugin is installed.
To make a plugin public accessible, you need to add it to the plugins.json
in this plugin repo.
Make a pull request where you have added your plugin data to the bottom of plugins.json
.
When you release a new version of your plugin, you need to increase the version in your own plugin repo file plugin.json
and in this repos file plugins.json
. Otherwise the users will not notice, that your have released a new version.
Create an instant backup file. Schedule continuously backups. Download backups.
You can access the plugin at /backup
.
A simple contact form for non-logged in users. The email will be sent to the info address specified in the config.cfg
file.
You can access the plugin at /contact
. This link can be added to the navbar manually.
Add mail elements containing subject, description and a date for sending the mail. Every 12th hour a cronjob will run to check, if it is time to send the mail.
All registered users will receive the email.
You can access the plugin at /mailer
. This link can be added to the navbar manually.
Anyone can register an account and get a user with user role "User". You can access the plugin at /register
. An email with an activation link will be sent to users.
Load predefined templates (database data, css, js and images) or save your current design to a template, which you can share.
You can access the plugin at /templates/settings
.
Switch between themes. Save custom themes from the browser.
You can access the plugin at /themes/settings
.
A plugin needs the following structure:
templates/
- html.tmpl (optional)
- templates.nim (required)
- routes.nim (required)
- plugin.json (required)
- public/
- js.js (required) <- Will be appended to all pages
- style.css (required) <- Will be appended to all pages
- js_private.js (required) <- Needs to be imported manually
- style_private.css (required) <- Needs to be imported manually
This file contains information about the plugin.
The file needs this formatting:
[
{
"name": "Templates",
"foldername": "templates",
"version": "0.1",
"requires": "5.0",
"url": "https://github.com/ThomasTJdev/nimwc_templates.git",
"method": "git",
"tags": [
"templates"
],
"description": "Full templates. Includes database, css, js and other public files.",
"license": "MIT",
"web": "https://github.com/ThomasTJdev/nimwc_templates",
"sustainability": "",
"email": "user@example.com"
}
]
"name"
Plugin Name, Human Readable, string type, no empty string, no trailing whitespaces."foldername"
Folder Name, Human Readable, string type, no empty string, no trailing whitespaces."version"
Plugin Version as a Float, Human Readable, string type, no empty string, no trailing whitespaces."requires"
Minimum NimWc Version as a Float,>= 5.0
, Human Readable, string type, no empty string, no trailing whitespaces."url"
Git clone URL, HTTPS preferred, must be OnLine, Human Readable, string type, no empty string, no trailing whitespaces."method"
Must be"git"
"tags"
Plugin Tags, Human Readable, Array of strings, no empty Array, no empty strings, no trailing whitespaces, will be used to display Rendered Tag cloud on Plugin Store, 10 Tags max."description"
Plugin Description, Human Readable, string type, can be MarkDown/ResTructuredText/Plain Text, will be used to display Rendered HTML on Plugin Store, no empty string, no trailing whitespaces."license"
Plugin License, Human Readable, Not an HTTP link, string type, no empty string, no trailing whitespaces."web"
Plugin Web home page, HTTPS preferred, must be OnLine, can be a GitHub/GitLab Pages, Human Readable, string type, no empty string, no trailing whitespaces."email"
Plugin Authors EMail, Human Readable, string type, will be used to display Libravatar/Gravatar on Plugin Store, you can use it to display your Logo of your Freelancing/Cooperative on Plugin Store, can be empty string, no trailing whitespaces."sustainability"
Plugin Authors way to Self-Sustainable Development, eg Patreon, Liberapay, Bitcoin Address, etc, will be used to display on Plugin Store, HTTPS preferred, string type, can be empty string, no trailing whitespaces. We would love to make Open Source Self-Sustainable, will you help us?.
Includes the plugins proc()'s etc.
It is required to include a proc named proc <pluginname>Start*(db: DbConn) =
For the templates plugin this would be: proc templatesStart*(db: DbConn) =
. If this proc is not needed, just discard
the content.
Includes the URL routes.
It is required to include a route with /<pluginname>/settings
. This page should show information about the plugin and any options which can be changed.
At compile time js.js
, js_private.js
, style.css
and style_private.css
are copied from the plugins public folder to the official public folder, if the files contains text.
The files will be renamed to templates.js
and templates_private.js
The files will be renamed to templates.css
and templates_private.css
.
A <link>
and/or a <script>
tag to templates.css
/templates.js
will be appended to the all pages, if js.js
or style.css
contains text.
The *_private
files needs to be included manually.
- This repo includes a JSON Checker for consistency.
- All JSON keys and values are checked.
- Compile with SSL
-d:ssl
to check On-Line using Internet, optional.
$ nim c -r -d:ssl check_json.nim
[Suite] Packages consistency testing
[OK] Check Basic Structure
[OK] Check Tags
[OK] Check Methods
[OK] Check Licenses
[OK] Check Names
[OK] Check Versions
[OK] Check Requires
[OK] Check Foldernames
[OK] Check Webs Off-Line
D, [2019-03-06T16:12:32] -- check_json: https://github.com/thomastjdev/nimwc_backup
D, [2019-03-06T16:12:33] -- check_json: https://github.com/thomastjdev/nimwc_contact
D, [2019-03-06T16:12:34] -- check_json: https://github.com/thomastjdev/nimwc_mailer
D, [2019-03-06T16:12:35] -- check_json: https://github.com/thomastjdev/nimwc_openregistration
D, [2019-03-06T16:12:35] -- check_json: https://github.com/thomastjdev/nimwc_templates
D, [2019-03-06T16:12:36] -- check_json: https://github.com/thomastjdev/nimwc_themes
[OK] Check Webs On-Line
[OK] Check Sustainability On-Line
[OK] Check URLs Off-Line
D, [2019-03-06T16:12:36] -- check_json: https://github.com/thomastjdev/nimwc_backup.git
D, [2019-03-06T16:12:37] -- check_json: https://github.com/thomastjdev/nimwc_backup.git
D, [2019-03-06T16:12:38] -- check_json: https://github.com/thomastjdev/nimwc_contact.git
D, [2019-03-06T16:12:38] -- check_json: https://github.com/thomastjdev/nimwc_contact.git
D, [2019-03-06T16:12:39] -- check_json: https://github.com/thomastjdev/nimwc_mailer.git
D, [2019-03-06T16:12:40] -- check_json: https://github.com/thomastjdev/nimwc_mailer.git
D, [2019-03-06T16:12:40] -- check_json: https://github.com/thomastjdev/nimwc_openregistration.git
D, [2019-03-06T16:12:41] -- check_json: https://github.com/thomastjdev/nimwc_openregistration.git
D, [2019-03-06T16:12:42] -- check_json: https://github.com/thomastjdev/nimwc_templates.git
D, [2019-03-06T16:12:43] -- check_json: https://github.com/thomastjdev/nimwc_templates.git
D, [2019-03-06T16:12:44] -- check_json: https://github.com/thomastjdev/nimwc_themes.git
D, [2019-03-06T16:12:44] -- check_json: https://github.com/thomastjdev/nimwc_themes.git
[OK] Check URLs On-Line
$