Files
roi-theme/wp-content/plugins/thrive-visual-editor/inc/classes/class-tcb-widget-element.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

162 lines
3.3 KiB
PHP
Executable File

<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-visual-editor
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
/**
* Class TCB_Widget_Element
*/
class TCB_Widget_Element extends TCB_Element_Abstract {
/**
* @var WP_Widget
*/
private $widget;
/**
* TCB_Widget_Element constructor.
*
* @param $widget WP_Widget
*
* @throws Exception
*/
public function __construct( $widget ) {
if ( $widget instanceof WP_Widget ) {
$tag = 'widget_' . $widget->id_base;
$this->widget = $widget;
if ( method_exists( $widget, 'enqueue_admin_scripts' ) ) {
$widget->enqueue_admin_scripts();
}
if ( method_exists( $widget, 'render_control_template_scripts' ) ) {
$widget->render_control_template_scripts();
}
parent::__construct( $tag );
} else {
throw new Exception( 'Constructor argument should be a WP_Widget instance' );
}
}
/**
* Name of the element
*
* @return string
*/
public function name() {
$name = $this->widget->name;
/* some widgets already have 'Widget' at the end of their name */
if ( strpos( $name, 'Widget' ) === false ) {
$name .= ' ' . __( 'Widget', 'thrive-cb' );
}
return $name;
}
/**
* Set alternate for widget so we can better find him with search
*
* @return mixed|string|string[]|null
*/
public function alternate() {
return $this->widget->id_base;
}
/**
* Return icon class needed for display in menu
*
* @return string
*/
public function icon() {
/**
* Filter widget icon in case we want something special
*
* @param string $icon by default it's the wordpress icon
* @param WP_Widget $widget the current widget
*
* @return string
*/
return apply_filters( 'tcb_widget_element_icon', 'wordpress', $this->widget );
}
/**
* Button element identifier
*
* @return string
*/
public function identifier() {
return '.thrv_' . $this->widget->id_base;
}
/**
* Element category that will be displayed in the sidebar
*
* @return string
*/
public function category() {
/**
* Filter widget category label in case we want to group widgets differently
*
* @param string $icon by default we have 'Widgets'
* @param WP_Widget $widget the current widget
*
* @return string
*/
return apply_filters( 'tcb_widget_element_category', static::get_widgets_label(), $this->widget );
}
/**
* HTML of the current widget
*
* @return string
*/
public function html() {
return '<div class="thrv_wrapper thrv_widget thrv_' . $this->widget->id_base . ' tcb-empty-widget tcb-elem-placeholder">
<span class="tcb-inline-placeholder-action with-icon">' . tcb_icon( 'wordpress', true, 'editor' ) . $this->name() . '</span>
</div>';
}
/**
* Component and control config
*
* @return array
*/
public function own_components() {
return array(
'widget' => [
'config' => [],
],
'styles-templates' => [ 'hidden' => true ],
'typography' => [ 'hidden' => true ],
'animation' => array(
'disabled_controls' =>
array( '.btn-inline.anim-link', '.btn-inline.anim-popup' ),
),
'layout' => [
'disabled_controls' => [],
],
'borders' => [
'config' => [
'Borders' => [
'important' => true,
],
'Corners' => [
'important' => true,
],
],
],
);
}
}