File: //home/parhudrw/emenu.anqa.it/wp-content/plugins/hello-plus/modules/forms/module.php
<?php
namespace HelloPlus\Modules\Forms;
use Elementor\Controls_Manager;
use HelloPlus\Includes\Module_Base;
use HelloPlus\Modules\Forms\components\Ajax_Handler;
use HelloPlus\Modules\Forms\Controls\Fields_Map;
use HelloPlus\Modules\Forms\Controls\Fields_Repeater;
use HelloPlus\Modules\Forms\Registrars\Form_Actions_Registrar;
use HelloPlus\Modules\Forms\Registrars\Form_Fields_Registrar;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
class Module extends Module_Base {
/**
* @var Form_Actions_Registrar
*/
public $actions_registrar;
/**
* @var Form_Fields_Registrar
*/
public $fields_registrar;
public static function get_name(): string {
return 'forms';
}
protected function get_widget_ids(): array {
return [
'Ehp_Form',
];
}
/**
* Get the base URL for assets.
*
* @return string
*/
public function get_assets_base_url(): string {
return HELLOPLUS_URL;
}
/**
* Register styles.
*
* At build time, Elementor compiles `/modules/forms/assets/scss/frontend.scss`
* to `/assets/css/widget-forms.min.css`.
*
* @return void
*/
public function register_styles() {
wp_register_style(
'helloplus-forms',
HELLOPLUS_STYLE_URL . 'helloplus-forms.css',
[ 'elementor-frontend', 'elementor-icons' ],
HELLOPLUS_VERSION
);
}
public static function find_element_recursive( $elements, $form_id ) {
foreach ( $elements as $element ) {
if ( $form_id === $element['id'] ) {
return $element;
}
if ( ! empty( $element['elements'] ) ) {
$element = self::find_element_recursive( $element['elements'], $form_id );
if ( $element ) {
return $element;
}
}
}
return false;
}
public function register_controls( Controls_Manager $controls_manager ) {
$controls_manager->register( new Fields_Repeater() );
$controls_manager->register( new Fields_Map() );
}
public function enqueue_editor_scripts() {
wp_enqueue_script(
'helloplus-forms-editor',
HELLOPLUS_SCRIPTS_URL . 'helloplus-forms-editor.js',
[ 'elementor-editor', 'wp-i18n' ],
HELLOPLUS_VERSION,
true
);
$promotion_data = [
'title' => __( 'Collect Submissions', 'hello-plus' ),
'description' => [ __( 'Unlock form submissions by upgrading to Elementor Pro on an eligible plan.', 'hello-plus' ) ],
'upgrade_text' => __( 'Upgrade', 'hello-plus' ),
'upgrade_url' => 'https://go.elementor.com/biz-form-submissions',
'image' => HELLOPLUS_IMAGES_URL . 'collect-submission.jpg',
'image_alt' => __( 'Upgrade', 'hello-plus' ),
];
wp_localize_script(
'helloplus-forms-editor',
'ehpFormsPromotionData',
$promotion_data
);
wp_set_script_translations( 'helloplus-forms-editor', 'hello-plus' );
}
public function register_scripts() {
wp_register_script(
'helloplus-forms-fe',
HELLOPLUS_SCRIPTS_URL . 'helloplus-forms-fe.js',
[ 'elementor-frontend-modules', 'elementor-frontend' ],
HELLOPLUS_VERSION,
true
);
wp_localize_script(
'helloplus-forms-fe',
'ehpFormsData',
[
'nonce' => wp_create_nonce( Ajax_Handler::NONCE_ACTION ),
]
);
}
protected function get_component_ids(): array {
return [ 'Ajax_Handler' ];
}
public static function get_site_domain() {
return str_ireplace( 'www.', '', wp_parse_url( home_url(), PHP_URL_HOST ) );
}
protected function register_hooks(): void {
parent::register_hooks();
add_action( 'elementor/frontend/after_register_scripts', [ $this, 'register_scripts' ] );
add_action( 'elementor/frontend/after_register_styles', [ $this, 'register_styles' ] );
add_action( 'elementor/controls/register', [ $this, 'register_controls' ] );
add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_editor_scripts' ] );
}
/**
* Module constructor.
*/
public function __construct() {
parent::__construct();
// Initialize registrars.
$this->actions_registrar = new Form_Actions_Registrar();
$this->fields_registrar = new Form_Fields_Registrar();
}
}