resources
10 months ago
DonationHistoryWidget.php
10 months ago
DonationReceiptWidget.php
10 months ago
GiveDonorWallWidget.php
10 months ago
GiveFormGridWidget.php
9 months ago
GiveFormWidget.php
10 months ago
GiveGoalWidget.php
10 months ago
GiveLoginWidget.php
10 months ago
GiveMultiFormGoalWidget.php
10 months ago
GiveProfileEditorWidget.php
10 months ago
GiveRegisterWidget.php
10 months ago
GiveSubscriptionsWidget.php
10 months ago
GiveTotalsWidget.php
10 months ago
GiveGoalWidget.php
189 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Give\ThirdPartySupport\Elementor\Widgets\V1; |
| 4 | |
| 5 | use Elementor\Widget_Base; |
| 6 | |
| 7 | /** |
| 8 | * Elementor Give Goal Widget. |
| 9 | * |
| 10 | * Elementor widget that inserts the GiveWP [give_goal] shortcode to output a login form. |
| 11 | * |
| 12 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 13 | */ |
| 14 | |
| 15 | class GiveGoalWidget extends Widget_Base |
| 16 | { |
| 17 | /** |
| 18 | * Get widget name. |
| 19 | * |
| 20 | * Retrieve Give Goal widget name. |
| 21 | * |
| 22 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 23 | * @access public |
| 24 | * |
| 25 | * @return string Widget name. |
| 26 | */ |
| 27 | public function get_name() |
| 28 | { |
| 29 | return 'Give Goal'; |
| 30 | } |
| 31 | |
| 32 | /** |
| 33 | * Get widget title. |
| 34 | * |
| 35 | * Retrieve Give Goal widget title. |
| 36 | * |
| 37 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 38 | * @access public |
| 39 | * |
| 40 | * @return string Widget title. |
| 41 | */ |
| 42 | public function get_title() |
| 43 | { |
| 44 | return __('Give Goal (Legacy)', 'give'); |
| 45 | } |
| 46 | |
| 47 | /** |
| 48 | * Get widget icon. |
| 49 | * |
| 50 | * Retrieve Give Goal widget icon. |
| 51 | * |
| 52 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 53 | * @access public |
| 54 | * |
| 55 | * @return string Widget icon. |
| 56 | */ |
| 57 | public function get_icon() |
| 58 | { |
| 59 | return 'give-icon'; |
| 60 | } |
| 61 | |
| 62 | /** |
| 63 | * Get widget categories. |
| 64 | * |
| 65 | * Retrieve the list of categories the Give Goal widget belongs to. |
| 66 | * |
| 67 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 68 | * @access public |
| 69 | * |
| 70 | * @return array Widget categories. |
| 71 | */ |
| 72 | public function get_categories() |
| 73 | { |
| 74 | return ['givewp-category-legacy']; |
| 75 | } |
| 76 | |
| 77 | /** |
| 78 | * Widget inner wrapper. |
| 79 | * |
| 80 | * Use optimized DOM structure, without the inner wrapper. |
| 81 | * |
| 82 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 83 | * @access public |
| 84 | */ |
| 85 | public function has_widget_inner_wrapper(): bool |
| 86 | { |
| 87 | return false; |
| 88 | } |
| 89 | |
| 90 | /** |
| 91 | * Goal Give Goal widget controls. |
| 92 | * |
| 93 | * Adds different input fields to allow the user to change and customize the widget settings. |
| 94 | * |
| 95 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 96 | * @access protected |
| 97 | */ |
| 98 | protected function register_controls() |
| 99 | { |
| 100 | $this->start_controls_section( |
| 101 | 'give_login_settings', |
| 102 | [ |
| 103 | 'label' => __('GiveWP Goal Widget', 'give'), |
| 104 | 'tab' => \Elementor\Controls_Manager::TAB_CONTENT, |
| 105 | ] |
| 106 | ); |
| 107 | |
| 108 | $this->add_control( |
| 109 | 'form_id', |
| 110 | [ |
| 111 | 'label' => __('Form ID', 'give'), |
| 112 | 'type' => \Elementor\Controls_Manager::TEXT, |
| 113 | 'input_type' => 'number' |
| 114 | ] |
| 115 | ); |
| 116 | |
| 117 | $this->add_control( |
| 118 | 'show_text', |
| 119 | [ |
| 120 | 'label' => __('Show Text', 'give'), |
| 121 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 122 | 'description' => __('Show or hide the goal text.', 'give'), |
| 123 | 'label_on' => __('Show', 'give'), |
| 124 | 'label_off' => __('Hide', 'give'), |
| 125 | 'default' => 'yes' |
| 126 | ] |
| 127 | ); |
| 128 | |
| 129 | $this->add_control( |
| 130 | 'show_bar', |
| 131 | [ |
| 132 | 'label' => __('Show Progress Bar', 'give'), |
| 133 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 134 | 'description' => __('Show or hide progress bar.', 'give'), |
| 135 | 'label_on' => __('Show', 'give'), |
| 136 | 'label_off' => __('Hide', 'give'), |
| 137 | 'default' => 'yes' |
| 138 | ] |
| 139 | ); |
| 140 | |
| 141 | $this->add_control( |
| 142 | 'give_goal_info', |
| 143 | [ |
| 144 | 'label' => '', |
| 145 | 'type' => \Elementor\Controls_Manager::RAW_HTML, |
| 146 | 'content_classes' => 'give-info', |
| 147 | 'raw' => ' |
| 148 | <div class="give"> |
| 149 | <p class="info-head"> |
| 150 | ' . __('GIVEWP GOAL WIDGET', 'give') . '</p> |
| 151 | <p class="info-message">' . __('This is the GiveWP Goal widget. Choose how you want your form goal to be displayed. Note that this widget only supports forms that have a goal enabled. If you want to show progress of any form or multiple forms, use the "GiveWP Totals" widget instead.', 'give') . '</p> |
| 152 | <p class="give-docs-links"> |
| 153 | <a href="https://givewp.com/documentation/core/shortcodes/give_goal/?utm_source=plugin_settings&utm_medium=referral&utm_campaign=Free_Addons&utm_content=givelementor" rel="noopener noreferrer" target="_blank"><i class="fa fa-book" aria-hidden="true"></i>' . __('Visit the GiveWP Docs for more info on the GiveWP Goal.', 'give') . '</a> |
| 154 | </p> |
| 155 | </div>' |
| 156 | ] |
| 157 | ); |
| 158 | |
| 159 | $this->end_controls_section(); |
| 160 | } |
| 161 | |
| 162 | /** |
| 163 | * Render the [give_goal] output on the frontend. |
| 164 | * |
| 165 | * Written in PHP and used to generate the final HTML. |
| 166 | * |
| 167 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 168 | * @access protected |
| 169 | */ |
| 170 | protected function render() |
| 171 | { |
| 172 | $settings = $this->get_settings_for_display(); |
| 173 | |
| 174 | $id = esc_html($settings['form_id']); |
| 175 | $showText = esc_html($settings['show_text']); |
| 176 | $showBar = esc_html($settings['show_bar']); |
| 177 | |
| 178 | $html = do_shortcode( |
| 179 | '[give_goal |
| 180 | id="' . $id . '" |
| 181 | show_text="' . $showText . '" |
| 182 | show_bar="' . $showBar . '" |
| 183 | ]' |
| 184 | ); |
| 185 | |
| 186 | echo '<div class="givewp-elementor-widget give-login-shortcode-wrap">' . $html . '</div>'; |
| 187 | } |
| 188 | } |
| 189 |