bunch of fixes, partials editing
This commit is contained in:
parent
89c1b216ee
commit
4fddaccb24
|
@ -100,7 +100,8 @@ class ComicPressAddonCore extends ComicPressAddon {
|
||||||
* Set up the admin interface and meta boxes.
|
* Set up the admin interface and meta boxes.
|
||||||
*/
|
*/
|
||||||
function setup_admin_interface() {
|
function setup_admin_interface() {
|
||||||
add_theme_page(__("ComicPress Core", 'comicpress'), __('ComicPress Core', 'comicpress'), 'edit_themes', basename(__FILE__), array(&$this, 'render_admin'));
|
add_theme_page(__("ComicPress Core", 'comicpress'), __('ComicPress Core', 'comicpress'), 'edit_themes', 'comicpress/render_admin', array(&$this, 'render_admin'));
|
||||||
|
add_theme_page(__("Edit Partials", 'comicpress'), __('Edit Partials', 'comicpress'), 'edit_themes', 'comicpress/edit_partials', array(&$this, 'render_edit_partials'));
|
||||||
|
|
||||||
if (isset($_REQUEST['post'])) {
|
if (isset($_REQUEST['post'])) {
|
||||||
add_meta_box("comic-image-ordering", __("Comic Image Ordering", 'comicpress'), array(&$this, 'render_comic_image_ordering'), "post", "normal", "low");
|
add_meta_box("comic-image-ordering", __("Comic Image Ordering", 'comicpress'), array(&$this, 'render_comic_image_ordering'), "post", "normal", "low");
|
||||||
|
@ -203,6 +204,12 @@ class ComicPressAddonCore extends ComicPressAddon {
|
||||||
include(dirname(__FILE__) . '/partials/options-admin.inc');
|
include(dirname(__FILE__) . '/partials/options-admin.inc');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function render_edit_partials() {
|
||||||
|
$nonce = wp_create_nonce('comicpress');
|
||||||
|
|
||||||
|
include(dirname(__FILE__) . '/partials/edit-partials.inc');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render the comic image ordering interface.
|
* Render the comic image ordering interface.
|
||||||
*/
|
*/
|
||||||
|
@ -477,6 +484,17 @@ class ComicPressAddonCore extends ComicPressAddon {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handle_update_override_partial($info) {
|
||||||
|
switch ($info['action']) {
|
||||||
|
case __('Update partial', 'comicpress'):
|
||||||
|
$this->comicpress->comicpress_options['override_partials'][$info['partial']] = $info['code'];
|
||||||
|
break;
|
||||||
|
case __('Delete override partial', 'comicpress'):
|
||||||
|
unset($this->comicpress->comicpress_options['override_partials'][$info['partial']]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle an update.
|
* Handle an update.
|
||||||
*/
|
*/
|
||||||
|
@ -503,6 +521,12 @@ class ComicPressAddonCore extends ComicPressAddon {
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->handle_update_comic_ordering();
|
$this->handle_update_comic_ordering();
|
||||||
|
} else if (isset($_POST['cp']['partial'])) {
|
||||||
|
$this->handle_update_override_partial($_POST['cp']);
|
||||||
|
$this->info(sprintf(__("Partial %s updated.", 'comicpress'), $_POST['cp']['partial']));
|
||||||
|
|
||||||
|
$this->comicpress->save();
|
||||||
|
$this->comicpress->init();
|
||||||
} else {
|
} else {
|
||||||
//coming from us
|
//coming from us
|
||||||
$this->handle_update_comicpress_options();
|
$this->handle_update_comicpress_options();
|
||||||
|
@ -513,7 +537,7 @@ class ComicPressAddonCore extends ComicPressAddon {
|
||||||
|
|
||||||
$this->comicpress->save();
|
$this->comicpress->save();
|
||||||
|
|
||||||
$this->info("ComicPress configuration updated.");
|
$this->info(__("ComicPress configuration updated.", 'comicpress'));
|
||||||
|
|
||||||
$this->comicpress->init();
|
$this->comicpress->init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
<div class="wrap">
|
||||||
|
<h2>Edit partials</h2>
|
||||||
|
<style type="text/css">
|
||||||
|
#partial-list-holder {
|
||||||
|
width: 200px;
|
||||||
|
float: left;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#partial-list-holder a {
|
||||||
|
font-size: 11px
|
||||||
|
}
|
||||||
|
|
||||||
|
#partial-editor {
|
||||||
|
margin-left: 210px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#partial-editor h3 {
|
||||||
|
margin: 0 0 10px
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="partial-list-holder">
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$valid_partials = array();
|
||||||
|
foreach (glob(get_template_directory() . DIRECTORY_SEPARATOR . 'partials' . DIRECTORY_SEPARATOR . '*.inc') as $partial) {
|
||||||
|
if (preg_match('#(partials.*)\.inc$#', $partial, $matches) > 0) {
|
||||||
|
$valid_partials[] = $matches[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$selected = reset($valid_partials);
|
||||||
|
if (isset($_REQUEST['cp']['partial'])) {
|
||||||
|
if (in_array($_REQUEST['cp']['partial'], $valid_partials)) {
|
||||||
|
$selected = $_REQUEST['cp']['partial'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<ul>';
|
||||||
|
foreach ($valid_partials as $partial_name) {
|
||||||
|
echo '<li>';
|
||||||
|
if ($partial_name == $selected) { echo '<strong>'; }
|
||||||
|
echo '<a href="' . add_query_arg('cp[partial]', $partial_name) . '">' . $partial_name . '</a>';
|
||||||
|
if ($partial_name == $selected) { echo '</strong>'; }
|
||||||
|
echo '</li>';
|
||||||
|
}
|
||||||
|
echo '</ul>';
|
||||||
|
|
||||||
|
$is_original = false;
|
||||||
|
if ($_REQUEST['cp']['action'] == __('Delete override partial', 'comicpress')) {
|
||||||
|
unset($_REQUEST['cp']['code']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_REQUEST['cp']['code'])) {
|
||||||
|
$partial_code = htmlentities($_REQUEST['cp']['code']);
|
||||||
|
} else {
|
||||||
|
if (isset($this->comicpress->comicpress_options['override_partials'][$selected])) {
|
||||||
|
$partial_code = htmlentities($this->comicpress->comicpress_options['override_partials'][$selected]);
|
||||||
|
} else {
|
||||||
|
$is_original = true;
|
||||||
|
$partial_code = htmlentities(file_get_contents(get_template_directory() . DIRECTORY_SEPARATOR . $selected . '.inc'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div id="partial-editor">
|
||||||
|
<h3><?php printf(__('Editing %s', 'comicpress'), $selected) ?></h3>
|
||||||
|
<?php if ($is_original) { ?>
|
||||||
|
<p>(<em><?php _e('currently editing default partial', 'comicpress') ?></em>)</p>
|
||||||
|
<?php } ?>
|
||||||
|
<form method="post">
|
||||||
|
<input type="hidden" name="cp[_nonce]" value="<?php echo $nonce ?>" />
|
||||||
|
<input type="hidden" name="cp[partial]" value="<?php echo $selected ?>" />
|
||||||
|
<textarea name="cp[code]" rows="20" style="width: 100%"><?php echo $partial_code ?></textarea>
|
||||||
|
<input type="submit" class="button" name="cp[action]" value="<?php _e('Update partial', 'comicpress') ?>" />
|
||||||
|
<input type="submit" class="button" name="cp[action]" value="<?php _e('Delete override partial', 'comicpress') ?>" onclick="return confirm('<?php _e('Are you sure?', 'comicpress') ?>')" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<br style="clear: both" />
|
||||||
|
</div>
|
|
@ -15,7 +15,7 @@ class CoreTest extends PHPUnit_Framework_TestCase {
|
||||||
function testShowOptionsPage() {
|
function testShowOptionsPage() {
|
||||||
$nonce = wp_create_nonce('comicpress');
|
$nonce = wp_create_nonce('comicpress');
|
||||||
|
|
||||||
$this->core->comicpress = $this->getMock('ComicPress');
|
$this->core->comicpress = $this->getMock('ComicPress', array('get_layout_choices'));
|
||||||
$this->core->comicpress->expects($this->once())->method('get_layout_choices')->will($this->returnValue(array()));
|
$this->core->comicpress->expects($this->once())->method('get_layout_choices')->will($this->returnValue(array()));
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
@ -388,6 +388,38 @@ class CoreTest extends PHPUnit_Framework_TestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestHandleUpdateOverridePartial() {
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'hello',
|
||||||
|
'Update partial'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'meow',
|
||||||
|
'Delete override partial'
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestHandleUpdateOverridePartial
|
||||||
|
*/
|
||||||
|
function testHandleUpdateOverridePartial($code, $action) {
|
||||||
|
$this->core->comicpress = (object)array(
|
||||||
|
'comicpress_options' => array(
|
||||||
|
'override_partials' => array(
|
||||||
|
'index' => '$hiss;'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->core->handle_update_override_partial(array_merge(compact('code', 'action'), array('partial' => 'index')));
|
||||||
|
|
||||||
|
if ($result && $action == "Update partial") {
|
||||||
|
$this->assertEquals($code, $this->core->comicpress->comicpress_options['override_partials']['index']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -15,7 +15,8 @@ class ComicPress {
|
||||||
'comic_space' => 'comic_only',
|
'comic_space' => 'comic_only',
|
||||||
'category_usage' => 'storyline',
|
'category_usage' => 'storyline',
|
||||||
'layout' => 'classic.inc',
|
'layout' => 'classic.inc',
|
||||||
'helpers' => array()
|
'helpers' => array(),
|
||||||
|
'override_partials' => array()
|
||||||
);
|
);
|
||||||
|
|
||||||
var $additional_stylesheets = array();
|
var $additional_stylesheets = array();
|
||||||
|
@ -159,7 +160,7 @@ class ComicPress {
|
||||||
<?php }
|
<?php }
|
||||||
|
|
||||||
function comicpress_partial($content, $target) {
|
function comicpress_partial($content, $target) {
|
||||||
return '<div class="partial-helper">' . substr(realpath($target), strlen(realpath(get_template_directory())) + 1) . '</div>' . $content;
|
return '<div class="partial-helper">' . str_replace(get_template_directory() . DIRECTORY_SEPARATOR, '', $target) . '</div>' . $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -461,6 +462,19 @@ class ComicPress {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_options_partial($partials) {
|
||||||
|
foreach ($partials as $partial) {
|
||||||
|
foreach ($this->partial_paths as $path) {
|
||||||
|
$target = str_replace(get_template_directory() . DIRECTORY_SEPARATOR, '', $path) . DIRECTORY_SEPARATOR . $partial;
|
||||||
|
|
||||||
|
if (isset($this->comicpress_options['override_partials'][$target])) {
|
||||||
|
return array($target, $this->comicpress_options['override_partials'][$target]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gather blog posts for the given index page.
|
* Gather blog posts for the given index page.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,6 +18,12 @@ function __comicpress_init() {
|
||||||
$comicpress->init();
|
$comicpress->init();
|
||||||
$addons = array();
|
$addons = array();
|
||||||
|
|
||||||
|
if (get_magic_quotes_gpc()) {
|
||||||
|
$_POST = stripslashes_deep($_POST);
|
||||||
|
$_GET = stripslashes_deep($_GET);
|
||||||
|
$_REQUEST = stripslashes_deep($_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
if (is_dir($addons_dir = (dirname(__FILE__) . '/addons'))) {
|
if (is_dir($addons_dir = (dirname(__FILE__) . '/addons'))) {
|
||||||
$entries = glob($addons_dir . '/*');
|
$entries = glob($addons_dir . '/*');
|
||||||
if (is_array($entries)) {
|
if (is_array($entries)) {
|
||||||
|
@ -28,24 +34,26 @@ function __comicpress_init() {
|
||||||
require_once($entry . "/${classname}.inc");
|
require_once($entry . "/${classname}.inc");
|
||||||
$classname = "ComicPressAddon${classname}";
|
$classname = "ComicPressAddon${classname}";
|
||||||
if (class_exists($classname)) {
|
if (class_exists($classname)) {
|
||||||
$addons[] = new $classname();
|
$addon =& new $classname();
|
||||||
end($addons)->init(&$comicpress);
|
|
||||||
|
$addon->init(&$comicpress);
|
||||||
if (current_user_can('edit_posts')) {
|
if (current_user_can('edit_posts')) {
|
||||||
if (is_array($_REQUEST['cp'])) {
|
if (is_array($_REQUEST['cp'])) {
|
||||||
if (isset($_REQUEST['cp']['_nonce'])) {
|
if (isset($_REQUEST['cp']['_nonce'])) {
|
||||||
if (wp_verify_nonce($_REQUEST['cp']['_nonce'], 'comicpress')) {
|
if (wp_verify_nonce($_REQUEST['cp']['_nonce'], 'comicpress')) {
|
||||||
if (method_exists(end($addons), 'handle_update')) {
|
if (method_exists($addon, 'handle_update')) {
|
||||||
end($addons)->handle_update();
|
$addon->handle_update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_admin()) {
|
if (is_admin()) {
|
||||||
add_action('admin_notices', array(end($addons), 'display_messages'));
|
add_action('admin_notices', array(&$addon, 'display_messages'));
|
||||||
} else {
|
} else {
|
||||||
add_action('wp_head', array(end($addons), 'display_messages'));
|
add_action('wp_head', array(&$addon, 'display_messages'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$addons[] = $addon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,16 +91,23 @@ function comicpress_get_header() {
|
||||||
function include_partial($partials = '') {
|
function include_partial($partials = '') {
|
||||||
global $comicpress, $post, $nav_comics;
|
global $comicpress, $post, $nav_comics;
|
||||||
|
|
||||||
if (!is_array($partials)) {
|
if (!is_array($partials)) { $partials = func_get_args(); }
|
||||||
$partials = func_get_args();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$content = $target = null;
|
||||||
|
|
||||||
|
if (($result = $comicpress->get_options_partial($partials)) !== false) {
|
||||||
|
list($target, $code) = $result;
|
||||||
|
ob_start(); eval('?>' . $code . '<?'); $content = ob_get_clean();
|
||||||
|
} else {
|
||||||
$target = $comicpress->get_partial_path($partials);
|
$target = $comicpress->get_partial_path($partials);
|
||||||
|
|
||||||
if ($target !== false) {
|
if ($target !== false) {
|
||||||
ob_start();
|
ob_start(); include($target); $content = ob_get_clean();
|
||||||
include($target);
|
}
|
||||||
echo apply_filters("comicpress_partial", ob_get_clean(), $target);
|
}
|
||||||
|
|
||||||
|
if (!empty($target) && !empty($content)) {
|
||||||
|
echo apply_filters("comicpress_partial", $content, $target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ Theme URI: http://comicpress.org
|
||||||
Description: Publish a comic with WordPress. Development version. <a href="http://comicpress.org">Visit the ComicPress Website.</a>
|
Description: Publish a comic with WordPress. Development version. <a href="http://comicpress.org">Visit the ComicPress Website.</a>
|
||||||
Author: Tyler Martin, John Bintz, Philip Hofer
|
Author: Tyler Martin, John Bintz, Philip Hofer
|
||||||
Author URI: http://comicpres.org/
|
Author URI: http://comicpres.org/
|
||||||
Version: 2.8-git
|
Version: 2.999-git
|
||||||
.
|
.
|
||||||
The CSS, XHTML and design is released under GPL v3:
|
The CSS, XHTML and design is released under GPL v3:
|
||||||
http://www.opensource.org/licenses/gpl-3.0.html
|
http://www.opensource.org/licenses/gpl-3.0.html
|
||||||
|
|
|
@ -423,6 +423,34 @@ FILE
|
||||||
|
|
||||||
$this->assertEquals(array('/subthemes/test-one'), $cp->partial_paths);
|
$this->assertEquals(array('/subthemes/test-one'), $cp->partial_paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestGetOverridePartials() {
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
array('partials'),
|
||||||
|
array('index'),
|
||||||
|
array('partials/index'),
|
||||||
|
array('partials/index', true)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array('partials'),
|
||||||
|
array('index'),
|
||||||
|
array('partials/single'),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestGetOverridePartials
|
||||||
|
*/
|
||||||
|
function testGetOverridePartials($partial_paths, $requested_partials, $override_partials, $expected_result) {
|
||||||
|
$this->cp->partial_paths = $partial_paths;
|
||||||
|
foreach ($override_partials as $partial) {
|
||||||
|
$this->cp->comicpress_options['override_partials'][$partial] = true;
|
||||||
|
}
|
||||||
|
$this->assertEquals($expected_result, $this->cp->get_options_partial($requested_partials));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue