From 195ac26b8aae4ebda0b2cf72b44a76460e1471b6 Mon Sep 17 00:00:00 2001
From: John Bintz
Date: Thu, 11 Feb 2010 19:05:39 -0500
Subject: [PATCH] saving metadata via ui works, now just needs some tests
written
---
.../backends/ComicPressBackendFilesystem.inc | 73 ++++++++++++++++++-
.../_comic-image-ordering-sorters.inc | 2 +-
js/ComicImageOrdering.js | 8 --
...ComicPressBackendFilesystemFactoryTest.php | 23 ++++++
4 files changed, 96 insertions(+), 10 deletions(-)
diff --git a/classes/backends/ComicPressBackendFilesystem.inc b/classes/backends/ComicPressBackendFilesystem.inc
index 79b24b9..4578c63 100644
--- a/classes/backends/ComicPressBackendFilesystem.inc
+++ b/classes/backends/ComicPressBackendFilesystem.inc
@@ -47,11 +47,22 @@ class ComicPressBackendFilesystemFactory {
if (isset($result[0][$root])) {
$return = new ComicPressBackendFilesystem();
$return->id = $id;
+ $return->root = $root;
foreach (array('files_by_type', 'file_urls_by_type') as $index => $name) {
$return->{$name} = $result[$index][$root];
}
+ if (($result = get_post_meta($post_id, 'backend_filesystem_image_meta', true)) !== false) {
+ if (is_array($result)) {
+ if (isset($result[$root])) {
+ foreach ($result[$root] as $key => $value) {
+ $return->{$key} = $value;
+ }
+ }
+ }
+ }
+
return $return;
}
}
@@ -103,6 +114,7 @@ class ComicPressBackendFilesystemFactory {
if (!empty($files)) {
$grouped_by_root = $this->group_by_root($filename_pattern, $files);
$urls_by_root = $this->get_urls_for_post_roots($grouped_by_root, $post);
+ $image_meta_by_root = array();
update_post_meta($post->ID, 'backend_filesystem_files_by_type', array($grouped_by_root, $urls_by_root));
foreach ($grouped_by_root as $root => $files_for_root) {
@@ -112,6 +124,14 @@ class ComicPressBackendFilesystemFactory {
$fs->file_urls_by_type = $urls_by_root[$root];
$return[] = $fs;
+
+ $image_meta_by_root[$root] = array(
+ 'alt_text' => '',
+ 'title_text' => ''
+ );
+ }
+ if (!($check = get_post_meta($post->ID, 'backend_filesystem_image_meta', true))) {
+ update_post_meta($post->ID, 'backend_filesystem_image_meta', array($image_meta_by_root));
}
}
}
@@ -325,6 +345,8 @@ class ComicPressBackendFilesystemAdmin {
include('partials/backend-filesystem/image-type-holder.inc');
}
+ // @codeCoverageIgnoreEnd
+
function handle_update_comicpress_options($info) {
if (isset($info['backend_options']['filesystem'])) {
$info = $info['backend_options']['filesystem'];
@@ -351,11 +373,60 @@ class ComicPressBackendFilesystemAdmin {
}
}
+ function save_post($post_id) {
+ if (isset($_POST['cp'])) {
+ $info = $_POST['cp'];
+ if (isset($info['attachments'])) {
+ $image_meta_updates = array();
+ foreach ($info['attachments'] as $id => $properties) {
+ if ($backend = ComicPressBackend::generate_from_id($id)) {
+ if (is_a($backend, 'ComicPressBackendFilesystem')) {
+ $image_meta_updates[$backend->root] = array();
+ foreach (array('alt_text', 'title_text') as $field) {
+ if (isset($properties[$field])) {
+ $image_meta_updates[$backend->root][$field] = strip_tags($properties[$field]);
+ } else {
+ $image_meta_updates[$backend->root][$field] = '';
+ }
+ }
+ }
+ }
+ }
+ update_post_meta($post_id, 'backend_filesystem_image_meta', $image_meta_updates);
+ }
+ }
+ }
+
+ // @codeCoverageIgnoreStart
+
+ function comic_ordering_holder($backend) {
+ if (is_a($backend, 'ComicPressBackendFilesystem')) {
+ ?>
+
+ source_name) ?>:
comicpress_options['image_types']) > 1) { ?>
-
+
diff --git a/js/ComicImageOrdering.js b/js/ComicImageOrdering.js
index 6a25d9a..adb654a 100644
--- a/js/ComicImageOrdering.js
+++ b/js/ComicImageOrdering.js
@@ -105,14 +105,6 @@ ComicImageOrdering.setup = function() {
ComicImageOrdering.build_response();
});
});
-
- var associations_box = att.select('.comic-ordering-associations').pop();
- associations_box[($H(ComicImageOrdering.ids_with_children[id]).keys().length == 0) ? 'hide' : 'show']();
-
- att.select('.comic-ordering-show-associations').pop().observe('click', function(e) {
- Event.stop(e);
- new Effect[associations_box.visible() ? 'BlindUp' : 'BlindDown'](associations_box, { duration: 0.25 });
- });
});
$$('#comic-ordering input[type=checkbox]').each(function(ch) {
diff --git a/test/backends/ComicPressBackendFilesystemFactoryTest.php b/test/backends/ComicPressBackendFilesystemFactoryTest.php
index 1221296..92f7506 100644
--- a/test/backends/ComicPressBackendFilesystemFactoryTest.php
+++ b/test/backends/ComicPressBackendFilesystemFactoryTest.php
@@ -20,6 +20,9 @@ class ComicPressBackendFilesystemFactoryTest extends PHPUnit_Framework_TestCase
$valid_backend->id = 'filesystem-1--test';
$valid_backend->files_by_type = array('comic' => 'comic-file');
$valid_backend->file_urls_by_type = array('comic' => 'comic-url');
+ $valid_backend->alt_text = 'alt text';
+ $valid_backend->title_text = 'title text';
+ $valid_backend->root = '-test';
return array(
array('blah', false),
@@ -45,6 +48,17 @@ class ComicPressBackendFilesystemFactoryTest extends PHPUnit_Framework_TestCase
)
);
+ update_post_meta(
+ 1,
+ 'backend_filesystem_image_meta',
+ array(
+ '-test' => array(
+ 'alt_text' => 'alt text',
+ 'title_text' => 'title text'
+ )
+ )
+ );
+
if ($is_successful) {
$return = $is_successful;
} else {
@@ -130,6 +144,15 @@ class ComicPressBackendFilesystemFactoryTest extends PHPUnit_Framework_TestCase
)
)
), get_post_meta(1, 'backend_filesystem_files_by_type', true));
+
+ $this->assertEquals(array(
+ array(
+ 'root' => array(
+ 'alt_text' => '',
+ 'title_text' => ''
+ )
+ )
+ ), get_post_meta(1, 'backend_filesystem_image_meta', true));
}