Skip to:
Content

bbPress.org


Ignore:
Timestamp:
03/29/2018 06:03:12 PM (6 years ago)
Author:
johnjamesjacoby
Message:

Admin: improve topic/reply row-action UX.

This change includes more improvements to how topics and replies are toggled from an admin area list-table:

  • Move "Empty Spam" buttons to their own actions div
  • Allow spam/trash/approve/unapprove from any other status, so topics/replies can be more freely moved around
  • Add public/non-public functions for replies to match topics

See #1799.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/topics.php

    r6790 r6791  
    8484        add_filter( 'restrict_manage_posts', array( $this, 'filter_dropdown'  ) );
    8585        add_filter( 'bbp_request',           array( $this, 'filter_post_rows' ) );
     86
     87        // Empty spam
     88        add_filter( 'manage_posts_extra_tablenav', array( $this, 'filter_empty_spam' ) );
    8689
    8790        // Contextual Help
     
    589592                check_admin_referer( 'approve-topic_' . $topic_id );
    590593
    591                 $is_approve = bbp_is_topic_published( $topic_id );
    592                 $message    = ( false === $is_approve )
     594                $is_approve = bbp_is_topic_public( $topic_id );
     595                $message    = ( true === $is_approve )
    593596                    ? 'unapproved'
    594597                    : 'approved';
    595                 $success    = ( false === $is_approve )
    596                     ? bbp_approve_topic( $topic_id )
    597                     : bbp_unapprove_topic( $topic_id );
     598                $success    = ( true === $is_approve )
     599                    ? bbp_unapprove_topic( $topic_id )
     600                    : bbp_approve_topic( $topic_id );
    598601
    599602                break;
     
    979982            // Show the 'approve' and 'view' link on pending posts only and 'unapprove' on published posts only
    980983            $approve_uri = wp_nonce_url( add_query_arg( array( 'topic_id' => $topic->ID, 'action' => 'bbp_toggle_topic_approve' ), remove_query_arg( array( 'bbp_topic_toggle_notice', 'topic_id', 'failed', 'super' ) ) ), 'approve-topic_' . $topic->ID );
    981             if ( bbp_is_topic_published( $topic->ID ) ) {
     984            if ( bbp_is_topic_public( $topic->ID ) ) {
    982985                $actions['unapproved'] = '<a href="' . esc_url( $approve_uri ) . '" title="' . esc_attr__( 'Unapprove this topic', 'bbpress' ) . '">' . _x( 'Unapprove', 'Unapprove Topic', 'bbpress' ) . '</a>';
    983             } elseif ( ! bbp_is_topic_private( $topic->ID ) ) {
    984                 $actions['approved']   = '<a href="' . esc_url( $approve_uri ) . '" title="' . esc_attr__( 'Approve this topic',   'bbpress' ) . '">' . _x( 'Approve',   'Approve Topic',   'bbpress' ) . '</a>';
    985                 $actions['view']       = '<a href="' . esc_url( $view_link   ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;', 'bbpress' ), bbp_get_topic_title( $topic->ID ) ) ) . '" rel="permalink">' . esc_html__( 'View', 'bbpress' ) . '</a>';
     986            } else {
     987
     988                // Do not show 'approve' if already public
     989                if ( ! bbp_is_topic_public( $topic->ID ) ) {
     990                    $actions['approved'] = '<a href="' . esc_url( $approve_uri ) . '" title="' . esc_attr__( 'Approve this topic',   'bbpress' ) . '">' . _x( 'Approve',   'Approve Topic',   'bbpress' ) . '</a>';
     991                }
     992
     993                // Modify the view link
     994                $actions['view'] = '<a href="' . esc_url( $view_link   ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;', 'bbpress' ), bbp_get_topic_title( $topic->ID ) ) ) . '" rel="permalink">' . esc_html__( 'View', 'bbpress' ) . '</a>';
    986995            }
    987996
     
    9981007
    9991008            // Sticky
    1000             // Dont show sticky if topic links is spam, trash or pending
     1009            // Dont show sticky if topic is spam, trash or pending
    10011010            if ( ! bbp_is_topic_spam( $topic->ID ) && ! bbp_is_topic_trash( $topic->ID ) && ! bbp_is_topic_pending( $topic->ID ) ) {
    10021011                $stick_uri = wp_nonce_url( add_query_arg( array( 'topic_id' => $topic->ID, 'action' => 'bbp_toggle_topic_stick' ), remove_query_arg( array( 'bbp_topic_toggle_notice', 'topic_id', 'failed', 'super' ) ) ), 'stick-topic_'  . $topic->ID );
     
    10111020            // Spam
    10121021            $spam_uri = wp_nonce_url( add_query_arg( array( 'topic_id' => $topic->ID, 'action' => 'bbp_toggle_topic_spam' ), remove_query_arg( array( 'bbp_topic_toggle_notice', 'topic_id', 'failed', 'super' ) ) ), 'spam-topic_'  . $topic->ID );
    1013             if ( bbp_is_topic_spam( $topic->ID ) ) {
     1022            if ( ! bbp_is_topic_spam( $topic->ID ) ) {
     1023                $actions['spam'] = '<a href="' . esc_url( $spam_uri ) . '" title="' . esc_attr__( 'Mark this topic as spam',    'bbpress' ) . '">' . esc_html__( 'Spam',     'bbpress' ) . '</a>';
     1024            } else {
    10141025                $actions['unspam'] = '<a href="' . esc_url( $spam_uri ) . '" title="' . esc_attr__( 'Mark the topic as not spam', 'bbpress' ) . '">' . esc_html__( 'Not Spam', 'bbpress' ) . '</a>';
    1015             } else {
    1016                 $actions['spam'] = '<a href="' . esc_url( $spam_uri ) . '" title="' . esc_attr__( 'Mark this topic as spam',    'bbpress' ) . '">' . esc_html__( 'Spam',     'bbpress' ) . '</a>';
    10171026            }
    10181027        }
     
    10311040            if ( ( bbp_get_trash_status_id() === $topic->post_status ) || empty( $trash_days ) ) {
    10321041                $actions['delete'] = "<a class='submitdelete' title='" . esc_attr__( 'Delete this item permanently', 'bbpress' ) . "' href='" . esc_url( get_delete_post_link( $topic->ID, '', true ) ) . "'>" . esc_html__( 'Delete Permanently', 'bbpress' ) . "</a>";
    1033             } elseif ( bbp_get_spam_status_id() === $topic->post_status ) {
    1034                 unset( $actions['trash'] );
    10351042            }
    10361043        }
     
    10781085    public function filter_dropdown() {
    10791086
    1080         // Add "Empty Spam" button for moderators
    1081         if ( ! empty( $_GET['post_status'] ) && ( bbp_get_spam_status_id() === $_GET['post_status'] ) && current_user_can( 'moderate' ) ) {
     1087        // Get which forum is selected
     1088        $selected = ! empty( $_GET['bbp_forum_id'] )
     1089            ? (int) $_GET['bbp_forum_id']
     1090            : 0;
     1091
     1092        // Show the forums dropdown
     1093        bbp_dropdown( array(
     1094            'selected'  => $selected,
     1095            'show_none' => esc_html__( 'In all forums', 'bbpress' )
     1096        ) );
     1097    }
     1098
     1099    /**
     1100     * Add "Empty Spam" button for moderators
     1101     *
     1102     * @since 2.6.0 bbPress (r6791)
     1103     */
     1104    public function filter_empty_spam() {
     1105
     1106        // Bail if not viewing spam
     1107        if ( empty( $_GET['post_status'] ) || ( bbp_get_spam_status_id() !== $_GET['post_status'] ) && current_user_can( 'moderate' ) ) {
     1108            return;
     1109        }
     1110
     1111        ?>
     1112
     1113        <div class="alignleft actions"><?php
     1114
     1115            // Output the nonce & button
    10821116            wp_nonce_field( 'bulk-destroy', '_destroy_nonce' );
    10831117            submit_button(
     
    10871121                false
    10881122            );
    1089         }
    1090 
    1091         // Get which forum is selected
    1092         $selected = ! empty( $_GET['bbp_forum_id'] )
    1093             ? (int) $_GET['bbp_forum_id']
    1094             : 0;
    1095 
    1096         // Show the forums dropdown
    1097         bbp_dropdown( array(
    1098             'selected'  => $selected,
    1099             'show_none' => esc_html__( 'In all forums', 'bbpress' )
    1100         ) );
     1123
     1124        ?></div><?php
    11011125    }
    11021126
Note: See TracChangeset for help on using the changeset viewer.