See also TODO.txt
Version 0.9.7:
* Releases no longer include sitecode.pl so new installations will
now need to create this file. (You can start with a copy of
sitecode.pl.sample and customize it as needed.) The former
inclusion of sitecode.pl was due to a bug in my release process,
wherein things happened in the wrong order.
* Added a comment field to the resched_staffsch_occasion table.
Existing installations will need to create this field in order
to use it. I added it because our director wants to be able
to add comments, when she's going to be offsite for some reason,
to indicate where and why (e.g., county-wide directors' meeting,
community group meeting, etc.)
* When listing staff (for staff scheduling purposes), there is
now an option to show former staff, as well as current ones.
(As before, former staff are hidden by default.)
* Time fields can now list :00, :15, :30, and :45 at the top of the
minutes dropdown box, for convenience. To enable this feature,
set the config variable time_list_quarter_hours_first. Non-round
values are still shown, subsequently.
* When entering recurring bookings using the "on the dates listed"
option, clicking the Add Another Date button now gives you a
form with the month pre-selected to the same month you just
entered on the previous listed date (rather than always January).
* When adding occasions to a staff schedule, it is now possible
to specify a recurring event, such as a quarterly board meeting
on the first of the month or an off-site luncheon on the third
Tuesday of every month. Dates can also be listed individually,
similar to how meeting-room recurring bookings work.
* Fixed a bug in the create-tables helper script, that in some
uncommon situations might have created extra entries in the
list of staff-schedule colors.
* Minor documentation updates to the POD.
* Added the resched_equipment and resched_resource_equipment
tables to the database. The admin interface can now be used
to set up what equipment you have available and also which
specific pieces of equipment should be available when booking
each room resource. (This was previously hardcoded to the
equipment we have available for the Community Room in Galion.)
The booking code now reads this list of equipment from the
database, rather than using the old hardcoded list.
* Added a config option, staff_schedule_show_redundant_flags.
By default now, staff hours listed on auxiliary schedules
are shown with their auxiliary-schedule flag suppressed,
because it's redundant with the auxiliary-schedule subheading.
To get back the old behavior, set the new config variable to 1.
* Added support for "hidden" schedule flags, i.e., ones that don't
get listed on day/week/month schedules.
* The admin interface now has a way to list and edit schedule flags,
and the schedule flag features (i.e., the flags that go on the
schedule flag records themselves) are now documented as to what
they mean.
* Fixed a bug wherein the userid (login) of staff members for
staff scheduling purposes was not being updated when it should be.
* The sidebar will now show a "My Schedule" link (in the staff
scheduling section) if there is exactly one staff schedule the
current user can edit. Otherwise, a new config option controls
whether a redundant "Change Staff Schedules" link will be shown,
pointing to the list of staff.
* Resource scheduling now actually uses the background colors you
specify for each resource. The old hardcoded resource background
colors have been removed from the included stylesheets. You may
want to remove them from any custom stylesheets you have added
as well, just to keep things tidy.
* Fixed long-standing limitation wherein you could only log out
from index.cgi
* Added the resched_days_closed table to the database. The
markdaysclosed() routine now inserts records into it, in
addition to booking the resources closed. When viewing staff
schedules for an interval (day/week/month/etc), days closed
are now prominently marked as such at the top of the day,
along with the reason given.
* Added a config option to suppress listing of staff hours
on closed dates.
* When viewing a program signup list, the Attender column header
is now a link, to sort by last name. (Sorting by last name is
the default, but now there's an explicit link to go back to it,
in case you've sorted by something else. This is preparatory
work for making the default configurable.)
* Added a defaultsort field to the resched_program table.
(Existing installations will need to add this field to the
database in order to use it.) This field can be used to
cause the signup lists for some programs to default to a
different sort order than others.
* Generalized the all-day flag mechanism for staff schedules,
so that sites can define which flags create all-day hours.
Previously, any flag with a flag character of "A" was treated
as an all-day flag. This was hardcoded, and create-tables.pl
created an All Day flag in resched_staffsch_flag with that
flag character for the purpose. Now, if resched_staffsch_flag
contains any records with the L flag, the flag characters on
those records will work, whatever they are. Existing sites may
need to add the L (all-day) flag to their A (all-day) flag in the
resched_staffsch_flag table. For new installations, this is
done automatically by create-tables.pl.
* As part of the flag generalization, all-day hours now work
for regularly scheduled hours just as for occasions. (If
a site wants to restrict an all-day flag to occasion hours
only, mark it as O. Similarly, R for Regular only.)
* Added styling for multi-day occasions in the three official
stylesheets, to make it more obvious when a staff schedule
item spans multiple days. This should help reduce confusion
over "but I don't have that scheduled on that day", especially
when the ending year is a typo. I'd previously added styling
when editing the schedule, but now showinterval() has some too.
* Added classes to settings tables and forms, for easier styling.
The default stylesheets don't do all that much with this, but
the capability is there.
* The admin interface now has the ability to create and edit
IP auth settings.
* Added a flag to the resources table that causes any bookings
for flagged resources to show up as auxilliary schedules when
displaying staff schedules.
* Added a createdts field to the resched_staffsch_occasion table,
to hold the date and time the record was created. In the event
that someone makes a mistake with the recurring-occasion feature
and accidentally enters thousands of unwanted occasion records,
this can be used to isolate them (at the SQL level). Any site
upgrading from an earlier version MUST ADD THIS FIELD, or the
creation of staff schedule occasion records will fail.
* For administrative users (those with the A flag set), the authbox
now links your username to your user record.
* Started the long process of allowing local customization of
the wording for things like buttons and links. All config
variables for this will start with wording_ and will be
listed below all the other variables, so you can ignore them
unless there is some wording you want to customize.
* Fixed a bug wherein, when creating a program for program signup,
the max number of participants was not saved.
* Allow some programs to be marked as "ongoing", causing them to
be listed separately from the "upcoming" ones.
* Programs now have a flag, R, which causes signups to get a
checkbox by the phone number for reminder calls.
* Fixed a bug with the interaction between automatic day-closed
bookings and statistics gathering.
* Introduced availability statistics. Instead of raw figures
like "How many times were our internet computers used?", this
is designed to answer questions like "What percentage of the
time were there no unused internet computers available?"
Note that, for performance reasons, the bulk of the calculation
for these stats is done by a separate script, availstats-prep.pl,
which should be run from a cron job. Running it once a day with
no arguments will work, always calculating the previous day's
information; or you can use command-line arguments to specify the
date range.
* Fixed a bug wherein leaving a minute field blank when creating
a program (for program signup) caused an internal server error.
* Added a new option, program_signup_waitlist_checkbox. If this
option is set, then a waitlist checkbox is provided, when signing
someone up for a program that is not yet full but may have a
waitlist. Thus people may be signed up for the waiting list
directly, even if the program is not full.
* You can now undo an accidental "Started Late" by simply
unchecking the box and hitting save.
Version 0.9.6:
* Fixed a bug that prevented the generic "wherever" location from
working correctly with occasion hours.
* The month overview now sorts each day's bookings.
* The month overview now styles the bookings according to the
bgcolor for each resource (if that is set).
* When viewing a staff member's schedule, regular hours are sorted
by day of week, and exceptions are sorted chronologically.
* Separated program signup and staff schedules in the sidebar
(instead of being lumped together, they are each a section now;
this puts whitespace between them, making them easier to read and
distinguish quickly.
* Made slight improvements to formatreghours() and formatoccasion()
so staffschedule() can use them.
* Implemented "Partial Exceptions" -- special occasion hours that
do not replace regularly scheduled hours for that day. Sites
upgrading from 0.9.3 or later will need to add this flag in order
to use it. (For everyone else, create-tables.pl will do it.)
* Added customizaton guidelines to the POD.
* When viewing a staff member's schedule, you can now change the
start and end dates. Thus you can now see what someone's
schedule was like last month or will be like next quarter.
* Fixed a bug that was causing regular hours not to be shown on a
staff member's schedule if they were scheduled to become obsolete
during the timeframe being viewed.
* Disabled stylesheets that were no longer being maintained.
You are still free to create your own stylesheets or to edit
the included ones.
* Added visual style section to the staff schedule sidebar.
* The admin and config interfaces now maintain persistent
variables (notably, usestyle). So you don't lose your
light/dark/lowcontrast preference when you use them.
* On the staff schedule, styled the current day's bubble
to visually stand out.
* Fixed a bug in the variable-preservation code that was
causing useajax to gain extra copies of its value each time
the visual style was changed, which after a lot of successive
style changes could cause the URLs to be very long.
* Adjusted some visual styling on the edit-staff-hours form.
* Added the ability to have staff schedule flags that only
apply to exception/occasion hours (not to regular hours).
* While I was at it, I went ahead and added the ability to
have flags that only apply to regular hours (not to
exception/occasion hours). None of the default flags
created by create-tables.pl make use of this, but per-site
flags can: in the resched_staffsch_flag record, the flags
field should have O for Occasion-only, R for Regular-only.
* Incidentally, for lack of a better place to document it, staff
schedule flag records can also be flagged P for partial-exception
behavior, S for Separate schedule entirely, A for Additional
schedule (but the hours with the flag still show up on the main
schedule also), X if the flag means the hours are canceled.
* Added the ability to cancel exception/occasion hours. Sites
upgrading from 0.9.x may need to add an X flag to the
resched_staff_flags table in order to use this; for everyone
else, create-tables.pl will create one.
* When editing exception/occasion hours, it is no longer necessary
to set the date twice, unless it's different (or if you have
Javascript disabled). Setting the starting date will
automatically set the end date to the same day. (This does mean
that for multi-day schedule items, such as vacations, changing
the start date before you save means you have to enter the end
date again. It's worth it to make the much more common cases
better. The automatically-updated form element gets focus, to
improve the odds that the user will notice that it has changed.
Also, the autocopy will not happen if the dates were already
different the last time changes were saved.
* Commented out some obsolete debugging that was clogging the log.
* When viewing a staff member's schedule that you have permission
to edit (such as your own), if you are looking at past dates
when you click the Edit link, you now get an edit form that
includes the past dates.
* Improved the set of default staff schedule colors.
* Fixed a bug that prevented non-default visual style from
persisting when submitting intervalform.
* Fixed a staff schedule bug (in showinterval) that caused
very strange results if a site did not have any staff
schedule flags defined in a particular category (e.g.,
no separate-schedule flags).
* It is now possible to have staff schedule flags that
are not separate schedules (S) but do cause an additional
schedule (A). The difference is, hours with such flags
will still show up on the main schedule; whereas, hours
flagged for a separate-schedule flag will not.
* Fixed a bug that prevented flags from being listed on regular
hours when looking at a single staff member's schedule.
* Added a config variable to suppress use of the location
field in staff schedule records. May be useful if you
only have one location, or if your staff simply don't
want to be bothered with that information.
* When editing a staff member's schedule, regular hours are
sorted by day of week and occasion hours chronologically.
* On the staff schedule, multi-day special hours (e.g.,
for week-long vacations) now work.
* Galion only: added flags for OFF and Vacation, since
we are no longer using the location field.
* When looking at the schedule for a separate-schedule flag,
that flag is now suppressed in the display of each set of
hours, on the grounds that it is redundant.
* Implemented a unified editing form for regular and special hours.
It is no longer necessary to edit the regular hours, then go back
to the list of staff, find yourself, go into your schedule, click
Edit Exceptions... You can edit the regular hours and the
exceptions all in one big happy form now. (Limitation: if you
try to add more than 65535 timeslots at once to someone's regular
schedule, Undefined Behavior will ensue.)
* When viewing the schedule for a date range (this week, this
month, etc), each day separates any additional-schedule hours
into their own section for each additional-schedule flag, labeled
with the short description of that flag. So e.g. if you have a
flag for circulation-desk hours, they'll be listed at the bottom
of each day's bubble, clearly labeled.
* The admin interface now allows editing the list of available
resource booking colors, in addition to assigning them to
individual resources.
* Fixed it so flags using a lowercase character are not confused
with uppercase-character flags, even if the database does
case-insensitive matching.
* Released 2014-April-07.
Version 0.9.5:
* Created the first version of Galion-ReSched.POD, some rudimentary
POD documentation, mostly intended to help people find the
software on search.cpan.org.
* Adjusted the list of default staff schedule colors.
* Added to the resched_resources table a new field, bgcolor
(integer), which is a foreign key into the resched_booking_color
table. Sites upgrading from an earlier version must add this
field in order to use it.
* Running create-tables.pl populates resched_booking_color with a
selection of default colors, similar to the ones in the default
stylesheets.
* With the above change, it is no longer necessary to manually edit
the style sheets just to assign background colors to resources.
Instead, you can now do this in the admin interface.
* The resource background colors in the default style sheets are
deprecated and will be removed in a future release.
* Automated the release process.
* Released 2014 March 18th.
Version 0.9.4:
* If the user successfully logs in with a hashed password, any old
cleartext password is cleaned out. In rare cases where this is
not wanted, it can be prevented by setting a new variable in
config.cgi
* If the user successfully logs in with a password that is stored
in cleartext, the password is salted and hashed and stored in the
database that way.
* Combining the above two changes means sites that had originally
deployed before password hashing was implemented can switch over
to all hashed passwords just by having everyone log in twice.
Note that authentication by IP address is unaffected, as no
password is used in that case.
* Whenever a user logs in, old expired login cookie records for
that user are cleared out. This does not affect being logged in
on multiple computers at the same time with the same account,
since only expired sessions are cleared out.
* Fixed a bug in the staff schedule feature, wherein regularly
scheduled hours starting during the noon hour became corrupted
when saved.
* When looking at staff schedules, it is now possible to specify a
custom date interval. (If it's more than one day, it will back
up the start of the interval until it's at the beginning of a
week.)
* A new config variable, staff_schedule_first_day_of_week, has been
added. It defaults to 0 (Sunday), but for example if you want
your staff schedules to be shown corresponding to a
Thursday-through-Wednesday work week, just set this variable to 4
and Bob is your uncle.
* Some styling changes in the Staff Scheduling sidebar.
* Fixed a bug in the staff scheduling wherein, when the Add More
link was clicked while editing hours, only one set of hours could
be added (until you hit Save), because no new Add More link
appeared with the blank entry.
* Some minor visual style tweaks.
* Added the ability to easily edit the list of available colors.
Currently these colors are only used for the staff scheduling.
* Added a config variable to allow the shadow associated with staff
schedule name colors to be replaced with a solid opaque
background.
* Introduced a config variable for the salt length.
* The admin interface now has the ability to edit user records.
This has only been lightly tested; there may be bugs.
* Fixed a couple other bugs in the new staff schedule feature.
* Released 2014 March 14th.
Version 0.9.3:
* Introduces the new "staff schedule" feature, a way to track
things like who is going to be around on any given day (and,
conversely, when is a certain person going to be here) and
who is going to be responsible for a particular station at
a particular time.
* For new installations, salt has been made a mediumtext field.
(Previously it was tinytext.) Existing installations should
consider making this change as well. In the future, this may
become important for security reasons.
* The salt generation code in create-user.pl now uses a larger
amount of salt than previously. For now, it will still fit
in a tinytext field, for compatibility with older installations
that have not updated their database fields.
* Released 2014 March 4th.
Version 0.9.2:
* If "Started Late" gets turned on by mistake, it can now be
unset simply by setting the late time to equal the starting
time of the timeslot.
* The "extend booking" link now passes an argument indicating
when the booking currently ends. In the future this will be
used to detect if the same link is used more than once, but
I haven't implemented that part yet.
* Never released.
Version 0.9.1:
* Bookings made with the small dyamic (AJAX) "quick" booking
form DURING the timeslot can now get their late-start time set
automatically to the current time when booked, if the new config
option automatic_late_start_time is enabled. Bookings made before
the timeslots starts or after it ends are still treated as before,
and the long form still allows setting the late start time or
leaving it blank, as before. The option defaults to off, which
preserves the 0.9.0 behavior.
* Prefixed the name of the software with the word Galion, to
make it easier to find via search engines. I picked this
word because I happen to know it is not a competitive search
term, and because the software was developed here.
* Fixed a bug that caused the Started Late checkbox to default
to a checked state when it should not.
* Released 2013 April 10.
Version 0.9.0:
* Month overview now lists which resources it's for at the top
of the page.
* Fixed a bug in config.cgi that did not allow markup in the
custom section of the sidebar. (MOST config variables are
supposed to have entities encoded, but not that one.)
* Fixed a bug that prevented the redirect header and message
to the user from being sent in some cases.
* Added two new config variables to control the special case
of extending a booking past midnight. By default, it is
now disallowed, as this results in less user confusion.
(An optimization prevents a booking that started on a
previous day from showing up on a day's booking schedule;
users think this means the resource should be available and
often become confused when told that it is already booked;
that message has the start date and time, but users don't
necessarily read that far. If you enable booking past
midnight, you should inform your users about this.)
* Released 2013 March 05.
Version 0.8.8:
* Dependency change: replaced Taint with Taint::Util, because
the latter consistently installs without force.
* Added flags field to the users table. Sites upgrading from
earlier versions will need to add the field in order to use it, or
any features that rely on it. So far the only flag with a defined
meaning is A, meaning admin; the user's account must have this
flag to use the new admin interface or the old config interface.
* Speaking of the new admin interface, this release introduces the
beginnings of that, with the ability to create and edit schedules
and resources.
* config.cgi now does entity encoding before storing information in
the database, rather than before displaying it. (This makes
certain things easier for the new admin interface.) If you
have HTML metacharacters (especially ampersands and
less-than signs) in any of your config values, you may need
to re-enter them in config.cgi and save your "changes".
* Introduced the errordiv() subroutine, to make construction
of user-visible error messages cleaner and more standardized.
* Repaired an omission to the always-closed-on-Sundays cleanup.
The collision detection code now respects daysclosed config.
* Released 2012 July 12.
Version 0.8.7:
* Enhanced parsing of the showwith field to allow category names.
This also enhances the ability to list resources in an order
other than by database ID (if category showwith is in effect
and the resource just booked is itself listed in the category).
* Enhanced parsing of the switchwith field to allow category names.
The item itself is automatically excluded (since switching a
resource with itself would be a no-op, and having the option
listed would confuse people).
* For both showwith and switchwith, if you leave it blank but
have categories defined, you get the first category that
contains the just-booked resource by default. This makes
category maintenance easier when you add new resources or
phase out old ones.
* Always being closed on Sundays is no longer hardcoded.
You can set your always-closed days of the week in
config.cgi. (Sundays are the default.)
* Closing times are no longer hardcoded (and the defaults
have changed). You can set them via config.cgi. There
is also a provision for opening times (although note that
individual schedules can override that). Setting closing
times earlier than the opening times (either the global
or schedule ones) will result in "undefined behavior",
so don't do that.
* Name order for normalization is now configurable, and
the default for program signup lists has changed. The
default for normal booking contexts is the same as before.
Note that site code for additional normalization is still
called after order normalization, so it may receive
different input than before, depending on your config.
* Added a notes field to the resched_program table. Sites
upgrading from 0.8.x will need to add this field in order
to use it.
* Released 2012 June 28.
Version 0.8.6:
* Persistent variables are handled better. They will now only
appear in query strings (and forms) when set, and individual
variables can be excluded from persistence in certain cases (such
as when user input is expected to change them). This allows a
larger number of variables to be made persistent with as few
maintainability implications as possible. Because of the
pervasive nature of this change, I expect to find some bugs.
* Fixed a typo in config.cgi that caused it to set the wrong
variable for config_seconds.
* Started work on allowing categories to list resources in an order
other than the default. (Currently, the default order is sorted
by database id.) More work is required to fully complete this
capability.
* Frequent user lookup now uses the configurable categories.
* Added a couple of resources to the default stylesheets.
* Names on program signup lists are now normalized and dealiased.
* Released 2012 Jun 25
Version 0.8.5:
* Added a config variable that lets you set the number
of seconds after a successful signup before the
automatic redirect to a fresh copy of the form.
* Added redirects to the program signup facility.
Uses the same url_base and redirect_seconds config
variables as the main resource booking facility's
redirects.
* Fixed a bug in the create-user.pl script that caused
password hashes to be generated incorrectly when salt
was in use, preventing the user from logging in.
* Introduced a simple script that can be run from a cron
job to clean out old expired auth cookies if desired.
Currently this feature is untested. (It's also no
longer really needed as of version 0.9.4., q.v.)
* Fixed a bug in program signup that caused incorrect flag
inheritance and could potentially have caused other bugs
down the line.
* Cleaned up the rest of the "\"escaped\" double quotes".
* Refactored alias search to a subroutine, aliassearch(),
to make the main if/elsif/elsif section (of index.cgi)
easier to follow.
* Refactored room overview (i.e., calendar view) to
a subroutine, "overview", for the same reason.
* Refactored makebooking() out to a subroutine, for
the same reason. Also, made makebooking() more
readable by factoring out assemble_extranotes()
* Refactored viewbooking() out to a subroutine.
* You can now specify a custom bookmark icon via config.cgi
* Released 2012 June 11.
Version 0.8.4:
* Fixed a bug that prevented the booking schedule from
displaying if there was a booking that started too early.
* It is now possible to view a program signup list in
the order in which they signed up. (Alphabetical by
last name is still the default. To see the list in
signup order, click the # at the head of that column.)
* Setting program flags at program creation time now works.
* Made one very small Galion-specific change to smooth the
upgrade process for us.
* Added salt field to users table. Sites upgrading from
an earlier version must add the field (tinytext) if
they want to use it.
* Added a create-user.pl script to assist with creating
user records, so you don't have to mess around with
salt generation and password hashing and whatnot.
* Marked the first column on program signup sheets as
numeric, so that the numbers are right-aligned.
* Made the default sort on program signup sheets
case-insensitive.
* Released 2012 Jun 05
Version 0.8.3:
* Fixed a bug that caused programs to disappear from the
list when their start time passed, rather than when their
end time passed.
* It is now possible to go back and look at the signup
sheets for past programs.
* Program flags can now be edited. This includes cancelation.
* Implemented the ability, when listing programs, to include
canceled ones.
* Signup sheets for past and canceled programs now inform
you of this fact rather than naively offering to let you
sign up more people.
* Fixed a bug in config.cgi that caused variables set to
zero to revert to their nonzero defaults the next time
the configuration utility is used, unless the user
changed the value again.
* Added preliminary support for program signup limits and
waiting lists.
* This release adds a "signuplimit" field to program table. Sites
upgrading from 0.8.0 through 0.8.2 will need to create this field
(integer) in order to use it. (If you upgrade from any release
prior to 0.8, create-tables.pl will handle it.) This field allows
you to place a limit on how many people can sign up for a given
program. 0 means infinity, which is the out-of-the-box default,
but you can set a per-site default via config.cgi
* Released 2012 May 31
Version 0.8.2:
* List of programs (for program signup) is now sorted.
* When you click "List of programs", you get up to a hundred;
the sidebar is still limited to max_sidebar_programs.
* Added config variables allowing programs in the sidebar
to list date and/or time.
* Fixed oversight in twelvehourtimefromdt() that caused a colon
to be used when it shouldn't be ("7:pm" instead of "7pm")
* Released 2012 May 29 and deployed in Galion.
Version 0.8.1:
* You can now go back and edit a signup list entry.
* You can also go back and edit the details for a program.
* If people who have signed up for a program cancel, you can
now mark them canceled. Canceled signups do not show on the
signup sheet by default nor are included in the count.
* Introduced generalized infrastructure for handling flags
on the various program-signup-related records.
* Certain program category flags are inherited by programs,
and certain program flags are inherited by signups.
* Fixed a couple of oversights wherein the new program signup
facility did not always preserve the user's choice of visual style.
* Minor stylesheet improvements, to the three main stylesheets,
e.g. to provide clear visual separation of program-signup lines.
* Deployed in Galion, 2012 May 24. Never released to the public.
Version 0.8.0:
* Introduced the program signup facility. This is very basic,
but I'm planning some improvements to it soon.
* Cleaned up more "\"escaped\" quotes", this time in the sidebar.
* Introduced some new AJAX functionality. Not all of it ended
up being used currently, as I found entirely client-side ways
of doing something that was going to involve the server.
* Separated out the AJAX support code from index.cgi to ajax.pl
and added support for the new functionality.
* Made the AJAX support code more general and more maintainable.
* Made some changes to ajax.js to get fewer warnings from JSLint.
More of this is needed (although, some of its warnings seem
entirely specious to me).
* Released 2012 May 22.
Version 0.7.9:
* Fixed a bug in the recurring-booking code, which was causing the
"dates listed below" option to only allow two dates and leak HTML.
* capitalize() now handles given names differently from surnames,
so that names like "Vanessa VanMeter" can be handled correctly.
* Fixed a bug that was preventing capitalize() from correctly
handling apostrophized surnames (e.g., O'Reilly) and generalized
it to handle non-Irish ones (e.g., D'Alsenin). Note that only
the standard ASCII apostrophe is supported at this time; if your
apostrophized surnames have exotic unicode apostrophe characters
(or, heaven help us, Microsoft SmartQuotesTM), it still won't
work quite as you might want. If someone wanted to fix this,
the place to look would be on line 100 in include.pl (as of
version 0.7.9; one supposes the line number will change in
future releases).
* Cleaned up more "\"escaped\" quotes", this time in the view
code and also in datetime-extensions.pl
* Removed include.pl.old, which hasn't been used for a while.
* Factored out the $input{view} code to sub doview().
Much more refactoring of this type is needed.
* Released on 2012 April 4th.
Version 0.7.8:
* Introduced the "favicon", resched.ico. Individual sites can
of course customize or replace this icon.
* create-tables.pl no longer creates the deprecated plain-text
password field, only the hashedpass field. The password field is
FOR NOW still supported, for backward compatibility, but sites
should go ahead and fill in the hashedpass fields for all users,
because cleartext password storage will become unsupported in a
future release.
* Cleaned up a bunch of backslash-intensive string quoting in
auth.pl, for improved code legibility and maintainability.
* Also cleaned up some of the backslash-intensive quoting in
the code that shows a booking; it still needs more.
* Added a variable (to config.cgi), show_booking_timestamp.
If this is set, the code that shows a booking will now
show the timestamp.
* Enhanced capitalise() to correctly handle names like O'Reilly and
O'Neal.
* Released 2010 June 17.
Version 0.7.7:
* Introduced sitecode.pl for holding site-specific code. The main
codebase will include hooks for some of this.
* Moved site-specific aspects of name normalization into sidecode.pl
and made some slight adjustments for Galion.
* Added preliminary support for the Combine Rooms feature (bug 199).
Note that if you are upgrading from an earlier version, you will
need to add the combine field (tinytext) to the resched_resources
table before you can use it. The field holds a comma-separted
list of the record id numbers of the other rooms you want to
be able to book together with the one in the current record.
* Fixed the Choose Resources & Dates list to be generated from
include::categories (previously it was hardcoded).
* Introduced some (technically redundant) clarifications to the
blackonwite stylesheet to compensate for bugs in IE7 (probably
also IE6) that were causing illegibility. I believe this makes
the thing mostly usable with IE7, though getting the AJAX-based
"Quick" feature to support IE is still on the TODO list.
* Repeat the default alternate stylesheet at the end of the list
of alternatives, so that IE6/7 will give it priority. This is
still far short of real alternate stylesheet support, but hey,
it's not my fault you're using an old version of the worst
browser available. At least now IE7 users will have *some*
flexibility when it comes to visual styling. Incidentally,
this workaround probably violates the spirit of some RFC or
another, but it doesn't seem to bother Gecko.
* Released 2009 April 20.
Version 0.7.6:
* Introduced the nonusers variable, to allow the site
admin to customize which special names resources can
be booked for that won't count toward usage stats.
* The "available" link (shown when a booking is done
early but has no followup) now indicates the time
that the resource became available.
* The capitalise routine now correctly handles roman
numerals up through VIII (if they appear as a word
by themselves, not embedded in a name). Is this
enough, or should it go clear to Louis XVI?
* Initial support for hashed passwords (md5_base64).
This adds Digest::MD5 to the list of required
modules, but it's worth it. If a user's record
has the hashedpass field set, this is checked
instead of the password field. It is recommended,
that you clear the password fields of all user
records to NULL after setting the hashedpass values.
* Note that if you are upgrading from an earlier
version, you will need to add the hashedpass field
(tinytext) to the users table before you can use it.
* Released 2009 February 16th, and also deployed in Galion.
Version 0.7.5:
* Changed the default stylesheets. In Galion this means
children's-room computers are now more visually distinct from
adult-department computers, which will be important with the
categories we will be using now. Of course, any other
site will probably want to edit the stylesheets anyway.
* Added the flags field (tinytext) to the resources table.
NOTE: if you upgrade from a previous version, you need
to alter the table to add this field.
* The R flag will mean "this resource is a meeting room".
* The X flag will mean that the resource should not be
included in automatically generated lists, e.g., in the
sidebar. So, for instance, if you have a phony room in
your practice zone that you use for testing the software,
you can get it excluded from the sidebars by giving it
this flag. Similarly, if you don't have categories set
up, you can stop a certain resource from appearing under
Today and These Same Days by giving it the X flag.
* All other characters (as flags) are reserved for now:
lowercase letters for site-specific use, and all
other characters for future use in the main codebase.
* Updated isroom to look at the R flag. (Previously the
list of room resources was hardcoded.)
* Changed out the hardcoded rooms-related parts of the
sidebar to take advantage of the above generalizations.
So now if a site sets the R flag on their room resources,
these parts of the sidebar are automagically generated.
Adding the X flag as well causes exclusion.
* Released 2009 January 21, and also deployed in Galion.
Version 0.7.4:
* Updated the magic page titling to take account of
the new categories system. (Still need to do the
isroom stuff, though.)
* Fixed a minor bug in include::categories that the
above work exposed.
* Deployed in Galion. Didn't bother with a public
release of this version, because I just did 0.7.3,
and there'll be more changes coming anyway.
Version 0.7.3:
* Fixed a glitch in RELEASE.txt so that the public demo
will be put back in working order after each release.
* Fixed an obscure bug (198) that triggered when a booking
was cancelled after it had been finished early and
a followup booking placed, wherein the followup
booking became orphaned (and thus invisible), which
caused problems. For now you just get an error message
if you try to do this, because I can't think of a
legitimate use case for wanting to cancel a booking
that has a followup. If someone actually needs to be
able to do that, it can be changed to clear the
isfollowup field on the followup booking, instead
of giving the error message. The code to do that
would go where the error message is now. But unless
someone asks for it, I don't see the point.
* Galion only: added booking guidelines link to
the sidebar. This was done via the existing config
mechanism for adding things to the sidebar, so it
has no impact for any other site.
* Did some much-needed refactoring on the stats gathering
to get it into a more maintainable state, so I can
work with it better. (This is in preparation for
making the stats that can be gathered more flexible.)
* Introduced the categories variable, which is now used
for subdividing the statistics, and in the sidebar
under Today and also This Same Day / These Same Days.
The default is for each resource to be its own category,
which will do fine if you have only a very small number
of resources. Larger installations will want to
specify categories. Added the variable to config.cgi.
* Released publically 2009 January 16th. Held off on
Galion deployment because it was Friday.
Version 0.7.2:
* Fixed a number of markup issues per validator.w3.org
recommendations:
* Added xmlns attribute to html element.
* Fixed a couple of malformed comments.
* Changed a span to a div in several places so that the
block-level ul element would be allowed inside it.
* Got rid of all instances of the nobr element, which
is not defined in xhtml. Replaced with a styled class.
* In the course of those modifications, I banged into the
"annoying \"escaped\" quotes" issue several times and
refactored to a more maintainable style. More of this
still needs to be done.
* Changed script tag from self-closing to paired open/close
style. This is theoretically incorrect (it's an empty
tag pointing to an external script file via src attribute),
but it appears to be necessary for MSIE support.
* Speaking of which, MSIE now _partly_ works. For full
MSIE support a legacy stylesheet is needed and maybe
some updates to the AJAX stuff.
* Released publically and deployed in Galion, 2008 Aug 29.
Version 0.7.1:
* removed FormInput.pm, which was no longer being used
by anything. (See the note in 0.7.0 about why.)
I am pretty sure that's finally the last of the old
Class::DBI stuff.
* Created RELEASE.txt with notes on doing a public release.
* Deployed in Galion, 2008 Aug 26. This version was never
released publically, because it didn't have enough
changes over 0.7.0 to bother.
Version 0.7.0:
* Removed DBConfig.pm, which was no longer being used by
anything. (Actually, I think DBConfig.pm and Auth.pm
may have only ever been used by the 'events' stuff,
which is no longer even used in Galion and was never
a part of the public release in any case.)
* Removed Class::DBI from the list in INSTALL.txt,
since it was only needed for the aforementioned
removed stuff.
* Added the ils_name variable, which is used in two places
(both having to do with aliases -- the canonical name
should be spelled the same way as in the ILS).
* config.cgi now displays the variables in a logical
(rather than alphabetical) order. Also, most of the
included stylesheets now put a visible border between
them, so that the user can more easily tell where the
explanation for each one ends and the next begins.
* Made time_zone a variable (previously it was hardcoded).
* Corrected a statement in TODO.txt regarding what would
be needed for Postgres support.
* Released 2008 August 5 (yes, two releases in one day).
Version 0.6.9:
* Added the misc_variables table, for storing variables that
are specific to a particular site.
* Added the getvariable and setvariable routines to db.pl
* Added config.cgi to make it easier to set up these variables.
The sysadmin can always chmod -x it if he's worried about
users messing it up. (Note: this is no longer necessary as
of version 0.8.8, q.v.)
* Added support for the following variables: sysadmin_name,
url_base (but, ajax.js still has it hardcoded), and
sidebar_post_today
* Removed Auth.pm, which, as it turns out, nothing is still
using at this point.
* Added the auth_by_ip table, with support in auth.pl
* Updated INSTALL.txt to account for the above changes.
* Released 2008 August 5.
Version 0.6.8:
* Factored the AJAX javascript out to ajax.js, in preparation for
working in the forum software version's improvements (e.g., to
support MSIE). Did not actually do that yet, this is just a
preparatory step.
* Added INSTALL.txt with basic install instructions. These have
not yet been tested but should be a real good starting point.
* Released 2008 August 1.
Version 0.6.7:
* Removed %fieldname from include.pl (a holdover from the
inventory tracking tool, which somehow got carried over,
discovered when I was sanitizing the resched code for
public distribution).
* Removed some things that were highly specific to the Galion Public
Library, in preparation for public release.
* Released 2008 July 31.
Version 0.6.6:
* Fixed a long-standing bug in usersidebar that was causing
the This Same Day section to appear whenever the date
being viewed defaulted to the current date (by not being
specified in the query args).
* Deployed 2008 July 24.
Version 0.6.5:
* Made houroptions put "am" on morning hours, per the request
of the downstairs staff, see bug 187,
http://localhost/bugzilla/show_bug.cgi?id=187
* Changed the list of links under This Same Day / These Same Days.
Instead of listing individual resources (which you can get
anyway by clicking the column headers) it now lists only the
broad categories. This makes the list considerably shorter,
which pulls Today above the fold in most cases. See bug 167.
* Deployed 2008 July 21.
Version 0.6.4:
* The table is now preceded by a line that tells the current
time on the server.
* added washbookingrecord() to db.pl to clear up persistent
bug wherein fromtime_datetime and util_datetime didn't
get cleared out of a record before updaterecord was called,
resulting in error messages about not being able to update
the non-existent field.
* Deployed 2008 June 27.
Version 0.6.3:
* When a booking is created, the bookedfor name _as typed_ is
preserved in the notes, in parentheses, if it does not match
what actually goes into the bookedfor field (e.g. due to an alias).
* Adjusted the wording in a couple of error messages.
* Updated handleResponse to call retrieveupdates() if it gets
an updatecount element in the response. Note that the retrieveupdates()
function is NOT defined in include.pl, as it might be different depending
on the page that is being updated.
* If dynamic-info.cgi gets an updates-p request, it checks for
updates. If there are any, it sends an updatescount element.
Otherwise it sends a success element saying there are none.
(No action needs to be taken in the latter case.) Note that
the only kind of new updates checked for at this point are
new bookings. Changes and cancellations are not considered.
* When index.cgi generates a view page, it includes a suitable
retrieveupdates function and calls window.setInterval to issue
an asynchronous updates check request every two minutes.
* The net result of all that is that if a new booking is
created for one of the resources that you're currently
looking at on a view page, within two minutes you'll
get an updated view even if you don't do anything.
* Deployed 2008 Mar 18.
Version 0.6.2:
* Fixed a bug in frequent user lookup that was causing no records to be
found when restricting to certain resources (as opposed to "anything").
* Added meta-counting to frequent user lookup, which is useful when
you're looking up people who booked at least 1 times (e.g., for
statistical purposes).
* Added link in the sidebar to the QuickNet control facility.
* Deployed 2008 Mar 07.
Version 0.6.1:
* Added funwithfont.css, which uses different fonts for different resources.
This is intended solely for my own use, since I normally keep page colors
disabled, so I otherwise miss the benefits of the new style system.
Note that many of the fonts it uses are obscure and unlikely to be
installed on other systems, but they are available on my workstation.
* Fixed a bug in usage stats gathering. (It was failing to take account
of the added internet station and the accompanying renumbering.)
* When a booking is successfully extended, a redirect header is issued
with a thirty-second delay, so that somebody won't walk up to the
computer minutes later, hit reload, and extend the booking _again_
without meaning to do so. (If they _intend_ to extend it again, the
extend link should still be there.)
* Fixed extendbooking to kludge %input better so that the correct day's
table is displayed if a non-today booking is extended. (I was noticing
this when extending computer class bookings. I suspect none of the
other staff were seeing it, because it's a real corner case. Anyway,
it's fixed now.)
* If a name _has_ aliases, this fact is displayed on the booking edit
form, linked to an alias search that will display them.
http://10.0.0.21/bugzilla/show_bug.cgi?id=159
* Deployed 2008 February 22.
Version 0.6.0:
* More double-quote refactoring.
* Improved the alias search so that it finds more results. In particular,
it now always does a substring search (rather than trying an exact match
search first and stopping if successful). Also, it looks in the canon
field, as well as the alias field, and unifies the results.
* Refactored search-results generation out to a subroutine, searchresults,
to get that logic out of the big elsif($input{foo}) chain. There are
some other things too that need to be refactored out of there to their
own subroutines, but that was the first one.
* Refactored alias updating out to the updatealias subroutine.
* Moved isalias, dealias, normalisebookedfor, and capitalise into include.pl
As a result they are now in the include:: namespace, but also they are now
accessible to dynamic-info.cgi
* showbooking in dynamic-info.cgi now normalises (etc) the bookedfor field.
* Implemented AJAXified done-early feature.
* Followup bookings now have the name normalised and dealiased.
This was neglected previously.
* Added a couple of testing options to the Special Testing Zone.
* Cleaned out some old debugging cruft that's no longer needed.
* Cleaned out references to stylepics, which is no longer needed since
the stylesheet overhaul.
* Booking search results now use resource classes (res16 etc),
so they get the styling. I added styles for the practice zone
resources.
* Deployed 2007 Dec 27.
Version 0.5.9:
* Worked some more on the quoted-string refactoring (see under the
changes for version 0.5.6). Still need to do more of this.
* Added UI for creating a new alias, in the Aliases sidebar section.
* Added "mark this name as an alias" link next to bookedfor on the
view/edit booking screen, if the name is not already an alias.
(If it is already an alias, then that information is displayed,
with a link, since version 0.5.3, and I didn't change that.)
* Moved the sanity-check logic for aliases into a subroutine,
sanitycheckalias, which is now called from two places.
* Deployed 2007 December 19.
Version 0.5.8:
* Based on feedback from Darlene, made Low Contrast the default.
* Deployed 2007 Dec 11.
Version 0.5.7:
* Jill wanted a lower-contrast variant of darkonlight, so I created the
Low Contrast style.
* Deployed 2007 Dec 11.
Version 0.5.6:
* Totally overhauled the stylesheet system. The new system, among other things,
uses color to create visual cues for distinguishing different resources.
It's also simplified. There are four choices of style: light on dark,
dark on light, black on white, and browser colors. Printing uses a variant
of black on white with certain navigational features set to display: none.
* Fixed a minor bug on the overview so the room name and first word of the
bookedfor don't runtogether.
* Replaced some "\"regular\"" double-quoted strings with qq["quote-like"] ones,
to get rid of all the backslashing. Still need to do more of this.
* Fixed a bug in the authentication used by events.cgi
* Created v2 of the blue down-arrow for extending bookings. v2 has better
contrast against the new blue-background styles for internet resources.
* Deployed 2007 Dec 11.
Version 0.5.5:
* Added leobardis (large print internet).
* Deployed 2007 Dec 10.
Version 0.5.4:
* Bookings search now looks under all aliases, plus the canonical name.
* Fixed Did You Mean feature to ignore 'CLOSED', which has special meaning.
* Deployed 2007 Nov 13.
Version 0.5.3:
* Created sub capitalise to replace the ad-hoc split/map/join name capitalization.
* Added a line to sub capitalise to bicapitalize McNames, MacNames, and VanNames.
* When showing a booking, if the bookedfor is an alias, this is noted, with a link
to the alias record.
* Added alias record display, with an Edit link.
* Added alias edit functionality, with ability to save changes, subject to sanity checks.
* Added alias search to Search section of sidebar
* Created Aliases section of sidebar, which for now just also has alias search,
but this is where stuff like creating a new alias can go.
* Deployed 2007 Nov 13.
Version 0.5.2:
* Created the new resched_alias table and moved the contents of %alias there.
* Altered sub dealias to use the resched_alias table rather than the hash.
* Created sub isalias, using the resched_alias table, to replace other
uses of the hash where dealias is not suitable.
* Tested: frequent user lookup still works correctly.
* Tested: booking the jukebox for an alias results in the canonical name
being shown, as it should.
* Fixed a long-standing minor bug that caused an extraneous message to be
output when deleting a non-followup booking.
* The view table cells now normalise and dealias the bookedfor names.
* When search returns a booking where bookedfor is an alias, it now
also gives the canon in parentheses.
* Deployed 2007 Nov 7.
Version 0.5.1:
* Added [another patron] to %alias
* Not sure I ever deployed this version.
Version 0.5.0:
* Fixed a bug in Automatic single-choice Did You Mean corrections.
* Deployed 2007 July 27.
Version 0.4.9:
* Made debug comments in usage stats only occur if $debug is >1.
* Deployed 2007 July 25.
Version 0.4.8:
* If there's only one Did You Mean choice, don't ask, just do it.
* Deployed 2007 July 23.
Version 0.4.7:
* Added some more entries to %alias.
* Added multiple choice Did You Mean for single-word names per bug 77.
* Deployed 2007 July 13.
Version 0.4.6:
* Added first part of the "Did You Mean" feature, per bug 77.
* Deployed 2007 July 11.
Version 0.4.5:
* Added [another patron] to %alias.
* Search was returning results in forwards chronological order,
which now that we've been using the software for a while was
starting to feel wrong, since all the first results were
typically ancient history. So I reversed it.
* Deployed 2007 May 30.
Version 0.4.4:
* Made search and frequent user lookup ignore case.
* Made frequent user lookup normalize names (from "last, first"
to "first last", remove parenthesized "IN" notes, and so forth).
* Introduced %alias. For the moment, frequent user lookup is the
only thing that uses it.
* Deployed sometime in 2007Q1 IIRC.
* Redeployed May 29 with minor fix to accommodate changes in our
network infrastructure: Use $ENV{HTTP_HOST} instead of
$ENV{SERVER_ADDR} when composing the base URI, since staff now
access this service through NAT. Did not increment the version
number, partly because I was in a hurry.
Version 0.4.3:
* Notes icon is now shown for followup bookings that have notes.
* Fixed a bug wherein deleting a followup booking left the parent
booking with an invalid followedby field, resulting in the
inability to schedule anybody else in that timeslot. Now
deleting a followup booking changes the parent record to not
list a followup, so that a new one can be added if needed.
* Deployed 2006 Nov 06
Version 0.4.2:
* Changed sendnewbookingform (in dynamic-info.cgi) so that if the
full durationmins is not available the default is to book
intervalmins rather than durationmins. This reduces the
likelihood that the user will have to change the end time.
* Modified the index to apply the class dateth or todayth to the
date cells in the table header, depending on whether it matches
the current day or not. Styled dateth to stand out visually
(black on yellow, with black border and yellow outline).
* Deployed 2006 October 9 (yeah, two updates on the same day).
Version 0.4.1:
* Fixed a bug in sendnewbookingform (in dynamic-info.cgi) that had
prevented the Quick button from returning a usable form when there
was less than durationmins available.
* Changed showbooking (in dynamic-info.cgi) so that the done-early link
is not shown in situations wherein the booking might extend beyond the
table cell where it is currently shown.
* Deployed 2006 October 9.
Version 0.4.0:
* This was the first version robust enough that we used it for
months with no changes.
* Consequently, it was _after_ this version that I instituted the
CHANGES.txt file.