public static function shortcode($atts, $content = null, $code = 'accordion') { extract(shortcode_atts(array('closed_bg' => 'accent1', 'title_color' => 'accent8', 'collapsible' => 'true'), $atts)); if (!wpv_sub_shortcode('pane', $content, $params, $sub_contents)) { return do_shortcode($content); } wp_enqueue_script('jquery-ui-accordion'); $title_tag = apply_filters('wpv_accordion_title_tag', 'h4'); $closed_bg = wpv_sanitize_accent($closed_bg); $title_color = wpv_sanitize_accent($title_color); global $wpv_accordions_shown; if (!isset($wpv_accordions_shown)) { $wpv_accordions_shown = 0; } $wpv_accordions_shown++; $output = ''; foreach ($sub_contents as $i => $sc) { $tab_class = ''; $bgimage = ''; if (isset($params[$i]['background_image']) && !empty($params[$i]['background_image'])) { $bgimage = 'background-image: url("' . $params[$i]['background_image'] . '");'; $tab_class .= ' has-bg'; } $output .= '<li class="pane-wrapper" style="' . esc_attr($bgimage) . '"> <' . $title_tag . ' class="tab' . $tab_class . '"><div class="inner">' . $params[$i]['title'] . '</div></' . $title_tag . '> <div class="pane"><div class="inner">' . do_shortcode(trim($sc)) . '</div></div> </li>'; } $style = '<style>.wpv-accordion-' . $wpv_accordions_shown . ' .tab .inner { background-color: ' . $closed_bg . '; color: ' . $title_color . '; }</style>'; return '<div class="wpv-accordion-wrapper wpv-accordion-' . $wpv_accordions_shown . '"><ul class="wpv-accordion" data-collapsible="' . esc_attr($collapsible) . '">' . $output . '</ul>' . $style . '</div>'; }
public static function shortcode($atts, $content = null, $code = 'accordion') { extract(shortcode_atts(array('mini' => 'true', 'collapsible' => 'true'), $atts)); if (!wpv_sub_shortcode('pane', $content, $params, $sub_contents)) { return do_shortcode($content); } wp_enqueue_script('jquery-ui-accordion'); $title_tag = apply_filters('wpv_accordion_title_tag', 'h4'); $output = ''; foreach ($sub_contents as $i => $sc) { $output .= '<' . $title_tag . ' class="tab"><div class="inner">' . $params[$i]['title'] . '</div></' . $title_tag . '>' . '<div class="pane"><div class="inner">' . do_shortcode(trim($sc)) . '</div></div>'; } return '<div class="wpv-accordion-wrapper"><div class="accordion" data-collapsible="' . $collapsible . '">' . $output . '</div></div>'; }
public static function shortcode($atts, $content = null, $code) { extract(shortcode_atts(array('layout' => 'horizontal', 'left_color' => 'accent8', 'right_color' => 'accent1', 'nav_color' => 'accent2'), $atts)); if (!wpv_sub_shortcode('tab', $content, $params, $sub_contents)) { return 'error parsing slider shortcode'; } wp_enqueue_script('jquery-ui-tabs'); wp_enqueue_script('front-jquery.ui.tabs.rotate'); global $wpv_tabs_shown; if (!isset($wpv_tabs_shown)) { $wpv_tabs_shown = 0; } $wpv_tabs_shown++; $id = 'tabs-' . $wpv_tabs_shown; $output = '<ul class="ui-tabs-nav">'; if (isset($GLOBALS['wpv_last_column_title']) && !empty($GLOBALS['wpv_last_column_title']) && $layout == 'vertical') { $output .= '<li class="inactive-block-title"><h2>' . $GLOBALS['wpv_last_column_title'] . '</h2></li>'; } foreach ($params as $i => $p) { $p = shortcode_atts(array('title' => '', 'class' => '', 'icon' => ''), $p); if (!empty($p['icon'])) { $p['icon'] = wpv_shortcode_icon(array('name' => $p['icon'])); $p['class'] .= ' has-icon'; } $class = empty($p['class']) ? '' : " class='{$p['class']}'"; $output .= '<li' . $class . '><a href="#tab-' . $wpv_tabs_shown . '-' . $i . '-' . self::sanitize_id($params[$i]['title']) . '">' . $p['icon'] . ' <span class="title-text">' . $p['title'] . '</span></a></li>'; } $output .= '</ul>'; foreach ($sub_contents as $i => $c) { $class = isset($params[$i]['class']) ? ' tab-' . $params[$i]['class'] : ''; $output .= '<div class="pane' . $class . '" id="tab-' . $wpv_tabs_shown . '-' . $i . '-' . self::sanitize_id($params[$i]['title']) . '">' . do_shortcode(trim($c)) . '</div>'; } $l = new WpvLessc(); $l->importDir = '.'; $l->setFormatter("compressed"); $left_color = wpv_sanitize_accent($left_color); $right_color = wpv_sanitize_accent($right_color); $nav_color = wpv_sanitize_accent($nav_color); $inner_style = ''; if (!empty($left_color) && !empty($right_color)) { $readable = WpvTemplates::readable_color_mixin(); $vertical_styles = $layout !== 'vertical' ? '' : "\n\t\t\t\t#{$id}.vertical {\n\t\t\t\t\t&,\n\t\t\t\t\t&:before {\n\t\t\t\t\t\tbackground: {$right_color};\n\t\t\t\t\t}\n\n\t\t\t\t\t.ui-tabs-nav {\n\t\t\t\t\t\t&:before {\n\t\t\t\t\t\t\tbackground: {$left_color};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t.pane:before {\n\t\t\t\t\t\tbackground: {$left_color};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t"; $inner_style = $l->compile($readable . $vertical_styles . "\n\t\t\t\t#{$id} {\n\t\t\t\t\t.ui-tabs-nav {\n\t\t\t\t\t\t&,\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\tbackground: {$left_color};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tli {\n\t\t\t\t\t\t\t&, a, a .icon {\n\t\t\t\t\t\t\t\tcolor: {$nav_color};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.ui-state-active,\n\t\t\t\t\t\t.ui-state-selected,\n\t\t\t\t\t\t.ui-state-hover {\n\t\t\t\t\t\t\tbackground: {$right_color};\n\n\t\t\t\t\t\t\t&, a, a .icon {\n\t\t\t\t\t\t\t\t.readable-color({$right_color});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t.inactive-block-title {\n\t\t\t\t\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\t\t\t\t\tcolor: {$nav_color};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&.horizontal {\n\t\t\t\t\t\t.pane {\n\t\t\t\t\t\t\tbackground: {$right_color};\n\n\t\t\t\t\t\t\t&,\n\t\t\t\t\t\t\tp,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\t.column-title,\n\t\t\t\t\t\t\t.sep-text h2.regular-title-wrapper,\n\t\t\t\t\t\t\t.text-divider-double,\n\t\t\t\t\t\t\t.sep-text .sep-text-line,\n\t\t\t\t\t\t\t.sep,\n\t\t\t\t\t\t\t.sep-2,\n\t\t\t\t\t\t\t.sep-3,\n\t\t\t\t\t\t\ttd,\n\t\t\t\t\t\t\tth,\n\t\t\t\t\t\t\tcaption {\n\t\t\t\t\t\t\t\t.readable-color({$right_color});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t"); } $style = '<style>' . $inner_style . '</style>'; return '<div class="wpv-tabs ' . $layout . '" id="' . $id . '">' . $output . '</div>' . $style; }
private function get_special_markup($id, $content) { $result = apply_filters('wpv_editor_get_special_markup', $content, $id); if ($result !== $content) { return $result; } ob_start(); switch ($id) { case 'accordion': if (!wpv_sub_shortcode('pane', $content, $params, $sub_contents)) { return $content; } echo '<div class="wpv_accordion">'; foreach ($sub_contents as $i => $text) { ?> <div> <h3 class="title-wrapper clearfix"> <a class="accordion-title"><?php echo $params[$i]['title']; ?> </a> <a class="accordion-remove icon-remove" title="<?php esc_attr_e('Remove', 'honeymoon'); ?> "></a> <a class="accordion-clone icon-copy" title="<?php esc_attr_e('Clone', 'honeymoon'); ?> "></a> <a class="accordion-background-selector" data-background-image="<?php if (isset($params[$i]['background_image'])) { echo esc_attr($params[$i]['background_image']); } ?> " title="<?php esc_attr_e('Change Pane Background', 'honeymoon'); ?> "><?php wpv_icon('image'); ?> </a> </h3> <div class="pane clearfix inner-sortable"><?php echo $this->do_parse($text); ?> </div> </div> <?php } echo '<div><h3><a class="accordion-add icon-plus"></a></h3></div>'; echo '</div>'; break; case 'tabs': if (!wpv_sub_shortcode('tab', $content, $params, $sub_contents)) { return $content; } $suffix = 'tabs-' . $this->get_uniqid_suffix(); echo '<div class="wpv_tabs"><ul>'; foreach ($params as $i => $pi) { $p = shortcode_atts(array('title' => '', 'icon' => ''), $pi); ?> <li> <a href="#tabs-<?php echo esc_attr($suffix . $i); ?> " class="tab-title"><?php echo $p['title']; ?> </a> <a class="tab-remove icon-remove" title="<?php esc_attr_e('Remove', 'honeymoon'); ?> "></a> <a class="tab-clone icon-copy" title="<?php esc_attr_e('Clone', 'honeymoon'); ?> "></a> <a class="wpv-icon-selector-trigger tab-icon-selector vamtam-icon <?php echo esc_attr(wpv_get_icon_type($p['icon'])); ?> <?php if (empty($p['icon'])) { echo 'no-icon'; } ?> " data-icon-name="<?php echo esc_attr($p['icon']); ?> " title="<?php esc_attr_e('Change Icon', 'honeymoon'); ?> "><?php wpv_icon($p['icon']); ?> </a> </li> <?php } echo '<li class="ui-state-default"><a class="tab-add icon-plus"></a></li>'; echo '</ul>'; foreach ($sub_contents as $i => $text) { ?> <div id="tabs-<?php echo $suffix . $i; ?> " class="clearfix inner-sortable"><?php echo $this->do_parse($text); ?> </div> <?php } echo '</div>'; break; case 'services_expandable': echo "<textarea class='inner-content'>{$content}</textarea>"; // xss ok break; default: echo $content; // xss ok } return ob_get_clean(); }