Recordings - Edit: Implement Preview button for audio playback.

This commit is contained in:
fusionate
2026-01-27 18:31:34 -07:00
parent c7659830cc
commit bf6975e06b
3 changed files with 53 additions and 9 deletions

View File

@@ -270,6 +270,33 @@ $text['label-pause']['zh-cn'] = "暂停";
$text['label-pause']['ja-jp'] = "一時停止";
$text['label-pause']['ko-kr'] = "정지시키다";
$text['label-preview']['en-us'] = "Preview";
$text['label-preview']['en-gb'] = "Preview";
$text['label-preview']['ar-eg'] = "معاينة";
$text['label-preview']['de-at'] = "Vorschau";
$text['label-preview']['de-ch'] = "Vorschau";
$text['label-preview']['de-de'] = "Vorschau";
$text['label-preview']['el-gr'] = "Πρεμιέρα";
$text['label-preview']['es-cl'] = "Avance";
$text['label-preview']['es-mx'] = "Avance";
$text['label-preview']['fr-ca'] = "Avance";
$text['label-preview']['fr-fr'] = "Avance";
$text['label-preview']['he-il'] = "תצוגה מקדימה";
$text['label-preview']['it-it'] = "Anteprima";
$text['label-preview']['ka-ge'] = "გადახედვა";
$text['label-preview']['nl-nl'] = "Voorbeeld";
$text['label-preview']['pl-pl'] = "Zapowiedź";
$text['label-preview']['pt-br'] = "Pré-visualização";
$text['label-preview']['pt-pt'] = "Pré-visualização";
$text['label-preview']['ro-ro'] = "Previzualizare";
$text['label-preview']['ru-ru'] = "Предварительный просмотр";
$text['label-preview']['sv-se'] = "Förhandsvisning";
$text['label-preview']['uk-ua'] = "Попередній перегляд";
$text['label-preview']['tr-tr'] = "Önizleme";
$text['label-preview']['zh-cn'] = "预览";
$text['label-preview']['ja-jp'] = "プレビュー";
$text['label-preview']['ko-kr'] = "시사";
$text['label-file_name']['en-us'] = "File Name";
$text['label-file_name']['en-gb'] = "File Name";
$text['label-file_name']['ar-eg'] = "اسم الملف";

View File

@@ -322,11 +322,22 @@
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-edit']."</b></div>\n";
echo " <div class='actions'>\n";
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme', 'button_icon_back'),'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'recordings.php']);
echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme', 'button_icon_back'),'id'=>'btn_back','link'=>'recordings.php']);
if (permission_exists('recording_delete') && !empty($recording_uuid) && is_uuid($recording_uuid)) {
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$settings->get('theme', 'button_icon_delete'),'name'=>'btn_delete','style'=>'margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$settings->get('theme', 'button_icon_delete'),'name'=>'btn_delete','style'=>'margin-left: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
}
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$settings->get('theme', 'button_icon_save'),'id'=>'btn_save']);
if (permission_exists('recording_play') && !empty($recording_uuid) && is_uuid($recording_uuid)) {
$recording_file_name = strtolower(pathinfo($recording_filename, PATHINFO_BASENAME));
$recording_file_ext = pathinfo($recording_file_name, PATHINFO_EXTENSION);
switch ($recording_file_ext) {
case "wav" : $recording_type = "audio/wav"; break;
case "mp3" : $recording_type = "audio/mpeg"; break;
case "ogg" : $recording_type = "audio/ogg"; break;
}
echo "<audio id='recording_audio_".escape($recording_uuid)."' style='display: none;' preload='none' onended=\"recording_reset('".escape($recording_uuid)."');\" src=\"".PROJECT_PATH."/app/recordings/recordings.php?action=download&type=rec&id=".urlencode($recording_uuid)."\" type='".$recording_type."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'label'=>'Preview','icon'=>$settings->get('theme','button_icon_play'),'id'=>'recording_button_'.escape($recording_uuid),'onclick'=>"recording_play('".escape($recording_uuid)."','','','".$text['label-preview']."'); this.blur();"]);
}
echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$settings->get('theme', 'button_icon_save'),'id'=>'btn_save','style'=>'margin-left: 15px;']);
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
@@ -349,7 +360,7 @@
echo "</td>\n";
echo "</tr>\n";
if (!empty($_REQUEST["id"])) {
if (!empty($recording_uuid)) {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-file_name']."\n";
@@ -546,4 +557,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>

View File

@@ -741,7 +741,7 @@
//audio playback functions
{literal}
var recording_audio, audio_clock, recording_id_playing;
var recording_audio, audio_clock, recording_id_playing, label_play;
function recording_load(player_id, data, audio_type) {
{/literal}
@@ -780,8 +780,14 @@
}
recording_audio = document.getElementById('recording_audio_' + player_id);
var label_play = "{/literal}{if $php_self == 'xml_cdr_details.php'}{literal}<span class='button-label pad'>{/literal}{$text.label_play}{literal}</span>{/literal}{/if}{literal}";
var label_pause = "{/literal}{if $php_self == 'xml_cdr_details.php'}{literal}<span class='button-label pad'>{/literal}{$text.label_pause}{literal}</span>{/literal}{/if}{literal}";
if (label !== undefined) {
label_play = "<span class='button-label pad'>" + label + "</span>";
var label_pause = "<span class='button-label pad'>" + label + "</span>";
}
else {
label_play = "{/literal}{if $php_self == 'xml_cdr_details.php'}{literal}<span class='button-label pad'>{/literal}{$text.label_play}{literal}</span>{/literal}{/if}{literal}";
var label_pause = "{/literal}{if $php_self == 'xml_cdr_details.php'}{literal}<span class='button-label pad'>{/literal}{$text.label_pause}{literal}</span>{/literal}{/if}{literal}";
}
if (recording_audio.paused) {
recording_load(player_id, data, audio_type);
@@ -837,7 +843,7 @@
document.getElementById('recording_button_' + player_id).innerHTML = "<span class='{/literal}{$settings.theme.button_icon_comment}{literal} fa-fw'></span>";
}
else {
document.getElementById('recording_button_' + player_id).innerHTML = "<span class='{/literal}{$settings.theme.button_icon_play}{literal} fa-fw'></span>";
document.getElementById('recording_button_' + player_id).innerHTML = "<span class='{/literal}{$settings.theme.button_icon_play}{literal} fa-fw'></span>" + (label_play ?? '');
}
clearInterval(audio_clock);
}