/**
  * Generate inputs from given optigen options
  */
 public function options_to_html($options, $values, $return = true)
 {
     $values = (array) $values;
     if ($return) {
         ob_start();
     }
     if (isset($options['tabs'])) {
         $meta_boxes = array();
         $html = '';
         foreach ($options['tabs'] as $tab) {
             $headings = $tab['headings'];
             unset($tab['headings']);
             $meta_boxes['tabs'][] = $tab;
             foreach ($headings as $heading) {
                 $meta_boxes[$tab['id']][$heading['name']] = '';
                 foreach ($heading['options'] as $option) {
                     if (isset($values[$option['id']])) {
                         $option['value'] = $values[$option['id']];
                     }
                     if ($option['type'] == 'boxes' && method_exists($this->optigen, 'boxes')) {
                         $meta_boxes[$tab['id']][$heading['name']] .= $this->optigen->boxes($option);
                     } else {
                         $meta_boxes[$tab['id']][$heading['name']] .= $this->meta_box_row_template($option);
                     }
                 }
             }
         }
         $tabs_header = '<ul>';
         foreach ($meta_boxes['tabs'] as $tab) {
             $tabs_header .= '<li><a href="#tfusetab-' . $tab['id'] . '">' . $tab['name'] . '</a></li>';
         }
         $tabs_header .= '</ul>';
         foreach ($meta_boxes as $tab => $box) {
             if ($tab == 'tabs') {
                 continue;
             }
             foreach ($box as $heading => $rows) {
                 $boxid = 'tf-random-id-' . tf_unique_increment();
                 add_meta_box($boxid, $heading, array($this, 'custom_metabox_content'), $tab, 'normal', 'core', $rows);
             }
         }
         echo '<div class="tf_load_meta_tabs">&nbsp;</div>';
         echo '<div class="tf_meta_tabs">';
         echo $tabs_header;
         foreach ($meta_boxes['tabs'] as $tab) {
             echo '<div id="tfusetab-' . $tab['id'] . '">';
             do_meta_boxes($tab['id'], 'normal', null);
             echo '</div>';
         }
         echo '</div>';
     } elseif (isset($options[0]['type']) && $options[0]['type'] == 'metabox') {
         $meta_boxes = array();
         $k = 0;
         foreach ($options as $box) {
             if ($box['type'] == 'metabox') {
                 $k++;
                 if ($box['context'] != 'normal') {
                     continue;
                 }
                 $meta_boxes[$k]['meta_box'] = $box;
                 $meta_boxes[$k]['rows'] = '';
             } elseif (isset($meta_boxes[$k])) {
                 if (isset($values[$box['id']])) {
                     $box['value'] = $values[$box['id']];
                 }
                 $meta_boxes[$k]['rows'] .= $this->meta_box_row_template($box);
             }
         }
         $tabs_header = '<ul>';
         foreach ($meta_boxes as $tab) {
             $tabs_header .= '<li><a href="#tfusetab-' . $tab['meta_box']['id'] . '">' . $tab['meta_box']['name'] . '</a></li>';
         }
         $tabs_header .= '</ul>';
         $content = '';
         foreach ($meta_boxes as $box) {
             $content .= '<div id="tfusetab-' . $box['meta_box']['id'] . '">' . $box['rows'] . '</div>';
         }
         $content = '<div class="tf_load_meta_tabs">&nbsp;</div><div class="tf_meta_tabs">' . $tabs_header . $content . '</div>';
         echo $content;
     } elseif (isset($options[0]['type']) && isset($options[0]['id']) && isset($options[0]['name'])) {
         foreach ($options as $option) {
             if (isset($values[$option['id']])) {
                 $option['value'] = $values[$option['id']];
             }
             echo $this->meta_box_row_template($option);
         }
     } else {
         trigger_error(__('Unknown options structure', 'tfuse'), E_USER_WARNING);
         $html = 'Invalid optigen options';
     }
     if ($return) {
         $html = ob_get_clean();
         return $html;
     }
 }
Exemple #2
0
 /**
  * Add meta boxes into tabs on admin page.
  *
  * @since 2.0
  */
 public function create_admin_meta_box()
 {
     $admin_meta_boxes = $this->get_admin_options();
     $tabs_header = '<ul>';
     foreach ($admin_meta_boxes['tabs'] as $tab) {
         $tabs_header .= '<li><a href="#tfusetab-' . $tab['id'] . '">' . $tab['name'] . '</a></li>';
     }
     $tabs_header .= '</ul>';
     foreach ($admin_meta_boxes as $tab => $box) {
         if ($tab == 'tabs') {
             continue;
         }
         foreach ($box as $heading => $rows) {
             $boxid = 'tf-random-id-' . tf_unique_increment();
             add_meta_box($boxid, $heading, array($this, 'custom_admin_box_content'), $tab, 'normal', 'core', $rows);
         }
     }
     echo '<div class="tf_load_meta_tabs">&nbsp;</div>';
     echo '<div class="tf_meta_tabs">';
     echo $tabs_header;
     foreach ($admin_meta_boxes['tabs'] as $tab) {
         echo '<div id="tfusetab-' . $tab['id'] . '">';
         do_meta_boxes($tab['id'], 'normal', null);
         echo '</div>';
     }
     echo '</div>';
 }