function directory_configpageload() { global $currentcomponent, $display; if ($display == 'directory' && (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add' || isset($_REQUEST['id']) && $_REQUEST['id'] != '')) { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') { $currentcomponent->addguielem('_top', new gui_pageheading('title', _('Add Directory')), 0); $deet = array('dirname', 'description', 'repeat_loops', 'announcement', 'repeat_recording', 'invalid_recording', 'callid_prefix', 'alert_info', 'invalid_destination', 'retivr', 'say_extension', 'id'); foreach ($deet as $d) { switch ($d) { case 'repeat_loops': $dir[$d] = 2; break; case 'announcement': case 'repeat_recording': case 'invalid_recording': $dir[$d] = 0; break; default: $dir[$d] = ''; break; } } } else { $dir = directory_get_dir_details($_REQUEST['id']); $label = sprintf(_("Edit Directory: %s"), $dir['dirname'] ? $dir['dirname'] : 'ID ' . $dir['id']); $def_dir = directory_get_default_dir(); if ($dir['id'] == $def_dir) { $label .= ' ' . _("[SYSTEM DEFAULT]"); } $currentcomponent->addguielem('_top', new gui_pageheading('title', $label), 0); //display usage $usage_list = framework_display_destination_usage(directory_getdest($dir['id'])); $usage_list_text = isset($usage_list['text']) ? $usage_list['text'] : ''; $usage_list_tooltip = isset($usage_list['tooltip']) ? $usage_list['tooltip'] : ''; if (!empty($usage_list)) { $currentcomponent->addguielem('_top', new gui_link_label('usage', $usage_list_text, $usage_list_tooltip), 0); } //display delete link $label = sprintf(_("Delete Directory %s"), $dir['dirname'] ? $dir['dirname'] : $dir['id']); $label = '<span><img width="16" height="16" border="0" title="' . $label . '" alt="" src="images/core_delete.png"/> ' . $label . '</span>'; $currentcomponent->addguielem('_top', new gui_link('del', $label, '?' . $_SERVER['QUERY_STRING'] . '&action=delete', true, false), 0); } //delete link, dont show if we dont have an id (i.e. directory wasnt created yet) $gen_section = _('Directory General Options'); $category = "other"; $currentcomponent->addguielem($gen_section, new gui_textbox('dirname', stripslashes($dir['dirname']), _('Directory Name'), _('Name of this directory.')), $category); $currentcomponent->addguielem($gen_section, new gui_textbox('description', stripslashes($dir['description']), _('Directory Description'), _('Description of this directory.')), $category); $currentcomponent->addguielem($gen_section, new gui_textbox('callid_prefix', stripslashes($dir['callid_prefix']), _('CallerID Name Prefix'), _('Prefix to be appended to current CallerID Name.')), $category); $currentcomponent->addguielem($gen_section, new gui_textbox('alert_info', stripslashes($dir['alert_info']), _('Alert Info'), _('ALERT_INFO to be sent when called from this Directory. Can be used for distinctive ring for SIP devices.')), $category); $section = _('Directory Options (DTMF)'); //build recordings select list $currentcomponent->addoptlistitem('recordings', 0, _('Default')); foreach (recordings_list() as $r) { $currentcomponent->addoptlistitem('recordings', $r['id'], $r['displayname']); } $currentcomponent->setoptlistopts('recordings', 'sort', false); //build repeat_loops select list and defualt it to 3 for ($i = 0; $i < 11; $i++) { $currentcomponent->addoptlistitem('repeat_loops', $i, $i); } //generate page $currentcomponent->addguielem($section, new gui_selectbox('announcement', $currentcomponent->getoptlist('recordings'), $dir['announcement'], _('Announcement'), _('Greeting to be played on entry to the directory.'), false), $category); $currentcomponent->addguielem($section, new gui_selectbox('repeat_loops', $currentcomponent->getoptlist('repeat_loops'), $dir['repeat_loops'], _('Invalid Retries'), _('Number of times to retry when receiving an invalid/unmatched response from the caller'), false), $category); $currentcomponent->addguielem($section, new gui_selectbox('repeat_recording', $currentcomponent->getoptlist('recordings'), $dir['repeat_recording'], _('Invalid Retry Recording'), _('Prompt to be played when an invalid/unmatched response is received, before prompting the caller to try again'), false), $category); $currentcomponent->addguielem($section, new gui_selectbox('invalid_recording', $currentcomponent->getoptlist('recordings'), $dir['invalid_recording'], _('Invalid Recording'), _('Prompt to be played before sending the caller to an alternate destination due to the caller pressing 0 or receiving the maximum amount of invalid/unmatched responses (as determined by Invalid Retries)'), false), $category); $currentcomponent->addguielem($section, new gui_drawselects('invalid_destination', 0, $dir['invalid_destination'], _('Invalid Destination'), _('Destination to send the call to after Invalid Recording is played.'), false), $category); $currentcomponent->addguielem($section, new gui_checkbox('retivr', $dir['retivr'], _('Return to IVR'), _('When selected, if the call passed through an IVR that had "Return to IVR" selected, the call will be returned there instead of the Invalid destination.'), true), $category); $currentcomponent->addguielem($section, new gui_checkbox('say_extension', $dir['say_extension'], _('Announce Extension'), _('When checked, the extension number being transferred to will be announced prior to the transfer'), true), $category); $currentcomponent->addguielem($section, new gui_hidden('id', $dir['id']), $category); $currentcomponent->addguielem($section, new gui_hidden('action', 'edit'), $category); //TODO: the needs to be here instead of a space, guielements freaks for some reason with this specific section name $section = _('Directory Entries'); //draw the entries part of the table. A bit hacky perhaps, but hey - it works! $currentcomponent->addguielem($section, new guielement('rawhtml', directory_draw_entries($dir['id']), '')); } }
public function doConfigPageInit($page) { $request = $_REQUEST; $request['action'] = !empty($request['action']) ? $request['action'] : ""; switch ($page) { case 'directory': //check for ajax request and process that immediately if (isset($_REQUEST['ajaxgettr'])) { //got ajax request $opts = $opts = explode('|', urldecode($_REQUEST['ajaxgettr'])); if ($opts[0] == 'all') { echo directory_draw_entries_all_users($opts[1]); } else { if ($opts[0] != '') { $real_id = $opts[0]; $name = ''; $realname = $opts[1]; $audio = 'vm'; } else { $real_id = 'custom'; $name = $opts[1]; $realname = 'Custom Entry'; $audio = 'tts'; } echo directory_draw_entries_tr($opts[0], $real_id, $name, $realname, $audio, '', $opts[2]); } exit; } $requestvars = array('id', 'action', 'entries', 'newentries', 'def_dir', 'Submit'); foreach ($requestvars as $var) { switch ($var) { case 'def_dir': $rvars_def = false; break; default: $rvars_def = ''; break; } ${$var} = isset($_REQUEST[$var]) ? $_REQUEST[$var] : $rvars_def; } if (isset($Submit) && $Submit == 'Submit' && isset($def_dir) && $def_dir !== false) { directory_save_default_dir($def_dir); } break; } if ($page == 'directory') { //get variables for directory_details $requestvars = array('id', 'dirname', 'description', 'announcement', 'callid_prefix', 'alert_info', 'repeat_loops', 'repeat_recording', 'invalid_recording', 'invalid_destination', 'retivr', 'say_extension'); foreach ($requestvars as $var) { $vars[$var] = isset($_REQUEST[$var]) ? $_REQUEST[$var] : null; } $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; $entries = isset($_REQUEST['entries']) ? $_REQUEST['entries'] : null; //$entries=(($entries)?array_values($entries):'');//reset keys switch ($action) { case 'edit': //get real dest $vars['invalid_destination'] = $_REQUEST[$_REQUEST['goto0'] . '0']; $vars['id'] = directory_save_dir_details($vars); \directory_save_dir_entries($vars['id'], $entries); $this_dest = directory_getdest($vars['id']); \fwmsg::set_dest($this_dest[0]); needreload(); $_REQUEST['id'] = $vars['id']; break; case 'delete': directory_delete($vars['id']); needreload(); break; } } }
<?php extract($request); if (empty($action) && empty($id)) { $subhead = _("Add Directory"); $inusehtml = $action = $id = ""; } else { $subhead = _("Edit Directory"); $dir = directory_get_dir_details($request['id']); extract($dir); $usage_list = framework_display_destination_usage(directory_getdest($id)); if (!empty($usage_list)) { $inusehtml = ' <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">' . $usage_list['text'] . '</h3> </div> <div class="panel-body"> ' . $usage_list['tooltip'] . ' </div> </div> '; } else { $inusehtml = ""; } } $recoptions = '<option value="0">' . _("Default") . '</option>'; if (function_exists('recordings_list')) { foreach (recordings_list() as $r) { $selected = !empty($announcement) && $r['id'] == $announcement ? ' SELECTED' : ''; $recoptions .= "<option value='{$r['id']}'{$selected}>{$r['displayname']}</option>";