From eaeb88401d07687eb3db8c273f7a4c0ed31ec153 Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Mon, 4 Jan 2021 13:07:44 +0100 Subject: [PATCH 1/4] Move docs into subdirectory to make mkdocs work in a subdirectory Signed-off-by: Tilman Vatteroth --- README.md | 2 +- docs/{ => content}/configuration.md | 4 +-- docs/{ => content}/dev/api.md | 4 +-- docs/content/dev/documentation.md | 27 ++++++++++++++++++ docs/{ => content}/dev/getting-started.md | 4 +-- docs/{ => content}/dev/openapi.yml | 0 docs/{ => content}/dev/ot.md | 0 docs/{ => content}/dev/webpack.md | 0 docs/{ => content}/guides/auth/github.md | 0 .../guides/auth/gitlab-self-hosted.md | 0 docs/{ => content}/guides/auth/keycloak.md | 0 docs/{ => content}/guides/auth/ldap-ad.md | 0 .../guides/auth/mattermost-self-hosted.md | 0 docs/{ => content}/guides/auth/nextcloud.md | 0 docs/{ => content}/guides/auth/oauth.md | 0 .../guides/auth/saml-keycloak.md | 0 .../guides/auth/saml-onelogin.md | 0 docs/{ => content}/guides/auth/saml.md | 0 docs/{ => content}/guides/auth/twitter.md | 0 docs/{ => content}/guides/migrate-etherpad.md | 0 .../guides/migrations-and-breaking-changes.md | 0 .../guides/minio-image-upload.md | 0 docs/{ => content}/guides/providing-terms.md | 0 docs/{ => content}/guides/s3-image-upload.md | 2 +- docs/{ => content}/history.md | 0 .../images/auth/application-page.png | Bin .../images/auth/create-oauth-app.png | Bin .../images/auth/create-twitter-app.png | Bin .../auth/gitlab-application-details.png | Bin .../images/auth/gitlab-new-application.png | Bin .../images/auth/gitlab-sign-in.png | Bin .../images/auth/keycloak_add_client.png | Bin .../images/auth/keycloak_client_overview.png | Bin .../images/auth/keycloak_clients_overview.png | Bin .../images/auth/keycloak_force_idformat.png | Bin .../images/auth/keycloak_idp_cert.png | Bin .../images/auth/keycloak_mapper_email.png | Bin .../images/auth/keycloak_mapper_overview.png | Bin .../images/auth/keycloak_mapper_username.png | Bin .../images/auth/keycloak_saml_export_cert.png | Bin .../keycloak_saml_export_cert_details.png | Bin .../images/auth/keycloak_saml_import_cert.png | Bin .../keycloak_saml_import_cert_details.png | Bin .../images/auth/mattermost-enable-oauth2.png | Bin .../images/auth/mattermost-oauth-app-add.png | Bin .../images/auth/mattermost-oauth-app-done.png | Bin .../images/auth/mattermost-oauth-app-form.png | Bin .../auth/nextcloud-oauth2-1-settings.png | Bin .../auth/nextcloud-oauth2-2-client-add.png | Bin .../nextcloud-oauth2-3-clientid-secret.png | Bin .../images/auth/onelogin-add-app.png | Bin .../auth/onelogin-copy-idp-metadata.png | Bin .../images/auth/onelogin-edit-app-name.png | Bin .../images/auth/onelogin-edit-sp-metadata.png | Bin .../images/auth/onelogin-select-template.png | Bin .../images/auth/onelogin-use-dashboard.png | Bin .../auth/register-oauth-application-form.png | Bin .../auth/register-twitter-application.png | Bin .../images/auth/twitter-app-confirmation.png | Bin .../images/auth/twitter-app-keys.png | Bin docs/content/images/favicon.png | Bin 0 -> 605 bytes .../images/hedgedoc_logo_horizontal.svg | 1 + docs/content/images/logo.svg | 1 + .../minio-image-upload/create-bucket.png | Bin .../minio-image-upload/create-policy.png | Bin .../minio-image-upload/default-view.png | Bin .../images/minio-image-upload/docker-logs.png | Bin .../minio-image-upload/open-edit-policy.png | Bin .../s3-image-upload/bucket-policy-editor.png | Bin .../s3-image-upload/bucket-property.png | Bin .../images/s3-image-upload/create-bucket.png | Bin .../images/s3-image-upload/custom-policy.png | Bin .../images/s3-image-upload/iam-user.png | Bin .../images/s3-image-upload/review-policy.png | Bin docs/{ => content}/index.md | 4 +-- .../legal/developer-certificate-of-origin.txt | 0 docs/{ => content}/setup/cloudron.md | 0 .../{ => content}/setup/docker-linuxserver.md | 2 +- docs/{ => content}/setup/docker.md | 0 docs/{ => content}/setup/heroku.md | 0 docs/{ => content}/setup/kubernetes.md | 0 docs/{ => content}/setup/manual-setup.md | 0 docs/{ => content}/setup/reverse-proxy.md | 0 docs/{ => content}/setup/yunohost.md | 0 docs/{ => content}/slide-options.md | 0 docs/content/theme/styles/hedgedoc-color.css | 14 +++++++++ docs/{ => content}/url-scheme.md | 0 docs/dev/documentation.md | 27 ------------------ docs/images/HedgeDoc-1.7.0-features.png | 1 - docs/images/favicon.png | 1 - docs/images/hedgedoc_logo_horizontal.png | Bin 28513 -> 0 bytes docs/images/logo.png | 1 - mkdocs.yml => docs/mkdocs.yml | 12 +++++--- .../requirements.txt | 0 94 files changed, 62 insertions(+), 45 deletions(-) rename docs/{ => content}/configuration.md (98%) rename docs/{ => content}/dev/api.md (96%) create mode 100644 docs/content/dev/documentation.md rename docs/{ => content}/dev/getting-started.md (94%) rename docs/{ => content}/dev/openapi.yml (100%) rename docs/{ => content}/dev/ot.md (100%) rename docs/{ => content}/dev/webpack.md (100%) rename docs/{ => content}/guides/auth/github.md (100%) rename docs/{ => content}/guides/auth/gitlab-self-hosted.md (100%) rename docs/{ => content}/guides/auth/keycloak.md (100%) rename docs/{ => content}/guides/auth/ldap-ad.md (100%) rename docs/{ => content}/guides/auth/mattermost-self-hosted.md (100%) rename docs/{ => content}/guides/auth/nextcloud.md (100%) rename docs/{ => content}/guides/auth/oauth.md (100%) rename docs/{ => content}/guides/auth/saml-keycloak.md (100%) rename docs/{ => content}/guides/auth/saml-onelogin.md (100%) rename docs/{ => content}/guides/auth/saml.md (100%) rename docs/{ => content}/guides/auth/twitter.md (100%) rename docs/{ => content}/guides/migrate-etherpad.md (100%) rename docs/{ => content}/guides/migrations-and-breaking-changes.md (100%) rename docs/{ => content}/guides/minio-image-upload.md (100%) rename docs/{ => content}/guides/providing-terms.md (100%) rename docs/{ => content}/guides/s3-image-upload.md (97%) rename docs/{ => content}/history.md (100%) rename docs/{ => content}/images/auth/application-page.png (100%) rename docs/{ => content}/images/auth/create-oauth-app.png (100%) rename docs/{ => content}/images/auth/create-twitter-app.png (100%) rename docs/{ => content}/images/auth/gitlab-application-details.png (100%) rename docs/{ => content}/images/auth/gitlab-new-application.png (100%) rename docs/{ => content}/images/auth/gitlab-sign-in.png (100%) rename docs/{ => content}/images/auth/keycloak_add_client.png (100%) rename docs/{ => content}/images/auth/keycloak_client_overview.png (100%) rename docs/{ => content}/images/auth/keycloak_clients_overview.png (100%) rename docs/{ => content}/images/auth/keycloak_force_idformat.png (100%) rename docs/{ => content}/images/auth/keycloak_idp_cert.png (100%) rename docs/{ => content}/images/auth/keycloak_mapper_email.png (100%) rename docs/{ => content}/images/auth/keycloak_mapper_overview.png (100%) rename docs/{ => content}/images/auth/keycloak_mapper_username.png (100%) rename docs/{ => content}/images/auth/keycloak_saml_export_cert.png (100%) rename docs/{ => content}/images/auth/keycloak_saml_export_cert_details.png (100%) rename docs/{ => content}/images/auth/keycloak_saml_import_cert.png (100%) rename docs/{ => content}/images/auth/keycloak_saml_import_cert_details.png (100%) rename docs/{ => content}/images/auth/mattermost-enable-oauth2.png (100%) rename docs/{ => content}/images/auth/mattermost-oauth-app-add.png (100%) rename docs/{ => content}/images/auth/mattermost-oauth-app-done.png (100%) rename docs/{ => content}/images/auth/mattermost-oauth-app-form.png (100%) rename docs/{ => content}/images/auth/nextcloud-oauth2-1-settings.png (100%) rename docs/{ => content}/images/auth/nextcloud-oauth2-2-client-add.png (100%) rename docs/{ => content}/images/auth/nextcloud-oauth2-3-clientid-secret.png (100%) rename docs/{ => content}/images/auth/onelogin-add-app.png (100%) rename docs/{ => content}/images/auth/onelogin-copy-idp-metadata.png (100%) rename docs/{ => content}/images/auth/onelogin-edit-app-name.png (100%) rename docs/{ => content}/images/auth/onelogin-edit-sp-metadata.png (100%) rename docs/{ => content}/images/auth/onelogin-select-template.png (100%) rename docs/{ => content}/images/auth/onelogin-use-dashboard.png (100%) rename docs/{ => content}/images/auth/register-oauth-application-form.png (100%) rename docs/{ => content}/images/auth/register-twitter-application.png (100%) rename docs/{ => content}/images/auth/twitter-app-confirmation.png (100%) rename docs/{ => content}/images/auth/twitter-app-keys.png (100%) create mode 100644 docs/content/images/favicon.png create mode 100644 docs/content/images/hedgedoc_logo_horizontal.svg create mode 100644 docs/content/images/logo.svg rename docs/{ => content}/images/minio-image-upload/create-bucket.png (100%) rename docs/{ => content}/images/minio-image-upload/create-policy.png (100%) rename docs/{ => content}/images/minio-image-upload/default-view.png (100%) rename docs/{ => content}/images/minio-image-upload/docker-logs.png (100%) rename docs/{ => content}/images/minio-image-upload/open-edit-policy.png (100%) rename docs/{ => content}/images/s3-image-upload/bucket-policy-editor.png (100%) rename docs/{ => content}/images/s3-image-upload/bucket-property.png (100%) rename docs/{ => content}/images/s3-image-upload/create-bucket.png (100%) rename docs/{ => content}/images/s3-image-upload/custom-policy.png (100%) rename docs/{ => content}/images/s3-image-upload/iam-user.png (100%) rename docs/{ => content}/images/s3-image-upload/review-policy.png (100%) rename docs/{ => content}/index.md (89%) rename docs/{ => content}/legal/developer-certificate-of-origin.txt (100%) rename docs/{ => content}/setup/cloudron.md (100%) rename docs/{ => content}/setup/docker-linuxserver.md (97%) rename docs/{ => content}/setup/docker.md (100%) rename docs/{ => content}/setup/heroku.md (100%) rename docs/{ => content}/setup/kubernetes.md (100%) rename docs/{ => content}/setup/manual-setup.md (100%) rename docs/{ => content}/setup/reverse-proxy.md (100%) rename docs/{ => content}/setup/yunohost.md (100%) rename docs/{ => content}/slide-options.md (100%) create mode 100644 docs/content/theme/styles/hedgedoc-color.css rename docs/{ => content}/url-scheme.md (100%) delete mode 100644 docs/dev/documentation.md delete mode 120000 docs/images/HedgeDoc-1.7.0-features.png delete mode 120000 docs/images/favicon.png delete mode 100644 docs/images/hedgedoc_logo_horizontal.png delete mode 120000 docs/images/logo.png rename mkdocs.yml => docs/mkdocs.yml (92%) rename mkdocs.requirements.txt => docs/requirements.txt (100%) diff --git a/README.md b/README.md index ba1a374cc..94aa81e81 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ It is inspired by Hackpad, Etherpad and similar collaborative editors. This project originated with the team at [HackMD](https://hackmd.io) and now forked into its own organisation. [A longer writeup can be read in the history doc](docs/history.md). -[![HedgeDoc 1.7.0 with its feature demonstration page open](docs/images/HedgeDoc-1.7.0-features.png)][hedgedoc-demo-features] +[![HedgeDoc 1.7.0 with its feature demonstration page open](public/screenshot.png)][hedgedoc-demo-features] ## Community and Contributions diff --git a/docs/configuration.md b/docs/content/configuration.md similarity index 98% rename from docs/configuration.md rename to docs/content/configuration.md index 438d84b32..f57d71789 100644 --- a/docs/configuration.md +++ b/docs/content/configuration.md @@ -4,9 +4,9 @@ You can choose to configure HedgeDoc with either a config file or with environme Environment variables take precedence over configurations from the config files. They generally start with `CMD_` for our own options, but we also list node-specific options you can configure this way. -- Environment variables are processed in [`lib/config/environment.js`](../lib/config/environment.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](../lib/config/default.js), in case you wonder if you even need to override it. +- Environment variables are processed in [`lib/config/environment.js`](https://github.com/hedgedoc/hedgedoc/tree/master/lib/config/environment.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](https://github.com/hedgedoc/hedgedoc/tree/master/lib/config/default.js), in case you wonder if you even need to override it. -- The config file is processed in [`lib/config/index.js`](../lib/config/index.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](../lib/config/default.js), in case you wonder if you even need to override it. To get started, it is a good idea to take the `config.json.example` and copy it +- The config file is processed in [`lib/config/index.js`](https://github.com/hedgedoc/hedgedoc/tree/master/lib/config/index.js) - so this is the first place to look if anything is missing not obvious from this document. The default values are defined in [`lib/config/default.js`](https://github.com/hedgedoc/hedgedoc/tree/master/lib/config/default.js), in case you wonder if you even need to override it. To get started, it is a good idea to take the `config.json.example` and copy it to `config.json` before filling in your own details. **Note:** *Due to the rename process we renamed all `HMD_`-prefix variables to be `CMD_`-prefixed. The old ones continue to work.* diff --git a/docs/dev/api.md b/docs/content/dev/api.md similarity index 96% rename from docs/dev/api.md rename to docs/content/dev/api.md index e89741d32..0700ecc36 100644 --- a/docs/dev/api.md +++ b/docs/content/dev/api.md @@ -11,14 +11,14 @@ You have to replace *\* with either the alias or id of a note you want to | ---------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `/new` | `GET` | **Creates a new note.**
A random id will be assigned and the content will equal to the template (blank by default). After note creation a redirect is issued to the created note. | | `/new` | `POST` | **Imports some markdown data into a new note.**
A random id will be assigned and the content will equal to the body of the received HTTP-request. The `Content-Type: text/markdown` header should be set on this request. | -| `/new/` | `POST` | **Imports some markdown data into a new note with a given alias.**
This endpoint equals to the above one except that the alias from the url will be assigned to the note if [FreeURL-mode](../configuration-env-vars.md#users-and-privileges) is enabled. | +| `/new/` | `POST` | **Imports some markdown data into a new note with a given alias.**
This endpoint equals to the above one except that the alias from the url will be assigned to the note if [FreeURL-mode](../configuration.md#users-and-privileges) is enabled. | | `//download` or `/s//download` | `GET` | **Returns the raw markdown content of a note.** | | `//publish` | `GET` | **Redirects to the published version of the note.** | | `//slide` | `GET` | **Redirects to the slide-presentation of the note.**
This is only useful on notes which are designed to be slides. | | `//info` | `GET` | **Returns metadata about the note.**
This includes the title and description of the note as well as the creation date and viewcount. The data is returned as a JSON object. | | `//revision` | `GET` | **Returns a list of the available note revisions.**
The list is returned as a JSON object with an array of revision-id and length associations. The revision-id equals to the timestamp when the revision was saved. | | `//revision/` | `GET` | **Returns the revision of the note with some metadata.**
The revision is returned as a JSON object with the content of the note and the authorship. | -| `//gist` | `GET` | **Creates a new GitHub Gist with the note's content.**
If [GitHub integration](../configuration-env-vars.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created. | +| `//gist` | `GET` | **Creates a new GitHub Gist with the note's content.**
If [GitHub integration](../configuration.md#github-login) is configured, the user will be redirected to GitHub and a new Gist with the content of the note will be created. | ## User / History These endpoints return information about the current logged-in user and it's note history. If no user is logged-in, the most of this requests will fail with either a HTTP 403 or a JSON object containing `{"status":"forbidden"}`. diff --git a/docs/content/dev/documentation.md b/docs/content/dev/documentation.md new file mode 100644 index 000000000..0271792b1 --- /dev/null +++ b/docs/content/dev/documentation.md @@ -0,0 +1,27 @@ +# Documentation + +Our documentation is build with [mkdocs](https://www.mkdocs.org). + +## Writing + +All documentation files are found in the `docs/content` directory of the [hedgedoc/hedgedoc repo](https://github.com/hedgedoc/hedgedoc). These files are just normal markdown files with nothing special about them. + +The configuration for mkdocs lies in the `docs` folder in a file called `mkdocs.yml`. With that file the theme and menu - amoung others - can be configured. +**Please note:** Any new files need to be linked to by other files or put in the navigation or the files will be very hard to find on the documentation website. + +## Building + +To build the documentation locally you need to perform the following steps: + +0. Make sure you have python3 installed. +1. Go into the `docs` folder. +2. Install all the dependencies (E.g. with a [venv](https://docs.python.org/3/library/venv.html)) with `pip install -r requirements.txt` +3. Start the mkdocs dev server (`mkdocs serve`) or build the documentation (`mkdocs build`). + +## Deployment + +The documentation is deployed with [Messor Structor](https://github.com/traefik/structor). + +The necessary Dockerfile and version menu template and also the github action to build the whole documentation can be found in the [docs.hedgedoc.org repo](https://github.com/hedgedoc/docs.hedgedoc.org). This repo is also used to deploy the actuall website to github.io. + +Messor Structor builds and deploys the documentation by finding all branches that follow the pattern `v*`. For each branch the docs are generated separately by first installing the dependencies from `requirements.txt` and then running mkdocs. Afterwards the menu go template is used to include a version switcher in the theme. diff --git a/docs/dev/getting-started.md b/docs/content/dev/getting-started.md similarity index 94% rename from docs/dev/getting-started.md rename to docs/content/dev/getting-started.md index b77871175..b7154b05f 100644 --- a/docs/dev/getting-started.md +++ b/docs/content/dev/getting-started.md @@ -11,8 +11,8 @@ and create configs. The setup script is written in Bash, you would need bash as a prerequisite. -3. Setup the [config file](../configuration-config-file.md) or set up - [environment variables](../configuration-env-vars.md). +3. Setup the [config file](../configuration.md) or set up + [environment variables](../configuration.md). ## Running the Code diff --git a/docs/dev/openapi.yml b/docs/content/dev/openapi.yml similarity index 100% rename from docs/dev/openapi.yml rename to docs/content/dev/openapi.yml diff --git a/docs/dev/ot.md b/docs/content/dev/ot.md similarity index 100% rename from docs/dev/ot.md rename to docs/content/dev/ot.md diff --git a/docs/dev/webpack.md b/docs/content/dev/webpack.md similarity index 100% rename from docs/dev/webpack.md rename to docs/content/dev/webpack.md diff --git a/docs/guides/auth/github.md b/docs/content/guides/auth/github.md similarity index 100% rename from docs/guides/auth/github.md rename to docs/content/guides/auth/github.md diff --git a/docs/guides/auth/gitlab-self-hosted.md b/docs/content/guides/auth/gitlab-self-hosted.md similarity index 100% rename from docs/guides/auth/gitlab-self-hosted.md rename to docs/content/guides/auth/gitlab-self-hosted.md diff --git a/docs/guides/auth/keycloak.md b/docs/content/guides/auth/keycloak.md similarity index 100% rename from docs/guides/auth/keycloak.md rename to docs/content/guides/auth/keycloak.md diff --git a/docs/guides/auth/ldap-ad.md b/docs/content/guides/auth/ldap-ad.md similarity index 100% rename from docs/guides/auth/ldap-ad.md rename to docs/content/guides/auth/ldap-ad.md diff --git a/docs/guides/auth/mattermost-self-hosted.md b/docs/content/guides/auth/mattermost-self-hosted.md similarity index 100% rename from docs/guides/auth/mattermost-self-hosted.md rename to docs/content/guides/auth/mattermost-self-hosted.md diff --git a/docs/guides/auth/nextcloud.md b/docs/content/guides/auth/nextcloud.md similarity index 100% rename from docs/guides/auth/nextcloud.md rename to docs/content/guides/auth/nextcloud.md diff --git a/docs/guides/auth/oauth.md b/docs/content/guides/auth/oauth.md similarity index 100% rename from docs/guides/auth/oauth.md rename to docs/content/guides/auth/oauth.md diff --git a/docs/guides/auth/saml-keycloak.md b/docs/content/guides/auth/saml-keycloak.md similarity index 100% rename from docs/guides/auth/saml-keycloak.md rename to docs/content/guides/auth/saml-keycloak.md diff --git a/docs/guides/auth/saml-onelogin.md b/docs/content/guides/auth/saml-onelogin.md similarity index 100% rename from docs/guides/auth/saml-onelogin.md rename to docs/content/guides/auth/saml-onelogin.md diff --git a/docs/guides/auth/saml.md b/docs/content/guides/auth/saml.md similarity index 100% rename from docs/guides/auth/saml.md rename to docs/content/guides/auth/saml.md diff --git a/docs/guides/auth/twitter.md b/docs/content/guides/auth/twitter.md similarity index 100% rename from docs/guides/auth/twitter.md rename to docs/content/guides/auth/twitter.md diff --git a/docs/guides/migrate-etherpad.md b/docs/content/guides/migrate-etherpad.md similarity index 100% rename from docs/guides/migrate-etherpad.md rename to docs/content/guides/migrate-etherpad.md diff --git a/docs/guides/migrations-and-breaking-changes.md b/docs/content/guides/migrations-and-breaking-changes.md similarity index 100% rename from docs/guides/migrations-and-breaking-changes.md rename to docs/content/guides/migrations-and-breaking-changes.md diff --git a/docs/guides/minio-image-upload.md b/docs/content/guides/minio-image-upload.md similarity index 100% rename from docs/guides/minio-image-upload.md rename to docs/content/guides/minio-image-upload.md diff --git a/docs/guides/providing-terms.md b/docs/content/guides/providing-terms.md similarity index 100% rename from docs/guides/providing-terms.md rename to docs/content/guides/providing-terms.md diff --git a/docs/guides/s3-image-upload.md b/docs/content/guides/s3-image-upload.md similarity index 97% rename from docs/guides/s3-image-upload.md rename to docs/content/guides/s3-image-upload.md index 740dec53b..3b0410669 100644 --- a/docs/guides/s3-image-upload.md +++ b/docs/content/guides/s3-image-upload.md @@ -70,7 +70,7 @@ } ``` -9. In additional to edit `config.json` directly, you could also try [environment variables](../configuration-env-vars.md). +9. In additional to edit `config.json` directly, you could also try [environment variables](../configuration.md). ## Related Tools diff --git a/docs/history.md b/docs/content/history.md similarity index 100% rename from docs/history.md rename to docs/content/history.md diff --git a/docs/images/auth/application-page.png b/docs/content/images/auth/application-page.png similarity index 100% rename from docs/images/auth/application-page.png rename to docs/content/images/auth/application-page.png diff --git a/docs/images/auth/create-oauth-app.png b/docs/content/images/auth/create-oauth-app.png similarity index 100% rename from docs/images/auth/create-oauth-app.png rename to docs/content/images/auth/create-oauth-app.png diff --git a/docs/images/auth/create-twitter-app.png b/docs/content/images/auth/create-twitter-app.png similarity index 100% rename from docs/images/auth/create-twitter-app.png rename to docs/content/images/auth/create-twitter-app.png diff --git a/docs/images/auth/gitlab-application-details.png b/docs/content/images/auth/gitlab-application-details.png similarity index 100% rename from docs/images/auth/gitlab-application-details.png rename to docs/content/images/auth/gitlab-application-details.png diff --git a/docs/images/auth/gitlab-new-application.png b/docs/content/images/auth/gitlab-new-application.png similarity index 100% rename from docs/images/auth/gitlab-new-application.png rename to docs/content/images/auth/gitlab-new-application.png diff --git a/docs/images/auth/gitlab-sign-in.png b/docs/content/images/auth/gitlab-sign-in.png similarity index 100% rename from docs/images/auth/gitlab-sign-in.png rename to docs/content/images/auth/gitlab-sign-in.png diff --git a/docs/images/auth/keycloak_add_client.png b/docs/content/images/auth/keycloak_add_client.png similarity index 100% rename from docs/images/auth/keycloak_add_client.png rename to docs/content/images/auth/keycloak_add_client.png diff --git a/docs/images/auth/keycloak_client_overview.png b/docs/content/images/auth/keycloak_client_overview.png similarity index 100% rename from docs/images/auth/keycloak_client_overview.png rename to docs/content/images/auth/keycloak_client_overview.png diff --git a/docs/images/auth/keycloak_clients_overview.png b/docs/content/images/auth/keycloak_clients_overview.png similarity index 100% rename from docs/images/auth/keycloak_clients_overview.png rename to docs/content/images/auth/keycloak_clients_overview.png diff --git a/docs/images/auth/keycloak_force_idformat.png b/docs/content/images/auth/keycloak_force_idformat.png similarity index 100% rename from docs/images/auth/keycloak_force_idformat.png rename to docs/content/images/auth/keycloak_force_idformat.png diff --git a/docs/images/auth/keycloak_idp_cert.png b/docs/content/images/auth/keycloak_idp_cert.png similarity index 100% rename from docs/images/auth/keycloak_idp_cert.png rename to docs/content/images/auth/keycloak_idp_cert.png diff --git a/docs/images/auth/keycloak_mapper_email.png b/docs/content/images/auth/keycloak_mapper_email.png similarity index 100% rename from docs/images/auth/keycloak_mapper_email.png rename to docs/content/images/auth/keycloak_mapper_email.png diff --git a/docs/images/auth/keycloak_mapper_overview.png b/docs/content/images/auth/keycloak_mapper_overview.png similarity index 100% rename from docs/images/auth/keycloak_mapper_overview.png rename to docs/content/images/auth/keycloak_mapper_overview.png diff --git a/docs/images/auth/keycloak_mapper_username.png b/docs/content/images/auth/keycloak_mapper_username.png similarity index 100% rename from docs/images/auth/keycloak_mapper_username.png rename to docs/content/images/auth/keycloak_mapper_username.png diff --git a/docs/images/auth/keycloak_saml_export_cert.png b/docs/content/images/auth/keycloak_saml_export_cert.png similarity index 100% rename from docs/images/auth/keycloak_saml_export_cert.png rename to docs/content/images/auth/keycloak_saml_export_cert.png diff --git a/docs/images/auth/keycloak_saml_export_cert_details.png b/docs/content/images/auth/keycloak_saml_export_cert_details.png similarity index 100% rename from docs/images/auth/keycloak_saml_export_cert_details.png rename to docs/content/images/auth/keycloak_saml_export_cert_details.png diff --git a/docs/images/auth/keycloak_saml_import_cert.png b/docs/content/images/auth/keycloak_saml_import_cert.png similarity index 100% rename from docs/images/auth/keycloak_saml_import_cert.png rename to docs/content/images/auth/keycloak_saml_import_cert.png diff --git a/docs/images/auth/keycloak_saml_import_cert_details.png b/docs/content/images/auth/keycloak_saml_import_cert_details.png similarity index 100% rename from docs/images/auth/keycloak_saml_import_cert_details.png rename to docs/content/images/auth/keycloak_saml_import_cert_details.png diff --git a/docs/images/auth/mattermost-enable-oauth2.png b/docs/content/images/auth/mattermost-enable-oauth2.png similarity index 100% rename from docs/images/auth/mattermost-enable-oauth2.png rename to docs/content/images/auth/mattermost-enable-oauth2.png diff --git a/docs/images/auth/mattermost-oauth-app-add.png b/docs/content/images/auth/mattermost-oauth-app-add.png similarity index 100% rename from docs/images/auth/mattermost-oauth-app-add.png rename to docs/content/images/auth/mattermost-oauth-app-add.png diff --git a/docs/images/auth/mattermost-oauth-app-done.png b/docs/content/images/auth/mattermost-oauth-app-done.png similarity index 100% rename from docs/images/auth/mattermost-oauth-app-done.png rename to docs/content/images/auth/mattermost-oauth-app-done.png diff --git a/docs/images/auth/mattermost-oauth-app-form.png b/docs/content/images/auth/mattermost-oauth-app-form.png similarity index 100% rename from docs/images/auth/mattermost-oauth-app-form.png rename to docs/content/images/auth/mattermost-oauth-app-form.png diff --git a/docs/images/auth/nextcloud-oauth2-1-settings.png b/docs/content/images/auth/nextcloud-oauth2-1-settings.png similarity index 100% rename from docs/images/auth/nextcloud-oauth2-1-settings.png rename to docs/content/images/auth/nextcloud-oauth2-1-settings.png diff --git a/docs/images/auth/nextcloud-oauth2-2-client-add.png b/docs/content/images/auth/nextcloud-oauth2-2-client-add.png similarity index 100% rename from docs/images/auth/nextcloud-oauth2-2-client-add.png rename to docs/content/images/auth/nextcloud-oauth2-2-client-add.png diff --git a/docs/images/auth/nextcloud-oauth2-3-clientid-secret.png b/docs/content/images/auth/nextcloud-oauth2-3-clientid-secret.png similarity index 100% rename from docs/images/auth/nextcloud-oauth2-3-clientid-secret.png rename to docs/content/images/auth/nextcloud-oauth2-3-clientid-secret.png diff --git a/docs/images/auth/onelogin-add-app.png b/docs/content/images/auth/onelogin-add-app.png similarity index 100% rename from docs/images/auth/onelogin-add-app.png rename to docs/content/images/auth/onelogin-add-app.png diff --git a/docs/images/auth/onelogin-copy-idp-metadata.png b/docs/content/images/auth/onelogin-copy-idp-metadata.png similarity index 100% rename from docs/images/auth/onelogin-copy-idp-metadata.png rename to docs/content/images/auth/onelogin-copy-idp-metadata.png diff --git a/docs/images/auth/onelogin-edit-app-name.png b/docs/content/images/auth/onelogin-edit-app-name.png similarity index 100% rename from docs/images/auth/onelogin-edit-app-name.png rename to docs/content/images/auth/onelogin-edit-app-name.png diff --git a/docs/images/auth/onelogin-edit-sp-metadata.png b/docs/content/images/auth/onelogin-edit-sp-metadata.png similarity index 100% rename from docs/images/auth/onelogin-edit-sp-metadata.png rename to docs/content/images/auth/onelogin-edit-sp-metadata.png diff --git a/docs/images/auth/onelogin-select-template.png b/docs/content/images/auth/onelogin-select-template.png similarity index 100% rename from docs/images/auth/onelogin-select-template.png rename to docs/content/images/auth/onelogin-select-template.png diff --git a/docs/images/auth/onelogin-use-dashboard.png b/docs/content/images/auth/onelogin-use-dashboard.png similarity index 100% rename from docs/images/auth/onelogin-use-dashboard.png rename to docs/content/images/auth/onelogin-use-dashboard.png diff --git a/docs/images/auth/register-oauth-application-form.png b/docs/content/images/auth/register-oauth-application-form.png similarity index 100% rename from docs/images/auth/register-oauth-application-form.png rename to docs/content/images/auth/register-oauth-application-form.png diff --git a/docs/images/auth/register-twitter-application.png b/docs/content/images/auth/register-twitter-application.png similarity index 100% rename from docs/images/auth/register-twitter-application.png rename to docs/content/images/auth/register-twitter-application.png diff --git a/docs/images/auth/twitter-app-confirmation.png b/docs/content/images/auth/twitter-app-confirmation.png similarity index 100% rename from docs/images/auth/twitter-app-confirmation.png rename to docs/content/images/auth/twitter-app-confirmation.png diff --git a/docs/images/auth/twitter-app-keys.png b/docs/content/images/auth/twitter-app-keys.png similarity index 100% rename from docs/images/auth/twitter-app-keys.png rename to docs/content/images/auth/twitter-app-keys.png diff --git a/docs/content/images/favicon.png b/docs/content/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..80afec65c18fd83df7f0acc4e604d2f616f7e215 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMW0(?STw@ET>lK>({5GlzB^vNvTE)L{^MI@O1UY&h4&-Hw)IZ)HR zmWYfn+mG9u-X7|GF(+q_2G?;9HERO}CPu~$le0EW&Av1trOq+?4p1piNswRg|9g{T zj?LF#5O~uR@q=^c9H2O7fk$L90|ToA2s1iv-`5Cqn7F5lV~EA++Q~P?niY6l+__C| zb%{;a`~QC-@21YybHS5#HmR%ZaJ%T*)u;NTHAqx3K#1M5lxf9LPhDBYs}J0pgcewd zTv@>|rB>|(0pF}Q^@l34 z+3$I`v!3(4b8Dle;KBEIeY%VVYaX_n@h#=cpTYk&QMcsT>Ma&3LJPUO55M}GmofLB zetg`o{d)@k?yUUztDcePjBLODZNp!{a0{;ri6{w5ELSKf%1_J8NmVGREJ#(zEGS84 zV5pe$_!AFDVVH)-DgV=FJf8+JFe`KGC36ca3wuu%VHQ?!X)rmQ!mPYGMB(&}D<_Ve kIU;j}{d9xJ0xvy=SK@*tpPWpm01boFyt=akR{07{qc6951J literal 0 HcmV?d00001 diff --git a/docs/content/images/hedgedoc_logo_horizontal.svg b/docs/content/images/hedgedoc_logo_horizontal.svg new file mode 100644 index 000000000..387e2c03f --- /dev/null +++ b/docs/content/images/hedgedoc_logo_horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/content/images/logo.svg b/docs/content/images/logo.svg new file mode 100644 index 000000000..8e4071ea6 --- /dev/null +++ b/docs/content/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/minio-image-upload/create-bucket.png b/docs/content/images/minio-image-upload/create-bucket.png similarity index 100% rename from docs/images/minio-image-upload/create-bucket.png rename to docs/content/images/minio-image-upload/create-bucket.png diff --git a/docs/images/minio-image-upload/create-policy.png b/docs/content/images/minio-image-upload/create-policy.png similarity index 100% rename from docs/images/minio-image-upload/create-policy.png rename to docs/content/images/minio-image-upload/create-policy.png diff --git a/docs/images/minio-image-upload/default-view.png b/docs/content/images/minio-image-upload/default-view.png similarity index 100% rename from docs/images/minio-image-upload/default-view.png rename to docs/content/images/minio-image-upload/default-view.png diff --git a/docs/images/minio-image-upload/docker-logs.png b/docs/content/images/minio-image-upload/docker-logs.png similarity index 100% rename from docs/images/minio-image-upload/docker-logs.png rename to docs/content/images/minio-image-upload/docker-logs.png diff --git a/docs/images/minio-image-upload/open-edit-policy.png b/docs/content/images/minio-image-upload/open-edit-policy.png similarity index 100% rename from docs/images/minio-image-upload/open-edit-policy.png rename to docs/content/images/minio-image-upload/open-edit-policy.png diff --git a/docs/images/s3-image-upload/bucket-policy-editor.png b/docs/content/images/s3-image-upload/bucket-policy-editor.png similarity index 100% rename from docs/images/s3-image-upload/bucket-policy-editor.png rename to docs/content/images/s3-image-upload/bucket-policy-editor.png diff --git a/docs/images/s3-image-upload/bucket-property.png b/docs/content/images/s3-image-upload/bucket-property.png similarity index 100% rename from docs/images/s3-image-upload/bucket-property.png rename to docs/content/images/s3-image-upload/bucket-property.png diff --git a/docs/images/s3-image-upload/create-bucket.png b/docs/content/images/s3-image-upload/create-bucket.png similarity index 100% rename from docs/images/s3-image-upload/create-bucket.png rename to docs/content/images/s3-image-upload/create-bucket.png diff --git a/docs/images/s3-image-upload/custom-policy.png b/docs/content/images/s3-image-upload/custom-policy.png similarity index 100% rename from docs/images/s3-image-upload/custom-policy.png rename to docs/content/images/s3-image-upload/custom-policy.png diff --git a/docs/images/s3-image-upload/iam-user.png b/docs/content/images/s3-image-upload/iam-user.png similarity index 100% rename from docs/images/s3-image-upload/iam-user.png rename to docs/content/images/s3-image-upload/iam-user.png diff --git a/docs/images/s3-image-upload/review-policy.png b/docs/content/images/s3-image-upload/review-policy.png similarity index 100% rename from docs/images/s3-image-upload/review-policy.png rename to docs/content/images/s3-image-upload/review-policy.png diff --git a/docs/index.md b/docs/content/index.md similarity index 89% rename from docs/index.md rename to docs/content/index.md index fb6f2cb8d..df961b028 100644 --- a/docs/index.md +++ b/docs/content/index.md @@ -1,6 +1,6 @@ # Welcome to the HedgeDoc Documentation -![HedgeDoc Logo](images/hedgedoc_logo_horizontal.png) +![HedgeDoc Logo](images/hedgedoc_logo_horizontal.svg) HedgeDoc lets you create real-time collaborative markdown notes. You can test-drive it by visiting our [HedgeDoc demo server][hedgedoc-demo]. @@ -16,4 +16,4 @@ If you have any questions that aren't answered here, feel free to ask us on [Mat [hedgedoc-history]: https://hedgedoc.org/history [hedgedoc-faq]: https://hedgedoc.org/faq [matrix.org-url]: https://chat.hedgedoc.org -[hedgedoc-community]: https://community.hedgedoc.org \ No newline at end of file +[hedgedoc-community]: https://community.hedgedoc.org diff --git a/docs/legal/developer-certificate-of-origin.txt b/docs/content/legal/developer-certificate-of-origin.txt similarity index 100% rename from docs/legal/developer-certificate-of-origin.txt rename to docs/content/legal/developer-certificate-of-origin.txt diff --git a/docs/setup/cloudron.md b/docs/content/setup/cloudron.md similarity index 100% rename from docs/setup/cloudron.md rename to docs/content/setup/cloudron.md diff --git a/docs/setup/docker-linuxserver.md b/docs/content/setup/docker-linuxserver.md similarity index 97% rename from docs/setup/docker-linuxserver.md rename to docs/content/setup/docker-linuxserver.md index 1f2597f6c..33302f55f 100644 --- a/docs/setup/docker-linuxserver.md +++ b/docs/content/setup/docker-linuxserver.md @@ -12,7 +12,7 @@ [LinuxServer.io](https://linuxserver.io) have created an Ubuntu-based multi-arch container image for x86-64, arm64 and armhf. -- It supports all the environment variables detailed in the [configuration documentation](../configuration-env-vars.md) to modify it according to your needs. +- It supports all the environment variables detailed in the [configuration documentation](../configuration.md) to modify it according to your needs. - It gets rebuilt on new releases from HedgeDoc and also weekly if necessary to update any other package changes in the underlying container, making it easy to keep your HedgeDoc instance up to date. - It also details how to easily [utilize Docker networking to reverse proxy](https://github.com/linuxserver/docker-hedgedoc/#application-setup) HedgeDoc using their [SWAG docker image](https://github.com/linuxserver/docker-swag) diff --git a/docs/setup/docker.md b/docs/content/setup/docker.md similarity index 100% rename from docs/setup/docker.md rename to docs/content/setup/docker.md diff --git a/docs/setup/heroku.md b/docs/content/setup/heroku.md similarity index 100% rename from docs/setup/heroku.md rename to docs/content/setup/heroku.md diff --git a/docs/setup/kubernetes.md b/docs/content/setup/kubernetes.md similarity index 100% rename from docs/setup/kubernetes.md rename to docs/content/setup/kubernetes.md diff --git a/docs/setup/manual-setup.md b/docs/content/setup/manual-setup.md similarity index 100% rename from docs/setup/manual-setup.md rename to docs/content/setup/manual-setup.md diff --git a/docs/setup/reverse-proxy.md b/docs/content/setup/reverse-proxy.md similarity index 100% rename from docs/setup/reverse-proxy.md rename to docs/content/setup/reverse-proxy.md diff --git a/docs/setup/yunohost.md b/docs/content/setup/yunohost.md similarity index 100% rename from docs/setup/yunohost.md rename to docs/content/setup/yunohost.md diff --git a/docs/slide-options.md b/docs/content/slide-options.md similarity index 100% rename from docs/slide-options.md rename to docs/content/slide-options.md diff --git a/docs/content/theme/styles/hedgedoc-color.css b/docs/content/theme/styles/hedgedoc-color.css new file mode 100644 index 000000000..084a2bac7 --- /dev/null +++ b/docs/content/theme/styles/hedgedoc-color.css @@ -0,0 +1,14 @@ +[data-md-color-primary=hedgedoc] { + --md-primary-fg-color: #b51f08; + --md-primary-fg-color--light: #b51f08; + --md-primary-fg-color--dark: #b51f08; + --md-primary-bg-color: hsla(0, 0%, 100%, 1); + --md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7); +} + +[data-md-color-accent=hedgedoc] { + --md-accent-fg-color: #b51f08; + --md-accent-fg-color--transparent: hsla(348, 100%, 55%, 0.1); + --md-accent-bg-color: hsla(0, 0%, 100%, 1); + --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); +} diff --git a/docs/url-scheme.md b/docs/content/url-scheme.md similarity index 100% rename from docs/url-scheme.md rename to docs/content/url-scheme.md diff --git a/docs/dev/documentation.md b/docs/dev/documentation.md deleted file mode 100644 index aa3c52535..000000000 --- a/docs/dev/documentation.md +++ /dev/null @@ -1,27 +0,0 @@ -# Documentation - -Our documentation is build with [mkdocs](https://www.mkdocs.org). - -## Writing - -All documentation files are found in the `docs` directory of the [hedgedoc/hedgedoc repo](https://github.com/hedgedoc/hedgedoc). These files are just normal markdown files with nothing special about them. - -The config file for mkdocs lies in the root of the repo in a file called `mkdocs.yml`. With that file the theme and menu - amoung others - can be configured. -**Please note:** Any new files need to be linked to by other files or put in the navigation or the files will be very hard to find on the documentation website. - -## Building - -To build the documentation locally you need to perform the following steps: - -1. make sure you have python3 installed -2. install all the dependencies possibly with a [venv](https://docs.python.org/3/library/venv.html): -`pip install -r mkdocs.requirements.txt` -3. start the mkdocs dev server `mkdocs serve` or let it build the documentation `mkdocs build` - -## Deployment - -The documentation is deployed with [Messor Structor](https://github.com/traefik/structor). - -The necessary Dockerfile and version menu template and also the github action to build the whole documentation can be found in the [docs.hedgedoc.org repo](https://github.com/hedgedoc/docs.hedgedoc.org). This repo is also used to deploy the actuall website to github.io. - -Messor Structor builds and deploys the documentation by finding all branches that follow the pattern `v*` and build each one seperatly via `mkdocs` by first installing `mkdocs.requirements.txt` and then building. Afterwards the menu go template is used to include a version switcher in the theme and make all the different versions available. \ No newline at end of file diff --git a/docs/images/HedgeDoc-1.7.0-features.png b/docs/images/HedgeDoc-1.7.0-features.png deleted file mode 120000 index c29ae1dff..000000000 --- a/docs/images/HedgeDoc-1.7.0-features.png +++ /dev/null @@ -1 +0,0 @@ -../../public/screenshot.png \ No newline at end of file diff --git a/docs/images/favicon.png b/docs/images/favicon.png deleted file mode 120000 index 2b0c8015a..000000000 --- a/docs/images/favicon.png +++ /dev/null @@ -1 +0,0 @@ -../../public/icons/favicon-32x32.png \ No newline at end of file diff --git a/docs/images/hedgedoc_logo_horizontal.png b/docs/images/hedgedoc_logo_horizontal.png deleted file mode 100644 index 01271424382e06db72e7f331b8153a737ea2317f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28513 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 Date: Tue, 5 Jan 2021 17:04:41 +0100 Subject: [PATCH 2/4] Use svg in readme Signed-off-by: Tilman Vatteroth --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94aa81e81..0a007bc8c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![HedgeDoc Logo](docs/images/hedgedoc_logo_horizontal.png) +![HedgeDoc Logo](docs/content/images/hedgedoc_logo_horizontal.svg) # HedgeDoc From 929a27d393b994e9ffed5cecf1a58400d115ae0a Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Tue, 5 Jan 2021 17:13:44 +0100 Subject: [PATCH 3/4] Change links in README Signed-off-by: Tilman Vatteroth --- README.md | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0a007bc8c..48afaa7c4 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ it by visiting our [HedgeDoc demo server][hedgedoc-demo]. It is inspired by Hackpad, Etherpad and similar collaborative editors. This project originated with the team at [HackMD](https://hackmd.io) and now forked -into its own organisation. [A longer writeup can be read in the history doc](docs/history.md). +into its own organisation. [A longer writeup can be read in the history][history]. [![HedgeDoc 1.7.0 with its feature demonstration page open](public/screenshot.png)][hedgedoc-demo-features] @@ -21,7 +21,7 @@ into its own organisation. [A longer writeup can be read in the history doc](doc We welcome contributions! There's a lot to do: If you would like to report bugs, the [issue tracker][github-issue-tracker] is the right place. If you can help translating, find us on [POEditor][poeditor-url]. To get started developing, -take a look at the [docs/dev](docs/dev) directory. In any case: come talk to us, +take a look at the [developer documentation][developer-documentation]. In any case: come talk to us, we'll be delighted to help you with the first steps. To stay up to date with our work or get support it's recommended to join our @@ -34,20 +34,20 @@ regular [community calls][hedgedoc-community-calls] ([RSS](https://community.hed You can run HedgeDoc in a number of ways, and we created setup instructions for all of these: -- [Docker](docs/setup/docker.md) -- [Cloudron](docs/setup/cloudron.md) -- [LinuxServer.io (multi-arch docker)](docs/setup/docker-linuxserver.md) -- [Heroku](docs/setup/heroku.md) -- [Manual setup](docs/setup/manual-setup.md) +- [Docker][setup-docker] +- [Cloudron][setup-cloudron] +- [LinuxServer.io (multi-arch docker)][setup-docker-linuxserver] +- [Heroku][setup-heroku] +- [Manual setup][setup-manual] ## Configuration -Theres two main ways to [configure](docs/configuration.md) your HedgeDoc instance: +Theres two main ways to [configure][configuration] your HedgeDoc instance: config file or environment variables. You can choose what works best for you. HedgeDoc can integrate with -- facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2](docs/guides/auth/oauth.md) **for login** +- facebook, twitter, github, gitlab, mattermost, dropbox, google, ldap, saml and [oauth2][configuration-oauth] **for login** - imgur, s3, minio, azure **for image/attachment storage** (files can also be local!) - dropbox **for export and import** @@ -72,7 +72,7 @@ To backup HedgeDoc, you should: - backup your database - backup your custom config file if you have one -- backup the upload folder (see the [uploadsPath](./docs/configuration.md#hedgedoc-paths-stuff) config directive) +- backup the upload folder (see the [uploadsPath][configuration-paths] config directive) Restoring an existing instance of HedgeDoc is then just a matter of restoring these elements. @@ -87,6 +87,16 @@ Licensed under AGPLv3. For our list of contributors, see [AUTHORS](AUTHORS). The license does not include the HedgeDoc logo, whose terms of usage can be found in the [github repository](https://github.com/hedgedoc/hedgedoc-logo). +[configuration-oauth]: https://docs.hedgedoc.org/configuration/#oauth2-login +[configuration]: https://docs.hedgedoc.org/configuration/ +[configuration-paths]: https://docs.hedgedoc.org/configuration/#hedgedoc-paths-stuff +[setup-docker]: https://docs.hedgedoc.org/setup/docker/ +[setup-cloudron]: https://docs.hedgedoc.org/setup/cloudron/ +[setup-docker-linuxserver]: https://docs.hedgedoc.org/setup/docker-linuxserver/ +[setup-heroku]: https://docs.hedgedoc.org/setup/heroku/ +[setup-manual]: https://docs.hedgedoc.org/setup/manual-setup/ +[developer-documentation]: https://docs.hedgedoc.org/dev/getting-started/ +[history]: https://hedgedoc.org/history [matrix.org-image]: https://img.shields.io/matrix/hedgedoc:matrix.org?logo=matrix&server_fqdn=matrix.org [matrix.org-url]: https://chat.hedgedoc.org [github-version-badge]: https://img.shields.io/github/release/hedgedoc/hedgedoc.svg From d39c7deb32044a4a34e9c158f168070181b8ae9f Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Tue, 5 Jan 2021 17:18:45 +0100 Subject: [PATCH 4/4] Change history link Signed-off-by: Tilman Vatteroth --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 48afaa7c4..b216b0859 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ The license does not include the HedgeDoc logo, whose terms of usage can be foun [setup-heroku]: https://docs.hedgedoc.org/setup/heroku/ [setup-manual]: https://docs.hedgedoc.org/setup/manual-setup/ [developer-documentation]: https://docs.hedgedoc.org/dev/getting-started/ -[history]: https://hedgedoc.org/history +[history]: https://docs.hedgedoc.org/history/ [matrix.org-image]: https://img.shields.io/matrix/hedgedoc:matrix.org?logo=matrix&server_fqdn=matrix.org [matrix.org-url]: https://chat.hedgedoc.org [github-version-badge]: https://img.shields.io/github/release/hedgedoc/hedgedoc.svg