Merge pull request #5845 from winsock/destinations_button_js

Dynamic Destination Edit Button
This commit is contained in:
FusionPBX 2021-03-22 23:11:46 -06:00 committed by GitHub
commit fbcffbc78d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 20 deletions

View File

@ -476,10 +476,11 @@ if (!class_exists('destinations')) {
$language2 = new text;
//build the destination select list in html
$response .= " <select class='formfld' style='".$select_style."' onchange=\"get_destinations('".$destination_id."', '".$destination_type."', this.value);\">\n";
$response .= " <select id='{destination_id}_type' class='formfld' style='".$select_style."' onchange=\"get_destinations('".$destination_id."', '".$destination_type."', this.value);\">\n";
$response .= " <option value=''></option>\n";
foreach($_SESSION['destinations']['array'][$destination_type] as $key => $value) {
if (permission_exists($destination->singular($key)."_destinations")) {
$singular = $this->singular($key);
if (permission_exists("{$singular}_destinations")) {
//determine if selected
$selected = ($key == $destination_key) ? "selected='selected'" : '';
@ -493,7 +494,7 @@ if (!class_exists('destinations')) {
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/dialplans');
}
//add the application to the select list
$response .= " <option value='".$key."' $selected>".$text2['title-'.$key]."</option>\n";
$response .= " <option id='{$singular}' class='{$key}' value='".$key."' $selected>".$text2['title-'.$key]."</option>\n";
}
}
$response .= " </select>\n";
@ -501,23 +502,20 @@ if (!class_exists('destinations')) {
foreach($_SESSION['destinations']['array'][$destination_type] as $key => $value) {
if ($key == $destination_key) {
foreach($value as $k => $row) {
$selected = ($row['destination'] == $destination_value) ? "selected='selected'" : '';
$response .= " <option value='".$row['destination']."' $selected>".$row['label']."</option>\n";
if ($row['destination'] == $destination_value) {
$response_button = button::create([
'type'=>'button',
'icon'=>'external-link-alt',
'id'=>'btn_dest_go',
'title'=>$row['label'],
//'style'=>'margin-left: 15px;',
'link'=>'/app/'.$key.'/'.$this->singular($key).'_edit.php?id='.$row[$this->singular($key).'_uuid']
])."\n";
}
$selected = ($row['destination'] == $destination_value) ? "selected='selected'" : '';
$uuid = isset($row[$this->singular($key).'_uuid']) ? $row[$this->singular($key).'_uuid'] : $row['uuid'];
$response .= " <option id='{$uuid}' value='".$row['destination']."' $selected>".$row['label']."</option>\n";
}
}
}
$response .= " </select>".$response_button."\n";
$response .= " </select>";
$response .= button::create([
'type'=>'button',
'icon'=>'external-link-alt',
'id'=>'btn_dest_go',
'title'=>$text['label-edit'],
'onclick'=>"let types = document.getElementById('{destination_id}_type').options; let opts = document.getElementById('{$destination_id}').options; if(opts[opts.selectedIndex].id && opts[opts.selectedIndex].id.length > 0) {window.open('/app/'+types[types.selectedIndex].className+'/'+types[types.selectedIndex].id+'_edit.php?id='+opts[opts.selectedIndex].id, '_blank');}"
])."\n";
//debug information
//echo $response;

View File

@ -30,7 +30,8 @@
echo " <select name='subaction' id='action' class='formfld' style='".$select_style."'>\n";
echo " <option value=''></option>\n";
foreach($destinations as $key => $rows) {
if ($key == $action && permission_exists($destination->singular($key)."_destinations")) {
$singular = $destination->singular($key);
if ($key == $action && permission_exists("{$singular}_destinations")) {
if (is_array($rows)) {
foreach($rows as $row) {
@ -50,7 +51,8 @@
$select_label = str_replace('email-icon', '&#9993', $select_label);
//add the select option
echo " <option value='".$select_value."'>".$select_label."</option>\n";
$uuid = isset($row[$singular.'_uuid']) ? $row[$singular.'_uuid'] : $row['uuid'];
echo " <option id='{$uuid}' value='".$select_value."'>".$select_label."</option>\n";
}
}
}

View File

@ -34,9 +34,10 @@
$apps[$x]['destinations'][$y]['type'] = "sql";
$apps[$x]['destinations'][$y]['label'] = "voicemails";
$apps[$x]['destinations'][$y]['name'] = "voicemails";
$apps[$x]['destinations'][$y]['sql'] = "select voicemail_id as destination, '*99' || voicemail_id as extension, voicemail_description as description from v_voicemails";
$apps[$x]['destinations'][$y]['sql'] = "select voicemail_uuid, voicemail_id as destination, '*99' || voicemail_id as extension, voicemail_description as description from v_voicemails";
$apps[$x]['destinations'][$y]['where'] = "where domain_uuid = '\${domain_uuid}' and voicemail_enabled = 'true' ";
$apps[$x]['destinations'][$y]['order_by'] = "voicemail_id asc ";
$apps[$x]['destinations'][$y]['field']['voicemail_uuid'] = "voicemail_uuid";
$apps[$x]['destinations'][$y]['field']['destination'] = "voicemail_id";
$apps[$x]['destinations'][$y]['field']['extension'] = "voicemail_id";
$apps[$x]['destinations'][$y]['field']['description'] = "voicemail_description";