languages and admin cleanup
This commit is contained in:
parent
60f5ace20b
commit
ca75c5cf27
@ -17,6 +17,30 @@ class WDTSLanguageOptions {
|
||||
return $language;
|
||||
}
|
||||
|
||||
function set_default_language($language) {
|
||||
$options = get_option($this->key);
|
||||
|
||||
if (isset($options['languages'][$language])) {
|
||||
$ok = true;
|
||||
if (isset($options['languages'][$language]['default'])) {
|
||||
$ok = !$options['languages'][$language]['default'];
|
||||
}
|
||||
if ($ok) {
|
||||
$updated_languages = array();
|
||||
foreach ($options['languages'] as $code => $info) {
|
||||
unset($info['default']);
|
||||
if ($code == $language) { $info['default'] = true; }
|
||||
$updated_languages[$code] = $info;
|
||||
}
|
||||
$options['languages'] = $updated_languages;
|
||||
update_option($this->key, $options);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of a language from the language code.
|
||||
* @param string $language The language code to search for.
|
||||
@ -49,6 +73,7 @@ class WDTSLanguageOptions {
|
||||
if (isset($options['languages'][$code_to_delete])) {
|
||||
$did_delete = $options['languages'][$code_to_delete];
|
||||
unset($options['languages'][$code_to_delete]);
|
||||
ksort($options['languages']);
|
||||
}
|
||||
|
||||
update_option($this->key, $options);
|
||||
@ -63,6 +88,7 @@ class WDTSLanguageOptions {
|
||||
if (!isset($options['languages'][$code])) {
|
||||
if (!empty($info['name'])) {
|
||||
$options['languages'][$code] = $info;
|
||||
ksort($options['languages']);
|
||||
$result = true;
|
||||
}
|
||||
}
|
||||
@ -86,6 +112,7 @@ class WDTSLanguageOptions {
|
||||
$new_languages[$code] = $info;
|
||||
}
|
||||
$options['languages'] = $new_languages;
|
||||
ksort($options['languages']);
|
||||
|
||||
update_option($this->key, $options);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
require_once('WDTSTranscript.php');
|
||||
|
||||
class WDTSQueuedTranscript extends WDTSTranscript { var $key = "queued_transcripts"; }
|
||||
class WDTSApprovedTranscript extends WDTSTranscript { var $key = "approved_transcripts"; }
|
||||
class WDTSQueuedTranscript extends WDTSTranscriptManager { var $key = "queued_transcripts"; }
|
||||
class WDTSApprovedTranscript extends WDTSTranscriptManager { var $key = "approved_transcripts"; }
|
||||
|
||||
?>
|
@ -14,20 +14,27 @@ class WDTSTranscriptOptions {
|
||||
* @param int $post_id The post ID to affect.
|
||||
* @param boolean $allow True if the post can accept new queued transcriptions.
|
||||
*/
|
||||
function set_allow_transcripts_for_post($post_id, $allow = true) {
|
||||
$current_transcripts = get_post_meta($post_id, "transcript_options", true);
|
||||
if (!is_array
|
||||
$current_transcripts['_allow'] = $allow;
|
||||
update_post_meta($post_id, "provided_transcripts", $current_transcripts);
|
||||
}
|
||||
function set_allow_transcripts($allow = true) { $this->_update_option('allow_transcripts', $allow); }
|
||||
|
||||
/**
|
||||
* See if the indicated post is accepting new transcripts.
|
||||
* @return boolean True if the post is acceptin new transcripts.
|
||||
*/
|
||||
function get_allow_transcripts_for_post($post_id) {
|
||||
$current_transcripts = get_post_meta($post_id, "provided_transcripts", true);
|
||||
return $current_transcripts['_allow'];
|
||||
function get_allow_transcripts() {
|
||||
$options = $this->_get_transcript_options();
|
||||
return issset($options['allow_transcripts']) ? $options['allow_transcripts'] : false;
|
||||
}
|
||||
|
||||
function _get_transcript_options() {
|
||||
$current_transcripts = get_post_meta($this->post_id, "transcript_options", true);
|
||||
if (!is_array($current_transcripts)) { $current_transcripts = array(); }
|
||||
return $current_transcripts;
|
||||
}
|
||||
|
||||
function _update_option($option, $value) {
|
||||
$current_options = $this->_get_transcript_options();
|
||||
$current_transcripts[$option] = $value;
|
||||
update_post_meta($this->post_id, "transcript_options", $current_transcripts);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,9 +157,10 @@ class WhatDidTheySayAdmin {
|
||||
* @param array $info The part of the $_POST array for What Did They Say?!?
|
||||
*/
|
||||
function handle_update($info) {
|
||||
foreach (get_class_methods($this) as $method) {
|
||||
if (strpos($method, "handle_update_") === 0) {
|
||||
$result = $this->{$method}($info);
|
||||
if (isset($info['module'])) {
|
||||
$method_name = "handle_update_" . str_replace("-", "_", $info['module']);
|
||||
if (method_exists($this, $method_name)) {
|
||||
$result = $this->{$method_name}($info);
|
||||
if (!empty($result)) { $this->notices[] = $result; }
|
||||
}
|
||||
}
|
||||
@ -173,9 +174,9 @@ class WhatDidTheySayAdmin {
|
||||
function handle_update_queue_transcript($info) {
|
||||
$updated = false;
|
||||
if (current_user_can('submit_transcriptions')) {
|
||||
$queued_transcript = new WDTSTranscriptOptions($info['post_id']));
|
||||
$queued_transcript = new WDTSTranscriptOptions($info['post_id']);
|
||||
|
||||
if ($this->what_did_they_say->get_allow_transcripts_for_post() {
|
||||
if ($this->what_did_they_say->get_allow_transcripts_for_post()) {
|
||||
switch ($info['action']) {
|
||||
case 'submit_queued_transcript':
|
||||
$result = $this->what_did_they_say->add_queued_transcription_to_post($info['post_id'], $info);
|
||||
@ -248,35 +249,33 @@ class WhatDidTheySayAdmin {
|
||||
case "delete":
|
||||
if ($result = $language_options->delete_language($info['code'])) {
|
||||
$updated = sprintf(__('%s deleted.', 'what-did-they-say'), $result['name']);
|
||||
} else {
|
||||
$updated = sprintf(__('Language not deleted!', 'what-did-they-say'));
|
||||
}
|
||||
break;
|
||||
case "add":
|
||||
$this->read_language_file();
|
||||
if (isset($this->all_languages[$info['code']])) {
|
||||
|
||||
|
||||
$options['languages'][$info['code']] = array('name' => $this->all_languages[$info['code']]);
|
||||
if ($language_options->add_language($info['code'], array('name' => $this->all_languages[$info['code']]))) {
|
||||
$updated = sprintf(__('%s added.', 'what-did-they-say'), $this->all_languages[$info['code']]);
|
||||
} else {
|
||||
$updated = sprintf(__('Language not added!', 'what-did-they-say'));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "default":
|
||||
if (isset($options['languages'][$info['code']])) {
|
||||
foreach ($options['languages'] as $code => $lang_info) {
|
||||
if ($code == $info['code']) {
|
||||
$options['languages'][$code]['default'] = true;
|
||||
$updated = sprintf(__('%s set as default.', 'what-did-they-say'), $lang_info['name']);
|
||||
if ($language_options->set_default_language($info['code'])) {
|
||||
$updated = sprintf(__('%s set as default.', 'what-did-they-say'), $language_options->get_language_name($info['code']));
|
||||
} else {
|
||||
unset($options['languages'][$code]['default']);
|
||||
}
|
||||
}
|
||||
$updated = sprintf(__('Language not set as default!', 'what-did-they-say'));
|
||||
}
|
||||
break;
|
||||
case "rename":
|
||||
if (isset($options['languages'][$info['code']])) {
|
||||
if (!empty($info['name'])) {
|
||||
$updated = sprintf(__('%1$s renamed to %2$s.', 'what-did-they-say'), $options['languages'][$info['code']]['name'], $info['name']);
|
||||
$options['languages'][$info['code']]['name'] = $info['name'];
|
||||
}
|
||||
$original_language_name = $language_options->get_language_name($info['code']);
|
||||
if ($language_options->rename_language($info['code'], $info['name'])) {
|
||||
$updated = sprintf(__('%1$s renamed to %2$s.', 'what-did-they-say'), $original_language_name, $info['name']);
|
||||
} else {
|
||||
$updated = sprintf(__('Language not renamed!', 'what-did-they-say'));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -37,8 +37,7 @@
|
||||
|
||||
<table class="widefat fixed">
|
||||
<tr class="thead">
|
||||
<th scope="col" class="manage-col"><?php _e('Language', 'what-did-they-say') ?></th>
|
||||
<th scope="col" class="manage-col"><?php _e('Default?', 'what-did-they-say') ?></th>
|
||||
<th scope="col" class="manage-col" width="35%"><?php _e('Language', 'what-did-they-say') ?></th>
|
||||
<th scope="col" class="manage-col"><?php _e('Rename?', 'what-did-they-say') ?></th>
|
||||
<th scope="col" class="manage-col"><?php _e('Make default?', 'what-did-they-say') ?></th>
|
||||
<th scope="col" class="manage-col"><?php _e('Delete?', 'what-did-they-say') ?></th>
|
||||
@ -50,17 +49,16 @@
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<span><?php echo $name ?></span>
|
||||
<?php if ($default) { _e('(default)', 'what-did-they-say'); } ?>
|
||||
<form method="post" style="display: none">
|
||||
<input type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<input type="hidden" name="wdts[code]" value="<?php echo $code ?>" />
|
||||
<input type="hidden" name="wdts[action]" value="rename" />
|
||||
<input type="hidden" name="wdts[module]" value="languages" />
|
||||
<input type="text" name="wdts[name]" value="<?php echo $name ?>" style="width: 50%" />
|
||||
<input type="submit" class="button" value="Rename" />
|
||||
</form>
|
||||
</th>
|
||||
<td>
|
||||
<?php if ($default) { _e('(yes)', 'what-did-they-say'); } ?>
|
||||
</td>
|
||||
<td style="vertical-align: inherit">
|
||||
<a class="rename button" href="#"><?php _e('Rename', 'what-did-they-say') ?></a>
|
||||
</td>
|
||||
@ -69,7 +67,12 @@
|
||||
<input type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<input type="hidden" name="wdts[code]" value="<?php echo $code ?>" />
|
||||
<input type="hidden" name="wdts[action]" value="default" />
|
||||
<input type="submit" class="button" value="<?php _e('Default', 'what-did-they-say') ?>" />
|
||||
<input type="hidden" name="wdts[module]" value="languages" />
|
||||
<input
|
||||
<?php echo ($default ? 'disabled="disabled"' : '') ?>
|
||||
type="submit"
|
||||
class="button"
|
||||
value="<?php _e('Default', 'what-did-they-say') ?>" />
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
@ -77,6 +80,7 @@
|
||||
<input type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<input type="hidden" name="wdts[code]" value="<?php echo $code ?>" />
|
||||
<input type="hidden" name="wdts[action]" value="delete" />
|
||||
<input type="hidden" name="wdts[module]" value="languages" />
|
||||
<input type="submit" class="button" value="<?php _e('Delete', 'what-did-they-say') ?>" />
|
||||
</form>
|
||||
</td>
|
||||
@ -84,10 +88,11 @@
|
||||
<?php } ?>
|
||||
<tr>
|
||||
<th scope="row"><?php _e('Add new:', 'what-did-they-say') ?></th>
|
||||
<td colspan="4">
|
||||
<td colspan="3">
|
||||
<form method="post">
|
||||
<input type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<input type="hidden" name="wdts[action]" value="add" />
|
||||
<input type="hidden" name="wdts[module]" value="languages" />
|
||||
<select name="wdts[code]">
|
||||
<option value="">-- select --</option>
|
||||
<?php foreach ($this->all_languages as $code => $language) { ?>
|
||||
|
@ -6,13 +6,14 @@ require_once(dirname(__FILE__) . '/../../mockpress/mockpress.php');
|
||||
|
||||
class WDTSLanguageOptionsTest extends PHPUnit_Framework_TestCase {
|
||||
function setUp() {
|
||||
_reset_wp();
|
||||
$this->l = new WDTSLanguageOptions();
|
||||
}
|
||||
|
||||
function testGetDefaultLanguage() {
|
||||
update_option($this->l->key, array(
|
||||
'languages' => array(
|
||||
'en' => array('default' => false),
|
||||
'en' => array(),
|
||||
'de' => array('default' => true)
|
||||
)
|
||||
));
|
||||
@ -20,6 +21,30 @@ class WDTSLanguageOptionsTest extends PHPUnit_Framework_TestCase {
|
||||
$this->assertEquals('de', $this->l->get_default_language());
|
||||
}
|
||||
|
||||
function providerTestSetDefaultLanguage() {
|
||||
return array(
|
||||
array('en', true, array('en' => array('default' => true), 'de' => array())),
|
||||
array('de', false, array('en' => array(), 'de' => array('default' => true))),
|
||||
array('fr', false, array('en' => array(), 'de' => array('default' => true))),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestSetDefaultLanguage
|
||||
*/
|
||||
function testSetDefaultLanguage($set_default, $expected_result, $expected_language_info) {
|
||||
update_option($this->l->key, array(
|
||||
'languages' => array(
|
||||
'en' => array(),
|
||||
'de' => array('default' => true)
|
||||
)
|
||||
));
|
||||
|
||||
$this->assertEquals($expected_result, $this->l->set_default_language($set_default));
|
||||
|
||||
$this->assertEquals($expected_language_info, $this->l->get_languages());
|
||||
}
|
||||
|
||||
function testGetLanguageName() {
|
||||
update_option($this->l->key, array(
|
||||
'languages' => array(
|
||||
|
28
test/WDTSTranscriptOptionsTest.php
Normal file
28
test/WDTSTranscriptOptionsTest.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
require_once('PHPUnit/Framework.php');
|
||||
require_once(dirname(__FILE__) . '/../../mockpress/mockpress.php');
|
||||
require_once(dirname(__FILE__) . '/../classes/WDTSTranscriptOptions.php');
|
||||
|
||||
class WDTSTranscriptOptionsTest extends PHPUnit_Framework_TestCase {
|
||||
function setUp() {
|
||||
_reset_wp();
|
||||
|
||||
wp_insert_post((object)array('ID' => 1));
|
||||
|
||||
$this->to = new WDTSTranscriptOptions(1);
|
||||
}
|
||||
|
||||
function testUpdateOption() {
|
||||
update_post_meta(1, "transcript_options", array('test' => false));
|
||||
|
||||
$this->to->_update_option('test', true);
|
||||
|
||||
$this->assertEquals(
|
||||
array('test' => true),
|
||||
get_post_meta(1, 'transcript_options', true)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -16,50 +16,6 @@ class WhatDidTheySayAdminTest extends PHPUnit_Framework_TestCase {
|
||||
$this->assertTrue(count($admin->read_language_file()) > 0);
|
||||
}
|
||||
|
||||
function providerTestHandleUpdateLanguages() {
|
||||
return array(
|
||||
array(
|
||||
array('en' => array('name' => 'English'), 'de' => array('name' => 'German')),
|
||||
array('code' => 'en', 'action' => 'delete'),
|
||||
array('de' => array('name' => 'German'))
|
||||
),
|
||||
array(
|
||||
array('de' => array('name' => 'German')),
|
||||
array('code' => 'en', 'action' => 'add'),
|
||||
array('en' => array('name' => 'English'), 'de' => array('name' => 'German')),
|
||||
),
|
||||
array(
|
||||
array('en' => array('name' => 'English', 'default' => true), 'de' => array('name' => 'German')),
|
||||
array('code' => 'de', 'action' => 'default'),
|
||||
array('en' => array('name' => 'English'), 'de' => array('name' => 'German', 'default' => true)),
|
||||
),
|
||||
array(
|
||||
array('en' => array('name' => 'English'), 'de' => array('name' => 'German')),
|
||||
array('code' => 'de', 'action' => 'rename', 'name' => 'Deutsch'),
|
||||
array('en' => array('name' => 'English'), 'de' => array('name' => 'Deutsch')),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestHandleUpdateLanguages
|
||||
*/
|
||||
function testHandleUpdateLanguages($original_options, $form_submission, $expected_results) {
|
||||
$admin = new WhatDidTheySayAdmin();
|
||||
$admin->all_languages = array(
|
||||
'en' => 'English',
|
||||
'de' => 'German',
|
||||
'fr' => 'French'
|
||||
);
|
||||
|
||||
update_option('what-did-they-say-options', array('languages' => $original_options));
|
||||
|
||||
$admin->handle_update_languages($form_submission);
|
||||
|
||||
$options = get_option('what-did-they-say-options');
|
||||
$this->assertEquals($expected_results, $options['languages']);
|
||||
}
|
||||
|
||||
function testBuildFullDefaultLanguageInfo() {
|
||||
$admin = new WhatDidTheySayAdmin();
|
||||
$admin->all_languages = array(
|
||||
|
@ -26,7 +26,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
foreach (glob(dirname(__FILE__) . '/classes/*.php') as $file) { require_once($file); }
|
||||
|
||||
$what_did_they_say =& new WhatDidTheySay();
|
||||
$what_did_they_say_admin =& new WhatDidTheySayAdmin(&$what_did_they_say);
|
||||
|
||||
add_action('init', array(&$what_did_they_say_admin, 'init'));
|
||||
|
Loading…
Reference in New Issue
Block a user