Files
aastra-xml-php/php_classes/AastraIPPhoneTextMenu.class.php
2018-02-15 22:59:05 +01:00

146 lines
5.3 KiB
PHP

<?php
########################################################################################################
# Aastra XML API Classes - AastraIPPhoneTextMenu
# Copyright Aastra Telecom 2007
#
# AastraIPPhoneTextMenu object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setTitle(Title) to setup the title of an object (optional)
# setTitleWrap() to set the title to be wrapped on 2 lines (optional)
# setDestroyOnExit() to set DestroyOnExit parameter to "yes" (optional)
# setCancelAction(uri) to set the cancel parameter with the URI to be called on Cancel (optional)
# setBeep() to enable a notification beep with the object (optional)
# setLockIn() to set the Lock-in tag to 'yes' (optional)
# setAllowAnswer() to set the allowAnswer tag to 'yes' (optional)
# setTimeout(timeout) to define a specific timeout for the XML object (optional)
# addSoftkey(index,label,uri,icon_index) to add custom softkeys to the object (optional)
# addIcon(index,icon) to add custom icons to the object (optional)
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# generate() to return the object content
# output() to display the object
#
# Specific to the object
# setDefaultIndex(index) to set the default selection in the list (optional)
# setStyle(style) to set the style of the list numbered/none/radio (optional)
# addEntry(name,url,selection,icon,dial) to add an element in the list to be displayed, at
# least one is needed.
# natsortbyname() to order the list
#
# Example 1
# require_once('AastraIPPhoneTextMenu.class.php');
# $menu = new AastraIPPhoneTextMenu();
# $menu->setTitle('Title');
# $menu->setDestroyOnExit();
# $menu->setDeFaultIndex('3');
# $menu->addEntry('Choice 2', 'http://myserver.com/script.php?choice=2', 'Value=2');
# $menu->addEntry('Choice 1', 'http://myserver.com/script.php?choice=1', 'Value=1');
# $menu->addEntry('Choice 3', 'http://myserver.com/script.php?choice=3', 'Value=3');
# $menu->natsortByName();
# $menu->addSoftkey('1', 'My Select', 'http://myserver.com/script.php?action=1');
# $menu->addSoftkey('6', 'Exit', 'SoftKey:Exit');
# $menu->output();
#
# Example 2
# require_once('AastraIPPhoneTextMenu.class.php');
# $menu = new AastraIPPhoneTextMenu();
# $menu->setTitle('Title');
# $menu->setDestroyOnExit();
# $menu->setDeFaultIndex('2');
# $menu->addEntry('Choice 2', 'http://myserver.com/script.php?choice=2', 'Value=2','1');
# $menu->addEntry('Choice 1', 'http://myserver.com/script.php?choice=1', 'Value=1','2');
# $menu->addEntry('Choice 3', 'http://myserver.com/script.php?choice=3', 'Value=3','3');
# $menu->natsortByName();
# $menu->addSoftkey('1', 'My Select', 'http://myserver.com/script.php?action=1');
# $menu->addSoftkey('6', 'Exit', 'SoftKey:Exit');
# $menu->addIcon('1', 'Icon:PhoneOnHook');
# $menu->addIcon('2', 'Icon:PhoneOffHook');
# $menu->addIcon('3', 'Icon:PhoneRinging');
# $menu->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
require_once('AastraIPPhoneTextMenuEntry.class.php');
class AastraIPPhoneTextMenu extends AastraIPPhone {
var $_defaultIndex="";
var $_style="";
function setDefaultIndex($defaultIndex)
{
$this->_defaultIndex = $defaultIndex;
}
function setStyle($style)
{
$this->_style = $style;
}
function addEntry($name, $url, $selection=NULL, $icon=NULL, $dial=NULL)
{
$this->_entries[] = new AastraIPPhoneTextMenuEntry($name, $url, $selection, $icon, $dial);
}
function natsortByName()
{
$tmpary = array();
foreach ($this->_entries as $id => $entry) {
$tmpary[$id] = $entry->getName();
}
natsort($tmpary);
foreach ($tmpary as $id => $name) {
$newele[] = $this->_entries[$id];
}
$this->_entries = $newele;
}
function render()
{
$out = "<AastraIPPhoneTextMenu ";
if ($this->_destroyOnExit=='yes') $out .= "destroyOnExit=\"yes\" ";
if($this->_cancelAction != "")
{
$cancelAction = $this->escape($this->_cancelAction);
$out .= " cancelAction=\"{$cancelAction}\"";
}
if ($this->_defaultIndex!="") $out .= "defaultIndex=\"{$this->_defaultIndex}\"";
if ($this->_style!='') $out .= " style=\"{$this->_style}\"";
if ($this->_beep=='yes') $out .= " Beep=\"yes\"";
if ($this->_lockin=='yes') $out .= " LockIn=\"yes\"";
if($this->_allowAnswer == 'yes') $out .= " allowAnswer=\"yes\"";
if ($this->_timeout!=0) $out .= " Timeout=\"{$this->_timeout}\"";
$out .= ">\n";
if ($this->_title!='')
{
$title = $this->escape($this->_title);
$out .= "<Title";
if ($this->_title_wrap=='yes') $out .= " wrap=\"yes\"";
$out .= ">".$title."</Title>\n";
}
$index=0;
foreach ($this->_entries as $entry) {
if($index<15) $out .= $entry->render();
$index++;
}
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
$IconList=0;
foreach ($this->_icons as $icon)
{
if($IconList==0)
{
$out .= "<IconList>\n";
$IconList=1;
}
$out .= $icon->render();
}
if($IconList!=0) $out .= "</IconList>\n";
$out .= "</AastraIPPhoneTextMenu>\n";
return($out);
}
}
?>