Example #1
0
 /**
  * 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);
     }
 }