I've decided I would benefit from the use of a semi-decent project management tool. The project just has me working on it, and really all I need is a way to keep track of bugs as I come across them and to make useful notes to myself about what I'm working on, but I thought it would be a good idea to get some practice with the whole project management idea. As usual, I did some searching around the web to find some recommendations for project management software. My requirements were that it had to be free and it had to be something I could host on a web site so I could access it from any location.
The first serious contender I came across was Redmine. If you read any articles on project management, Redmine gets a lot of praise! It turned out to be a real pain in the neck, however. First, getting it setup on my host was a bit difficult. Fortunately, there's a lot of blogs out there telling how to install Redmine on Hostmonster. After a while, I did manage to get it up and running! Yay! Well, then a couple weeks later, all I could get was the dreaded 'Application error Rails application failed to start properly' error. No idea why, but I did get an email from Hostmonster saying that they had moved the hosted sites to new, better servers... I spent a couple days trying to figure out a way around this, but to no avail. Fortunately, I could run Redmine using my database dump locally, thanks to this tutorial: http://www.redmine.org/boards/2/topics/22841. That allowed me to access my existing issues (fortunately, there weren't very many!), but I still needed a solution to my project management woes, and a local instance just wasn't the answer.
I was hoping for a drupal-based solution. I tried Storm locally, but when I tried it online, it just wouldn't work. Basically, when I'd try to go into Storm, it would log me out and take me to the front page (this using a vanilla install.) Well, that's no good. I tried Project, but it wasn't what I was looking for. I tried Open Atrium, which does look nice, and shows great promise, but again, not really what I need for my software project management needs.
I had used the Mantis bug tracker a while ago in an intranet situation, so I thought I'd try that. It is just a bug tracker, and not a full project management tool, but at this point, I was willing to take almost anything that came close. Installed it locally, ran great. Installed it online, and emails wouldn't go out. I tried and retried to configure it to send emails, but nothing. Why does Hostmonster hate me so?
I went back to using my google-fu skills. Came across two project management programs that caught my eye: ProjectPier and Collabtive. At first, I was dismayed to learn that neither of these has an issue or ticket tracking feature. They both have task lists out of the box, so maybe that could do the job for now... Then I found that ProjectPier does have ticketing, but you need to enable it in the plugins. Collabtive doesn't have this (yet) so ProjectPier wins out. The downside is that it does not have a wysiwyg editor, just uses Textile markup. Ok, I thought, I guess I'll have to live with that...
Then I found some sites discussing how to add Tiny MCE to ProjectPier! (For reference: http://martythornley.com/2009/04/adding-tinymce-text-editor-to-project-pier/#more-627 and http://www.mattgibson.ca/2008/04/19/adding-tinymce-to-your-projectpier-or-activecollab-installation/).
Well, those didn't quite work. Turns out, it was probably my fault, but I'd hate to admit something like this now. Anyway, where I was going wrong was in the path for the Tiny MCE source files. I was running on a local test machine at the time, but it is possible to write the source so that you won't have to change it when you upload to a remote server. Let's say you have ProjectPier installed at <some_path>/ProjectPier. You copy the tiny_mce folder to this location (so that you will have <some_path>/ProjectPier/tiny_mce/tiny_mce.js). You can then simply copy this code verbatim:
<?php echo add_javascript_to_page('dropdown.js') ?>
<script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
force_p_newlines: "false",
forced_root_block : '',
theme : "advanced",
mode : "textareas"
});
Paste it into the following files:
- application/layouts/administration.php
- application/layouts/dashboard.php
- application/layouts/project_website.php
Placing the code at the top of each file, just after the last add_javascript_to_page function call. That's all that's needed to place the Tiny MCE editor on the page, but if you try to use it, it still won't work right. Remember when I said that ProjectPier uses the Textile markup? Yeah, well, that is causing interference with Tiny MCE. Those sites I mentioned above discuss this and provide some solutions, but I'm going to document my solution here. (Mostly, this is just in case I need to go through it again after an upgrade or something, but hopefully it will be helpful to someone else, too. Oh, and I'm also hoping the ProjectPier developers implement this directly.)
First, open library/textile/Textile.class.php and comment the line
$text = $this->encode_html($text, 0);
(This is currently line 133)
Next, open environment/functions/general.php. Find the function 'clean($str)' and replace it as follows:
function clean($str) {
//$str = preg_replace('/&(?!#[0-9]+;)/s', '&', $str);
//$str = str_replace(array('<', '>', '"'), array('<', '>', '"'), $str);
return $str;
} // clean
/**
* Removing the lines from the clean function above will take care of the
* TinyMCE output, but it will cause problems when displaying the comments on
* the front page. Therefore, we add the following function, and in
* application/views/application/render_application_logs.php replace all
* occurances of 'clean' with 'clean2'.
*/
function clean2($str) {
strip_tags($str);
$str = preg_replace('/&(?!#[0-9]+;)/s', '&', $str);
$str = strip_tags($str);
return $str;
} // clean2
At this point, you should be able to use TinyMCE, but you may still run into issues. For instance, I've found that if I make anything italicized, then the entire message gets italicized. Something is going wrong yet.