Changeset 3757542
- Timestamp:
- 10/20/2026 10:54:20 PM (25 hours ago)
- Location:
- sidcraft-page-builder
- Files:
-
- 46 edited
- 8 copied
-
tags/2.1.3 (copied) (copied from sidcraft-page-builder/trunk )
-
tags/2.1.3/includes/ai/class-mcp.php (copied) (copied from sidcraft-page-builder/trunk/includes/ai/class-mcp.php )
-
tags/2.1.3/includes/bootstrap/class-plugin.php (copied) (copied from sidcraft-page-builder/trunk/includes/bootstrap/class-plugin.php )
-
tags/2.1.3/includes/document/class-page-snapshot.php (copied) (copied from sidcraft-page-builder/trunk/includes/document/class-page-snapshot.php )
-
tags/2.1.3/includes/ops/class-maintenance.php (modified) (2 diffs)
-
tags/2.1.3/includes/ops/class-safe-mode.php (copied) (copied from sidcraft-page-builder/trunk/includes/ops/class-safe-mode.php )
-
tags/2.1.3/includes/ops/page-snapshot-mu.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-alert.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-button.php (modified) (2 diffs)
-
tags/2.1.3/includes/units/class-carousel.php (modified) (2 diffs)
-
tags/2.1.3/includes/units/class-counter.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-divider.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-gallery.php (modified) (3 diffs)
-
tags/2.1.3/includes/units/class-icon.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-icon_box.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-icon_list.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-image.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-image_box.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-nested_tabs.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-progress.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-social.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-star_rating.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-tabs.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-testimonial.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-text.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-text_path.php (modified) (1 diff)
-
tags/2.1.3/includes/units/class-video.php (modified) (1 diff)
-
tags/2.1.3/readme.txt (copied) (copied from sidcraft-page-builder/trunk/readme.txt ) (3 diffs)
-
tags/2.1.3/sidcraft-page-builder.php (copied) (copied from sidcraft-page-builder/trunk/sidcraft-page-builder.php ) (4 diffs)
-
tags/2.1.3/uninstall.php (copied) (copied from sidcraft-page-builder/trunk/uninstall.php )
-
trunk/includes/ops/class-maintenance.php (modified) (2 diffs)
-
trunk/includes/ops/page-snapshot-mu.php (modified) (1 diff)
-
trunk/includes/units/class-alert.php (modified) (1 diff)
-
trunk/includes/units/class-button.php (modified) (2 diffs)
-
trunk/includes/units/class-carousel.php (modified) (2 diffs)
-
trunk/includes/units/class-counter.php (modified) (1 diff)
-
trunk/includes/units/class-divider.php (modified) (1 diff)
-
trunk/includes/units/class-gallery.php (modified) (3 diffs)
-
trunk/includes/units/class-icon.php (modified) (1 diff)
-
trunk/includes/units/class-icon_box.php (modified) (1 diff)
-
trunk/includes/units/class-icon_list.php (modified) (1 diff)
-
trunk/includes/units/class-image.php (modified) (1 diff)
-
trunk/includes/units/class-image_box.php (modified) (1 diff)
-
trunk/includes/units/class-nested_tabs.php (modified) (1 diff)
-
trunk/includes/units/class-progress.php (modified) (1 diff)
-
trunk/includes/units/class-social.php (modified) (1 diff)
-
trunk/includes/units/class-star_rating.php (modified) (1 diff)
-
trunk/includes/units/class-tabs.php (modified) (1 diff)
-
trunk/includes/units/class-testimonial.php (modified) (1 diff)
-
trunk/includes/units/class-text.php (modified) (1 diff)
-
trunk/includes/units/class-text_path.php (modified) (1 diff)
-
trunk/includes/units/class-video.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/sidcraft-page-builder.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sidcraft-page-builder/tags/2.1.3/includes/ops/class-maintenance.php
r3723907 r3757542 378 378 || ( isset( $_GET['rest_route'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended 379 379 $preview_q = ! empty( $_GET[ self::PREVIEW ] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended 380 // Conditional tags return false and raise a notice before the main query. 381 $ready = function_exists( 'did_action' ) && did_action( 'wp' ); 380 382 return array( 381 383 'is_admin' => function_exists( 'is_admin' ) && is_admin(), … … 385 387 'doing_cron' => function_exists( 'wp_doing_cron' ) ? wp_doing_cron() : ( defined( 'DOING_CRON' ) && DOING_CRON ), 386 388 'is_rest' => $rest, 387 'is_feed' => function_exists( 'is_feed' ) && is_feed(),388 'is_preview' => function_exists( 'is_preview' ) && is_preview(),389 'is_customize' => function_exists( 'is_customize_preview' ) && is_customize_preview(),389 'is_feed' => $ready && function_exists( 'is_feed' ) && is_feed(), 390 'is_preview' => $ready && function_exists( 'is_preview' ) && is_preview(), 391 'is_customize' => $ready && function_exists( 'is_customize_preview' ) && is_customize_preview(), 390 392 'user_roles' => $roles, 391 393 'preview' => $preview_q, -
sidcraft-page-builder/tags/2.1.3/includes/ops/page-snapshot-mu.php
r3746087 r3757542 28 28 */ 29 29 function sidcraft_page_builder_snapshot_request_ok() { 30 // template_redirect runs after the main query; guard direct/early calls. 31 if ( ! function_exists( 'did_action' ) || ! did_action( 'wp' ) ) { 32 return false; 33 } 30 34 $method = isset( $_SERVER['REQUEST_METHOD'] ) ? strtoupper( sanitize_key( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) ) : 'GET'; 31 35 if ( 'GET' !== $method && 'HEAD' !== $method ) { -
sidcraft-page-builder/tags/2.1.3/includes/units/class-alert.php
r3723907 r3757542 9 9 public function controls(){return ['title'=>'text','text'=>'wysiwyg','type'=>'select','dismissible'=>'switch','dismiss_icon'=>'icon','background'=>'color','border_color'=>'color','title_color'=>'color','text_color'=>'color','dismiss_color'=>'color','dismiss_size'=>'number'];} 10 10 public function render($s,$children=''){ 11 $type=in_array($s['type']??'info',['info','success','warning','danger'],true)? $s['type']:'info';11 $type=in_array($s['type']??'info',['info','success','warning','danger'],true)?($s['type']??'info'):'info'; 12 12 $vars=$this->style_attr(['--lb-alert-bg'=>$s['background']??'','--lb-alert-border'=>$s['border_color']??'','--lb-alert-title'=>$s['title_color']??'','--lb-alert-text'=>$s['text_color']??'','--lb-alert-dismiss'=>$s['dismiss_color']??'','--lb-alert-dismiss-size'=>$this->unit($s['dismiss_size']??'')]); 13 13 $out='<div class="'.$this->cls($s).' lb-alert lb-alert-'.$type.'" role="alert"'.$vars.'>'; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-button.php
r3723907 r3757542 40 40 } 41 41 public function render($s,$children=''){ 42 $size=in_array($s['size']??'medium',self::sizes(),true)? $s['size']:'medium';42 $size=in_array($s['size']??'medium',self::sizes(),true)?($s['size']??'medium'):'medium'; 43 43 $align=$this->scalar($s['align']??'left','left'); 44 44 $align=in_array($align,['left','center','right','justify'],true)?$align:'left'; … … 48 48 $t=($s['target']??'_self')==='_blank'?' target="_blank" rel="noopener"':''; 49 49 $id=!empty($s['button_id'])?' id="'.esc_attr(sanitize_html_class($s['button_id'])).'"':''; 50 $type=in_array($s['button_type']??'default',['default','info','success','warning','danger'],true)? $s['button_type']:'default';50 $type=in_array($s['button_type']??'default',['default','info','success','warning','danger'],true)?($s['button_type']??'default'):'default'; 51 51 $a='<a class="'.$this->cls($s).' lb-button lb-button-'.sanitize_html_class($size).' lb-button-type-'.sanitize_html_class($type).($icon?' lb-button-has-icon':'').$this->hover_class($s).'"'.$id.' href="'.esc_attr(self::link_href($s['url']??'#')).'"'.$t.'>'.($placement==='before'?$icon.$label:$label.$icon).'</a>'; 52 52 return '<div class="lb-button-wrap lb-button-align-'.$align.'">'.$a.'</div>'; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-carousel.php
r3723907 r3757542 72 72 if(!$slides)return '<div class="'.$this->cls($s).' lb-carousel-placeholder">'.esc_html__('Choose images for the carousel', 'sidcraft-page-builder').'</div>'; 73 73 $show=max(1,min(10,absint($s['slides_to_show']??1)));$scroll=max(1,min($show,absint($s['slides_to_scroll']??1))); 74 $nav=in_array($s['navigation']??'both',['both','arrows','dots','none'],true)? $s['navigation']:'both';74 $nav=in_array($s['navigation']??'both',['both','arrows','dots','none'],true)?($s['navigation']??'both'):'both'; 75 75 $linkRaw=is_string($s['link']??null)?$s['link']:'none'; 76 76 if(preg_match('~^https?://(none|file|custom)/?$~i',$linkRaw,$lm))$linkRaw=strtolower($lm[1]); // repair values saved as "http://none" by older builds … … 78 78 $effect=($s['effect']??'slide')==='fade'&&$show===1?'fade':'slide'; 79 79 $dir=($s['slide_direction']??'ltr')==='rtl'?'rtl':'ltr'; 80 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)? $s['caption']:'none';81 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)? $s['caption_align']:'center';80 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)?($s['caption']??'none'):'none'; 81 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)?($s['caption_align']??'center'):'center'; 82 82 $size=sanitize_key($s['image_size']??'large'); 83 83 $height=$this->scalar($s['height']??''); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-counter.php
r3723907 r3757542 20 20 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 21 21 $pos=($s['title_position']??'after')==='before'?'before':'after'; 22 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';22 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 23 23 $vars=$this->style_attr(['--lb-counter-number-color'=>$s['number_color']??'','--lb-counter-title-color'=>$s['title_color']??'','--lb-counter-number-size'=>$this->unit($s['number_size']??''),'--lb-counter-gap'=>$this->unit($s['title_gap']??''),'text-align'=>$align]); 24 24 $title=($s['title']??'')!==''?'<'.$tag.' class="lb-counter-title">'.esc_html($s['title']).'</'.$tag.'>':''; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-divider.php
r3723907 r3757542 12 12 public function controls(){return ['style'=>'select','divider_width'=>'text','align'=>'select','thickness'=>'number','color'=>'color','divider_gap'=>'number','pattern_size'=>'number','look'=>'select','text'=>'text','text_tag'=>'select','icon'=>'icon','unit_align'=>'select','unit_spacing'=>'number','text_color'=>'color','icon_color'=>'color','icon_size'=>'number','icon_view'=>'select'];} 13 13 public function render($s,$children=''){ 14 $style=in_array($s['style']??'solid',self::line_styles(),true)? $s['style']:'solid';15 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';16 $look=in_array($s['look']??'line',['line','line_text','line_icon'],true)? $s['look']:'line';17 $ealign=in_array($s['unit_align']??'center',['left','center','right'],true)? $s['unit_align']:'center';18 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';14 $style=in_array($s['style']??'solid',self::line_styles(),true)?($s['style']??'solid'):'solid'; 15 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 16 $look=in_array($s['look']??'line',['line','line_text','line_icon'],true)?($s['look']??'line'):'line'; 17 $ealign=in_array($s['unit_align']??'center',['left','center','right'],true)?($s['unit_align']??'center'):'center'; 18 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 19 19 $vars=$this->style_attr([ 20 20 '--lb-divider-width'=>sanitize_text_field((string)($s['divider_width']??'100%')),'--lb-divider-color'=>$s['color']??'','--lb-divider-weight'=>$this->unit(max(1,(float)($s['thickness']??1))), -
sidcraft-page-builder/tags/2.1.3/includes/units/class-gallery.php
r3723907 r3757542 76 76 if(!$url) return ''; 77 77 $alt=(string)get_post_meta($id,'_wp_attachment_image_alt',true); 78 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)? $s['caption']:'none';78 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)?($s['caption']??'none'):'none'; 79 79 $cap=$capMode!=='none'?Carousel::caption_text($id,$capMode):''; 80 80 $lazy=!isset($s['lazy_load']) || !empty($s['lazy_load']); … … 84 84 $style=$this->item_style($s,$ratio); 85 85 $extra=' class="'.$cls.'" data-lb-ratio="'.esc_attr((string)$ratio).'" style="'.esc_attr($style).'"'.($set!==''?' data-lb-in="'.esc_attr($set).'"':'').($hidden?' hidden':''); 86 $linkMode=in_array($s['link']??'file',['none','file','attachment'],true)? $s['link']:'file';86 $linkMode=in_array($s['link']??'file',['none','file','attachment'],true)?($s['link']??'file'):'file'; 87 87 $light=!empty($s['lightbox'])&&$linkMode==='file'; 88 88 if($linkMode==='file'){ … … 99 99 public function render($s,$children=''){ 100 100 $groups=$this->collections($s); 101 $order=in_array($s['order_by']??'default',['default','random','date','title'],true)? $s['order_by']:'default';101 $order=in_array($s['order_by']??'default',['default','random','date','title'],true)?($s['order_by']??'default'):'default'; 102 102 $hasMany=($s['mode']??'single')==='multiple' && count($groups)>1; 103 103 $showAll=!isset($s['show_all']) || !empty($s['show_all']); 104 104 $cols=max(1,min(10,absint($this->scalar($s['columns']??4,4)))); 105 105 $layout=$this->layout_of($s); 106 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)? $s['caption_align']:'center';107 $last=in_array($s['last_row']??'auto',['auto','fit','grow'],true)? $s['last_row']:'auto';106 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)?($s['caption_align']??'center'):'center'; 107 $last=in_array($s['last_row']??'auto',['auto','fit','grow'],true)?($s['last_row']??'auto'):'auto'; 108 108 $layoutCls=' is-'.$layout.(($s['image_ratio']??'1:1')==='auto'?' is-ratio-auto':''); 109 109 $items='';$any=false; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-icon.php
r3723907 r3757542 30 30 } 31 31 public function render($s,$children=''){ 32 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';33 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)? $s['shape']:'circle';32 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 33 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)?($s['shape']??'circle'):'circle'; 34 34 $svg=\SidcraftPageBuilder\Utils\Icons::svg($s['icon']??'star'); 35 35 $inner_class='lb-icon-glyph'.$this->hover_class($s); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-icon_box.php
r3723907 r3757542 9 9 public function controls(){return ['icon'=>'icon','icon_view'=>'select','shape'=>'select','title'=>'text','title_tag'=>'select','text'=>'wysiwyg','link'=>'url','link_target'=>'select','box_layout'=>'select','content_align'=>'select','vertical_align'=>'select','icon_size'=>'number','icon_space'=>'number','title_space'=>'number','icon_color'=>'color','secondary_color'=>'color','hover_color'=>'color','hover_secondary_color'=>'color','title_color'=>'color','title_hover_color'=>'color','text_color'=>'color','icon_padding'=>'number','icon_border_width'=>'number','icon_radius'=>'number','rotate'=>'number','hover_animation'=>'select'];} 10 10 public function render($s,$children=''){ 11 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';12 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)? $s['shape']:'circle';13 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)? $s['box_layout']:'top';14 $align=in_array($s['content_align']??'center',['left','center','right'],true)? $s['content_align']:'center';15 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)? $s['vertical_align']:'top';11 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 12 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)?($s['shape']??'circle'):'circle'; 13 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)?($s['box_layout']??'top'):'top'; 14 $align=in_array($s['content_align']??'center',['left','center','right'],true)?($s['content_align']??'center'):'center'; 15 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)?($s['vertical_align']??'top'):'top'; 16 16 $tag=$this->tag($s['title_tag']??'h3',$this->title_tags(),'h3'); 17 17 $vars=$this->style_attr(array_merge($this->icon_vars($s),['--lb-box-icon-space'=>$this->unit($s['icon_space']??''),'--lb-box-title-space'=>$this->unit($s['title_space']??''),'--lb-box-title-color'=>$s['title_color']??'','--lb-box-title-hover'=>$s['title_hover_color']??'','--lb-box-text-color'=>$s['text_color']??''])); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-icon_list.php
r3723907 r3757542 47 47 public function render($s,$children=''){ 48 48 $layout=($s['list_layout']??'traditional')==='inline'?'inline':'traditional'; 49 $align=in_array($s['icon_align']??'left',['left','center','right'],true)? $s['icon_align']:'left';50 $dstyle=in_array($s['divider_style']??'solid',['solid','double','dotted','dashed'],true)? $s['divider_style']:'solid';49 $align=in_array($s['icon_align']??'left',['left','center','right'],true)?($s['icon_align']??'left'):'left'; 50 $dstyle=in_array($s['divider_style']??'solid',['solid','double','dotted','dashed'],true)?($s['divider_style']??'solid'):'solid'; 51 51 $vars=$this->style_attr(['--lb-list-gap'=>$this->unit($s['space_between']??''),'--lb-list-icon-size'=>$this->unit($s['icon_size']??''),'--lb-list-icon-color'=>$s['icon_color']??($s['color']??''),'--lb-list-icon-hover'=>$s['icon_hover_color']??'','--lb-list-text-color'=>$s['text_color']??'','--lb-list-text-hover'=>$s['text_hover_color']??'','--lb-list-indent'=>$this->unit($s['text_indent']??''),'--lb-list-divider-style'=>$dstyle,'--lb-list-divider-weight'=>$this->unit($s['divider_weight']??''),'--lb-list-divider-color'=>$s['divider_color']??'','--lb-list-divider-width'=>sanitize_text_field((string)($s['divider_width']??''))]); 52 52 $t=($s['link_target']??'_self')==='_blank'?' target="_blank" rel="noopener"':''; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-image.php
r3723907 r3757542 74 74 elseif($link_to==='custom'&&!empty($s['link']))$img='<a href="'.esc_attr(self::link_href($s['link'])).'" target="'.esc_attr($s['link_target']??'_self').'"'.(($s['link_target']??'')==='_blank'?' rel="noopener"':'').'>'.$img.'</a>'; 75 75 $cap='';if(($s['caption_type']??'none')!=='none'){$text=$s['caption']??'';if($text===''&&$id)$text=wp_get_attachment_caption($id)?:'';if($text!=='')$cap='<figcaption class="lb-image-caption">'.esc_html($text).'</figcaption>';} 76 $self=in_array($s['align_self']??'start',['start','center','end','stretch'],true)? $s['align_self']:'start';76 $self=in_array($s['align_self']??'start',['start','center','end','stretch'],true)?($s['align_self']??'start'):'start'; 77 77 return '<figure class="'.$this->cls($s).' lb-image'.$this->hover_class($s).'" style="justify-self:stretch;align-self:'.esc_attr($self).';max-width:100%;min-width:0;overflow:hidden;box-sizing:border-box;"'.$this->attrs($s).'>'.$img.$cap.'</figure>'; 78 78 } -
sidcraft-page-builder/tags/2.1.3/includes/units/class-image_box.php
r3723907 r3757542 8 8 public function controls(){return ['image_id'=>'media','image_url'=>'url','image_size'=>'select','alt'=>'text','title'=>'text','title_tag'=>'select','text'=>'wysiwyg','link'=>'url','link_target'=>'select','box_layout'=>'select','content_align'=>'select','vertical_align'=>'select','image_width'=>'text','image_space'=>'number','title_space'=>'number','image_radius'=>'number','image_opacity'=>'number','image_hover_opacity'=>'number','title_color'=>'color','title_hover_color'=>'color','text_color'=>'color','hover_animation'=>'select'];} 9 9 public function render($s,$children=''){ 10 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)? $s['box_layout']:'top';11 $align=in_array($s['content_align']??'center',['left','center','right'],true)? $s['content_align']:'center';12 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)? $s['vertical_align']:'top';10 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)?($s['box_layout']??'top'):'top'; 11 $align=in_array($s['content_align']??'center',['left','center','right'],true)?($s['content_align']??'center'):'center'; 12 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)?($s['vertical_align']??'top'):'top'; 13 13 $tag=$this->tag($s['title_tag']??'h3',$this->title_tags(),'h3'); 14 14 $vars=$this->style_attr(['--lb-box-image-width'=>sanitize_text_field((string)($s['image_width']??'')),'--lb-box-image-space'=>$this->unit($s['image_space']??''),'--lb-box-title-space'=>$this->unit($s['title_space']??''),'--lb-box-image-radius'=>$this->unit($s['image_radius']??''),'--lb-box-image-opacity'=>$s['image_opacity']??'','--lb-box-image-hover-opacity'=>$s['image_hover_opacity']??'','--lb-box-title-color'=>$s['title_color']??'','--lb-box-title-hover'=>$s['title_hover_color']??'','--lb-box-text-color'=>$s['text_color']??'']); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-nested_tabs.php
r3723907 r3757542 55 55 $active=max(0,min(count($slots)-1,absint($s['active']??0))); 56 56 $vertical=($s['orientation']??'horizontal')==='vertical'; 57 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)? $s['tabs_align']:'start';57 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)?($s['tabs_align']??'start'):'start'; 58 58 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 59 59 $uid='lb'.substr(md5(wp_json_encode($slots).(string)($s['css_id']??'').wp_rand()),0,8); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-progress.php
r3723907 r3757542 10 10 public function render($s,$children=''){ 11 11 $v=max(0,min(100,floatval($s['value']??70))); 12 $style=in_array($s['bar_style']??'default',['default','info','success','warning','danger'],true)? $s['bar_style']:'default';12 $style=in_array($s['bar_style']??'default',['default','info','success','warning','danger'],true)?($s['bar_style']??'default'):'default'; 13 13 $tag=$this->tag($s['title_tag']??'span',$this->title_tags(),'span'); 14 14 $vars=$this->style_attr(['--lb-bar-color'=>$s['color']??'','--lb-bar-bg'=>$s['background']??'','--lb-bar-height'=>$this->unit($s['bar_height']??''),'--lb-bar-radius'=>$this->unit($s['bar_radius']??''),'--lb-bar-inner-color'=>$s['inner_color']??'','--lb-bar-title-color'=>$s['title_color']??'']); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-social.php
r3723907 r3757542 73 73 } 74 74 public function render($s,$children=''){ 75 $shape=in_array($s['shape']??'rounded',['square','rounded','circle'],true)? $s['shape']:'rounded';75 $shape=in_array($s['shape']??'rounded',['square','rounded','circle'],true)?($s['shape']??'rounded'):'rounded'; 76 76 $scheme=($s['color_scheme']??'official')==='custom'?'custom':'official'; 77 $align=in_array($s['align']??'left',['left','center','right'],true)? $s['align']:'left';77 $align=in_array($s['align']??'left',['left','center','right'],true)?($s['align']??'left'):'left'; 78 78 $cols=max(0,min(12,absint($s['columns']??0))); 79 79 $vars=$this->style_attr(['--lb-social-size'=>$this->unit($s['size']??''),'--lb-social-padding'=>$this->unit($s['icon_padding']??''),'--lb-social-gap'=>$this->unit($s['gap']??''),'--lb-social-row-gap'=>$this->unit($s['row_gap']??''),'--lb-social-radius'=>$this->unit($s['icon_radius']??''),'--lb-social-bg'=>$scheme==='custom'?($s['color']??''):'','--lb-social-color'=>$s['icon_color']??'','--lb-social-hover-bg'=>$s['hover_color']??'','--lb-social-hover-color'=>$s['hover_icon_color']??'','--lb-social-cols'=>$cols?:'','justify-content'=>$align==='left'?'flex-start':($align==='right'?'flex-end':'center')]); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-star_rating.php
r3723907 r3757542 13 13 $rating=max(0,min($max,round(floatval($this->scalar($s['rating']??5,5)),1))); 14 14 $unmarked=($s['unmarked_style']??'solid')==='outline'?'outline':'solid'; 15 $align=in_array($s['align']??'left',['left','center','right','justify'],true)? $s['align']:'left';15 $align=in_array($s['align']??'left',['left','center','right','justify'],true)?($s['align']??'left'):'left'; 16 16 $vars=$this->style_attr(['--lb-star-size'=>$this->unit($s['size']??''),'--lb-star-gap'=>$this->unit($s['star_gap']??''),'--lb-star-color'=>$s['color']??'','--lb-star-unmarked'=>$s['unmarked_color']??'','--lb-star-title-color'=>$s['title_color']??'','--lb-star-title-gap'=>$this->unit($s['title_gap']??'')]); 17 17 $stars=''; -
sidcraft-page-builder/tags/2.1.3/includes/units/class-tabs.php
r3723907 r3757542 47 47 $active=max(0,min(count($rows)-1,absint($s['active']??0))); 48 48 $vertical=($s['orientation']??'horizontal')==='vertical'; 49 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)? $s['tabs_align']:'start';49 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)?($s['tabs_align']??'start'):'start'; 50 50 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 51 51 $uid='lb'.substr(md5(wp_json_encode($rows).microtime(true).wp_rand()),0,8); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-testimonial.php
r3723907 r3757542 39 39 protected function item_html($s,$item){ 40 40 $pos=($s['image_position']??'aside')==='top'?'top':'aside'; 41 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';41 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 42 42 $tag=$this->tag($s['name_tag']??'div',$this->title_tags(),'div'); 43 43 $author=(string)($item['author']??''); $role=(string)($item['role']??''); $quote=(string)($item['quote']??''); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-text.php
r3723907 r3757542 42 42 public function render($s,$children=''){ 43 43 $cols=max(1,min(10,absint($this->scalar($s['text_columns']??1,1)))); 44 $view=in_array($s['drop_cap_view']??'default',['default','stacked','framed'],true)? $s['drop_cap_view']:'default';44 $view=in_array($s['drop_cap_view']??'default',['default','stacked','framed'],true)?($s['drop_cap_view']??'default'):'default'; 45 45 $vars=$this->style_attr(['--lb-text-columns'=>$cols>1?$cols:'','--lb-text-column-gap'=>$this->unit($s['column_gap']??''),'--lb-paragraph-spacing'=>$this->unit($s['paragraph_spacing']??''),'--lb-link-color'=>$s['link_color']??'','--lb-link-hover'=>$s['link_hover_color']??'','--lb-text-hover'=>$s['hover_color']??'','--lb-drop-cap-color'=>$s['drop_cap_color']??'','--lb-drop-cap-secondary'=>$s['drop_cap_secondary_color']??'','--lb-drop-cap-size'=>$this->unit($s['drop_cap_size']??''),'--lb-drop-cap-space'=>$this->unit($s['drop_cap_space']??''),'--lb-drop-cap-radius'=>$this->unit($s['drop_cap_radius']??''),'--lb-drop-cap-border'=>$this->unit($s['drop_cap_border_width']??'')]); 46 46 $classes=$this->cls($s).' lb-text'.($cols>1?' lb-text-columns':'').(!empty($s['drop_cap'])?' lb-text-drop-cap lb-drop-cap-'.$view:''); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-text_path.php
r3723907 r3757542 54 54 unset($children); 55 55 $text=esc_html($s['text']??'Sidcraft Page Builder'); 56 $kind=in_array($s['path']??'wave',['wave','arc','circle','line'],true)? $s['path']:'wave';56 $kind=in_array($s['path']??'wave',['wave','arc','circle','line'],true)?($s['path']??'wave'):'wave'; 57 57 $paths=['wave'=>'M 20 80 Q 140 16 260 80 T 500 80 T 740 80 T 980 80','arc'=>'M 36 112 Q 500 8 964 112','circle'=>'M 500 46 A 150 32 0 1 1 499 46','line'=>'M 20 96 H 980']; 58 58 $id=function_exists('wp_unique_id')?wp_unique_id('lb-tp-'):'lb-tp-'.substr(md5(uniqid('',true)),0,8); -
sidcraft-page-builder/tags/2.1.3/includes/units/class-video.php
r3723907 r3757542 93 93 if(!empty($s['loop']))$a.=' loop'; 94 94 if(empty($s['download_button']))$a.=' controlsList="nodownload"'; 95 $a.=' preload="'.esc_attr(in_array($s['preload']??'metadata',['none','metadata','auto'],true)? $s['preload']:'metadata').'"';95 $a.=' preload="'.esc_attr(in_array($s['preload']??'metadata',['none','metadata','auto'],true)?($s['preload']??'metadata'):'metadata').'"'; 96 96 if($poster)$a.=' poster="'.esc_url($poster).'"'; 97 97 return '<video'.$a.'><source src="'.$url.'"></video>'; -
sidcraft-page-builder/tags/2.1.3/readme.txt
r3757239 r3757542 1 === Sidcraft Page Builder w/ MCP ===1 === Sidcraft Page Builder w/ AI MCP === 2 2 Contributors: ssiddiqi4 3 3 Donate link: https://paypal.me/SSiddiqi275 4 Tags: page builder, drag and drop, AI-Page-Builder, website builder, templates4 Tags: page builder, drag and drop, landing page, website builder, templates 5 5 Requires at least: 6.9 6 6 Tested up to: 7.1 7 7 Requires PHP: 7.4 8 Stable tag: 2.1. 28 Stable tag: 2.1.3 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 118 118 [Sidcraft Builder Pro](https://canvasly.pro/price.html#lite-vs-pro) is a separate add-on that adds Theme Builder, popups, display conditions, dynamic tags, Loop Grid and Loop Carousel, 70+ extra units, WooCommerce builder units, hosted payments (Stripe, PayPal, Square, Authorize.Net, Razorpay, Mollie) with Payment Forms, form actions and submissions, custom fonts and icons, custom code, editor notes and an AI assistant with an MCP server. Pro's Login & Register and Payment Form units also include the "Require Cloudflare Turnstile" option. 119 119 120 Every install also serves a read-only MCP endpoint at `/wp-json/sidcraft-page-builder/v1/mcp`, so AI agents such as Claude Desktop, Cursor and VS Code can read the site, the builder guide, the document schema and pages after signing in with a WordPress application password. Writing pages, templates, design tokens, media, menus, components and store data needs Sidcraft Builder Pro 2.1. 2and its own MCP endpoint.120 Every install also serves a read-only MCP endpoint at `/wp-json/sidcraft-page-builder/v1/mcp`, so AI agents such as Claude Desktop, Cursor and VS Code can read the site, the builder guide, the document schema and pages after signing in with a WordPress application password. Writing pages, templates, design tokens, media, menus, components and store data needs Sidcraft Builder Pro 2.1.3 and its own MCP endpoint. 121 121 122 122 The full unit list and user guide are at [canvasly.pro](https://canvasly.pro/blocks.html). For third-party services used by optional features, see "External services" below. … … 351 351 352 352 == Changelog == 353 354 = 2.1.3 = 355 * Fixed: PHP warnings from Text, Button, Icon Box, Divider and Icon List units when a saved layout predates a newer setting. 356 * Fixed: "conditional query tag called before the query" notices from early display-rule and maintenance checks. 357 * Fixed: the "translation loading too early" notice by registering bundled translations after setup. 358 * Fixed: the page fallback must-use plugin no longer checks query tags before the main query. 353 359 354 360 = 2.1.2 = -
sidcraft-page-builder/tags/2.1.3/sidcraft-page-builder.php
r3757230 r3757542 3 3 * Plugin Name: Sidcraft Page Builder 4 4 * Description: A lightweight, independent visual page builder for WordPress. 5 * Version: 2.1. 25 * Version: 2.1.3 6 6 * Requires at least: 6.9 7 7 * Requires PHP: 7.4 … … 54 54 } 55 55 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_VERSION' ) ) { 56 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1. 2' );56 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1.3' ); 57 57 } 58 58 … … 319 319 320 320 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_VERSION' ) ) { 321 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1. 2' );321 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1.3' ); 322 322 } 323 323 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_FILE' ) ) { … … 347 347 require_once $sidcraft_page_builder_controls_file; 348 348 } 349 /** 350 * Register the bundled translations after setup. Registering earlier makes 351 * WordPress 6.7+ try to load them before `init` when a label is translated 352 * during plugin load, which logs a "translation loading too early" notice. 353 * 354 * @return void 355 */ 356 function sidcraft_page_builder_load_textdomain() { 357 load_plugin_textdomain( // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Bundled translations in /languages. 358 'sidcraft-page-builder', 359 false, 360 dirname( plugin_basename( __FILE__ ) ) . '/languages' 361 ); 362 } 363 add_action( 'after_setup_theme', 'sidcraft_page_builder_load_textdomain', 1 ); 349 364 \SidcraftPageBuilder\Bootstrap\Plugin::instance(); 350 365 register_activation_hook( __FILE__, array( '\SidcraftPageBuilder\Bootstrap\Plugin', 'activate' ) ); -
sidcraft-page-builder/trunk/includes/ops/class-maintenance.php
r3723907 r3757542 378 378 || ( isset( $_GET['rest_route'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended 379 379 $preview_q = ! empty( $_GET[ self::PREVIEW ] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended 380 // Conditional tags return false and raise a notice before the main query. 381 $ready = function_exists( 'did_action' ) && did_action( 'wp' ); 380 382 return array( 381 383 'is_admin' => function_exists( 'is_admin' ) && is_admin(), … … 385 387 'doing_cron' => function_exists( 'wp_doing_cron' ) ? wp_doing_cron() : ( defined( 'DOING_CRON' ) && DOING_CRON ), 386 388 'is_rest' => $rest, 387 'is_feed' => function_exists( 'is_feed' ) && is_feed(),388 'is_preview' => function_exists( 'is_preview' ) && is_preview(),389 'is_customize' => function_exists( 'is_customize_preview' ) && is_customize_preview(),389 'is_feed' => $ready && function_exists( 'is_feed' ) && is_feed(), 390 'is_preview' => $ready && function_exists( 'is_preview' ) && is_preview(), 391 'is_customize' => $ready && function_exists( 'is_customize_preview' ) && is_customize_preview(), 390 392 'user_roles' => $roles, 391 393 'preview' => $preview_q, -
sidcraft-page-builder/trunk/includes/ops/page-snapshot-mu.php
r3746087 r3757542 28 28 */ 29 29 function sidcraft_page_builder_snapshot_request_ok() { 30 // template_redirect runs after the main query; guard direct/early calls. 31 if ( ! function_exists( 'did_action' ) || ! did_action( 'wp' ) ) { 32 return false; 33 } 30 34 $method = isset( $_SERVER['REQUEST_METHOD'] ) ? strtoupper( sanitize_key( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) ) : 'GET'; 31 35 if ( 'GET' !== $method && 'HEAD' !== $method ) { -
sidcraft-page-builder/trunk/includes/units/class-alert.php
r3723907 r3757542 9 9 public function controls(){return ['title'=>'text','text'=>'wysiwyg','type'=>'select','dismissible'=>'switch','dismiss_icon'=>'icon','background'=>'color','border_color'=>'color','title_color'=>'color','text_color'=>'color','dismiss_color'=>'color','dismiss_size'=>'number'];} 10 10 public function render($s,$children=''){ 11 $type=in_array($s['type']??'info',['info','success','warning','danger'],true)? $s['type']:'info';11 $type=in_array($s['type']??'info',['info','success','warning','danger'],true)?($s['type']??'info'):'info'; 12 12 $vars=$this->style_attr(['--lb-alert-bg'=>$s['background']??'','--lb-alert-border'=>$s['border_color']??'','--lb-alert-title'=>$s['title_color']??'','--lb-alert-text'=>$s['text_color']??'','--lb-alert-dismiss'=>$s['dismiss_color']??'','--lb-alert-dismiss-size'=>$this->unit($s['dismiss_size']??'')]); 13 13 $out='<div class="'.$this->cls($s).' lb-alert lb-alert-'.$type.'" role="alert"'.$vars.'>'; -
sidcraft-page-builder/trunk/includes/units/class-button.php
r3723907 r3757542 40 40 } 41 41 public function render($s,$children=''){ 42 $size=in_array($s['size']??'medium',self::sizes(),true)? $s['size']:'medium';42 $size=in_array($s['size']??'medium',self::sizes(),true)?($s['size']??'medium'):'medium'; 43 43 $align=$this->scalar($s['align']??'left','left'); 44 44 $align=in_array($align,['left','center','right','justify'],true)?$align:'left'; … … 48 48 $t=($s['target']??'_self')==='_blank'?' target="_blank" rel="noopener"':''; 49 49 $id=!empty($s['button_id'])?' id="'.esc_attr(sanitize_html_class($s['button_id'])).'"':''; 50 $type=in_array($s['button_type']??'default',['default','info','success','warning','danger'],true)? $s['button_type']:'default';50 $type=in_array($s['button_type']??'default',['default','info','success','warning','danger'],true)?($s['button_type']??'default'):'default'; 51 51 $a='<a class="'.$this->cls($s).' lb-button lb-button-'.sanitize_html_class($size).' lb-button-type-'.sanitize_html_class($type).($icon?' lb-button-has-icon':'').$this->hover_class($s).'"'.$id.' href="'.esc_attr(self::link_href($s['url']??'#')).'"'.$t.'>'.($placement==='before'?$icon.$label:$label.$icon).'</a>'; 52 52 return '<div class="lb-button-wrap lb-button-align-'.$align.'">'.$a.'</div>'; -
sidcraft-page-builder/trunk/includes/units/class-carousel.php
r3723907 r3757542 72 72 if(!$slides)return '<div class="'.$this->cls($s).' lb-carousel-placeholder">'.esc_html__('Choose images for the carousel', 'sidcraft-page-builder').'</div>'; 73 73 $show=max(1,min(10,absint($s['slides_to_show']??1)));$scroll=max(1,min($show,absint($s['slides_to_scroll']??1))); 74 $nav=in_array($s['navigation']??'both',['both','arrows','dots','none'],true)? $s['navigation']:'both';74 $nav=in_array($s['navigation']??'both',['both','arrows','dots','none'],true)?($s['navigation']??'both'):'both'; 75 75 $linkRaw=is_string($s['link']??null)?$s['link']:'none'; 76 76 if(preg_match('~^https?://(none|file|custom)/?$~i',$linkRaw,$lm))$linkRaw=strtolower($lm[1]); // repair values saved as "http://none" by older builds … … 78 78 $effect=($s['effect']??'slide')==='fade'&&$show===1?'fade':'slide'; 79 79 $dir=($s['slide_direction']??'ltr')==='rtl'?'rtl':'ltr'; 80 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)? $s['caption']:'none';81 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)? $s['caption_align']:'center';80 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)?($s['caption']??'none'):'none'; 81 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)?($s['caption_align']??'center'):'center'; 82 82 $size=sanitize_key($s['image_size']??'large'); 83 83 $height=$this->scalar($s['height']??''); -
sidcraft-page-builder/trunk/includes/units/class-counter.php
r3723907 r3757542 20 20 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 21 21 $pos=($s['title_position']??'after')==='before'?'before':'after'; 22 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';22 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 23 23 $vars=$this->style_attr(['--lb-counter-number-color'=>$s['number_color']??'','--lb-counter-title-color'=>$s['title_color']??'','--lb-counter-number-size'=>$this->unit($s['number_size']??''),'--lb-counter-gap'=>$this->unit($s['title_gap']??''),'text-align'=>$align]); 24 24 $title=($s['title']??'')!==''?'<'.$tag.' class="lb-counter-title">'.esc_html($s['title']).'</'.$tag.'>':''; -
sidcraft-page-builder/trunk/includes/units/class-divider.php
r3723907 r3757542 12 12 public function controls(){return ['style'=>'select','divider_width'=>'text','align'=>'select','thickness'=>'number','color'=>'color','divider_gap'=>'number','pattern_size'=>'number','look'=>'select','text'=>'text','text_tag'=>'select','icon'=>'icon','unit_align'=>'select','unit_spacing'=>'number','text_color'=>'color','icon_color'=>'color','icon_size'=>'number','icon_view'=>'select'];} 13 13 public function render($s,$children=''){ 14 $style=in_array($s['style']??'solid',self::line_styles(),true)? $s['style']:'solid';15 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';16 $look=in_array($s['look']??'line',['line','line_text','line_icon'],true)? $s['look']:'line';17 $ealign=in_array($s['unit_align']??'center',['left','center','right'],true)? $s['unit_align']:'center';18 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';14 $style=in_array($s['style']??'solid',self::line_styles(),true)?($s['style']??'solid'):'solid'; 15 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 16 $look=in_array($s['look']??'line',['line','line_text','line_icon'],true)?($s['look']??'line'):'line'; 17 $ealign=in_array($s['unit_align']??'center',['left','center','right'],true)?($s['unit_align']??'center'):'center'; 18 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 19 19 $vars=$this->style_attr([ 20 20 '--lb-divider-width'=>sanitize_text_field((string)($s['divider_width']??'100%')),'--lb-divider-color'=>$s['color']??'','--lb-divider-weight'=>$this->unit(max(1,(float)($s['thickness']??1))), -
sidcraft-page-builder/trunk/includes/units/class-gallery.php
r3723907 r3757542 76 76 if(!$url) return ''; 77 77 $alt=(string)get_post_meta($id,'_wp_attachment_image_alt',true); 78 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)? $s['caption']:'none';78 $capMode=in_array($s['caption']??'none',['none','title','caption','description'],true)?($s['caption']??'none'):'none'; 79 79 $cap=$capMode!=='none'?Carousel::caption_text($id,$capMode):''; 80 80 $lazy=!isset($s['lazy_load']) || !empty($s['lazy_load']); … … 84 84 $style=$this->item_style($s,$ratio); 85 85 $extra=' class="'.$cls.'" data-lb-ratio="'.esc_attr((string)$ratio).'" style="'.esc_attr($style).'"'.($set!==''?' data-lb-in="'.esc_attr($set).'"':'').($hidden?' hidden':''); 86 $linkMode=in_array($s['link']??'file',['none','file','attachment'],true)? $s['link']:'file';86 $linkMode=in_array($s['link']??'file',['none','file','attachment'],true)?($s['link']??'file'):'file'; 87 87 $light=!empty($s['lightbox'])&&$linkMode==='file'; 88 88 if($linkMode==='file'){ … … 99 99 public function render($s,$children=''){ 100 100 $groups=$this->collections($s); 101 $order=in_array($s['order_by']??'default',['default','random','date','title'],true)? $s['order_by']:'default';101 $order=in_array($s['order_by']??'default',['default','random','date','title'],true)?($s['order_by']??'default'):'default'; 102 102 $hasMany=($s['mode']??'single')==='multiple' && count($groups)>1; 103 103 $showAll=!isset($s['show_all']) || !empty($s['show_all']); 104 104 $cols=max(1,min(10,absint($this->scalar($s['columns']??4,4)))); 105 105 $layout=$this->layout_of($s); 106 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)? $s['caption_align']:'center';107 $last=in_array($s['last_row']??'auto',['auto','fit','grow'],true)? $s['last_row']:'auto';106 $capAlign=in_array($s['caption_align']??'center',['left','center','right'],true)?($s['caption_align']??'center'):'center'; 107 $last=in_array($s['last_row']??'auto',['auto','fit','grow'],true)?($s['last_row']??'auto'):'auto'; 108 108 $layoutCls=' is-'.$layout.(($s['image_ratio']??'1:1')==='auto'?' is-ratio-auto':''); 109 109 $items='';$any=false; -
sidcraft-page-builder/trunk/includes/units/class-icon.php
r3723907 r3757542 30 30 } 31 31 public function render($s,$children=''){ 32 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';33 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)? $s['shape']:'circle';32 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 33 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)?($s['shape']??'circle'):'circle'; 34 34 $svg=\SidcraftPageBuilder\Utils\Icons::svg($s['icon']??'star'); 35 35 $inner_class='lb-icon-glyph'.$this->hover_class($s); -
sidcraft-page-builder/trunk/includes/units/class-icon_box.php
r3723907 r3757542 9 9 public function controls(){return ['icon'=>'icon','icon_view'=>'select','shape'=>'select','title'=>'text','title_tag'=>'select','text'=>'wysiwyg','link'=>'url','link_target'=>'select','box_layout'=>'select','content_align'=>'select','vertical_align'=>'select','icon_size'=>'number','icon_space'=>'number','title_space'=>'number','icon_color'=>'color','secondary_color'=>'color','hover_color'=>'color','hover_secondary_color'=>'color','title_color'=>'color','title_hover_color'=>'color','text_color'=>'color','icon_padding'=>'number','icon_border_width'=>'number','icon_radius'=>'number','rotate'=>'number','hover_animation'=>'select'];} 10 10 public function render($s,$children=''){ 11 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)? $s['icon_view']:'default';12 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)? $s['shape']:'circle';13 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)? $s['box_layout']:'top';14 $align=in_array($s['content_align']??'center',['left','center','right'],true)? $s['content_align']:'center';15 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)? $s['vertical_align']:'top';11 $view=in_array($s['icon_view']??'default',['default','stacked','framed'],true)?($s['icon_view']??'default'):'default'; 12 $shape=in_array($s['shape']??'circle',['circle','rounded','square'],true)?($s['shape']??'circle'):'circle'; 13 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)?($s['box_layout']??'top'):'top'; 14 $align=in_array($s['content_align']??'center',['left','center','right'],true)?($s['content_align']??'center'):'center'; 15 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)?($s['vertical_align']??'top'):'top'; 16 16 $tag=$this->tag($s['title_tag']??'h3',$this->title_tags(),'h3'); 17 17 $vars=$this->style_attr(array_merge($this->icon_vars($s),['--lb-box-icon-space'=>$this->unit($s['icon_space']??''),'--lb-box-title-space'=>$this->unit($s['title_space']??''),'--lb-box-title-color'=>$s['title_color']??'','--lb-box-title-hover'=>$s['title_hover_color']??'','--lb-box-text-color'=>$s['text_color']??''])); -
sidcraft-page-builder/trunk/includes/units/class-icon_list.php
r3723907 r3757542 47 47 public function render($s,$children=''){ 48 48 $layout=($s['list_layout']??'traditional')==='inline'?'inline':'traditional'; 49 $align=in_array($s['icon_align']??'left',['left','center','right'],true)? $s['icon_align']:'left';50 $dstyle=in_array($s['divider_style']??'solid',['solid','double','dotted','dashed'],true)? $s['divider_style']:'solid';49 $align=in_array($s['icon_align']??'left',['left','center','right'],true)?($s['icon_align']??'left'):'left'; 50 $dstyle=in_array($s['divider_style']??'solid',['solid','double','dotted','dashed'],true)?($s['divider_style']??'solid'):'solid'; 51 51 $vars=$this->style_attr(['--lb-list-gap'=>$this->unit($s['space_between']??''),'--lb-list-icon-size'=>$this->unit($s['icon_size']??''),'--lb-list-icon-color'=>$s['icon_color']??($s['color']??''),'--lb-list-icon-hover'=>$s['icon_hover_color']??'','--lb-list-text-color'=>$s['text_color']??'','--lb-list-text-hover'=>$s['text_hover_color']??'','--lb-list-indent'=>$this->unit($s['text_indent']??''),'--lb-list-divider-style'=>$dstyle,'--lb-list-divider-weight'=>$this->unit($s['divider_weight']??''),'--lb-list-divider-color'=>$s['divider_color']??'','--lb-list-divider-width'=>sanitize_text_field((string)($s['divider_width']??''))]); 52 52 $t=($s['link_target']??'_self')==='_blank'?' target="_blank" rel="noopener"':''; -
sidcraft-page-builder/trunk/includes/units/class-image.php
r3723907 r3757542 74 74 elseif($link_to==='custom'&&!empty($s['link']))$img='<a href="'.esc_attr(self::link_href($s['link'])).'" target="'.esc_attr($s['link_target']??'_self').'"'.(($s['link_target']??'')==='_blank'?' rel="noopener"':'').'>'.$img.'</a>'; 75 75 $cap='';if(($s['caption_type']??'none')!=='none'){$text=$s['caption']??'';if($text===''&&$id)$text=wp_get_attachment_caption($id)?:'';if($text!=='')$cap='<figcaption class="lb-image-caption">'.esc_html($text).'</figcaption>';} 76 $self=in_array($s['align_self']??'start',['start','center','end','stretch'],true)? $s['align_self']:'start';76 $self=in_array($s['align_self']??'start',['start','center','end','stretch'],true)?($s['align_self']??'start'):'start'; 77 77 return '<figure class="'.$this->cls($s).' lb-image'.$this->hover_class($s).'" style="justify-self:stretch;align-self:'.esc_attr($self).';max-width:100%;min-width:0;overflow:hidden;box-sizing:border-box;"'.$this->attrs($s).'>'.$img.$cap.'</figure>'; 78 78 } -
sidcraft-page-builder/trunk/includes/units/class-image_box.php
r3723907 r3757542 8 8 public function controls(){return ['image_id'=>'media','image_url'=>'url','image_size'=>'select','alt'=>'text','title'=>'text','title_tag'=>'select','text'=>'wysiwyg','link'=>'url','link_target'=>'select','box_layout'=>'select','content_align'=>'select','vertical_align'=>'select','image_width'=>'text','image_space'=>'number','title_space'=>'number','image_radius'=>'number','image_opacity'=>'number','image_hover_opacity'=>'number','title_color'=>'color','title_hover_color'=>'color','text_color'=>'color','hover_animation'=>'select'];} 9 9 public function render($s,$children=''){ 10 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)? $s['box_layout']:'top';11 $align=in_array($s['content_align']??'center',['left','center','right'],true)? $s['content_align']:'center';12 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)? $s['vertical_align']:'top';10 $layout=in_array($s['box_layout']??'top',['top','left','right'],true)?($s['box_layout']??'top'):'top'; 11 $align=in_array($s['content_align']??'center',['left','center','right'],true)?($s['content_align']??'center'):'center'; 12 $valign=in_array($s['vertical_align']??'top',['top','middle','bottom'],true)?($s['vertical_align']??'top'):'top'; 13 13 $tag=$this->tag($s['title_tag']??'h3',$this->title_tags(),'h3'); 14 14 $vars=$this->style_attr(['--lb-box-image-width'=>sanitize_text_field((string)($s['image_width']??'')),'--lb-box-image-space'=>$this->unit($s['image_space']??''),'--lb-box-title-space'=>$this->unit($s['title_space']??''),'--lb-box-image-radius'=>$this->unit($s['image_radius']??''),'--lb-box-image-opacity'=>$s['image_opacity']??'','--lb-box-image-hover-opacity'=>$s['image_hover_opacity']??'','--lb-box-title-color'=>$s['title_color']??'','--lb-box-title-hover'=>$s['title_hover_color']??'','--lb-box-text-color'=>$s['text_color']??'']); -
sidcraft-page-builder/trunk/includes/units/class-nested_tabs.php
r3723907 r3757542 55 55 $active=max(0,min(count($slots)-1,absint($s['active']??0))); 56 56 $vertical=($s['orientation']??'horizontal')==='vertical'; 57 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)? $s['tabs_align']:'start';57 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)?($s['tabs_align']??'start'):'start'; 58 58 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 59 59 $uid='lb'.substr(md5(wp_json_encode($slots).(string)($s['css_id']??'').wp_rand()),0,8); -
sidcraft-page-builder/trunk/includes/units/class-progress.php
r3723907 r3757542 10 10 public function render($s,$children=''){ 11 11 $v=max(0,min(100,floatval($s['value']??70))); 12 $style=in_array($s['bar_style']??'default',['default','info','success','warning','danger'],true)? $s['bar_style']:'default';12 $style=in_array($s['bar_style']??'default',['default','info','success','warning','danger'],true)?($s['bar_style']??'default'):'default'; 13 13 $tag=$this->tag($s['title_tag']??'span',$this->title_tags(),'span'); 14 14 $vars=$this->style_attr(['--lb-bar-color'=>$s['color']??'','--lb-bar-bg'=>$s['background']??'','--lb-bar-height'=>$this->unit($s['bar_height']??''),'--lb-bar-radius'=>$this->unit($s['bar_radius']??''),'--lb-bar-inner-color'=>$s['inner_color']??'','--lb-bar-title-color'=>$s['title_color']??'']); -
sidcraft-page-builder/trunk/includes/units/class-social.php
r3723907 r3757542 73 73 } 74 74 public function render($s,$children=''){ 75 $shape=in_array($s['shape']??'rounded',['square','rounded','circle'],true)? $s['shape']:'rounded';75 $shape=in_array($s['shape']??'rounded',['square','rounded','circle'],true)?($s['shape']??'rounded'):'rounded'; 76 76 $scheme=($s['color_scheme']??'official')==='custom'?'custom':'official'; 77 $align=in_array($s['align']??'left',['left','center','right'],true)? $s['align']:'left';77 $align=in_array($s['align']??'left',['left','center','right'],true)?($s['align']??'left'):'left'; 78 78 $cols=max(0,min(12,absint($s['columns']??0))); 79 79 $vars=$this->style_attr(['--lb-social-size'=>$this->unit($s['size']??''),'--lb-social-padding'=>$this->unit($s['icon_padding']??''),'--lb-social-gap'=>$this->unit($s['gap']??''),'--lb-social-row-gap'=>$this->unit($s['row_gap']??''),'--lb-social-radius'=>$this->unit($s['icon_radius']??''),'--lb-social-bg'=>$scheme==='custom'?($s['color']??''):'','--lb-social-color'=>$s['icon_color']??'','--lb-social-hover-bg'=>$s['hover_color']??'','--lb-social-hover-color'=>$s['hover_icon_color']??'','--lb-social-cols'=>$cols?:'','justify-content'=>$align==='left'?'flex-start':($align==='right'?'flex-end':'center')]); -
sidcraft-page-builder/trunk/includes/units/class-star_rating.php
r3723907 r3757542 13 13 $rating=max(0,min($max,round(floatval($this->scalar($s['rating']??5,5)),1))); 14 14 $unmarked=($s['unmarked_style']??'solid')==='outline'?'outline':'solid'; 15 $align=in_array($s['align']??'left',['left','center','right','justify'],true)? $s['align']:'left';15 $align=in_array($s['align']??'left',['left','center','right','justify'],true)?($s['align']??'left'):'left'; 16 16 $vars=$this->style_attr(['--lb-star-size'=>$this->unit($s['size']??''),'--lb-star-gap'=>$this->unit($s['star_gap']??''),'--lb-star-color'=>$s['color']??'','--lb-star-unmarked'=>$s['unmarked_color']??'','--lb-star-title-color'=>$s['title_color']??'','--lb-star-title-gap'=>$this->unit($s['title_gap']??'')]); 17 17 $stars=''; -
sidcraft-page-builder/trunk/includes/units/class-tabs.php
r3723907 r3757542 47 47 $active=max(0,min(count($rows)-1,absint($s['active']??0))); 48 48 $vertical=($s['orientation']??'horizontal')==='vertical'; 49 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)? $s['tabs_align']:'start';49 $align=in_array($s['tabs_align']??'start',['start','center','end','stretch'],true)?($s['tabs_align']??'start'):'start'; 50 50 $tag=$this->tag($s['title_tag']??'div',$this->title_tags(),'div'); 51 51 $uid='lb'.substr(md5(wp_json_encode($rows).microtime(true).wp_rand()),0,8); -
sidcraft-page-builder/trunk/includes/units/class-testimonial.php
r3723907 r3757542 39 39 protected function item_html($s,$item){ 40 40 $pos=($s['image_position']??'aside')==='top'?'top':'aside'; 41 $align=in_array($s['align']??'center',['left','center','right'],true)? $s['align']:'center';41 $align=in_array($s['align']??'center',['left','center','right'],true)?($s['align']??'center'):'center'; 42 42 $tag=$this->tag($s['name_tag']??'div',$this->title_tags(),'div'); 43 43 $author=(string)($item['author']??''); $role=(string)($item['role']??''); $quote=(string)($item['quote']??''); -
sidcraft-page-builder/trunk/includes/units/class-text.php
r3723907 r3757542 42 42 public function render($s,$children=''){ 43 43 $cols=max(1,min(10,absint($this->scalar($s['text_columns']??1,1)))); 44 $view=in_array($s['drop_cap_view']??'default',['default','stacked','framed'],true)? $s['drop_cap_view']:'default';44 $view=in_array($s['drop_cap_view']??'default',['default','stacked','framed'],true)?($s['drop_cap_view']??'default'):'default'; 45 45 $vars=$this->style_attr(['--lb-text-columns'=>$cols>1?$cols:'','--lb-text-column-gap'=>$this->unit($s['column_gap']??''),'--lb-paragraph-spacing'=>$this->unit($s['paragraph_spacing']??''),'--lb-link-color'=>$s['link_color']??'','--lb-link-hover'=>$s['link_hover_color']??'','--lb-text-hover'=>$s['hover_color']??'','--lb-drop-cap-color'=>$s['drop_cap_color']??'','--lb-drop-cap-secondary'=>$s['drop_cap_secondary_color']??'','--lb-drop-cap-size'=>$this->unit($s['drop_cap_size']??''),'--lb-drop-cap-space'=>$this->unit($s['drop_cap_space']??''),'--lb-drop-cap-radius'=>$this->unit($s['drop_cap_radius']??''),'--lb-drop-cap-border'=>$this->unit($s['drop_cap_border_width']??'')]); 46 46 $classes=$this->cls($s).' lb-text'.($cols>1?' lb-text-columns':'').(!empty($s['drop_cap'])?' lb-text-drop-cap lb-drop-cap-'.$view:''); -
sidcraft-page-builder/trunk/includes/units/class-text_path.php
r3723907 r3757542 54 54 unset($children); 55 55 $text=esc_html($s['text']??'Sidcraft Page Builder'); 56 $kind=in_array($s['path']??'wave',['wave','arc','circle','line'],true)? $s['path']:'wave';56 $kind=in_array($s['path']??'wave',['wave','arc','circle','line'],true)?($s['path']??'wave'):'wave'; 57 57 $paths=['wave'=>'M 20 80 Q 140 16 260 80 T 500 80 T 740 80 T 980 80','arc'=>'M 36 112 Q 500 8 964 112','circle'=>'M 500 46 A 150 32 0 1 1 499 46','line'=>'M 20 96 H 980']; 58 58 $id=function_exists('wp_unique_id')?wp_unique_id('lb-tp-'):'lb-tp-'.substr(md5(uniqid('',true)),0,8); -
sidcraft-page-builder/trunk/includes/units/class-video.php
r3723907 r3757542 93 93 if(!empty($s['loop']))$a.=' loop'; 94 94 if(empty($s['download_button']))$a.=' controlsList="nodownload"'; 95 $a.=' preload="'.esc_attr(in_array($s['preload']??'metadata',['none','metadata','auto'],true)? $s['preload']:'metadata').'"';95 $a.=' preload="'.esc_attr(in_array($s['preload']??'metadata',['none','metadata','auto'],true)?($s['preload']??'metadata'):'metadata').'"'; 96 96 if($poster)$a.=' poster="'.esc_url($poster).'"'; 97 97 return '<video'.$a.'><source src="'.$url.'"></video>'; -
sidcraft-page-builder/trunk/readme.txt
r3757239 r3757542 1 === Sidcraft Page Builder w/ MCP ===1 === Sidcraft Page Builder w/ AI MCP === 2 2 Contributors: ssiddiqi4 3 3 Donate link: https://paypal.me/SSiddiqi275 4 Tags: page builder, drag and drop, AI-Page-Builder, website builder, templates4 Tags: page builder, drag and drop, landing page, website builder, templates 5 5 Requires at least: 6.9 6 6 Tested up to: 7.1 7 7 Requires PHP: 7.4 8 Stable tag: 2.1. 28 Stable tag: 2.1.3 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 118 118 [Sidcraft Builder Pro](https://canvasly.pro/price.html#lite-vs-pro) is a separate add-on that adds Theme Builder, popups, display conditions, dynamic tags, Loop Grid and Loop Carousel, 70+ extra units, WooCommerce builder units, hosted payments (Stripe, PayPal, Square, Authorize.Net, Razorpay, Mollie) with Payment Forms, form actions and submissions, custom fonts and icons, custom code, editor notes and an AI assistant with an MCP server. Pro's Login & Register and Payment Form units also include the "Require Cloudflare Turnstile" option. 119 119 120 Every install also serves a read-only MCP endpoint at `/wp-json/sidcraft-page-builder/v1/mcp`, so AI agents such as Claude Desktop, Cursor and VS Code can read the site, the builder guide, the document schema and pages after signing in with a WordPress application password. Writing pages, templates, design tokens, media, menus, components and store data needs Sidcraft Builder Pro 2.1. 2and its own MCP endpoint.120 Every install also serves a read-only MCP endpoint at `/wp-json/sidcraft-page-builder/v1/mcp`, so AI agents such as Claude Desktop, Cursor and VS Code can read the site, the builder guide, the document schema and pages after signing in with a WordPress application password. Writing pages, templates, design tokens, media, menus, components and store data needs Sidcraft Builder Pro 2.1.3 and its own MCP endpoint. 121 121 122 122 The full unit list and user guide are at [canvasly.pro](https://canvasly.pro/blocks.html). For third-party services used by optional features, see "External services" below. … … 351 351 352 352 == Changelog == 353 354 = 2.1.3 = 355 * Fixed: PHP warnings from Text, Button, Icon Box, Divider and Icon List units when a saved layout predates a newer setting. 356 * Fixed: "conditional query tag called before the query" notices from early display-rule and maintenance checks. 357 * Fixed: the "translation loading too early" notice by registering bundled translations after setup. 358 * Fixed: the page fallback must-use plugin no longer checks query tags before the main query. 353 359 354 360 = 2.1.2 = -
sidcraft-page-builder/trunk/sidcraft-page-builder.php
r3757230 r3757542 3 3 * Plugin Name: Sidcraft Page Builder 4 4 * Description: A lightweight, independent visual page builder for WordPress. 5 * Version: 2.1. 25 * Version: 2.1.3 6 6 * Requires at least: 6.9 7 7 * Requires PHP: 7.4 … … 54 54 } 55 55 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_VERSION' ) ) { 56 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1. 2' );56 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1.3' ); 57 57 } 58 58 … … 319 319 320 320 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_VERSION' ) ) { 321 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1. 2' );321 define( 'SIDCRAFT_PAGE_BUILDER_VERSION', '2.1.3' ); 322 322 } 323 323 if ( ! defined( 'SIDCRAFT_PAGE_BUILDER_FILE' ) ) { … … 347 347 require_once $sidcraft_page_builder_controls_file; 348 348 } 349 /** 350 * Register the bundled translations after setup. Registering earlier makes 351 * WordPress 6.7+ try to load them before `init` when a label is translated 352 * during plugin load, which logs a "translation loading too early" notice. 353 * 354 * @return void 355 */ 356 function sidcraft_page_builder_load_textdomain() { 357 load_plugin_textdomain( // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Bundled translations in /languages. 358 'sidcraft-page-builder', 359 false, 360 dirname( plugin_basename( __FILE__ ) ) . '/languages' 361 ); 362 } 363 add_action( 'after_setup_theme', 'sidcraft_page_builder_load_textdomain', 1 ); 349 364 \SidcraftPageBuilder\Bootstrap\Plugin::instance(); 350 365 register_activation_hook( __FILE__, array( '\SidcraftPageBuilder\Bootstrap\Plugin', 'activate' ) );
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)