protected function sanitize_attributes(&$atts) { $clean_atts = shortcode_atts(array('type' => 'image', 'image_id' => '', 'bg_image' => '', 'bg_color' => 'rgba(0,0,0,0.4)', 'text_color' => '', 'text_size' => 'normal', 'border_width' => '1', 'outer_padding' => '10', 'inner_padding' => '10', 'min_height' => '150', 'link' => '', 'target_blank' => '1', 'animation' => 'none'), $atts); $clean_atts['text_size'] = sanitize_key($clean_atts['text_size']); $clean_atts['type'] = sanitize_key($clean_atts['type']); $clean_atts['bg_image'] = dt_make_image_src_ssl_friendly(esc_url($clean_atts['bg_image'])); $clean_atts['bg_color'] = esc_attr($clean_atts['bg_color']); $clean_atts['text_color'] = esc_attr($clean_atts['text_color']); $clean_atts['target_blank'] = apply_filters('dt_sanitize_flag', $clean_atts['target_blank']); $clean_atts['border_width'] = absint($clean_atts['border_width']); $clean_atts['outer_padding'] = absint($clean_atts['outer_padding']); $clean_atts['inner_padding'] = absint($clean_atts['inner_padding']); $clean_atts['min_height'] = absint($clean_atts['min_height']); $clean_atts['image_id'] = absint($clean_atts['image_id']); $clean_atts['link'] = esc_url($clean_atts['link']); $this->atts = $clean_atts; }
public function shortcode_benefit($atts, $content = null) { $attributes = shortcode_atts(array('image_link' => '', 'target_blank' => 'true', 'image' => '', 'hd_image' => '', 'header_size' => 'h4', 'title' => '', 'content_size' => 'normal'), $atts); $attributes['image_link'] = esc_url($attributes['image_link']); $attributes['image'] = esc_url($attributes['image']); $attributes['hd_image'] = esc_url($attributes['hd_image']); $attributes['header_size'] = in_array($attributes['header_size'], array('h2', 'h3', 'h4', 'h5', 'h6')) ? $attributes['header_size'] : 'h4'; $attributes['content_size'] = in_array($attributes['content_size'], array('normal', 'small', 'big')) ? $attributes['content_size'] : 'normal'; $attributes['title'] = wp_kses($attributes['title'], array()); $attributes['target_blank'] = apply_filters('dt_sanitize_flag', $attributes['target_blank']); $image = ''; $title = ''; $output = ''; $default_image = null; $images = array($attributes['image'], $attributes['hd_image']); // get default logo foreach ($images as $img) { if ($img) { $default_image = $img; break; } } if (!empty($default_image)) { if (dt_retina_on()) { $image = dt_is_hd_device() ? $images[1] : $images[0]; } else { $image = $images[0]; } if (empty($image)) { $image = $default_image; } // ssl support $image = dt_make_image_src_ssl_friendly($image); $image = sprintf('<img src="%s" alt="" />', $image); $image_classes = array('benefits-grid-ico'); if (isset(self::$atts['animation']) && 'none' != self::$atts['animation']) { switch (self::$atts['animation']) { case 'scale': $image_classes[] = 'scale-up'; break; case 'fade': $image_classes[] = 'fade-in'; break; case 'left': $image_classes[] = 'right-to-left'; break; case 'right': $image_classes[] = 'left-to-right'; break; case 'bottom': $image_classes[] = 'top-to-bottom'; break; case 'top': $image_classes[] = 'bottom-to-top'; break; } $image_classes[] = 'animate-element'; } // ninjaaaa! $image_classes = esc_attr(implode(' ', $image_classes)); if ($attributes['image_link']) { $image = sprintf('<a href="%s" class="%s"%s>%s</a>', $attributes['image_link'], $image_classes, $attributes['target_blank'] ? ' target="_blank"' : '', $image); } else { $image = sprintf('<span class="%s">%s</span>', $image_classes, $image); } } if ($attributes['title']) { $title = sprintf('<%1$s>%2$s</%1$s>', $attributes['header_size'], $attributes['title']); } $style = '1'; $column = '4'; $dividers = ' class="borders"'; if (!empty(self::$atts)) { $style = self::$atts['style']; $column = self::$atts['columns']; $dividers = !self::$atts['dividers'] ? $dividers = '' : $dividers; } switch ($column) { case '1': $column_class = 'wf-1'; break; case '2': $column_class = 'wf-1-2'; break; case '3': $column_class = 'wf-1-3'; break; case '5': $column_class = 'wf-1-5'; break; default: $column_class = 'wf-1-4'; } switch ($style) { case '2': $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s"><div class="wf-table"><div class="wf-td">%s</div><div class="wf-td">%s</div></div>%s</div></div></div>', $column_class, $dividers, $attributes['content_size'], $image, $title, do_shortcode(wpautop($content))); break; case '3': $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s"><div class="wf-table"><div class="wf-td">%s</div><div class="wf-td benefits-inner">%s</div></div></div></div></div>', $column_class, $dividers, $attributes['content_size'], $image, $title . do_shortcode(wpautop($content))); break; default: $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s">%s</div></div></div>', $column_class, $dividers, $attributes['content_size'], $image . $title . do_shortcode(wpautop($content))); } return $output; }
public function render_benefit($attributes, $content = null) { $image = ''; $title = ''; $output = ''; if ($attributes['icon_code']) { $image = wp_kses($attributes['icon_code'], array('i' => array('class' => array()))); } else { $default_image = null; $images = array($attributes['image'], $attributes['hd_image']); // get default logo foreach ($images as $img) { if ($img) { $default_image = $img; break; } } if (!empty($default_image)) { if (dt_retina_on()) { $image = dt_is_hd_device() ? $images[1] : $images[0]; } else { $image = $images[0]; } if (empty($image)) { $image = $default_image; } // ssl support $image = dt_make_image_src_ssl_friendly($image); $image_size = ''; if (!empty($attributes['image_size'])) { $image_size = image_hwstring($attributes['image_size'][0], $attributes['image_size'][1]); } $image = sprintf('<img src="%s" %s alt="" />', $image, $image_size); } } if ($image) { $image_classes = array('benefits-grid-ico'); if (isset($attributes['animation']) && 'none' != $attributes['animation']) { switch ($attributes['animation']) { case 'scale': $image_classes[] = 'scale-up'; break; case 'fade': $image_classes[] = 'fade-in'; break; case 'left': $image_classes[] = 'right-to-left'; break; case 'right': $image_classes[] = 'left-to-right'; break; case 'bottom': $image_classes[] = 'top-to-bottom'; break; case 'top': $image_classes[] = 'bottom-to-top'; break; } $image_classes[] = 'animate-element'; } // ninjaaaa! $image_classes = esc_attr(implode(' ', $image_classes)); if ($attributes['image_link']) { $image = sprintf('<a href="%s" class="%s"%s>%s</a>', $attributes['image_link'], $image_classes, $attributes['target_blank'] ? ' target="_blank"' : '', $image); } else { $image = sprintf('<span class="%s">%s</span>', $image_classes, $image); } } if ($attributes['title']) { $title = sprintf('<%1$s>%2$s</%1$s>', $attributes['header_size'], $attributes['title']); } $style = '1'; $column = '4'; $dividers = ' class="borders"'; if (!empty($attributes)) { $style = $attributes['style']; $column = $attributes['columns']; $dividers = !$attributes['dividers'] ? $dividers = '' : $dividers; } switch ($column) { case '1': $column_class = 'wf-1'; break; case '2': $column_class = 'wf-1-2'; break; case '3': $column_class = 'wf-1-3'; break; case '5': $column_class = 'wf-1-5'; break; default: $column_class = 'wf-1-4'; } switch ($style) { case '2': $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s"><div class="wf-table"><div class="wf-td">%s</div><div class="wf-td">%s</div></div>%s</div></div></div>', $column_class, $dividers, $attributes['content_size'], $image, $title, $content); break; case '3': $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s"><div class="wf-table"><div class="wf-td">%s</div><div class="wf-td benefits-inner">%s</div></div></div></div></div>', $column_class, $dividers, $attributes['content_size'], $image, $title . $content); break; default: $output = sprintf('<div class="wf-cell %s"><div%s><div class="text-%s">%s</div></div></div>', $column_class, $dividers, $attributes['content_size'], $image . $title . $content); } return $output; }
public function render_benefit($attributes, $content = null) { $image = ''; if ($attributes['icon_code']) { $image = wp_kses($attributes['icon_code'], array('i' => array('class' => array()))); } else { $default_image = null; $images = array($attributes['image'], $attributes['hd_image']); // get default logo foreach ($images as $img) { if ($img) { $default_image = $img; break; } } if (!empty($default_image)) { if (dt_retina_on()) { $image = dt_is_hd_device() ? $images[1] : $images[0]; } else { $image = $images[0]; } if (empty($image)) { $image = $default_image; } // ssl support $image = dt_make_image_src_ssl_friendly($image); $image_size = ''; if (!empty($attributes['image_size'])) { $image_size = image_hwstring($attributes['image_size'][0], $attributes['image_size'][1]); } $image = sprintf('<img src="%s" %s alt="%s" />', $image, $image_size, esc_attr($attributes['image_alt'])); } } if ($image) { $image_classes = array('benefits-grid-ico'); if (presscore_shortcode_animation_on($attributes['animation'])) { $image_classes[] = presscore_get_shortcode_animation_html_class($attributes['animation']); } // ninjaaaa! $image_classes = esc_attr(implode(' ', $image_classes)); if ($attributes['image_link']) { $image = sprintf('<a href="%s" class="%s"%s>%s</a>', $attributes['image_link'], $image_classes, $attributes['target_blank'] ? ' target="_blank"' : '', $image); } else { $image = sprintf('<span class="%s">%s</span>', $image_classes, $image); } } $style = empty($attributes['style']) ? '1' : $attributes['style']; $title = ''; if ($attributes['title']) { if ($attributes['image_link']) { $title = sprintf('<%1$s class="benefit-title"><a href="%2$s"%3$s>%4$s</a></%1$s>', $attributes['header_size'], $attributes['image_link'], $attributes['target_blank'] ? ' target="_blank"' : '', $attributes['title']); } else { $title = sprintf('<%1$s>%2$s</%1$s>', $attributes['header_size'], $attributes['title']); } } $output = ''; switch ($style) { case '2': $output .= '<div class="wf-cell">' . '<div>' . '<div class="text-' . $attributes['content_size'] . '">' . '<div class="wf-table">' . '<div class="wf-td">' . $image . '</div>' . '<div class="wf-td">' . $title . '</div>' . '</div>' . $content . '</div>' . '</div>' . '</div>'; break; case '3': $output .= '<div class="wf-cell">' . '<div>' . '<div class="text-' . $attributes['content_size'] . '">' . '<div class="wf-table">' . '<div class="wf-td">' . $image . '</div>' . '<div class="wf-td benefits-inner">' . $title . $content . '</div>' . '</div>' . '</div>' . '</div>' . '</div>'; break; default: $output .= '<div class="wf-cell">' . '<div>' . '<div class="text-' . $attributes['content_size'] . '">' . '<div class="line-decoration">' . $image . $title . '</div>' . $content . '</div>' . '</div>' . '</div>'; } return $output; }
public function shortcode($atts, $content = null) { $default_atts = array('bg_image' => '', 'bg_color' => '', 'bg_opacity' => '100', 'text_color' => '', 'text_size' => 'normal', 'border_width' => '1', 'outer_padding' => '10', 'inner_padding' => '10', 'min_height' => '150', 'link' => '', 'target_blank' => '1', 'animation' => 'none'); $attributes = shortcode_atts($default_atts, $atts); $attributes['animation'] = in_array($attributes['animation'], array('none', 'scale', 'fade', 'left', 'right', 'bottom', 'top')) ? $attributes['animation'] : $default_atts['animation']; $attributes['bg_image'] = dt_make_image_src_ssl_friendly(esc_url($attributes['bg_image'])); $attributes['bg_color'] = apply_filters('of_sanitize_color', $attributes['bg_color']); $attributes['bg_opacity'] = absint($attributes['bg_opacity']); $attributes['bg_opacity'] = $attributes['bg_opacity'] > 100 ? 100 : $attributes['bg_opacity']; $attributes['text_size'] = in_array($attributes['text_size'], array('normal', 'small', 'big')) ? $attributes['text_size'] : $default_atts['text_size']; $attributes['text_color'] = apply_filters('of_sanitize_color', $attributes['text_color']); $attributes['border_width'] = absint($attributes['border_width']); $attributes['outer_padding'] = absint($attributes['outer_padding']); $attributes['inner_padding'] = absint($attributes['inner_padding']); $attributes['min_height'] = absint($attributes['min_height']); $attributes['link'] = esc_url($attributes['link']); $attributes['target_blank'] = apply_filters('dt_sanitize_flag', $attributes['target_blank']); $banner_inner_height = $attributes['min_height'] - $attributes['inner_padding']; $banner_style = array(); $banner_bg_style = array(); $banner_inner_style = array(); $banner_classes = array('shortcode-banner'); $banner_more_inner_style = ''; if ($attributes['bg_color']) { $banner_inner_style[] = 'background-color: ' . dt_stylesheet_color_hex2rgb($attributes['bg_color']); $banner_inner_style[] = 'background-color: ' . dt_stylesheet_color_hex2rgba($attributes['bg_color'], $attributes['bg_opacity']); } $banner_inner_style[] = sprintf('border: solid %spx transparent', $attributes['inner_padding']); $banner_inner_style[] = sprintf('outline: solid %spx', $attributes['border_width']); if ($attributes['text_color']) { $banner_inner_style[] = 'color: ' . $attributes['text_color']; $banner_inner_style[] = 'outline-color: ' . $attributes['text_color']; } $banner_inner_style[] = 'height: ' . $banner_inner_height . 'px'; $banner_bg_style[] = 'padding: ' . ($attributes['outer_padding'] > $attributes['border_width'] ? $attributes['outer_padding'] : $attributes['border_width']) . 'px'; $banner_bg_style[] = 'min-height: ' . $attributes['min_height'] . 'px'; $banner_style[] = 'min-height: ' . $attributes['min_height'] . 'px'; if ($attributes['bg_image']) { $banner_style[] = sprintf('background-image: url(%s)', $attributes['bg_image']); } $text_size_class = ''; if ('small' == $attributes['text_size']) { $text_size_class = ' text-small'; } elseif ('big' == $attributes['text_size']) { $text_size_class = ' text-big'; } $link = ''; if ($attributes['link']) { if ($attributes['target_blank']) { $link = sprintf(' onclick="window.open(\'%s\');"', $attributes['link']); } else { $link = sprintf(' onclick="window.location.href=\'%s\';"', $attributes['link']); } } if ($link) { $banner_classes[] = 'shortcode-banner-link'; } if ('none' != $attributes['animation']) { switch ($attributes['animation']) { case 'scale': $banner_classes[] = 'scale-up'; break; case 'fade': $banner_classes[] = 'fade-in'; break; case 'left': $banner_classes[] = 'right-to-left'; break; case 'right': $banner_classes[] = 'left-to-right'; break; case 'bottom': $banner_classes[] = 'top-to-bottom'; break; case 'top': $banner_classes[] = 'bottom-to-top'; break; } $banner_classes[] = 'animate-element'; } $output = sprintf('<div class="%s" %s><div class="shortcode-banner-bg wf-table" %s><div class="shortcode-banner-inside wf-table%s" %s><div %s>%s</div></div></div></div>', esc_attr(implode(' ', $banner_classes)), 'style="' . esc_attr(implode(';', $banner_style)) . '"' . $link, 'style="' . esc_attr(implode(';', $banner_bg_style)) . '"', $text_size_class, 'style="' . esc_attr(implode(';', $banner_inner_style)) . '"', $banner_more_inner_style, do_shortcode($content)); return $output; }