예제 #1
0
 /**
  * function that sets some internal variables and counters, then calls the actual shortcode handling function
  */
 public function shortcode_handler_prepare($atts, $content = "", $shortcodename = "", $fake = false)
 {
     $meta = array();
     if (empty($this->config['inline'])) {
         $meta = array('el_class' => " avia-builder-el-" . ShortcodeHelper::$shortcode_index . " ", 'index' => ShortcodeHelper::$shortcode_index, 'this' => ShortcodeHelper::find_tree_item(ShortcodeHelper::$shortcode_index), 'siblings' => array('next' => ShortcodeHelper::find_tree_item(ShortcodeHelper::$shortcode_index, 1), 'prev' => ShortcodeHelper::find_tree_item(ShortcodeHelper::$shortcode_index, -1)));
         if (!empty($meta['siblings']['prev']['tag'])) {
             $meta['el_class'] .= " el_after_" . $meta['siblings']['prev']['tag'] . " ";
         }
         if (!empty($meta['siblings']['next']['tag'])) {
             $meta['el_class'] .= " el_before_" . $meta['siblings']['next']['tag'] . " ";
         }
         $fullwidth = AviaBuilder::$full_el;
         if (!empty($meta['this']['tag']) && !in_array($meta['this']['tag'], $fullwidth)) {
             if (!empty($meta['siblings']['next']['tag']) && in_array($meta['siblings']['next']['tag'], $fullwidth)) {
                 $meta['siblings']['next'] = false;
             }
             if (!empty($meta['siblings']['prev']['tag']) && in_array($meta['siblings']['prev']['tag'], $fullwidth)) {
                 $meta['siblings']['prev'] = false;
             }
         }
         //single element without siblings
         if (empty($meta['siblings']['next']) && empty($meta['siblings']['prev'])) {
             $meta['el_class'] .= " avia-builder-el-no-sibling ";
         } else {
             if (empty($meta['siblings']['next'])) {
                 $meta['el_class'] .= " avia-builder-el-last ";
             } else {
                 if (empty($meta['siblings']['prev'])) {
                     $meta['el_class'] .= " avia-builder-el-first ";
                 }
             }
         }
         //if the shortcode was added without beeing a builder element (eg button within layerslider) reset all styles for that shortcode and make sure it is marked as a fake element
         if (empty($meta['this']['tag']) || $shortcodename != $meta['this']['tag']) {
             $fake = true;
             $meta = array('el_class' => '');
         }
         //fake is set when we manually call one shortcode inside another
         if (!$fake) {
             ShortcodeHelper::$shortcode_index++;
         }
     }
     if (isset($atts['custom_class'])) {
         $meta['el_class'] .= " " . $atts['custom_class'];
         $meta['custom_class'] = $atts['custom_class'];
     }
     $content = $this->shortcode_handler($atts, $content, $shortcodename, $meta);
     return $content;
 }