]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Isso plugin: add an icon in linklist if enabled 1213/head
authorArthurHoaro <arthur@hoa.ro>
Tue, 14 Aug 2018 11:39:31 +0000 (13:39 +0200)
committerArthurHoaro <arthur@hoa.ro>
Tue, 14 Aug 2018 11:39:31 +0000 (13:39 +0200)
Fixes #1075

plugins/isso/comment.png [new file with mode: 0644]
plugins/isso/isso.php
plugins/isso/isso_button.html [new file with mode: 0644]
tests/plugins/PluginIssoTest.php

diff --git a/plugins/isso/comment.png b/plugins/isso/comment.png
new file mode 100644 (file)
index 0000000..0158c03
Binary files /dev/null and b/plugins/isso/comment.png differ
index 5bc1cce26e79d1be3cc64fa3bda9109a12c2ea3f..378c11af3bfb526b57e22e76c88aa06f4408c2bd 100644 (file)
@@ -46,9 +46,36 @@ function hook_isso_render_linklist($data, $conf)
 
         $isso = sprintf($issoHtml, $issoUrl, $issoUrl, $link['id'], $link['id']);
         $data['plugin_end_zone'][] = $isso;
+    } else {
+        $button = '<span><a href="?%s#isso-thread">';
+        // For the default theme we use a FontAwesome icon which is better than an image
+        if ($conf->get('resource.theme') === 'default') {
+            $button .= '<i class="linklist-plugin-icon fa fa-comment"></i>';
+        } else {
+            $button .= '<img class="linklist-plugin-icon" src="plugins/isso/comment.png" ';
+            $button .= 'title="Comment on this shaare" alt="Comments" />';
+        }
+        $button .= '</a></span>';
+        foreach ($data['links'] as &$value) {
+            $commentLink = sprintf($button, $value['shorturl']);
+            $value['link_plugin'][] = $commentLink;
+        }
+    }
 
-        // Hackish way to include this CSS file only when necessary.
-        $data['plugins_includes']['css_files'][] = PluginManager::$PLUGINS_PATH . '/isso/isso.css';
+    return $data;
+}
+
+/**
+ * When linklist is displayed, include isso CSS file.
+ *
+ * @param array $data - header data.
+ *
+ * @return mixed - header data with isso CSS file added.
+ */
+function hook_isso_render_includes($data)
+{
+    if ($data['_PAGE_'] == Router::$PAGE_LINKLIST) {
+        $data['css_files'][] = PluginManager::$PLUGINS_PATH . '/isso/isso.css';
     }
 
     return $data;
diff --git a/plugins/isso/isso_button.html b/plugins/isso/isso_button.html
new file mode 100644 (file)
index 0000000..3f82848
--- /dev/null
@@ -0,0 +1,5 @@
+<span>
+  <a href="?%s#isso-thread">
+    <img class="linklist-plugin-icon" src="plugins/archiveorg/internetarchive.png" title="%s" alt="archive.org" />
+  </a>
+</span>
index 0ae73183808666ec74bf7ef7ea64e50f63b73c94..2c9efbcde4292a221392a725d73d488dd26c2c9e 100644 (file)
@@ -21,7 +21,7 @@ class PluginIssoTest extends PHPUnit_Framework_TestCase
     /**
      * Test Isso init without errors.
      */
-    public function testWallabagInitNoError()
+    public function testIssoInitNoError()
     {
         $conf = new ConfigManager('');
         $conf->set('plugins.ISSO_SERVER', 'value');
@@ -32,7 +32,7 @@ class PluginIssoTest extends PHPUnit_Framework_TestCase
     /**
      * Test Isso init with errors.
      */
-    public function testWallabagInitError()
+    public function testIssoInitError()
     {
         $conf = new ConfigManager('');
         $errors = isso_init($conf);
@@ -96,19 +96,22 @@ class PluginIssoTest extends PHPUnit_Framework_TestCase
                 array(
                     'id' => 12,
                     'url' => $str,
+                    'shorturl' => $short1 = 'abcd',
                     'created' => DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $date1),
                 ),
                 array(
                     'id' => 13,
                     'url' => $str . '2',
+                    'shorturl' => $short2 = 'efgh',
                     'created' => DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $date2),
                 ),
             )
         );
 
         $processed = hook_isso_render_linklist($data, $conf);
-        // data shouldn't be altered
-        $this->assertEquals($data, $processed);
+        // link_plugin should be added for the icon
+        $this->assertContains('<a href="?'. $short1 .'#isso-thread">', $processed['links'][0]['link_plugin'][0]);
+        $this->assertContains('<a href="?'. $short2 .'#isso-thread">', $processed['links'][1]['link_plugin'][0]);
     }
 
     /**
@@ -127,6 +130,7 @@ class PluginIssoTest extends PHPUnit_Framework_TestCase
                 array(
                     'id' => 12,
                     'url' => $str,
+                    'shorturl' => $short1 = 'abcd',
                     'created' => DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $date),
                 )
             ),
@@ -135,8 +139,8 @@ class PluginIssoTest extends PHPUnit_Framework_TestCase
 
         $processed = hook_isso_render_linklist($data, $conf);
 
-        // data shouldn't be altered
-        $this->assertEquals($data, $processed);
+        // link_plugin should be added for the icon
+        $this->assertContains('<a href="?'. $short1 .'#isso-thread">', $processed['links'][0]['link_plugin'][0]);
     }
 
     /**