Changeset 2668
- Timestamp:
- 12/03/2010 08:03:43 AM (14 years ago)
- Location:
- branches/plugin
- Files:
-
- 9 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/plugin/bbp-admin/bbp-functions.php
r2652 r2668 38 38 function bbp_recount_list () { 39 39 $recount_list = array( 40 5 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_recount_forum_topics' ), 41 10 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_recount_forum_replies' ), 42 15 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_recount_topic_replies' ), 43 20 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_recount_topic_voices' ), 44 25 => array( 'bbp-topic-trashed-replies', __( 'Count trashed replies in each topic', 'bbpress' ), 'bbp_recount_topic_trashed_replies' ), 45 30 => array( 'bbp-topics-replied', __( 'Count replies for each user', 'bbpress' ), 'bbp_recount_user_topics_replied' ), 46 35 => array( 'bbp-clean-favorites', __( 'Remove deleted topics from user favorites', 'bbpress' ), 'bbp_recount_clean_favorites' ) 47 //40 => array( 'bbp-topic-tag-count', __( 'Count tags for every topic', 'bbpress' ), 'bbp_recount_topic_tags' ), 48 //45 => array( 'bbp-tags-tag-count', __( 'Count topics for every tag', 'bbpress' ), 'bbp_recount_tag_topics' ), 49 //50 => array( 'bbp-tags-delete-empty', __( 'Delete tags with no topics', 'bbpress' ), 'bbp_recount_tag_delete_empty' ) 40 5 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_recount_forum_topics' ), 41 10 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_recount_forum_replies' ), 42 15 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_recount_topic_replies' ), 43 20 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_recount_topic_voices' ), 44 25 => array( 'bbp-topic-trashed-replies', __( 'Count trashed replies in each topic', 'bbpress' ), 'bbp_recount_topic_trashed_replies' ), 45 30 => array( 'bbp-topics-replied', __( 'Count replies for each user', 'bbpress' ), 'bbp_recount_user_topics_replied' ), 46 35 => array( 'bbp-clean-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_recount_clean_favorites' ), 47 40 => array( 'bbp-clean-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_recount_clean_subscriptions' ) 48 //45 => array( 'bbp-topic-tag-count', __( 'Count tags for every topic', 'bbpress' ), 'bbp_recount_topic_tags' ), 49 //50 => array( 'bbp-tags-tag-count', __( 'Count topics for every tag', 'bbpress' ), 'bbp_recount_tag_topics' ), 50 //55 => array( 'bbp-tags-delete-empty', __( 'Delete tags with no topics', 'bbpress' ), 'bbp_recount_tag_delete_empty' ) 50 51 ); 51 52 … … 449 450 global $wpdb, $bbp; 450 451 451 $statement = __( 'Removing deleted topics from user favorites… %s', 'bbpress' );452 $statement = __( 'Removing trashed topics from user favorites… %s', 'bbpress' ); 452 453 $result = __( 'Failed!', 'bbpress' ); 453 454 … … 495 496 } 496 497 498 function bbp_recount_clean_subscriptions () { 499 global $wpdb, $bbp; 500 501 $statement = __( 'Removing trashed topics from user subscriptions… %s', 'bbpress' ); 502 $result = __( 'Failed!', 'bbpress' ); 503 504 $users = $wpdb->get_results( "SELECT `user_id`, `meta_value` AS `subscriptions` FROM `$wpdb->usermeta` WHERE `meta_key` = '_bbp_subscriptions';" ); 505 if ( is_wp_error( $users ) ) 506 return array( 1, sprintf( $statement, $result ) ); 507 508 $topics = $wpdb->get_col( "SELECT `ID` FROM `$wpdb->posts` WHERE `post_type` = '$bbp->topic_id' AND `post_status` = 'publish';" ); 509 if ( is_wp_error( $topics ) ) 510 return array( 2, sprintf( $statement, $result ) ); 511 512 $values = array(); 513 foreach ( $users as $user ) { 514 if ( empty( $user->subscriptions ) || !is_string( $user->subscriptions ) ) 515 continue; 516 517 $subscriptions = array_intersect( $topics, (array) explode( ',', $user->subscriptions ) ); 518 if ( empty( $subscriptions ) || !is_array( $subscriptions ) ) 519 continue; 520 521 $subscriptions = join( ',', $subscriptions ); 522 $values[] = "('$user->user_id', '_bbp_subscriptions', '$subscriptions')"; 523 } 524 525 if ( !count( $values ) ) { 526 $result = __( 'Nothing to remove!', 'bbpress' ); 527 return array( 0, sprintf( $statement, $result ) ); 528 } 529 530 $sql_delete = "DELETE FROM `$wpdb->usermeta` WHERE `meta_key` = '_bbp_subscriptions';"; 531 if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) 532 return array( 4, sprintf( $statement, $result ) ); 533 534 $values = array_chunk( $values, 10000 ); 535 foreach ( $values as $chunk ) { 536 $chunk = "\n" . join( ",\n", $chunk ); 537 $sql_insert = "INSERT INTO `$wpdb->usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES $chunk;"; 538 if ( is_wp_error( $wpdb->query( $sql_insert ) ) ) 539 return array( 5, sprintf( $statement, $result ) ); 540 } 541 542 $result = __( 'Complete!', 'bbpress' ); 543 return array( 0, sprintf( $statement, $result ) ); 544 } 545 497 546 ?> -
branches/plugin/bbp-admin/bbp-settings.php
r2643 r2668 3 3 function bbp_admin_settings () { 4 4 5 if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) ) { 6 check_admin_referer( 'bbpress' ); 5 if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && !empty( $_POST['action'] ) && $_POST['action'] == '_bbp_update_settings' ) { 6 check_admin_referer( '_bbp_settings' ); 7 8 $options = array( '_bbp_edit_lock' => 'int', '_bbp_throttle_time' => 'int', '_bbp_enable_subscriptions' => 'bool' ); 9 foreach ( array_keys( $options ) as $option ) { 10 $$option = trim( @$_POST[$option] ); 11 switch ( $options[$option] ) { 12 case 'int': 13 $$option = intval( $$option ); 14 break; 15 case 'bool': 16 $$option = intval( $$option ) == 0 ? false : true; 17 break; 18 case 'text': 19 case 'default': 20 $$option = esc_attr( $$option ); 21 break; 22 } 23 update_option( $option, $$option ); 24 } 25 26 bbp_admin_notices( __( 'Options successfully saved!' ) ); 7 27 } ?> 8 28 … … 14 34 <h2><?php _e( 'bbPress Settings', 'bbpress' ) ?></h2> 15 35 16 <form name="form1" method="post" action="options.php">36 <form name="form1" method="post"> 17 37 18 38 <table class="form-table"> 19 39 <tr valign="top"> 20 40 <th scope="row"><label for="_bbp_edit_lock"><?php _e( 'Lock post editing after', 'bbpress' ); ?></label></th> 21 <td> 22 <input name="_bbp_edit_lock" type="text" id="posts_per_page" value="<?php form_option( '_bbp_edit_lock' ); ?>" class="small-text" /> <?php _e( 'minutes', 'bbpress' ); ?> 23 </td> 41 <td><input name="_bbp_edit_lock" type="text" id="posts_per_page" value="<?php form_option( '_bbp_edit_lock' ); ?>" class="small-text" /> <?php _e( 'minutes', 'bbpress' ); ?></td> 24 42 </tr> 25 43 26 44 <tr valign="top"> 27 <th scope="row"><label for="_bbp_throttle_time"><?php _e( 'Throttle time' ); ?></label></th>45 <th scope="row"><label for="_bbp_throttle_time"><?php _e( 'Throttle time', 'bbpress' ); ?></label></th> 28 46 <td><input name="_bbp_throttle_time" type="text" id="posts_per_rss" value="<?php form_option( '_bbp_throttle_time' ); ?>" class="small-text" /> <?php _e( 'seconds', 'bbpress' ); ?></td> 47 </tr> 48 49 <tr valign="top"> 50 <th scope="row"><label for="_bbp_enable_subscriptions"><?php _e( 'Enable subscriptions', 'bbpress' ); ?></label></th> 51 <td><input id="_bbp_enable_subscriptions" name="_bbp_enable_subscriptions" type="checkbox" id="posts_per_rss" value="1" <?php checked( true, bbp_is_subscriptions_active() ); ?> class="small-text" /><label for="_bbp_enable_subscriptions"><?php _e( 'Allow users to subscribe to topics', 'bbpress' ); ?></label></td> 29 52 </tr> 30 53 … … 32 55 33 56 <p class="submit"> 34 <input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e( 'Save Changes' ); ?>" /> 57 <?php wp_nonce_field( '_bbp_settings' ); ?> 58 <input type="hidden" name="action" value="_bbp_update_settings" /> 59 <input type="submit" name="submit" class="button-primary" value="<?php esc_attr_e( 'Save Changes', 'bbpress' ); ?>" /> 35 60 </p> 36 61 </form> -
branches/plugin/bbp-includes/bbp-functions.php
r2660 r2668 115 115 // Handle Tags 116 116 if ( isset( $_POST['bbp_topic_tags'] ) && !empty( $_POST['bbp_topic_tags'] ) ) { 117 // Escape tag input 118 $terms = esc_html( $_POST['bbp_topic_tags'] ); 119 120 // Explode by comma 121 if ( strstr( $terms, ',' ) ) 122 $terms = explode( ',', $terms ); 123 124 // Add topic tag ID as main key 125 $terms = array( $bbp->topic_tag_id => $terms ); 126 127 // @todo - Handle adding of tags from reply 117 $terms = $_POST['bbp_topic_tags']; 118 wp_set_post_terms( $topic_id, $terms, $bbp->topic_tag_id, true ); 128 119 } 129 120 … … 149 140 // Check for missing reply_id or error 150 141 if ( !empty( $reply_id ) && !is_wp_error( $reply_id ) ) { 142 143 // Handle Subscription Checkbox 144 if ( bbp_is_subscriptions_active() ) { 145 $subscribed = bbp_is_user_subscribed( $reply_data['post_author'], $topic_id ) ? true : false; 146 $subscheck = ( !empty( $_POST['bbp_topic_subscription'] ) && 'bbp_subscribe' == $_POST['bbp_topic_subscription'] ) ? true : false; 147 148 if ( true == $subscribed && false == $subscheck ) 149 bbp_remove_user_subscription( $reply_data['post_author'], $topic_id ); 150 elseif ( false == $subscribed && true == $subscheck ) 151 bbp_add_user_subscription( $reply_data['post_author'], $topic_id ); 152 } 151 153 152 154 // Redirect back to new reply … … 233 235 if ( !empty( $topic_id ) && !is_wp_error( $topic_id ) ) { 234 236 237 if ( bbp_is_subscriptions_active() ) { 238 if ( !empty( $_POST['bbp_topic_subscription'] ) && 'bbp_subscribe' == $_POST['bbp_topic_subscription'] ) 239 bbp_add_user_subscription( $topic_data['post_author'], $topic_id ); 240 } 241 235 242 // Redirect back to new reply 236 243 wp_redirect( bbp_get_topic_permalink( $topic_id ) . '#topic-' . $topic_id ); … … 253 260 254 261 // Only proceed if GET is a favorite action 255 if ( 'GET' == $_SERVER['REQUEST_METHOD'] && !empty( $_GET['action'] ) && !empty( $_GET['topic_id'] ) ) { 262 if ( 'GET' == $_SERVER['REQUEST_METHOD'] && !empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_favorite_add', 'bbp_favorite_remove' ) ) && !empty( $_GET['topic_id'] ) ) { 263 // What action is taking place? 264 $action = $_GET['action']; 256 265 257 266 // Load user info … … 259 268 $user_id = $current_user->ID; 260 269 261 // Check users ability to create new reply270 // Check current user's ability to edit the user 262 271 if ( !current_user_can( 'edit_user', $user_id ) ) 263 272 return false; 264 265 // What action is taking place?266 $action = $_GET['action'];267 273 268 274 // Load favorite info … … 296 302 } 297 303 add_action( 'template_redirect', 'bbp_favorites_handler' ); 304 305 /** 306 * bbp_subscriptions_handler () 307 * 308 * Handles the front end subscribing and unsubscribing topics 309 */ 310 function bbp_subscriptions_handler () { 311 global $bbp, $current_user; 312 313 if ( !bbp_is_subscriptions_active() ) 314 return false; 315 316 // Only proceed if GET is a favorite action 317 if ( 'GET' == $_SERVER['REQUEST_METHOD'] && !empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'bbp_subscribe', 'bbp_unsubscribe' ) ) && !empty( $_GET['topic_id'] ) ) { 318 // What action is taking place? 319 $action = $_GET['action']; 320 321 // Load user info 322 $current_user = wp_get_current_user(); 323 $user_id = $current_user->ID; 324 325 // Check current user's ability to edit the user 326 if ( !current_user_can( 'edit_user', $user_id ) ) 327 return false; 328 329 // Load subscription info 330 $topic_id = intval( $_GET['topic_id'] ); 331 $is_subscription = bbp_is_user_subscribed( $user_id, $topic_id ); 332 $success = false; 333 334 if ( !empty( $topic_id ) && !empty( $user_id ) ) { 335 336 if ( $is_subscription && 'bbp_unsubscribe' == $action ) 337 $success = bbp_remove_user_subscription( $user_id, $topic_id ); 338 elseif ( !$is_subscription && 'bbp_subscribe' == $action ) 339 $success = bbp_add_user_subscription( $user_id, $topic_id ); 340 341 // Do additional subscriptions actions 342 do_action( 'bbp_subscriptions_handler', $success, $user_id, $topic_id, $action ); 343 344 // Check for missing reply_id or error 345 if ( true == $success ) { 346 347 // Redirect back to new reply 348 $redirect = bbp_get_topic_permalink( $topic_id ); 349 wp_redirect( $redirect ); 350 351 // For good measure 352 exit(); 353 } 354 } 355 } 356 } 357 add_action( 'template_redirect', 'bbp_subscriptions_handler' ); 298 358 299 359 /** … … 364 424 * 365 425 * @package bbPress 366 * @subpackage Template Tags426 * @subpackage Functions 367 427 * @since bbPress (r2628) 368 428 * … … 390 450 * 391 451 * @package bbPress 392 * @subpackage Template Tags452 * @subpackage Functions 393 453 * @since bbPress (r2628) 394 454 * … … 402 462 } 403 463 464 /** Favorites *****************************************************************/ 465 404 466 /** 405 467 * bbp_remove_topic_from_all_favorites () … … 408 470 * 409 471 * @package bbPress 410 * @subpackage Template Tags472 * @subpackage Functions 411 473 * @since bbPress (r2652) 412 474 * 475 * @uses bbp_get_topic_favoriters () 413 476 * @param int $topic_id Topic ID to remove 414 477 * @return void 415 478 */ 416 479 function bbp_remove_topic_from_all_favorites ( $topic_id = 0 ) { 417 global $wpdb; 418 419 if ( $users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '_bbp_favorites' and FIND_IN_SET('{$topic_id}', meta_value) > 0" ) ) 480 if ( empty( $topic_id ) ) 481 return; 482 483 if ( $users = bbp_get_topic_favoriters( $topic_id ) ) 420 484 foreach ( $users as $user ) 421 485 bbp_remove_user_favorite( $user, $topic_id ); … … 424 488 add_action( 'delete_post', 'bbp_remove_topic_from_all_favorites' ); 425 489 490 /** Subscriptions *************************************************************/ 491 492 /** 493 * bbp_remove_topic_from_all_subscriptions () 494 * 495 * Remove a deleted topic from all users' subscriptions 496 * 497 * @package bbPress 498 * @subpackage Functions 499 * @since bbPress (r2652) 500 * 501 * @uses bbp_get_topic_subscribers () 502 * @param int $topic_id Topic ID to remove 503 * @return void 504 */ 505 function bbp_remove_topic_from_all_subscriptions ( $topic_id = 0 ) { 506 if ( empty( $topic_id ) ) 507 return; 508 509 if ( !bbp_is_subscriptions_active() ) 510 return; 511 512 if ( $users = bbp_get_topic_subscribers( $topic_id ) ) { 513 foreach ( $users as $user ) { 514 bbp_remove_user_subscription( $user, $topic_id ); 515 } 516 } 517 } 518 add_action( 'trash_post', 'bbp_remove_topic_from_all_subscriptions' ); 519 add_action( 'delete_post', 'bbp_remove_topic_from_all_subscriptions' ); 520 521 /** 522 * bbp_is_subscriptions_active () 523 * 524 * Checks if subscription feature is enabled. 525 * 526 * @package bbPress 527 * @subpackage Functions 528 * @since bbPress (r2658) 529 * 530 * @return bool Is subscription enabled or not 531 */ 532 function bbp_is_subscriptions_active () { 533 return (bool) get_option( '_bbp_enable_subscriptions' ); 534 } 535 536 /** 537 * bbp_notify_subscribers () 538 * 539 * Sends notification emails for new posts. 540 * 541 * Gets new post's ID and check if there are subscribed 542 * user to that topic, and if there are, send notifications 543 * 544 * @package bbPress 545 * @subpackage Functions 546 * @since bbPress (r2668) 547 * 548 * @todo When Akismet is made to work with bbPress posts, add a check if the post is spam or not, to avoid sending out spam mails 549 * 550 * @param int $reply_id ID of the newly made reply 551 * @return bool True on success, false on failure 552 */ 553 function bbp_notify_subscribers ( $reply_id = 0 ) { 554 global $bbp, $wpdb; 555 556 if ( !bbp_is_subscriptions_active() ) 557 return false; 558 559 if ( !$reply = get_post( $reply_id ) ) 560 return false; 561 562 if ( $reply->post_type != $bbp->reply_id || empty( $reply->post_parent ) ) 563 return false; 564 565 if ( !$topic = get_post( $post->post_parent ) ) 566 return false; 567 568 $reply_id = $reply->ID; 569 $topic_id = $topic->ID; 570 571 if ( !$poster_name = get_the_author_meta( 'display_name', $reply->post_author ) ) 572 return false; 573 574 do_action( 'bbp_pre_notify_subscribers', $reply_id, $topic_id ); 575 576 // Get the users who have favorited the topic and have subscriptions on 577 if ( !$user_ids = bbp_get_topic_subscribers( $topic_id, true ) ) 578 return false; 579 580 foreach ( (array) $user_ids as $user_id ) { 581 582 // Don't send notifications to the person who made the post 583 if ( $user_id == $reply->post_author ) 584 continue; 585 586 // For plugins 587 if ( !$message = apply_filters( 'bbp_subscription_mail_message', __( "%1\$s wrote:\n\n%2\$s\n\nPost Link: %3\$s\n\nYou're getting this mail because you subscribed to the topic, visit the topic and login to unsubscribe." ), $reply_id, $topic_id ) ) 588 continue; 589 590 $user = get_userdata( $user_id ); 591 592 wp_mail( 593 $user->user_email, 594 apply_filters( 'bbp_subscription_mail_title', '[' . get_option( 'blogname' ) . '] ' . $topic->post_title, $reply_id, $topic_id ), 595 sprintf( $message, $poster_name, strip_tags( $reply->post_content ), bbp_get_reply_permalink( $reply_id ) ) 596 ); 597 } 598 599 do_action( 'bbp_post_notify_subscribers', $reply_id, $topic_id ); 600 601 return true; 602 } 603 add_action( 'bbp_new_reply', 'bbp_notify_subscribers' ); 604 426 605 ?> -
branches/plugin/bbp-includes/bbp-template.php
r2667 r2668 2827 2827 2828 2828 /** 2829 * bbp_is_subscriptions () 2830 * 2831 * Check if current page is a bbPress user's subscriptions page (author page) 2832 * 2833 * @since bbPress (r2652) 2834 * 2835 * @return bool 2836 */ 2837 function bbp_is_subscriptions () { 2838 return (bool) is_author(); 2839 } 2840 2841 /** 2829 2842 * bbp_is_user_home () 2830 2843 * … … 2887 2900 * bbp_user_favorites_link () 2888 2901 * 2889 * Output the link to the user's favorites page (author page)2902 * Output the link to make a topic favorite/remove a topic from favorites 2890 2903 * 2891 2904 * @package bbPress … … 2897 2910 * @param int $user_id optional 2898 2911 * 2899 * @uses bbp_get_ favorites_link()2912 * @uses bbp_get_user_favorites_link() 2900 2913 */ 2901 2914 function bbp_user_favorites_link ( $add = array(), $rem = array(), $user_id = 0 ) { … … 2905 2918 * bbp_get_user_favorites_link () 2906 2919 * 2907 * Return the link to the user's favorites page (author page)2920 * Return the link to make a topic favorite/remove a topic from favorites 2908 2921 * 2909 2922 * @package bbPress … … 2916 2929 * 2917 2930 * @uses apply_filters 2918 * @uses get_author_posts_url2919 2931 * @return string Permanent link to topic 2920 2932 */ … … 2964 2976 } 2965 2977 2978 // Create the link based where the user is and if the topic is already the user's favorite 2966 2979 $permalink = bbp_is_favorites() ? bbp_get_favorites_permalink( $user_id ) : bbp_get_topic_permalink( $topic_id ); 2967 2980 $url = esc_url( wp_nonce_url( add_query_arg( $favs, $permalink ), 'toggle-favorite_' . $topic_id ) ); 2968 2981 $is_fav = $is_fav ? 'is-favorite' : ''; 2969 2970 return apply_filters( 'bbp_get_user_favorites_link', "<span id='favorite-toggle'><span id='favorite-$topic_id' class='$is_fav'>$pre<a href='$url' class='dim:favorite-toggle:favorite-$topic_id:is-favorite'>$mid</a>$post</span></span>" ); 2982 $html = '<span id="favorite-toggle"><span id="favorite-' . $topic_id . '" class="' . $is_fav . '">' . $pre . '<a href="' . $url . '" class="dim:favorite-toggle:favorite-' . $topic_id . ':is-favorite">' . $mid . '</a>' . $post . '</span></span>'; 2983 2984 // Return the link 2985 return apply_filters( 'bbp_get_user_favorites_link', $html, $add, $rem, $user_id, $topic_id ); 2971 2986 } 2972 2987 2973 2988 /** END Favorites Functions ***************************************************/ 2989 2990 /** START Subscriptions Functions *********************************************/ 2991 2992 /** 2993 * bbp_user_subscribe_link () 2994 * 2995 * Output the link to subscribe/unsubscribe from a topic 2996 * 2997 * @package bbPress 2998 * @subpackage Template Tags 2999 * @since bbPress (r2668) 3000 * 3001 * @param mixed $args 3002 * 3003 * @uses bbp_get_user_subscribe_link() 3004 */ 3005 function bbp_user_subscribe_link ( $args = '' ) { 3006 echo bbp_get_user_subscribe_link( $args ); 3007 } 3008 /** 3009 * bbp_get_user_subscribe_link () 3010 * 3011 * Return the link to subscribe/unsubscribe from a topic 3012 * 3013 * @package bbPress 3014 * @subpackage Template Tags 3015 * @since bbPress (r2668) 3016 * 3017 * @param mixed $args 3018 * 3019 * @uses apply_filters 3020 * @return string Permanent link to topic 3021 */ 3022 function bbp_get_user_subscribe_link ( $args = '' ) { 3023 if ( !bbp_is_subscriptions_active() ) 3024 return; 3025 3026 $defaults = array ( 3027 'subscribe' => __( 'Subscribe', 'bbpress' ), 3028 'unsubscribe' => __( 'Unsubscribe', 'bbpress' ), 3029 'user_id' => 0, 3030 'topic_id' => 0, 3031 'before' => ' | ', 3032 'after' => '' 3033 ); 3034 3035 $args = wp_parse_args( $args, $defaults ); 3036 extract( $args ); 3037 3038 // Try to get a user_id from $current_user 3039 if ( empty( $user_id ) ) { 3040 global $current_user; 3041 $current_user = wp_get_current_user(); 3042 3043 // Return if not logged in 3044 if ( !$user_id = $current_user->ID ) { 3045 return false; 3046 } 3047 } 3048 3049 if ( !current_user_can( 'edit_user', (int) $user_id ) ) 3050 return false; 3051 3052 if ( !$topic_id = bbp_get_topic_id( $topic_id ) ) 3053 return false; 3054 3055 if ( $is_subscribed = bbp_is_user_subscribed( $user_id, $topic_id ) ) { 3056 $text = $unsubscribe; 3057 $query_args = array( 'action' => 'bbp_unsubscribe', 'topic_id' => $topic_id ); 3058 } else { 3059 $text = $subscribe; 3060 $query_args = array( 'action' => 'bbp_subscribe', 'topic_id' => $topic_id ); 3061 } 3062 3063 // Create the link based where the user is and if the user is subscribed already 3064 $permalink = bbp_is_subscriptions() ? bbp_get_favorites_permalink( $user_id ) : bbp_get_topic_permalink( $topic_id ); 3065 $url = esc_url( wp_nonce_url( add_query_arg( $query_args, $permalink ), 'toggle-subscription_' . $topic_id ) ); 3066 $is_subscribed = $is_subscribed ? 'is-subscribed' : ''; 3067 $html = '<span id="subscription-toggle">' . $before . '<span id="subscribe-' . $topic_id . '" class="' . $is_subscribed . '"><a href="' . $url . '" class="dim:subscription-toggle:subscribe-' . $topic_id . ':is-subscribed">' . $text . '</a></span>' . $after . '</span>'; 3068 3069 // Return the link 3070 return apply_filters( 'bbp_get_user_subscribe_link', $html, $subscribe, $unsubscribe, $user_id, $topic_id ); 3071 } 3072 3073 /** END Subscriptions Functions ***********************************************/ 2974 3074 2975 3075 /** START User Functions ******************************************************/ -
branches/plugin/bbp-includes/bbp-users.php
r2660 r2668 41 41 42 42 /** 43 * bbp_get_user_favorites_topic_ids () 44 * 45 * Get a user's favorite topics' IDs 43 * bbp_get_topic_favoriters () 44 * 45 * Get the users who have made the topic favorite 46 * 47 * @package bbPress 48 * @subpackage Users 49 * @since bbPress (r2658) 50 * 51 * @param int $topic_id Topic ID 52 * @return array|bool Results if the topic has any favoriters, otherwise false 53 */ 54 function bbp_get_topic_favoriters ( $topic_id = 0 ) { 55 if ( empty( $topic_id ) ) 56 return; 57 58 global $wpdb; 59 60 // Get the users who have favorited the topic 61 $users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '_bbp_favorites' and FIND_IN_SET('{$topic_id}', meta_value) > 0" ); 62 $users = apply_filters( 'bbp_get_topic_favoriters', $users, $topic_id ); 63 64 if ( !empty( $users ) ) 65 return $users; 66 67 return false; 68 } 69 70 /** 71 * bbp_get_user_favorites () 72 * 73 * Get a user's favorite topics 46 74 * 47 75 * @package bbPress … … 49 77 * @since bbPress (r2652) 50 78 * 51 * @param int $user_id User ID 52 * @return array|bool Results if user has favorites, otherwise false 53 */ 54 function bbp_get_user_favorites_topic_ids ( $user_id = 0 ) { 55 if ( empty( $user_id ) ) 56 return; 57 58 $favorites = (string) get_user_meta( $user_id, '_bbp_favorites', true ); 59 $favorites = (array) explode( ',', $favorites ); 60 $favorites = array_filter( $favorites ); 61 62 if ( !empty( $favorites ) ) 63 return $favorites; 64 65 return false; 66 } 67 68 /** 69 * bbp_get_user_favorites () 70 * 71 * Get a user's favorite topics 72 * 73 * @package bbPress 74 * @subpackage Users 75 * @since bbPress (r2652) 76 * 77 * @todo Pagination 79 * @uses bbp_get_user_favorites_topic_ids () 78 80 * 79 81 * @param int $user_id User ID … … 95 97 if ( !empty( $favorites ) ) { 96 98 $query = bbp_has_topics( array( 'post__in' => $favorites, 'posts_per_page' => -1 ) ); 97 return $query; 98 } 99 100 return false; 101 } 99 return apply_filters( 'bbp_get_user_favorites', $query, $user_id ); 100 } 101 102 return false; 103 } 104 105 /** 106 * bbp_get_user_favorites_topic_ids () 107 * 108 * Get a user's favorite topics' IDs 109 * 110 * @package bbPress 111 * @subpackage Users 112 * @since bbPress (r2652) 113 * 114 * @param int $user_id User ID 115 * @return array|bool Results if user has favorites, otherwise false 116 */ 117 function bbp_get_user_favorites_topic_ids ( $user_id = 0 ) { 118 if ( empty( $user_id ) ) 119 return; 120 121 $favorites = (string) get_user_meta( $user_id, '_bbp_favorites', true ); 122 $favorites = (array) explode( ',', $favorites ); 123 $favorites = array_filter( $favorites ); 124 $favorites = apply_filters( 'bbp_get_user_favorites_topic_ids', $favorites, $user_id ); 125 126 if ( !empty( $favorites ) ) 127 return $favorites; 128 129 return false; 130 } 102 131 103 132 /** … … 141 170 142 171 if ( isset( $favorites ) ) 143 return in_array($topic_id, $favorites );172 return apply_filters( 'bbp_is_user_favorite', (bool) in_array( $topic_id, $favorites ), $user_id, $topic_id, $favorites ); 144 173 145 174 return false; … … 220 249 /** END - Favorites ***********************************************************/ 221 250 251 /** START - Subscriptions *****************************************************/ 252 253 /** 254 * bbp_get_topic_subscribers () 255 * 256 * Get the users who have subscribed to the topic 257 * 258 * @package bbPress 259 * @subpackage Users 260 * @since bbPress (r2668) 261 * 262 * @param int $topic_id Topic ID 263 * @return array|bool Results if the topic has any subscribers, otherwise false 264 */ 265 function bbp_get_topic_subscribers ( $topic_id = 0 ) { 266 if ( empty( $topic_id ) ) 267 return; 268 269 global $wpdb; 270 271 // Get the users who have favorited the topic 272 $users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '_bbp_subscriptions' and FIND_IN_SET('{$topic_id}', meta_value) > 0" ); 273 $users = apply_filters( 'bbp_get_topic_subscribers', $users ); 274 275 if ( !empty( $users ) ) 276 return $users; 277 278 return false; 279 } 280 281 /** 282 * bbp_get_user_subscriptions () 283 * 284 * Get a user's subscribed topics 285 * 286 * @package bbPress 287 * @subpackage Users 288 * @since bbPress (r2668) 289 * 290 * @uses bbp_get_user_subscribed_topic_ids () 291 * 292 * @param int $user_id User ID 293 * @return array|bool Results if user has subscriptions, otherwise false 294 */ 295 function bbp_get_user_subscriptions ( $user_id = 0 ) { 296 // Default to author 297 if ( empty( $user_id ) ) 298 $user_id = get_the_author_meta( 'ID' ); 299 300 // If nothing passed and not an author page, return nothing 301 if ( empty( $user_id ) ) 302 return false; 303 304 // Get users' subscriptions 305 $subscriptions = bbp_get_user_subscribed_topic_ids( $user_id ); 306 307 // If user has subscriptions, load them 308 if ( !empty( $subscriptions ) ) { 309 $query = bbp_has_topics( array( 'post__in' => $subscriptions, 'posts_per_page' => -1 ) ); 310 return apply_filters( 'bbp_get_user_subscriptions', $query ); 311 } 312 313 return false; 314 } 315 316 /** 317 * bbp_get_user_subscribed_topic_ids () 318 * 319 * Get a user's subscribed topics' IDs 320 * 321 * @package bbPress 322 * @subpackage Users 323 * @since bbPress (r2668) 324 * 325 * @param int $user_id User ID 326 * @return array|bool Results if user has subscriptions, otherwise false 327 */ 328 function bbp_get_user_subscribed_topic_ids ( $user_id = 0 ) { 329 if ( empty( $user_id ) ) 330 return; 331 332 $subscriptions = (string) get_user_meta( $user_id, '_bbp_subscriptions', true ); 333 $subscriptions = (array) explode( ',', $subscriptions ); 334 $subscriptions = array_filter( $subscriptions ); 335 $subscriptions = apply_filters( 'bbp_get_user_subscribed_topic_ids', $subscriptions ); 336 337 if ( !empty( $subscriptions ) ) 338 return $subscriptions; 339 340 return false; 341 } 342 343 /** 344 * bbp_is_user_subscribed () 345 * 346 * Check if a topic is in user's subscription list or not 347 * 348 * @package bbPress 349 * @subpackage Users 350 * @since bbPress (r2668) 351 * 352 * @param int $user_id User ID 353 * @param int $topic_id Topic ID 354 * @return bool True if the topic is in user's subscriptions, otherwise false 355 */ 356 function bbp_is_user_subscribed ( $user_id = 0, $topic_id = 0 ) { 357 global $post, $current_user; 358 359 if ( empty( $user_id ) ) { 360 $current_user = wp_get_current_user(); 361 $user_id = $current_user->ID; 362 } 363 364 if ( empty( $user_id ) ) 365 return false; 366 367 $subscriptions = bbp_get_user_subscribed_topic_ids( $user_id ); 368 369 if ( !empty( $topic_id ) ) { 370 $post = get_post( $topic_id ); 371 $topic_id = $post->ID; 372 } elseif ( !$topic_id = bbp_get_topic_id() ) { 373 if ( empty( $post ) ) 374 return false; 375 376 $topic_id = $post->ID; 377 } 378 379 if ( empty( $subscriptions ) || empty( $topic_id ) ) 380 return false; 381 382 if ( isset( $subscriptions ) ) 383 return apply_filters( 'bbp_is_user_subscribed', (bool) in_array( $topic_id, $subscriptions ), $user_id, $topic_id, $subscriptions ); 384 385 return false; 386 } 387 388 /** 389 * bbp_add_user_subscription () 390 * 391 * Add a topic to user's subscriptions 392 * 393 * @package bbPress 394 * @subpackage Users 395 * @since bbPress (r2668) 396 * 397 * @param int $user_id User ID 398 * @param int $topic_id Topic ID 399 * @return bool True 400 */ 401 function bbp_add_user_subscription ( $user_id = 0, $topic_id = 0 ) { 402 if ( empty( $user_id ) || empty( $topic_id ) ) 403 return false; 404 405 $subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id ); 406 $topic = get_post( $topic_id ); 407 408 if ( empty( $subscriptions ) || empty( $topic ) ) 409 return false; 410 411 if ( !in_array( $topic_id, $subscriptions ) ) { 412 $subscriptions[] = $topic_id; 413 $subscriptions = array_filter( $subscriptions ); 414 $subscriptions = (string) implode( ',', $subscriptions ); 415 update_user_meta( $user_id, '_bbp_subscriptions', $subscriptions ); 416 } 417 418 do_action( 'bbp_add_user_subscription', $user_id, $topic_id ); 419 420 return true; 421 } 422 423 /** 424 * bbp_remove_user_subscription () 425 * 426 * Remove a topic from user's subscriptions 427 * 428 * @package bbPress 429 * @subpackage Users 430 * @since bbPress (r2668) 431 * 432 * @param int $user_id User ID 433 * @param int $topic_id Topic ID 434 * @return bool True if the topic was removed from user's subscriptions, otherwise false 435 */ 436 function bbp_remove_user_subscription ( $user_id, $topic_id ) { 437 if ( empty( $user_id ) || empty( $topic_id ) ) 438 return false; 439 440 $subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id ); 441 442 if ( empty( $subscriptions ) ) 443 return false; 444 445 if ( is_int( $pos = array_search( $topic_id, $subscriptions ) ) ) { 446 array_splice( $subscriptions, $pos, 1 ); 447 $subscriptions = array_filter( $subscriptions ); 448 449 if ( !empty( $subscriptions ) ) { 450 $subscriptions = implode( ',', $subscriptions ); 451 update_user_meta( $user_id, '_bbp_subscriptions', $subscriptions ); 452 } else { 453 delete_user_meta( $user_id, '_bbp_subscriptions' ); 454 } 455 } 456 457 do_action( 'bbp_remove_user_subscription', $user_id, $topic_id ); 458 459 return true; 460 } 461 462 /** END - Subscriptions *******************************************************/ 463 222 464 /** 223 465 * bbp_get_user_topics_started () … … 227 469 * @package bbPress 228 470 * @subpackage Users 229 * @since bbPress (r26 52)471 * @since bbPress (r2660) 230 472 * 231 473 * @param int $user_id User ID -
branches/plugin/bbp-themes/bbp-twentyten/author.php
r2665 r2668 1 1 <?php 2 2 /** 3 * Template Name: bbPress - User Profile3 * Template Name: bbPress - Author 4 4 * 5 5 * @package bbPress … … 13 13 <div id="content" role="main"> 14 14 15 <?php if ( have_posts() ) the_post(); ?> 15 <?php 16 // Profile details 17 get_template_part( 'profile', 'bbp_details' ); 16 18 17 <span class="page-title author"><?php printf( __( 'Profile: %s', 'twentyten' ), "<span class='vcard'><a class='url fn n' href='" . get_author_posts_url( get_the_author_meta( 'ID' ) ) . "' title='" . esc_attr( get_the_author() ) . "' rel='me'>" . get_the_author() . "</a></span>" ); ?></span> 19 // Subsciptions 20 get_template_part( 'profile', 'bbp_subscriptions' ); 18 21 19 <div id="entry-author-info">20 <div id="author-avatar">22 // Favorite topics 23 get_template_part( 'profile', 'bbp_favorites' ); 21 24 22 <?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyten_author_bio_avatar_size', 60 ) ); ?> 25 // Topics created 26 get_template_part( 'profile', 'bbp_topics_created' ); 23 27 24 </div><!-- #author-avatar --> 25 <div id="author-description"> 26 <h1><?php printf( __( 'About %s', 'twentyten' ), get_the_author() ); ?></h1> 27 28 <?php the_author_meta( 'description' ); ?> 29 30 </div><!-- #author-description --> 31 </div><!-- #entry-author-info --> 32 33 <div id="bbp-author-favorites" class="bbp-author-favorites"> 34 <hr /> 35 <h2 class="entry-title"><?php _e( 'Favorite Forum Topics', 'bbpress' ); ?></h2> 36 <div class="entry-content"> 37 38 <?php if ( bbp_get_user_favorites() ) : 39 40 get_template_part( 'loop', 'bbp_topics' ); 41 42 else : ?> 43 44 <p><?php bbp_is_user_home() ? _e( 'You currently have no favorite topics.', 'bbpress' ) : _e( 'This user has no favorite topics.', 'bbpress' ); ?></p> 45 46 <?php endif; ?> 47 48 </div> 49 </div><!-- #bbp-author-favorites --> 50 51 <div id="bbp-author-topics-started" class="bbp-author-topics-started"> 52 <hr /> 53 <h2 class="entry-title"><?php _e( 'Forum Topics Created', 'bbpress' ); ?></h2> 54 <div class="entry-content"> 55 56 <?php if ( bbp_get_user_topics_started() ) : 57 58 get_template_part( 'loop', 'bbp_topics' ); 59 60 else : ?> 61 62 <p><?php bbp_is_user_home() ? _e( 'You have not created any topics.', 'bbpress' ) : _e( 'This user has not created any topics.', 'bbpress' ); ?></p> 63 64 <?php endif; ?> 65 66 </div> 67 </div><!-- #bbp-author-topics-started --> 68 69 70 <div id="bbp-author-blog-posts" class="bbp-author-blog-posts"> 71 <hr /> 72 <h2 class="entry-title"><?php _e( 'Blog Posts', 'bbpress' ); ?></h2> 73 74 <div class="entry-content"> 75 76 <?php rewind_posts(); ?> 77 78 <?php get_template_part( 'loop', 'author' ); ?> 79 </div> 80 </div><!-- #bbp-author-blog-posts --> 28 // Blog posts 29 get_template_part( 'profile', 'posts' ); 30 ?> 81 31 82 32 </div><!-- #content --> -
branches/plugin/bbp-themes/bbp-twentyten/form-bbp_reply.php
r2623 r2668 24 24 </p> 25 25 26 <?php if ( bbp_is_subscriptions_active() ) : ?> 27 28 <p> 29 <input name="bbp_topic_subscription" id="bbp_topic_subscription" type="checkbox" value="bbp_subscribe"<?php checked( true, bbp_is_user_subscribed() ); ?> tabindex="7" /> 30 <label for="bbp_topic_subscription"><?php _e( 'Notify me of follow-up replies via email', 'bbpress' ); ?></label> 31 </p> 32 33 <?php endif; ?> 34 26 35 <p align="right"> 27 <button type="submit" tabindex=" 6" id="bbp_reply_submit" name="bbp_reply_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>36 <button type="submit" tabindex="9" id="bbp_reply_submit" name="bbp_reply_submit"><?php _e( 'Submit', 'bbpress' ); ?></button> 28 37 </p> 29 38 </div> -
branches/plugin/bbp-themes/bbp-twentyten/form-bbp_topic.php
r2623 r2668 38 38 <?php endif; ?> 39 39 40 <?php if ( bbp_is_subscriptions_active() ) : ?> 41 42 <p> 43 <input name="bbp_topic_subscription" id="bbp_topic_subscription" type="checkbox" value="bbp_subscribe" tabindex="9" /> 44 <label for="bbp_topic_subscription"><?php _e( 'Notify me of follow-up replies via email', 'bbpress' ); ?></label> 45 </p> 46 47 <?php endif; ?> 48 40 49 <p align="right"> 41 <button type="submit" tabindex=" 7" id="bbp_topic_submit" name="bbp_topic_submit"><?php _e( 'Submit', 'bbpress' ); ?></button>50 <button type="submit" tabindex="11" id="bbp_topic_submit" name="bbp_topic_submit"><?php _e( 'Submit', 'bbpress' ); ?></button> 42 51 </p> 43 52 </div> -
branches/plugin/bbp-themes/bbp-twentyten/functions.php
r2660 r2668 1 1 <?php 2 3 /** 4 * bbp_twentyten_enqueue_styles () 5 * 6 * Load the theme CSS 7 */ 8 function bbp_twentyten_enqueue_styles () { 9 // Default styling, taken from twentyten theme 10 wp_enqueue_style( 'bbp-twentyten-default', get_stylesheet_directory_uri() . '/css/twentyten.css', false, 20100312, 'screen' ); 11 12 // bbPress specific 13 wp_enqueue_style( 'bbp-twentyten-bbpress', get_stylesheet_directory_uri() . '/css/bbpress.css', 'bbp-twentyten-default', 20100312, 'screen' ); 14 } 15 add_action( 'init', 'bbp_twentyten_enqueue_styles' ); 2 16 3 17 /** … … 7 21 * 8 22 * @package bbPress 9 * @subpackage Template Tags23 * @subpackage bbPress TwentyTen 10 24 * @since bbPress (r2652) 11 25 * … … 40 54 41 55 /** 56 * bbp_twentyten_dim_subscription () 57 * 58 * Subscribe/Unsubscribe a user from a topic 59 * 60 * @package bbPress 61 * @subpackage bbPress TwentyTen 62 * @since bbPress (r2668) 63 * 64 * @return void 65 */ 66 function bbp_twentyten_dim_subscription () { 67 global $current_user; 68 69 if ( !bbp_is_subscriptions_active() ) 70 return; 71 72 $current_user = wp_get_current_user(); 73 $user_id = $current_user->ID; 74 $id = intval( $_POST['id'] ); 75 76 if ( !current_user_can( 'edit_user', $user_id ) ) 77 die( '-1' ); 78 79 if ( !$topic = get_post( $id ) ) 80 die( '0' ); 81 82 check_ajax_referer( "toggle-subscription_$topic->ID" ); 83 84 if ( bbp_is_user_subscribed( $user_id, $topic->ID ) ) { 85 if ( bbp_remove_user_subscription( $user_id, $topic->ID ) ) 86 die( '1' ); 87 } else { 88 if ( bbp_add_user_subscription( $user_id, $topic->ID ) ) 89 die( '1' ); 90 } 91 92 die( '0' ); 93 } 94 add_action( 'wp_ajax_dim-subscription', 'bbp_twentyten_dim_subscription' ); 95 96 /** 42 97 * bbp_twentyten_enqueue_topic_script () 43 98 * … … 45 100 * 46 101 * @package bbPress 47 * @subpackage Template Tags102 * @subpackage bbPress TwentyTen 48 103 * @since bbPress (r2652) 49 104 * … … 54 109 return; 55 110 56 wp_enqueue_script( 'bbp_topic', get_stylesheet_directory_uri() . '/js/topic.js', array( 'wp-lists' ), '20101 124' );111 wp_enqueue_script( 'bbp_topic', get_stylesheet_directory_uri() . '/js/topic.js', array( 'wp-lists' ), '20101202' ); 57 112 } 58 113 add_filter( 'wp_enqueue_scripts', 'bbp_twentyten_enqueue_topic_script' ); … … 64 119 * 65 120 * @package bbPress 66 * @subpackage Template Tags121 * @subpackage bbPress TwentyTen 67 122 * @since bbPress (r2652) 68 123 * … … 91 146 * 92 147 * @package bbPress 93 * @subpackage Template Tags148 * @subpackage bbPress TwentyTen 94 149 * @since bbPress (r2652) 95 150 * … … 102 157 global $current_user; 103 158 104 wp_get_current_user();105 $user_id = $current_user->ID;159 $current_user = wp_get_current_user(); 160 $user_id = $current_user->ID; 106 161 107 wp_localize_script( 'bbp_topic', 'bbpTopicJS',array(162 $localizations = array( 108 163 'currentUserId' => $user_id, 109 164 'topicId' => bbp_get_topic_id(), … … 116 171 'favDel' => __( '×', 'bbpress' ), 117 172 'favAdd' => __( 'Add this topic to your favorites', 'bbpress' ) 118 ) ); 173 ); 174 175 if ( bbp_is_subscriptions_active() ) { 176 $localizations['subsActive'] = 1; 177 $localizations['isSubscribed'] = (int) bbp_is_user_subscribed( $user_id ); 178 $localizations['subsSub'] = __( 'Subscribe', 'bbpress' ); 179 $localizations['subsUns'] = __( 'Unsubscribe', 'bbpress' ); 180 $localizations['subsLink'] = bbp_get_topic_permalink(); 181 } else { 182 $localizations['subsActive'] = 0; 183 } 184 185 wp_localize_script( 'bbp_topic', 'bbpTopicJS', $localizations ); 119 186 } 120 187 add_filter( 'wp_enqueue_scripts', 'bbp_twentyten_topic_script_localization' ); -
branches/plugin/bbp-themes/bbp-twentyten/js/topic.js
r2659 r2668 1 1 bbpTopicJS = jQuery.extend( { 2 // User and Topic 2 3 currentUserId: '0', 3 4 topicId: '0', 5 6 // Favorites 4 7 favoritesLink: '', 5 8 isFav: 0, … … 9 12 favNo: '%favAdd% (%favLinkNo%)', 10 13 favDel: 'x', 11 favAdd: 'Add this topic to your favorites' 14 favAdd: 'Add this topic to your favorites', 15 16 // Subscriptions 17 subsLink: '', 18 subsActive: 0, 19 isSubscribed: 0, 20 subsSub: 'Subscribe', 21 subsUns: 'Unsubscribe' 12 22 }, bbpTopicJS ); 13 23 14 bbpTopicJS.isFav = parseInt( bbpTopicJS.isFav ); 24 // Topic Global 25 bbpTopicJS.isFav = parseInt( bbpTopicJS.isFav ); 26 bbpTopicJS.subsActive = parseInt( bbpTopicJS.subsActive ); 27 bbpTopicJS.isSubscribed = parseInt( bbpTopicJS.isSubscribed ); 15 28 29 // Run it 16 30 jQuery( function($) { 17 / / Favorites18 var favoritesToggle = $( '#favorite-toggle')31 /** Favorites *************************************************************/ 32 var favoritesToggle = $( '#favorite-toggle' ) 19 33 .addClass( 'list:favorite' ) 20 34 .wpList( { alt: '', dimAfter: favLinkSetup } ); … … 39 53 favoritesToggle.get(0).wpList.process( favoritesToggle ); 40 54 } 55 56 /** Subscriptions *********************************************************/ 57 if ( bbpTopicJS.subsActive == 1 ) { 58 var subscriptionToggle = $( '#subscription-toggle' ) 59 .addClass( 'list:subscription' ) 60 .wpList( { alt: '', dimAfter: subsLinkSetup } ); 61 62 var subscriptionToggleSpan = subscriptionToggle.children( 'span' ) 63 [bbpTopicJS.isSubscribed ? 'addClass' : 'removeClass' ]( 'is-subscribed' ); 64 65 function subsLinkSetup() { 66 bbpTopicJS.isSubscribed = subscriptionToggleSpan.is( '.is-subscribed' ); 67 var aLink = "<a href='" + bbpTopicJS.subsLink + "'>"; 68 var aDim = "<a href='" + subscriptionToggleSpan.find( 'a[class^="dim:"]' ).attr( 'href' ) + "' class='dim:subscription-toggle:" + subscriptionToggleSpan.attr( 'id' ) + ":is-subscribed'>"; 69 70 if ( bbpTopicJS.isSubscribed ) { 71 html = aDim + bbpTopicJS.subsUns + '</a>'; 72 } else { 73 html = aDim + bbpTopicJS.subsSub + '</a>'; 74 } 75 76 subscriptionToggleSpan.html( html ); 77 subscriptionToggle.get(0).wpList.process( subscriptionToggle ); 78 } 79 } 80 41 81 } ); -
branches/plugin/bbp-themes/bbp-twentyten/pagination-bbp_replies.php
r2574 r2668 1 <?php 2 /** 3 * Pagination for pages of replies (when viewing a topic) 4 * 5 * @package bbPress 6 * @subpackage Twenty Ten 7 */ 8 ?> 1 9 2 10 <div class="bbp-pagination"> -
branches/plugin/bbp-themes/bbp-twentyten/pagination-bbp_topics.php
r2575 r2668 1 <?php 2 /** 3 * Pagination for pages of topics (when viewing a forum) 4 * 5 * @package bbPress 6 * @subpackage Twenty Ten 7 */ 8 ?> 1 9 2 10 <div class="bbp-pagination"> -
branches/plugin/bbp-themes/bbp-twentyten/single-bbp_topic.php
r2667 r2668 29 29 <th class="bbp-topic-content"> 30 30 <?php _e( 'Topic', 'bbpress' ); ?> 31 <?php bbp_user_subscribe_link(); ?> 31 32 <?php bbp_user_favorites_link(); ?> 32 33 </th> -
branches/plugin/bbp-themes/bbp-twentyten/style.css
r2667 r2668 7 7 * Template: twentyten 8 8 * Tags: bbpress, black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style 9 */ 10 11 /* =Reset default browser CSS. Based on work by Eric Meyer: http://meyerweb.com/eric/tools/css/reset/index.html 12 -------------------------------------------------------------- */ 13 14 html, body, div, span, applet, object, iframe, 15 h1, h2, h3, h4, h5, h6, p, blockquote, pre, 16 a, abbr, acronym, address, big, cite, code, 17 del, dfn, em, font, img, ins, kbd, q, s, samp, 18 small, strike, strong, sub, sup, tt, var, 19 b, u, i, center, 20 dl, dt, dd, ol, ul, li, 21 fieldset, form, label, legend, 22 table, caption, tbody, tfoot, thead, tr, th, td { 23 background: transparent; 24 border: 0; 25 margin: 0; 26 padding: 0; 27 vertical-align: baseline; 28 } 29 body { 30 line-height: 1; 31 } 32 h1, h2, h3, h4, h5, h6 { 33 clear: both; 34 font-weight: normal; 35 } 36 ol, ul { 37 list-style: none; 38 } 39 blockquote { 40 quotes: none; 41 } 42 blockquote:before, blockquote:after { 43 content: ''; 44 content: none; 45 } 46 del { 47 text-decoration: line-through; 48 } 49 /* tables still need 'cellspacing="0"' in the markup */ 50 table { 51 border-collapse: collapse; 52 border-spacing: 0; 53 } 54 a img { 55 border: none; 56 } 57 58 /* =Layout 59 -------------------------------------------------------------- */ 60 61 /* 62 LAYOUT: Two columns 63 DESCRIPTION: Two-column fixed layout with one sidebar right of content 64 */ 65 66 #container { 67 float: left; 68 margin: 0 -240px 0 0; 69 width: 100%; 70 } 71 #content { 72 margin: 0 280px 0 20px; 73 } 74 #primary, 75 #secondary { 76 float: right; 77 overflow: hidden; 78 width: 220px; 79 } 80 #secondary { 81 clear: right; 82 } 83 #footer { 84 clear: both; 85 width: 100%; 86 } 87 88 /* 89 LAYOUT: One column, no sidebar 90 DESCRIPTION: One centered column with no sidebar 91 */ 92 93 .one-column #content { 94 margin: 0 auto; 95 width: 640px; 96 } 97 98 /* 99 LAYOUT: Full width, no sidebar 100 DESCRIPTION: Full width content with no sidebar; used for attachment pages 101 */ 102 103 .single-attachment #content { 104 margin: 0 auto; 105 width: 900px; 106 } 107 108 109 /* =Fonts 110 -------------------------------------------------------------- */ 111 body, 112 input, 113 textarea, 114 .page-title span, 115 .pingback a.url { 116 font-family: Georgia, "Bitstream Charter", serif; 117 } 118 h3#comments-title, 119 h3#reply-title, 120 #access .menu, 121 #access div.menu ul, 122 #cancel-comment-reply-link, 123 .form-allowed-tags, 124 #site-info, 125 #site-title, 126 #wp-calendar, 127 .comment-meta, 128 .comment-body tr th, 129 .comment-body thead th, 130 .entry-content label, 131 .entry-content tr th, 132 .entry-content thead th, 133 .entry-meta, 134 .entry-title, 135 .entry-utility, 136 #respond label, 137 .navigation, 138 .page-title, 139 .pingback p, 140 .reply, 141 .widget-title, 142 .wp-caption-text, 143 input[type=submit] { 144 font-family: "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif; 145 } 146 pre { 147 font-family: "Courier 10 Pitch", Courier, monospace; 148 } 149 code { 150 font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; 151 } 152 153 154 /* =Structure 155 -------------------------------------------------------------- */ 156 157 /* The main theme structure */ 158 #access .menu-header, 159 div.menu, 160 #colophon, 161 #branding, 162 #main, 163 #wrapper { 164 margin: 0 auto; 165 width: 940px; 166 } 167 #wrapper { 168 background: #fff; 169 margin-top: 20px; 170 padding: 0 20px; 171 } 172 173 /* Structure the footer area */ 174 #footer-widget-area { 175 overflow: hidden; 176 } 177 #footer-widget-area .widget-area { 178 float: left; 179 margin-right: 20px; 180 width: 220px; 181 } 182 #footer-widget-area #fourth { 183 margin-right: 0; 184 } 185 #site-info { 186 float: left; 187 font-size: 14px; 188 font-weight: bold; 189 width: 700px; 190 } 191 #site-generator { 192 float: right; 193 width: 220px; 194 } 195 196 197 /* =Global Elements 198 -------------------------------------------------------------- */ 199 200 /* Main global 'theme' and typographic styles */ 201 body { 202 background: #f1f1f1; 203 } 204 body, 205 input, 206 textarea { 207 color: #666; 208 font-size: 12px; 209 line-height: 18px; 210 } 211 hr { 212 background-color: #e7e7e7; 213 border: 0; 214 clear: both; 215 height: 1px; 216 margin-bottom: 18px; 217 } 218 219 /* Text elements */ 220 p { 221 margin-bottom: 18px; 222 } 223 ul { 224 list-style: square; 225 margin: 0 0 18px 1.5em; 226 } 227 ol { 228 list-style: decimal; 229 margin: 0 0 18px 1.5em; 230 } 231 ol ol { 232 list-style: upper-alpha; 233 } 234 ol ol ol { 235 list-style: lower-roman; 236 } 237 ol ol ol ol { 238 list-style: lower-alpha; 239 } 240 ul ul, 241 ol ol, 242 ul ol, 243 ol ul { 244 margin-bottom: 0; 245 } 246 dl { 247 margin: 0 0 24px 0; 248 } 249 dt { 250 font-weight: bold; 251 } 252 dd { 253 margin-bottom: 18px; 254 } 255 strong { 256 font-weight: bold; 257 } 258 cite, 259 em, 260 i { 261 font-style: italic; 262 } 263 big { 264 font-size: 131.25%; 265 } 266 ins { 267 background: #ffc; 268 text-decoration: none; 269 } 270 blockquote { 271 font-style: italic; 272 padding: 0 3em; 273 } 274 blockquote cite, 275 blockquote em, 276 blockquote i { 277 font-style: normal; 278 } 279 pre { 280 background: #f7f7f7; 281 color: #222; 282 line-height: 18px; 283 margin-bottom: 18px; 284 padding: 1.5em; 285 } 286 abbr, 287 acronym { 288 border-bottom: 1px dotted #666; 289 cursor: help; 290 } 291 sup, 292 sub { 293 height: 0; 294 line-height: 1; 295 position: relative; 296 vertical-align: baseline; 297 } 298 sup { 299 bottom: 1ex; 300 } 301 sub { 302 top: .5ex; 303 } 304 input[type="text"], 305 textarea { 306 background: #f9f9f9; 307 border: 1px solid #ccc; 308 box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); 309 -moz-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); 310 -webkit-box-shadow: inset 1px 1px 1px rgba(0,0,0,0.1); 311 padding: 2px; 312 } 313 a:link { 314 color: #0066cc; 315 } 316 a:visited { 317 color: #743399; 318 } 319 a:active, 320 a:hover { 321 color: #ff4b33; 322 } 323 324 /* Text meant only for screen readers */ 325 .screen-reader-text { 326 position: absolute; 327 left: -9000px; 328 } 329 330 331 /* =Header 332 -------------------------------------------------------------- */ 333 334 #header { 335 padding: 30px 0 0 0; 336 } 337 #site-title { 338 float: left; 339 font-size: 30px; 340 line-height: 36px; 341 margin: 0 0 18px 0; 342 width: 700px; 343 } 344 #site-title a { 345 color: #000; 346 font-weight: bold; 347 text-decoration: none; 348 } 349 #site-description { 350 clear: right; 351 float: right; 352 font-style: italic; 353 margin: 14px 0 18px 0; 354 width: 220px; 355 } 356 357 /* This is the custom header image */ 358 #branding img { 359 border-top: 4px solid #000; 360 border-bottom: 1px solid #000; 361 clear: both; 362 display: block; 363 } 364 365 366 /* =Menu 367 -------------------------------------------------------------- */ 368 369 #access { 370 background: #000; 371 display: block; 372 float: left; 373 margin: 0 auto; 374 width: 940px; 375 } 376 #access .menu-header, 377 div.menu { 378 font-size: 13px; 379 margin-left: 12px; 380 width: 928px; 381 } 382 #access .menu-header ul, 383 div.menu ul { 384 list-style: none; 385 margin: 0; 386 } 387 #access .menu-header li, 388 div.menu li { 389 float: left; 390 position: relative; 391 } 392 #access a { 393 color: #aaa; 394 display: block; 395 line-height: 38px; 396 padding: 0 10px; 397 text-decoration: none; 398 } 399 #access ul ul { 400 box-shadow: 0px 3px 3px rgba(0,0,0,0.2); 401 -moz-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); 402 -webkit-box-shadow: 0px 3px 3px rgba(0,0,0,0.2); 403 display: none; 404 position: absolute; 405 top: 38px; 406 left: 0; 407 float: left; 408 width: 180px; 409 z-index: 99999; 410 } 411 #access ul ul li { 412 min-width: 180px; 413 } 414 #access ul ul ul { 415 left: 100%; 416 top: 0; 417 } 418 #access ul ul a { 419 background: #333; 420 line-height: 1em; 421 padding: 10px; 422 width: 160px; 423 height: auto; 424 } 425 #access li:hover > a, 426 #access ul ul :hover > a { 427 background: #333; 428 color: #fff; 429 } 430 #access ul li:hover > ul { 431 display: block; 432 } 433 #access ul li.current_page_item > a, 434 #access ul li.current-menu-ancestor > a, 435 #access ul li.current-menu-item > a, 436 #access ul li.current-menu-parent > a { 437 color: #fff; 438 } 439 * html #access ul li.current_page_item a, 440 * html #access ul li.current-menu-ancestor a, 441 * html #access ul li.current-menu-item a, 442 * html #access ul li.current-menu-parent a, 443 * html #access ul li a:hover { 444 color: #fff; 445 } 446 447 448 /* =Content 449 -------------------------------------------------------------- */ 450 451 #main { 452 clear: both; 453 overflow: hidden; 454 padding: 40px 0 0 0; 455 } 456 #content { 457 margin-bottom: 36px; 458 } 459 #content, 460 #content input, 461 #content textarea { 462 color: #333; 463 font-size: 16px; 464 line-height: 24px; 465 } 466 #content p, 467 #content ul, 468 #content ol, 469 #content dd, 470 #content pre, 471 #content hr { 472 margin-bottom: 24px; 473 } 474 #content ul ul, 475 #content ol ol, 476 #content ul ol, 477 #content ol ul { 478 margin-bottom: 0; 479 } 480 #content pre, 481 #content kbd, 482 #content tt, 483 #content var { 484 font-size: 15px; 485 line-height: 21px; 486 } 487 #content code { 488 font-size: 13px; 489 } 490 #content dt, 491 #content th { 492 color: #000; 493 } 494 #content h1, 495 #content h2, 496 #content h3, 497 #content h4, 498 #content h5, 499 #content h6 { 500 color: #000; 501 line-height: 1.5em; 502 margin: 0 0 20px 0; 503 } 504 #content table { 505 border: 1px solid #e7e7e7; 506 margin: 0 -1px 24px 0; 507 text-align: left; 508 width: 100%; 509 } 510 #content tr th, 511 #content thead th { 512 color: #888; 513 font-size: 12px; 514 font-weight: bold; 515 line-height: 18px; 516 padding: 9px 24px; 517 } 518 #content tr td { 519 border-top: 1px solid #e7e7e7; 520 padding: 6px 24px; 521 } 522 #content tr.odd td { 523 background: #f2f7fc; 524 } 525 .hentry { 526 margin: 0 0 48px 0; 527 } 528 .home .sticky { 529 background: #f2f7fc; 530 border-top: 4px solid #000; 531 margin-left: -20px; 532 margin-right: -20px; 533 padding: 18px 20px; 534 } 535 .single .hentry { 536 margin: 0 0 36px 0; 537 } 538 .page-title { 539 color: #000; 540 font-size: 14px; 541 font-weight: bold; 542 margin: 0 0 36px 0; 543 } 544 .page-title span { 545 color: #333; 546 font-size: 16px; 547 font-style: italic; 548 font-weight: normal; 549 } 550 .page-title a:link, 551 .page-title a:visited { 552 color: #888; 553 text-decoration: none; 554 } 555 .page-title a:active, 556 .page-title a:hover { 557 color: #ff4b33; 558 } 559 #content .entry-title { 560 color: #000; 561 font-size: 21px; 562 font-weight: bold; 563 line-height: 1.3em; 564 margin-bottom: 0; 565 } 566 .entry-title a:link, 567 .entry-title a:visited { 568 color: #000; 569 text-decoration: none; 570 } 571 .entry-title a:active, 572 .entry-title a:hover { 573 color: #ff4b33; 574 } 575 .entry-meta { 576 color: #888; 577 font-size: 12px; 578 } 579 .entry-meta abbr, 580 .entry-utility abbr { 581 border: none; 582 } 583 .entry-meta abbr:hover, 584 .entry-utility abbr:hover { 585 border-bottom: 1px dotted #666; 586 } 587 .entry-content, 588 .entry-summary { 589 clear: both; 590 padding: 12px 0 0 0; 591 } 592 #content .entry-summary p:last-child { 593 margin-bottom: 12px; 594 } 595 .entry-content fieldset { 596 border: 1px solid #e7e7e7; 597 margin: 0 0 24px 0; 598 padding: 24px; 599 } 600 .entry-content fieldset legend { 601 background: #fff; 602 color: #000; 603 font-weight: bold; 604 padding: 0 4px; 605 } 606 .entry-content input { 607 margin: 0 0 24px 0; 608 } 609 .entry-content input.file, 610 .entry-content input.button { 611 margin-right: 24px; 612 } 613 .entry-content label { 614 color: #888; 615 font-size: 12px; 616 } 617 .entry-content select { 618 margin: 0 0 24px 0; 619 } 620 .entry-content sup, 621 .entry-content sub { 622 font-size: 10px; 623 } 624 .entry-content blockquote.left { 625 float: left; 626 margin-left: 0; 627 margin-right: 24px; 628 text-align: right; 629 width: 33%; 630 } 631 .entry-content blockquote.right { 632 float: right; 633 margin-left: 24px; 634 margin-right: 0; 635 text-align: left; 636 width: 33%; 637 } 638 .page-link { 639 color: #000; 640 font-weight: bold; 641 margin: 0 0 22px 0; 642 word-spacing: 0.5em; 643 } 644 .page-link a:link, 645 .page-link a:visited { 646 background: #f1f1f1; 647 color: #333; 648 font-weight: normal; 649 padding: 0.5em 0.75em; 650 text-decoration: none; 651 } 652 .home .sticky .page-link a { 653 background: #d9e8f7; 654 } 655 .page-link a:active, 656 .page-link a:hover { 657 color: #ff4b33; 658 } 659 body.page .edit-link { 660 clear: both; 661 display: block; 662 } 663 #entry-author-info { 664 background: #f2f7fc; 665 border-top: 4px solid #000; 666 clear: both; 667 font-size: 14px; 668 line-height: 20px; 669 margin: 24px 0; 670 overflow: hidden; 671 padding: 18px 20px; 672 } 673 #entry-author-info #author-avatar { 674 background: #fff; 675 border: 1px solid #e7e7e7; 676 float: left; 677 height: 60px; 678 margin: 0 -104px 0 0; 679 padding: 11px; 680 } 681 #entry-author-info #author-description { 682 float: left; 683 margin: 0 0 0 104px; 684 } 685 #entry-author-info h2 { 686 color: #000; 687 font-size: 100%; 688 font-weight: bold; 689 margin-bottom: 0; 690 } 691 .entry-utility { 692 clear: both; 693 color: #888; 694 font-size: 12px; 695 line-height: 18px; 696 } 697 .entry-meta a, 698 .entry-utility a { 699 color: #888; 700 } 701 .entry-meta a:hover, 702 .entry-utility a:hover { 703 color: #ff4b33; 704 } 705 #content .video-player { 706 padding: 0; 707 } 708 709 710 /* =Asides 711 -------------------------------------------------------------- */ 712 713 .home #content .category-asides p { 714 font-size: 14px; 715 line-height: 20px; 716 margin-bottom: 10px; 717 margin-top: 0; 718 } 719 .home .hentry.category-asides { 720 padding: 0; 721 } 722 .home #content .category-asides .entry-content { 723 padding-top: 0; 724 } 725 726 727 /* =Gallery listing 728 -------------------------------------------------------------- */ 729 730 .category-gallery .size-thumbnail img { 731 border: 10px solid #f1f1f1; 732 margin-bottom: 0; 733 } 734 .category-gallery .gallery-thumb { 735 float: left; 736 margin-right: 20px; 737 margin-top: -4px; 738 } 739 .home #content .category-gallery .entry-utility { 740 padding-top: 4px; 741 } 742 743 744 /* =Attachment pages 745 -------------------------------------------------------------- */ 746 747 .attachment .entry-content .entry-caption { 748 font-size: 140%; 749 margin-top: 24px; 750 } 751 .attachment .entry-content .nav-previous a:before { 752 content: '\2190\00a0'; 753 } 754 .attachment .entry-content .nav-next a:after { 755 content: '\00a0\2192'; 756 } 757 758 759 /* =Images 760 -------------------------------------------------------------- */ 761 762 #content img { 763 margin: 0; 764 height: auto; 765 max-width: 640px; 766 width: auto; 767 } 768 #content .attachment img { 769 max-width: 900px; 770 } 771 #content .alignleft, 772 #content img.alignleft { 773 display: inline; 774 float: left; 775 margin-right: 24px; 776 margin-top: 4px; 777 } 778 #content .alignright, 779 #content img.alignright { 780 display: inline; 781 float: right; 782 margin-left: 24px; 783 margin-top: 4px; 784 } 785 #content .aligncenter, 786 #content img.aligncenter { 787 clear: both; 788 display: block; 789 margin-left: auto; 790 margin-right: auto; 791 } 792 #content img.alignleft, 793 #content img.alignright, 794 #content img.aligncenter { 795 margin-bottom: 12px; 796 } 797 #content .wp-caption { 798 background: #f1f1f1; 799 line-height: 18px; 800 margin-bottom: 20px; 801 padding: 4px; 802 text-align: center; 803 } 804 #content .wp-caption img { 805 margin: 5px 5px 0; 806 } 807 #content .wp-caption p.wp-caption-text { 808 color: #888; 809 font-size: 12px; 810 margin: 5px; 811 } 812 #content .wp-smiley { 813 margin: 0; 814 } 815 #content .gallery { 816 margin: 0 auto 18px; 817 } 818 #content .gallery .gallery-item { 819 float: left; 820 margin-top: 0; 821 text-align: center; 822 width: 33%; 823 } 824 #content .gallery img { 825 border: 2px solid #cfcfcf; 826 } 827 #content .gallery .gallery-caption { 828 color: #888; 829 font-size: 12px; 830 margin: 0 0 12px; 831 } 832 #content .gallery dl { 833 margin: 0; 834 } 835 #content .gallery img { 836 border: 10px solid #f1f1f1; 837 } 838 #content .gallery br+br { 839 display: none; 840 } 841 #content .attachment img { /* single attachment images should be centered */ 842 display: block; 843 margin: 0 auto; 844 } 845 846 847 /* =Navigation 848 -------------------------------------------------------------- */ 849 850 .navigation { 851 color: #888; 852 font-size: 12px; 853 line-height: 18px; 854 overflow: hidden; 855 } 856 .navigation a:link, 857 .navigation a:visited { 858 color: #888; 859 text-decoration: none; 860 } 861 .navigation a:active, 862 .navigation a:hover { 863 color: #ff4b33; 864 } 865 .nav-previous { 866 float: left; 867 width: 50%; 868 } 869 .nav-next { 870 float: right; 871 text-align: right; 872 width: 50%; 873 } 874 #nav-above { 875 margin: 0 0 18px 0; 876 } 877 #nav-above { 878 display: none; 879 } 880 .paged #nav-above, 881 .single #nav-above { 882 display: block; 883 } 884 #nav-below { 885 margin: -18px 0 0 0; 886 } 887 888 889 /* =Comments 890 -------------------------------------------------------------- */ 891 #comments { 892 clear: both; 893 } 894 #comments .navigation { 895 padding: 0 0 18px 0; 896 } 897 h3#comments-title, 898 h3#reply-title { 899 color: #000; 900 font-size: 20px; 901 font-weight: bold; 902 margin-bottom: 0; 903 } 904 h3#comments-title { 905 padding: 24px 0; 906 } 907 .commentlist { 908 list-style: none; 909 margin: 0; 910 } 911 .commentlist li.comment { 912 border-bottom: 1px solid #e7e7e7; 913 line-height: 24px; 914 margin: 0 0 24px 0; 915 padding: 0 0 0 56px; 916 position: relative; 917 } 918 .commentlist li:last-child { 919 border-bottom: none; 920 margin-bottom: 0; 921 } 922 #comments .comment-body ul, 923 #comments .comment-body ol { 924 margin-bottom: 18px; 925 } 926 #comments .comment-body p:last-child { 927 margin-bottom: 6px; 928 } 929 #comments .comment-body blockquote p:last-child { 930 margin-bottom: 24px; 931 } 932 .commentlist ol { 933 list-style: decimal; 934 } 935 .commentlist .avatar { 936 position: absolute; 937 top: 4px; 938 left: 0; 939 } 940 .comment-author { 941 } 942 .comment-author cite { 943 color: #000; 944 font-style: normal; 945 font-weight: bold; 946 } 947 .comment-author .says { 948 font-style: italic; 949 } 950 .comment-meta { 951 font-size: 12px; 952 margin: 0 0 18px 0; 953 } 954 .comment-meta a:link, 955 .comment-meta a:visited { 956 color: #888; 957 text-decoration: none; 958 } 959 .comment-meta a:active, 960 .comment-meta a:hover { 961 color: #ff4b33; 962 } 963 .commentlist .even { 964 } 965 .commentlist .bypostauthor { 966 } 967 .reply { 968 font-size: 12px; 969 padding: 0 0 24px 0; 970 } 971 .reply a, 972 a.comment-edit-link { 973 color: #888; 974 } 975 .reply a:hover, 976 a.comment-edit-link:hover { 977 color: #ff4b33; 978 } 979 .commentlist .children { 980 list-style: none; 981 margin: 0; 982 } 983 .commentlist .children li { 984 border: none; 985 margin: 0; 986 } 987 .nopassword, 988 .nocomments { 989 display: none; 990 } 991 #comments .pingback { 992 border-bottom: 1px solid #e7e7e7; 993 margin-bottom: 18px; 994 padding-bottom: 18px; 995 } 996 .commentlist li.comment+li.pingback { 997 margin-top: -6px; 998 } 999 #comments .pingback p { 1000 color: #888; 1001 display: block; 1002 font-size: 12px; 1003 line-height: 18px; 1004 margin: 0; 1005 } 1006 #comments .pingback .url { 1007 font-size: 13px; 1008 font-style: italic; 1009 } 1010 1011 /* Comments form */ 1012 input[type=submit] { 1013 color: #333; 1014 } 1015 #respond { 1016 border-top: 1px solid #e7e7e7; 1017 margin: 24px 0; 1018 overflow: hidden; 1019 position: relative; 1020 } 1021 #respond p { 1022 margin: 0; 1023 } 1024 #respond .comment-notes { 1025 margin-bottom: 1em; 1026 } 1027 .form-allowed-tags { 1028 line-height: 1em; 1029 } 1030 .children #respond { 1031 margin: 0 48px 0 0; 1032 } 1033 h3#reply-title { 1034 margin: 18px 0; 1035 } 1036 #comments-list #respond { 1037 margin: 0 0 18px 0; 1038 } 1039 #comments-list ul #respond { 1040 margin: 0; 1041 } 1042 #cancel-comment-reply-link { 1043 font-size: 12px; 1044 font-weight: normal; 1045 line-height: 18px; 1046 } 1047 #respond .required { 1048 color: #ff4b33; 1049 font-weight: bold; 1050 } 1051 #respond label { 1052 color: #888; 1053 font-size: 12px; 1054 } 1055 #respond input { 1056 margin: 0 0 9px; 1057 width: 98%; 1058 } 1059 #respond textarea { 1060 width: 98%; 1061 } 1062 #respond .form-allowed-tags { 1063 color: #888; 1064 font-size: 12px; 1065 line-height: 18px; 1066 } 1067 #respond .form-allowed-tags code { 1068 font-size: 11px; 1069 } 1070 #respond .form-submit { 1071 margin: 12px 0; 1072 } 1073 #respond .form-submit input { 1074 font-size: 14px; 1075 width: auto; 1076 } 1077 1078 1079 /* =Widget Areas 1080 -------------------------------------------------------------- */ 1081 1082 .widget-area ul { 1083 list-style: none; 1084 margin-left: 0; 1085 } 1086 .widget-area ul ul { 1087 list-style: square; 1088 margin-left: 1.3em; 1089 } 1090 .widget_search #s {/* This keeps the search inputs in line */ 1091 width: 60%; 1092 } 1093 .widget_search label { 1094 display: none; 1095 } 1096 .widget-container { 1097 margin: 0 0 18px 0; 1098 } 1099 .widget-title { 1100 color: #222; 1101 font-weight: bold; 1102 } 1103 .widget-area a:link, 1104 .widget-area a:visited { 1105 text-decoration: none; 1106 } 1107 .widget-area a:active, 1108 .widget-area a:hover { 1109 text-decoration: underline; 1110 } 1111 .widget-area .entry-meta { 1112 font-size: 11px; 1113 } 1114 #wp_tag_cloud div { 1115 line-height: 1.6em; 1116 } 1117 #wp-calendar { 1118 width: 100%; 1119 } 1120 #wp-calendar caption { 1121 color: #222; 1122 font-size: 14px; 1123 font-weight: bold; 1124 padding-bottom: 4px; 1125 text-align: left; 1126 } 1127 #wp-calendar thead { 1128 font-size: 11px; 1129 } 1130 #wp-calendar thead th { 1131 } 1132 #wp-calendar tbody { 1133 color: #aaa; 1134 } 1135 #wp-calendar tbody td { 1136 background: #f5f5f5; 1137 border: 1px solid #fff; 1138 padding: 3px 0 2px; 1139 text-align: center; 1140 } 1141 #wp-calendar tbody .pad { 1142 background: none; 1143 } 1144 #wp-calendar tfoot #next { 1145 text-align: right; 1146 } 1147 .widget_rss a.rsswidget { 1148 color: #000; 1149 } 1150 .widget_rss a.rsswidget:hover { 1151 color: #ff4b33; 1152 } 1153 .widget_rss .widget-title img { 1154 width: 11px; 1155 height: 11px; 1156 } 1157 1158 /* Main sidebars */ 1159 #main .widget-area ul { 1160 margin-left: 0; 1161 padding: 0 20px 0 0; 1162 } 1163 #main .widget-area ul ul { 1164 border: none; 1165 margin-left: 1.3em; 1166 padding: 0; 1167 } 1168 #primary { 1169 } 1170 #secondary { 1171 } 1172 1173 /* Footer widget areas */ 1174 #footer-widget-area { 1175 } 1176 1177 1178 /* =Footer 1179 -------------------------------------------------------------- */ 1180 1181 #footer { 1182 margin-bottom: 20px; 1183 } 1184 #colophon { 1185 border-top: 4px solid #000; 1186 margin-top: -4px; 1187 overflow: hidden; 1188 padding: 18px 0; 1189 } 1190 #site-info { 1191 font-weight: bold; 1192 } 1193 #site-info a { 1194 color: #000; 1195 text-decoration: none; 1196 } 1197 #site-generator { 1198 font-style: italic; 1199 position: relative; 1200 } 1201 #site-generator a { 1202 background: url(images/wordpress.png) center left no-repeat; 1203 color: #666; 1204 display: inline-block; 1205 line-height: 16px; 1206 padding-left: 20px; 1207 text-decoration: none; 1208 } 1209 #site-generator a:hover { 1210 text-decoration: underline; 1211 } 1212 img#wpstats { 1213 display: block; 1214 margin: 0 auto 10px; 1215 } 1216 1217 1218 /* =Mobile Safari ( iPad, iPhone and iPod Touch ) 1219 -------------------------------------------------------------- */ 1220 1221 pre { 1222 -webkit-text-size-adjust: 140%; 1223 } 1224 code { 1225 -webkit-text-size-adjust: 160%; 1226 } 1227 #access, 1228 .entry-meta, 1229 .entry-utility, 1230 .navigation, 1231 .widget-area { 1232 -webkit-text-size-adjust: 120%; 1233 } 1234 #site-description { 1235 -webkit-text-size-adjust: none; 1236 } 1237 1238 1239 /* =Print Style 1240 -------------------------------------------------------------- */ 1241 1242 @media print { 1243 body { 1244 background: none !important; 1245 } 1246 #wrapper { 1247 clear: both !important; 1248 display: block !important; 1249 float: none !important; 1250 position: relative !important; 1251 } 1252 #header { 1253 border-bottom: 2pt solid #000; 1254 padding-bottom: 18pt; 1255 } 1256 #colophon { 1257 border-top: 2pt solid #000; 1258 } 1259 #site-title, 1260 #site-description { 1261 float: none; 1262 line-height: 1.4em; 1263 margin: 0; 1264 padding: 0; 1265 } 1266 #site-title { 1267 font-size: 13pt; 1268 } 1269 .entry-content { 1270 font-size: 14pt; 1271 line-height: 1.6em; 1272 } 1273 .entry-title { 1274 font-size: 21pt; 1275 } 1276 #access, 1277 #branding img, 1278 #respond, 1279 .comment-edit-link, 1280 .edit-link, 1281 .navigation, 1282 .page-link, 1283 .widget-area { 1284 display: none !important; 1285 } 1286 #container, 1287 #header, 1288 #footer { 1289 margin: 0; 1290 width: 100%; 1291 } 1292 #content, 1293 .one-column #content { 1294 margin: 24pt 0 0; 1295 width: 100%; 1296 } 1297 .wp-caption p { 1298 font-size: 11pt; 1299 } 1300 #site-info, 1301 #site-generator { 1302 float: none; 1303 width: auto; 1304 } 1305 #colophon { 1306 width: auto; 1307 } 1308 img#wpstats { 1309 display: none; 1310 } 1311 #site-generator a { 1312 margin: 0; 1313 padding: 0; 1314 } 1315 #entry-author-info { 1316 border: 1px solid #e7e7e7; 1317 } 1318 #main { 1319 display: inline; 1320 } 1321 .home .sticky { 1322 border: none; 1323 } 1324 } 1325 1326 /* bbPress Style 1327 -------------------------------------------------------------- */ 1328 1329 hr { margin: 0 0 24px 0 !important; } 1330 #entry-author-info { 1331 margin: 10px 0 0 0; 1332 border-bottom: 1px solid #fff; 1333 } 1334 1335 /* tables */ 1336 table.bbp-forums th, table.bbp-topics th, 1337 table.bbp-topic th, table.bbp-replies th { 1338 background-color: #f5f5f5; 1339 } 1340 table.bbp-forums th span, table.bbp-topics th span, 1341 table.bbp-topic th span, table.bbp-replies th span { 1342 float: right; 1343 } 1344 table.bbp-forums tfoot td, table.bbp-topics tfoot td, 1345 table.bbp-topic tfoot td, table.bbp-replies tfoot td, 1346 tr.bbp-reply-header td, tr.bbp-topic-header td { 1347 background-color: #fafafa; 1348 color: #888; 1349 font-size: 12px; 1350 font-weight: bold; 1351 font-family: 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; 1352 } 1353 1354 .bbp-forum-topic-count, .bbp-forum-topic-replies, 1355 .bbp-topic-reply-count, .bbp-topic-voice-count, .bbp-topic-action { 1356 width: 10%; 1357 text-align: center; 1358 } 1359 .bbp-topic-freshness, .bbp-forum-freshness { 1360 text-align: center; 1361 width: 20%; 1362 } 1363 .bbp-topic-author, .bbp-reply-author { 1364 width: 90px; 1365 text-align: center; 1366 padding: 0 10px; 1367 } 1368 1369 .bbp-topic-content, .bbp-reply-content { 1370 vertical-align: top; 1371 } 1372 span.bbp-admin-links { 1373 float: right; 1374 color: #d0d0d0; 1375 } 1376 1377 .bbp-topic-action #favorite-toggle a { 1378 text-decoration: none; 1379 padding: 0px 3px 1px; 1380 color: #7c7; 1381 border: 1px solid #aca; 1382 background-color: #dfd; 1383 font-weight: bold; 1384 font-size: 13px; 1385 -moz-border-radius: 8px; 1386 -webkit-border-radius: 8px; 1387 } 1388 .bbp-topic-action #favorite-toggle a:hover { 1389 color: #5a5; 1390 border-color: #7c7; 1391 background-color: #beb; 1392 } 1393 .bbp-topic-action #favorite-toggle span.is-favorite a { 1394 color: #faa; 1395 border: 1px solid #faa; 1396 background-color: #fee; 1397 -moz-border-radius: 5px; 1398 -webkit-border-radius: 5px; 1399 } 1400 .bbp-topic-action #favorite-toggle span.is-favorite a:hover { 1401 color: #c88; 1402 border-color: #c88; 1403 background-color: #fdd; 1404 } 1405 1406 .bbp-reply-header td { 1407 background-color: #fafafa; 1408 } 1409 #content p.bbp-topic-meta { 1410 margin-bottom: 0; 1411 font-size: 0.7em; 1412 } 1413 1414 /* pagination */ 1415 .bbp-pagination-count { 1416 float: left; 1417 } 1418 .bbp-pagination-links { 1419 float: right; 1420 } 1421 .bbp-pagination { 1422 float: left; 1423 width: 100%; 1424 margin-bottom: 20px; 1425 } 1426 1427 /* forms */ 1428 .bbp-topic-form, .bbp-reply-form { 1429 clear: left; 1430 } 9 * 10 ** 11 * 12 * This file intentionally left blank. Styles are enqueued in functions.php 13 * 14 * Please see: 15 * 16 * - /css/twentyten.css 17 * 18 * - /css/bbpress.css 19 * 20 **/
Note: See TracChangeset
for help on using the changeset viewer.