Merge pull request #279 from ArthurHoaro/plugin-addlink_toolbar

PLUGIN: addlink_toolbar
This commit is contained in:
Arthur 2015-11-08 12:45:07 +01:00
commit 00c25040c5
4 changed files with 148 additions and 0 deletions

View File

@ -0,0 +1,4 @@
#addlink_toolbar {
display: inline;
margin: 0 0 0 25px;
}

View File

@ -0,0 +1,6 @@
<div id="addlink_toolbar">
<form method="GET" action="" name="addform" class="addform">
<input type="text" name="post" placeholder="URI">
<input type="submit" value="Add link" class="bigbutton">
</form>
</div>

View File

@ -0,0 +1,38 @@
<?php
/**
* Plugin addlink_toolbar.
* Adds the addlink input on the linklist page.
*/
/**
* When linklist is displayed, add play videos to header's toolbar.
*
* @param array $data - header data.
*
* @return mixed - header data with addlink toolbar item.
*/
function hook_addlink_toolbar_render_header($data)
{
if ($data['_PAGE_'] == Router::$PAGE_LINKLIST && $data['_LOGGEDIN_'] === true) {
$data['fields_toolbar'][] = file_get_contents(PluginManager::$PLUGINS_PATH . '/addlink_toolbar/addlink_toolbar.html');
}
return $data;
}
/**
* When link list is displayed, include markdown CSS.
*
* @param array $data - includes data.
*
* @return mixed - includes data with markdown CSS file added.
*/
function hook_addlink_toolbar_render_includes($data)
{
if ($data['_PAGE_'] == Router::$PAGE_LINKLIST && $data['_LOGGEDIN_'] === true) {
$data['css_files'][] = PluginManager::$PLUGINS_PATH . '/addlink_toolbar/addlink_toolbar.css';
}
return $data;
}

View File

@ -0,0 +1,100 @@
<?php
/**
* PluginPlayvideosTest.php
*/
require_once 'plugins/addlink_toolbar/addlink_toolbar.php';
require_once 'application/Router.php';
/**
* Class PluginAddlinkTest
* Unit test for the Addlink toolbar plugin
*/
class PluginAddlinkTest extends PHPUnit_Framework_TestCase
{
/**
* Reset plugin path.
*/
function setUp()
{
PluginManager::$PLUGINS_PATH = 'plugins';
}
/**
* Test render_header hook while logged in.
*/
function testAddlinkHeaderLoggedIn()
{
$str = 'stuff';
$data = array($str => $str);
$data['_PAGE_'] = Router::$PAGE_LINKLIST;
$data['_LOGGEDIN_'] = true;
$data = hook_addlink_toolbar_render_header($data);
$this->assertEquals($str, $data[$str]);
$this->assertEquals(1, count($data['fields_toolbar']));
$data = array($str => $str);
$data['_PAGE_'] = $str;
$data['_LOGGEDIN_'] = true;
$data = hook_addlink_toolbar_render_header($data);
$this->assertEquals($str, $data[$str]);
$this->assertArrayNotHasKey('fields_toolbar', $data);
}
/**
* Test render_header hook while logged out.
*/
function testAddlinkHeaderLoggedOut()
{
$str = 'stuff';
$data = array($str => $str);
$data['_PAGE_'] = Router::$PAGE_LINKLIST;
$data['_LOGGEDIN_'] = false;
$data = hook_addlink_toolbar_render_header($data);
$this->assertEquals($str, $data[$str]);
$this->assertArrayNotHasKey('fields_toolbar', $data);
}
/**
* Test render_includes hook while logged in.
*/
function testAddlinkIncludesLoggedIn()
{
$str = 'stuff';
$data = array($str => $str);
$data['_PAGE_'] = Router::$PAGE_LINKLIST;
$data['_LOGGEDIN_'] = true;
$data = hook_addlink_toolbar_render_includes($data);
$this->assertEquals($str, $data[$str]);
$this->assertEquals(1, count($data['css_files']));
$str = 'stuff';
$data = array($str => $str);
$data['_PAGE_'] = $str;
$data['_LOGGEDIN_'] = true;
$data = hook_addlink_toolbar_render_includes($data);
$this->assertEquals($str, $data[$str]);
$this->assertArrayNotHasKey('css_files', $data);
}
/**
* Test render_includes hook.
* Should not affect css files while logged out.
*/
function testAddlinkIncludesLoggedOut()
{
$str = 'stuff';
$data = array($str => $str);
$data['_PAGE_'] = Router::$PAGE_LINKLIST;
$data['_LOGGEDIN_'] = false;
$data = hook_addlink_toolbar_render_includes($data);
$this->assertEquals($str, $data[$str]);
$this->assertArrayNotHasKey('css_files', $data);
}
}