PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Themes / DragDrop / MemberDirectory / DefaultTemplate.php
wp-user-avatar / src / Themes / DragDrop / MemberDirectory Last commit date
DefaultTemplate.php 7 months ago Gerbera.php 7 months ago
DefaultTemplate.php
410 lines
1 <?php
2
3 namespace ProfilePress\Core\Themes\DragDrop\MemberDirectory;
4
5 use ProfilePress\Core\Admin\SettingsPages\DragDropBuilder\DragDropBuilder;
6 use ProfilePress\Core\Classes\ExtensionManager as EM;
7 use ProfilePress\Core\ShortcodeParser\Builder\FrontendProfileBuilder;
8 use ProfilePress\Core\Themes\DragDrop\AbstractMemberDirectoryTheme;
9 use ProfilePress\Core\Admin\SettingsPages\DragDropBuilder\Fields;
10
11 class DefaultTemplate extends AbstractMemberDirectoryTheme
12 {
13 public static function default_field_listing()
14 {
15 Fields\Init::init();
16 $standard_fields = DragDropBuilder::get_instance()->standard_fields();
17
18 return [
19 $standard_fields['profile-display-name'],
20 $standard_fields['profile-bio'],
21 ];
22 }
23
24 public function default_metabox_settings()
25 {
26 $data = parent::default_metabox_settings();
27 $data['ppress_md_default_profile_picture'] = 'true';
28 $data['ppress_md_default_cover_image'] = 'true';
29 $data['ppress_md_default_social_icons'] = 'true';
30 $data['ppress_md_default_text_color'] = '#999999';
31 $data['ppress_md_default_display_name_color'] = '#444444';
32 $data['ppress_md_default_avatar_border_color'] = '#ffffff';
33 $data['ppress_md_default_background_color'] = '#ffffff';
34 $data['ppress_md_default_border_color'] = '#dddddd';
35
36 return $data;
37 }
38
39 public function appearance_settings($settings)
40 {
41 $settings = parent::appearance_settings($settings);
42
43 $settings[] = [
44 'id' => 'ppress_md_default_profile_picture',
45 'type' => 'checkbox',
46 'label' => esc_html__('Enable Profile Picture', 'wp-user-avatar'),
47 'priority' => 15
48 ];
49
50 $settings[] = [
51 'id' => 'ppress_md_default_cover_image',
52 'type' => 'checkbox',
53 'label' => esc_html__('Enable Cover Photo', 'wp-user-avatar'),
54 'priority' => 20
55 ];
56
57
58 if (EM::is_enabled(EM::CUSTOM_FIELDS)) {
59 $settings[] = [
60 'id' => 'ppress_md_default_social_icons',
61 'type' => 'checkbox',
62 'label' => esc_html__('Enable Social Connect Icons', 'wp-user-avatar'),
63 'priority' => 30
64 ];
65 } else {
66 $upgrade_url = 'https://profilepress.com/pricing/?utm_source=wp_dashboard&utm_medium=upgrade&utm_campaign=md_social_connect_icons';
67 $settings[] = [
68 'id' => 'ppress_md_default_social_icons_upsell',
69 'label' => '',
70 'type' => 'custom',
71 'content' => sprintf(
72 esc_html__('%sUpgrade to ProfilePress premium%s if you don\'t have the custom field addon to display social profile icons of users.', 'wp-user-avatar'),
73 '<a href="' . $upgrade_url . '" target="_blank">', '</a>'
74 ),
75 ];
76 }
77
78 return $settings;
79 }
80
81 public function metabox_settings($settings, $form_type, $DragDropBuilderInstance)
82 {
83 $appearance_settings = $settings['appearance'];
84
85 unset($settings['appearance']);
86
87 $new_settings['appearance'] = $appearance_settings;
88
89 $new_settings = array_merge($new_settings, parent::metabox_settings($settings, $form_type, $DragDropBuilderInstance));
90
91 return array_merge($new_settings, $settings);
92 }
93
94 public function color_settings($settings)
95 {
96 $settings2 = array_merge(parent::color_settings($settings), [
97 [
98 'id' => 'ppress_md_default_background_color',
99 'type' => 'color',
100 'label' => esc_html__('Card Background', 'wp-user-avatar')
101 ],
102 [
103 'id' => 'ppress_md_default_border_color',
104 'type' => 'color',
105 'label' => esc_html__('Card Border', 'wp-user-avatar')
106 ],
107 [
108 'id' => 'ppress_md_default_text_color',
109 'type' => 'color',
110 'label' => esc_html__('Card Text', 'wp-user-avatar')
111 ],
112 [
113 'id' => 'ppress_md_default_display_name_color',
114 'type' => 'color',
115 'label' => esc_html__('Display Name', 'wp-user-avatar')
116 ],
117 [
118 'id' => 'ppress_md_default_avatar_border_color',
119 'type' => 'color',
120 'label' => esc_html__('Profile Picture Border', 'wp-user-avatar')
121 ]
122 ]);
123
124 return array_merge($settings, $settings2);
125 }
126
127 public function form_wrapper_class()
128 {
129 return 'ppress-md-default';
130 }
131
132 /**
133 * @return false|string|void
134 */
135 public function directory_structure()
136 {
137 global $ppress_frontend_profile_user_obj;
138
139 $wp_user_query = $this->wp_user_query();
140
141 $profile_picture_enabled = $this->get_meta('ppress_md_default_profile_picture') == 'true';
142
143 $cover_image_enabled = $this->get_meta('ppress_md_default_cover_image') == 'true';
144
145 $social_icons_enabled = $this->get_meta('ppress_md_default_social_icons') == 'true';
146
147 ?>
148 <div class="ppmd-members-wrap<?= ! $profile_picture_enabled ? ' ppmd-no-photo' : ''; ?><?= ! $cover_image_enabled ? ' ppmd-no-cover' : ''; ?>">
149
150 <div class="ppmd-member-gutter"></div>
151
152 <?php
153 /** @var \WP_User $user */
154 foreach ($wp_user_query['users'] as $user) :
155
156 $ppress_frontend_profile_user_obj = $user;
157
158 new FrontendProfileBuilder($user);
159
160 $profile_url = ppress_get_frontend_profile_url($user->ID);
161
162 $cover_image = ppress_get_cover_image_url($user->ID);
163 // important we parse immediately because FrontendProfileBuilder resets for every user.
164 $display_name = do_shortcode('[profile-display-name]', true);
165
166 $social_profile_icons = $this->social_profile_icons();
167
168 $user_roles_class = implode(' ', (array)$user->roles);
169 ?>
170
171 <div class="ppmd-member-wrap <?php echo $user_roles_class; ?>">
172 <?php if ($cover_image_enabled) : ?>
173 <div class="ppmd-member-cover">
174 <div class="ppress-md-member-cover-e">
175 <a href="<?= esc_url($profile_url) ?>">
176 <?php if ( ! empty($cover_image)) : ?>
177 <?= sprintf('<img src="%s" alt="%s">', $cover_image, esc_attr($display_name)); ?>
178 <?php endif; ?>
179 </a>
180 </div>
181 </div>
182 <?php endif; ?>
183
184 <?php if ($profile_picture_enabled) : ?>
185 <div class="ppmd-member-photo">
186 <a href="<?= esc_url($profile_url) ?>">
187 [pp-user-avatar user="<?= $user->ID ?>" size=40 original=true]
188 </a>
189 </div>
190 <?php endif; ?>
191
192 <div class="ppmd-member-card">
193 <?php echo $this->directory_listing($user->ID)->forge()->output(); ?>
194
195 <?php if ($social_icons_enabled === true && $social_profile_icons !== false) : ?>
196 <div class="ppress-md-member-meta-main">
197 <div class="ppress-md-member-meta">
198 <div class="ppress-md-member-connect">
199 <?php echo $social_profile_icons ?>
200 </div>
201 </div>
202 </div>
203 <?php endif; ?>
204 </div>
205 </div>
206 <?php endforeach; ?>
207 </div>
208 <?php
209 }
210
211 public function form_css()
212 {
213 $form_id = $this->form_id;
214 $form_type = $this->form_type;
215
216 $card_text_color = esc_html($this->get_meta('ppress_md_default_text_color'));
217 $card_display_name_color = esc_html($this->get_meta('ppress_md_default_display_name_color'));
218 $card_avatar_border_color = esc_html($this->get_meta('ppress_md_default_avatar_border_color'));
219 $card_bg_color = esc_html($this->get_meta('ppress_md_default_background_color'));
220 $card_border_color = esc_html($this->get_meta('ppress_md_default_border_color'));
221 $card_social_profile_border_color = $card_border_color == '#dddddd' ? '#e5e5e5' : $card_border_color;
222
223 return parent::form_css() . <<<CSS
224 #pp-$form_type-$form_id.ppress-md-default * {
225 -webkit-box-sizing: border-box;
226 -moz-box-sizing: border-box;
227 box-sizing: border-box;
228 -webkit-font-smoothing: antialiased !important;
229 -moz-osx-font-smoothing: grayscale !important;
230 }
231
232 #pp-$form_type-$form_id.ppress-md-default a {
233 text-decoration: none !important;
234 border-bottom: none !important;
235 box-shadow: none !important;
236 border-bottom: 0 !important;
237 }
238
239 #pp-$form_type-$form_id.ppress-md-default .ppmd-members-wrap {
240 width: 100%;
241 margin: 0 0 10px 0;
242 padding: 0;
243 }
244
245 /* (32% x 3) + (2%) = ~100 */
246 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-gutter {
247 width: 2%;
248 }
249
250 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-wrap {
251 background: $card_bg_color;
252 text-align: center;
253 margin-bottom: 40px;
254 border: 1px solid $card_border_color;
255 width: 32%;
256 }
257
258 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui960 .ppmd-member-wrap,
259 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui800 .ppmd-member-wrap
260 {
261 width: 48%;
262 }
263
264 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui960 .ppmd-member-gutter,
265 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui800 .ppmd-member-gutter {
266 width: 4%;
267 }
268
269 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui500 .ppmd-member-gutter,
270 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui340 .ppmd-member-gutter {
271 width: 0;
272 }
273
274 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui500 .ppmd-member-wrap,
275 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui340 .ppmd-member-wrap {
276 width: 100%;
277 }
278
279 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui960 .ppmd-member-wrap {
280 width: 48%;
281 }
282
283 #pp-$form_type-$form_id.ppress-md-default.pp-member-directory.ppressui960 .ppmd-member-gutter {
284 width: 4%;
285 }
286
287 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-cover {
288 height: 170px;
289 background-color: #eee;
290 box-sizing: border-box;
291 position: relative;
292 }
293
294 #pp-$form_type-$form_id.ppress-md-default .ppress-md-profile-item-wrap {
295 margin: 0 0 5px;
296 font-size: 14px;
297 padding: 10px 15px 0;
298 line-height: 16px;
299 }
300
301 #pp-$form_type-$form_id.ppress-md-default .ppress-md-profile-item-wrap:nth-child(2) {
302 padding-top: 0;
303 padding-bottom: 0;
304 }
305
306 #pp-$form_type-$form_id.ppress-md-default .ppress-md-profile-item-wrap.profile-display-name a {
307 line-height: 26px;
308 color: $card_display_name_color;
309 font-weight: 700;
310 font-size: 16px;
311 }
312
313 #pp-$form_type-$form_id.ppress-md-default .ppress-md-profile-item-title {
314 font-weight: bold;
315 display: block;
316 }
317
318 #pp-$form_type-$form_id.ppress-md-default .ppress-md-member-cover-e {
319 text-align: center;
320 box-sizing: border-box;
321 }
322
323 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-photo {
324 padding: 0 0 20px 0;
325 text-align: center;
326 }
327
328 #pp-$form_type-$form_id.ppress-md-default .ppmd-no-cover .ppmd-member-photo {
329 padding-top: 30px;
330 }
331
332 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-photo a {
333 text-decoration: none;
334 box-shadow: none !important;
335 display: inline !important;
336 }
337
338 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-photo a img {
339 display: inline;
340 border: 5px solid $card_avatar_border_color;
341 background: $card_avatar_border_color;
342 border-radius: 100%;
343 width: 90px;
344 height: 90px;
345 position: relative;
346 top: -35px;
347 margin-bottom: -45px;
348 float: none;
349 }
350
351 #pp-$form_type-$form_id.ppress-md-default .ppmd-no-cover .ppmd-member-photo a img {
352 top: auto;
353 margin-bottom: 0;
354 width: 140px;
355 height: 140px;
356 }
357
358 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-card {
359 padding: 0;
360 padding-bottom: 15px;
361 color: $card_text_color;
362 }
363
364 #pp-$form_type-$form_id.ppress-md-default .ppmd-no-photo .ppmd-member-card {
365 padding-top: 15px;
366 }
367
368 #pp-$form_type-$form_id.ppress-md-default .ppmd-no-cover .ppmd-member-card {
369 padding-bottom: 30px;
370 }
371
372 #pp-$form_type-$form_id.ppress-md-default .ppress-md-member-cover-e img {
373 width: 100%;
374 height: 170px;
375 box-shadow: none;
376 overflow: hidden;
377 -moz-border-radius: 0;
378 -webkit-border-radius: 0;
379 border-radius: 0;
380 margin: 0;
381 padding: 0;
382 }
383
384 #pp-$form_type-$form_id.ppress-md-default .ppmd-member-name {
385 margin: 0 0 4px 0;
386 justify-content: center;
387 }
388
389 #pp-$form_type-$form_id.ppress-md-default .ppress-md-member-meta {
390 margin: 20px 15px 0 15px;
391 padding: 15px 0 0;
392 border-top: 1px solid $card_social_profile_border_color;
393 }
394
395 #pp-$form_type-$form_id.ppress-md-default .ppress-md-member-connect a {
396 display: inline-block;
397 width: 40px;
398 line-height: 40px;
399 height: 40px;
400 opacity: 0.85;
401 margin: 0 1px;
402 transition: 0.25s;
403 }
404
405 #pp-$form_type-$form_id.ppress-md-default .ppress-pf-profile-connect {
406 padding-bottom: 0;
407 }
408 CSS;
409 }
410 }