aboutsummaryrefslogtreecommitdiffhomepage
path: root/plugins/markdown
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/markdown')
-rw-r--r--plugins/markdown/README.md34
-rw-r--r--plugins/markdown/markdown.css7
-rw-r--r--plugins/markdown/markdown.php49
3 files changed, 79 insertions, 11 deletions
diff --git a/plugins/markdown/README.md b/plugins/markdown/README.md
index defaacd1..4f021871 100644
--- a/plugins/markdown/README.md
+++ b/plugins/markdown/README.md
@@ -2,25 +2,31 @@
2 2
3Convert all your shaares description to HTML formatted Markdown. 3Convert all your shaares description to HTML formatted Markdown.
4 4
5Read more about Markdown syntax here. 5[Read more about Markdown syntax](http://daringfireball.net/projects/markdown/syntax).
6
7Markdown processing is done with [Parsedown library](https://github.com/erusev/parsedown).
6 8
7### Installation 9### Installation
8 10
9Clone this repository inside your `tpl/plugins/` directory, or download the archive and unpack it there. 11As a default plugin, it should already be in `tpl/plugins/` directory.
12If not, download and unpack it there.
13
10The directory structure should look like: 14The directory structure should look like:
11 15
12``` 16```
13??? plugins 17--- plugins
14    ??? markdown 18 |--- markdown
15 ??? help.html 19 |--- help.html
16 ??? markdown.css 20 |--- markdown.css
17 ??? markdown.meta 21 |--- markdown.meta
18 ??? markdown.php 22 |--- markdown.php
19 ??? Parsedown.php 23 |--- Parsedown.php
20    ??? README.md 24 |--- README.md
21``` 25```
22 26
23To enable the plugin, add `markdown` to your list of enabled plugins in `data/config.php` 27To enable the plugin, just check it in the plugin administration page.
28
29You can also add `markdown` to your list of enabled plugins in `data/config.php`
24(`ENABLED_PLUGINS` array). 30(`ENABLED_PLUGINS` array).
25 31
26This should look like: 32This should look like:
@@ -29,6 +35,12 @@ This should look like:
29$GLOBALS['config']['ENABLED_PLUGINS'] = array('qrcode', 'any_other_plugin', 'markdown') 35$GLOBALS['config']['ENABLED_PLUGINS'] = array('qrcode', 'any_other_plugin', 'markdown')
30``` 36```
31 37
38### No Markdown tag
39
40If the tag `.nomarkdown` is set for a shaare, it won't be converted to Markdown syntax.
41
42> Note: it's a private tag (leading dot), so it won't be displayed to visitors.
43
32### Known issue 44### Known issue
33 45
34#### Redirector 46#### Redirector
diff --git a/plugins/markdown/markdown.css b/plugins/markdown/markdown.css
index 3c1b2aeb..6789ce84 100644
--- a/plugins/markdown/markdown.css
+++ b/plugins/markdown/markdown.css
@@ -143,6 +143,13 @@
143 hyphens: none; 143 hyphens: none;
144} 144}
145 145
146.markdown :not(pre) code {
147 background-color: #eee;
148 padding: 1px 3px;
149 border-radius: 1px;
150 box-shadow: 0 -1px 0 #e5e5e5,0 0 1px rgba(0,0,0,0.12),0 1px 1px rgba(0,0,0,0.24);
151}
152
146.md_help { 153.md_help {
147 color: white; 154 color: white;
148} 155}
diff --git a/plugins/markdown/markdown.php b/plugins/markdown/markdown.php
index 5a702c7b..57fcce32 100644
--- a/plugins/markdown/markdown.php
+++ b/plugins/markdown/markdown.php
@@ -8,6 +8,12 @@
8 8
9require_once 'Parsedown.php'; 9require_once 'Parsedown.php';
10 10
11/*
12 * If this tag is used on a shaare, the description won't be processed by Parsedown.
13 * Using a private tag so it won't appear for visitors.
14 */
15define('NO_MD_TAG', '.nomarkdown');
16
11/** 17/**
12 * Parse linklist descriptions. 18 * Parse linklist descriptions.
13 * 19 *
@@ -18,6 +24,28 @@ require_once 'Parsedown.php';
18function hook_markdown_render_linklist($data) 24function hook_markdown_render_linklist($data)
19{ 25{
20 foreach ($data['links'] as &$value) { 26 foreach ($data['links'] as &$value) {
27 if (!empty($value['tags']) && noMarkdownTag($value['tags'])) {
28 continue;
29 }
30 $value['description'] = process_markdown($value['description']);
31 }
32
33 return $data;
34}
35
36/**
37 * Parse feed linklist descriptions.
38 *
39 * @param array $data linklist data.
40 *
41 * @return mixed linklist data parsed in markdown (and converted to HTML).
42 */
43function hook_markdown_render_feed($data)
44{
45 foreach ($data['links'] as &$value) {
46 if (!empty($value['tags']) && noMarkdownTag($value['tags'])) {
47 continue;
48 }
21 $value['description'] = process_markdown($value['description']); 49 $value['description'] = process_markdown($value['description']);
22 } 50 }
23 51
@@ -36,6 +64,9 @@ function hook_markdown_render_daily($data)
36 // Manipulate columns data 64 // Manipulate columns data
37 foreach ($data['cols'] as &$value) { 65 foreach ($data['cols'] as &$value) {
38 foreach ($value as &$value2) { 66 foreach ($value as &$value2) {
67 if (!empty($value2['tags']) && noMarkdownTag($value2['tags'])) {
68 continue;
69 }
39 $value2['formatedDescription'] = process_markdown($value2['formatedDescription']); 70 $value2['formatedDescription'] = process_markdown($value2['formatedDescription']);
40 } 71 }
41 } 72 }
@@ -44,6 +75,18 @@ function hook_markdown_render_daily($data)
44} 75}
45 76
46/** 77/**
78 * Check if noMarkdown is set in tags.
79 *
80 * @param string $tags tag list
81 *
82 * @return bool true if markdown should be disabled on this link.
83 */
84function noMarkdownTag($tags)
85{
86 return strpos($tags, NO_MD_TAG) !== false;
87}
88
89/**
47 * When link list is displayed, include markdown CSS. 90 * When link list is displayed, include markdown CSS.
48 * 91 *
49 * @param array $data includes data. 92 * @param array $data includes data.
@@ -75,6 +118,12 @@ function hook_markdown_render_editlink($data)
75{ 118{
76 // Load help HTML into a string 119 // Load help HTML into a string
77 $data['edit_link_plugin'][] = file_get_contents(PluginManager::$PLUGINS_PATH .'/markdown/help.html'); 120 $data['edit_link_plugin'][] = file_get_contents(PluginManager::$PLUGINS_PATH .'/markdown/help.html');
121
122 // Add no markdown 'meta-tag' in tag list if it was never used, for autocompletion.
123 if (! in_array(NO_MD_TAG, $data['tags'])) {
124 $data['tags'][NO_MD_TAG] = 0;
125 }
126
78 return $data; 127 return $data;
79} 128}
80 129