<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][4122] trunk/bp-core: Adds column to the Pages Dashboard panel with information about associated BP components, if any.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg > ul, #logmsg > ol { margin-left: 0; margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd>4122</dd>
<dt>Author</dt> <dd>boonebgorges</dd>
<dt>Date</dt> <dd>2011-03-11 23:59:27 +0000 (Fri, 11 Mar 2011)</dd>
</dl>

<h3>Log Message</h3>
<pre>Adds column to the Pages Dashboard panel with information about associated BP components, if any. Adds meta box to Edit Page panel with information about the associated page. Fixes #3027. Fixes #3028</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbpcorebpcorecssjsphp">trunk/bp-core/bp-core-cssjs.php</a></li>
<li><a href="#trunkbpcorebpcorefunctionsphp">trunk/bp-core/bp-core-functions.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkbpcoreimageslogocolumnheaderpng">trunk/bp-core/images/logo-column-header.png</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbpcorebpcorecssjsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-cssjs.php (4121 => 4122)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-cssjs.php        2011-03-11 22:51:08 UTC (rev 4121)
+++ trunk/bp-core/bp-core-cssjs.php        2011-03-11 23:59:27 UTC (rev 4122)
</span><span class="lines">@@ -25,6 +25,8 @@
</span><span class="cx">                 ul#adminmenu li.toplevel_page_bp-general-settings.wp-has-current-submenu .wp-menu-image a {
</span><span class="cx">                         background-position: -1px 0;
</span><span class="cx">                 }
</span><ins>+                
+                .fixed .column-bp-pages { width: 10em; margin: auto 5px; }
</ins><span class="cx">         &lt;/style&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;?php
</span></span></pre></div>
<a id="trunkbpcorebpcorefunctionsphp"></a>
<div class="modfile"><h4>Modified: trunk/bp-core/bp-core-functions.php (4121 => 4122)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/bp-core-functions.php        2011-03-11 22:51:08 UTC (rev 4121)
+++ trunk/bp-core/bp-core-functions.php        2011-03-11 23:59:27 UTC (rev 4122)
</span><span class="lines">@@ -77,6 +77,115 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * Adds an addition column to the Pages screen (edit.php?post_type=page) to display whether a
+ * page is linked to a BP component
+ *
+ * @package BuddyPress Core 
+ * @since 1.3
+ *
+ * @param array $columns The column setup array, passed by manage_pages_columns
+ * @return array $columns The column setup array with the BP column added
+ */
+function bp_core_add_pages_column_header( $columns ) {
+        $columns['bp-pages'] = '&lt;div class=&quot;vers&quot;&gt;&lt;img src=&quot;' . BP_PLUGIN_URL . '/bp-core/images/logo-column-header.png&quot; title=&quot;' . __( 'Is this page associated with a BuddyPress component?', 'buddypress' ) . '&quot; /&gt;&lt;/div&gt;';
+        
+        return $columns;
+}
+add_filter( 'manage_pages_columns', 'bp_core_add_pages_column_header' );
+
+/**
+ * Adds the associated component name to the Pages column
+ *
+ * For most components, the translatable name can be fetched out of the $bp global. 'register' and
+ * 'activate' are handled as special cases.
+ *
+ * @package BuddyPress Core 
+ * @since 1.3
+ */
+function bp_core_add_pages_column_content() {
+        global $bp;
+        
+        foreach( (array)$bp-&gt;pages as $component =&gt; $page_data ) {
+                if ( $page_data-&gt;id == get_the_ID() ) {
+                        if ( isset( $bp-&gt;{$component}-&gt;name ) ) {
+                                $text = $bp-&gt;{$component}-&gt;name;
+                        } else if ( 'register' == $component ) {
+                                $text = __( 'Register', 'buddypress' );
+                        } else if ( 'activate' == $component ) {
+                                $text = __( 'Activate', 'buddypress' );
+                        } else {
+                                $text = '';
+                        }
+                        
+                        echo apply_filters( 'bp_core_pages_column_text', $text, $component );
+                        break;
+                }
+        }
+        
+}
+add_filter( 'manage_pages_custom_column', 'bp_core_add_pages_column_content' );
+
+
+/**
+ * Adds a meta box to the Edit Page panel containing BP information
+ *
+ * @package BuddyPress Core 
+ * @since 1.3
+ * @uses add_meta_box() to add the meta box
+ */
+function bp_core_add_meta_box() {
+        $post_id = isset( $_GET['post'] ) ? $_GET['post'] : false;
+        
+        // Don't show the meta box on the New Page screen
+        if ( !$post_id )
+                return;
+        
+        add_meta_box( 'bp_pages_meta', __( 'BuddyPress', 'buddypress' ), 'bp_core_meta_box_content', 'page', 'side' );
+}
+add_action( 'admin_init', 'bp_core_add_meta_box' );
+
+/**
+ * Renders the content of the Edit Page meta box
+ *
+ * @package BuddyPress Core 
+ * @since 1.3
+ */
+function bp_core_meta_box_content() {
+        global $bp;
+
+        $post_id = isset( $_GET['post'] ) ? $_GET['post'] : false;
+        
+        // Get the name of the associated component
+        foreach( (array)$bp-&gt;pages as $component =&gt; $page_data ) {
+                if ( $page_data-&gt;id == $post_id ) {
+                        if ( isset( $bp-&gt;{$component}-&gt;name ) ) {
+                                $text = $bp-&gt;{$component}-&gt;name;
+                        } else if ( 'register' == $component ) {
+                                $text = __( 'Register', 'buddypress' );
+                        } else if ( 'activate' == $component ) {
+                                $text = __( 'Activate', 'buddypress' );
+                        } else {
+                                $text = '';
+                        }
+                        
+                        $bp-&gt;this_dashboard_edit_page_name =  apply_filters( 'bp_core_meta_box_page_name', $text, $component );
+                        break;
+                }
+        }
+?&gt;
+
+        &lt;?php if ( !empty( $bp-&gt;this_dashboard_edit_page_name ) ) : ?&gt;
+                &lt;p&gt;&lt;?php printf( __( 'This page is associated with a BuddyPress component: &lt;strong&gt;%1$s&lt;/strong&gt;.', 'buddypress' ), $bp-&gt;this_dashboard_edit_page_name ) ?&gt;&lt;/p&gt;
+        &lt;?php else : ?&gt;
+                &lt;p&gt;&lt;?php _e( 'This page is not associated with a BuddyPress component.', 'buddypress' ) ?&gt;&lt;/p&gt;
+        &lt;?php endif ?&gt;
+        
+        &lt;p&gt;&lt;?php printf( __( 'Visit the &lt;a href=&quot;%1$s&quot;&gt;BuddyPress component setup panel&lt;/a&gt; to change your BuddyPress component settings.', 'buddypress' ), network_admin_url( 'admin.php?page=bp-general-settings' ) ) ?&gt;&lt;/p&gt;
+
+&lt;?php
+}
+
+/**
</ins><span class="cx">  * Creates a default component slug from a WP page root_slug
</span><span class="cx">  *
</span><span class="cx">  * Since 1.3, BP components get their root_slug (the slug used immediately
</span></span></pre></div>
<a id="trunkbpcoreimageslogocolumnheaderpng"></a>
<div class="addfile"><h4>Added: trunk/bp-core/images/logo-column-header.png (0 => 4122)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/bp-core/images/logo-column-header.png                                (rev 0)
+++ trunk/bp-core/images/logo-column-header.png        2011-03-11 23:59:27 UTC (rev 4122)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+\x89PNG
+
+ +IHDRB \x95\xEEiCCPICC Profilex\x85T\xCFkA\xFE6n\xA9\xD0&quot;Zk\xB2x\x90&quot;IY\xABhE\xD46\xFDbk \xDB\xB6E\x90d3I\xD6n6\xEB\xEE&amp;\xB5\xA5\x88\xE4\xE2\xD1*\xDEE\xED\xA1\xFF\x80z\xF0d/J\x85ZE(ޫ(b\xA1-\xF1\xCDnL\xB6\xA5\xEA\xC0\xCE~\xF3\xDE7\xEF}ov\xDF +r\xD24\xF5\x80\xE4 +\xC7R\xA2il|Bj\xFC\x88\x8E\xA2        A4%U\xDB\xECN$A\x83s\xF9{\xE7\xD8z\x81[V\xC3{\xFBw\xB2w\xAD\x9AҶ\x9A\x84\xFD@\xE0G\x9A\xD9*\xB0\xEFq
+Y\x88&lt;ߡ)\xC7t\xDF\xE3\xD8\xF2\xEC\x8F9Nyx\xC1\xB5+=\xC4Y&quot;|@5-\xCEM\xB8S\xCD%\xD3@\x83H8\x94\xF5qR&gt;\x9C׋\x94\xD7inf\xC6\xC8\xBDO\x90\xA6\xBB\xCC\xEE\xABb\xA1\x9CN\xF6\x90\xBD\x9D\xF4~N\xB3\xDE&gt;\xC2!\xC2 \xAD?F\xB8\x8D\x9E\xF5\x8C\xD5?\xE2a\xE1\xA4\xE6Ć=5\xF4\xF8`\xB7\xA9\xF85\xC2_M'\xA2Tq\xD9. +\xF1\x98\xAE\xFDV\xF2J\x82p\x908\xCAda\x80sZHO\xD7Ln\xF8\xBA\x87}&amp;\xD7\xAF\xE2wVQ\xE1y\x8Fg\xDE\xD4\xDD\xEFE\xDA\xAF0  \x9A +HPEa\x98\xB0P@\x86&lt;14\xB2r?#\xAB\x93{2u$j\xBBtbD\xB1A{6\xDC=\xB7Q\xA4\xDD&lt;\xFE(&quot;q\x94C\xB5\x92\xFCA\xFE*\xAF\xC9O\xE5y\xF9\xCB\\xB0\xD8V\x{1D4B5B}\x9A\xBA\xF2\xE0;\xC5噹\xD7\xD3\xC8\xE3sM^|\x95\xD4v\x93WG\x96\xACyz\xBC\x9A\xEC?\xECW\x971\xE6\x825\x8F\xC4s\xB0\xFB\xF1-_\x95̗)\x8C\xC5\xE3U\xF3\xEAK\x84uZ17ߟl;=\xE2.\xCF.\xB5\xD6s\xAD\x89\x8B7V\x9B\x97g\xFDjH\xFB\x93\xE6U\xF9O^\xF5\xF1\xFCg\xCD\xC4c\xE2)1&amp;v\x8A\xE7!\x89\x97\xC5.\xF1\x92\xD8K\xAB \xE2`m\xC7\x9D\x95\x86)\xD2m\x91\xFA$\xD5``\x9
 A\xBC\xF5/]?[x\xBDF \xF5Q\x94\xCC\xD2T\x89\xF7\xC2*d4\x9D\xB9o\xFA\x8F\xDB\xC7\xFC\xE4\xF7\x8A\xE7\x9F(/l\xE0ș\xBAmSq\xEF\xA1e\xA5ns\xAE\xBF\xD1}\xF0\xB6nk\xA3~8\xFCX&lt;\xAB\xADR5\x9F \xBCv\x87z\xE8)\x98Ӗ\x96\xCD9R\x87,\x9F\x93\xBA\xE9\xCAbR\xCCP\xDBCRR\xD7%\xD7eK\xB3\x99Ub\xE9vؙ\xD3n\xA19B\xF7ħJe\x93\xFA\xAF\xF1\xB0\xFD\xB0R\xF9\xF9\xACR\xD9~Nց\x97\xFAo\xC0\xBC\xFDE\xC0x\x8B\x89        pHYs  \x9A\x9C^IDAT8\xB5\x94mL\x93W\xC7}\xA3T\xA4-bE3        ['S\xE74\xA0\xCB\\xA2S\xB29\xA7\x90L\xB3d\x93\xA8qa\x9Fts˦Q\xB3lK\x96\xC8\xFCD\xFC\xB0̈́/K\x84L\xABQ ꔔ̗\x89\xC2\xDCp\x84\xDD\xA5ҵ\xBD\xBB\xF7!\x85&gt;\xF7Inr\x9F{r\xCF\xFF\xFC\x9E\xF3\x9C{\xEEcB0\xC38PŜ6\xB0\xF9\xFF2\xEEo\xBE$\xFE&gt;\xF1\xC1[W\xEBҤ\xD6L'\xB6\xA5\xAB\x98\xBD\xED\+\xD6\x9EoxR\x8D\xDB+v\x89\x81\x9A\xE38
+72sE#w~\xD63\xE61\xD2\\xCFÆ3\xA4\xBF\xB5\xF7\xBE濾O        nٚ#&quot;\x8F\x82\xB8\xDE?BG] +\xBDW}\xFF\xF2\x93.\xBF\xCFb\xF3B\xCF\xEE&gt;D\xFF\xB1\x8F0%\xDBx\xA1\xBA3\x9E\xFE\xF5\xC3 +&quot;\xFC\xA0 gٗ\xF8\xF6o\xC7\xE2\x92!aVx*\xBDZֽ_\x97\xD3\xDD\xD1˒#5 U\xC0&lt;/\x9B\xE7+\xEA\xF5pU\x8A\xD8\xECk&lt;-\x9A\xF2\xF7\xAF4\x88\xEA&lt;\x8B\xF0\xBA-%ψ\x81&amp;\xAF6\xE3\xED\xC6Eh\xA5U1}\xBEs3\xC9\xD2e|k\xCFzaJ\xB5\xF9\xBD\xBA\x96,+,?\xEB\\xB7\x96\xE9؃v~+\xF5\x90s\xD4K\xDB\xCEMt\x8D\xC1s[K\x98a
+ +\xB2\xF4h\xC3Dֺv ܼ\x88uY\xFD?\xC95&amp;        G&amp;^\xD9r\xBF\xAFr/i&amp;\xCBh\xA5M~\xB1\x90\xE1\xE6 \x93:i\xE9\xC0\xFF\xC0h\xAB\x8FP\xDFI\xD2\xF3(
+|\xFA:*S5\x95\x9Bg         J\x8B\xC9J\x83\x88\xD4~\xF9\x86\xA48n$\x{131204}\xB1H\xE8\x9CTpc\xB6;i-\xF6h!ooÚ\xE5a\xF0\xEC)2+\xEB\xE9\xC4v\xE3\x8E\xF4\x89&gt;\xF6gЃ\xED\xF2\xF4sWcO\xFF[f6\xA9\x9B?Ѐ\x8E\x9E{\xDAj[\xB7C[P +\x83Ɍթb^&amp;z\xA9Vۋ=t`\xE3\xA2U\xF8\xAFՑ\xE2Y\xA1\x91\x98\x86\xB4w?\x9F\xB0\x95\xA1\x80w\xCB
+Q\xD5wlyS\x8B1\xC9\xD8\xF8\xA1\xCFz\xA3\x9C\xF6\xC3e\xB8\xB7\x97ni\x94`o\xBC6\xCE?Y\xB3K\x95\xAB\x8C\xD6=[pV\xE7\x97/W\xBD?.\xBE\xB3R\x98\x83\xCCyi-\xFE\xC7\xE5        \xC6{\xC7mUOc\xCC\xFD\xF8{\xBA\xBE=\x88p\xB8XWu%\xD6G\x9A(\xACv\xCF\xCDVC\x98\xEC\xF7\xBE t\xF3,\xC1\x97        \xDD\xD4\x92\xB2\xE4O(\xFFU\x92\x96\xBFF\xE77\x87E\x8Dl\xAC\xEF\xD1A\x95pJ\xB0r\xF8\xF6\x95\x8A\xFBu\xB5d\xACYϬ\xFC\xE8nSې\xB9\x98\xC1\xEB\xE7\xF9\xF3\xF2\xE6\x97\xF0J\xC5\xC9\xA8\x92\xE9\xC0m\xB7E\xE0\x9Fa\xD4 \x86\xE9\xBF}\x93\x97\x88\xEC\xE3\xC3Q\xA5'ꘁi~i\xAB7\xE1\xCA\xCDǖ\x92J\x8A}|.X\x9C;\xF1X\x8B|J\xDD\xCD{JL +\xF3=\xC0c\xE35\xB3\xF1IEND\xAEB`\x82
</ins><span class="cx">\ No newline at end of file
</span></span></pre>
</div>
</div>

</body>
</html>