/var/www/hkosl.com/aga/wp-content/plugins/siteorigin-panels/inc/widgets/layout.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php

/**
 * This widget give you the full Page Builder interface inside a widget. Fully nestable.
 *
 * Class SiteOrigin_Panels_Widgets_Builder
 */
class SiteOrigin_Panels_Widgets_Layout extends WP_Widget {
    function 
__construct() {
        
parent::__construct(
            
'siteorigin-panels-builder',
            
// TRANSLATORS: This is the name of a widget
            
__'Layout Builder''siteorigin-panels' ),
            array(
                
'description' => __'A complete SiteOrigin Page Builder layout as a widget.''siteorigin-panels' ),
                
'panels_title' => false,
            ),
            array(
            )
        );
    }
    
    function 
widget($args$instance) {
        if( empty(
$instance['panels_data']) ) return;
        
        if( 
is_string$instance['panels_data'] ) ) {
            
$instance['panels_data'] = json_decode$instance['panels_data'], true );
        }
        if(empty(
$instance['panels_data']['widgets'])) return;
        
        if( ! empty( 
$instance['panels_data']['widgets'] ) ) {
            foreach( 
$instance['panels_data']['widgets'] as & $widget ) {
                
$widget['panels_info']['class'] = str_replace'&#92;''\\'$widget['panels_info']['class'] );
            }
        }
        
        if( empty( 
$instance['builder_id'] ) ) $instance['builder_id'] = uniqid();
        
        echo 
$args['before_widget'];
        
$is_content_render = ! empty( $GLOBALS['SITEORIGIN_PANELS_POST_CONTENT_RENDER'] ) &&
                             
siteorigin_panels_setting'copy-styles' );
        
$is_preview_render = ! empty( $GLOBALS['SITEORIGIN_PANELS_PREVIEW_RENDER'] );

        echo 
SiteOrigin_Panels::renderer()->render(
                
'w'.$instance['builder_id'],
                
true,
                
$instance['panels_data'],
                
$layout_data,
                
$is_content_render || $is_preview_render
        
);
        echo 
$args['after_widget'];
    }
    
    function 
update($new$old) {
        
$new['builder_id'] = uniqid();
        
        if( 
is_string($new['panels_data']) && ! empty( $new['panels_data'] ) ) {
            
// This is still in a string format, so we'll convert it to an array for sanitization
            
$new['panels_data'] = json_decode$new['panels_data'], true );
        }
        
        if ( ! empty( 
$new['panels_data'] ) ) {
            if ( ! empty( 
$new['panels_data']['widgets'] ) ) {
                
$new['panels_data']['widgets'] = SiteOrigin_Panels_Admin::single()->process_raw_widgets(
                    
$new['panels_data']['widgets'],
                    ! empty( 
$old['panels_data']['widgets'] ) ? $old['panels_data']['widgets'] : false
                
);
                foreach( 
$new['panels_data']['widgets'] as & $widget ) {
                    
$widget['panels_info']['class'] = str_replace'\\''&#92;'$widget['panels_info']['class'] );
                }
            }
            
            
$new['panels_data'] = SiteOrigin_Panels_Styles_Admin::single()->sanitize_all$new['panels_data'] );
        }
        
        return 
$new;
    }
    
    function 
form$instance ){
        
        if ( ! 
is_admin() ) {
            
?>
            <p>
                <?php _e'This widget can currently only be used in the WordPress admin interface.''siteorigin-panels' ?>
            </p>
            <?php
            
return;
        }
        
        
$instance wp_parse_args($instance, array(
            
'panels_data' => '',
            
'builder_id' => uniqid(),
        ) );
        
$form_id uniqid();
        
        if( ! empty( 
$instance['panels_data']['widgets'] ) ) {
            foreach( 
$instance['panels_data']['widgets'] as & $widget ) {
                
$widget['panels_info']['class'] = str_replace'&#92;''\\'$widget['panels_info']['class'] );
            }
        }
        
        if( ! 
is_string$instance['panels_data'] ) ) {
            
$instance['panels_data'] = json_encode$instance['panels_data'] );
        }
        
        
?>
        <div class="siteorigin-page-builder-widget" id="siteorigin-page-builder-widget-<?php echo esc_attr$form_id ?>" data-builder-id="<?php echo esc_attr$form_id ?>" data-type="layout_widget">
            <p>
                <button class="button-secondary siteorigin-panels-display-builder" ><?php _e('Open Builder''siteorigin-panels'?></button>
            </p>
            
            <input type="hidden" data-panels-filter="json_parse" value="" class="panels-data" name="<?php echo $this->get_field_name('panels_data'?>" id="<?php echo $this->get_field_id('panels_data'?>" />
            
            <script type="text/javascript">
                ( function( panelsData ){
                    // Create the panels_data input
                    document.getElementById('<?php echo $this->get_field_id('panels_data'?>').value = JSON.stringify( panelsData );
                } )( <?php echo $instance['panels_data']; ?> );
            </script>
            
            <input type="hidden" value="<?php echo esc_attr$instance['builder_id'] ) ?>" name="<?php echo $this->get_field_name('builder_id'?>" />
        </div>
        <script type="text/javascript">
            if(
                typeof jQuery.fn.soPanelsSetupBuilderWidget != 'undefined' &&
                ( ! jQuery('body').hasClass('wp-customizer') || jQuery( "#siteorigin-page-builder-widget-<?php echo esc_attr$form_id ?>").closest( '.panel-dialog' ).length )
            ) {
                jQuery( "#siteorigin-page-builder-widget-<?php echo esc_attr$form_id ?>").soPanelsSetupBuilderWidget();
            }
        </script>
        <?php
    
}
    
}