m_OptionName=$optionName;
$this->m_OptionValues=get_option($optionName);
}
public function begin($title=null, $class=null)
{
echo "\n\n";
echo "\n".'
';
if(strlen($title)>0)
echo "\n".'
'.$title.' ';
echo $this->retrieveDescription();
echo "\n".'
';
echo "\n\n\n";
}
public function desc($description)
{
$this->m_Description=$description;
}
public function checkbox($title1, $title2, $name, $default)
{
echo
self::rowBegin('sl-checkbox').$title1.' name($name);
if($this->m_OptionValues!==false ? isset($this->m_OptionValues[$name]) && $this->m_OptionValues[$name] : $default)
echo ' checked="checked"';
echo ' value="1" />'.$title2.$this->retrieveDescription().' ';
echo self::rowEnd();
}
public function textbox($title, $name, $default)
{
$val=isset($this->m_OptionValues[$name]) ? $this->m_OptionValues[$name] : $default;
echo
self::rowBegin('sl-textbox sl-'.$name).
$this->label($title, $name).''."\n ".' name($name).' value="'.$val.'" />'.
$this->retrieveDescription().
self::rowEnd();
}
public function textarea($title, $name, $default)
{
$val=isset($this->m_OptionValues[$name]) ? $this->m_OptionValues[$name] : $default;
echo
self::rowBegin('sl-textarea sl-'.$name).
$this->label($title, $name).''."\n ".''.
$this->retrieveDescription().
self::rowEnd();
}
public function number($title, $name, $default, $args=null)
{
$val=isset($this->m_OptionValues[$name]) ? $this->m_OptionValues[$name] : $default;
$min=isset($args['min']) ? 'min="'.$args['min'].'"' : '';
$max=isset($args['max']) ? 'max="'.$args['max'].'"' : '';
$hint=isset($args['hint']) ? ' '.$args['hint'] : '';
echo
self::rowBegin('sl-number sl-'.$name).
$this->label($title, $name).''."\n ".' name($name).' '.$min.' '.$max.' value="'.$val.'" />'.$hint.
$this->retrieveDescription().
self::rowEnd();
}
public function color($title, $name, $default)
{
$val=isset($this->m_OptionValues[$name]) ? $this->m_OptionValues[$name] : $default;
echo
self::rowBegin('sl-color sl-'.$name).
$this->label($title, $name).''."\n ".' name($name).' data-default-color="'.$default.'" />'.
$this->retrieveDescription().
self::rowEnd();
}
public function upload($title, $name, $default, $args=null)
{
// Inspired by https://codex.wordpress.org/Javascript_Reference/wp.media
$val=isset($this->m_OptionValues[$name]) ? $this->m_OptionValues[$name] : $default;
$img_avail=strlen($val)>0;
if($img_avail && $val!=-1)
{
$img_src=wp_get_attachment_image_src($val, 'full');
$img_avail=is_array($img_src);
}
echo
self::rowBegin('sl-upload sl-'.$name). // No label here!
$title.''."\n ".' '. // No ID for hidden field here!
'';
if($img_avail)
{
if($val!=-1)
echo ' ';
else echo 'Demo';
}
echo
' '.
'Select '.
'Clear '.
$this->retrieveDescription().
self::rowEnd();
}
private function retrieveDescription()
{
$res=$this->m_Description;
$this->m_Description=null;
return strlen($res)>0 ? "\n ".''.$res.'
' : '';
}
private function label($title, $name)
{
return ''.$title.' m_OptionName.'['.$name.']" id="'.$this->m_OptionName.'_'.$name.'"';
}
private static function rowBegin($class)
{
return "\n".''."\n ";
}
private static function rowEnd()
{
return "\n ";
}
private $m_OptionName;
private $m_OptionValues;
private $m_Description;
}
endif;