]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Merge pull request #1135 from ArthurHoaro/ci/csslint
authorArthurHoaro <arthur@hoa.ro>
Tue, 29 May 2018 18:20:02 +0000 (20:20 +0200)
committerGitHub <noreply@github.com>
Tue, 29 May 2018 18:20:02 +0000 (20:20 +0200)
Reformat SCSS to SASS format and run SASSLint in CI

doc/md/Community-&-Related-software.md
plugins/markdown/markdown.php
tests/plugins/PluginMarkdownTest.php
tpl/default/tools.html

index 207153b61eb075621a100f8ffc3b5e44b73008ee..7c570acf69aee714f746373e5e8054dbc73a7f9a 100644 (file)
@@ -38,9 +38,11 @@ See [Theming](Theming) for a list of community-contributed themes, and an instal
 - [ShaarliOS](https://github.com/mro/ShaarliOS) - Apple iOS share extension.
 - [Shaarli for Android](http://sebsauvage.net/links/?ZAyDzg) - Android application that adds Shaarli as a sharing provider
 - [Shaarlier for Android](https://github.com/dimtion/Shaarlier) - Android application to simply add links directly into your Shaarli
+- [Stakali for Android](https://stakali.toneiv.eu) - Stakali is a personal bookmark manager which synchronizes with Shaarli 
 
 ### Browser addons
- * [Shaarli Web Extension](https://github.com/ikipatang/shaarli-web-extension) - toolbar button to share your current tab with Shaarli.
+- [Shaarli Firefox Extension](https://github.com/ikipatang/shaarli-web-extension) - toolbar button to share your current tab with Shaarli.
+- [Shaarli Chrome Extension](https://github.com/octplane/Shiny-Shaarli) - toolbar button to share your current tab with Shaarli.
 
 ### Server apps
 - [shaarchiver](https://github.com/nodiscc/shaarchiver) - Archive your Shaarli bookmarks and their content
index 2f24e4172b1d3c66ca1eb0f1a9bf66ed4ecde606..821bb12511bf15b98aba0dab6b757c0fc15079a5 100644 (file)
@@ -6,6 +6,8 @@
  * Shaare's descriptions are parsed with Markdown.
  */
 
+use Shaarli\Config\ConfigManager;
+
 /*
  * If this tag is used on a shaare, the description won't be processed by Parsedown.
  */
@@ -50,6 +52,7 @@ function hook_markdown_render_feed($data, $conf)
             $value = stripNoMarkdownTag($value);
             continue;
         }
+        $value['description'] = reverse_feed_permalink($value['description']);
         $value['description'] = process_markdown(
             $value['description'],
             $conf->get('security.markdown_escape', true),
@@ -244,6 +247,11 @@ function reverse_space2nbsp($description)
     return preg_replace('/(^| )&nbsp;/m', '$1 ', $description);
 }
 
+function reverse_feed_permalink($description)
+{
+    return preg_replace('@&#8212; <a href="([^"]+)" title="[^"]+">(\w+)</a>$@im', '&#8212; [$2]($1)', $description);
+}
+
 /**
  * Replace not whitelisted protocols with http:// in given description.
  *
index ddc2728d3ae22542f82dd9bd158de7a1bab73ec0..b31e817fe6093c85e7a5dbb57813a1d6f2ec0ad0 100644 (file)
@@ -49,6 +49,30 @@ class PluginMarkdownTest extends PHPUnit_Framework_TestCase
         $this->assertNotFalse(strpos($data['links'][0]['description'], '<p>'));
     }
 
+    /**
+     * Test render_feed hook.
+     */
+    public function testMarkdownFeed()
+    {
+        $markdown = '# My title' . PHP_EOL . 'Very interesting content.';
+        $markdown .= '&#8212; <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+        $data = array(
+            'links' => array(
+                0 => array(
+                    'description' => $markdown,
+                ),
+            ),
+        );
+
+        $data = hook_markdown_render_feed($data, $this->conf);
+        $this->assertNotFalse(strpos($data['links'][0]['description'], '<h1>'));
+        $this->assertNotFalse(strpos($data['links'][0]['description'], '<p>'));
+        $this->assertStringEndsWith(
+            '&#8212; <a href="http://domain.tld/?0oc_VQ">Permalien</a></p></div>',
+            $data['links'][0]['description']
+        );
+    }
+
     /**
      * Test render_daily hook.
      * Only check that there is basic markdown rendering.
@@ -104,6 +128,37 @@ class PluginMarkdownTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($text, $reversedText);
     }
 
+    public function testReverseFeedPermalink()
+    {
+        $text = 'Description... ';
+        $text .= '&#8212; <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+        $expected = 'Description... &#8212; [Permalien](http://domain.tld/?0oc_VQ)';
+        $processedText = reverse_feed_permalink($text);
+
+        $this->assertEquals($expected, $processedText);
+    }
+
+    public function testReverseLastFeedPermalink()
+    {
+        $text = 'Description... ';
+        $text .= '<br>&#8212; <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+        $expected = $text;
+        $text .= '<br>&#8212; <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+        $expected .= '<br>&#8212; [Permalien](http://domain.tld/?0oc_VQ)';
+        $processedText = reverse_feed_permalink($text);
+
+        $this->assertEquals($expected, $processedText);
+    }
+
+    public function testReverseNoFeedPermalink()
+    {
+        $text = 'Hello! Where are you from?';
+        $expected = $text;
+        $processedText = reverse_feed_permalink($text);
+
+        $this->assertEquals($expected, $processedText);
+    }
+
     /**
      * Test sanitize_html().
      */
index 72fd58aff680b59a1773bc25c6624550034c318d..ece66884c3438cb9f524131b73f810db877bc4c4 100644 (file)
     </div>
     <div class="tools-item">
       <a href="https://play.google.com/store/apps/details?id=com.dimtion.shaarlier&hl=fr"
-         title="Android">
-        <span class="pure-button pure-u-lg-2-3 pure-u-3-4">Android</span>
+         title="Android Shaarlier">
+        <span class="pure-button pure-u-lg-2-3 pure-u-3-4">Android Shaarlier</span>
+      </a>
+    </div>
+    <div class="tools-item">
+      <a href="https://stakali.toneiv.eu/"
+         title="Android Stakali">
+        <span class="pure-button pure-u-lg-2-3 pure-u-3-4">Android Stakali</span>
       </a>
     </div>
     <div class="tools-item">