Displaying the BuddyPress admin bar in other applications

By popular demand, here’s the method we used at the CUNY Academic Commons to get the BuddyPress admin bar to appear on the non-WP/BP portions of our site. In our case, that means MediaWiki and bbPress, but theoretically this method could work for any kind of software out there.

I should note that I did not devise this method. It was invented by the inimitable Zach and Lucas of Cast Iron Coding.

The concept is as follows. A bit of jQuery looks for a div of a certain ID on a page and, when it finds it, opens a dummy WP page that contains essentially nothing but the BP admin bar loader, which then appears on your page. Download the zip file containing the necessary files (admin-bar-integration) and follow these steps to make it happen.

  1. Upload the file page-component.php to your WP theme directory.
  2. Create a new page in WordPress. The page should be blank. In the Attributes box, select the Template called “Component (do not use)”. Name the page bpnavslug and publish it, making sure that you take note of the permalink. You’ll need that URL (relative to your site’s webroot) in step 4.
  3. If any part of your site creates a menu or a list of your WordPress pages, you’ll want to exclude this empty page from those listings. Find the function call wp_list_pages in your theme (often in header.php or index.php) and add an exclude argument. For example, if the page number of bpnavslug is 4, make sure all references to wp_list_pages read wp_list_pages('exclude=4').
  4. Open the file bp-bar-integration.js. On line 3, you’ll see the path /bpnavslug/. Replace it with the path to the bpnavslug post you created in step 2.
  5. Upload bp-bar-integration.js to your server. For the sake of argument, I’ll put mine at /wp-content/js/bp-bar-integration.js.
  6. Now let’s turn to the application where you want the admin bar to appear. Open the theme file that contains the </body> tag. In bbPress, for example, this is usually footer.php.
  7. Immediately before the body close tag, paste the following code:
    <div id="bpContainer">
    </div>
  8. Next, open the template file that contains the document head (header.php in bbPress, for instance). Make sure that jQuery is also called somewhere in the head. If it’s not, the following code will call up jQuery on a standard installation of WP:
    <script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
    Now paste the following line somewhere in the head (make sure it comes after the call to jQuery):
    <script type="text/javascript" src="/wp-content/js/bp-bar-integration.js"></script>
    Be sure to replace the src attribute with path from your upload in step 5.
    Finally, you’ll have to include the CSS for the admin bar. On a default installation of BuddyPress 1.0.3 or less, the following code will work:
    <link rel='stylesheet' id='bp-admin-bar-css' href='/wp-content/plugins/buddypress/bp-core/css/admin-bar.css' type='text/css' media='screen' />
    On a more recent version of BP (1.1+), the admin bar stylesheet has been rolled in with the rest of the styles. Either create your own stylesheet containing just the admin bar code, or import the entire stylesheet:
    <link rel='stylesheet' id='bp-admin-bar-css' href='/wp-content/themes/bp-default/style.css' type='text/css' media='screen' />

A note: This method appears to be incompatible with the Google Analytics WP plugin (which appends Google’s JS to the footer of every WP page, and thus into bpnavslug, and ends up gumming up the works). You could probably get around this with some creative if-statements in the GA plugin itself.

Good luck. Because of the diversity of people’s setups, I can’t guarantee that this method will work for everyone, nor can I provide support to everyone who tries it. But I do encourage you to post whether you’ve been successful in the comments, and to help each other figure things out.

Translate Group Forum Subscription for BuddyPress

With a lot of help from users, Group Forum Subscription is becoming pretty stable (and widely used!). I’ll be releasing the next version 1.3 within the next few days, and one of the new features is localization. If you’re using the plugin for a site in a language other than English, I encourage you to have a go at creating a translation and, if you’d like, providing it to me for release with future versions.

Never translated a WordPress plugin before? Neither had I, until the other day when I put my rusty French to work on this plugin. The process is quite easy. There are two ways to do it:

  1. If you think you’ll find yourself translating often, I encourage you to follow the instructions at http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/. The program PoEdit that the author recommends is (once you get it installed) very, very easy to use, and it remembers your translations of commons words and phrases for future use. If you take this route, please send both the .po and the .mo files to me or to cunycommons@gmail.com, and don’t forget to include your name in the email, blog comment, or .po metadata, so that you receive credit for your work. Make sure you use the trunk version of the plugin, available at http://svn.wp-plugins.org/group-forum-subscription-for-buddypress/trunk/, as the stable version does not contain the localization code.
  2. If you’d rather not install a program, you can download my French translation group-forum-subscription-fr_FR and edit it in a plain-text editor (like Notepad or TextEdit – not Word!). The lines beginning “msgid” are the original English. The lines beginning “msgstr” are the translations. Replace the French translations with translations in your language and post/send the file to me.

Thanks for your help!

Group Forum Subscription v1.1

If you’re using Group Forum Subscription for BuddyPress, you might like to know that I’ve just pushed out v1.1. There’s nothing new in terms of functionality, but a lot of small bugs have been fixed, as well as a fairly large bug that was affecting automatic subscription on the joining/leaving of BP groups. Download the latest version through your WP Plugins panel, or download it from wordpress.org.

Thanks to r-a-y, MarkS, WestPointer, and other users for helping me to spot and squash those bugs!

New BuddyPress / bbPress plugin: Group Forum Subscription

BuddyPress and bbPress connect nicely, giving BuddyPress groups a handsome forum interface, but the software has no native ability to allow users to receive email when their favorite discussions are updated. Without this functionality, it can be hard for users to keep up-to-date with forums, and subsequently the forums are less active than they otherwise could be.

Subscription panel on group home page
A panel on each group home page lets users know whether they'll automatically receive email notifications of new discussion activity in the group

Group Forum Subscription is a set of plugins I’ve written (mostly on the BuddyPress side, with a small bbPress trigger plugin) that adds the missing forum notification functionality. GFS allows members of BuddyPress communities to subscribe to email notifications of new discussion activity. Subscriptions can be managed on a topic-by-topic or group-by-group basis.

Users can subscribe or unsubscribe from entire groups on the Notification Settings page
Users can subscribe or unsubscribe from entire groups on the Notification Settings page

The plugin also has some administrative settings. Notable among these is the ability to set up email notifications for the first time after the plugin is installed, so that users are automatically subscribed to topics in their groups without having to set it up manually. This is a setup process that we’ll be running in the upcoming days here on the CUNY Academic Commons.

Group Forum Subscription will currently work only on 1.0.x versions of BuddyPress – the brand-new BP 1.1 is not yet supported. I’ll be working on the upgrade very soon. Read more about the guts of the plugin or download it for yourself.

New WordPress plugin: Sitewide Tag Suggestion

WordPress’s Post Tags box, which appears on each Edit Post and Add New Post screen, has a great feature called “Choose from the most used tags in Post Tags”. This link allows you to see which tags you’ve used frequently in the past and apply them to your current blog post. The feature gives rise to two nice effects. One is that you avoid ending up with a lot of close-but-not-quite-identical tags on your blog (like “WordPress”, “WP”, “Word Press”, and so on) that, because they aren’t grouped together, tend to defeat the organizing purpose of tags. Another benefit is that it reminds you of the things you found important in past posts, and encourages you to mark your current post with the same tags, if relevant.

Sitewide Tag Suggestion
Sitewide Tag Suggestion

This plugin (and set of hacks) that I’m calling Sitewide Tag Suggestion allows you to glean the same benefits from the tag collection not just of a single blog, but of all the blogs on a WPMU installation. In short: STS adds another link to the Post Tags box, this one allowing authors choose from the entire community’s most popular tags when composing a post.

If you’ve got a blog on the CUNY Academic Commons, you can take advantage of Sitewide Tag Suggestion today. Just check out the Post Tags box when you’re writing a blog entry.

You can download the plugin here: sitewide-tag-suggestion.php.zip.

Detailed instructions for installation – which, partially as a result of my own ineptitude, involves a few hacks to WPMU’s core code – are contained inside of the file. Please note that WPMU 2.8+ is required, as is Donncha’s Sitewide Tags plugin.

New BuddyPress plugin: Enhanced BuddyPress Widgets

BuddyPress comes with several WordPress widgets, among which are the Groups and Members widgets that you see on the CUNY Academic Commons home page. This plugin makes those widgets a little more customizable, allowing users to specify which of the three tabs (Newest, Active, or Popular) they’d like to be each widget’s default view.

enhanced-bp-widget

If you’ve got a blog on the CUNY Academic Commons, you can start using this feature right away. Just look in Dashboard > Appearance > Widgets. Be sure to select the Groups/Members widgets whose descriptions say “Enhanced”.

You can download the plugin for use on your own installation of WPMU/BP here: enhanced-buddypress-widgets. It’s also available from the WordPress plugin database: http://wordpress.org/extend/plugins/enhanced-buddypress-widgets/.

Version 0.2 of BuddyPressActivity

Since releasing my MediaWiki extension BuddyPressActivity, which puts wiki edits into your BuddyPress activity stream, I’ve noticed a bug or two. In particular, the cool feature that filters out multiple edits of a page by a given author within a 24 hour period wasn’t working right. I’ve made the necessary fixes in v0.2.

Get the updated code today.

Missed Connections

sharing Boone Gorges, who is familiar to many of you as the homegrown rising star of our development team, recently traveled to Vancouver to take part in the Open Ed 2009 conference. From what I’ve gathered, Boone’s flights to Canada and back went relatively smoothly.

And indeed, far from missing connections, Boone was able to make some valuable ones, particularly with the development team at the University of British Columbia’s Office of Learning Technology. Knowing that UBC is working on projects that are similar to ours, Boone starting thinking about ways in which our Dev teams could do a better job of sharing things with one another — something that make sense, given the commitment we all have to open education. Boone speculated on this in a blog post titled “Sharing Hacks“:

Communication about code is a hard thing. On one end of the spectrum is internal communication. The gang at OLT keeps internal notes of the small hacks they do on their system, as do we at the CUNY Academic Commons. On the other end is end-user documentation, meant for a broad and largely non-technical audience. The kind of communication that’s missing here is the stuff in the middle, between groups doing similar sorts of work.

Boone ended that post by stating his commitment to writing more frequently on this development blog about the smaller issues of development. But his larger point — that those of us developing open-source educational platforms need to communicate more regularly with one another — is one that can’t be emphasized strongly enough.

And so, I will close this post with one of Boone’s central questions: “What are some good ways to get this kind of sharing moving?” His post, along with this one, represents a start, as does the revival of UBC’s development blog. But we need to build more lasting channels of communication soon, lest we miss some important connections.

Photo credit: Flickr user o.blaat

New BuddyPress plugin: Remove Previous Comment Edits From BuddyPress Activity

UPDATE: BP Dev Andy writes in a comment to this post that this bug will be fixed in BP core soon. If you’re running a recent version of BP, it’s likely that you won’t need this plugin. Please make sure you can reproduce the issue before installing.

This plugin fixes a small but potentially annoying quirk in BuddyPress. If you, as a blog owner, edit a comment that appears on your blog, BuddyPress adds an entry to the sitewide and individual activity streams – but it doesn’t delete the old entries. As a result, if you end up (for example) editing your own comment a few times in a row, you’ll see multiple items on the activity feed.

This plugin fixes the problem by checking whether a submitted comment is an edit, and if it is, by deleting previous versions of the comment in the activity stream.

Until the plugin is in the WordPress repository, I’ve made it available in a zip file here. Just load bp-activity-skip-comment-edits.php into your /wp-content/plugins folder, activate in Dashboard > Plugins (sitewide, if you’d like), and you should be good to go.

Making Sitewide Tags work

Sitewide Tags is a cool plugin by Donncha O Caoimh that pulls blog posts from all over a WordPress Multi-User installation – like the one here on the CUNY Academic Commons – into a supplementary catch-all blog. The power of this plugin is that, with all sitewide blog posts aggregated into one place, you can begin to see the kinds of topics and trends that emerge from the community of bloggers. More specifically, Sitewide Tags allows you to create a tag cloud that reflects blogging activity across the entire community. (See the tag cloud at WordPress.com for a sense of what this looks like.)

I’ve got Sitewide Tags up and running here on the Commons – see our tag cloud (scroll down the page) and our aggregated blog. Getting things running seamlessly took a bit of tinkering though, and I thought it might be useful to share some of the tinkering here.

Read on for more of this (unexpectedly!) long process.

Continue reading “Making Sitewide Tags work”