reworking backend infrastructure
This commit is contained in:
parent
205768742a
commit
1938420008
|
@ -237,12 +237,14 @@ class ComicPress {
|
|||
if (isset($this->comicpress_options['image_types'])) {
|
||||
if (is_array($this->comicpress_options['image_types'])) {
|
||||
foreach ($this->comicpress_options['image_types'] as $type => $properties) {
|
||||
if (isset($properties['default'])) {
|
||||
if ($properties['default'] === true) {
|
||||
return $type;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
class ComicPressBackend {
|
||||
function _embed_image($size) {
|
||||
$size = $this->ensure_type($size);
|
||||
$extras = array();
|
||||
$dims = $this->dims($size);
|
||||
if (!empty($dims)) {
|
||||
|
@ -17,7 +18,7 @@ class ComicPressBackend {
|
|||
unset($extras[$field]);
|
||||
}
|
||||
|
||||
$output = sprintf('<img src="%s" alt="%s" title="%s" %s/>', $this->url(), $this->alt(), $this->title(), implode("", $extras));
|
||||
$output = sprintf('<img src="%s" alt="%s" title="%s" %s/>', $this->url($size), $this->alt(), $this->title(), implode("", $extras));
|
||||
return apply_filters('comicpress_embed_image', $output, $this);
|
||||
}
|
||||
|
||||
|
@ -31,4 +32,32 @@ class ComicPressBackend {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function ensure_type($type) {
|
||||
if (is_null($type)) {
|
||||
$comicpress = ComicPress::get_instance();
|
||||
if (is_null($type)) {
|
||||
$type = $comicpress->get_default_image_type();
|
||||
}
|
||||
}
|
||||
return $type;
|
||||
}
|
||||
|
||||
function embed($type = null) { return $this->_embed_image($this->ensure_type($type)); }
|
||||
|
||||
|
||||
function get_info($size = null) {
|
||||
$size = $this->ensure_type($size);
|
||||
|
||||
$info = array();
|
||||
foreach (array('dims', 'url', 'file') as $field) {
|
||||
$result = $this->{$field}($size);
|
||||
if (is_array($result)) {
|
||||
$info = array_merge($info, $result);
|
||||
} else {
|
||||
$info[$field] = $result;
|
||||
}
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,17 +12,12 @@ class ComicPressBackendAttachment extends ComicPressBackend {
|
|||
$this->type = get_post_meta($this->attachment->ID, 'comic_image_type', true);
|
||||
}
|
||||
|
||||
function dims($size = 'comic') {
|
||||
function dims($size = null) {
|
||||
$size = $this->ensure_type($size);
|
||||
$comicpress = ComicPress::get_instance();
|
||||
|
||||
$dims = array();
|
||||
if (isset($comicpress->comicpress_options['image_types'])) {
|
||||
if ($size == 'default') {
|
||||
foreach ($comicpress->comicpress_options['image_types'] as $type => $info) {
|
||||
if ($info['default']) { $size = $type; break; }
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($comicpress->comicpress_options['image_types'][$size])) {
|
||||
if (isset($comicpress->comicpress_options['image_types'][$size]['dimensions'])) {
|
||||
$dims = array_combine(array('width', 'height'), explode("x", $comicpress->comicpress_options['image_types'][$size]['dimensions']));
|
||||
|
@ -44,24 +39,10 @@ class ComicPressBackendAttachment extends ComicPressBackend {
|
|||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
function embed($size = 'comic') { return $this->_embed_image($size); }
|
||||
function file($size = 'comic') { return $this->attachment->guid; }
|
||||
function file($size = null) { return $this->attachment->guid; }
|
||||
function alt() { return $this->attachment->post_title; }
|
||||
function title() { return $this->attachment->post_excerpt; }
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
function get_info($size = 'comic') {
|
||||
$info = array();
|
||||
foreach (array('dims', 'url', 'file') as $field) {
|
||||
$result = $this->{$field}($size);
|
||||
if (is_array($result)) {
|
||||
$info = array_merge($info, $result);
|
||||
} else {
|
||||
$info[$field] = $result;
|
||||
}
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
}
|
||||
|
||||
class ComicPressBackendAttachmentFactory {
|
||||
|
|
|
@ -49,6 +49,8 @@ class ComicPressBackendURL extends ComicPressBackend {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
function dims($size = null) { return false; }
|
||||
}
|
||||
|
||||
class ComicPressBackendURLFactory {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="comicpress-url-backend-holder">
|
||||
<div class="comicpress-backend-url-holder">
|
||||
<table class="widefat">
|
||||
<tr>
|
||||
<td align="right" colspan="2">
|
||||
<a class="comicpress-url-backend-deleter" href="#">X</a>
|
||||
<a class="comicpress-backend-url-deleter" href="#">X</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
|
|
|
@ -7,6 +7,22 @@
|
|||
</div>
|
||||
<a href="#" id="comicpress-backend-url-add-new">Add a new image</a>
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var set_up_deleters = function() {
|
||||
$$('.comicpress-backend-url-holder').each(function(d) {
|
||||
var deleter = d.select('.comicpress-backend-url-deleter').pop();
|
||||
if (deleter) {
|
||||
deleter.stopObserving();
|
||||
deleter.observe('click', function(e) {
|
||||
Event.stop(e);
|
||||
if (confirm('Delete this image?')) {
|
||||
d.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$('comicpress-backend-url-add-new').observe('click', function(e) {
|
||||
Event.stop(e);
|
||||
new Ajax.Updater(
|
||||
|
@ -17,8 +33,12 @@
|
|||
'cp[_nonce]': ComicPressAdmin.nonce,
|
||||
'cp[action]': 'backend-url-new-editor',
|
||||
'cp[_action_nonce]': '<?php echo esc_js(wp_create_nonce('comicpress-backend-url-new-editor')) ?>'
|
||||
}
|
||||
},
|
||||
onComplete: set_up_deleters
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
set_up_deleters();
|
||||
}());
|
||||
</script>
|
||||
|
|
|
@ -36,7 +36,7 @@ class ComicPressBackendTest extends PHPUnit_Framework_TestCase {
|
|||
$backend = $this->getMock('ComicPressBackend', array('dims', 'url', 'alt', 'title'));
|
||||
|
||||
$backend->expects($this->once())->method('dims')->with('comic')->will($this->returnValue($dims_result));
|
||||
$backend->expects($this->once())->method('url')->will($this->returnValue('http://comic'));
|
||||
$backend->expects($this->once())->method('url')->with('comic')->will($this->returnValue('http://comic'));
|
||||
$backend->expects($this->once())->method('alt')->will($this->returnValue('alt'));
|
||||
$backend->expects($this->once())->method('title')->will($this->returnValue('title'));
|
||||
|
||||
|
@ -67,4 +67,51 @@ class ComicPressBackendTest extends PHPUnit_Framework_TestCase {
|
|||
|
||||
$this->assertEquals($expected_result, ComicPressBackend::generate_from_id($id));
|
||||
}
|
||||
|
||||
function providerTestEnsureType() {
|
||||
return array(
|
||||
array(null, 'comic'),
|
||||
array('comic', 'comic'),
|
||||
array('rss', 'rss')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestEnsureType
|
||||
*/
|
||||
function testEnsureType($provided, $expected) {
|
||||
$comicpress = ComicPress::get_instance();
|
||||
$comicpress->comicpress_options = array(
|
||||
'image_types' => array(
|
||||
'comic' => array('default' => true),
|
||||
'rss' => array('default' => false)
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals($expected, ComicPressBackend::ensure_type($provided));
|
||||
}
|
||||
|
||||
function testGetEmbed() {
|
||||
$ba = $this->getMock('ComicPressBackend', array('_embed_image', 'ensure_type'));
|
||||
$ba->expects($this->once())->method('ensure_type')->with('test')->will($this->returnValue('ensured'));
|
||||
$ba->expects($this->once())->method('_embed_image')->with('ensured')->will($this->returnValue('embed'));
|
||||
|
||||
$this->assertEquals('embed', $ba->embed('test'));
|
||||
}
|
||||
|
||||
|
||||
function testGetInfo() {
|
||||
$ba = $this->getMock('ComicPressBackend', array('dims', 'url', 'file'), array(), 'Mock_ComicPressBackend', false);
|
||||
|
||||
$ba->expects($this->once())->method('dims')->will($this->returnValue(array('width' => 320, 'height' => 240)));
|
||||
$ba->expects($this->once())->method('url')->will($this->returnValue('http://blah/file.jpg'));
|
||||
$ba->expects($this->once())->method('file')->will($this->returnValue('/root/file.jpg'));
|
||||
|
||||
$this->assertEquals(array(
|
||||
'width' => 320,
|
||||
'height' => 240,
|
||||
'url' => 'http://blah/file.jpg',
|
||||
'file' => '/root/file.jpg'
|
||||
), $ba->get_info());
|
||||
}
|
||||
}
|
|
@ -301,6 +301,13 @@ class ComicPressTest extends PHPUnit_Framework_TestCase {
|
|||
),
|
||||
'comic'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
'rss' => array(),
|
||||
'comic' => array('default' => true),
|
||||
),
|
||||
'comic'
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class ComicPressBackendAttachmentTest extends PHPUnit_Framework_TestCase {
|
|||
array('comic', true, array()),
|
||||
array('comic', array(), array()),
|
||||
array('comic', array('dimensions' => '300x200'), array('width' => 300, 'height' => 200)),
|
||||
array('default', array('dimensions' => '300x200', 'default' => true), array('width' => 300, 'height' => 200))
|
||||
array(null, array('default' => true, 'dimensions' => '300x200'), array('width' => 300, 'height' => 200)),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -40,30 +40,16 @@ class ComicPressBackendAttachmentTest extends PHPUnit_Framework_TestCase {
|
|||
array(false, false),
|
||||
array(true, false),
|
||||
array(array(), false),
|
||||
array(array('url', 300, 200, false), 'url')
|
||||
array(array('url', 300, 200, false), 'url'),
|
||||
array(array('url', 300, 200, false), 'url', null),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestUrl
|
||||
*/
|
||||
function testUrl($image_downsize_result, $expected_result) {
|
||||
function testUrl($image_downsize_result, $expected_result, $which = 'comic') {
|
||||
_set_image_downsize_result(1, 'comic', $image_downsize_result);
|
||||
$this->assertEquals($expected_result, $this->ba->url('comic'));
|
||||
}
|
||||
|
||||
function testGetInfo() {
|
||||
$ba = $this->getMock('ComicPressBackendAttachment', array('dims', 'url', 'file'), array(), 'Mock_ComicPressBackendAttachment', false);
|
||||
|
||||
$ba->expects($this->once())->method('dims')->will($this->returnValue(array('width' => 320, 'height' => 240)));
|
||||
$ba->expects($this->once())->method('url')->will($this->returnValue('http://blah/file.jpg'));
|
||||
$ba->expects($this->once())->method('file')->will($this->returnValue('/root/file.jpg'));
|
||||
|
||||
$this->assertEquals(array(
|
||||
'width' => 320,
|
||||
'height' => 240,
|
||||
'url' => 'http://blah/file.jpg',
|
||||
'file' => '/root/file.jpg'
|
||||
), $ba->get_info());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue