PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / ThirdPartySupport / Elementor / Widgets / V1 / GiveDonorWallWidget.php
give / src / ThirdPartySupport / Elementor / Widgets / V1 Last commit date
resources 11 months ago DonationHistoryWidget.php 1 year ago DonationReceiptWidget.php 1 year ago GiveDonorWallWidget.php 1 year ago GiveFormGridWidget.php 11 months ago GiveFormWidget.php 11 months ago GiveGoalWidget.php 1 year ago GiveLoginWidget.php 1 year ago GiveMultiFormGoalWidget.php 1 year ago GiveProfileEditorWidget.php 1 year ago GiveRegisterWidget.php 1 year ago GiveSubscriptionsWidget.php 1 year ago GiveTotalsWidget.php 1 year ago
GiveDonorWallWidget.php
421 lines
1 <?php
2
3 namespace Give\ThirdPartySupport\Elementor\Widgets\V1;
4
5 use Elementor\Widget_Base;
6
7 /**
8 * Elementor Give Donor Wall Widget.
9 *
10 * Elementor widget that inserts the GiveWP [give_donor_wall] shortcode to output a form total with options.
11 *
12 * @since 4.7.0 migrated from givewp-elementor-widgets
13 */
14
15 class GiveDonorWallWidget extends Widget_Base
16 {
17 /**
18 * Get widget name.
19 *
20 * Retrieve Give Donor Wall 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_Donor_Wall';
30 }
31
32 /**
33 * Get widget title.
34 *
35 * Retrieve Give Donor Wall 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 Donor Wall (Legacy)', 'give');
45 }
46
47 /**
48 * Get widget icon.
49 *
50 * Retrieve Give Donor Wall 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 Donor Wall 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 * Register Give Donor Wall 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_donor_wall_settings',
102 [
103 'label' => __('GiveWP Donor Wall Widget', 'give'),
104 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
105 ]
106 );
107
108 $this->add_control(
109 'donors_per_page',
110 [
111 'label' => __('Donors per Page', 'give'),
112 'type' => \Elementor\Controls_Manager::NUMBER,
113 'description' => __('Set how many donors will show before the "Show More" button appears.', 'give'),
114 'min' => '1',
115 'max' => '30',
116 'default' => '12'
117 ]
118 );
119
120 $this->add_control(
121 'all_forms',
122 [
123 'label' => __('Show All Donors?', 'give'),
124 'type' => \Elementor\Controls_Manager::CHOOSE,
125 'description' => __('Do you want to show all donors here, or choose one form?', 'give'),
126 'options' => [
127 'yes' => [
128 'title' => __('Yes', 'give'),
129 'icon' => 'fa fa-check',
130 ],
131 'no' => [
132 'title' => __('No', 'give'),
133 'icon' => 'fa fa-times-circle',
134 ],
135 ],
136 'default' => 'yes',
137 'toggle' => true
138 ]
139 );
140
141 $this->add_control(
142 'form_id',
143 [
144 'label' => __('Form ID', 'give'),
145 'type' => \Elementor\Controls_Manager::TEXT,
146 'description' => __('What is the form ID of the form you want to pull the donors from?', 'give'),
147 'condition' => [
148 'all_forms' => 'no'
149 ],
150 'input_type' => 'number'
151 ]
152 );
153
154 $this->add_control(
155 'orderby',
156 [
157 'label' => __('Order By', 'give'),
158 'type' => \Elementor\Controls_Manager::SELECT,
159 'description' => __('The element which the order will be determined by.', 'give'),
160 'options' => [
161 'post_date' => __('Donation Date', 'give'),
162 'donation_amount' => __('Donation Amount', 'give')
163 ],
164 'default' => 'post_date'
165 ]
166 );
167
168 $this->add_control(
169 'order',
170 [
171 'label' => __('Order By', 'give'),
172 'type' => \Elementor\Controls_Manager::SELECT,
173 'description' => __('The order the donors will be displayed in according to the "Order By" field chosen.', 'give'),
174 'options' => [
175 'desc' => __('Descending', 'give'),
176 'asc' => __('Ascending', 'give')
177 ],
178 'default' => 'desc'
179 ]
180 );
181
182 $this->add_control(
183 'columns',
184 [
185 'label' => __('Number of Columns', 'give'),
186 'type' => \Elementor\Controls_Manager::SELECT,
187 'description' => __('The number of columns to display. Note that "Best Fit" will always stretch to fill the available width that the donor wall is placed within.', 'give'),
188 'options' => [
189 'best-fit' => __('Best Fit', 'give'),
190 '1' => '1',
191 '2' => '2',
192 '3' => '3',
193 '4' => '4',
194 ],
195 'default' => 'best-fit'
196 ]
197 );
198
199 $this->add_control(
200 'show_avatar',
201 [
202 'label' => __('Show Avatar', 'give'),
203 'type' => \Elementor\Controls_Manager::SWITCHER,
204 'description' => __('Show/Hide the donor avatar. Will display the donor\'s initials if no avatar is supported for their email address.', 'give'),
205 'label_on' => __('Show', 'give'),
206 'label_off' => __('Hide', 'give'),
207 'return_value' => 'yes',
208 'default' => 'yes',
209 ]
210 );
211
212 $this->add_control(
213 'avatar_size',
214 [
215 'label' => __('Show Avatar', 'give'),
216 'type' => \Elementor\Controls_Manager::NUMBER,
217 'description' => __('Set the size of the Avatar in pixels.', 'give'),
218 'default' => '60',
219 'condition' => [
220 'show_avatar' => 'yes'
221 ],
222 ]
223 );
224
225 $this->add_control(
226 'show_name',
227 [
228 'label' => __('Show Name', 'give'),
229 'type' => \Elementor\Controls_Manager::SWITCHER,
230 'description' => __('Show/Hide the donor\'s name.', 'give'),
231 'label_on' => __('Show', 'give'),
232 'label_off' => __('Hide', 'give'),
233 'return_value' => 'yes',
234 'default' => 'yes',
235 ]
236 );
237
238 $this->add_control(
239 'show_total',
240 [
241 'label' => __('Show Total', 'give'),
242 'type' => \Elementor\Controls_Manager::SWITCHER,
243 'description' => __('Show/Hide the donation amount.', 'give'),
244 'label_on' => __('Show', 'give'),
245 'label_off' => __('Hide', 'give'),
246 'return_value' => 'yes',
247 'default' => 'yes',
248 ]
249 );
250
251 $this->add_control(
252 'show_time',
253 [
254 'label' => __('Show Date', 'give'),
255 'type' => \Elementor\Controls_Manager::SWITCHER,
256 'description' => __('Show/Hide the date the donation was made.', 'give'),
257 'label_on' => __('Show', 'give'),
258 'label_off' => __('Hide', 'give'),
259 'return_value' => 'yes',
260 'default' => 'yes',
261 ]
262 );
263
264 $this->add_control(
265 'show_comments',
266 [
267 'label' => __('Show Comments', 'give'),
268 'type' => \Elementor\Controls_Manager::SWITCHER,
269 'description' => __('Show/Hide the donor comment if any was provided by the donor.', 'give'),
270 'label_on' => __('Show', 'give'),
271 'label_off' => __('Hide', 'give'),
272 'return_value' => 'yes',
273 'default' => 'yes',
274 ]
275 );
276
277 $this->add_control(
278 'comment_length',
279 [
280 'label' => __('Comment length in characters', 'give'),
281 'type' => \Elementor\Controls_Manager::NUMBER,
282 'description' => __('Number of characters to allow to be shown in the donor comments. This can help make each donor card a more consistent height for appearance purposes.', 'give'),
283 'default' => '140',
284 'condition' => [
285 'show_comments' => 'yes'
286 ]
287 ]
288 );
289
290 $this->add_control(
291 'only_comments',
292 [
293 'label' => __('Only Show Donations with Comments', 'give'),
294 'type' => \Elementor\Controls_Manager::SWITCHER,
295 'description' => __('Only show donations that have comments.', 'give'),
296 'label_on' => __('Show', 'give'),
297 'label_off' => __('Hide', 'give'),
298 'return_value' => 'yes',
299 'default' => 'no',
300 'condition' => [
301 'show_comments' => 'yes'
302 ]
303 ]
304 );
305
306 $this->add_control(
307 'anonymous',
308 [
309 'label' => __('Show Anonymous Donations', 'give'),
310 'type' => \Elementor\Controls_Manager::SWITCHER,
311 'description' => __('Include/Exclude donations made that selected to be "Anonymous". They will be shown without the name or comments.', 'give'),
312 'label_on' => __('Show', 'give'),
313 'label_off' => __('Hide', 'give'),
314 'return_value' => 'yes',
315 'default' => 'yes',
316 ]
317 );
318
319 $this->add_control(
320 'loadmore_text',
321 [
322 'label' => __('Load More Text', 'give'),
323 'type' => \Elementor\Controls_Manager::TEXT,
324 'description' => __('The text that appears on the "Load More" button if you have multiple "pages" of donor cards beyond what the "Donors per Page" setting above is set to.', 'give'),
325 'label_block' => true,
326 'default' => 'Read more',
327 ]
328 );
329
330 $this->add_control(
331 'readmore_text',
332 [
333 'label' => __('Read More Text', 'give'),
334 'type' => \Elementor\Controls_Manager::TEXT,
335 'description' => __('The text that appears on the "Read More" link if your donor comments are truncated because of the comment length.', 'give'),
336 'label_block' => true,
337 'default' => 'Read more',
338 ]
339 );
340
341 $this->add_control(
342 'give_donor_wall_info',
343 [
344 'label' => '',
345 'type' => \Elementor\Controls_Manager::RAW_HTML,
346 'content_classes' => 'give-info',
347 'raw' => '
348 <div class="give">
349 <p class="info-head">
350 ' . __('GIVEWP DONOR WALL WIDGET', 'give') . '</p>
351 <p class="info-message">' . __('This is the GiveWP Donor Wall widget. Choose the elements you want to see appear in the donor wall. Note that the live preview only works if you have existing donors to display.', 'give') . '</p>
352 <p class="give-docs-links">
353 <a href="https://givewp.com/documentation/core/shortcodes/give_donor_wall/?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 Donor Wall.', 'give') . '</a>
354 </p>
355 </div>'
356 ]
357 );
358
359 $this->end_controls_section();
360 }
361
362 /**
363 * Render the [give_donor_wall] output on the frontend.
364 *
365 * Written in PHP and used to generate the final HTML.
366 *
367 * @since 4.7.0 migrated from givewp-elementor-widgets
368 * @access protected
369 */
370 protected function render()
371 {
372 global $give_receipt_args, $donation;
373
374 $settings = $this->get_settings_for_display();
375
376 $forms = ('yes' === $settings['all_forms'] ? '' : $settings['form_id']);
377 $paged = esc_html($settings['donors_per_page']);
378 $columns = esc_html($settings['columns']);
379 $anonymous = esc_html($settings['anonymous']);
380 $showAvatar = esc_html($settings['show_avatar']);
381 $showName = esc_html($settings['show_name']);
382 $showTotal = esc_html($settings['show_total']);
383 $showTime = esc_html($settings['show_time']);
384 $showComments = esc_html($settings['show_comments']);
385 $commentLength = esc_html($settings['comment_length']);
386 $onlyComments = esc_html($settings['only_comments']);
387 $readmoreText = esc_html($settings['readmore_text']);
388 $loadmoreText = esc_html($settings['loadmore_text']);
389 $avatarSize = esc_html($settings['avatar_size']);
390 $orderby = esc_html($settings['orderby']);
391 $order = esc_html($settings['order']);
392
393 $html = do_shortcode('
394 [give_donor_wall
395 donors_per_page="' . $paged . '"
396 form_id="' . $forms . '"
397 columns="' . $columns . '"
398 anonymous="' . $anonymous . '"
399 show_avatar="' . $showAvatar . '"
400 show_name="' . $showName . '"
401 show_total="' . $showTotal . '"
402 show_time="' . $showTime . '"
403 show_comments="' . $showComments . '"
404 comment_length="' . $commentLength . '"
405 only_comments="' . $onlyComments . '"
406 readmore_text="' . $readmoreText . '"
407 loadmore_text="' . $loadmoreText . '"
408 avatar_size="' . $avatarSize . '"
409 order="' . $order . '"
410 orderby="' . $orderby .
411 '"]'
412 );
413
414 echo '<div class="givewp-elementor-widget give-donor-wall-shortcode-wrap">';
415
416 echo $html;
417
418 echo '</div>';
419 }
420 }
421