forked from sebsauvage/Shaarli
-
Notifications
You must be signed in to change notification settings - Fork 297
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use Isso client to let visitors comments on permalinks
- Loading branch information
1 parent
dc8e03b
commit f688432
Showing
5 changed files
with
179 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#isso-thread > h4 { | ||
text-align: center; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<script data-isso="//%s" | ||
data-isso-css="true" | ||
data-isso-lang="en" | ||
data-isso-reply-to-self="true" | ||
data-isso-max-comments-top="20" | ||
data-isso-max-comments-nested="5" | ||
data-isso-reveal-on-click="5" | ||
data-isso-avatar="true" | ||
data-isso-avatar-bg="#f0f0f0" | ||
data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..." | ||
data-isso-vote="true" | ||
src="//%s/js/embed.min.js"> | ||
</script> | ||
<section id="isso-thread" data-isso-id="%s" data-title="%s"></section> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
description="Let visitor comment your shaares on permalinks with Isso." | ||
parameters="ISSO_SERVER" | ||
parameter.ISSO_SERVER="Isso server URL (without 'http://')" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
<?php | ||
|
||
/** | ||
* Plugin Isso. | ||
*/ | ||
|
||
$issoUrl = $conf->get('plugins.ISSO_SERVER'); | ||
if (empty($issoUrl)) { | ||
$GLOBALS['plugin_errors'][] = 'Isso plugin error: '. | ||
'Please define the "ISSO_SERVER" setting in the plugin administration page.'; | ||
} | ||
|
||
/** | ||
* Render linklist hook. | ||
* Will only display Isso comments on permalinks. | ||
* | ||
* @param $data array List of links | ||
* @param $conf ConfigManager instance | ||
* | ||
* @return mixed - linklist data with Isso plugin. | ||
*/ | ||
function hook_isso_render_linklist($data, $conf) | ||
{ | ||
$issoUrl = $conf->get('plugins.ISSO_SERVER'); | ||
if (empty($issoUrl)) { | ||
return $data; | ||
} | ||
|
||
// Only display comments for permalinks. | ||
if (count($data['links']) == 1 && empty($data['search_tags']) && empty($data['search_term'])) { | ||
$link = reset($data['links']); | ||
$isso_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/isso/isso.html'); | ||
|
||
$isso = sprintf($isso_html, $issoUrl, $issoUrl, $link['linkdate'], $link['linkdate']); | ||
$data['plugin_end_zone'][] = $isso; | ||
|
||
// Hackish way to include this CSS file only when necessary. | ||
$data['plugins_includes']['css_files'][] = PluginManager::$PLUGINS_PATH . '/isso/isso.css'; | ||
} | ||
|
||
return $data; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
<?php | ||
|
||
// FIXME! add an init method. | ||
$conf = new ConfigManager(''); | ||
require_once 'plugins/isso/isso.php'; | ||
|
||
/** | ||
* Class PluginIssoTest | ||
* | ||
* Test the Isso plugin (comment system). | ||
*/ | ||
class PluginIssoTest extends PHPUnit_Framework_TestCase | ||
{ | ||
/** | ||
* Reset plugin path | ||
*/ | ||
function setUp() | ||
{ | ||
PluginManager::$PLUGINS_PATH = 'plugins'; | ||
} | ||
|
||
/** | ||
* Test render_linklist hook with valid settings to display the comment form. | ||
*/ | ||
function testIssoDisplayed() | ||
{ | ||
$conf = new ConfigManager(''); | ||
$conf->set('plugins.ISSO_SERVER', 'value'); | ||
|
||
$str = 'http://randomstr.com/test'; | ||
$data = array( | ||
'title' => $str, | ||
'links' => array( | ||
array( | ||
'url' => $str, | ||
'linkdate' => 'abc', | ||
) | ||
) | ||
); | ||
|
||
$data = hook_isso_render_linklist($data, $conf); | ||
|
||
// data shouldn't be altered | ||
$this->assertEquals($str, $data['title']); | ||
$this->assertEquals($str, $data['links'][0]['url']); | ||
|
||
// plugin data | ||
$this->assertEquals(1, count($data['plugin_end_zone'])); | ||
$this->assertNotFalse(strpos($data['plugin_end_zone'][0], 'abc')); | ||
$this->assertNotFalse(strpos($data['plugin_end_zone'][0], 'embed.min.js')); | ||
} | ||
|
||
/** | ||
* Test isso plugin when multiple links are displayed (shouldn't be displayed). | ||
*/ | ||
function testIssoMultipleLinks() | ||
{ | ||
$conf = new ConfigManager(''); | ||
$conf->set('plugins.ISSO_SERVER', 'value'); | ||
|
||
$str = 'http://randomstr.com/test'; | ||
$data = array( | ||
'title' => $str, | ||
'links' => array( | ||
array( | ||
'url' => $str, | ||
'linkdate' => 'abc', | ||
), | ||
array( | ||
'url' => $str . '2', | ||
'linkdate' => 'abc2', | ||
), | ||
) | ||
); | ||
|
||
$processed = hook_isso_render_linklist($data, $conf); | ||
// data shouldn't be altered | ||
$this->assertEquals($data, $processed); | ||
} | ||
|
||
/** | ||
* Test isso plugin when using search (shouldn't be displayed). | ||
*/ | ||
function testIssoNotDisplayedWhenSearch() | ||
{ | ||
$conf = new ConfigManager(''); | ||
$conf->set('plugins.ISSO_SERVER', 'value'); | ||
|
||
$str = 'http://randomstr.com/test'; | ||
$data = array( | ||
'title' => $str, | ||
'links' => array( | ||
array( | ||
'url' => $str, | ||
'linkdate' => 'abc', | ||
) | ||
), | ||
'search_term' => $str | ||
); | ||
|
||
$processed = hook_isso_render_linklist($data, $conf); | ||
|
||
// data shouldn't be altered | ||
$this->assertEquals($data, $processed); | ||
} | ||
|
||
/** | ||
* Test isso plugin without server configuration (shouldn't be displayed). | ||
*/ | ||
function testIssoWithoutConf() | ||
{ | ||
$data = 'abc'; | ||
$conf = new ConfigManager(''); | ||
$processed = hook_isso_render_linklist($data, $conf); | ||
$this->assertEquals($data, $processed); | ||
} | ||
} |