| 1 | <?php |
| 2 | /** |
| 3 | * BuddyPress - Members Settings Screen Notifications |
| 4 | * |
| 5 | * @since 2.6.0 |
| 6 | * |
| 7 | * @package BuddyPress |
| 8 | * @subpackage bp-legacy |
| 9 | */ |
| 10 | |
| 11 | /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ |
| 12 | do_action( 'bp_before_member_settings_template' ); ?> |
| 13 | |
| 14 | <form action="<?php echo bp_displayed_user_domain() . bp_get_settings_slug() . '/screen-notifications'; ?>" method="post" class="standard-form" id="settings-form"> |
| 15 | |
| 16 | <p><?php _e('Enable or disable on screen display of notifications.', 'buddypress'); ?></p> |
| 17 | |
| 18 | <?php |
| 19 | $components = bp_notifications_get_registered_components(); |
| 20 | |
| 21 | // Fudge xprofile component. |
| 22 | $profile = array_search( 'xprofile', $components ); |
| 23 | if ( false !== $profile ) { |
| 24 | $components[] = 'profile'; |
| 25 | unset( $components[ $profile ] ); |
| 26 | } |
| 27 | |
| 28 | sort( $components, SORT_STRING ); |
| 29 | |
| 30 | // Initialize registered notification actions. |
| 31 | bp_notifications_init_registered_actions(); |
| 32 | |
| 33 | foreach ( $components as $component ) : |
| 34 | $enabled = bp_get_user_meta( bp_loggedin_user_id(), "notifications_{$component}_enabled", true ); |
| 35 | if ( '' === $enabled ) { |
| 36 | $enabled = 1; |
| 37 | } |
| 38 | |
| 39 | $action_count = ! empty( buddypress()->notifications->actions[$component] ) ? count( buddypress()->notifications->actions[$component] ) : 0; |
| 40 | ?> |
| 41 | |
| 42 | <fieldset class="<?php echo $component; ?>"> |
| 43 | |
| 44 | <?php bp_notifications_component_settings_title( $component, 'legend' ); ?> |
| 45 | |
| 46 | <label for="<?php esc_attr_e( "{$component}-notification-enable" ); ?>"> |
| 47 | <input type="checkbox" name="<?php esc_attr_e( "{$component}[enabled]" ); ?>" data-component="<?php esc_attr_e( $component ); ?>" id="<?php esc_attr_e( "{$component}-notification-enable" ); ?>" value="1" <?php checked( $enabled, 1, true ) ?>/> |
| 48 | |
| 49 | <?php esc_html_e( 'Enable screen notifications for this component', 'buddypress' ); ?> |
| 50 | </label> |
| 51 | |
| 52 | <?php if ( ! empty( buddypress()->notifications->actions[$component] ) ) : ?> |
| 53 | |
| 54 | <table class="notification-settings" id="<?php esc_attr_e( "{$component}-screen-notification-settings" ); ?>"> |
| 55 | <thead> |
| 56 | <tr> |
| 57 | <th class="icon"> </th> |
| 58 | <th> </th> |
| 59 | <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> |
| 60 | <th class="no"><?php _e( 'No', 'buddypress' )?></th> |
| 61 | </tr> |
| 62 | </thead> |
| 63 | |
| 64 | <tbody> |
| 65 | <?php |
| 66 | foreach ( buddypress()->notifications->actions[$component] as $action => $val ) : |
| 67 | $action = sanitize_key( $action ); |
| 68 | |
| 69 | $enabled = bp_get_user_meta( bp_loggedin_user_id(), "notifications_{$component}_{$action}_enabled", true ); |
| 70 | if ( '' === $enabled ) { |
| 71 | $enabled = 1; |
| 72 | } |
| 73 | ?> |
| 74 | |
| 75 | <tr id="<?php esc_html_e( "{$component}-{$action}" ); ?>" class="<?php esc_attr_e( "{$component}-screen-notification-singular" ); ?>"> |
| 76 | <td> </td> |
| 77 | <td><?php esc_html_e( $val['settings_label' ] ); ?></td> |
| 78 | <td class="yes"><input type="radio" name="<?php esc_attr_e( "{$component}[{$action}]" ); ?>" id="<?php esc_attr_e( "{$component}-notification-{$action}-yes" ); ?>" value="1" <?php checked( $enabled, 1, true ) ?>/><label for="<?php esc_attr_e( "{$component}-notification-{$action}-yes" ); ?>" class="bp-screen-reader-text"><?php _e( 'Yes', 'buddypress' ); ?></label></td> |
| 79 | <td class="no"><input type="radio" name="<?php esc_attr_e( "{$component}[{$action}]" ); ?>" id="<?php esc_attr_e( "{$component}-notification-{$action}-no" ); ?>" value="0" <?php checked( $enabled, 0, true ) ?>/><label for="<?php esc_attr_e( "{$component}-notification-{$action}-no" ); ?>" class="bp-screen-reader-text"><?php _e( 'No', 'buddypress' ); ?></label></td> |
| 80 | </tr> |
| 81 | |
| 82 | <?php |
| 83 | endforeach; |
| 84 | ?> |
| 85 | </tbody> |
| 86 | </table> |
| 87 | |
| 88 | |
| 89 | |
| 90 | <?php endif; ?> |
| 91 | </fieldset> |
| 92 | <?php endforeach; ?> |
| 93 | |
| 94 | <script type="text/javascript"> |
| 95 | // This will be moved to bp-legacy's buddypress.js file. Or maybe not? |
| 96 | jQuery(function($){ |
| 97 | $('#settings-form input[type=checkbox]').each(function( index, elem ) { |
| 98 | toggleSettingsComponentFields( $(this) ); |
| 99 | }); |
| 100 | |
| 101 | $('#settings-form').on('click', 'input[type=checkbox]', function(e) { |
| 102 | toggleSettingsComponentFields( $(this) ); |
| 103 | }); |
| 104 | |
| 105 | function toggleSettingsComponentFields( elem ) { |
| 106 | var component = $( elem ).data( 'component' ); |
| 107 | |
| 108 | if ( elem.is(':checked') ) { |
| 109 | $('#' + component + '-screen-notification-settings').fadeIn('fast'); |
| 110 | } else { |
| 111 | $('#' + component + '-screen-notification-settings').fadeOut('fast'); |
| 112 | } |
| 113 | } |
| 114 | }); |
| 115 | </script> |
| 116 | |
| 117 | <?php |
| 118 | |
| 119 | /** |
| 120 | * Fires before the display of the submit button for user notification saving. |
| 121 | * |
| 122 | * @since 2.6.0 |
| 123 | */ |
| 124 | do_action( 'bp_members_screen_notification_settings_before_submit' ); ?> |
| 125 | |
| 126 | <div class="submit"> |
| 127 | <input type="submit" name="screen-notifications-submit" value="<?php esc_attr_e( 'Save Changes', 'buddypress' ); ?>" id="submit" class="auto" /> |
| 128 | </div> |
| 129 | |
| 130 | <?php |
| 131 | |
| 132 | /** |
| 133 | * Fires after the display of the submit button for user notification saving. |
| 134 | * |
| 135 | * @since 2.6.0 |
| 136 | */ |
| 137 | do_action( 'bp_members_screen_notification_settings_after_submit' ); ?> |
| 138 | |
| 139 | <?php wp_nonce_field( 'bp_settings_screen_notifications' ); ?> |
| 140 | |
| 141 | </form> |
| 142 | |
| 143 | <?php |
| 144 | |
| 145 | /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ |
| 146 | do_action( 'bp_after_member_settings_template' ); |