handle managing transcripts
This commit is contained in:
parent
7a643f4fef
commit
f1b39cf269
@ -171,13 +171,8 @@ class WhatDidTheySay {
|
||||
global $wpdb;
|
||||
|
||||
if (current_user_can('submit_transcriptions')) {
|
||||
$query = $wpdb->prepare("SELECT id FROM " . $this->table . " WHERE id = %d", $transcription_id);
|
||||
if (!is_null($wpdb->get_var($query))) {
|
||||
$query = $wpdb->prepare("DELETE FROM " . $this->table . " WHERE id = %d", $transcription_id);
|
||||
$wpdb->query($query);
|
||||
|
||||
return true;
|
||||
}
|
||||
$query = $wpdb->prepare("DELETE FROM " . $this->table . " WHERE id = %d", $transcription_id);
|
||||
return $wpdb->query($query);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -195,10 +190,8 @@ class WhatDidTheySay {
|
||||
$post = get_post($result->post_id);
|
||||
if (!empty($post)) {
|
||||
$this->save_transcript($result->post_id, $result->language, $result->transcript);
|
||||
|
||||
$query = $wpdb->prepare("DELETE FROM " . $this->table . " WHERE id = %d", $transcription_id);
|
||||
$result = $wpdb->query($query);
|
||||
}
|
||||
$this->delete_queued_transcription($transcription_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ class WhatDidTheySayAdmin {
|
||||
|
||||
add_action('admin_menu', array(&$this, 'admin_menu'));
|
||||
add_action('admin_notices', array(&$this, 'admin_notices'));
|
||||
|
||||
add_action('admin_init', array(&$this, 'admin_init'));
|
||||
|
||||
wp_enqueue_script('prototype');
|
||||
|
||||
add_filter('user_has_cap', array(&$this, 'user_has_cap'), 5, 3);
|
||||
@ -61,6 +62,10 @@ class WhatDidTheySayAdmin {
|
||||
$this->read_language_file();
|
||||
}
|
||||
|
||||
function admin_init() {
|
||||
wp_enqueue_script('scriptaculous-effects');
|
||||
}
|
||||
|
||||
function the_media_transcript($transcript) {
|
||||
return '<div class="transcript">' . $transcript . '</div>';
|
||||
}
|
||||
@ -137,7 +142,7 @@ class WhatDidTheySayAdmin {
|
||||
function handle_update_queue_transcript($queue_transcript_info) {
|
||||
$updated = false;
|
||||
if (current_user_can('submit_transcriptions')) {
|
||||
if ($what_did_they_say->get_allow_transcripts_for_post($queue_transcript_info['post_id'])) {
|
||||
if ($this->what_did_they_say->get_allow_transcripts_for_post($queue_transcript_info['post_id'])) {
|
||||
switch ($queue_transcript_info['action']) {
|
||||
case 'submit_queued_transcript':
|
||||
$result = $this->what_did_they_say->add_queued_transcription_to_post($queue_transcript_info['post_id'], $queue_transcript_info);
|
||||
@ -167,7 +172,23 @@ class WhatDidTheySayAdmin {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->what_did_they_say->set_allow_transcripts_for_post($post_transcript_info['post_id'], isset($post_transcript_info['allow_on_post']));
|
||||
|
||||
$queued_transcriptions = $this->what_did_they_say->get_queued_transcriptions_for_post($post_transcript_info['post_id']);
|
||||
if (is_array($queued_transcriptions)) {
|
||||
$transcriptions_to_delete = array();
|
||||
|
||||
foreach ($queued_transcriptions as $transcription) { $transcriptions_to_delete[$transcription->id] = true; }
|
||||
if (isset($post_transcript_info['queue'])) {
|
||||
foreach ($post_transcript_info['queue'] as $id => $keep) { unset($transcriptions_to_delete[$id]); }
|
||||
}
|
||||
|
||||
foreach (array_keys($transcriptions_to_delete) as $id) {
|
||||
$this->what_did_they_say->delete_queued_transcription($id);
|
||||
}
|
||||
}
|
||||
|
||||
$updated = __('Transcripts updated', 'what-did-they-say');
|
||||
break;
|
||||
}
|
||||
@ -317,6 +338,8 @@ class WhatDidTheySayAdmin {
|
||||
|
||||
$options = get_option('what-did-they-say-options');
|
||||
$transcripts = $this->what_did_they_say->get_transcripts($post->ID);
|
||||
$queued_transcriptions = $this->what_did_they_say->get_queued_transcriptions_for_post($post->ID);
|
||||
|
||||
$nonce = wp_create_nonce('what-did-they-say');
|
||||
include(dirname(__FILE__) . '/meta-box.inc');
|
||||
}
|
||||
|
@ -7,9 +7,35 @@
|
||||
<?php _e('Allow new transcripts to be submitted for this post', 'what-did-they-say') ?>
|
||||
</label>
|
||||
</p>
|
||||
<?php if (is_array($queued_transcriptions) && !empty($queued_transcriptions)) { ?>
|
||||
<p><strong><?php _e('Manage queued transcripts:', 'what-did-they-say') ?></strong></p>
|
||||
<?php foreach ($queued_transcriptions as $transcription) {
|
||||
$user = get_userdata($transcription->user_id);
|
||||
if (!empty($user)) { ?>
|
||||
|
||||
<div class="queued-transcription-holder">
|
||||
<input type="hidden" name="wdts[queue][<?php echo $transcription->id ?>]" value="keep" />
|
||||
<input type="hidden" name="wdts[language][<?php echo $transcription->id ?>]" value="<?php echo $transcription->language ?>" />
|
||||
<p><?php
|
||||
printf(
|
||||
__('From <strong>%s</strong> in <strong>%s</strong>:', 'what-did-they-say'),
|
||||
$user->display_name,
|
||||
$this->what_did_they_say->get_language_name($transcription->language)
|
||||
)
|
||||
?></p>
|
||||
<div class="queued-transcription"><?php echo $transcription->transcript ?></div>
|
||||
<div class="queued-transcription-raw" style="display:none"><?php echo $transcription->transcript ?></div>
|
||||
<div style="padding: 10px 0">
|
||||
<a href="#" class="approve-transcript button">Approve</a>
|
||||
<a href="#" class="delete-transcript button">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<p>
|
||||
<label>
|
||||
<?php _e('Edit transcript for:', 'what-did-they-say') ?>
|
||||
<?php _e('Edit provided transcript for:', 'what-did-they-say') ?>
|
||||
<select name="wdts[language]" id="wdts-language">
|
||||
<?php foreach ($options['languages'] as $code => $info) { ?>
|
||||
<option value="<?php echo $code ?>" <?php echo $info['default'] ? 'selected="selected"' : '' ?>><?php echo $info['name'] ?></option>
|
||||
@ -29,4 +55,43 @@
|
||||
}
|
||||
switch_transcript();
|
||||
Event.observe($('wdts-language'), 'change', switch_transcript);
|
||||
|
||||
$$('.approve-transcript').each(function(b) {
|
||||
Event.observe(b, 'click', function(e) {
|
||||
Event.stop(e);
|
||||
var lang = b.parentNode.parentNode.select("input[name*=[language]]").shift();
|
||||
if (lang) {
|
||||
lang = lang.value;
|
||||
var editor = $('wdts-transcripts-' + lang);
|
||||
|
||||
var raw_transcript = b.parentNode.parentNode.select(".queued-transcription-raw").shift();
|
||||
if (raw_transcript && editor) {
|
||||
var ok = true;
|
||||
if (editor.value.match(/[^ ]/)) {
|
||||
ok = confirm('<?php _e('This will overwrite the current transcript. Are you sure?', 'what-did-they-say') ?>');
|
||||
}
|
||||
if (ok) {
|
||||
editor.value = raw_transcript.innerHTML;
|
||||
var p = b.parentNode.parentNode;
|
||||
new Effect.Fade(p, {
|
||||
'afterFinish': function() { p.parentNode.removeChild(p); }
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$$('.delete-transcript').each(function(b) {
|
||||
Event.observe(b, 'click', function(e) {
|
||||
Event.stop(e);
|
||||
|
||||
if (confirm('<?php _e('This will delete the queued transcript. Are you sure?', 'what-did-they-say') ?>')) {
|
||||
var p = b.parentNode.parentNode;
|
||||
new Effect.Fade(p, {
|
||||
'afterFinish': function() { p.parentNode.removeChild(p); }
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
@ -204,10 +204,6 @@ class WhatDidTheySayTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
$wpdb = $this->getMock('wpdb', array('prepare', 'get_var', 'query'));
|
||||
|
||||
$wpdb->expects($this->once())
|
||||
->method('get_var')
|
||||
->will($this->returnValue(in_array($transcript_id_to_delete, $valid_transcripts) ? $transcript_id_to_delete : null));
|
||||
|
||||
if (in_array($transcript_id_to_delete, $valid_transcripts)) {
|
||||
$wpdb->expects($this->once())
|
||||
->method('query');
|
||||
|
Loading…
Reference in New Issue
Block a user