Esempio n. 1
0
 /**
  * Generate HTML code from shortcode content.
  *
  * @param   array   $atts     Shortcode attributes.
  * @param   string  $content  Current content.
  *
  * @return  string
  */
 public function element_shortcode_full($atts = null, $content = null)
 {
     $arr_params = shortcode_atts($this->config['params'], $atts);
     $initial_open = intval($arr_params['initial_open']);
     $multi_open = $arr_params['multi_open'];
     $filter = $arr_params['filter'];
     $random_id = IG_Pb_Utils_Common::random_string();
     $script = '';
     if ($multi_open == 'yes') {
         $script .= "<script type='text/javascript'>( function (\$) {\n\t\t\t\t\$( document ).ready( function ()\n\t\t\t\t{\n\t\t\t\t\t\$( '#accordion_{$random_id} .panel-title a' ).click( function(e ){\n\t\t\t\t\t\tvar collapse_item = \$( '#accordion_{$random_id} '+this.hash )\n\t\t\t\t\t\tcollapse_item.collapse( 'toggle' )\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} )( jQuery )</script>";
     } else {
         // some case the collapse doesn't work, need this code
         $script .= "<script type='text/javascript'>( function (\$) {\n\t\t\t\t\$( document ).ready( function ()\n\t\t\t\t{\n\t\t\t\t\t\$( '#accordion_{$random_id} .panel-collapse' ).click( function(e ){\n\t\t\t\t\t\tvar collapse_item = \$( '#accordion_{$random_id} '+this.hash )\n\t\t\t\t\t\t\$( '#accordion_{$random_id} .panel-body' ).each(function(){\n\t\t\t\t\t\t\t\$( this ).addClass( 'panel-collapse' );\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcollapse_item.removeClass( 'panel-collapse' );\n\t\t\t\t\t\tcollapse_item.attr( 'style', '' );\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} )( jQuery )</script>";
     }
     $sub_shortcode = IG_Pb_Helper_Shortcode::remove_autop($content);
     $items = explode('<!--seperate-->', $sub_shortcode);
     // remove empty element
     $items = array_filter($items);
     // update id, class for each item
     $initial_open = $initial_open > count($items) ? 1 : $initial_open;
     foreach ($items as $idx => $item) {
         $open = $idx + 1 == $initial_open ? 'in' : '';
         $item = str_replace('{index}', $random_id . $idx, $item);
         $item = str_replace('{show_hide}', $open, $item);
         $items[$idx] = $item;
     }
     $sub_shortcode = implode('', $items);
     $filter_html = '';
     if ($filter == 'yes') {
         $sub_sc_data = IG_Pb_Helper_Shortcode::extract_sub_shortcode($content);
         $sub_sc_data = reset($sub_sc_data);
         // tags to filter item
         $tags = array('all');
         foreach ($sub_sc_data as $shortcode) {
             $extract_params = shortcode_parse_atts($shortcode);
             $tags[] = $extract_params['tag'];
         }
         $tags = array_filter($tags);
         if (count($tags) > 1) {
             $tags = implode(',', $tags);
             $tags = explode(',', $tags);
             $tags = array_unique($tags);
             $filter_html = IG_Pb_Helper_Shortcode::render_parameter('filter_list', $tags, $random_id);
             // remove "All" tag
             array_shift($tags);
             $inner_tags = implode(',', $tags);
             $script .= "<script type='text/javascript'>( function (\$) {\n\t\t\t\t\$( document ).ready( function ()\n\t\t\t\t{\n\t\t\t\t\twindow.parent.jQuery.noConflict()( '#jsn_view_modal').contents().find( '#ig_share_data' ).text( '{$inner_tags}')\n\t\t\t\t\tvar parent_criteria = '#filter_{$random_id}'\n\t\t\t\t\tvar clientsClone = \$( '#accordion_{$random_id}' );\n\t\t\t\t\tvar tag_to_filter = 'div';\n\t\t\t\t\tvar class_to_filter = '.panel-default';\n\n\t\t\t\t\t\$( parent_criteria + ' a' ).click( function(e ) {\n\t\t\t\t\t\t// stop running filter\n\t\t\t\t\t\t\$( class_to_filter ).each(function(){\n\t\t\t\t\t\t\t\$( this ).stop( true )\n\t\t\t\t\t\t})\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t//active clicked criteria\n\t\t\t\t\t\t\$( parent_criteria + ' li' ).removeClass( 'active' );\n\t\t\t\t\t\t\$( this ).parent().addClass( 'active' );\n\n\t\t\t\t\t\tvar filterData = \$( this ).attr( 'class' );\n\t\t\t\t\t\tvar filters;\n\t\t\t\t\t\tif( filterData == 'all' ){\n\t\t\t\t\t\t\tfilters = clientsClone.find( tag_to_filter );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilters = clientsClone.find( tag_to_filter + '[data-tag~='+ filterData +']' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientsClone.find( class_to_filter ).each(function(){\n\t\t\t\t\t\t\t\$( this ).fadeOut()\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfilters.each(function(){\n\t\t\t\t\t\t\t\$( this ).fadeIn()\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} )( jQuery )</script>";
         }
     }
     $html = '<div class="panel-group" id="accordion_{ID}">' . $sub_shortcode . '</div>';
     $html = str_replace('{ID}', $random_id, $html);
     return $this->element_wrapper($filter_html . $html . $script, $arr_params);
 }
Esempio n. 2
0
 $elements = $Ig_Pb->get_elements();
 $instance = isset($elements['element'][strtolower($class)]) ? $elements['element'][strtolower($class)] : null;
 if (!is_object($instance)) {
     $instance = new $class();
 }
 $instance->init_element();
 // Generate default params if they were not posted.
 if (empty($params)) {
     $params = $instance->config['shortcode_structure'];
 }
 if (!empty($params)) {
     $params = str_replace('#_EDITTED', '', $params);
     $extract_params = IG_Pb_Helper_Shortcode::extract_params($params, $shortcode);
     // if have sub-shortcode, extract sub shortcodes content
     if (!empty($instance->config['has_subshortcode'])) {
         $sub_sc_data = IG_Pb_Helper_Shortcode::extract_sub_shortcode($params, true);
         $sub_sc_data = apply_filters('ig_pb_sub_items_filter', $sub_sc_data, $shortcode, isset($_COOKIE['ig_pb_data_for_modal']) ? $_COOKIE['ig_pb_data_for_modal'] : '');
         $extract_params['sub_items_content'] = $sub_sc_data;
     }
     // Set auto title for the subitem if have
     $extract_title = isset($el_title) && $el_title != __('(Untitled)', IGPBL) ? $el_title : '';
     // MODIFY $instance->items
     IG_Pb_Helper_Shortcode::generate_shortcode_params($instance->items, NULL, $extract_params, TRUE, FALSE, $extract_title);
     // if have sub-shortcode, re-generate shortcode structure
     if (!empty($instance->config['has_subshortcode'])) {
         $instance->shortcode_data();
     }
 }
 // get Modal setting box
 $settings = $instance->items;
 $settings_html = IG_Pb_Objects_Modal::get_shortcode_modal_settings($settings, $shortcode, $extract_params, $params);
Esempio n. 3
0
 /**
  * extract a param from shortcode data
  */
 function shortcode_extract_param()
 {
     if (!isset($_POST[IGNONCE]) || !wp_verify_nonce($_POST[IGNONCE], IGNONCE)) {
         return;
     }
     $data = $_POST['data'];
     $extract_param = $_POST['param'];
     $extract = array();
     $shortcodes = IG_Pb_Helper_Shortcode::extract_sub_shortcode($data);
     foreach ($shortcodes as $shortcode) {
         $shortcode = stripslashes($shortcode);
         $parse_params = shortcode_parse_atts($shortcode);
         $extract[] = isset($parse_params[$extract_param]) ? trim($parse_params[$extract_param]) : '';
     }
     $extract = array_filter($extract);
     $extract = array_unique($extract);
     echo balanceTags(implode(',', $extract));
     exit;
 }