135 lines
3.4 KiB
Plaintext
135 lines
3.4 KiB
Plaintext
<?php
|
|
|
|
/* Input box (get user typed info), replacing javascript messageBox */
|
|
|
|
class InputBox
|
|
{
|
|
private $iBoxId;
|
|
private $sBoxTitle;
|
|
private $sQuestion;
|
|
private $asAnswers;
|
|
private $asStyle;
|
|
private $sAction;
|
|
|
|
/**
|
|
*
|
|
* @param $sBoxTitle
|
|
* @param $sQuestion
|
|
* @param $asAnswers
|
|
* @param $asStyle
|
|
* @return unknown_type
|
|
*/
|
|
function __construct($sBoxTitle, $sQuestion, $asAnswers=array(), $asStyle=array())
|
|
{
|
|
$this->iBoxId = 'input_box_id_'.rand(1, 1000);
|
|
$this->sBoxTitle = $sBoxTitle;
|
|
$this->sQuestion = $sQuestion;
|
|
$this->setAnswers($asAnswers);
|
|
$this->setStyle($asStyle);
|
|
$this->setTags(array());
|
|
}
|
|
|
|
function setAnswers($asAnswers)
|
|
{
|
|
if(count($asAnswers)==0)
|
|
{
|
|
$this->asAnswers = array('Oui'=>'submitForm(\'#formName#\')', 'Non'=>'');
|
|
}
|
|
else
|
|
{
|
|
$this->asAnswers = $asAnswers;
|
|
}
|
|
}
|
|
|
|
function getAnswers()
|
|
{
|
|
$sAnswers = '';
|
|
foreach($this->asAnswers as $sAnswertext=>$sAnswerAction)
|
|
{
|
|
$sAnswers .= '<input type="button" style="margin:auto 10px;" onclick="setInputBoxDisplay_'.$this->iBoxId.'();'.$sAnswerAction.';" value="'.$sAnswertext.'" />';
|
|
}
|
|
return $sAnswers;
|
|
}
|
|
|
|
function setStyle($asStyle)
|
|
{
|
|
$this->asStyle = array('display'=>'none', 'position'=>'absolute');
|
|
$this->asStyle = array_merge($this->asStyle, $asStyle);
|
|
}
|
|
|
|
function getStyle()
|
|
{
|
|
$sStyle = '';
|
|
foreach($this->asStyle as $sStyleTag=>$sStyleValue)
|
|
{
|
|
$sStyle .= $sStyleTag.':'.$sStyleValue.';';
|
|
}
|
|
return $sStyle;
|
|
}
|
|
|
|
function setTags($asTags)
|
|
{
|
|
$this->asTagNames = $asTags;
|
|
}
|
|
|
|
function getTag($sTagName=false, $bKey=false, $bJavaScript=false)
|
|
{
|
|
return ($sTagName===false)?$this->asTagNames:$this->asTagNames[$sTagName];
|
|
}
|
|
|
|
function getTagNames()
|
|
{
|
|
return array_keys($this->getTag());
|
|
}
|
|
|
|
function getJavaScript()
|
|
{
|
|
$asTagReplace = array();
|
|
foreach($this->getTagNames() as $sTagName)
|
|
{
|
|
$asTagReplace[] = 'box = box.replace(/\#'.$sTagName.'\#/g, '.$sTagName.');';
|
|
}
|
|
|
|
return '<script type="text/javascript">
|
|
function setInputBox_'.$this->iBoxId.'('.implode(', ', $this->getTagNames()).')
|
|
{
|
|
//initiate box HTML
|
|
var box = \''.printJsString($this->getBox()).'\';
|
|
|
|
//replace specific values
|
|
'.implode("\n", $asTagReplace).'
|
|
|
|
//display the box
|
|
document.getElementById(\''.$this->iBoxId.'\').innerHTML = box;
|
|
setInputBoxDisplay_'.$this->iBoxId.'();
|
|
}
|
|
function setInputBoxDisplay_'.$this->iBoxId.'()
|
|
{
|
|
document.getElementById(\''.$this->iBoxId.'\').style.top = (Y-80)+"px";
|
|
document.getElementById(\''.$this->iBoxId.'\').style.left = (X-250)+"px";
|
|
setBoxDisplay(\''.$this->iBoxId.'\');
|
|
setBoxDisplay("layer");
|
|
}
|
|
</script>';
|
|
}
|
|
|
|
function getAction()
|
|
{
|
|
return 'setInputBox_'.$this->iBoxId.'(\''.implode('\', \'', array_map('addslashes', $this->getTag())).'\');';
|
|
}
|
|
|
|
function getBox()
|
|
{
|
|
return ' <fieldset class="inputBox rounded">
|
|
<legend class="rounded">'.$this->sBoxTitle.'</legend>
|
|
<p style="font-weight:bold;text-align:center;">'.$this->sQuestion.'</p>
|
|
<form style="text-align:center;">'.$this->getAnswers().'</form>
|
|
</fieldset>';
|
|
}
|
|
|
|
function getHtml()
|
|
{
|
|
return "\n".$this->getJavaScript()."\n".'<div id="'.$this->iBoxId.'" style="'.$this->getStyle().'"></div>';
|
|
}
|
|
}
|
|
?> |