Project Management

  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /home1/draperfa/public_html/gallery2_core/embed.php on line 32.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::getEmbedPathByHttpRequest() should not be called statically in /home1/draperfa/public_html/gallery2_core/embed.php on line 36.
  • strict warning: Non-static method GalleryUtilities::getRequestVariablesNoPrefix() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 1092.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 289.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 293.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryEmbed::init() should not be called statically in /home1/draperfa/public_html/sites/all/modules/gallery/gallery_base.inc on line 134.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 94.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 46.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 47.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 48.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 49.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryModule.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 55.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryPlatform/UnixPlatform.class on line 21.
  • strict warning: Non-static method GalleryUtilities::getRequestVariables() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 150.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 242.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 246.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 152.
  • strict warning: Non-static method GalleryTranslator::getSupportedLanguageCode() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 154.
  • strict warning: Non-static method GalleryTranslator::getLanguageData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryTranslator.class on line 414.
  • strict warning: Non-static method GalleryUtilities::strToUpper() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryTranslator.class on line 418.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 103.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryEmbed::isCompatibleWithEmbedApi() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 107.
  • strict warning: Non-static method GalleryEmbed::getApiVersion() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryUtilities::isCompatibleWithApi() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 61.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 128.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: call_user_func() expects parameter 1 to be a valid callback, non-static method RewriteSimpleHelper::loadItemIdFromPath() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/rewrite/classes/RewriteUrlGenerator.class on line 103.
  • strict warning: Non-static method GalleryUtilities::getRequestVariables() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/rewrite/classes/RewriteSimpleHelper.class on line 38.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 242.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::_getRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 242.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 875.
  • strict warning: Non-static method GalleryUtilities::_internalGetRequestVariable() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 879.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 246.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 708.
  • strict warning: Non-static method GalleryUtilities::sanitizeInputValues() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUtilities.class on line 714.
  • strict warning: Non-static method GalleryCoreApi::getAllFactoryImplementationIds() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 179.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 187.
  • strict warning: Non-static method GalleryFactoryHelper_simple::getAllImplementationIds() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 188.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 213.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::newFactoryInstanceById() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 186.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 174.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstanceById() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 175.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 191.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstance() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 201.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 141.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::newFactoryInstanceById() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 186.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 174.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstanceById() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 175.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 191.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryFactoryHelper_simple::newInstance() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 201.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getFactoryData() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 141.
  • strict warning: Non-static method GalleryFactoryHelper_simple::_getSingleton() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 63.
  • strict warning: Non-static method GalleryCoreApi::getCodeBasePath() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 169.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryFactoryHelper_simple.class on line 175.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/httpauth/classes/HttpAuthPlugin.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::getAnonymousUserId() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 203.
  • strict warning: Non-static method GalleryCoreApi::getPluginParameter() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 3078.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 300.
  • strict warning: Non-static method GalleryPluginHelper_simple::getParameter() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 302.
  • strict warning: Non-static method GalleryPluginHelper_simple::_fetchAllParameters() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 222.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 281.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::get() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryPluginHelper_simple.class on line 282.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 186.
  • strict warning: Non-static method GalleryCoreApi::loadEntitiesById() should not be called statically in /home1/draperfa/public_html/gallery2_core/init.inc on line 208.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 2360.
  • strict warning: Non-static method GalleryEntityHelper_simple::loadEntitiesById() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryCoreApi.class on line 2361.
  • strict warning: Non-static method GalleryDataCache::containsKey() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 53.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 203.
  • strict warning: Non-static method GalleryDataCache::getFromDisk() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 56.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 273.
  • strict warning: Non-static method GalleryDataCache::getCachePath() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 280.
  • strict warning: Non-static method GalleryDataCache::getCacheTuple() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 405.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 287.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUser.class on line 21.
  • strict warning: Non-static method GalleryCoreApi::requireOnce() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEntity.class on line 21.
  • strict warning: Declaration of GalleryUser::create() should be compatible with GalleryEntity::create() in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Declaration of GalleryUser::save() should be compatible with GalleryEntity::save($postEvent = true, $setAclId = NULL) in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryUser.class on line 42.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 95.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryUtilities::isA() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/helpers/GalleryEntityHelper_simple.class on line 118.
  • strict warning: Non-static method GalleryDataCache::put() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryEmbed.class on line 133.
  • strict warning: Non-static method GalleryDataCache::_getCache() should not be called statically in /home1/draperfa/public_html/gallery2_core/modules/core/classes/GalleryDataCache.class on line 85.
  • strict warning: Non-static method GalleryCoreApi::getMapEntry() should not be called statically in /home1/draperfa/public_html/sites/all/modules/gallery/gallery_user.inc on line 616.
  • warning: Creating default object from empty value in /home1/draperfa/public_html/sites/all/modules/mailhandler/mailhandler.module on line 123.

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', '&amp;', $str);
    //$str = str_replace(array('<', '>', '"'), array('&lt;', '&gt;', '&quot;'), $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('/&amp;(?!#[0-9]+;)/s', '&amp;', $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.