Version 5.1 - All the GraphQL #32
@ -82,8 +82,10 @@ class Anime extends BaseController {
|
||||
public function index($type = KitsuWatchingStatus::WATCHING, string $view = NULL)
|
||||
{
|
||||
$title = (array_key_exists($type, AnimeWatchingStatus::ROUTE_TO_TITLE))
|
||||
? $this->config->get('whose_list') .
|
||||
"'s Anime List · " . AnimeWatchingStatus::ROUTE_TO_TITLE[$type]
|
||||
? $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime List",
|
||||
AnimeWatchingStatus::ROUTE_TO_TITLE[$type]
|
||||
)
|
||||
: '';
|
||||
|
||||
$viewMap = [
|
||||
@ -110,8 +112,10 @@ class Anime extends BaseController {
|
||||
{
|
||||
$this->setSessionRedirect();
|
||||
$this->outputHTML('anime/add', [
|
||||
'title' => $this->config->get('whose_list') .
|
||||
"'s Anime List · Add",
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime List",
|
||||
'Add'
|
||||
),
|
||||
'action_url' => $this->urlGenerator->url('anime/add'),
|
||||
'status_list' => AnimeWatchingStatus::KITSU_TO_TITLE
|
||||
]);
|
||||
@ -158,8 +162,10 @@ class Anime extends BaseController {
|
||||
$this->setSessionRedirect();
|
||||
|
||||
$this->outputHTML('anime/edit', [
|
||||
'title' => $this->config->get('whose_list') .
|
||||
"'s Anime List · Edit",
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime List",
|
||||
'Edit'
|
||||
),
|
||||
'item' => $item,
|
||||
'statuses' => AnimeWatchingStatus::KITSU_TO_TITLE,
|
||||
'action' => $this->container->get('url-generator')
|
||||
|
@ -29,17 +29,21 @@ class Character extends BaseController {
|
||||
if (( ! array_key_exists('data', $data)) || empty($data['data']))
|
||||
{
|
||||
return $this->notFound(
|
||||
$this->config->get('whose_list') .
|
||||
"'s Anime List · Characters · " .
|
||||
'Character not found',
|
||||
$this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime List",
|
||||
'Characters',
|
||||
'Character not found'
|
||||
),
|
||||
'Character Not Found'
|
||||
);
|
||||
}
|
||||
|
||||
// $this->outputJSON($data);
|
||||
$this->outputHTML('character', [
|
||||
'title' => $this->config->get('whose_list') .
|
||||
"'s Anime List · Characters · " . $data['data'][0]['attributes']['name'],
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime List",
|
||||
'Characters',
|
||||
$data['data'][0]['attributes']['name']
|
||||
),
|
||||
'data' => $data['data'][0]['attributes']
|
||||
]);
|
||||
}
|
||||
|
@ -122,7 +122,10 @@ class Collection extends BaseController {
|
||||
$this->outputHTML('collection/' . strtolower($action), [
|
||||
'action' => $action,
|
||||
'action_url' => $this->urlGenerator->fullUrl('collection/' . strtolower($action)),
|
||||
'title' => $this->config->get('whose_list') . " Anime Collection · {$action}",
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Anime Collection",
|
||||
$action
|
||||
),
|
||||
'media_items' => $this->animeCollectionModel->getMediaTypeList(),
|
||||
'item' => ($action === "Edit") ? $this->animeCollectionModel->get($id) : []
|
||||
]);
|
||||
|
@ -71,7 +71,10 @@ class Manga extends Controller {
|
||||
{
|
||||
$statusTitle = MangaReadingStatus::ROUTE_TO_TITLE[$status];
|
||||
|
||||
$title = $this->config->get('whose_list') . "'s Manga List · {$statusTitle}";
|
||||
$title = $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Manga List",
|
||||
$statusTitle
|
||||
);
|
||||
|
||||
$view_map = [
|
||||
'' => 'cover',
|
||||
@ -109,8 +112,10 @@ class Manga extends Controller {
|
||||
|
||||
$this->setSessionRedirect();
|
||||
$this->outputHTML('manga/add', [
|
||||
'title' => $this->config->get('whose_list') .
|
||||
"'s Manga List · Add",
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Manga List",
|
||||
'Add'
|
||||
),
|
||||
'action_url' => $this->urlGenerator->url('manga/add'),
|
||||
'status_list' => $statuses
|
||||
]);
|
||||
@ -155,7 +160,10 @@ class Manga extends Controller {
|
||||
{
|
||||
$this->setSessionRedirect();
|
||||
$item = $this->model->getLibraryItem($id);
|
||||
$title = $this->config->get('whose_list') . "'s Manga List · Edit";
|
||||
$title = $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Manga List",
|
||||
'Edit'
|
||||
);
|
||||
|
||||
$this->outputHTML('manga/edit', [
|
||||
'title' => $title,
|
||||
@ -263,7 +271,11 @@ class Manga extends Controller {
|
||||
$data = $this->model->getManga($manga_id);
|
||||
|
||||
$this->outputHTML('manga/details', [
|
||||
'title' => 'Manga · ' . $data['title'],
|
||||
'title' => $this->formatTitle(
|
||||
$this->config->get('whose_list') . "'s Manga List",
|
||||
'Manga',
|
||||
$data['title']
|
||||
),
|
||||
'data' => $data,
|
||||
]);
|
||||
}
|
||||
|
@ -301,6 +301,17 @@ trait ControllerTrait {
|
||||
], NULL, 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for consistent page titles
|
||||
*
|
||||
* @param string ...$parts Title segements
|
||||
* @return string
|
||||
*/
|
||||
public function formatTitle(string ...$parts) : string
|
||||
{
|
||||
return implode(' · ', $parts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a message box to the page
|
||||
*
|
||||
|
@ -21,12 +21,13 @@ use Aura\Web\WebFactory;
|
||||
use Aviat\AnimeClient\Controller;
|
||||
use Aviat\AnimeClient\Controller\{
|
||||
Anime as AnimeController,
|
||||
Character as CharacterController,
|
||||
Collection as CollectionController,
|
||||
Manga as MangaController
|
||||
};
|
||||
|
||||
class ControllerTest extends AnimeClientTestCase {
|
||||
|
||||
|
||||
protected $BaseController;
|
||||
|
||||
public function setUp()
|
||||
@ -64,6 +65,10 @@ class ControllerTest extends AnimeClientTestCase {
|
||||
'Aviat\AnimeClient\Controller',
|
||||
new MangaController($this->container)
|
||||
);
|
||||
$this->assertInstanceOf(
|
||||
'Aviat\AnimeClient\Controller',
|
||||
new CharacterController($this->container)
|
||||
);
|
||||
$this->assertInstanceOf(
|
||||
'Aviat\AnimeClient\Controller',
|
||||
new CollectionController($this->container)
|
||||
|
39
tests/ControllerTraitTest.php
Normal file
39
tests/ControllerTraitTest.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php declare(strict_types=1);
|
||||
/**
|
||||
* Hummingbird Anime List Client
|
||||
*
|
||||
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
|
||||
*
|
||||
* PHP version 7
|
||||
*
|
||||
* @package HummingbirdAnimeClient
|
||||
* @author Timothy J. Warren <tim@timshomepage.net>
|
||||
* @copyright 2015 - 2017 Timothy J. Warren
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 4.0
|
||||
* @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient
|
||||
*/
|
||||
|
||||
namespace Aviat\AnimeClient\Tests;
|
||||
|
||||
use Aviat\AnimeClient\ControllerTrait;
|
||||
|
||||
class ControllerTraitTest extends AnimeClientTestCase {
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->controller = new class {
|
||||
use ControllerTrait;
|
||||
};
|
||||
}
|
||||
|
||||
public function testFormatTitle()
|
||||
{
|
||||
$this->assertEquals(
|
||||
$this->controller->formatTitle('foo', 'bar', 'baz'),
|
||||
'foo · bar · baz'
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user