示例#1
0
 /**
  * Parses shortcode attributes and set defaults based on vc_map function relative to shortcode and fields names
  *
  * @param $atts
  *
  * @since 4.3
  * @return array
  */
 public function getAttributes($atts)
 {
     /**
      * Shortcode attributes
      * @var $text
      * @var $google_fonts
      * @var $font_container
      * @var $el_class
      * @var $link
      * @var $css
      */
     $atts = vc_map_get_attributes($this->getShortcode(), $atts);
     extract($atts);
     /**
      * Get default values from VC_MAP.
      **/
     $google_fonts_field = $this->getParamData('google_fonts');
     $font_container_field = $this->getParamData('font_container');
     $el_class = $this->getExtraClass($el_class);
     $font_container_obj = new Vc_Font_Container();
     $google_fonts_obj = new Vc_Google_Fonts();
     $font_container_field_settings = isset($font_container_field['settings'], $font_container_field['settings']['fields']) ? $font_container_field['settings']['fields'] : array();
     $google_fonts_field_settings = isset($google_fonts_field['settings'], $google_fonts_field['settings']['fields']) ? $google_fonts_field['settings']['fields'] : array();
     $font_container_data = $font_container_obj->_vc_font_container_parse_attributes($font_container_field_settings, $font_container);
     $google_fonts_data = strlen($google_fonts) > 0 ? $google_fonts_obj->_vc_google_fonts_parse_attributes($google_fonts_field_settings, $google_fonts) : '';
     return array('text' => isset($text) ? $text : '', 'google_fonts' => $google_fonts, 'font_container' => $font_container, 'el_class' => $el_class, 'css' => $css, 'link' => 0 === strpos($link, '|') ? false : $link, 'font_container_data' => $font_container_data, 'google_fonts_data' => $google_fonts_data);
 }
 public function build_shortcode($atts, $content = null)
 {
     extract(shortcode_atts(array('font_container' => '', 'dropcap_letter_class' => ''), $atts));
     $dropcap_letter_class = apply_filters(VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, vc_shortcode_custom_css_class($dropcap_letter_class, ''), self::slug, $atts);
     $content = wpb_js_remove_wpautop($content, true);
     $font_container_obj = new Vc_Font_Container();
     $font_container_data = $font_container_obj->_vc_font_container_parse_attributes(array('font_size', 'line_height', 'color', 'font_style_italic', 'font_style_bold'), $font_container);
     $styles = array('float' => 'float: left');
     if (!empty($font_container_data) && isset($font_container_data['values'])) {
         foreach ($font_container_data['values'] as $key => $value) {
             if ($key != 'tag' && strlen($value) > 0) {
                 if (preg_match('/description/', $key)) {
                     continue;
                 }
                 if ($key == 'font_size' || $key == 'line_height') {
                     $value = preg_replace('/\\s+/', '', $value);
                 }
                 if ($key == 'font_size') {
                     $pattern = '/^(\\d*(?:\\.\\d+)?)\\s*(px|\\%|in|cm|mm|em|rem|ex|pt|pc|vw|vh|vmin|vmax)?$/';
                     // allowed metrics: http://www.w3schools.com/cssref/css_units.asp
                     $regexr = preg_match($pattern, $value, $matches);
                     $value = isset($matches[1]) ? (double) $matches[1] : (double) $value;
                     $unit = isset($matches[2]) ? $matches[2] : 'px';
                     $value = $value . $unit;
                 }
                 if (strlen($value) > 0) {
                     if (array_key_exists($key, $font_container_data['fields'])) {
                         switch ($key) {
                             case 'font_style_italic':
                                 if ($value == 1) {
                                     $styles[$key] = 'font-style: italic';
                                 }
                                 break;
                             case 'font_style_bold':
                                 if ($value == 1) {
                                     $styles[$key] = 'font-weight: bold';
                                 }
                                 break;
                             default:
                                 $styles[$key] = str_replace('_', '-', $key) . ': ' . $value;
                                 break;
                         }
                     }
                 }
             }
         }
     }
     $is_content = preg_replace('/^([\\<\\sa-z\\d\\/\\>]*)(([a-z\\&\\;]+)|([\\"\'\\w]))/', '$1<span class="drop-cap ' . $dropcap_letter_class . '" style="' . implode(";", $styles) . '">$2</span>', $content);
     return print_r($is_content, true);
 }
示例#3
0
 public function getAttributes($atts)
 {
     $text = $google_fonts = $font_container = $el_class = $css = '';
     /**
      * Get default values from VC_MAP.
      **/
     $google_fonts_field = WPBMap::getParam('vc_custom_heading', 'google_fonts');
     $font_container_field = WPBMap::getParam('vc_custom_heading', 'font_container');
     $el_class_field = WPBMap::getParam('vc_custom_heading', 'el_class');
     $css_field = WPBMap::getParam('vc_custom_heading', 'css');
     $text_field = WPBMap::getParam('vc_custom_heading', 'text');
     extract(shortcode_atts(array('text' => isset($text_field['value']) ? $text_field['value'] : '', 'google_fonts' => isset($google_fonts_field['value']) ? $google_fonts_field['value'] : '', 'font_container' => isset($font_container_field['value']) ? $font_container_field['value'] : '', 'el_class' => isset($el_class_field['value']) ? $el_class_field['value'] : '', 'css' => isset($css_field['value']) ? $css_field['value'] : ''), $atts));
     $el_class = $this->getExtraClass($el_class);
     $font_container_obj = new Vc_Font_Container();
     $google_fonts_obj = new Vc_Google_Fonts();
     $font_container_field_settings = isset($font_container_field['settings'], $font_container_field['settings']['fields']) ? $font_container_field['settings']['fields'] : array();
     $google_fonts_field_settings = isset($google_fonts_field['settings'], $google_fonts_field['settings']['fields']) ? $google_fonts_field['settings']['fields'] : array();
     $font_container_data = $font_container_obj->_vc_font_container_parse_attributes($font_container_field_settings, $font_container);
     $google_fonts_data = $google_fonts_obj->_vc_google_fonts_parse_attributes($google_fonts_field_settings, $google_fonts);
     return array('text' => $text, 'google_fonts' => $google_fonts, 'font_container' => $font_container, 'el_class' => $el_class, 'css' => $css, 'font_container_data' => $font_container_data, 'google_fonts_data' => $google_fonts_data);
 }
示例#4
0
/**
 * @param $settings
 * @param $value
 *
 * @return mixed|void
 */
function vc_font_container_form_field($settings, $value)
{
    $font_container = new Vc_Font_Container();
    return apply_filters('vc_font_container_render_filter', $font_container->render($settings, $value));
}