/** * jsn select fonts element * @param type $element * @return string */ static function render($element) { $selected_value = $element['std']; $options = $element['options']; $output = ''; $label = ''; if (is_array($options) && count($options) > 0) { $element['exclude_class'] = array('form-control'); $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<select id='{$element['id']}' name='{$element['id']}' class='jsn-fontFaceType {$element['class']}' data-selected='{$selected_value}' value='{$selected_value}' >"; foreach ($options as $key => $value) { if (!is_numeric($key)) { $option_value = $key; } else { $option_value = $value; } $selected = $option_value == $selected_value ? 'selected' : ''; $output .= "<option value='{$option_value}' {$selected}>{$value}</option>"; } $output .= '</select>'; } add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 9); return parent::final_element($element, $output, $label); }
/** * List of other option types ( checkbox, select... ) * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $options_type = isset($element['options_type']) ? $element['options_type'] : ''; $ul_wrap = isset($element['ul_wrap']) ? $element['ul_wrap'] : true; $output = ''; $element_clone = $element; $element_clone['wrapper_item_start'] = "<li class='jsn-item jsn-iconbar-trigger'>"; $element_clone['wrapper_item_end'] = '</li>'; $element_clone['blank_output'] = '1'; $element['class'] = str_replace('form-control', '', $element['class']); $element_clone['class'] = (isset($element['class']) ? $element['class'] : '') . ' ' . $options_type; // re-arrange $element['options'] array by the order of value in $element['std'] $element_clone['std'] = str_replace(',', '__#__', $element_clone['std']); if (!isset($element_clone['no_order'])) { $std_val = explode('__#__', $element_clone['std']); $std = array(); foreach ($std_val as $value) { if (trim($value) != '' && isset($element_clone['options'][$value])) { $std[$value] = $element_clone['options'][$value]; } } // other option value which is not defined in std foreach ($element_clone['options'] as $key => $value) { if (!in_array($key, $std_val)) { $std[$key] = $value; } } $element_clone['options'] = $std; } $output = IG_Pb_Helper_Shortcode::render_parameter($options_type, $element_clone); $output = $ul_wrap ? "<ul class='jsn-items-list ui-sortable'>{$output}</ul>" : $output; return parent::final_element($element, $output, $label); }
/** * Text input hidden * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<input type='hidden' id='{$element['id']}' class='{$element['class']}' value='{$element['std']}' DATA_INFO />"; return parent::final_element($element, $output, $label); }
/** * Label * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<span class='add-on input-group-addon {$element['class']}'>{$element['std']}</span>"; return parent::final_element($element, $output, $label); }
/** * Horizonal slider to select a numeric value * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $std_max = empty($element['std_max']) ? 100 : $element['std_max']; $output = '<script> ( function ($ ) { $( document ).ready( function () { $( "#' . $element['id'] . '_slider" ).slider({ range: "min", value: ' . $element['std'] . ', min: 1, max: ' . $std_max . ', slide: function ( event, ui ) { $( "#' . $element['id'] . '" ).val( ui.value ).change(); } }); }); })( jQuery ) </script>'; $output .= '<div id="' . $element['id'] . '_slider" class="' . $element['class'] . '" ></div>'; $output .= '<input type="hidden" id="' . $element['id'] . '" value="' . $element['std'] . '" />'; return parent::final_element($element, $output, $label); }
/** * hr element * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = '<hr DATA_INFO />'; return parent::final_element($element, $output, $label); }
/** * Icons * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<div id='icon_selector'>\n\t\t\t<input type='hidden' value='{$element['std']}' id='{$element['id']}' name='{$element['id']}' DATA_INFO />\n\t\t</div>"; add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 0); return parent::final_element($element, $output, $label); }
/** * Simple Input text * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $type = !empty($element['input_type']) ? $element['input_type'] : 'text'; $output = "<input type='{$type}' class='{$element['class']}' value='{$element['std']}' id='{$element['id']}' name='{$element['id']}' DATA_INFO />"; return parent::final_element($element, $output, $label); }
/** * Selectbox of Google Map Destination * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<div id='{$element['id']}_wrapper' class='ig-destination-wrapper'><select id=\"select_{$element['id']}\"><option value=\"none\">" . __('None', IGPBL) . '</option></select></div>'; $output .= "<div class='image_loader'></div>"; $output .= "<input type='hidden' id='{$element['id']}' class='{$element['class']}' value='{$element['std']}' DATA_INFO />"; return parent::final_element($element, $output, $label); }
/** * gradient picker * @param type $element */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<input type='hidden' class='jsn-grad-ex' id='{$element['id']}' name='{$element['id']}' value='{$element['std']}' DATA_INFO />"; $output .= "<div class='classy-gradient-box'></div>"; add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 0); return parent::final_element($element, $output, $label); }
/** * Button * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $element['class'] = $element['class'] ? $element['class'] . ' btn' : 'btn'; $action_type = isset($element['action_type']) ? " data-action-type = '{$element["action_type"]}' " : ''; $action = isset($element['action']) ? " data-action = '{$element["action"]}' " : ''; $output = "<button class='{$element['class']}' {$action_type} {$action}>{$element['std']}</button>"; return parent::final_element($element, $output, $label); }
/** * Tag * @param type $element * @return string */ static function render($element) { $element['exclude_class'] = array('form-control'); $element = parent::get_extra_info($element); $label = parent::get_label($element); $element['class'] = $element['class'] ? $element['class'] . ' select2' : 'select2'; $output = "<input type='hidden' value='{$element['std']}' id='{$element['id']}' class='{$element['class']}' data-share='ig_share_data' DATA_INFO />"; add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 9); return parent::final_element($element, $output, $label); }
/** * Button group * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<div class='btn-group'>\n\t\t <a class='btn btn-default dropdown-toggle' data-toggle='dropdown' href='#'>\n\t\t\t" . __('Convert to', IGPBL) . "...\n\t\t\t<span class='caret'></span>\n\t\t </a>\n\t\t <ul class='dropdown-menu'>"; foreach ($element['actions'] as $action) { $output .= "<li><a href='#' data-action = '{$action["action"]}' data-action-type = '{$action["action_type"]}'>{$action['std']}</a></li>"; } $output .= '</ul></div>'; return parent::final_element($element, $output, $label); }
/** * Color picker * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $bg_color = $element['std'] ? $element['std'] : '#000'; $_hidden = isset($element['hide_value']) && $element['hide_value'] == false ? 'type="text"' : 'type="hidden"'; $output = '<input ' . $_hidden . " size='10' id='{$element['id']}' class='input-mini' disabled='disabled' name='{$element['id']}' value='{$element['std']}' DATA_INFO />"; $output .= "<div id='color-picker-{$element['id']}' class='color-selector'><div style='background-color: {$bg_color}'></div></div>"; add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 9); return parent::final_element($element, $output, $label); }
/** * Selectbox to select font * @param type $element * @return type */ static function render($element) { $selected_value = $element['std']; $element['exclude_class'] = array('form-control'); $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<select id='{$element['id']}' class='jsn-fontFace {$element['class']}' data-selected='{$selected_value}' value='{$selected_value}'>"; $output .= "<option value='{$selected_value}' selected='selected'>{$selected_value}</option>"; $output .= '</select>'; return parent::final_element($element, $output, $label); }
/** * Textarea option * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $element['row'] = isset($element['row']) ? $element['row'] : '8'; $element['col'] = isset($element['col']) ? $element['col'] : '50'; if ($element['exclude_quote'] == '1') { $element['std'] = str_replace('<ig_quote>', '"', $element['std']); } $output = "<textarea class='{$element['class']}' id='{$element['id']}' rows='{$element['row']}' cols='{$element['col']}' name='{$element['id']}' DATA_INFO>{$element['std']}</textarea>"; return parent::final_element($element, $output, $label); }
/** * Input field to select Media * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $_filter_type = isset($element['filter_type']) ? $element['filter_type'] : 'image'; $output = '<div class="input-append row-fluid input-group"> <input type="text" class="' . $element['class'] . '" value="' . $element['std'] . '" id="' . $element['id'] . '"> <span class="input-group-addon select-media btn btn-default" filter_type="' . $_filter_type . '" id="' . $element['id'] . '_button">...</span> <span class="input-group-addon select-media-remove btn btn-default"><i class="icon-remove"></i></span> </div>'; return parent::final_element($element, $output, $label); }
/** * Dimension type, which defines Width, Height of element * @param type $element * @param type $input_params * @return type */ static function render($element, $input_params) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $element['dimension_elements'] = isset($element['dimension_elements']) ? explode(',', str_replace(' ', '', $element['dimension_elements'])) : array('w', 'h'); $_no_prefix_id = str_replace('param-', '', $element['id']); $output = ''; if (in_array('w', $element['dimension_elements'])) { $_idx_width = $_no_prefix_id . '_width'; $_idx_width_unit = $_no_prefix_id . '_width_unit'; $element['width_std'] = isset($element[$_idx_width]) ? $element[$_idx_width]['std'] : ''; $element['width_std'] = isset($input_params[$_idx_width]) ? $input_params[$_idx_width] : $element['width_std']; // Width and Width unit $_width = array('id' => $element['id'] . '_width', 'type' => 'text_append', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini input-sm', 'parent_class' => 'input-group-inline', 'std' => $element['width_std'], 'append_before' => 'W', 'validate' => 'number', 'bound' => '0'); if (isset($element[$_idx_width_unit])) { $element['width_unit_std'] = isset($element[$_idx_width_unit]) ? $element[$_idx_width_unit]['std'] : ''; $element['width_unit_std'] = isset($input_params[$_idx_width_unit]) ? $input_params[$_idx_width_unit] : $element['width_unit_std']; $_w_unit = array('id' => $element['id'] . '_width_unit', 'type' => 'select', 'class' => 'input-mini input-sm', 'bound' => '0'); $_w_unit = array_merge($_w_unit, $element[$_idx_width_unit]); $_w_unit['std'] = $element['width_unit_std']; $_append = ''; } else { $_width = array_merge($_width, array('append' => 'px')); } $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_width); $output .= isset($element[$_idx_width_unit]) ? IG_Pb_Helper_Shortcode::render_parameter('select', $_w_unit) : ''; } // Height and Height Unit if (in_array('h', $element['dimension_elements'])) { $_idx_height = $_no_prefix_id . '_height'; $_idx_height_unit = $_no_prefix_id . '_height_unit'; $element['height_std'] = isset($element[$_idx_height]) ? $element[$_idx_height]['std'] : ''; $element['height_std'] = isset($input_params[$_idx_height]) ? $input_params[$_idx_height] : $element['height_std']; $_append = 'px'; $_height = array('id' => $element['id'] . '_height', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini input-sm', 'parent_class' => 'input-group-inline', 'std' => $element['height_std'], 'append_before' => 'H', 'validate' => 'number', 'bound' => '0'); if (isset($element[$_idx_height_unit])) { $element['height_unit_std'] = isset($element[$_idx_width_unit]) ? $element[$_idx_width_unit]['std'] : ''; $element['height_unit_std'] = isset($input_params[$_idx_width_unit]) ? $input_params[$_idx_width_unit] : $element['width_unit_std']; $_h_unit = array('id' => $element['id'] . '_height_unit', 'type' => 'select', 'class' => 'input-mini input-sm', 'bound' => '0'); $_h_unit = array_merge($_h_unit, $element[$_idx_height_unit]); $_h_unit['std'] = $element['height_unit_std']; $_append = ''; } else { $_height = array_merge($_height, array('append' => 'px')); } $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_height); $output .= isset($element[$_idx_height_unit]) ? IG_Pb_Helper_Shortcode::render_parameter('select', $_h_unit) : ''; } return parent::final_element($element, $output, $label); }
/** * Render editor using jquery-te library * * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $element['row'] = isset($element['row']) ? $element['row'] : '8'; $element['col'] = isset($element['col']) ? $element['col'] : '50'; if ($element['exclude_quote'] == '1') { $element['std'] = str_replace('<ig_quote>', '"', $element['std']); } $output = "<textarea class='{$element['class']} ig_pb_editor' id='{$element['id']}' rows='{$element['row']}' cols='{$element['col']}' name='{$element['id']}' DATA_INFO>{$element['std']}</textarea>"; add_filter('ig_pb_assets_register_modal', array(__CLASS__, 'register_assets_register_modal')); add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 9); return parent::final_element($element, $output, $label, true); }
/** * Text input which has prefix/postfix Bootstrap add-on * * @param type $element * * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); //$ext_class = ( isset( $element['append_before'] ) ) ? 'input-prepend' : ''; //$ext_class .= ( isset( $element['append'] ) ) ? ' input-append' : ''; $ext_class = isset($element['append_before']) || isset($element['append']) ? 'input-group col-xs-2 ' : ''; $ext_class .= isset($element['specific_class']) ? $element['specific_class'] : ''; $output = "<div class='{$ext_class}'>"; $output .= isset($element['append_before']) ? "<span class='add-on input-group-addon'>{$element['append_before']}</span>" : ''; $output .= "<input type='{$element['type_input']}' class='{$element['class']}' value='{$element['std']}' id='{$element['id']}' name='{$element['id']}' DATA_INFO />"; $output .= isset($element['append']) ? "<span class='add-on input-group-addon'>{$element['append']}</span>" : ''; $output .= '</div>'; return parent::final_element($element, $output, $label); }
/** * Radio Button group * @param type $element * @return string */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = "<div class='btn-group ig-btn-group' data-toggle='buttons'>"; foreach ($element['options'] as $key => $text) { $active = $key == $element['std'] ? 'active' : ''; $checked = $key == $element['std'] ? 'checked' : ''; $output .= "<label class='btn btn-default {$active}'>"; $output .= "<input type='radio' name='{$element['id']}' {$checked} id='{$element['id']}' value='{$key}'/>"; $output .= $text; $output .= "</label>"; } $output .= '</div>'; return parent::final_element($element, $output, $label); }
/** * Checkbox option * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $type = isset($element['input_type']) ? $element['input_type'] : 'checkbox'; $element['std'] = explode('__#__', $element['std']); $output = $add_class = $linebreak = ''; $_class = !empty($element['class']) ? $element['class'] : 'checkbox inline'; $_class = str_replace('form-control', '', $_class); $_ig_has_depend = !empty($element['has_depend']) && $element['has_depend'] == '1' ? ' ig_has_depend' : ''; foreach ($element['options'] as $key => $text) { $checked = in_array($key, $element['std']) || $element['std'][0] == 'all' ? 'checked' : ''; $action_item = ''; if (isset($element['popover_items']) && is_array($element['popover_items'])) { $action_item = in_array($key, $element['popover_items']) ? "data-popover-item='yes'" : ''; } if (isset($element['label_type'])) { if ($element['label_type'] == 'image') { // hide radio button $add_class = ' hidden'; $option_html = ''; $dimension = $element['dimension']; $width_height = "width:{$dimension[0]}px;height:{$dimension[1]}px;"; if (!is_array($text)) { $option_html .= "<span style='{$width_height}' class='radio_image'></span>"; } else { $linebreak = isset($text['linebreak']) ? '<br>' : ''; $background = isset($text['img']) ? "background-image:url( {$text['img']} )" : ''; $option_html .= "<span style='{$width_height} {$background}' title='{$text[0]}' class='radio_image'></span>"; } $text = $option_html; } } $str = "<label class='" . $_class . "'><input class='{$_ig_has_depend}{$add_class}' type='" . $type . "' value='{$key}' id='{$element['id']}' name='{$element['id']}' {$checked} DATA_INFO {$action_item}/>{$text}</label>{$linebreak}"; if (isset($element['wrapper_item_start'])) { $str = $element['wrapper_item_start'] . $str; } if (isset($element['wrapper_item_end'])) { $str = $str . $element['wrapper_item_end']; } $output .= $str; } if ($type == 'checkbox') { $output .= "<input type='hidden' value=' ' id='{$element['id']}' name='{$element['id']}' />"; } return parent::final_element($element, $output, $label); }
/** * Option to Define top/right/bottom/left margin for element * @param type $element * @param type $input_params * @return type */ static function render($element, $input_params) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $_no_prefix_id = str_replace('param-', '', $element['id']); // Set default margin element // t: top // r: right // b: bottom // l: left $element['margin_elements'] = isset($element['margin_elements']) ? explode(',', str_replace(' ', '', $element['margin_elements'])) : array('t', 'r', 'b', 'l'); $output = ''; $_br = false; if (in_array('t', $element['margin_elements'])) { $_idx_top = $_no_prefix_id . '_top'; $_br = true; $element['top_std'] = isset($element[$_idx_top]) ? $element[$_idx_top]['std'] : ''; $element['top_std'] = isset($input_params[$_idx_top]) ? $input_params[$_idx_top] : $element['top_std']; $_top = array('id' => $element['id'] . '_top', 'type' => 'text_append', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini', 'parent_class' => 'input-group-inline', 'std' => $element['top_std'], 'append_before' => '<i class="icon-arrow-up"></i>', 'append' => 'px', 'validate' => 'number', 'bound' => '0'); $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_top); } if (in_array('r', $element['margin_elements'])) { $_idx_right = $_no_prefix_id . '_right'; $_br = true; $element['right_std'] = isset($element[$_idx_right]) ? $element[$_idx_right]['std'] : ''; $element['right_std'] = isset($input_params[$_idx_right]) ? $input_params[$_idx_right] : $element['right_std']; $_right = array('id' => $element['id'] . '_right', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini', 'parent_class' => 'input-group-inline', 'std' => $element['right_std'], 'append_before' => '<i class="icon-arrow-right"></i>', 'append' => 'px', 'validate' => 'number', 'bound' => '0'); $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_right); } $output .= $_br ? '<div class="clearbreak"></div>' : ''; if (in_array('b', $element['margin_elements'])) { $_idx_bottom = $_no_prefix_id . '_bottom'; $element['bottom_std'] = isset($element[$_idx_bottom]) ? $element[$_idx_bottom]['std'] : ''; $element['bottom_std'] = isset($input_params[$_idx_bottom]) ? $input_params[$_idx_bottom] : $element['bottom_std']; $_bottom = array('id' => $element['id'] . '_bottom', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini', 'parent_class' => 'input-group-inline', 'std' => $element['bottom_std'], 'append_before' => '<i class="icon-arrow-down"></i>', 'append' => 'px', 'validate' => 'number', 'bound' => '0'); $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_bottom); } if (in_array('l', $element['margin_elements'])) { $_idx_left = $_no_prefix_id . '_left'; $element['left_std'] = isset($element[$_idx_left]) ? $element[$_idx_left]['std'] : ''; $element['left_std'] = isset($input_params[$_idx_left]) ? $input_params[$_idx_left] : $element['left_std']; $_left = array('id' => $element['id'] . '_left', 'input_type' => 'number', 'class' => 'jsn-input-number input-mini', 'parent_class' => 'input-group-inline', 'std' => $element['left_std'], 'append_before' => '<i class="icon-arrow-left"></i>', 'append' => 'px', 'validate' => 'number', 'bound' => '0'); $output .= IG_Pb_Helper_Shortcode::render_parameter('text_append', $_left); } return parent::final_element($element, $output, $label); }
/** * List of "items_list" * @param type $element * @return type */ static function render($element) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $output = ''; $items = isset($element['items']) ? $element['items'] : ''; if (is_array($items)) { foreach ($items as $element_) { $element_func = $element_['type']; $element_['wrap'] = '0'; $element_['wrap_class'] = ''; $element_['std'] = $element['std']; $element_['id'] = $element['id']; $output .= IG_Pb_Helper_Shortcode::render_parameter($element_func, $element_); } } return parent::final_element($element, $output, $label); }
/** * select box * @param type $element * @return string */ static function render($element) { $selected_value = $element['std']; $options = $element['options']; $output = ''; $label = ''; if (is_array($options) && count($options) > 0) { $element = parent::get_extra_info($element); $label = parent::get_label($element); $multiple = isset($element['multiple']) ? 'multiple="multiple"' : ''; // Add default select2 for all select html type $element['class'] .= ' select2-select'; $element['class'] = str_replace('form-control', '', $element['class']); $output = "<select id='{$element['id']}' name='{$element['id']}' class='{$element['class']}' {$multiple} >"; foreach ($options as $key => $value) { if (is_array($value)) { if ($value['type'] == 'optiongroup') { $output .= '<optgroup label="' . $value['text'] . '">'; } } else { $option_value = $key; $selected = $option_value == $selected_value ? 'selected' : ''; $output .= "<option value='{$option_value}' {$selected}>{$value}</option>"; } } $output .= '</select>'; if (isset($element['append_text'])) { $output .= "<span class='add-on input-group-addon'>{$element['append_text']}</span>"; } if (isset($element['multiple'])) { $output .= "<input type='hidden' id='{$element['id']}_select_multi' value='{$element['std']}' />"; } } add_filter('ig-edit-element-required-assets', array(__CLASS__, 'enqueue_assets_modal'), 9); return parent::final_element($element, $output, $label); }
/** * generate HTML in IG PageBuilder for Table type * @param sub_item_type $element * @return type */ static function render($element) { $label = parent::get_label($element); $sub_items = $element['sub_items']; $sub_item_type = $element['sub_item_type']; $items_html = array(); $sample_table_item = ''; // Get HTML of Each Cell $shortcode_data_arr = array(); // Add extra params to disable drag handle $extra_params = array('drag_handle' => false); foreach ($sub_items as $idx => $item) { $element_ = new $sub_item_type(); $element_->init_element(); $shortcode_data = ''; $content = ' '; // don't leave it empty if (!empty($item['std'])) { // keep shortcode data as it is $shortcode_data = $item['std']; // reassign params for shortcode base on std string $extract_params = IG_Pb_Helper_Shortcode::extract_params($item['std']); $params = IG_Pb_Helper_Shortcode::generate_shortcode_params($element_->items, NULL, $extract_params, TRUE, FALSE, $content); $element_->shortcode_data(); if (!empty($params['extract_title'])) { $content = $params['extract_title']; $shortcode_data = $element_->config['shortcode_structure']; } $shortcode_data_arr[$idx] = $shortcode_data; } $element_type = $element_->element_in_pgbldr($content, $shortcode_data, '', '', true, $extra_params); // Create sample table item data if (!$sample_table_item) { $sample_table_item = $element_->element_in_pgbldr(null, null, '', '', true, $extra_params); } foreach ($element_type as $element_structure) { $items_html[] = $element_structure; } } // Wrap cell to a Table to display in IG PageBuilder $row = 0; $updated_html = array(); $columns_count = array(); foreach ($items_html as $idx => $cell) { if (!isset($columns_count[$row])) { $columns_count[$row] = 0; } else { $columns_count[$row]++; } $cell_html = ''; $cell_wrap = $row == 0 ? 'th' : 'td'; if (strpos($cell, "[ig_item_table tagname='tr_start' ][/ig_item_table]") !== false) { $cell_html .= '<tr>'; } else { if (strpos($cell, "[ig_item_table tagname='tr_end' ][/ig_item_table]") !== false) { // Delete button on right side of table $action_html = $row == 0 ? '' : "<a href='#' title='" . __('Delete', IGPBL) . "' onclick='return false;' data-target='row_table' class='element-delete'><i class='icon-trash'></i></a>"; $cell_html .= "<{$cell_wrap} valign='middle' class='ig-delete-column-td'><div class='jsn-iconbar'>{$action_html}</div></{$cell_wrap}>"; $cell_html .= '</tr>'; $row++; } else { extract(shortcode_parse_atts($shortcode_data_arr[$idx])); $width = !empty($width_value) ? "width='{$width_value}{$width_type}'" : ''; $cell_html .= "<{$cell_wrap} rowspan='{$rowspan}' colspan='{$colspan}' {$width}>{$cell}</{$cell_wrap}>"; } } $updated_html[] = $cell_html; } // Delete button below the table $bottom_row = "<tr class='ig-row-of-delete'>"; for ($i = 0; $i < max($columns_count) - 1; $i++) { $bottom_row .= "<td><div class='jsn-iconbar'><a href='#' title='" . __('Delete', IGPBL) . "' onclick='return false;' data-target='column_table' class='element-delete'><i class='icon-trash'></i></a></div></td>"; } $bottom_row .= '</tr>'; $updated_html[] = $bottom_row; $items_html = "<table class='table table-bordered igpb-table-exceprt' id='table_content'>" . implode('', $updated_html) . '</table>'; // end Wrap $buttons = '<button class="btn btn-default table_action" data-target="table_row">' . __('Add Row', IGPBL) . '</button> <button class="btn btn-default table_action" data-target="table_column">' . __('Add Column', IGPBL) . '</button>'; $output = "<div class='item-container has_submodal table_element'>\n\t\t\t\t\t\t<div class='jsn-fieldset-filter'><div class='btn-toolbar clearafter'>{$buttons}</div></div>\n\t\t\t\t\t\t<div class='ui-sortable item-container-content'>\n\t\t\t\t\t\t\t{$items_html}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>"; $sample_tmpl_id = strtolower($sub_item_type); $output .= isset($sample_table_item[0]) ? "<script id='tmpl-" . $sample_tmpl_id . "-sample' type='text/html'>" . $sample_table_item[0] . "</script>" : ''; return parent::final_element($element, $output, $label); }
/** * Get html item * * @param array $data * * @return string */ public static function getElementItemHtml($data) { $default = array('element_wrapper' => '', 'modal_title' => '', 'element_type' => '', 'name' => '', 'shortcode' => '', 'shortcode_data' => '', 'content_class' => '', 'content' => '', 'action_btn' => '', 'exclude_gen_shortcode' => '', 'has_preview' => true, 'this_' => ''); $data = array_merge($default, $data); extract($data); $input_html = ''; $preview_html = ''; if ($has_preview) { $preview_html = '<div class="shortcode-preview-container" style="display: none"> <div class="shortcode-preview-fog"></div> <div class="jsn-overlay jsn-bgimage image-loading-24"></div> </div>'; } $extra_class = 'EXTRA_CLASS'; $custom_style = 'STYLE'; $other_class = ''; if (!empty($this_)) { $match = preg_match("/\\[{$shortcode}" . '\\s' . '([^\\]])*' . 'disabled="yes"' . '([^\\]])*' . '\\]/', $shortcode_data); if ($match) { $other_class = 'disabled'; } } $buttons = array('edit' => '<a href="#" onclick="return false;" title="' . JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_EDIT_ELEMENT') . '" data-shortcode="' . $shortcode . '" class="element-edit"><i class="icon-pencil"></i></a>', 'clone' => '<a href="#" onclick="return false;" title="' . JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_DUPLICATE_ELEMENT') . '" data-shortcode="' . $shortcode . '" class="element-clone"><i class="icon-copy"></i></a>', 'delete' => '<a href="#" onclick="return false;" title="' . JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_DELETE_ELEMENT') . '" class="element-delete"><i class="icon-trash"></i></a>'); if (!empty($other_class)) { $buttons = array_merge($buttons, array('deactivate' => '<a href="#" onclick="return false;" title="' . JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_REACTIVE_ELEMENT') . '" data-shortcode="' . $shortcode . '" class="element-deactivate"><i class="icon-checkmark"></i></a>')); } // Add drag handle if ($shortcode === 'pb_table_item') { $drag_handle_html = ""; } else { $drag_handle_html = "<div class='heading'><a class='element-drag'></a></div>"; } $action_btns = empty($action_btn) ? implode('', $buttons) : $buttons[$action_btn]; if (!empty($shortcode_data) && $shortcode == 'pb_pricingtable_item_item') { $attrs = JSNPagebuilderHelpersShortcode::shortcodeParseAtts($shortcode_data); $matchtype = preg_match("/\\[{$shortcode}" . '\\s' . '([^\\]])*' . 'prtbl_item_attr_type="checkbox"' . '([^\\]])*' . '\\]/', $shortcode_data); if ($matchtype == 1) { $check_value = isset($attrs['prtbl_item_attr_value']) && $attrs['prtbl_item_attr_value'] != '' ? $attrs['prtbl_item_attr_value'] : 'no'; $option = array('id' => 'prtbl_item_attr_type_' . $attrs['prtbl_item_attr_id'], 'type' => 'radio', 'std' => $check_value, 'options' => array('yes' => JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_YES'), 'no' => JText::_('JSN_PAGEBUILDER_HELPER_BUILDER_NO')), 'parent_class' => 'no-hover-subitem prtbl_item_attr_type'); $content = IG_Pb_Helper_Html::radio($option); return "<{$element_wrapper} class='jsn-item jsn-element ui-state-default shortcode-container radio-type ' {$element_type} data-name='{$name}' {$custom_style}>\n\t\t\t<textarea class='hidden {$exclude_gen_shortcode} shortcode-content' shortcode-name='{$shortcode}' data-sc-info='shortcode_content' name='shortcode_content[]' >{$shortcode_data}</textarea>\n\t\t\t{$content}\n\t\t\t</{$element_wrapper}>"; } } // if (strpos($shortcode_data,'system-readmore') !== false) { // return "<$element_wrapper id='read-more' class='jsn-item jsn-element ui-state-default jsn-iconbar-trigger shortcode-container $extra_class $other_class' $modal_title $element_type data-name='Read more' $custom_style> // <textarea class='hidden $exclude_gen_shortcode shortcode-content' shortcode-name='$shortcode' data-sc-info='shortcode_content' name='shortcode_content[]' >$shortcode_data</textarea> // <div class='pb-plg-element'>Read more</div> // </$element_wrapper>"; // } else { return "<{$element_wrapper} class='jsn-item jsn-element ui-state-default jsn-iconbar-trigger shortcode-container {$extra_class} {$other_class}' {$modal_title} {$element_type} data-name='{$name}' {$custom_style}>\n\n\t\t\t\t<textarea class='hidden {$exclude_gen_shortcode} shortcode-content' shortcode-name='{$shortcode}' data-sc-info='shortcode_content' name='shortcode_content[]' >{$shortcode_data}</textarea>\n\t\t\t\t{$drag_handle_html}\n\t\t <div class='{$content_class}'>{$content}</div>\n\t\t {$input_html}\n\t\t\t\t<div class='jsn-iconbar'>{$action_btns}</div>\n\t\t\t\t{$preview_html}\n\t\t\t\t</{$element_wrapper}>"; //} }
/** * get HTML of Modal Settings Box of Shortcode * * @param array $options * * @return string */ static function get_shortcode_modal_settings($settings, $shortcode = '', $input_params = null, $raw_shortcode = null) { $i = 0; $tabs = $contents = $actions = $general_actions = array(); foreach ((array) $settings as $tab => $options) { $options = self::ignore_settings($options); if ($tab == 'action') { foreach ($options as $option) { $actions[] = IG_Pb_Helper_Shortcode::render_parameter($option['type'], $option); } } else { if ($tab == 'generalaction') { foreach ($options as $option) { $option['id'] = isset($option['id']) ? 'param-' . $option['id'] : ''; $general_actions[] = IG_Pb_Helper_Shortcode::render_parameter($option['type'], $option); } } else { $active = $i++ == 0 ? 'active' : ''; if (strtolower($tab) != 'notab') { $data_ = isset($settings[$tab]['settings']) ? $settings[$tab]['settings'] : array(); $data_['href'] = "#{$tab}"; $data_['data-toggle'] = 'tab'; $content_ = ucfirst($tab); $tabs[] = "<li class='{$active}'>" . self::tab_settings('a', $data_, $content_) . '</li>'; } $has_margin = 0; $param_html = array(); foreach ($options as $idx => $option) { // check if this element has Margin param (1) if (isset($option['name']) && $option['name'] == __('Margin', IGPBL) && $option['id'] != 'div_margin') { $has_margin = 1; } // if (1), don't use the 'auto extended margin ( top, bottom ) option' if ($has_margin && isset($option['id']) && $option['id'] == 'div_margin') { continue; } $type = $option['type']; $option['id'] = isset($option['id']) ? 'param-' . $option['id'] : "{$idx}"; if (!is_array($type)) { $param_html[$option['id']] = IG_Pb_Helper_Shortcode::render_parameter($type, $option, $input_params); } else { $output_inner = ''; foreach ($type as $sub_options) { $sub_options['id'] = isset($sub_options['id']) ? 'param-' . $sub_options['id'] : ''; /* for sub option, auto assign bound = 0 {not wrapped by <div class='controls'></div> } */ $sub_options['bound'] = '0'; /* for sub option, auto assign 'input-small' class */ $sub_options['class'] = isset($sub_options['class']) ? $sub_options['class'] : ''; $type = $sub_options['type']; $output_inner .= IG_Pb_Helper_Shortcode::render_parameter($type, $sub_options); } $option = IG_Pb_Helper_Html::get_extra_info($option); $label = IG_Pb_Helper_Html::get_label($option); $param_html[$option['id']] = IG_Pb_Helper_Html::final_element($option, $output_inner, $label); } } if (!empty($param_html['param-copy_style_from'])) { array_pop($param_html); // move "auto extended margin ( top, bottom ) option" to top of output $style_copy = array_shift($param_html); // Shift Preview frame from the array $preview = array_shift($param_html); if (!empty($param_html['param-div_margin'])) { $margin = $param_html['param-div_margin']; $param_html = array_merge(array($preview, $style_copy, $margin), $param_html); } else { $param_html = array_merge(array($preview, $style_copy), $param_html); } } $param_html = implode('', $param_html); $content_tab = "<div class='tab-pane {$active} ig-pb-setting-tab' id='{$tab}'>{$param_html}</div>"; $contents[] = $content_tab; } } } // Auto-append `Shortcode Content` tab if ($shortcode != 'ig_row') { self::shortcode_content_tab($tabs, $contents, $raw_shortcode); } return self::setting_tab_html($shortcode, $tabs, $contents, $general_actions, $settings, $actions); }
/** * Get HTML of Modal Settings Box of Shortcode * * @param array $settings * @param string $shortcode * @param string $input_params * * @return string */ static function getShortcodeModalSettings($settings, $shortcode = '', $input_params = null) { include_once JPATH_ROOT . '/administrator/components/com_pagebuilder/libraries/innotheme/shortcode/html.php'; $i = 0; $tabs = $contents = $actions = $general_actions = array(); foreach ($settings as $tab => $options) { $options = self::ignoreSettings($options); if ($tab == "action") { foreach ($options as $option) { $actions[] = IG_Pb_Helper_Html::$option['type']($option); } } else { if ($tab == "generalaction") { foreach ($options as $option) { $option['id'] = isset($option['id']) ? 'param-' . $option['id'] : ""; $general_actions[] = IG_Pb_Helper_Html::$option['type']($option); } } else { $active = $i++ == 0 ? "active" : ""; if ($tab != "Notab") { $data_ = isset($settings[$tab]["settings"]) ? $settings[$tab]["settings"] : array(); $data_["href"] = "#{$tab}"; $data_["data-toggle"] = "tab"; $content_ = ucfirst($tab); $tabs[] = "<li class='{$active}'>" . self::tabSettings("a", $data_, $content_) . "</li>"; } $has_margin = 0; $param_html = array(); foreach ($options as $idx => $option) { // check if this element has Margin param (1) if (isset($option['name']) && $option['name'] == JText::_('Margin') && $option['id'] != 'div_margin') { $has_margin = 1; } // if (1), don't use the 'auto extended margin ( top, bottom ) option' if ($has_margin && isset($option['id']) && $option['id'] == 'div_margin') { continue; } $type = $option['type']; $option['id'] = isset($option['id']) ? 'param-' . $option['id'] : "{$idx}"; if (!is_array($type)) { //$content_tab .= IG_Pb_Helper_Html::$type($option, $input_params); $param_html[$option['id']] = IG_Pb_Helper_Html::$type($option, $input_params); } else { $output_inner = ""; foreach ($type as $sub_options) { $sub_options['id'] = isset($sub_options['id']) ? 'param-' . $sub_options['id'] : ""; /* for sub option, auto assign bound = 0 {not wrapped by <div class="controls"></div> } */ $sub_options['bound'] = "0"; /* for sub option, auto assign 'input-small' class */ $sub_options['class'] = isset($sub_options['class']) ? $sub_options['class'] : ''; $type = $sub_options['type']; $output_inner .= IG_Pb_Helper_Html::$type($sub_options); } $option = IG_Pb_Helper_Html::get_extra_info($option); $label = IG_Pb_Helper_Html::get_label($option); //$content_tab .= IG_Pb_Helper_Html::final_element($option, $output_inner, $label); $param_html[$option['id']] = IG_Pb_Helper_Html::final_element($option, $output_inner, $label); } } if (!empty($param_html['param-div_margin'])) { $margin = $param_html['param-div_margin']; array_pop($param_html); // move "auto extended margin ( top, bottom ) option" to top of output $preview = array_shift($param_html); $param_html = array_merge(array($preview, $margin), $param_html); } $param_html = implode('', $param_html); $content_tab = "<div class='tab-pane {$active}' id='{$tab}'>"; $content_tab .= $param_html; $content_tab .= '</div>'; $contents[] = $content_tab; } } } return self::settingTabHtml($shortcode, $tabs, $contents, $general_actions, $settings, $actions); }