/** * 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"> </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"> </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; } }
/** * 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"> </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>'; }