/** * Triggered when the tab is loaded. * @param $oAdminPage */ public function replyToAddFormElements($oAdminPage) { $modules_pos = HW_Modules_Manager::get_modules_displayable(); //list displayable modules $avaiable_pages = HW__Template::get_pages_select(); //pages //get all register positions $positions = HW_Module_Positions::get_positions(); HW_UI_Component::empty_select_option($positions); //condition $conditions = array(); $dynamic_settings = HW_Condition::get_active_conditions_settings(); foreach ($dynamic_settings as $id => $item) { $conditions[$id] = $item['title']; } HW_UI_Component::empty_select_option($conditions); $this->addFieldLabel('Cấu hình vị trí của các modules'); $this->addFields(array('field_id' => 'modules_position', 'type' => 'hw_table_fields', 'title' => '', 'show_title_column' => false, 'repeatable' => false, 'show_root_field' => true, 'data_base_field' => 'col1', 'attributes' => array('hw_table_fields' => array()), 'fields' => array('col1' => array('name' => 'module', 'type' => 'select', 'options' => $modules_pos, 'description' => ''), 'col2' => array('name' => 'condition', 'type' => 'select', 'options' => $conditions, 'description' => ''), 'col3' => array('name' => 'page', 'type' => 'select', 'options' => $avaiable_pages, 'description' => ''), 'col4' => array('name' => 'position', 'type' => 'select', 'options' => $positions)), 'table_header' => array('col1' => 'Module', 'col2' => 'Điều kiện', 'col3' => 'Trang hiển thị', 'col4' => 'Vị trí'))); }
/** * filter apf rules field data * @param $field * @param $field_attrs * @param $value */ public function _apf_rules_field_setting($args, $id) { if ($args['aField']['field_id'] !== $id) { return; } //detect current field id, ignore for other //save fields values static $fields_value = array(); //add attributes preg_match('/\\[(\\d+)\\]/', $args['aAttributes']['name'], $res); //find id if (count($res) >= 2) { if (!isset($args['field_attrs']['data-id'])) { $args['field_attrs']['data-id'] = $args['aField']['field_id'] . '__' . $res[1]; } if (!isset($args['field_attrs']['data-name'])) { $args['field_attrs']['data-name'] = $args['field']['name']; } if (!isset($args['field_attrs']['data-fieldname'])) { $args['field_attrs']['data-fieldname'] = $args['aField']['field_id']; } } //build act_values field if ($args['field']['name'] == 'act_values') { //get selected_act variable from ajax handle by user select act if (isset($args['aField']['selected_act'])) { $object = $args['aField']['selected_act']; } else { $object = $this->getFieldValue('act', $args['aField']); } //get binding fields if (isset($args['aField']['bindingFields']) && is_array($args['aField']['bindingFields'])) { $bindingFields = $args['aField']['bindingFields']; } if (!empty($args['value'])) { $fields_value[$object] = $args['value']; } //remind fields value //filter by post_type if (isset($bindingFields['post_types'])) { $_pt = $bindingFields['post_types']['value']; } elseif (isset($fields_value['post_types'])) { $_pt = $fields_value['post_types']; } //get taxonomy value if (isset($bindingFields) && isset($bindingFields['taxonomies'])) { $_tax = $bindingFields['taxonomies']['value']; } elseif (isset($fields_value['taxonomies'])) { $_tax = $fields_value['taxonomies']; } //taxonomy //get tax term if (isset($bindingFields) && isset($bindingFields['terms'])) { $_term = $bindingFields['terms']['value']; } elseif (isset($fields_value['terms'])) { $_term = $fields_value['terms']; } switch ($object) { case 'post_types': $postypes = get_post_types('', 'names'); $args['field']['options'] = $postypes; break; case 'templates': $args['field']['options'] = HW__Template::getTemplates(); break; case 'taxonomies': $args['field']['options'] = get_taxonomies(); break; #terms #terms case 'terms': $query_args = array('hide_empty' => 0, 'fields' => 'all'); if (isset($_pt)) { //no need //$query_args['post_type'] = $_pt; } //get terms taxonomies if (isset($_tax)) { $options = array(); $data = get_terms((array) $_tax, $query_args); foreach ($data as $t) { $options[$t->slug] = $t->name; } $args['field']['options'] = $options; } else { $args['field']['options'] = array(); } break; #posts #posts case 'posts': $options = array(); $query_args = array('order' => 'ASC', 'tax_query' => array('relation' => 'AND'), 'showposts' => '-1'); if (isset($_pt)) { $query_args['post_type'] = $_pt; } //post_type //taxonomy param if (isset($_tax)) { $query_args['taxonomy'] = $_tax; //bind term taxonomy if (isset($_term)) { $query_args['tax_query'][] = array('taxonomy' => $_tax, 'field' => 'slug', 'terms' => array($_term), 'operator' => 'IN'); } } if (count($query_args)) { $query = new WP_Query($query_args); while ($query->have_posts()) { $query->the_post(); $options[get_the_ID()] = get_the_title(); } $args['field']['options'] = $options; } else { $args['field']['options'] = array(); } break; #pages #pages case 'pages': /*$pages = get_pages(); $options = array(); foreach ($pages as $page) { $options[$page->ID] = $page->post_title; }*/ $options = HW__Template::get_pages_select(false); $args['field']['options'] = $options; break; #users #users case 'users': $users = get_users(array('orderby' => 'login', 'order' => 'ASC', 'fields' => 'all')); $options = array(); foreach ($users as $user) { $options[$user->ID] = $user->display_name; } $args['field']['options'] = $options; break; default: } $args = apply_filters('apf_rules_field_settings', $args, $object); } }