I’ve been working in corporate America for 10 years.  In this time I have seen business of all shapes and size run off of Excel spreadsheets.  Don’t be me wrong, I use Excel as much as the next guy, but when your entire workflow process is focused around updating and tracking information an Excel spreadsheet then you better take a step back and look at what you are doing.

In this post, I’m going to walk through a small project I took on at work to move a department off of Excel to Drupal.  This particular case was a little different then other workflow process automation project I take on as the department came to me looking for an easier way to track information.

Original State:

The Lab Point of Care (POC) department was tracking training session on an excel spreadsheet.  POC is a distributed department with 4 different offices.  2 of the offices shared a spreadsheet and the other two and an identically formatted spreadsheet with information with their location.   The spreadsheet was formatted with each person having it’s own row, and each training session that the person took in a separate column.  All of the spreadsheets are stored on a network share.

Issues with original state:

  • The same person could take the same class at multiple locations.  They were only required to take the class at one location.  Since the spreadsheets are not synced, one office would have to open another office’s spreadsheet to verify that the person has taken the class.
  • One of the spreadsheets had over 15 thousand rows.  It was slow to load off of the network share.  Due to the size of the spreadsheet, the users would copy the spreadsheet locally and be working off of old data.
  • Several users would attempt to update the spreadsheet at the same time.  This would cause file corruption issues and loss of data.

Requirements:

  • Easy to search by employee ID or name.
  • Ability to quickly add new training session.
    • One session for a day.
    • Multiple sessions for single day.
  • Person Data:
    • Employee ID (Unique)
    • Name
    • Location (multiple)
    • Position
  • Training Session Data:
    • Training Session Type
    • Certification Length
    • Date
  • Reports for training session by multiple criteria.
  • Ability to export reports to excel/pdf.
  • Upload the current spreadsheets to pre-populate the data.

Plan of Attack:

My main goal was to keep the application was simple as possible.  Most of the application focuses around the Training Sessions screen.  This is the screen where they look up, add/edit training sessions.  Being that this project had very limited time associated to it, I needed to use as many prebuild Drupal modules as possible.  The core of the application is focused around CCK and views.  I used CCK to create the widgets for the forms.  Ajax, Editable and quicktabs were used to help improve UI.  Custom forms (using Form API) combined the views and content type forms on a single page.  The Acquia Marrina Theme from Top Notch Themes (http://www.topnotchthemes.com)

Content Types:

  • Person:  Each person has a person node.
  • training session:  Each training session is attached to a person.

Main Modules

Primary Pages

  • Training Tracking Page (Home Page):  Upon first loading the web app, you are giving a page with simple search box (see screen shot).  The user has the option to either type in a few letters of the name or the Employee ID.  The search box is an auto-complete drop down built as a custom form.     Once a person is selected the user presses “search” and it brings up the details for the employee (see screenshot).  At the top of the page the user has the option to either search for another employee or edit the current one.  Under that there is some basic information about the employee.  These fields are pulled from related taxonomy terms.  Quicktabs were used to allow all of the screen to be on the same page.  The first tab is the current sessions and the second tab gives the user the ability to quickly add a new session.  The Ajax module was used to save the info to the database without refreshing the entire page.  This give the user the ability to add training sessions quicker.

  • Add/Edit Person Screen:  This is just the add/edit form for person content type.  CCK was used to give the necessary appearance.
  • Reports: Views were made with a good amount exposed filters, giving the user the ability to find any necessary information.
  • List Management:  The location, position, training session type and certification length are all vocabularies.  The site administrators manage the lists via the core taxonomy forms.

Importing the Old Data

This was the most challenging part of the project.  It required the most custom coding.  The spreadsheets had to be formatted in a way where they could be easily turned in to a csv file.  Once the spreadsheet was in the correct format, the parsecsv-for-php (http://code.google.com/p/parsecsv-for-php/) library was used.  This allows me to easily parse the csv file and place the csv fields in the correct content types.  A little error and duplicate checking and I had myself a nice template to use for future data imports.

Conclusion

The web application has been live for about a month and I’ve already heard how much it has improved their workflow.  The amount of effort that was needed to evaluate the workflow process and create the application was well worth the benefit.  This was the first Drupal application for this company and we are already working on a few others.

traing traking page 1 Training tracking page 3 Training tracking page 2

  • Share/Bookmark

It’s been a while since I’ve posted and I’ve been very busy.  I launched a new consulting service I call Code Dreamers.  I’ve spent tons of time on Taxonomy Menu and started to develop my ideas for Blog to It.  Drupal has began to take over my life and I’m loving it.

Code Dreamers

A few months ago I launch the official front end to my freelancer Drupal development.  After much consideration, I named it Code Dreamers (http://code-dreamers.com).  Since I’m not a full time developer, I’ve done my best to limit my scope of what services I offer.  With a child on the way, I didn’t want to get myself anymore over extended then I already am.  I’ve deiced to specialize in offering custom Drupal functionality.  I’m not looking to create the entire site, just add or enhance a current site/project.  My clients are other developers and designers (mostly designers).

This is a very excited endeavor for me.  Hopefully the start of a new life in development.

Taxonomy Menu

This module has consumed most of my free time.  I totally rewrote the module to use Drupal’s menu system correctly.  I’ve learned a ton about Drupal, php and open source development.  I am very proud of this module.  I have spent countless hours in the issues queue answer questions and developing new functionality.  A few other developers had submitted patches to enhance it’s functionality.  It’s great to get more involvement.  One of the featuers I’m most proudof is the API (http://drupal.org/node/380652).  Now developers can customized the menu to their hearts content.

I’m working on the next version of Taxonomy Menu already.  Some great ideas are coming form the community.  It will be easier to use with more customization.  I’m very excited about this.  Unfortunately, it’s slow coming.  I hope to have a first alpha version by the end of the month.

Blog To It

I had several conversation with the developer of Blog To It (http://blog.to.it), Tim Millwood (http://www.millwoodonline.co.uk/) over Twitter and we ended up teaming up to work on the site together.  He launched Blog To It shortly after I began working on Blogs of Indy.  I’ve decided to stop development on Blogs of Indy and focus on Blog to It instead.  Tim and I have had tossed around ideas and I’m ready to get started.

Drupal

I have began to implement new Drupal sites at my place of employment.  They have been a M$ shop for a long time and the idea of open source is very scary.  Their attitude changed very quickly when I was able to create a server and deploy a custom fully functionality website within 20 hours.  Now I’m adding more Drupal sites.   I’m hoping to make my full time job developing Drupal.

  • Share/Bookmark

I read a very interesting article from Braingir’s blog Feed Me Drink Me about a mass review service called Yelp. Yelp is a site where anyone can post a review about a service.  The idea is to get reviews from the average person to help another average person make an educated selection.  I have used several services like this to search for all sorts of information from where I should go eat to what mechanic should I use.  I have always read the views with interest, knowing that one bad experience does not make an establishment poor.  You are more likely to find bad reviews over good ones, so when a good one was found I added more weight to it.

My trust in these sites has now gone by the wayside.  From braingir’s blog:

Problems first surfaced last year, when the San Francisco Chronicle’s Michael Bauer wrote that a few chefs had encountered diners threatening them with bad reviews if meals and drinks weren’t comped.

Continued on to this paragraph where all of my faith was lost:

Now, Michael Atkinson, founder of the social networking site FOH-BOH, reports even worse shenanigans on the part of Yelp! The East Bay Express published an article last week on Yelp’s newest sales pitch to chefs and how it was gaining traction. Sales reps from the company are now calling restaurants with bad reviews posted and offering — for a mere $299 a month — to remove those bad reviews! As part of their service now, the folks at Yelp make money by cleaning up negative comments! Wow. Just Wow. What little shred of usability just went out the window. Talk about a no-negative review policy. How about we make some money on those?!

This cuts deeply into the trust of the “Average Joe.”  The reviews now mean nothing.  If Yelp does this then who is to say that the other sites don’t already do this or are going to follow suit.  Our only hope is to educate the masses to not use sites like this and refer the reviews to the professionals (or educated armatures).

Before you start throwing the freedom of speech argument at me, realize that I agree that everyone should have voice, but when that voice promotes corruption then the voice should be silenced.

EDIT:  I wanted defend Angie’s List. This is a review service that I have found to be extremely honest will continue to recommend them to everyone.

  • Share/Bookmark

Several years ago, my future wife (at the time) and I discovered this wonderfully complex and simple chicken dish.  It was rich fancy (to us at the time) and took 3 hours to cook.  We haven’t had this dish in a few years (due to the 3 hours).  We had some friends over last night [...]

That’s right.  I said it.  I had my first grill out of the year.  While it wasn’t very appetizing, it was still a grill out.  The earlier I can warm up my grilling skills for the year the better.

Tags: ,

I haven’t posted an update for Blogs of Indy in a while.  I wanted everyone to know that I’ve been hard at work on coding and haven’t had a change to blog out it.  Here are some upcoming plans.
FeedAPI Taxonomy Compare Updates. This module is a key piece to the functionality.  I spent several hours [...]

I release a new version of my Drupal  FeedAPI Taxonomy Compare Module.  I found a bug in how the new term was being related to the node.  I was using taxonomy_node_save function from taxonomy.module.  One of the first lines of code in that function is “taxonomy_node_delete_revision($node);” which removes all terms from the node.  Well I [...]

It’s that time of the year again.  Devour Downtown is on.  For those of you who don’t know, this features several restaurants in downtown Indianapolis on a $30 meal.  Several of my friends and family refer it to as “30 dollar meal week.”  In fact, the event lasts 2 weeks but I love them anyway.
One [...]

No, this isn’t an entry about anything Polish.  That’s just the name of the recipe.
This is a simple recipe that is very filling and lot in carbs.  And yes, they taste much better then the look.
Ingredients:

1 lb Hamburger
1 lb sausage (Jimmy Dean Roll)
1 T. oregano
1/2 T. garlic salt
8 oz shredded cheddar
English Muffins (or any bread)

Brown [...]

Over the past few years my php development was rare and disconnected.  Notepad++ fit all of my needs.  It has a debugger plugin and some syntax highlighting.  Now that I am becoming a free lance developer I needed a more full feature IDE.  Most of my development will be for custom Drupal modules.  I did [...]