columns->get_column( $col_type ); $col_ID = generate_column_id(); $col_data = array( 'type' => $col_type, 'col_class' => builder_column_class( $prev_width, $col ), 'modules' => array() ); // Generate Column HTML $html = builder_render_backend_column( $col_ID, $col_data ); // Saving data $builder_data[$row_id]['prev_width'] = $prev_width; $builder_data[$row_id]['columns'][$col_ID] = $col_data; $result = $spyropress_builder->save_data( $post_id, $builder_data ); // Generate json data $json['success'] = ( $result ) ? true : false; $json['message'] = ( $result ) ? esc_html__( 'Column Saved', 'spyropress' ) : esc_html__( 'Operation fails', 'spyropress' ); $json['html'] = ( $result ) ? $html : esc_html__( 'Oops! something goes wrong while creating the new column.', 'spyropress' ); $json['row_id'] = $row_id; $json['col_id'] = $col_ID; return $json; } /** * Delete Column */ function builder_delete_column( $args, $builder_data ) { global $spyropress_builder; extract( $args ); $html = ''; $prev_width = 0; // Deleting column if exists if ( isset( $builder_data[$row_id]['columns'][$col_id] ) ) { unset( $builder_data[$row_id]['columns'][$col_id] ); // regenerating column classes $columns = $builder_data[$row_id]['columns']; if ( ! empty( $columns ) ) { foreach ( $columns as $colID => $col ) { $col_obj = $spyropress_builder->columns->get_column( $col['type'] ); $builder_data[$row_id]['columns'][$colID]['col_class'] = builder_column_class( $prev_width, $col_obj ); // Generate Column HTML $html .= builder_render_backend_column( $colID, $builder_data[$row_id]['columns'][$colID] ); } } else { $html = '
'; } // Saving data $builder_data[$row_id]['prev_width'] = $prev_width; $result = $spyropress_builder->save_data( $post_id, $builder_data ); // Generate json data $json['success'] = ( $result ) ? true : false; $json['message'] = ( $result ) ? esc_html__( 'Column Deleted', 'spyropress' ) : esc_html__( 'Operation fails', 'spyropress' ); $json['html'] = ( $result ) ? $html : esc_html__( 'Oops! something goes wrong while deleting the column.', 'spyropress' ); $json['row_id'] = $row_id; $json['col_id'] = $col_id; return $json; } // If column doesn't exists else { // Generate json data $json['success'] = false; $json['message'] = esc_html__( 'Column not exists', 'spyropress' ); $json['html'] = 'Column: ' . $col_id . ' doesn\'t exists.'; $json['row_id'] = $row_id; $json['col_id'] = $col_id; return $json; } } /** Rendering Function **********************************/ /** * Render Columns */ function builder_render_backend_columns( $columns ) { if ( empty( $columns ) ) return '
'; $html = ''; foreach ( $columns as $col_ID => $column ) { $html .= builder_render_backend_column( $col_ID, $column ); } return $html; } /** * Render Column */ function builder_render_backend_column( $col_ID, $column ) { $column = sprintf( '
%3$s
Size Module
', $col_ID, $column['col_class'], builder_render_backend_modules( $column['modules'] ) ); return $column; } /** * Render Column - Frontend */ function builder_render_frontend_columns( $columns ) { $html = ''; foreach ( $columns as $col_ID => $column ) { $html .= builder_render_frontend_column( $col_ID, $column ); } return $html; } /** * Render Column - Frontend */ function builder_render_frontend_column( $col_ID, $column ) { $section_class = ''; if( isset( $column['col_class'] ) && !empty( $column['col_class'] ) ) $section_class = ' class="' . $column['col_class'] . '"'; $column = sprintf( '
%3$s
', $col_ID, $section_class, builder_render_frontend_modules( $column['modules'] ) ); return $column; } /** Helper Function *************************************/ /** * Generate Unique Column ID */ function generate_column_id() { return uniqid( 'builder-column-' ); } /** * Generate column classes */ function builder_column_class( &$prev_width, $col, $extra_class = '' ) { global $spyropress_builder; $classes = array(); // grid col size class $classes[] = 'span' . str_replace( '/', 'by', $col->config['size'] ); if( 'skt' == get_html_framework() ) $classes[] = get_skeleton_class( $col->config['size'] ); if( 'fd3' == get_html_framework() ) $classes[] = get_foundation3_class( $col->config['size'] ); if( 'bs3' == get_html_framework() ) $classes[] = 'col-md-' . $col->config['size']; // add span_first class $width = is_string( $col->config['size'] ) ? ( int )1/3*16 : ( int )$col->config['size']; $new_width = $prev_width + $width; if ( $prev_width == 0 ) { $classes[] = get_first_column_class(); $prev_width = $new_width; } elseif ( ( get_grid_columns() - $new_width ) < 0 ) { $prev_width = $width; $classes[] = get_first_column_class(); } else { $prev_width = $new_width; } if( get_grid_columns() == $new_width ) { $prev_width = 0; $classes[] = get_last_column_class(); } // extra class define by row block if ( $extra_class != '' ) { $classes[] = $extra_class; } return spyropress_clean_cssclass( $classes ); } ?>