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')) { + ?> + + + + + + + + + +
Title (hover) text: + +
Alt (accessibility) text: + +
+ 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)); }