Apollo is a project management webapp that I only found out about yesterday. It’s won me over pretty quick, however.

Apollo integrates contact management, task lists, milestones, calendaring and messaging into one sharp looking and easy-to-use interface. I’m already starting to put clients on this system, because it is WORLDS better than what I was using before.

My old system is an app called SUBERNOVA. It looked great when I signed up for it, and I wound up purchasing a subscription on a beta user discount. SUBERNOVA has a few features that Apollo doesn’t, most notably quoting and invoicing. However, the implementation of everything is so backward that it hurts. For example, I can’t send a client a quote in SUBERNOVA without first making a project, in which I have to include a start and end date. So all of my prospects are mucking up the project lists, even when I don’t wind up working for them. Additionally, you can only have ONE quote and ONE invoice per project. This was a mess immediately, as I invoice my clients for a deposit at the very start of the project, and it’s just a mess to basically overwrite that invoice at the end of the project with the other 60% of the total, then overwrite the invoice AGAIN with the final figures. There are just lots of pains like that in SUBERNOVA.

Now, Apollo doesn’t have invoicing or quoting built in, but it does support file uploads, so I can create those documents in InDesign and upload the PDF files to the site, where my clients can download and comment on them. Also, I’m told that eventually Apollo will support an API for plugins, so developers can add that functionality to the app.

That leads me to the best part—the team at Apollo are very quick to reply to issues and feedback. I’ve already exchanged about ten emails with members of their staff, and I only got into the service yesterday!

If you’re looking for an app like this, I highly encourage you to go check it out. The app is free while it’s in beta, and it’s been promised that the plans will be very reasonable for the final product. An invite code is required, but they sent me mine within about fifteen minutes. Make sure to mention where you heard about Apollo!

My Netflix Streaming disc for the Wii arrived today, and it’s pretty cool! I had an old DVD case lying around, so I decided to make a more permanent home for it. Click through to download your own DVD slipcover. Just print it on a plain 8.5x11 sheet of paper (turn off print scaling in reader), and trim to fit. Ta da!
Download Netflix for Wii DVD Slipcover

My Netflix Streaming disc for the Wii arrived today, and it’s pretty cool! I had an old DVD case lying around, so I decided to make a more permanent home for it. Click through to download your own DVD slipcover. Just print it on a plain 8.5x11 sheet of paper (turn off print scaling in reader), and trim to fit. Ta da!

Download Netflix for Wii DVD Slipcover

the_post_image() = the_post_thumbnail()

This is to let you fellow lost souls out there know that the new the_post_image() functionality that was announced for WordPress 2.9 was subsequently renamed the_post_thumbnail(). This was not immediately apparent—I guess since it was never in an official release that way, it doesn’t have to be shown as a deprecated function.

Check back soon for a post on using the darn thing!

Add a User Interface to WordPress Custom Fields

Custom fields are great for adding additional functionality into WordPress sites. I have used them in the past to set up post thumbnails, for music album metadata, such as artists and album year, to set articles to link to their original sources, and many others.

The problem is, the default interface for adding custom fields is very clunky. The user has to either manually type in the field name, or select it from a list.

This doesn’t work too well for an average client. The reason I use WordPress on my sites in the first place is for ease of use. Fortunately, there’s an easy way to use custom input boxes! Simply paste the code below into your theme’s “functions.php” file, adjust the variables, and you’re good to go!

/* add actions to admin menu */

add_action('admin_menu', 'fieldname_add_custom_box');



/* use save_post action to handle data entered */

add_action('save_post', 'fieldname_save_postdata');



/* Adds a custom section to the "side" of the post edit screen */

function fieldname_add_custom_box() {

    if(function_exists('add_meta_box')) {

	add_meta_box('fieldname', 'fieldname', 'fieldname_custom_box', 'page', 'normal', 'high');

    }

}



/* prints the custom field in the new custom post section */

function fieldname_custom_box() {

    //get post meta value

    global $post;

    $fieldname = get_post_meta($post->ID,'fieldname',true);



    // use nonce for verification

    echo '';



    // The actual fields for data entry

    echo '
Label
'; echo 'Label:'; echo ''; echo '

Description of what this field does.

'; } /* when the post is saved, save the custom data */ function fieldname_save_postdata($post_id) { // verify this with nonce because save_post can be triggered at other times if (!wp_verify_nonce($_POST['fieldname_noncename'], 'fieldname')) return $post_id; // do not save if this is an auto save routine if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; $fieldname = $_POST['fieldname']; update_post_meta($post_id, 'fieldname', $fieldname); }

Go in there and replace fieldname with the name of your custom field, and fill in Label and the description and save your file. You can also add multiple fields into one option group. If you want this box to show up on posts instead of pages, change “page” to “post” in the arguments for add_meta_box().

This is what the new field looks like when setup on a site. This box lives just below the main entry area. You can adjust the options in add_meta_box() to change the placement on the page. I hope this helps you improve the usability on your WordPress site!