aboutsummaryrefslogtreecommitdiffhomepage
path: root/support/doc
diff options
context:
space:
mode:
Diffstat (limited to 'support/doc')
-rw-r--r--support/doc/plugins/guide.md80
1 files changed, 15 insertions, 65 deletions
diff --git a/support/doc/plugins/guide.md b/support/doc/plugins/guide.md
index 73f58330c..ff08ce8c4 100644
--- a/support/doc/plugins/guide.md
+++ b/support/doc/plugins/guide.md
@@ -1,56 +1,6 @@
1# Plugins & Themes 1# Plugins & Themes
2 2
3<!-- START doctoc generated TOC please keep comment here to allow auto update --> 3[[toc]]
4<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
5
6- [Concepts](#concepts)
7 - [Hooks](#hooks)
8 - [Static files](#static-files)
9 - [CSS](#css)
10 - [Server API (only for plugins)](#server-api-only-for-plugins)
11 - [Settings](#settings)
12 - [Storage](#storage)
13 - [Update video constants](#update-video-constants)
14 - [Add custom routes](#add-custom-routes)
15 - [Add custom WebSocket handlers](#add-custom-websocket-handlers)
16 - [Add external auth methods](#add-external-auth-methods)
17 - [Add new transcoding profiles](#add-new-transcoding-profiles)
18 - [Server helpers](#server-helpers)
19 - [Federation](#federation)
20 - [Client API (themes & plugins)](#client-api-themes--plugins)
21 - [Get plugin static and router routes](#get-plugin-static-and-router-routes)
22 - [Notifier](#notifier)
23 - [Markdown Renderer](#markdown-renderer)
24 - [Auth header](#auth-header)
25 - [Custom Modal](#custom-modal)
26 - [Translate](#translate)
27 - [Get public settings](#get-public-settings)
28 - [Get server config](#get-server-config)
29 - [Add custom fields to video form](#add-custom-fields-to-video-form)
30 - [Register settings script](#register-settings-script)
31 - [Plugin selector on HTML elements](#plugin-selector-on-html-elements)
32 - [HTML placeholder elements](#html-placeholder-elements)
33 - [Add/remove left menu links](#addremove-left-menu-links)
34 - [Create client page](#create-client-page)
35 - [Publishing](#publishing)
36- [Write a plugin/theme](#write-a-plugintheme)
37 - [Clone the quickstart repository](#clone-the-quickstart-repository)
38 - [Configure your repository](#configure-your-repository)
39 - [Update README](#update-readme)
40 - [Update package.json](#update-packagejson)
41 - [Write code](#write-code)
42 - [Add translations](#add-translations)
43 - [Build your plugin](#build-your-plugin)
44 - [Test your plugin/theme](#test-your-plugintheme)
45 - [Publish](#publish)
46 - [Unpublish](#unpublish)
47- [Plugin & Theme hooks/helpers API](#plugin--theme-hookshelpers-api)
48- [Tips](#tips)
49 - [Compatibility with PeerTube](#compatibility-with-peertube)
50 - [Spam/moderation plugin](#spammoderation-plugin)
51 - [Other plugin examples](#other-plugin-examples)
52
53<!-- END doctoc generated TOC please keep comment here to allow auto update -->
54 4
55## Concepts 5## Concepts
56 6
@@ -167,7 +117,7 @@ or `/themes/{theme-name}/{theme-version}/static/` routes.
167Plugins can declare CSS files that PeerTube will automatically inject in the client. 117Plugins can declare CSS files that PeerTube will automatically inject in the client.
168If you need to override existing style, you can use the `#custom-css` selector: 118If you need to override existing style, you can use the `#custom-css` selector:
169 119
170``` 120```css
171body#custom-css { 121body#custom-css {
172 color: red; 122 color: red;
173} 123}
@@ -946,13 +896,13 @@ Steps:
946 896
947If you develop a plugin, clone the `peertube-plugin-quickstart` repository: 897If you develop a plugin, clone the `peertube-plugin-quickstart` repository:
948 898
949``` 899```sh
950git clone https://framagit.org/framasoft/peertube/peertube-plugin-quickstart.git peertube-plugin-mysupername 900git clone https://framagit.org/framasoft/peertube/peertube-plugin-quickstart.git peertube-plugin-mysupername
951``` 901```
952 902
953If you develop a theme, clone the `peertube-theme-quickstart` repository: 903If you develop a theme, clone the `peertube-theme-quickstart` repository:
954 904
955``` 905```sh
956git clone https://framagit.org/framasoft/peertube/peertube-theme-quickstart.git peertube-theme-mysupername 906git clone https://framagit.org/framasoft/peertube/peertube-theme-quickstart.git peertube-theme-mysupername
957``` 907```
958 908
@@ -960,7 +910,7 @@ git clone https://framagit.org/framasoft/peertube/peertube-theme-quickstart.git
960 910
961Set your repository URL: 911Set your repository URL:
962 912
963``` 913```sh
964cd peertube-plugin-mysupername # or cd peertube-theme-mysupername 914cd peertube-plugin-mysupername # or cd peertube-theme-mysupername
965git remote set-url origin https://your-git-repo 915git remote set-url origin https://your-git-repo
966``` 916```
@@ -969,7 +919,7 @@ git remote set-url origin https://your-git-repo
969 919
970Update `README.md` file: 920Update `README.md` file:
971 921
972``` 922```sh
973$EDITOR README.md 923$EDITOR README.md
974``` 924```
975 925
@@ -1099,19 +1049,19 @@ If you added client scripts, you'll need to build them using webpack.
1099 1049
1100Install webpack: 1050Install webpack:
1101 1051
1102``` 1052```sh
1103npm install 1053npm install
1104``` 1054```
1105 1055
1106Add/update your files in the `clientFiles` array of `webpack.config.js`: 1056Add/update your files in the `clientFiles` array of `webpack.config.js`:
1107 1057
1108``` 1058```sh
1109$EDITOR ./webpack.config.js 1059$EDITOR ./webpack.config.js
1110``` 1060```
1111 1061
1112Build your client files: 1062Build your client files:
1113 1063
1114``` 1064```sh
1115npm run build 1065npm run build
1116``` 1066```
1117 1067
@@ -1128,31 +1078,31 @@ You'll need to have a local PeerTube instance:
1128 (to clone the repository, install dependencies and prepare the database) 1078 (to clone the repository, install dependencies and prepare the database)
1129 * Build PeerTube: 1079 * Build PeerTube:
1130 1080
1131``` 1081```sh
1132npm run build 1082npm run build
1133``` 1083```
1134 1084
1135 * Build the CLI: 1085 * Build the CLI:
1136 1086
1137``` 1087```sh
1138npm run setup:cli 1088npm run setup:cli
1139``` 1089```
1140 1090
1141 * Run PeerTube (you can access to your instance on `localhost:9000`): 1091 * Run PeerTube (you can access to your instance on `localhost:9000`):
1142 1092
1143``` 1093```sh
1144NODE_ENV=dev npm start 1094NODE_ENV=dev npm start
1145``` 1095```
1146 1096
1147 * Register the instance via the CLI: 1097 * Register the instance via the CLI:
1148 1098
1149``` 1099```sh
1150node ./dist/server/tools/peertube.js auth add -u 'http://localhost:9000' -U 'root' --password 'test' 1100node ./dist/server/tools/peertube.js auth add -u 'http://localhost:9000' -U 'root' --password 'test'
1151``` 1101```
1152 1102
1153Then, you can install or reinstall your local plugin/theme by running: 1103Then, you can install or reinstall your local plugin/theme by running:
1154 1104
1155``` 1105```sh
1156node ./dist/server/tools/peertube.js plugins install --path /your/absolute/plugin-or-theme/path 1106node ./dist/server/tools/peertube.js plugins install --path /your/absolute/plugin-or-theme/path
1157``` 1107```
1158 1108
@@ -1160,7 +1110,7 @@ node ./dist/server/tools/peertube.js plugins install --path /your/absolute/plugi
1160 1110
1161Go in your plugin/theme directory, and run: 1111Go in your plugin/theme directory, and run:
1162 1112
1163``` 1113```sh
1164npm publish 1114npm publish
1165``` 1115```
1166 1116