Merge branch 'master' of ssh://claritycomic.com/home/john/repositories/what-did-they-say
This commit is contained in:
commit
c0c2d0a9ad
|
@ -214,6 +214,26 @@ class WhatDidTheySay {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get_default_language() {
|
||||
$language = false;
|
||||
$options = get_option('what-did-they-say-options');
|
||||
foreach ($options['languages'] as $code => $info) {
|
||||
if (is_null($language)) { $language = $code; }
|
||||
if ($info['default']) { $language = $code; break; }
|
||||
}
|
||||
return $language;
|
||||
}
|
||||
|
||||
function get_language_name($language) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
|
||||
if (isset($options['languages'][$language])) {
|
||||
return $options['languages'][$language]['name'];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -29,6 +29,9 @@ class WhatDidTheySayAdmin {
|
|||
$this->language_file = dirname(__FILE__) . '/../data/lsr-language.txt';
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the object.
|
||||
*/
|
||||
function init() {
|
||||
$this->capabilities = array(
|
||||
'submit_transcriptions' => __('Submit transcriptions to a post', 'what-did-they-say'),
|
||||
|
@ -42,6 +45,10 @@ class WhatDidTheySayAdmin {
|
|||
wp_enqueue_script('prototype');
|
||||
|
||||
add_filter('user_has_cap', array(&$this, 'user_has_cap'), 5, 3);
|
||||
add_filter('the_media_transcript', array(&$this, 'the_media_transcript'));
|
||||
add_filter('the_language_name', array(&$this, 'the_language_name'));
|
||||
|
||||
add_filter('wp_footer', array(&$this, 'wp_footer'));
|
||||
|
||||
if (isset($_REQUEST['wdts'])) {
|
||||
if (isset($_REQUEST['wdts']['_nonce'])) {
|
||||
|
@ -54,6 +61,35 @@ class WhatDidTheySayAdmin {
|
|||
$this->read_language_file();
|
||||
}
|
||||
|
||||
function the_media_transcript($transcript) {
|
||||
return '<div class="transcript">' . $transcript . '</div>';
|
||||
}
|
||||
|
||||
function the_language_name($language) {
|
||||
return '<h3>' . $language . '</h3>';
|
||||
}
|
||||
|
||||
function wp_footer() { ?>
|
||||
<script type="text/javascript">
|
||||
$$('.transcript-bundle').each(function(d) {
|
||||
var select = d.select("select");
|
||||
if (select.length == 1) {
|
||||
select = select[0];
|
||||
var toggle_transcripts = function() {
|
||||
d.select(".transcript-holder").each(function(div) {
|
||||
div.hasClassName($F(select)) ? div.show() : div.hide();
|
||||
});
|
||||
};
|
||||
Event.observe(select, 'change', toggle_transcripts);
|
||||
Event.observe(window, 'load', toggle_transcripts)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<?php }
|
||||
|
||||
/**
|
||||
* user_has_cap filter.
|
||||
*/
|
||||
function user_has_cap($capabilities, $requested_capabilities, $capability_name) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
|
||||
|
@ -75,104 +111,112 @@ class WhatDidTheySayAdmin {
|
|||
return $capabilities;
|
||||
}
|
||||
|
||||
function _update_options($which, $value) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
$options[$which] = $value;
|
||||
update_option('what-did-they-say-options', $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show admin notices.
|
||||
*/
|
||||
function admin_notices() {
|
||||
if (!empty($this->notices)) {
|
||||
echo '<div class="updated fade">';
|
||||
echo implode("<br />", $this->notices);
|
||||
foreach ($this->notices as $notice) { echo "<p>" . $notice . "</p>"; }
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an update to options.
|
||||
*/
|
||||
function handle_update($info) {
|
||||
foreach (array(
|
||||
'languages', 'capabilities'
|
||||
) as $method) {
|
||||
$result = $this->{"handle_update_${method}"}($info);
|
||||
if (!empty($result)) { $this->notices[] = $result; }
|
||||
foreach (get_class_methods($this) as $method) {
|
||||
if (strpos($method, "handle_update_") === 0) {
|
||||
$result = $this->{$method}($info);
|
||||
if (!empty($result)) { $this->notices[] = $result; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handle_update_languages($language_info) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
function handle_update_post_transcripts($post_transcript_info) {
|
||||
$updated = false;
|
||||
switch ($language_info['action']) {
|
||||
case "delete":
|
||||
$updated = sprintf(__('%s deleted.', 'what-did-they-say'), $options['languages'][$language_info['code']]['name']);
|
||||
unset($options['languages'][$language_info['code']]);
|
||||
break;
|
||||
case "add":
|
||||
$this->read_language_file();
|
||||
if (isset($this->all_languages[$language_info['code']])) {
|
||||
$options['languages'][$language_info['code']] = array('name' => $this->all_languages[$language_info['code']]);
|
||||
$updated = sprintf(__('%s added.', 'what-did-they-say'), $this->all_languages[$language_info['code']]);
|
||||
}
|
||||
break;
|
||||
case "default":
|
||||
if (isset($options['languages'][$language_info['code']])) {
|
||||
foreach ($options['languages'] as $code => $info) {
|
||||
if ($code == $language_info['code']) {
|
||||
$options['languages'][$code]['default'] = true;
|
||||
$updated = sprintf(__('%s set as default.', 'what-did-they-say'), $info['name']);
|
||||
} else {
|
||||
unset($options['languages'][$code]['default']);
|
||||
if (current_user_can('approve_transcriptions')) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
|
||||
switch ($post_transcript_info['action']) {
|
||||
case "manage_post_transcripts":
|
||||
foreach ($post_transcript_info['transcripts'] as $language => $transcript) {
|
||||
$this->what_did_they_say->save_transcript($post_transcript_info['post_id'], $language, $transcript);
|
||||
}
|
||||
$updated = __('Transcripts updated', 'what-did-they-say');
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $updated;
|
||||
}
|
||||
|
||||
function handle_update_languages($language_info) {
|
||||
$updated = false;
|
||||
if (current_user_can('change_languages')) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
switch ($language_info['action']) {
|
||||
case "delete":
|
||||
$updated = sprintf(__('%s deleted.', 'what-did-they-say'), $options['languages'][$language_info['code']]['name']);
|
||||
unset($options['languages'][$language_info['code']]);
|
||||
break;
|
||||
case "add":
|
||||
$this->read_language_file();
|
||||
if (isset($this->all_languages[$language_info['code']])) {
|
||||
$options['languages'][$language_info['code']] = array('name' => $this->all_languages[$language_info['code']]);
|
||||
$updated = sprintf(__('%s added.', 'what-did-they-say'), $this->all_languages[$language_info['code']]);
|
||||
}
|
||||
break;
|
||||
case "default":
|
||||
if (isset($options['languages'][$language_info['code']])) {
|
||||
foreach ($options['languages'] as $code => $info) {
|
||||
if ($code == $language_info['code']) {
|
||||
$options['languages'][$code]['default'] = true;
|
||||
$updated = sprintf(__('%s set as default.', 'what-did-they-say'), $info['name']);
|
||||
} else {
|
||||
unset($options['languages'][$code]['default']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "rename":
|
||||
if (isset($options['languages'][$language_info['code']])) {
|
||||
if (!empty($language_info['name'])) {
|
||||
$updated = sprintf(__('%1$s renamed to %2$s.', 'what-did-they-say'), $options['languages'][$language_info['code']]['name'], $language_info['name']);
|
||||
$options['languages'][$language_info['code']]['name'] = $language_info['name'];
|
||||
break;
|
||||
case "rename":
|
||||
if (isset($options['languages'][$language_info['code']])) {
|
||||
if (!empty($language_info['name'])) {
|
||||
$updated = sprintf(__('%1$s renamed to %2$s.', 'what-did-they-say'), $options['languages'][$language_info['code']]['name'], $language_info['name']);
|
||||
$options['languages'][$language_info['code']]['name'] = $language_info['name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
ksort($options['languages']);
|
||||
update_option('what-did-they-say-options', $options);
|
||||
break;
|
||||
}
|
||||
if ($updated !== false) {
|
||||
ksort($options['languages']);
|
||||
update_option('what-did-they-say-options', $options);
|
||||
}
|
||||
}
|
||||
return $updated;
|
||||
}
|
||||
|
||||
function handle_update_capabilities($capabilities_info) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
$updated = false;
|
||||
switch ($capabilities_info['action']) {
|
||||
case "capabilities":
|
||||
if (isset($capabilities_info['capabilities'])) {
|
||||
foreach (array_keys($this->default_options['capabilities']) as $capability) {
|
||||
if (isset($capabilities_info['capabilities'][$capability])) {
|
||||
$options['capabilities'][$capability] = $capabilities_info['capabilities'][$capability];
|
||||
if (current_user_can('edit_users')) {
|
||||
$options = get_option('what-did-they-say-options');
|
||||
switch ($capabilities_info['action']) {
|
||||
case "capabilities":
|
||||
if (isset($capabilities_info['capabilities'])) {
|
||||
foreach (array_keys($this->default_options['capabilities']) as $capability) {
|
||||
if (isset($capabilities_info['capabilities'][$capability])) {
|
||||
$options['capabilities'][$capability] = $capabilities_info['capabilities'][$capability];
|
||||
}
|
||||
}
|
||||
$updated = __('User capabilities updated', 'what-did-they-say');
|
||||
}
|
||||
$updated = __('User capabilities updated', 'what-did-they-say');
|
||||
}
|
||||
break;
|
||||
}
|
||||
update_option('what-did-they-say-options', $options);
|
||||
return $updated;
|
||||
}
|
||||
|
||||
function handle_update_options($requested_options) {
|
||||
$updated_options = array(
|
||||
'only_allowed_users' => false
|
||||
);
|
||||
|
||||
foreach ($requested_options as $option => $value) {
|
||||
switch ($option) {
|
||||
case 'only_allowed_users':
|
||||
$updated_options['only_allowed_users'] = true;
|
||||
break;
|
||||
}
|
||||
if ($updated !== false) {
|
||||
update_option('what-did-they-say-options', $options);
|
||||
}
|
||||
}
|
||||
|
||||
$options = array_merge(get_option('what-did-they-say-options'), $updated_options);
|
||||
update_option('what-did-they-say-options', $options);
|
||||
return $updated;
|
||||
}
|
||||
|
||||
function read_language_file() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<iuput type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<iuput type="hidden" name="wdts[action]" value="manage_post_transcripts" />
|
||||
<input type="hidden" name="wdts[_nonce]" value="<?php echo $nonce ?>" />
|
||||
<input type="hidden" name="wdts[action]" value="manage_post_transcripts" />
|
||||
<input type="hidden" name="wdts[post_id]" value="<?php echo $post->ID ?>" />
|
||||
<p>
|
||||
<label>
|
||||
Edit transcript for:
|
||||
|
|
|
@ -59,19 +59,6 @@ class WhatDidTheySayAdminTest extends PHPUnit_Framework_TestCase {
|
|||
$this->assertEquals($expected_results, $options['languages']);
|
||||
}
|
||||
|
||||
function testHandleUpdateOptions() {
|
||||
$admin = new WhatDidTheySayAdmin();
|
||||
|
||||
update_option('what-did-they-say-options', array('only_allowed_users' => false));
|
||||
|
||||
$admin->handle_update_options(array(
|
||||
'only_allowed_users' => 'yes'
|
||||
));
|
||||
|
||||
$options = get_option('what-did-they-say-options');
|
||||
$this->assertTrue($options['only_allowed_users']);
|
||||
}
|
||||
|
||||
function testBuildFullDefaultLanguageInfo() {
|
||||
$admin = new WhatDidTheySayAdmin();
|
||||
$admin->all_languages = array(
|
||||
|
|
|
@ -33,4 +33,83 @@ add_action('init', array(&$what_did_they_say_admin, 'init'));
|
|||
register_activation_hook(__FILE__, array(&$what_did_they_say, 'install'));
|
||||
register_activation_hook(__FILE__, array(&$what_did_they_say_admin, 'install'));
|
||||
|
||||
function get_the_media_transcript($language = null) {
|
||||
global $post, $what_did_they_say;
|
||||
|
||||
if (is_null($language)) { $language = $what_did_they_say->get_default_language(); }
|
||||
|
||||
$transcript = false;
|
||||
$transcripts = $what_did_they_say->get_transcripts($post->ID);
|
||||
if (!empty($transcripts)) {
|
||||
if (isset($transcripts[$language])) { $transcript = $transcripts[$language]; }
|
||||
}
|
||||
return $transcript;
|
||||
}
|
||||
|
||||
function the_media_transcript($language = null) {
|
||||
$transcript = apply_filters('the_media_transcript', get_the_media_transcript());
|
||||
echo $transcript;
|
||||
}
|
||||
|
||||
function get_the_language_name($language = null) {
|
||||
global $what_did_they_say;
|
||||
|
||||
if (is_null($language)) { $language = $what_did_they_say->get_default_language(); }
|
||||
return $what_did_they_say->get_language_name($language);
|
||||
}
|
||||
|
||||
function the_language_name($language = null) {
|
||||
$name = apply_filters('the_language_name', get_the_language_name($language));
|
||||
echo $name;
|
||||
}
|
||||
|
||||
function the_media_transcript_select_and_display($dropdown_message = null, $single_language_message = null) {
|
||||
global $post, $what_did_they_say;
|
||||
|
||||
if (is_null($dropdown_message)) { $dropdown_message = __('Select a language:', 'what-did-they-say'); }
|
||||
if (is_null($single_language_message)) { $single_language_message = __('%s transcript:', 'what-did-they-say'); }
|
||||
|
||||
$transcripts = array();
|
||||
foreach ($what_did_they_say->get_transcripts($post->ID) as $code => $transcript) {
|
||||
$transcript = trim($transcript);
|
||||
if (!empty($transcript)) {
|
||||
$transcripts[$code] = $transcript;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($transcripts) > 0) {
|
||||
$default_language = $what_did_they_say->get_default_language();
|
||||
|
||||
$output = array();
|
||||
$output[] = '<div class="transcript-bundle">';
|
||||
|
||||
if (count($transcripts) == 1) {
|
||||
list($code, $transcript) = each($transcripts);
|
||||
$output[] = apply_filters('the_language_name', get_the_language_name($code));
|
||||
$output[] = apply_filters('the_media_transcript', $transcript);
|
||||
} else {
|
||||
$output[] = $dropdown_message;
|
||||
$output[] = '<select>';
|
||||
foreach($transcripts as $code => $transcript) {
|
||||
$output[] = '<option value="' . $code . '"' . (($code == $default_language) ? ' selected="selected"' : '') . '>'
|
||||
. get_the_language_name($code)
|
||||
. '</option>';
|
||||
}
|
||||
$output[] = '</select>';
|
||||
foreach ($transcripts as $code => $transcript) {
|
||||
$language_name = apply_filters('the_language_name', get_the_language_name($code));
|
||||
$transcript = apply_filters('the_media_transcript', $transcript);
|
||||
|
||||
$output[] = '<div '
|
||||
. (($code == $default_language) ? 'style="display:none"' : '')
|
||||
. ' class="transcript-holder ' . $code . '">' . $language_name . $transcript . '</div>';
|
||||
}
|
||||
}
|
||||
$output[] = '</div>';
|
||||
|
||||
$output = apply_filters('the_media_transcript_select_and_display', implode("\n", $output));
|
||||
echo $output;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue