Gerbera.php
184 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\Themes\DragDrop\MemberDirectory; |
| 4 | |
| 5 | use ProfilePress\Core\Admin\SettingsPages\DragDropBuilder\DragDropBuilder; |
| 6 | use ProfilePress\Core\ShortcodeParser\Builder\FrontendProfileBuilder; |
| 7 | use ProfilePress\Core\Themes\DragDrop\AbstractMemberDirectoryTheme; |
| 8 | use ProfilePress\Core\Admin\SettingsPages\DragDropBuilder\Fields; |
| 9 | |
| 10 | class Gerbera extends AbstractMemberDirectoryTheme |
| 11 | { |
| 12 | public static function default_field_listing() |
| 13 | { |
| 14 | Fields\Init::init(); |
| 15 | $standard_fields = DragDropBuilder::get_instance()->standard_fields(); |
| 16 | |
| 17 | return [ |
| 18 | $standard_fields['profile-display-name'], |
| 19 | $standard_fields['profile-bio'], |
| 20 | ]; |
| 21 | } |
| 22 | |
| 23 | public function default_metabox_settings() |
| 24 | { |
| 25 | $data = parent::default_metabox_settings(); |
| 26 | $data['ppress_md_gerbera_profile_picture'] = 'true'; |
| 27 | $data['ppress_md_gerbera_cover_image'] = 'true'; |
| 28 | $data['ppress_md_gerbera_text_color'] = '#999999'; |
| 29 | $data['ppress_md_gerbera_display_name_color'] = '#444444'; |
| 30 | $data['ppress_md_gerbera_avatar_border_color'] = '#ffffff'; |
| 31 | $data['ppress_md_gerbera_background_color'] = '#ffffff'; |
| 32 | $data['ppress_md_gerbera_border_color'] = '#dddddd'; |
| 33 | |
| 34 | return $data; |
| 35 | } |
| 36 | |
| 37 | public function appearance_settings($settings) |
| 38 | { |
| 39 | $settings = parent::appearance_settings($settings); |
| 40 | |
| 41 | $settings[] = [ |
| 42 | 'id' => 'ppress_md_gerbera_profile_picture', |
| 43 | 'type' => 'checkbox', |
| 44 | 'label' => esc_html__('Enable Profile Picture', 'wp-user-avatar'), |
| 45 | 'priority' => 15 |
| 46 | ]; |
| 47 | |
| 48 | return $settings; |
| 49 | } |
| 50 | |
| 51 | public function metabox_settings($settings, $form_type, $DragDropBuilderInstance) |
| 52 | { |
| 53 | $appearance_settings = $settings['appearance']; |
| 54 | |
| 55 | unset($settings['appearance']); |
| 56 | |
| 57 | $new_settings['appearance'] = $appearance_settings; |
| 58 | |
| 59 | $new_settings = array_merge($new_settings, parent::metabox_settings($settings, $form_type, $DragDropBuilderInstance)); |
| 60 | |
| 61 | return array_merge($new_settings, $settings); |
| 62 | } |
| 63 | |
| 64 | public function form_wrapper_class() |
| 65 | { |
| 66 | return 'pppress_md_gerbera'; |
| 67 | } |
| 68 | |
| 69 | /** |
| 70 | * @return false|string|void |
| 71 | */ |
| 72 | public function directory_structure() |
| 73 | { |
| 74 | global $ppress_frontend_profile_user_obj; |
| 75 | |
| 76 | $wp_user_query = $this->wp_user_query(); |
| 77 | |
| 78 | $profile_picture_enabled = $this->get_meta('ppress_md_gerbera_profile_picture') == 'true'; |
| 79 | |
| 80 | echo '<div class="pppress_md_gerbera_members">'; |
| 81 | |
| 82 | /** @var \WP_User $user */ |
| 83 | foreach ($wp_user_query['users'] as $user) : |
| 84 | |
| 85 | $ppress_frontend_profile_user_obj = $user; |
| 86 | |
| 87 | new FrontendProfileBuilder($user); |
| 88 | |
| 89 | $profile_url = ppress_get_frontend_profile_url($user->ID); |
| 90 | |
| 91 | // important we parse immediately because FrontendProfileBuilder resets for every user. |
| 92 | $display_name = do_shortcode('[profile-display-name]', true); |
| 93 | |
| 94 | $user_roles_class = implode(' ', (array) $user->roles); |
| 95 | ?> |
| 96 | |
| 97 | <div class="pppress_md_gerbera_members-item <?php echo $user_roles_class; ?>"> |
| 98 | |
| 99 | <?php if ($profile_picture_enabled) : ?> |
| 100 | <div class="pppress_md_gerbera_members_avatar"> |
| 101 | <a href="<?= esc_url($profile_url) ?>" title="<?= esc_attr($display_name) ?>"> |
| 102 | [pp-user-avatar user="<?= $user->ID ?>" size=256] |
| 103 | </a> |
| 104 | </div> |
| 105 | <?php endif; ?> |
| 106 | |
| 107 | <?php echo $this->directory_listing($user->ID)->forge()->output(); ?> |
| 108 | </div> |
| 109 | |
| 110 | <?php endforeach; |
| 111 | |
| 112 | echo '</div>'; |
| 113 | } |
| 114 | |
| 115 | public function form_css() |
| 116 | { |
| 117 | $form_id = $this->form_id; |
| 118 | $form_type = $this->form_type; |
| 119 | |
| 120 | return parent::form_css() . <<<CSS |
| 121 | #pp-$form_type-$form_id.ppress-md-default * { |
| 122 | -webkit-box-sizing: border-box; |
| 123 | -moz-box-sizing: border-box; |
| 124 | box-sizing: border-box; |
| 125 | -webkit-font-smoothing: antialiased !important; |
| 126 | -moz-osx-font-smoothing: grayscale !important; |
| 127 | } |
| 128 | |
| 129 | .pppress_md_gerbera_members { |
| 130 | grid-template-columns: 1fr 1fr 1fr 1fr; |
| 131 | display: grid; |
| 132 | grid-column-gap: 2rem; |
| 133 | grid-row-gap: 5rem; |
| 134 | text-align: center; |
| 135 | } |
| 136 | |
| 137 | .ppressui960 .pppress_md_gerbera_members { |
| 138 | grid-template-columns: 1fr 1fr 1fr; |
| 139 | } |
| 140 | |
| 141 | .ppressui800 .pppress_md_gerbera_members { |
| 142 | grid-template-columns: 1fr 1fr; |
| 143 | } |
| 144 | |
| 145 | .ppressui500 .pppress_md_gerbera_members, |
| 146 | .ppressui340 .pppress_md_gerbera_members { |
| 147 | grid-template-columns: 1fr; |
| 148 | } |
| 149 | |
| 150 | .pppress_md_gerbera_members-item { |
| 151 | word-break: break-word; |
| 152 | } |
| 153 | |
| 154 | .pppress_md_gerbera_members_avatar img { |
| 155 | border-radius: 50%; |
| 156 | width: 200px; |
| 157 | height: auto; |
| 158 | } |
| 159 | |
| 160 | .ppress-md-profile-item-wrap.profile-display-name { |
| 161 | font-size: 18px; |
| 162 | font-weight: 700; |
| 163 | } |
| 164 | |
| 165 | .ppress-md-profile-item-wrap { |
| 166 | margin: 0 0 5px; |
| 167 | line-height: 26px; |
| 168 | } |
| 169 | |
| 170 | .pppress_md_gerbera_members_avatar { |
| 171 | margin: 0 0 10px; |
| 172 | } |
| 173 | |
| 174 | .ppress-md-profile-item-wrap *, |
| 175 | .ppress-md-profile-item-title { |
| 176 | display: inline; |
| 177 | } |
| 178 | .ppress-md-profile-item-title { |
| 179 | font-weight: bold; |
| 180 | } |
| 181 | |
| 182 | CSS; |
| 183 | } |
| 184 | } |