wp-SwimTeam v1.26.871 released tonight

I released a second build today, v1.26.871 was pushed out late tonight.  I don’t like to do this as constantly having the Update notice on your Dashboard can be a bit of a nuisance.  We’re gearing up for Swim Team, he have our season opening party in one week so I’ve am trying to get ready and have been working on the plugin a lot over the past few days.

This build addresses a few minor nits but the primary new feature is the ability to display the meet time as part of the wpst_meet_schedule short code.

  1. I’ve added a new option to Miscellaneous tab to control how time is formatted. Usage of the format is not yet pervasive through the plugin.
  2. Enhanced wpst_meet_schedule shortcode with two new attributes: fmt=’time format’ and ‘showtime=yes|no’. Default is not to show the time and use the time setting from the Miscellaneous tab. The fmt attribute expects a string formatted following the conventions outlined in the PHP date function.
  3. Removed redundant code from Swim Meet module.

The build has been pushed to the WordPress plugin repository and also appears on my Download & Installation page.

SDIF Forum Google Group

I get a fair number of questions about how to import swim team data from one place to another.  Most of these questions are from people like me who have information in one place and want to figure out how to use it again without having to type it in again.

In theory, SDIF (Swim Data Interchange Format) should address this issues.  SDIF is a standard published by USA Swimming.  If you visit the USA Swimming web site and search for SDIF, you won’t find much.  The SDIF 3.0 specification is pretty old, it was published in 1998.

There is a page which references the newer XSDIF specification but I am not aware of any swim software which currently supports it.  So in reality, the 3.0 version of the SDIF specification (this is a very poorly formatted document – if you’d like a better version, download the SDIF specification from the WinSwim web site) remains the standard to work with.

If you are interested sharing ideas, solutions, problems, etc. with others who are trying to solve similar problems, please join the SDIF Forum Google Group.  It seems like there are quite a few people trying to solve similar problems, the Google Group should help people communicate.

As it relates to wp-SwimTeam, one of the first things I need to solve is the ability to upload a Hy-tek Events File and connect the events to a swim meet.  This is necessary in order to upload results for a meet and connect them to a swimmer.  This information could be extracted from a results file but Hy-tek events files are frequently available so I want to leverage the information they contain.

Being able to engage in a dialog on how to parse the .hyv or .hy3 files would be really helpful for me, I am sure it would be beneficial to others as well.  In many cases, someone has probably already written a script or Excel macro to extract the information.  I can’t imagine how many times the wheel is being reinvented – I am guessing lots!

wp-SwimTeam v0.1.400

A quick update that fixes exactly one issue – v0.1.400 is now on the download page.  I unleashed the opt-in/opt-out system on the MacDolphins today and quickly found that having the Participation column with “Register” and “Scratch” displayed for the users was confusing as parents thought that the Register or Scratch wording indicated the statue of their swimmers.  For now I have removed the column and I will add the ability for parents to see a summary of their Registers and Scratches.

wp-SwimTeam v0.1.389 released

This evening I uploaded a new version of wp-SwimTeam.  It is available on the download page.  This version introduces a new report for swim meets.  The Swim Meet report’s most important feature is the listing of swimmers who have Opted-In or Opted-Out of a swim meet.  On the MacDolphins we call this a the Scratch List.

A parent can now indicate when their swimmers are participating (for meets defined as opt-in) or not participating (for meets defined as opt-out) on either a full meet or event basis.  The meet report will display a summary of swimmer participation based on the type of meet.

A couple of the options on the Report Form are disabled because they aren’t functional yet.  They will probably work in a day or two.

This release also introduces a new mode for Swimmer Labels – Frozen.  When Swimmer Labels are unlocked, they can be bulk assigned.  When they are locked, Swimmer Labels can be edited on a per swimmer basis but no bulk assigned.  When they are frozen, they can’t be edited at all.  I added this because I inadvertently reassigned the swimmer labels for the MacDolphins yesterday without meaning to.  Whoops.

I fixed a few other minor issues as well but nothing significant, mostly presentation of forms and such.

wp-SwimTeam v0.1.377 – Administrative Fields

I posted a new build of wp-SwimTeam this afternoon for download.  This build supports the new administrative mode for user and swimmer optional fields.  It has not had a significant amount of testing but I was able to run through quite a few scenarios and all behaved as expected.

This build also introduces a new type of optional field the NO-YES option.  This is similar to the YES-NO option but defaults to NO instead of YES.

Dashboard icons updated

Tonight I worked out how to have a different icon in the dashboard when the menu is active, inactive, or hovered over.  This allows me to use a different color icon when active than when hovering over the menu or making it active.  The funny looking icon that was displayed when the menu is active now looks correct.

Code Cleanup in progress

It is interesting to go back and revisit code which I wrote early in this project.  When  I go back and look at it, I ask myself why I implemented things the way I did.   The change to the  tabbed menu bar has required me to go back and visit almost every page which is presented as a menu to a user of the system.

Some of the early functionality like Age Groups and Seasons had a clunky implementation of the decision tree logic and resulted in processing the same variables to make decisions repeatedly.  I have migrated the code I developed latter on for things like the Roster and Events pages and implemented “Guidance” for all pages as well.

Now that I have all of the code cleaned up, at least I think I have it all done, I need to return to the Events functionality.  I need the ability to add events to a meet and then re-order them.  The standard events can be used to seed the events for a meet and reordering works although it is clunky.  This should probably be done with AJAX so events can be dragged and dropped into the desired order.

More Menu Changes

There has been a lot of discussion on the wp-hackers mailing list about the upcomming 2.7 release of WordPress and the change to the Admin Menus.  I decided to load it up and see how it affected this plugin.  For the most part everything works the way it is supposed to.  I ran into a few oddities which were errors that weren’t obvious until I ran it with 2.7 but everthing worked as it is supposed to.

The big change is the location (left side bar) of the new admin menus and the change in terminology.  The change in terminology takes some getting used to.  We’ll see if it stays as it currently is in the development build or if it changes.  From the Admin perspective, the presentation is different but not markedly so.  From the user perspective, the Swim Team menu doesn’t show up and I am not sure why yet.

I committed a whole bunch of changes I had to make as a result of debugging the 2.7 presentation issues.  So far, all of the changes work as they should on 2.5.1, 2.6 and 2.6.1 as well.  Switching releases (2.6.1 and 2.7) and platforms (Windows and Linux) during development is proving to be a useful thing as it flushes out stuff earlier in the process.

The trickle down effect

While trying to get a demo site up and running I ran into an issue that has taken me down a path I didn’t expect to head down at this time.  But now that I have run into it, I have decided to fix it correctly.

The wp-SwimTeam plugin depends on phpHtmlLib and the 2.x version of the library requires that it be installed in the web site’s root directory.  This typically isn’t a big deal but in some cases can be inconvenient.  It also requires the library be named phphtmllib as the path is (was) encoded into quite a few of the widgets.

When I uploaded the library to the new demo site, it didn’t run correctly.  The demo site is running PHP5 which I immediately suspected as the problem.  So I loaded PHP5 and phpHtmlLib into a new virtual machine (I love VMware, it is wonderful for configuring different environments) and all the examples ran just fine.  Odd, very odd.  Digging into it further, it looks like the hosting provider’s PHP virtual directory support setting is different than what I had locally and affects how include files are handled.

A couple of tests confirmed my suspicions.  Since this hosting provider is large, I suspect this PHP configuration is pretty typical and it provided sufficient motivation to go back and fix phpHtmlLib 2.x so it can be loaded with appropriate configured PHP define() statements.  If you look through the phpHtmlLib forums you’ll find this is a fairly regularly requested item (including by me) and phpHtmlLib 3 (which requires PHP5) is configured this way.

Over the last couple days I have been updating the phpHtmlLib 2.x branch to support this configuration method and now have it all running correctly in my development area.  Before I commit all the changes, and there are a lot of them, I need to verify it all works in the suspect hosting environment.

The trickle down of setting up a demo site resulted in an overhaul to phpHtmlLib.  It needed to be done anyway and doing it will allow phpHtmlLib to be loaded as a WordPress plugin eventually.

SQL issue solved

My Access SQL problem is solved.  Access can’t do what I wanted to do but the folks at WinSwim modified their custom SQL query report to allow for error supression which solves the problem.  I just can’t say enough about the excellent support from WinSwim.

I don’t know how most swim teams manage their swimmers but ours revolves around age groups.  Everything is organized by age group, coordianted by age group, reported by age group, etc.  I have been creating Win Swim Reports using Crystal Reports to present the data in the database in a format our team is used to seeing it it.

Working on these reports is the primary reason I haven’t made much progress on the plugin lately.  Swim team is winding down, our last meet is tomorrow night and once the season is over I expect to be able to work on the plugin again.  There are a number of things I’d like to implement while the experience is still fresh in my memory.  If I wait I’ll probably forget why I thought something was a good idea!  🙂