working on theme options updates
This commit is contained in:
parent
ddc296036b
commit
9ed017b883
32
options.php
32
options.php
|
@ -37,7 +37,7 @@ class ComicPressOptionsAdmin {
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
if (is_numeric($category)) {
|
if (is_numeric($category)) {
|
||||||
$result = get_category($category);
|
$result = get_category($category);
|
||||||
if (!is_a($result, "WP_Error")) {
|
if (!(is_a($result, "WP_Error") || empty($result))) {
|
||||||
$final_categories[] = $result;
|
$final_categories[] = $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,30 @@ class ComicPressOptionsAdmin {
|
||||||
update_option('comicpress-options', $this->comicpress_options);
|
update_option('comicpress-options', $this->comicpress_options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handle_update() {
|
||||||
|
if (isset($_POST['cp'])) {
|
||||||
|
foreach ($this->comicpress_options as $option => $value) {
|
||||||
|
if (isset($_POST['cp'][$option])) {
|
||||||
|
switch ($option) {
|
||||||
|
case 'comic_category_id':
|
||||||
|
if (is_numeric($_POST['cp'][$option])) {
|
||||||
|
$result = get_category($_POST['cp'][$option]);
|
||||||
|
if (!(is_a($result, 'WP_Error') || empty($result))) {
|
||||||
|
$this->comicpress_options[$option] = $_POST['cp'][$option];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'comic_dimensions':
|
||||||
|
case 'rss_dimensions':
|
||||||
|
case 'tumbnail_dimensions':
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->update_comicpress_options();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$comicpress_options_admin = new ComicPressOptionsAdmin();
|
$comicpress_options_admin = new ComicPressOptionsAdmin();
|
||||||
|
@ -87,6 +111,12 @@ $comicpress_options_admin = new ComicPressOptionsAdmin();
|
||||||
function __comicpress_add_options_admin() {
|
function __comicpress_add_options_admin() {
|
||||||
global $comicpress_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'));
|
add_theme_page(__("ComicPress Options", 'comicpress'), __('ComicPress Options', 'comicpress'), 'edit_themes', basename(__FILE__), array($comicpress_options_admin, 'render_admin'));
|
||||||
|
|
||||||
|
if (isset($_POST['cp']['_nonce'])) {
|
||||||
|
if (wp_verify_nonce($_POST['cp']['_nonce'], 'comicpress')) {
|
||||||
|
$comicpress_options_admin->handle_update();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -7,6 +7,7 @@ require_once(dirname(__FILE__) . '/../options.php');
|
||||||
class OptionsPageTest extends PHPUnit_Framework_TestCase {
|
class OptionsPageTest extends PHPUnit_Framework_TestCase {
|
||||||
function setUp() {
|
function setUp() {
|
||||||
_reset_wp();
|
_reset_wp();
|
||||||
|
$_POST = array();
|
||||||
$this->admin = new ComicPressOptionsAdmin();
|
$this->admin = new ComicPressOptionsAdmin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +89,56 @@ class OptionsPageTest extends PHPUnit_Framework_TestCase {
|
||||||
$this->assertTrue(_xpath_test($xml, $xpath, $value), $xpath);
|
$this->assertTrue(_xpath_test($xml, $xpath, $value), $xpath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestHandleUpdate() {
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
array('comic_category_id' => 1),
|
||||||
|
array('comic_category_id' => 2),
|
||||||
|
array('comic_category_id' => 1)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('comic_category_id' => 1),
|
||||||
|
array('cp' => array(
|
||||||
|
'comic_category_id' => 2),
|
||||||
|
),
|
||||||
|
array('comic_category_id' => 2)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('comic_category_id' => 1),
|
||||||
|
array('cp' => array(
|
||||||
|
'comic_category_id' => "cat"),
|
||||||
|
),
|
||||||
|
array('comic_category_id' => 1)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('comic_category_id' => 1),
|
||||||
|
array('cp' => array(
|
||||||
|
'comic_category_id' => 3),
|
||||||
|
),
|
||||||
|
array('comic_category_id' => 1)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestHandleUpdate
|
||||||
|
*/
|
||||||
|
function testHandleUpdate($original, $change, $new) {
|
||||||
|
$merged = array_merge($this->admin->comicpress_options, $original);
|
||||||
|
update_option('comicpress-options', $merged);
|
||||||
|
|
||||||
|
add_category(2, (object)array('name' => 'test'));
|
||||||
|
|
||||||
|
$_POST = $change;
|
||||||
|
|
||||||
|
$this->admin->handle_update();
|
||||||
|
|
||||||
|
$result = get_option('comicpress-options');
|
||||||
|
foreach ($new as $key => $value) {
|
||||||
|
$this->assertEquals($value, $result[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue