From 852c00f16f5e1244e34591cd3b6ab26e71e43bc3 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Thu, 13 Aug 2009 22:13:46 -0400 Subject: [PATCH] working on reworking language options --- .gitignore | 2 ++ classes/WhatDidTheySayAdmin.php | 42 +++++++++++++++++++++++++------- classes/admin.inc | 34 ++++++++++++++++++-------- test/WhatDidTheySayAdminTest.php | 28 +++++++++++++++++---- 4 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5236e1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ + diff --git a/classes/WhatDidTheySayAdmin.php b/classes/WhatDidTheySayAdmin.php index 4fc4801..7a06fbf 100644 --- a/classes/WhatDidTheySayAdmin.php +++ b/classes/WhatDidTheySayAdmin.php @@ -1,12 +1,16 @@ 'en', 'default' => true), - 'fr', - 'es', - 'it', - 'de' + var $default_options = array( + 'languages' => array( + array('code' => 'en', 'default' => true), + 'fr', + 'es', + 'it', + 'de' + ), + 'only_allowed_users' => false, + 'users' => array() ); var $language_file; @@ -20,6 +24,7 @@ class WhatDidTheySayAdmin { $this->what_did_they_say = $what_did_they_say; add_action('admin_menu', array(&$this, 'admin_menu')); + wp_enqueue_script('prototype'); if (isset($_POST['wdts'])) { if (isset($_POST['wdts']['_nonce'])) { @@ -28,6 +33,8 @@ class WhatDidTheySayAdmin { } } } + + $this->read_language_file(); } function _update_options($which, $value) { @@ -37,6 +44,8 @@ class WhatDidTheySayAdmin { } function handle_update_languages($language_info) { + + $languages = array(); foreach ($language_info as $code => $info) { if (isset($this->all_languages[$code])) { @@ -90,9 +99,9 @@ class WhatDidTheySayAdmin { } function install() { - $languages = get_option('what-did-they-say-languages'); - if (empty($languages)) { - update_option('what-did-they-say-languages', $this->default_languages); + $options = get_option('what-did-they-say-options'); + if (empty($options)) { + update_option('what-did-they-say-options', $this->default_options); } } @@ -120,6 +129,21 @@ class WhatDidTheySayAdmin { function manage_transcriptions_admin() { $options = get_option('what-did-they-say-options'); + + $language_map_pairs = array(); + $basic_languages = $all_languages = array(); + foreach ($this->all_languages as $code => $name) { + $name = addslashes($name); + $language_map_pairs[] = "'${code}': '${name}'"; + $all_languages[] = "'$code'"; + if (strlen($code) == 2) { + $basic_languages[] = "'$code'"; + } + } + + $nonce = wp_create_nonce('what-did-they-say'); + + $nonce_url = add_query_arg('wdts[_nonce]', $nonce); include(dirname(__FILE__) . '/admin.inc'); } diff --git a/classes/admin.inc b/classes/admin.inc index bfa09c6..90ce593 100644 --- a/classes/admin.inc +++ b/classes/admin.inc @@ -3,22 +3,36 @@

Queued Transcripts

-

Available Languages

- +

Languages

+ - \ No newline at end of file + + + diff --git a/test/WhatDidTheySayAdminTest.php b/test/WhatDidTheySayAdminTest.php index e17a807..502b9f2 100644 --- a/test/WhatDidTheySayAdminTest.php +++ b/test/WhatDidTheySayAdminTest.php @@ -14,18 +14,36 @@ class WhatDidTheySayAdminTest extends PHPUnit_Framework_TestCase { $this->assertTrue(count($admin->read_language_file()) > 0); } - - function testHandleUpdateLanguages() { + + function providerTestHandleUpdateLanguages() { + return array( + array( + array( + array('en' => array('name' => 'English'), 'de' => array('name' => 'German')), + array('code' => 'en', 'action' => 'delete'), + array('de' => array('name' => 'German')) + ) + ) + ); + } + + /** + * @dataProvider providerTestHandleUpdateLanguages + */ + function testHandleUpdateLanguages($original_options, $form_submission, $expected_results) { $admin = new WhatDidTheySayAdmin(); $admin->all_languages = array( 'en' => 'English', - 'de' => 'German' + 'de' => 'German', + 'fr' => 'French' ); + + update_option('what-did-they-say-options', array('languages', $original_options)); - $admin->handle_update_languages(array('en' => array(), 'de' => array('default' => 'yes'), 'meow' => array())); + $admin->handle_update_languages($form_submission); $options = get_option('what-did-they-say-options'); - $this->assertEquals(array('en', array('code' => 'de', 'default' => true)), $options['languages']); + $this->assertEquals($expected_results, $options['languages']); } function testHandleUpdateAllowedUsers() {