more category and storyline modifications
This commit is contained in:
parent
4815766fe4
commit
7b1e8b7348
@ -57,6 +57,8 @@ class ComicPress {
|
|||||||
$this->sort_comic_categories();
|
$this->sort_comic_categories();
|
||||||
|
|
||||||
add_action('wp_head', array(&$this, 'wp_head'));
|
add_action('wp_head', array(&$this, 'wp_head'));
|
||||||
|
add_filter('comicpress_nav', array(&$this, 'comicpress_nav'), 10, 2);
|
||||||
|
add_filter('comicpress_nav_fields', array(&$this, 'comicpress_nav_fields'));
|
||||||
|
|
||||||
if (current_user_can('edit_themes')) {
|
if (current_user_can('edit_themes')) {
|
||||||
if (!empty($this->comicpress_options['helpers'])) {
|
if (!empty($this->comicpress_options['helpers'])) {
|
||||||
@ -78,6 +80,29 @@ class ComicPress {
|
|||||||
return $this->comicpress_options['category_usage'] == "multicomic";
|
return $this->comicpress_options['category_usage'] == "multicomic";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function comicpress_nav($type, $content) {
|
||||||
|
return $type;
|
||||||
|
}
|
||||||
|
|
||||||
|
function comicpress_nav_fields($nav_fields) {
|
||||||
|
$nav_fields = array(
|
||||||
|
'first' => '‹‹ ' . __('First', 'comicpress'),
|
||||||
|
'previous' => '‹ ' . __('Previous', 'comicpress'),
|
||||||
|
'next' => __('Next', 'comicpress') . ' ›',
|
||||||
|
'last' => __('Last', 'comicpress') . ' ››'
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($this->needs_storyline_nav()) {
|
||||||
|
$nav_fields = array_merge(
|
||||||
|
array('prior' => '‹‹ ' . __('Prior Storyline', 'comicpress')),
|
||||||
|
$nav_fields,
|
||||||
|
array('upcoming' => __('Upcoming Storyline', 'comicpress') . ' ››')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $nav_fields;
|
||||||
|
}
|
||||||
|
|
||||||
function wp_head() {
|
function wp_head() {
|
||||||
foreach ($this->additional_stylesheets as $uri) { ?>
|
foreach ($this->additional_stylesheets as $uri) { ?>
|
||||||
<link rel="stylesheet" href="<?php echo get_template_directory_uri() . $uri ?>" type="text/css" />
|
<link rel="stylesheet" href="<?php echo get_template_directory_uri() . $uri ?>" type="text/css" />
|
||||||
@ -297,6 +322,40 @@ class ComicPress {
|
|||||||
$comic_posts['show_next'] = (!empty($comic_posts['next']) && (trim($comic_posts['last']->ID) != trim($comic_posts['next']->ID)));
|
$comic_posts['show_next'] = (!empty($comic_posts['next']) && (trim($comic_posts['last']->ID) != trim($comic_posts['next']->ID)));
|
||||||
$comic_posts['show_last'] = (trim($post->ID) != trim($comic_posts['last']->ID));
|
$comic_posts['show_last'] = (trim($post->ID) != trim($comic_posts['last']->ID));
|
||||||
|
|
||||||
|
if ($this->needs_storyline_nav()) {
|
||||||
|
$comic_posts = array_merge($comic_posts, $this->get_storyline_nav_comics());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $comic_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_storyline_nav_comics() {
|
||||||
|
$comic_posts = array('prior' => false, 'upcoming' => false);
|
||||||
|
foreach ($this->get_sorted_post_categories() as $category_id) {
|
||||||
|
$prev_next_categories = $this->get_previous_next_categories($category_id);
|
||||||
|
|
||||||
|
foreach ($prev_next_categories as $master_id => $cat_list) {
|
||||||
|
foreach ($cat_list as $which => $id) {
|
||||||
|
switch ($which) {
|
||||||
|
case "previous":
|
||||||
|
$terminal_post = $this->get_last_comic($id);
|
||||||
|
$which_field = "prior";
|
||||||
|
break;
|
||||||
|
case "next":
|
||||||
|
$terminal_post = $this->get_first_comic($id);
|
||||||
|
$which_field = "upcoming";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_object($terminal_post)) {
|
||||||
|
$comic_posts[$which_field] = $terminal_post;
|
||||||
|
$comic_posts["show_${which_field}"] =true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($terminal_post) == 2) { break; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return $comic_posts;
|
return $comic_posts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,52 +1,9 @@
|
|||||||
<?php
|
|
||||||
$nav_fields = array(
|
|
||||||
'first' => '‹‹ ' . __('First', 'comicpress'),
|
|
||||||
'previous' => '‹ ' . __('Previous', 'comicpress'),
|
|
||||||
'next' => __('Next', 'comicpress') . ' ›',
|
|
||||||
'last' => __('Last', 'comicpress') . ' ››'
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($comicpress->needs_storyline_nav()) {
|
|
||||||
$nav_fields = array_merge(
|
|
||||||
array('prior' => '‹‹ ' . __('Prior Storyline', 'comicpress')),
|
|
||||||
$nav_fields,
|
|
||||||
array('upcoming' => __('Upcoming Storyline', 'comicpress') . ' ››')
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach ($comicpress->get_sorted_post_categories() as $category_id) {
|
|
||||||
$prev_next_categories = $comicpress->get_previous_next_categories($category_id);
|
|
||||||
|
|
||||||
foreach ($prev_next_categories as $master_id => $cat_list) {
|
|
||||||
foreach ($cat_list as $which => $id) {
|
|
||||||
switch ($which) {
|
|
||||||
case "previous":
|
|
||||||
$terminal_post = $comicpress->get_last_comic($id);
|
|
||||||
$which_field = "prior";
|
|
||||||
break;
|
|
||||||
case "next":
|
|
||||||
$terminal_post = $comicpress->get_first_comic($id);
|
|
||||||
$which_field = "upcoming";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_object($terminal_post)) {
|
|
||||||
$nav_comics[$which_field] = $terminal_post;
|
|
||||||
$nav_comics["show_${which_field}"] =true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($terminal_post) == 2) { break; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
<div class="nav">
|
<div class="nav">
|
||||||
<?php foreach ($nav_fields as $field => $link_text) { ?>
|
<?php foreach (apply_filters('comicpress_nav_fields', array()) as $field => $link_text) { ?>
|
||||||
<?php if ($nav_comics['show_' . $field]) { ?>
|
<?php if ($nav_comics['show_' . $field]) { ?>
|
||||||
<div class="nav-<?php echo $field ?>">
|
<div class="nav-<?php echo $field ?>">
|
||||||
<a href="<?php echo (is_object($nav_comics[$field])) ? get_permalink($nav_comics[$field]->ID) : $nav_comics[$field] ?>"
|
<a href="<?php echo (is_object($nav_comics[$field])) ? get_permalink($nav_comics[$field]->ID) : $nav_comics[$field] ?>"
|
||||||
title="<?php sprintf(__('Go to the %s comic', 'comicpress'), $field) ?>"><?php echo $link_text ?></a>
|
title="<?php sprintf(__('Go to the %s comic', 'comicpress'), $field) ?>"><?php echo apply_filters('comicpress_nav', $link_text, $field) ?></a>
|
||||||
</div>
|
</div>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
@ -172,6 +172,106 @@ class ComicPressTest extends PHPUnit_Framework_TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestGetNavStorylineEnabled() {
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
array('10'),
|
||||||
|
array(
|
||||||
|
'10' => array(
|
||||||
|
'10' => array('previous' => '9', 'next' => '11')
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'9' => true,
|
||||||
|
'11' => true
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'prior' => true,
|
||||||
|
'upcoming' => true
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('10', '20'),
|
||||||
|
array(
|
||||||
|
'10' => array(
|
||||||
|
'10' => array('previous' => '7', 'next' => '3')
|
||||||
|
),
|
||||||
|
'20' => array(
|
||||||
|
'20' => array('previous' => '9', 'next' => '11')
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'9' => true,
|
||||||
|
'11' => true
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'prior' => true,
|
||||||
|
'upcoming' => true
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('10'),
|
||||||
|
array(
|
||||||
|
'10' => array(
|
||||||
|
'10' => array('previous' => '7', 'next' => '3')
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'15' => true,
|
||||||
|
'20' => true
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'prior' => false,
|
||||||
|
'upcoming' => false
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('10'),
|
||||||
|
array(
|
||||||
|
'10' => array(
|
||||||
|
'7' => array('previous' => '15', 'next' => '20')
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'15' => true,
|
||||||
|
'20' => true
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'prior' => true,
|
||||||
|
'upcoming' => true
|
||||||
|
)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestGetNavStorylineEnabled
|
||||||
|
*/
|
||||||
|
function testGetNavComicsStorylineEnabled($post_categories, $previous_next_categories, $terminal_comics, $expected_results) {
|
||||||
|
$cp = $this->getMock('ComicPress', array('get_sorted_post_categories', 'get_previous_next_categories', 'get_last_comic', 'get_first_comic'));
|
||||||
|
|
||||||
|
$cp->expects($this->once())->method('get_sorted_post_categories')->will($this->returnValue($post_categories));
|
||||||
|
$cp->expects($this->any())->method('get_previous_next_categories')->will($this->returnCallback(array(&$this, 'callbackGetPreviousNextCategories')));
|
||||||
|
$cp->expects($this->any())->method('get_first_comic')->will($this->returnCallback(array(&$this, 'callbackGetTerminalComic')));
|
||||||
|
$cp->expects($this->any())->method('get_last_comic')->will($this->returnCallback(array(&$this, 'callbackGetTerminalComic')));
|
||||||
|
|
||||||
|
$this->_previous_next_categories = $previous_next_categories;
|
||||||
|
$this->_terminal_comics = $terminal_comics;
|
||||||
|
|
||||||
|
$result = $cp->get_storyline_nav_comics();
|
||||||
|
foreach ($expected_results as $field => $value) {
|
||||||
|
$this->assertEquals($value, $result["show_${field}"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function callbackGetPreviousNextCategories($id) {
|
||||||
|
return $this->_previous_next_categories[$id];
|
||||||
|
}
|
||||||
|
|
||||||
|
function callbackGetTerminalComic($id) {
|
||||||
|
return isset($this->_terminal_comics[$id]) ? (object)array() : false;
|
||||||
|
}
|
||||||
|
|
||||||
function providerTestGetPreviousNextCategories() {
|
function providerTestGetPreviousNextCategories() {
|
||||||
return array(
|
return array(
|
||||||
array(
|
array(
|
||||||
|
Loading…
Reference in New Issue
Block a user