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".''; } public function end() { 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.''; 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 '