add initial support for setting image sizes in theme options

This commit is contained in:
John Bintz 2009-07-06 22:45:17 -04:00
parent 8b34c320c3
commit e72e6c39a6
6 changed files with 92 additions and 7 deletions

View File

@ -1,6 +1,6 @@
<?php
include(TEMPLATEPATH . '/comicpress-config.php');
include(dirname(__FILE__) . '/comicpress-config.php');
// If any errors occur while searching for a comic file, the error messages will be pushed into here.
$comic_pathfinding_errors = array();
@ -48,6 +48,29 @@ function get_last_comic() {
return get_terminal_post_in_category(get_all_comic_categories_as_cat_string(), false);
}
function the_comic_img_tag($url, $type, $additional_parameters = array()) {
global $comicpress_options_admin;
$dimensions = array();
if (isset($comicpress_options_admin->comicpress_options["${type}_dimensions"])) {
list($width, $height) = explode("x", $comicpress_options_admin->comicpress_options["${type}_dimensions"]);
$dimensions = compact('width', 'height');
}
echo '<img src="' . $url . '" ';
foreach (array('width', 'height') as $field) {
if (!empty($dimensions[$field])) {
echo $field . '="' . $dimensions[$field] . '" ';
}
}
if (is_array($additional_parameters)) {
foreach ($additional_parameters as $parameter => $value) {
echo $parameter . '="' . $value . '" ';
}
}
echo "/>";
}
/**
* Get the hyperlink to the first comic post in the database.
* @return string The hyperlink to the first comic post, or false.
@ -357,8 +380,12 @@ function comicpress_list_storyline_categories($args = "") {
* Text is taken from a custom field named "hovertext"
*/
function the_hovertext() {
echo get_the_hovertext();
}
function get_the_hovertext() {
$hovertext = get_post_meta(get_the_ID(), "hovertext", true );
echo (empty($hovertext)) ? get_the_title() : $hovertext;
return (empty($hovertext)) ? get_the_title() : $hovertext;
}
/**

View File

@ -1,5 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes() ?>>
<?php
$result = get_option('comicpress-options');
if (!empty($result)) { extract($result); }
var_dump($result);
?>
<head profile="http://gmpg.org/xfn/11">
<title><?php

View File

@ -6,7 +6,8 @@
while ($comicFrontpage->have_posts()) : $comicFrontpage->the_post() ?>
<div id="comic-head"></div>
<div id="comic">
<img src="<?php the_comic() ?>" alt="<?php the_title() ?>" title="<?php the_hovertext() ?>" />
<?php the_comic_img_tag(get_comic_url('comic'), 'comic', array('alt' => get_the_title(),
'title' => get_the_hovertext())) ?>
</div>
<div id="comic-foot"></div>
<?php endwhile; ?>

View File

@ -5,7 +5,7 @@ class ComicPressOptionsAdmin {
'comic_category_id' => 1,
'comic_dimensions' => '760x',
'rss_dimensions' => '350x',
'thumbnail_dimensions' => '125x'
'archive_dimensions' => '125x'
);
function render_admin() {
@ -97,7 +97,7 @@ class ComicPressOptionsAdmin {
break;
case 'comic_dimensions':
case 'rss_dimensions':
case 'thumbnail_dimensions':
case 'archive_dimensions':
if (is_array($_POST['cp'][$option])) {
$dim_parts = array();
$is_valid = true;
@ -125,10 +125,16 @@ class ComicPressOptionsAdmin {
$this->update_comicpress_options();
}
}
function init() {
$this->get_comicpress_options();
}
}
$comicpress_options_admin = new ComicPressOptionsAdmin();
add_action('init', array(&$comicpress_options_admin, 'init'));
function __comicpress_add_options_admin() {
global $comicpress_options_admin;
add_theme_page(__("ComicPress Options", 'comicpress'), __('ComicPress Options', 'comicpress'), 'edit_themes', basename(__FILE__), array($comicpress_options_admin, 'render_admin'));

View File

@ -14,7 +14,7 @@
<?php foreach (array(
'comic_dimensions' => __('Comic Image Dimensions', 'comicpress'),
'rss_dimensions' => __('RSS Feed Image Dimensions', 'comicpress'),
'thumbnail_dimensions' => __('Thumbnail Image Dimensions', 'comicpress'),
'archive_dimensions' => __('Archive Image Dimensions', 'comicpress'),
) as $field => $name) { ?>
<tr>
<th scope="row"><?php echo $name ?></th>

46
test/FunctionsTest.php Normal file
View File

@ -0,0 +1,46 @@
<?php
require_once('PHPUnit/Framework.php');
require_once(dirname(__FILE__) . '/../../mockpress/mockpress.php');
require_once(dirname(__FILE__) . '/../functions.php');
class FunctionsTest extends PHPUnit_Framework_TestCase {
function providerTestGenerateComicTag() {
return array(
array(
"150x150",
),
array(
false,
)
);
}
/**
* @dataProvider providerTestGenerateComicTag
*/
function testGenerateComicImgTag($dimensions) {
global $comicpress_options_admin;
$comicpress_options_admin->comicpress_options['comic_dimensions'] = $dimensions;
ob_start();
the_comic_img_tag("test.gif", "comic");
$source = ob_get_clean();
if (count($parts = explode("x", $dimensions)) == 2) {
list($width, $height) = $parts;
$dimensions = compact('width', 'height');
}
foreach (array('width', 'height') as $field) {
if (isset($dimensions[$field])) {
$this->assertTrue(strpos($source, "${field}=\"{$dimensions[$field]}\"") !== false, $field);
} else {
$this->assertTrue(strpos($source, "${field}=") === false, 'not set');
}
}
}
}
?>