rip out non-WP styled code and fix widow issue

This commit is contained in:
John Bintz 2009-06-24 17:28:14 -04:00
parent 14a971af2d
commit 13da782514
2 changed files with 36 additions and 31 deletions

View File

@ -4,8 +4,7 @@ class DailyImageWidget {
function DailyImageWidget($skip_load_data = false) { function DailyImageWidget($skip_load_data = false) {
$this->default_display_options = array( $this->default_display_options = array(
'title', 'title',
'image', 'image'
'styles'
); );
$this->_cache_time = 86400; $this->_cache_time = 86400;
@ -18,8 +17,7 @@ class DailyImageWidget {
$this->_valid_options = array( $this->_valid_options = array(
"image" => __("Daily Image", "hubblesite-daily-image-widget"), "image" => __("Daily Image", "hubblesite-daily-image-widget"),
"title" => __("Image Title", "hubblesite-daily-image-widget"), "title" => __("Image Title", "hubblesite-daily-image-widget"),
"credits" => __("Credits", "hubblesite-daily-image-widget"), "credits" => __("Credits", "hubblesite-daily-image-widget")
"styles" => __("HubbleSite Styles", "hubblesite-daily-image-widget"),
); );
add_action('init', array($this, "_init")); add_action('init', array($this, "_init"));
@ -103,13 +101,15 @@ class DailyImageWidget {
/** /**
* Render the widget. * Render the widget.
*/ */
function render() { function render($args) {
if (!empty($this->data) && is_array($this->data)) { if (!empty($this->data) && is_array($this->data)) {
extract($args);
$options = $this->get_display_options(); $options = $this->get_display_options();
echo '<div id="hubblesite-daily-image">'; echo $before_widget;
echo '<p id="hubblesite-daily-image-header">HubbleSite Daily Image</p>'; echo $before_title;
echo "HubbleSite Daily Image";
echo $after_title;
if (in_array("image", $options)) { if (in_array("image", $options)) {
echo '<a href="' . $this->data['gallery_url'] . '" title="' . $this->data['title'] . '">'; echo '<a href="' . $this->data['gallery_url'] . '" title="' . $this->data['title'] . '">';
echo '<img src="' . $this->data['image_url'] . '" alt="' . $this->data['title'] . '" width="100%" />'; echo '<img src="' . $this->data['image_url'] . '" alt="' . $this->data['title'] . '" width="100%" />';
@ -118,22 +118,16 @@ class DailyImageWidget {
if (in_array("title", $options)) { if (in_array("title", $options)) {
echo '<a id="hubblesite-daily-image-title" href="' . $this->data['gallery_url'] . '">'; echo '<a id="hubblesite-daily-image-title" href="' . $this->data['gallery_url'] . '">';
echo $this->data['title']; echo $this->_fix_widows($this->data['title']);
echo '</a>'; echo '</a>';
} }
if (in_array("credits", $options)) { if (in_array("credits", $options)) {
echo '<div id="hubblesite-daily-image-credits">'; echo '<div id="hubblesite-daily-image-credits">';
echo $this->data['credits']; echo $this->_fix_widows($this->data['credits']);
echo '</div>'; echo '</div>';
} }
echo '</div>'; echo $after_widget;
if (in_array("styles", $options)) {
echo "<style type=\"text/css\">";
include(dirname(__FILE__) . '/../hubblesite-styles.css');
echo "</style>";
}
} }
} }
@ -240,6 +234,10 @@ class DailyImageWidget {
} }
return false; return false;
} }
function _fix_widows($text) {
return preg_replace("#([^\ ]+)\ ([^\ \>]+)($|</p>|</a>)#", '\1&nbsp;\2\3', $text);
}
} }
function the_hubblesite_daily_image_widget() { function the_hubblesite_daily_image_widget() {

View File

@ -59,27 +59,21 @@ class DailyImageWidgetTest extends PHPUnit_Framework_TestCase {
array( array(
"image", "image",
array( array(
'//div[@id="hubblesite-daily-image"]' => true, '//div[@id="hubblesite-daily-image"]' => false,
'//div/a[@href="gallery_url" and @title="title"]' => true, '//a[@href="gallery_url" and @title="title"]' => true,
'//div/a/img[@src="image_url" and @alt="title"]' => true, '//a/img[@src="image_url" and @alt="title"]' => true,
) )
), ),
array( array(
"title", "title",
array( array(
'//div/a[@href="gallery_url" and @id="hubblesite-daily-image-title"]' => "title" '//a[@href="gallery_url" and @id="hubblesite-daily-image-title"]' => "title"
)
),
array(
"styles",
array(
'//style[@type="text/css"]' => true
) )
), ),
array( array(
"credits", "credits",
array( array(
'//div/div[@id="hubblesite-daily-image-credits"]' => 'credits' '//div[@id="hubblesite-daily-image-credits"]' => 'credits'
) )
) )
); );
@ -92,7 +86,12 @@ class DailyImageWidgetTest extends PHPUnit_Framework_TestCase {
update_option('hubblesite-daily-image-options', $option_string); update_option('hubblesite-daily-image-options', $option_string);
ob_start(); ob_start();
$this->diw->render(); $this->diw->render(array(
'before_widget' => "",
'after_widget' => "",
'before_title' => "",
'after_title' => ""
));
$result = ob_get_clean(); $result = ob_get_clean();
$this->assertTrue(!empty($result)); $this->assertTrue(!empty($result));
@ -105,8 +104,8 @@ class DailyImageWidgetTest extends PHPUnit_Framework_TestCase {
function providerTestGetDisplayOptions() { function providerTestGetDisplayOptions() {
return array( return array(
array("", array("title", "image", "styles")), array("", array("title", "image")),
array("meow", array("title", "image", "styles")), array("meow", array("title", "image")),
array("title", array("title")), array("title", array("title")),
array("title,image", array("title", "image")), array("title,image", array("title", "image")),
array("title,meow", array("title")) array("title,meow", array("title"))
@ -302,6 +301,14 @@ class DailyImageWidgetTest extends PHPUnit_Framework_TestCase {
$this->assertTrue($diw->_load_data()); $this->assertTrue($diw->_load_data());
$this->assertTrue(is_array(get_option('hubblesite-daily-image-cache'))); $this->assertTrue(is_array(get_option('hubblesite-daily-image-cache')));
} }
function testWidowProtection() {
$this->assertEquals("this is&nbsp;fixed", $this->diw->_fix_widows("this is fixed"));
$this->assertEquals("<p>this is&nbsp;fixed</p>", $this->diw->_fix_widows("<p>this is fixed</p>"));
$this->assertEquals("<a>this is&nbsp;fixed</a>", $this->diw->_fix_widows("<a>this is fixed</a>"));
$this->assertEquals("<a href='meow'>word</a>", $this->diw->_fix_widows("<a href='meow'>word</a>"));
$this->assertEquals("<p>this is&nbsp;fixed</p><p>Also&nbsp;fixed</p>", $this->diw->_fix_widows("<p>this is fixed</p><p>Also fixed</p>"));
}
} }
?> ?>