General
Introduction
Documentation
Package Content
Installation
Download
Installation
Upgrade
Tech Info
Changelog
Roadmap
FAQ
Bugs / Todo

Project Hirtius - Changelog

Here below, the contents of the file called Changelog, also provided in the root folder of the distribution archive.

Project Hirtius -- Changelog
============================
(Ph. A. - 13/08/2024)


1.06 (13/08/24)                              [calendar view]
---------------
- Cosmetic change in ./tray_edit.php, 'view' mode: don't display useless 
  ActionLink column when tray is already full.
- Fixed bug in 'buildPermaLink()' function where the Tiddler title used as
  HTML anchor was not adequately encoded, causing the resulting link to point 
  to a non-existent record.
- Improved 'URLify()' function to render SmartLinks pointing to non-existent
  objects with a different visual style, and to use a different target URL
  in this case (object creation page or object list, where possible).
  Added "candidate Slide ID" to the interface of ./slide_edit.php (to be used
  by 'URLify()' when pointing to non-existent slides). Created new function 
  'GetBibSrcRefIDbyName()' to allow similar check for Bibrefs and Srcrefs. 
  Updated HelpSet and test procedure accordingly.
- Disabling or enabling a user account is now traced explicitly in the 
  EventLog.
- Added action links to the Tray view page to allow inserting a new Slide 
  straight into a specific (empty) slot. Updated HelpSet and test procedure 
  accordingly.
- Granted Reader-level user accounts full management rights over their own
  library cards and related renewal records. Updated test procedure 
  accordingly.
- Cosmetic changes in 'SlideView()' and 'SourceView()' functions.
- Improved 'dd2dms' script: trim input parameters before parsing them.
- Removed dead code in ./as_result.php ($objdesc).
- Replaced 'Source Type' by 'Source Type Code' when displaying Source 
  objects in list mode in ./index_obj.php.
- Fixed a display bug in the concatenation of 'title' and 'subtitle' fields
  (e.g. for books and sources) where a punctuation mark was added even when
  'title' already had one as last char. Standardized on ',' to separate 
  'title' and 'subtitle' in concatenation. Updated HelpSet accordingly.
- Added missing "is alive" flag to Individuals advanced search form. Updated
  HelpSet accordingly.
- Took advantage of the new functions and data fields introduced by the Calendar 
  View feature to implement a more thorough validation on the "historical" 
  date format (i.e. the one used for Events and Titles).
- Added new Calendar View feature (based on jPerCal project). Added new 'era' 
  column to Events and Titles objects. DB schema bumped to 50. Made JDN values 
  more visible (and selectable as Advanced Search Result columns where 
  applicable). Added new Calendar Tools page to offer direct access to the 
  underlying functions that support Calendar View. Added new "Bibliography" and 
  "Supported Eras" help pages with all references used to build the calendaring 
  functions. Updated HelpSet, INSTALL, UPGRADE and test procedure accordingly. 
- Added missing hidden field for '$hits_per_categ' to "Latest Updates" 
  refresh form.
- Added new checkbox on the "Latest Updates" search query page to control 
  whether the maximum number of hits should be computed globally or per 
  category. Updated HelpSet and test procedure accordingly.
- Fixed a bug in event log entries date format that caused them to appear 
  out-of-order in "Latest Updates" search results. Updated test procedure 
  accordingly.


1.05 (31/10/23)                                  [event log]
---------------
- Bug fix: added missing calls to 'htmlspecialchars()' on 'Location' field
  in Slides, Events, Individuals and Families edition workflows.
- Fixed a bug where linked sources were not taken into account when deciding
  whether to allow the deletion of a library record (the error message now
  gives a detailed count of each item type). Added a list of linked
  sources to the Library Edition page in 'view' and 'edit' modes. Updated the
  Libraries List page to display the sum of linked books and sources in the
  (renamed) "#Items" columns. HelpSet and test procedure adapted accordingly.
- Used format-coding on Auth. Level field on Users List and User Edition
  pages ('view' mode) to make Admin accounts easier to identify. Added
  Account Creation Date column on Users List (usable as sort key). HelpSet 
  and test procedure adapted accordingly.
- Added a count of linked books on the Library List page. HelpSet and test
  procedure adapted accordingly.
- Bug fixes and improvements brought as a result of running the test 
  procedure:
  * Protected hidden fields where needed
  * Removed two unused hidden fields from Family edition page in 'edit'
    mode
  * Added "DEBUG ALL" value to debugging categories. HelpSet updated 
    accordingly
  * Improved some toolbar icons title (= tooltips)
  * Removed needless verbosity from getTiddlerTagList() debug messages
  * Fixed buggy HTML in ./index_inx.php, ./inxtree.php, ./slide_edit.php, 
    ./trays_p.php, ./book_edit.php, ./source_edit.php, source_types.php,
    ./person_edit.php, ./name_types.php, ./family_edit.php, ./event_edit.php,
    ./event_types.php, ./sequences.php, ./admin.php, ./obj_att_edit.php,
    ./bulk_inx_add.php
  * QuickJump to error out if requested Tiddler doesn't exist
  * Format per-category object count as per user prefs in INXtree flat list
    report, same for count of source type use in source types list, for count
    of name type use in name types list, for count of event type use in event
    types list, for sequence members count in sequence list (and right-align 
    said count where it was not the case yet), for all counts on Index
    Categories Bulk Add page
  * Disabled "delete" action for "required" event types in event types list.
    HelpSet and test procedure updated accordingly
  * Added confirmation step in case an attempt is made to remove the 'required'
    flag on the Event Types Management page. HelpSet and test procedure updated 
    accordingly
  * INXtree node copy process now reports the number of nodes successfully
    copied and doesn't update the DB timestamp when that number is zero
  * Improved html2latex_text() and html2latex_line() to properly handle
    the '\' character
  * Improved denumberStructEntry() to allow '_' as separator between 
    numbering and heading. Updated HelpSet accordingly
  * Improved the delete confirmation message in ./inx_edit.php, 
    ./book_edit.php, ./article_edit.php, ./libraries_edit.php
  * Fixed a potential data corruption bug that affected preformatted sections 
    in Tiddlers where such sections contained the '\n' sequence (as may be
    the case for computer code samples).
- Project creation, closure and re-opening events are now recorded in the
  event log. HelpSet and test procedure updated accordingly.
- Clarified language of a few warning and error messages.
- Fixes and cosmetic improvements in the generated HTML on many pages.
- Called nl2br() when needed instead of str_replace() as the generated HTML
  is cleaner.
- Fixed a bug in FormatReading()'s algorithm that caused invalid HTML to be 
  generated in some circumstances (duplicated <table> opening statement).
- Updated INSTALL document to reflect compatibility with openSUSE Leap 15.4.
- Redesigned '$debug' variable handling: instead of a binary ON/OFF value,
  the variable can now be assigned a combination of binary flags to selectively 
  turn debugging ON or OFF for different categories of topics (three have been
  defined at this stage: algorithms and application workflow, SQL queries and
  JavaScript). The DB Admin menu page has been updated to list the currently 
  enabled debugging categories. HelpSet, test procedure and INSTALL document 
  updated accordingly.
- Added support for 'RAW' contents to 'sources.reading' field for mini-quote
  handling in basic search result (identical to what was already done for
  'slides').
- Fixed bug in basic search result where the mini-quote extracted from
  'slides.comment' could have been overwritten by that from 'slides.releve'
  if 'RAW' mode was used for 'releve' and a match was found inside that field 
  too.
- Minor bug fixes in the HTML layout of the Advanced Search, Slides Edition
  and Source Edition pages. Made SlideView() and SourceView() HTML layout 
  dynamic depending on the number of optional text fields to display.
- Added warning during Slide or Source submit if reading is empty but either 
  transcription or translation are not.
- Added new 'transcription' field to 'slides' and 'sources' tables. Displayed
  in view mode only when not empty. A new JS-driven "Populate" button allows
  to auto-fill 'transcription' with a cleaned-up version of the current 
  contents of the 'reading' field. New field integrated to basic and advanced
  search. DB schema bumped to 49. Updated HelpSet and test procedure 
  accordingly.
- Added a new global definition and a new user preferences column to allow
  users to select the Event Type they would like to get as default proposal
  on the New Event creation form ("Generic Event" specified as global 
  default). Updated HelpSet and test procedure accordingly.
- Added new checkbox(es) on the Advanced Search page for Events, Individuals
  and Families objects, to allow selection of only those records where
  the Event date has been left unset. Updated HelpSet and test procedure 
  accordingly.
- Fixed a bug where Events whose date had been left unspecified couldn't be
  navigated to using the "next by date", "prev by date" NavBar controls or
  the "next in seq", "prev in seq" Sequence controls. New global definition
  created for a "negative infinity" value used instead of NULL (and as default) 
  for 'events.date_s_key' and 'titles.as_of_key' columns when the related 
  date is left empty by the user. Added 'obj_id' as second-order sort key where 
  "Hirtius-type" dates were used to improve sort order predictability. DB 
  schema bumped to 48. Updated HelpSet and test procedure accordingly.
- Switched global configuration variable '$obsol_bgcol' from 'SteelBlue' to 
  'BurlyWood' for better URL contrast on Firefox (Chrome enhances the
  contrast automatically). Added HelpSet impact in the Global Definition File
  page, that had been missed in the previous commit. Further (unrelated)
  improvements on same Help page.
- Added a more obvious visual identification for obsolete slides. In the
  Slides list, they are displayed on a blue background, and on the edition
  page a blue background highlights the card header and obsolescence controls.
  In addition, a warning is displayed when further editing an obsolete slide.
  HelpSet and test procedure updated accordingly.
- In ./families.php, improved the existing sort keys and added new ones to 
  better handle successive unions by the same individual. Updated HelpSet
  accordingly.
- Minor HelpSet improvements.
- Minor improvement to the Project deletion confirmation message.
- Added warning for user to re-authenticate after having renamed their 
  account.
- Fixed a bug in the 'default_data.sql' file where the initial 'users' table
  contents was no longer in line with the current DB schema.
- Added new verification function to sanity check for array-based values.
- Added new Event Log feature to record meaningful application activities.
  At this stage, the following actions are logged:
  * initial data load at DB creation
  * sanity check and ID gaps check runs
  * any change to user profiles
  * any data deletion
  * LaTeX report generation
  The log entries are accessed through a new Event Log Viewer page and are
  also searchable through the Basic, Timeline and Advanced Search pages
  (please note: non-admin users can only see events they triggered themselves).
  New 'event_log' table integrated into sanity checks, statistics. DB schema 
  bumped to 47. Updated HelpSet and test procedure accordingly.
- Processing time is computed and displayed for potentially long-running
  tasks (e.g. sanity checks, DB statistics, orphaned objects identification,
  LaTeX report generation, etc.)
- Fixed a bug in ./projects.php where 'get_row_count()' function would
  not take the "hide closed projects" filter into consideration. Created
  new function 'get_filtered_row_count()' for this situation.

1.04 (04/07/22)                                      [users]
---------------
- Defined requested 'bcrypt' iterations as a new global variable (called 
  '$htbciter'). Min. is 4, max. is 17, suggested default is 12. The higher 
  the value, the stronger the hash, but the computing cost is exponential 
  (which helps mitigate against brute-force attacks).
- Moved to using the stronger 'bcrypt' algorithm for password hashing 
  instead of MD5 ('-B' option to 'htpasswd').
  /!\ Existing passwords stored as MD5 hashes will still work. The use of the
  new algorithm will only be enforced on a user when he changes his password
  (or on new accounts when they are created).
- Replaced the unsafe "batch mode" ('-b' parameter) of 'htpasswd' calls
  by '-i': instead of providing the passwords on the command-line (thereby
  very briefly exposing their clear text), they are now securely read from 
  <stdin>.
- Moved password update functionality to a dedicated function (called 
  'set_ht_password()') to ensure uniformity of processing.
- More validation tests in ./user_edit.php. Removed hardcoded script name.
  Cosmetics.
- Improve output of 'hs2static' script: transform TOClink into NavBar with 
  return link to Project Hirtius website Home Page. Added NavBar on ToC 
  page as well.

1.03 (09/04/22)                                      [users]
---------------
- Fixed bug in ./user_edit.php: incorrect timestamp was used for 'modified' 
  field in INSERT and UPDATE queries.
- Integrated applicable comments from RMens' review of 'chhtpwd' v1.4:
  * use escapeshellarg() instead of home-grown escaping regexp
  * set appropriate mode and ownership on password file and dispense with
    'sudo' around htpasswd2 (still needed to call 'chhtuser')
  * each() soon to be deprecated, use foreach() constructs instead
  Updated INSTALL and UPGRADE documents accordingly.
- To bring that page more in line with the rest of the application, merged
  ./user_post.php into ./user_edit.php (the modification history for both
  files has been merged as well, leading to a renumbering of the remaining
  file versions). The file called ./user_post.php has been removed from the 
  project. Got rid of the old '$selrow' variable. More validation tests. 
  Updated HelpSet and test procedure accordingly.
- In ./user_edit.php, granted access to own profile edition to 'Reader'-
  level user accounts (except for 'userid' and 'level' fields, obviously). 
  Updated HelpSet and test procedure accordingly.
- In ./user_post.php, added a confirmation step when an attempt to rename a
  userid is detected (message similar to that of 'delcon') and added an extra 
  check to make sure only Admin users could rename a userid. Updated HelpSet
  and test procedure accordingly.
- In ./user_edit.php, restrict access to 'view' action to Admins and account
  owner only. Cosmetic changes in error messages (also in ./user_post.php).
- Added sort order controls to the Users List page (./users.php). Currently 
  supported sort keys are User ID and Full User Name. Use global definition 
  for authentication level names. Updated HelpSet and test procedure 
  accordingly.
- Fixed bug in user edition workflow (in ./user_edit.php and ./user_post.php) 
  by adding missing calls to 'htmlspecialchars()' and missing escaping around 
  some query fields.
- On the Users List page (./users.php), adapted available actions list based 
  on the user auth level. For non-admin users, their own account is marked by 
  default, all other radio buttons are disabled. Cosmetics. Updated HelpSet 
  and test procedure accordingly.
- Added user ID validation tests in 'chhtuser' script, but those conform
  to the restrictions listed in 'man htpasswd(1)' (as opposed to the stricter
  limits imposed inside the Hirtius application). Updated test procedure 
  accordingly.
- Corrected escaping mechanism for quotes used inside user passwords (MySQL 
  and the shell have different escaping requirements). Updated test procedure 
  accordingly.
- Added missing quoting for some database fields during user update.
- Improved debugging in ./user_post.php.
- Restrict allowable characters in user IDs: initial letter, then zero or
  more letters, digits, underscore or hyphen. Up to 12 characters in total.
  Updated HelpSet and test procedure accordingly.
- Prevent deleting, disabling or demoting the last active, admin-capable
  user account. Updated HelpSet and test procedure accordingly.
- Add proper quoting around all extrernal command parameters in 
  './user_post.php' to prevent potential shell injection.
- Extended max. password length to 255 -- value now defined as global variable 
  in 'definitions.inc'. Added note on WebUI as to the min. and max. lengths 
  for passwords. Updated HelpSet accordingly.
- Enforce minimum password length (value configurable in 'definitions.inc').
  Recommendation only when password is set/reset by an administrator.
  Updated test procedure accordingly.

1.02 (08/10/21)                                   [projects]
---------------
- Fixed as yet undiscovered impact of PHP 7: support for the '/e' modifier 
  has been removed from preg_replace(). Four functions were found to be 
  impacted in './report_functions.inc'.
- Improved 'hs2static' script in preparation for upcoming v1.02 release.
  Replaced home-brew CLI options processing with Getopt::Long. Get Hirtius 
  version and date from global configuration file. Removed hardcoded path to 
  icons folder. Cosmetics.
- Fixed UTF-8 support in the body of emails sent by the 'card_reminder'
  script. Updated HelpSet and 'INSTALL' document accordingly.
- Added formal test procedure to the 'docs/' folder.
- Update 'upload_exif' script to silently ignore any input file not
  matching Hirtius Slide naming convention (such as thumbnail images
  linked to the Tray gallery feature). Such match is now made in a case
  insensitive manner. Also removed dead code.
- Removed default webstore path from template scripts configuration file.
  'publish' and 'tray_gallery_gen' now check that webstore is specified as a 
  regular path, not an URL. Updated HelpSet accordingly.
- Fixed option name in 'slide_extract' error messages. Clarified on-line 
  help. Streamlined processing: when loading slide IDs from file, those 
  that are not found in the DB are now excluded from further processing;
  also, the last section (download) is skipped if no slide could be 
  identified. New 'INXtag' query mode: allows the export of all Slide 
  objects linked below a given INXtree node. Added 'tll' parameter in new
  '[INXtree]' section to 'hirtiusadmrc.tmpl' for tag parameter validation.
  Updated HelpSet accordingly.
- Redesigned options processing in 'dd2dms' script to allow for combined 
  use of '-l' and '-L' parameters.
- Bug fix in 'chhtuser' script: error out if new user ID already exists. 
  Also, don't create temp file if target user is not found. Preserve mode
  and ownership of target file.
- Improved 'card_reminder' script by providing a fall-back in case 
  'hostname --fqdn' fails. 
- Fixed URL to 'project_edit.php' in tiddlers list in ./obj_selector.php.
- Fixed bug in 'obj_ref_edit.php': missing 'doc_id' and 'doc_type' hidden
  fields prevented out-of-bounds check on article pages from working in 
  'edit' mode. Also added extra debugging messages.
- Fixed bug in InsertNewINXNode() where an undefined '$REMOTE_USER' would 
  leave 'created_by' and 'last_mod_by' empty after INXnode copy operation.
- Extended the DB sanity check procedure to include all 'created_by' and
  'last_mod_by' fields in the hunt for empty values.
- "Report" link now also available from the Projects Edition page in 'view'
  mode, as long as the 'Structure Container Node' has been selected.
  Updated HelpSet accordingly.
- Added further validation tests to ./obj_inx_sort.php. Made the "Back
  to..." link dynamic based on whether the user came from the "Project
  Preview" or "Category Edition" page. Updated HelpSet accordingly.
- Solved 2 minor bugs in ./obj_att_edit.php: add GET-type parameters to 
  HTTP_REFERER when 'delcon' is accessed right after post ('insert', 
  'update', etc.) so "Cancel" button will lead where it should. Swapped 
  validation tests on target object (attachment move scenario) to avoid 
  double error messages when targetting non-object entities. Also improved
  error handling on file uploads (with special focus on oversized files).
  Cosmetics.
- Bug fix in Users List: also hide 'mailto:' link when user's email address
  field is empty (which also keeps it out of the "email all" link).
- Added extra validation test on geographic coordinates on the "Advanced
  Search Result" and "Slide Edition" pages to prevent that item from being 
  silently discarded when any field other than "degree" is filled.
- Minor bug fix in Advanced Search query page: removed the unused '$action'
  variable from the interface declaration.
- Improved the Search mode NavBar to ease going back to the current mode
  query page. Updated HelpSet accordingly.
- Custom edition box height also for Projects, Sequences, Alternate Names 
  and Titles.
- Order Sequences list by name.
- Nickname field is set to blank during 'clone' operations as its value
  needs to be unique (./person_edit.php).
- Cosmetics: displayed Hirtius Project logo in Main Application Menu right
  frame when no category has yet been selected.
- Bug fix in couple creation event update (in ./person_edit.php, 'update'
  action): a subquery was needed inside the loop to avoid overwriting a loop
  control variable.
- Cosmetics: display full individual name, colour-coded by sex, in
  PersonView(), FamilyView() and in ./family_edit.php ('add' & 'edit' mode).
- Added new functions 'quotes2htmlent()' for smarter quoting of comment 
  strings and 'truncate4ttip()' to cap their length before using them as 
  'title=' properties in HTML tags. Max. tooltip length defined in new
  global variable '$max_ttip_len'. Updated HelpSet accordingly.
- Added "comment marks" and comment-as-tooltip to the Books list, the 
  Articles list (on the Books edition page) and the Weblinks list.
  Updated HelpSet accordingly.
- Appended 'subtitle' field (when present) to the Book title on the Books
  list and Bibliographical Reference Selector window. Updated HelpSet
  accordingly.
- Bug fix: 'UPDATE' query in ./weblink_edit.php would not allow reset of
  'pub_year' field to blank.
- Fixed a comment formatting bug in ./renewal_edit.php ('view' mode).
- Allowed Writer-level accounts to delete library cards and renewal records
  provided they are the card owner.
- Fixed a bug in ./card_edit.php and ./renewal_edit.php where a non-admin 
  user could view or update other users' library card information by
  manipulating the page URL.
- Added new "Slides shot per year" report to ./admin.php page. Updated
  HelpSet accordingly.
- Bug fix: CLI variable name for "base URL" parameter in 'tray_gallery_gen' 
  script.
- Added UTF-8 output support to 'slide_extract' script.
- Added UTF-8 input/output support (incl. on DB connection) to 'bulk_edit' 
  script.
- Replaced home-brew CLI options processing with Getopt::Long Perl module in 
  all applicable ancillary scripts. Improved debugging & error reporting in 
  most of the impacted scripts.
- Bug fix: input validation test on Slide ID (./slide_edit.php).
- Document way to get a second level of items inside ordered and unordered 
  lists with TiddlyWiki markup language (HelpSet update).
- Added new page that allows linking a chosen set of INXtree categories
  to all (fully-fledged) objects returned by an Advanced Search Query
  Result. These objects can then be marked individually on the Advanced Search
  Result page to further filter them before processing. The bulk INXlink 
  record creation process has been designed to handle gracefully the case 
  where duplicate entries would have been created. Updated HelpSet accordingly.
- Fixed bug in 'card_reminder' script: removed extraneous text from the
  'From:' email header field which caused MIME::Lite to fail parsing it.
- Global bug fix: when mysqli->query() raises an exception, the function's
  return value is *NOT* assigned => testing '$result' afterward is misleading.
  To work around this behaviour, we always initialize '$result' to false first.
- Bug fixes in ./tray_edit.php: prevent renaming a tray (tray ID change) into
  an already existing one. Add warning message on 'slides_per_tray' change.
- Bug fixes: typos in ./slides_p.php and elsewhere, syntax error in 
  'latexify_DIA()'.
- Optimised query in getTiddlerTagList() (in ./functions.inc).
- Bug fix in ./ind_selector.php and ./fam_selector.php: 'link' action queries 
  are now wrapped in a transaction.
- Bug fix in ListRelDatInfo() (./functions.inc) where the 'AutoEvent' marker
  would be missing for all "newer" events.
- Bug fix in ./evt_selector.php: prevent creating "Relative Dating" link
  between an event and itself or with an already linked event.
- Refactoring inside ./project_edit.php: moved default tiddlers creation
  to a function.
- Clarify columns meaning in ./user_edit.php. Cosmetics.
- Proper handling of DB contents charset during gallery index page generation 
  (in './scripts/tray_gallery_gen'). Slide IDs in gallery now link back to 
  Hirtius. Updated HelpSet and INSTALL document accordingly.
- In the "Tray List by ID" (./trays_p.php), replaced 'is digital' column 
  with flags ('has gallery', 'is digital', 'hex numbering'). Key at report
  bottom.
- Improved logic in getVarcharColLen().
- Bug fix in ./functions.inc: improved error handling in get_authlevel(),
  getSortedCatList(), getSortedRepStruct().
- Bug fix in ./users.php and ./user_edit.php: added error handling around 
  all queries.
- Bug fix in ./renewal_edit.php: added error handling around card ID
  validation ('add' mode).
- Bug fix in ./card_edit.php: added error handling around user account
  validation ('add' mode).
- Added support for PHP7 by migrating DB driver to MySQLi. Adapted error
  handling code accordingly. Added support for Apache 2.4.33 and above by 
  updating network filtering rules in its template configuration files. 
  Adapted 'INSTALL' document to reflect support for Leap 15.1, Apache 2.4.33 
  and PHP7.
- Bug fix in ./weblink_edit.php: update query ignored 'is_alive' field.
- Bug fix: adding first 'book' or 'source' record would fail if no 'library' 
  or 'source type' had been created yet. Added validation check to give 
  clearer error message to user when that happens.
- Bug fix: average attachment size computation failed on empty DB (in
  ./admin.php, "Get Statistics" mode).
- Updated DB creation script to schema v46 (about time!).
- Fixed anchor typo in 'Helper Scripts' help page.
- Improved 'exifmv' script to allow the reprocessing of image files (e.g. 
  in order to add a time component later on). Updated HelpSet accordingly.
- Cosmetics in ./search.php: dynamic height for the entity list selection
  control with a defined maximum. Updated HelpSet accordingly.
- Bug fix in ./search.php: an incorrect exit condition caused empty lines
  to be displayed in Timeline Search results (Latest Updates mode) when the 
  number of hits was less then the requested maximum.
- Bugfix in ./tray_edit.php: missing 'GROUP BY' clause in 'edit' mode 
  SELECT query caused a row full of NULL values to be returned when a
  non-existant 'tray_id' was requested.
- Minor bugfix in several edition pages: misleading error message when
  requested ID doesn't exist. Cosmetics.
- Bugfix in ./slide_edit.php: the empty string is not a valid input for a
  datetime column. Use '0000-00-00' instead.
- Cosmetics in ./ref_selector: top alignment also for articles.
- Added a "New" link on the Sequences edition page in 'Edit' mode to allow
  creation of new Events that would be linked to the current sequence 
  immediately. Updated the HelpSet accordingly.
- Fixed bug where changing a Tray ID post creation would lead to DB 
  corruption if it already contained Slides. Added restrictions on changing
  'slides_per_tray' and 'hex_numbering' post-creation. Added sanity check
  on out-of-bounds in-tray slot addresses. Updated HelpSet accordingly.
- Minor HTML syntax fix in ./index_inx.php.
- Added sort order selection bar and navigation bar at the top of the 
  Trays List page.
- All helper scripts that share common configuration parameters with the
  Hirtius application now use a per-user central configuration file
  (~/.hirtiusadmrc) where default values for their parameters can be
  stored.
- New script 'tray_gallery_gen' provides basic "Photo Gallery" feature for
  Hirtius on-disk tray structures. This new script can be called by 'publish'
  for a fully-automated workflow. These galleries, when present, are linked
  from the Tray List, Tray Edition page and Slide Edition page (view mode 
  only). The individual Slides thumbnails are linked from the Slide View page 
  (also when embedded in the object viewer on the Application Home page). 
  HelpSet updated accordingly.
- Cosmetic improvements to Project Preview and INXLink Reorder pages 
  (display linked project if page was reached from there, conditional page 
  title). Added navigation links (back to Preview, back to Project Report).
  HelpSet updated accordingly.
- Start of Validity Period now defaults to today on the Card Edition and 
  Renewal Edition pages. HelpSet updated accordingly.
- Fixed HTML error in ListLCRenewals().
- Fixed typo ("privileges").
- In the "Orphaned Objects" query (Admin page), ignore Tiddlers that are
  tagged 'UI'. HelpSet updated accordingly.
- Added ability to sort objects inside the category they are linked to (in
  order to control how they will appear in a Project Report). Added new
  ./obj_inx_sort.php to handle this. Added new column 'sortkey' to table
  'inxlink'. DB schema bumped to 46. Updated HelpSet accordingly.
- Cosmetic improvements to admin page: added row number column to country and
  location breakdown reports.
- Added PDF-specific fields to LaTeX report header (in order to get table
  of contents-based navigation inside the viewer).
- Fixed a bug in wiki2latex() where URLs would get mistaken for italics
  markers. The approach taken was to disguise the URL using LaTeX
  character names for the double slash (maintains ability to cut-and-paste
  URLs from the generated PDF document).
  Fixed the same bug using a similar technique in wiki2html().
- Provided internationalised text for the extra message appended to the
  Project Report when the project record has been marked as "closed".
  Updated HelpSet accordingly.
- Added ability to mark projects as closed. Closed projects are hidden
  from the Project List by default (new user preference to handle this).
  Default display choice can be overridden on Project List page. Project 
  record and related TiddlyWiki interface are R/O when closed. R/O TiddlyWiki 
  interface identified by a grey banner. New control on Advanced Search page 
  enables filtering results by Project state. Greyed-out font style for
  closed Projects and related Tiddlers in lists and search results.
  Bumped DB schema to 45. Updated HelpSet accordingly.
- Fixed a bug where disabled user accounts would be reported as active
  in 'view' mode.
- Added 'Tags:' section to latexify_TID(). All tags for each Tiddler linked
  to the project structure will now appear in the Project Report as a
  comma-separated list.
- Fixed multiple occurrences of a bug where a Tiddler's title or tags 
  containing HTML-special characters would not display properly.
- Generalised the use of syslog for debugging messages and error reporting
  for all PHP code handling Tiddler creation, update and deletion events 
  "behind" the JavaScript Wiki front-end.
- Fixed a bug where deleting a Tiddler whose name contained double quotes
  or adding/removing see-also entries from it would fail.
- Fixed a bug: added missing calls to htmlspecialchars() to most functions
  in ./wiki_functions.inc (double quotes and angle brackets are now
  properly supported in Tiddler titles and tags, for instance).
- Wrapped Tiddler save operation in a SQL transaction.
- Replaced calls to addslashes() by calls to quote_smart() in ./wiki.php.
- Added ability to limit the number of past versions kept for each Tiddler
  through a change in the meaning of $tiddly_pref_vers configuration 
  variable. HelpSet updated accordingly.
- Added direct switch between 'edit' and 'view' mode on the User Edition
  page. Updated HelpSet accordingly.
- Solved a bug in 'hs2static' script where 'cp -R' would create a nested
  directory by the same name if the target folder already existed. Used
  'rsync -av' instead. Updated version string. Clarified license.
- Updated INXtree report page entry in the HelpSet to document the new
  'Switch to edit mode' link.

1.01 (01/08/17)                                  [languages]
---------------
- Added a "Switch to edit mode" link on the Project Structure preview 
  report page (./inxtree_p.php) to make navigation easier between edition 
  and preview mode.
- Improved 'upload_exif' script performance by inserting all property/value 
  pairs from a given slide in a single query. Kept 'slow' mode as a command-
  line option parameter ('-S'). Cosmetics.
- On the DB statistics page, added missing count of the number of relative 
  dating entries for events.
- Documented adding support for an extra contents language.
- Fixed a bug in latexify_FAM() function where a call to html2latex_line 
  was missing on the partners full name.
- Fixed a bug in latexify_FAM() function where $etyp_list variable was set 
  but never used.
- Improved 'Families' LaTeX reporting function to also include a Children 
  section where appropriate.
- Improved 'Individuals' LaTeX reporting function to also include Lineage,
  Alternate Names and Titles sections where present. Added missing mention
  of the Individual's gender.
- Output language for LaTeX project report can now be specified per-project.
  All translatable strings have been grouped in a dedicated configuration
  file (./trans_strings.inc). Project contents language can be used as 
  search criteria on the Tiddler advanced search page. Bumped DB schema to 
  44. Updated HelpSet accordingly.
- Workaround found for handling of ligatures in the mini-quote bug fix
  implementation described below.
- Fixed a bug in Basic Search where the mini-quote would not detect the
  query term if its occurrence inside the text contained accents (and the 
  query term not). The solution is not 100% perfect, though, as the presence
  of ligatures in the original text can still shift the bold markup in the
  mini-quote (due to the fact that a single character expands into two).
- Fixed a cosmetic bug where debug messages would interfere with the regular
  page rendering if they contained embedded HTML comments.
- Fixed a syntax error in the LaTeX code generated by markup_tag_translate() 
  where the input text contained tags that spanned different paragraphs.
- Improved TiddlerView() output by converting wiki format to HTML (used on
  the application home page, when viewing Tiddlers inside the right frame).
  Added support for more WikiCode tags (whether converted to LaTeX or HTML).
- For all full-fledged objects that support cloning (slides, sources, events, 
  individuals), added 'clone' and 'del' action links to their 'view' page, to
  make it easier to reach this function from a search result. In the case of
  'family' objects, only added 'del' for the sake of uniformity. Updated 
  HelpSet accordingly.
- Added a 'cloned_from' column to all full-fledged object tables that support
  cloning (slides, sources, events, individuals). Bumped DB schema version to
  43. Added reference to object source of clone on edition and view pages 
  when set. Added controls on Advanced Search page to filter on the value of
  'cloned_from'. Added 'cloned_from' as selectable column choice for search
  result. Updated HelpSet accordingly.
- Fixed a bug in ./person_edit.php ('add' mode): removed the useless and 
  broken 'Edit' action links next to Birth and Death Events.
- Provided a generic UPGRADE document.
- Converted 2 global definitions into user preferences: the number of records
  displayed per page in lists, and the amount of context information provided
  by the so-called "mini quotes" on the Basic Search result page. Updated 
  HelpSet accordingly.
- Cosmetics: used right alignment for all purely numeric input fields.
- Re-engineered the way user's preferences are communicated to the application.
  Added preferences for decimal and thousands separators. Bumped DB schema to
  42. Formatted all numbers displayed based on user's preference (where 
  applicable). Updated HelpSet accordingly.
- Fixed a bug in ./user_edit.php where the values of $userid and $level
  would be lost when called by a user that only had 'writer' access.

1.0 (09/03/17)                                        [help]
--------------
- Fixed bugs in 'hs2static' script: permission problem after "buttons" copy,
  regexp wouldn't match tag at beginning of line. Added message to the effect
  that the generated HTML was a static export of the HelpSet (including the
  export date).
- Added URL to official project repository in page footer.  Updated HelpSet 
  accordingly.
- Added GNU Affero GPL v3 license text
- Added license notice to file headers where appropriate.  Updated HelpSet 
  accordingly.
- Fixed EOL handling in wikilist_translate().
- Added support for 'regular quotes' in wiki2latex() (i.e. WikiCode '<<<').
- Fixed a bug in wikilist_translate() where the closing tag would be left out
  when the last item in the list also marked the end of the text.
- Improved French font encoding in LaTeX reports.
- Added the 'caron' to the list of accents to be removed (in remove_accent()).
- Added target document language choice to Project Report screen. Updated 
  HelpSet accordingly.
- Fixed bug in markup_tag_translate() where it didn't detect the difference
  between 'A -- B' (long hyphen) and '--C--' (wikicode for strikethrough).
- Renamed htmltag_translate() to markup_tag_translate() to better reflect
  its role.
- Provided a template Apache vhost configuration file for Hirtius 
  (./docs/hirtius_vh.conf). Updated INSTALL document accordingly.
- Renamed "icons" folder to "buttons" to avoid clash with a similarly named
  folder in the Apache default setup when Hirtius is installed as a virtual
  Apache host. Replaced all occurrences of that folder name in the code by
  a variable ($icnsfldr). Updated HelpSet accordingly.
- Renamed application from "Web Herodote" to "Project Hirtius". Adapted
  default configuration files, comments in source files and scripts, 
  references to the project in the HelpSet and related diagrams. Removed 
  hardcoded project name from source files whenever possible.
- Created new script to export a fully static version of the HelpSet (for the 
  project website): ./help/hs2static. Improved fnescape() function in 
  upload_exif script.
- Added empty folder script/ to installation image.
- Removed obsolete (and needless) call to define_syslog_variables() from 
  tiddly_save_entry().
- Fixed a bug in the interface for ./redirect.php ($reqobj can come as 
  either a POST or a GET).
- Fixed a bug in ListSA() and BuildSAlist() functions that triggered when
  both members of the link had the same obj_id (but different obj_types).
- Moved content of .htaccess to a new Apache config file (herodote.conf)
  in the docs/ folder. Removed .htaccess. Updated INSTALL procedure 
  accordingly.
- Prepared a SQL script to help populate system tables ('altname_types', 
  'country_codes', 'event_types', 'source_types' and 'users' [with 'admin' 
  account only for the last one) with generic data. All generic records have 
  been assigned to the 'admin' account. INSTALL document updated accordingly.
- Wrapped the creation of new tags in the INXtree inside a transaction with
  gap lock to better handle potential collisions (impacted actions 'insert',
  'copy' and 'move').
- Disabled navigation through page header icons for EVT, FAM, IND, INX, REF 
  and SRC selectors.
- Stripped HTML tags from INXtree nodes, books, articles, weblinks and trays 
  comment field before displaying them as tooltips on mouse hover in lists 
  (tags are not supported in URL "title" attribute values).
- Fixed a bug where Greek characters stored as raw UTF-8 entities in Herodote
  would cause a LaTeX report including them not to compile any more. Updated
  relevant HelpSet pages to clarify the situation.
- Fixed a bug where HTML styles in Events description would not be properly 
  transcoded to LaTeX in the object's event list.
- Added ability to handle weblinks pointing to on-line databases, by adding
  a checkbox to identify them on the weblinks edition page and extra fields 
  in the 'bibref' table to store the query part of the URL (these fields are 
  only visible when the weblink has been identified as a query). Bumped DB 
  schema to 41. Updated all relevant HelpSet pages.
- Made sure the global DB timestamp was updated on every single change, 
  including those like 'unlink' actions and user accounts modifications.
- Improved error checking and reporting in ./user_post.php.
- Provided the missing 'chhtuser' script. Made its location configurable in 
  ./definitions.inc. Updated the relevant documentation (INSTALL, scripts 
  README file and HelpSet page).
- Added further validation checks to Herodote-style date fields (use 'date
  end' only if event type has duration, ensure date end >= date start,
  ensure death date >= birth date).
- Fixed a bug in the way Herodote-style key values were computed, that could
  cause BC date intervals to be rejected as inverted on the advanced search 
  page, or BC events to be sorted incorrectly. Replaced the key computation 
  algo with Julian Day Number. Adapted sanity check for Herodote-style dates in 
  the future accordingly. Provided an ad-hoc script (date_keys_db_update.php) 
  to re-compute all date keys stored in the DB based on the new algo.
- Added confirmation step and warning before user account deletion. Updated
  HelpSet accordingly.
- Added an INXtree structural integrity test to the sanity check in 
  ./admin.php. Updated HelpSet accordingly.
- Improved error message in case rollback fails inside a transaction
  (suggest to run sanity check). Expanded "ADM" help page along the same
  lines.
- Fix update query in ./slide_edit.php to support MariaDB v10 (stricter
  check on enum values).
- Reset 'is_anchor' when cloning a slide (./slide_edit.php).
- Got rid of PHP warning "Call-time pass-by-reference has been deprecated in
  ..." by modifying call to preg_match() in getVarcharColLen() and
  reformat_date() (./functions.inc).
- Added "Application map" to the top-level help page.
- Fixed a bug where library cards / renewal records were not removed when the
  linked library was deleted.
- Fixed a bug where library cards / renewal records were not removed when the
  owner user account was deleted.
- Improved user creation procedure by adding some error reporting on the DB
  query.
- Fixed a bug: a spelling mistake prevented 'sources.subj_date' column from
  being kept in the user's prefs.
- Cosmetic: modified column title on individual search result page to make
  it clear it refers to the individual's parent family ID.
- Fixed a bug: a spelling mistake prevented 'tiddler.is_locked' column from
  being displayed.
- Code refactoring: in ./as_result.php and ./search.php, replaced locally
  built '$viewlink' content with calls to getShortObjNameByID().
- Fixed a bug in the family search result page, where the children count 
  could be overestimated when alternate names were attached to one of the
  parents (bug in the SQL query).
- Cosmetic change in individual and family search result: location and 
  country displayed in bold to keep in line with the rest of the application.
- Fixed a bug: in ./as_result.php (family search result), all name fields
  were evaluated against 'last_name'.
- Fixed a bug where the "start date between" validation test (event advanced
  search) would return false positives when B.C. (= negative) dates were
  given. Also impacted "end date", "couple creation", "birth date" and 
  "death date") => used function check_date_format() instead.
- Fixed a bug: when an individual was removed that had alternate names or
  titles, only those lesser objects were removed but not any metadata that
  they might themselves possess (=> moved alt. name and title deletion to a
  single function).
- Fixed a bug: when deleting a tray, EXIF data linked to included slides 
  was not removed (=> moved slide deletion to a function called from both
  ./slide_edit.php and ./tray_edit.php).
- Fixed a bug: when deleting an individual that was a partner in a family, 
  that family has to be deleted as well (=> moved family deletion to a 
  function).
- Fixed a bug where the children were not unlinked from the family they were
  born into when it was deleted.
- Added the following sanity checks:
  * spot missing MIME types in attachment records
  * spot missing 'owner_obj_id' and 'owner_obj_type' for auto-events
  * spot 'individual' records where 'death_event_id' is unset although
    they are flagged as dead (is_alive == "no")
  * detect dangling bibref, srcref, attachments from lesser objects
    (alt. names, titles, sequences, projects)
  * spot multiple use of the same INXtree node by different projects as
    'struct_container_node'
- Fixed bug where attachment would loose its MIME type when edited or moved
  if that MIME type (autodetected on upload) was outside the list of 
  officially supported types.
- Fixed bug where attachment move was refused if target was a lesser object.
- Fixed bug in sanity check where a false positive was issued when attachments
  were linked to lesser objects (alt. names, titles, sequences, projects).
- Added missing warning on attachment presence in 'delcon' action for so-called
  "lesser objects" (alt. names, titles, sequences, projects).
- Fixed bug where 'owner_obj_id' and 'owner_obj_type' columns were left unset
  in the death event record when the related individual was created as alive
  and then deceased later on.
- Improved advanced search on 'individual' objects: added checkbox to control
  whether or not to include alternate names in the full name search.
- Fixed bug where past tiddler versions were not removed when an individual
  tiddler was deleted.
- Code refactoring: moved JavaScript focus handling to a function.
- Cosmetic improvement for ./project_edit.php in 'view' mode.
- Fixed bug: do not display 'Edit' link for death event if person is alive
  (death event does not exist in this case).
- Improved view mode display in ./event_types.php.
- Fixed bug: wrong parameter in call to SAinject() from ./family_edit.php.
- Fixed bug: avoid passing parameters as GET between ./user_edit.php and
  ./user_post.php.
- Added focus handling to tray 'clone' action.
- Added comment display to tray index report (./slides_p.php).
- Fixed a bug where an attachement move failed if the target objref was not
  properly capitalized (./obj_att_edit.php).
- Improved navigation ("return to list" link from article, book, library, 
  tray, weblink and family 'del' action; added "country codes" link to admin
  page; added "back to ind. edition screen" and "add new ind." links to 
  ./ind_fam_edit.php).
- Fixed bug where '$family_id' was not properly handled in the case of a clone
  operation on an 'IND' object (./person_edit.php).
- In preparation for upgrade to PHP 5.4, got rid of requirement for 
  "register_globals" to be "On". Used this opportunity to declare all
  interface variables in each PHP file. Added validation where one was
  needed. Updated installation document accordingly.
- Added low-level LaTeX parameters for more control over the final aspect
  of the slide index report. Added optional abstract to same, with some
  statistical information (timestamp of creation, timestamp of latest
  database modification, etc.). Updated HelpSet accordingly.
- Added media breakdown for 'slides' table to admin page.
- Improved the report generation Makefile and accompanying doc. Updated
  HelpSet accordingly.
- Added userid to generated file names for all LaTeX reports (to further
  reduce risk of collision and make things easier in multi-user env.).
- Added script "dd2dms". Updated HelpSet and README file accordingly.
- Refreshed contents of 'country_codes' tables based on published ISO 3166
  data. Added accents/diacritics in country names where needed. No change in 
  the code.
- On the Object-Attachment edition page (./obj_att_edit.php), added a display 
  of the total attachments size for the current object at bottom of list, as 
  well as the number of files listed.
- Fixed a bug on the slide edition page, where the geographical coordinate
  fields, once set, could not be reset to blank again.
- Modified 'mkcdtray', 'publish' and 'mvtray' scripts to support digitized 
  analog slides trays. Broadened tray naming convention to include 'A', 'B' 
  and 'P'. Changed default 'holds' value to 120. Added parameter for decimal 
  numbering. Uppercase tray name. Updated help accordingly.
- Added 'Pict' and 'EXIF' action links to the Tray Edition page in 'view' mode
  (digital trays only). Updated HelpSet accordingly.
- Added a new column 'hex_numbering' to 'trays' table. This allows for 
  hex. numbering selection irrespective of whether the contents is flagged 
  as digital, which in turn will make it easier to handle scanned 36mm slides 
  or still prints. Bumped DB schema version to 40. Documentation and 
  HelpSet updated accordingly.
- Added validation check on max. INXtree depth during node creation, copy or
  move operation.
- Added validation check during slide creation and update: verifies the in-tray 
  address (slot number) is within range for the selected tray. Reorganised 
  tray-related validation checks to provide explicit error messages in all 
  cases.
- Added validation check on trayID: its length must match $tidlen.
- Fixed bug in tray_edit.php ('view' mode) where $hexnumbering was used but 
  never initialised.
- Defined $tidlen (tray ID length) as a configuration variable: makes it 
  possible to adapt it to one's own tray naming convention. HelpSet updated 
  accordingly.
- Defined $tll (tag level length) as a configuration variable: makes it 
  possible to control the INXtree geometry at installation time. HelpSet 
  updated accordingly.
- Fixed bug in source 'delete' action: added missing deletion section for 
  srcref entries quoted by it.
- Improved source deletion confirmation dialog: warn about existing srcref 
  entries quoting it.
- In the in-frame Tiddler object viewer, added a link to the TiddlyWiki 
  interface for that tiddler.
- Added warning to fully-fledged object deletion confirmation dialog in case 
  attached files are present (including Tiddlers).
- Improved error reporting in the Advanced Search page result.
- Added a new table to store the EXIF data linked with the slide record they 
  belong to. Bumped DB schema version to 39. Added an EXIF data viewer page, 
  linked from the slide edition page and the basic search result. Added ability 
  to search the EXIF data from both basic and advanced search pages (not from 
  timeline searches). Created a new script ('exif_upload') to upload the EXIF 
  data into the database. Updated the documentation and help set accordingly.
- Added a visual clue in the Trays list to the presence of a comment in each 
  Tray record.
- Fixed a bug in ./slide_edit.php: removed tray name display from 'clone' mode.
- Fixed a bug in GetObjIDbyName() where it died on an invalid obj_type.
- Fixed a bug where duplicate entries could be created in the 'see_also' table:
  added a unique index through all columns of that table, bumped DB schema 
  version to 38, modified SAinject() function to choose in a consistent manner
  which of source or dest will be "obj1" in 'see_also'. Took the opportunity
  to re-engineer code of SAinject() to make it clearer. Included a new routine 
  in the sanity check to test for duplicates (both identical and mirror). 
  Adapted the help page accordingly.
- Implemented the "Sanity Check" feature in ./admin.php. Reorganized the code 
  in this module (moved recurrent code to functions, created a separate 
  function file). Adapted the related help page accordingly.
- Fixed Google Maps geolocation interface (could be further improved by using
  the Google Maps API v3, but this is left for later).
- Completed HelpSet content.
- Improved the "bulk_edit" and "slide_extract" scripts (more flexibility in
  DB connection parameters specification).
- Stripped all "heron.net"-specific information from the distributed 
  ./definitions.inc file.
- The admin email address was still hardcoded in two functions in 
  ./functions.inc. The definition has now been moved to ./definitions.inc, 
  where it belongs.
- Disabled the DB 'admin' link in the HelpSet Navigator window. Added a 
  "help-on-help" link in same.
- On the Advanced Search Result page (./as_result.php), improved the 'articles' 
  query to match book-specific fields on containing book except for the 
  'subtitle' field. Rigged the query to return empty in this case.
  Also improved the "Change columns" link behaviour: now redirects to the 
  relevant page section, and the link is now hidden when searching for books or 
  articles, as there is no choice to make in this case.
- In ./obj_att_edit.php, improved the logic when checking for max. attachment
  size by also querying the PHP configuration and taking the minimum of both 
  values. Also added this information on the statistics page (./admin.php).
- On the advanced search page, for all supported object types save BWK, 
  replaced the 'category' control from simple drop-down select to multi-select,
  and added a linked "AND/OR" control (for increased query flexibility).
- On the advanced search page, for all supported object types, replaced the 
  'created_by' and 'last_mod_by' controls from simple drop-down selects to 
  multi-select (for increased query flexibility).
- Fixed bug in the handling of multi-word tags on the Tiddlers advanced 
  search page.
- In ./adv_search.php, for all fully-fledged objects, made recursive category 
  search the default.
- In ./search.php, added flexibility to the way the starting and ending dates 
  were handled in "date range" mode. You can now meaningfully leave either one 
  of them empty. Added non-object entities, entity filter and search parameter 
  reminder to both timeline searches. Added 'Refresh' button to "date range" 
  mode. Code cleanup. Cosmetics (owner object ref. for bibrefs, srcrefs and 
  tiddlers, result table layout).
- In ./obj_att_edit.php, added check to ensure that the target of an attached 
  file move operation is a fully-fledged object, i.e. an object type that 
  actually supports attachments.
- Added view action link and ID field display to ./obj_ref_edit.php and 
  ./obj_src_edit.php.
- Workflow now preserved between ./cards.php, ./card_edit.php and 
  ./renewal_edit.php (when you start listing the cards of a specific user, you 
  remain focussed on that user).
- Added Javascript focus handling to ./slide_edit.php in 'clone' mode too.
- In ./library_edit.php and ./card_edit.php, added the usual links to the 
  update result page.
- Report structure Browse link now shown on project edition page in view mode 
  too.
- Added change tracking fields to 'source_types' table. Adapted all management 
  screens accordingly. Bumped DB schema to 37.
- In ./source_types.php, ./name_types.php and event_types.php, added display 
  of 'ID' field in 'view' and 'edit' modes.
- In ./tray_edit.php, merged the 'content' mode with 'view'. Cosmetics.
- Updated "StartHere" tiddler default contents.
- Added missing 'edit' link for couple creation event on Family edition page.
- Improved handling of journal entries in the embedded TiddlyWiki: switched
  to ISO date format as title ("YYYY/MM/DD"), in order to get them correctly
  sorted in lists; added a 'JOURNAL' auto-tag to each newly created journal
  entry to make it easier to identify them.
- Wiki link now shown on project edition page in edit mode too.
- Added highlighting of matched search pattern in help viewer.
- Implemented search feature in help browser.
- Fixed missed occurrences for "timeline" search in the advanced search 
  navigation bar.
- Added a project 'preview' report (accessible from both ./project_p.php and
  ./inxtree.php): simple hierarchical structure with all objects linked at 
  each level.
- Improved wording of deletion confirmation request message for all supported
  object types.
- For DIA and SRC objects, added URLify() support to the "translation"
  field.
- Updated the URLify() function and titles and alt. names edition pages to
  support quoting TIT and NAM lesser objects from comments (as in '{N238}').
- Added the help browser, help documentation repository and context-sensitive
  help link in the header of every existing screen.

0.22b (01/09/12)                                [tiddlywiki]
----------------
- Fixed a bug where the predefined part of AE description field was not
  always properly escaped.
- Fixed a bug where the couple creation event description was not updated
  when one of the couple partners' name was changed.
- Added UI elements to the TiddlyWiki interface for access to past tiddler
  versions (new "history" menu in view mode). Past tiddler versions are
  always read-only, but can be used as source of a copy-paste operation.
- Fixed a minor bug in the library cards renewal records handling, where the
  reformatted expiration dates were used for validation but not for DB
  update.
- Fixed a bug in family_edit.php where the description field for the couple
  creation event wasn't properly escaped.
- Improved edition of parent-child relationship: now possible to link
  parent family from child lineage edition screen, and to create a new
  child record from the family children edition page. The parent family is
  now also displayed in the child family edition screen (and can be unlinked
  from there).
- Improved navigation from family edition result page.
- Updated DB layout diagram version to bring it in line with schema 36. No
  actual change to the diagram.
- Added a "formatter" to the TiddlyWiki code, to URLify object references of
  the form "{D1234}".
- Added a multi-select filter on entity types (objects, lesser objects and
  non-objects) on the basic search form.
- Improved the "bibref" and "srcref" screen in "add" mode by having the
  selected book/article/weblink/source displayed there as well (was already
  the case in "edit" mode).
- Converted our own database to full UTF-8. Adapted INSTALL document to set
  environment for UTF-8 by default. Adapted code for multi-byte characters
  support. Bumped DB schema version to 36.
- Improved the "dump_layout" script so that it doesn't include initial
  auto-increment values in the generated file.
- New script called "slide_extract" : take local copy of slides to accompany
  a project report.
- The slide reports (slide index, slide book) have been improved or completed
  based on the work done on project reporting. The slide index and slide book
  now offer an option to create chapter headers per letter when sorting on 
  location, the output paper size can be selected, etc.
- All functions that support reporting have been moved to a separate .inc file.
- Added project reporting capabilities. The idea is to use a project (a bunch
  of tiddlers) and a structure defined in the INXtree to serve as draft or
  outline for an future article or book through the generation of a LaTeX
  report. A new field has been added to the 'projects' table to store the top
  of the INXtree structure (DB schema version bumped to 35). The project list
  and project edition pages have been modified to accomodate the new field.
  The 'move' and 'del' actions on INXtree entries have been adapted to update
  the new field accordingly. The new feature is available from the 'Report'
  action in the projects list (the link is only active when a report structure
  has been linked).
- Added URLification for 'reading' field (slides, sources) when in 'raw' mode.
- Moved remaining array building routines to functions in ./adv_search.php.
- Implemented missing 'clone' action in ./slide_edit.php (the 'clone' link
  in ./slides.php was already present). Made a cosmetic improvement to the
  'clone' implementation in ./source_edit.php.
- Improved validation on input fields (not empty for required fields, numeric
  and larger than zero for slide_id and slides_per_tray).
- Set "NOT NULL" on a few extra fields in the DB (were missed in the original
  design): slides.descript_1, trays.slides_per_tray, trays.last_mod_by,
  users.fullname, users.mod_by. Bumped DB schema version to 34.
- Improved 'exifmv' script: added filename and mode normalisation (lowercase
  filenames, remove executable flag).
- Added a visual marker on all edition pages to identify required fields
  (the usual red asterisk).
- Fixed a bug in ./inxtree.php that prevented the 'copy' and 'merge' actions
  to work when called from the header row.
- Added TLL (tag level length) computation to the admin page. Actual TLL
  value is harcoded for now.
- Minor improvements within inx_edit: moved error handling outside of
  get_next_leaf() to ease its integration in transactions (needed for the
  new 'copy' support); moved the call to get_next_leaf() closer to the
  actual INSERT statement (from 'add' to 'insert' section), to minimize the
  risk of "mid-air collision" with another user adding another leaf in the 
  same node at the same time.
- Added a 'copy' action link to the INXtree management screen. Moved the 
  'view' link to an hyperlink on the node name to save space (used this
  opportunity to also add the 'title' feature to the view link).
- Added systematic verification on date ranges on the advanced search page
  (./as_result.php): an error is issued if D1 > D2.
- Added a new search modality called "Timeline". From this heading, two
  options are available: latest updates (same functionalities as before)
  and "date range" (new feature: any object or lesser object created or 
  modified during that time period).
- Added tiddler object support to the "change columns" user profile edition
  page.
- Added column 'col_list_TID' to 'users' table. Bumbed DB schema version
  to 33.
- Added advanced search feature on tiddler objects.
- Fixed a bug in ./obj_selector.php: the families navbar was missing the
  'curtag' and 'objtype' parameters.
- Got rid of as many hardcoded object types as possible in ./obj_selector.php.
- Added families and tiddlers icons to print_selector_header() in 
  ./functions.inc (the logic for families support was already present in
  ./obj_selector.php, but the icon was missing in the header menu).
- Added tiddler object support to ./obj_selector.php.
- Added tiddler object support to the admin page.
- Added attachments support to the TiddlyWiki interface.
- Modified the implementation of the attachment handling mechanism. Instead
  of having the edition commands right on the object edition page, they are
  now on a separate page that lists all attachments for that object (same
  behaviour as for inxlinks, bibrefs, srcrefs, etc.). To emphasize this, I
  renamed the file from "attachment.php" to "obj_att_edit.php" (that same
  file can still be called from "files.php"). This made it easier to interface
  from the embedded TiddlyWiki.
- Fixed two bugs (present in the original PHPTiddlyWiki) in the way tiddler
  renaming was handled (new_title was not sent to PHP code, tiddler overwrite
  had to be prevented).
- Added "see also" display and edition fields to the TiddlyWiki interface.
- Added bibref and srcref support to the TiddlyWiki interface.
- Improved the sort algorithm for the categories list (as offered on the
  advanced search page).
- Added "Categories" section in tiddlers display (./tiddly_head.php), with 
  an "Edit" link when in edit mode.
- In ./tiddly_head.php, reformatted the CSS and template variables to make
  them more readable. Added 'obj_id' display to the tiddler subtitle.
- Updated the project creation routine (./project_edit.php, section 'insert')
  and tiddly_save_entry() function (./wiki_functions.inc) to take the new
  'is_infra' column into account.
- Added column 'is_infra' to 'tiddlers' and 'tiddler_versions' tables (goal
  is to help filter out non-content tiddlers from searches and selection lists.
  Bumped DB schema version to 32.
- Replaced french auto-text for couple creation event, to avoid charset issue.
- Fixed bug in 'individual' insert query: the "see-also" injection didn't
  work.
- Improved navigation in ./tray_edit.php.
- Made projects into lesser objects ('PRJ', 'J').
- Modified the Wiki code so that it would inherit the default SiteTitle and
  SiteSubtitle values from the Herodote project 'name' and 'short_desc'
  fields.
- Fixed the handling of the creator / modifier information in the Wiki code.
- Added multi-project support to the Wiki code.
- Integrated the latest version of "PHPTiddlyWiki" in Herodote, first
  without adding any new functionalities to it. We can now create and edit
  tiddlers.
- Implemented the projects list and edition pages. Linked it from the icon
  in the header.
- Moved the Trays management link from an icon in the header to an action
  link at the bottom of the Slides page (so as to free that icon for
  projects).
- Created the 'projects', 'tiddlers' and 'tiddler_versions' tables. Bumped
  DB schema version to 31.

0.21b (13/05/11)                                  [families]
----------------
- Improved the event selector by adding a navbar that offers a pagination
  mechanism and a choice between 3 sort keys (similar to the one already
  present on the main event list screen).
- Improved ListAllQuotes() function query and output : arranged for the
  "quoted by" list to be sorted and "uniqued", and provided a per-object
  quote count in addition to the overall total.
- Added support for "#include" directive in 'reading' and 'translation'
  fields (currently for source objects only -- could be extended to slides).
  Avoid the duplication of information (e.g. an inscription that is both a
  slide and a source object).
- Improved the "mvtray" script: it now handles the entire process of tray
  renaming (no extra command is needed).
- Created a new script called 'card_reminder' to warn users about their
  library cards expiration dates. Updated the INSTALLATION and scripts
  README documents to match.
- Added pages to manage library cards and their validity periods /
  renewals (reachable from both the libraries page and the user profile
  page). Added lib. cards and renewals information on the admin page.
- Created new tables 'lib_cards' and 'lc_renewals'. Bumped DB schema to 30.
- Added validation check on column list length in ./user_post.php.
- Added validation check on all numeric fields in advanced search mode
  (obj_id, published between, nchildren).
- Added advanced search feature on families (including user-specific
  column selection).
- Added column 'col_list_FAM' to the 'users' table. Bumped DB schema to 29.
- Colorisation of children records by sex on family edition page.
- On the advanced search page, added ability to filter individuals on
  whether they belong to a known family (i.e. whether 'family_id' is set
  or not).
- Improved navigation on "change columns" page (./user_edit.php).
- Added auto-event marker in lists and search results.
- Restricted the edition of "event type" in the case of auto-events. For
  birth and death events, no change allowed. For unions and marriages,
  change is allowed only within these two.
- Fixed bug in common query on both books AND articles (./as_result.php),
  where only articles would be returned.
- Added columns 'is_auto', 'owner_obj' to 'events' query result. Added
  ability to filter 'events' on 'is_auto' flag.
- Added advanced search feature on individuals (including user-specific
  column selection).
- Added support for visually marking an Herodote instance as a test / dev.
  environment.
- Fixed a bug in the 'delete' query of ./person_edit.php and
  ./family_edit.php: if auto-events are kept (based on user's choice), we
  should reset their 'is_auto', 'owner_obj_id' and 'owner_obj_type' to
  their default values.
- During the creation of a new family object, added a section to link the
  couple creation event to both partners of the couple (this is a regular
  link that can be undone).
- Added drawing of individual's lineage on the individual edition page
  (lineage extends on max. 3 generations: parents, individual, children).
- Implemented handling of parent <=> child relationship (through
  ./fam_child_edit.php and ./ind_selector.php).
- Modified column definition for 'individuals.familiy_id' (set NOT NULL,
  DEFAULT 0). Bumped DB schema version to 28.
- Implemented full support for the new "family" object type.
- Vastly improved the output of the "last update" search. Added "last update"
  search capability on sequences.
- Added "basic" and "last update" search capability on families.
- Created the needed screens to create, view, edit and remove family records.
- Put in place the selection mechanism for the partners of a couple. Linked
  it from ./families.php and from ./person_edit.php (edit mode).
- Created the 'families' table. Bumped DB schema version to 27.
- Updated the INSTALL document to take the current dir. layout of the project
  into account, and to provide a few words about the scripts.
- Removed the .htaccess file left by mistake in the project root.

0.20b (20/11/10)                               [individuals]
----------------
- From the object->event link edition page (obj_evt_edit.php), added a 'new'
  button to allow the immediate creation of a new event, and modified the
  event edition script to automatically link to the requesting object upon
  creation. The existing 'add' button has been renamed to 'link'.
- Fixed a bug in the handling of the data returned by the person edition
  query (./person_edit.php): set $death_event to '0' when person is still
  alive.
- Improved the admin page by rounding all floating point results. Added the
  percentage of dead web links. Cosmetics.
- Modified weblinks edition screen to allow for user control over the 
  'is_alive' flag. Added visual clue to the dead nature of a link in the
  weblink list, in the bib. refs and in the search output.
- Created WebLinks handling screens. Modified ref_selector.php to offer
  selection of either books and articles or weblinks. Modified
  obj_ref_edit.php to not display page_ref edition fields in the case of
  weblinks.
- Added new table 'weblinks'. Bumped DB schema version to 26.
- Created a script to automate the DB layout dump and include the schema
  version in it (./docs/dump_layout).
- Added call to html_entities_decode() in the LaTeX slide report generation
  procedure (in the hope that it would solve the display of Czech characters
  -- it doesn't, possibly because they're not in ISO-8859-15).
- Implemented alternate names and titles deletion procedure in the context of
  the individual deletion procedure.
- Cosmetics in ./tray_edit.php.
- Used the new owner object tracking to improve the control over whether or
  not unlinking and deletion of events is allowed in obj_evt_edit.php.
- Added columns 'owner_obj_id' and 'owner_obj_type' to the 'events' table,
  to track the owner object of auto-events. Bumped DB schema version to
  25. Updated DB layout doc and SQL creation script accordingly.
  Modified the individual creation procedure to populate the new fields.
  Modified the event view and edition screens to display it.
- Cosmetic improvement in PersonView() function.
- Improved article sorting and presentation, both in the book edition screen
  and in the reference selector "dialog". Now sorted by author, title and
  volume ref. is displayed.
- Added 'sequence' object support to the statistics part of the admin page.
- Fixed bug in 'descript_1' handling for auto-events (./event-edit.php).
- Made sequences into "lesser objects". Gave them the 'C' prefix.
- In DB table 'sequences', renamed column 'seq_id' to 'obj_id'. Bumped DB
  schema version to 24. Adapted sequences edition page and functions
  accordingly.
- Cosmetic improvement to advanced search result when geographical coordinates
  are unset.
- A source object can now be linked to source references as well. This could
  be useful when researching the history of a manuscript.
- Fixed a bug in the nickname uniqueness test (./person_edit.php, 'update'
  section).
- Added a "Latest Updates" search page (in ./search.php) that lists the 'n'
  objects most recently updated by anyone or by a selected list of
  contributors.
- Updated 'inxtree' table layout to handle creation / modification
  fields like all other main tables. Bumped DB schema version to 23.
  Adapted docs accordingly. Modified ./inx_edit.php to support the new
  columns.
- Updated 'attachments' table layout to handle last_modif/last_mod_by
  fields like all other main tables. Bumped DB schema version to 22.
  Adapted docs accordingly. Modified ./attachments.php to support the new
  columns.
- Adapted date format hints to get them in english like the rest of the UI
  (AAAA/MM/JJ => YYYY/MM/DD).
- Created the 'titles' table. Bumped DB schema version to 21. Initial
  implementation of titles edition screen. Support for 'titles' object type.
- Documented the DB schema with a graphical layout view (./docs/db_layout.dia:
  renamed and expanded on the old 'ind+evt.dia').
- Created the 'altname_types' and 'alternate_names' tables. Bumped DB schema
  version to 20. Initial implementation of alternate name types management
  screen. Initial implementation of alternate names edition screen. Support
  for 'alternate names' object type (the first so-called "lesser object").
- Added auto-URLification to attachments description (in ./files.php, basic
  search result and output of ListAttachments()).
- Improved the 'exifmv' script: will now prompt before overwriting target
  file. Such name collisions can happen in rare cases where e.g. pictures
  shot on the same date are uploaded from different cameras, and the first
  batch has already been processed. Another potential cause is a reformat of
  the memory card between 2 batches of shots on the same day.
- Modified admin page (./admin.php) to also list stats for 'individuals'
  table.
- Added ability to move an attached file to another object (e.g. in the case
  where the initial object is obsolete or about to be removed).
- Moved all DB tables from the default MyISAM engine to InnoDB, in order
  to get transaction support. Bumped DB schema version to 19.
- Improved navigation in the attachment screen (./files.php) by adding
  multiple sort keys (ID, filename, size). Paginate result in chunks.
  Created a DB index on filesize to support it.
- Fixed display bug in source edition screen.
- Implemented "biography" support (IND => EVT links).
- Implemented the individual deletion procedure.
- The event deletion procedure has been moved from ./event_edit.php to a
  function called "delete_event()" in ./functions.inc, to allow it to be
  called from different places (person edition pages, primarily).
- Added 'is_alive' column to 'individuals' table. Added a direct link between
  the 'individuals' table and the 'events' table to solve the 'birth date /
  death date' query problem (when death date is NULL). Bumped DB schema
  version to 18. Adapted the individual edition screens accordingly.
- Implemented nickname uniqueness through software check (a "unique" index
  couldn't be used, since NULL values are allowed for that column).
- Corrected bug in the "find gaps in ID sequence" algorithm (./admin.php).
- Basic 'individual' object implementation.
- Created the 'individuals' table. Bumped DB schema version to 17.

0.19b (20/03/10)                           [Advanced Search]
----------------
- Improved the "basic search" result display by quoting the fragment of
  'text' fields that matched the query term. The context length is controlled
  by a global parameter, and those mini-quotes can be disabled from the
  query page.
- Moved the display of relative dating information in events to a dedicated
  function called ListRelDatInfo(). Called this function in both 'edit' and
  'view' mode.
- Finalise deletion procedure for 'slides', 'sources' and 'trays'. Frame this
  procedure within a transaction.
- Stored 'LeafList' in a session variable rather than in a cookie to overcome
  the 4K limit set on cookie size by RFC 2109 (./index_obj.php). Fixes
  category browsing from Firefox in the case of large categories (above
  roughly 900 entries).
- Added proper charset support in index_inx.php and index_obj.php.
- Added a validation check on the subject date, and an automatic reformatting
  of the date to support different separators ('-', '/', '.' or no sep.).
- Fixed a bug in ./slide_edit.php where '$subj_date' was not properly quoted
  before being fed to the SQL query. The ./source_edit.php file has been
  checked but did not suffer from the same problem.
- Implemented variable editbox height, with user-selectable high value (based
  on a similar feature developed for WarZone). The scope of the change has
  been limited to the main objects edition pages (DIA, SRC, EVT). Database
  schema version bumped to 16.
- Implemented the actual test on the DB schema version (the field has been
  available for ages, but was never put to its intended use).
- Added "Location Breakdown" report to admin page.
- Added link to on-line catalogue in libraries list. Cosmetics in the
  libraries edition page.
- Centralised definition of the anchor mark (spades) in ./definition.inc
  (both for HTML and LaTeX outputs).
- Improved navigation in the INX selector by making the currently open tag
  selectable.
- Added automatic URL-making function (URLify()) to the Slides, Sources and
  Events comment text area. Syntax is to use the curly braces and the object
  reference (e.g. '{D1234}'). Slides, sources, events and attachments can be
  thus referred to at this stage. Internal page references can also be used
  for bibrefs and sourcerefs: use [123] for bibrefs and [S123] for sourcerefs.
  Each bibref and sourceref now wears a name tag.
- In ./slide_edit.php, modified the edition screen to link to the webstore
  where appropriate (just as it's done in view mode).
- Added search on categories in advanced search page.
- On "basic search" page, added link to owner object in attachment search
  result display.
- Added in-sequence navigation (Prev/Next) from the event edition screen.
- Added preliminary support for "change columns" feature. At present, only
  applies to slides, events and sources objects.
- Added link to Google maps from slides with know geographical coordinates.
- Improved LaTeX slide index report page layout.
- Added field 'date_e_key' to 'events' table. Added automatic conversion of
  "end date" field to 'date_e_key' in the events creation/edition screen, to
  make them easier to search. Updated the advanced search result page
  accordingly.
- Moved the '<table>' tag inside the ListAttachments() function to get a
  consistent look and feel.
- Included 'quality' field in the slides list and in all slides reports.
- Added an 'url' field in 'sources', 'books' and 'articles' tables. Adapted
  all edition and view screens accordingly. Adapted the list screens as well.
  Added the 'url' field to the advanced search page.
- Fixed a display bug in GetObjNamebyID() where truncated strings with
  embedded HTML tags would mess up the rest of the page. Fixed it by first
  calling strip_tags() on those strings.
- Cosmetics: fixed vertical alignment of empty fields in event, book and
  article view screens.
- Cosmetics: used right-align policy for page start and page end fields in
  bibrefs and articles creation/edition screens.
- Fixed an error in the update query of ./obj_ref_edit.php (in the case where
  there are no page refs.).
- Fixed a display bug in EventView() (comment contents should be pre-processed
  to replace '\n' with '<br>').
- Added the "Sequences" section to EventView() (list the sequences this event
  is member of).
- Reengineered the way coordinates are stored in the DB: a decimal value has
  been added for each axis, positive or negative, to allow for easy
  comparision in advanced searches. The UI stayed the same. A conversion
  function has been created (dms2dd()), to be called on creation and update
  of the D-M-S fields. The advanced search result page has been adapted to
  take advantage of this. It is now possible to search between any 4 coordi-
  nates, even if they span quadrants. The user doesn't need to know whether
  East < West or the other way around: values are silently swapped if
  necessary.
- Reengineered "shot type" field. Replaced it with a drop-down control whose
  values are defined in ./definitions.inc. The column definition in the DB
  has not changed, but its contents has been bulk updated. Modified
  ./slide_edit.php and SlideView() to match. Also modified the way this
  column is handled in adv_search.php and as_result.php.
- Improved error handling in ListAllQuotes().
- Added a "quoted by" section in the source edition and view screen (uses the
  same ListAllQuotes() function as books or articles.
- Implemented a first version of the advanced searched feature for all
  supported object types + books and articles. The result display page still
  needs work.
- Fixed a bug in ListAllQuotes() where a test on supported object types was
  done too early (it belonged in GetObjNameByID()). Added error message in
  case of unsupported object type in GetObjNameByID(). Added support for
  'SRC' and 'EVT' object types in GetShortObjNamebyID().
- Modified BuildSrcRef() to take the 'date_in_ref' flag into account.
- Implemented a more generic approach to the event type pull-down handling
  (used new getEventTypeList() function + the generic BuildPulldown() instead 
  of the ad-hoc EventTypePullDown()).
- Modified source selector (./src_selector.php) to display source type
  code instead of long version.
- Displayed column 'source_type_code' in source list. Fixed a bug in SQL
  query (missing 'ORDER BY' clause) in same screen.
- Modified source types management page to handle the 2 new columns.
- Added columns 'source_type_code' and 'date_in_ref' to table 'source_types'.
  Bumped DB schema version to 14.
- Added download links for LaTeX reports in ./slides_p.php. Created the
  needed .htaccess to allow it, too.

0.18b (17/05/09)                                    [events]
----------------
- Removed minor HTML structure errors from ./slide_edit.php. HTML source-
  level cosmetics.
- Add "DOCTYPE" definition in all header generation functions (to be more
  standards compliant).
- Allow for explicit specification of the codepage used. New global variable
  '$html_charset' defined in './definitions.inc' and used in all header
  generation functions.
- Created a "country codes" management page (accessed through the "users"
  page). The list is read only for now, but features advanced sort controls.
- In the 'events' view/edit screen, added a (R/O) list of objects this event
  is linked from (DIA or SRC, at this stage).
- Added event support in 'sources' view/edition screen.
- Added statistics on 'obj_evt_map' table in ./admin.php.
- Implement missing 'clone' action in the source edition screen. Fixed bug
  in the 'clone' action of the event edition screen.
- Improved tray list display by providing a color-coded "percent full"
  indicator for each entry. Similar improvement in tray view/contents
  screen and in printable list.
- Improved 'delcon' and 'del' actions in attachment.php to provide return
  links to object edition page. Adapted call parameters to attachment.php,
  'delcon' action to match.
- Fixed a minor display bug in ./attachment.php. Cosmetics.
- Add ability to link objects (slides only for now) to events.
- Add visual clue to "anchor" status in the "See Also" list. Took this
  opportunity to document the array row structure in ListSA().
- Underscore periodical title in bibref quotes (instead of italicising it).
- Added visual clue to "periodical" status in ref_selector.php (cf. last
  change in books.php).
- Added support for obsoleted slides in the search page.
- Added columns 'is_anchor' and 'quality' to table 'slides'. Modified
  slide edition/view screens accordingly. Modified the slides list
  pages and search page to offer a visual cue to identify the slides
  flagged as "anchors". The 4 quality levels are defined in
  definitions.inc (as an array).
- Created the necessary infrastructure to handle source references
  (src_selector.php, obj_src_edit.php, BuildSrcRef(), ListSrcRefs()).
  Enabled the linking of source references from both 'Slide' and 'Event'
  objects. Enabled search on source refs and redirect to them using the
  'Q<id>' syntax.
- Removed 'folio' and 'para_ref' columns from 'sources' table (moved them
  to a single column 'quote_ref' in 'srcref' table). Adapted the sources
  edition and view screens accordingly.
- Recreated the 'location' index for the 'slides' table to include the
  'country' column (2 cities in different countries may have the same
  name). Key now is "location, country, descript_1, descript_2". Adapted
  all sort criteria for slides to use the new key (obj_selector.php,
  slides.php, slides_p.php, slide_edit.php).
- Added missing field 'translation' in slides and sources search queries
  (search.php).
- Added 'EVT' object type support where appropriate (see the new file
  'new_object_type.txt' in ./docs).
- Brought 'events' table to full spec. Created a draft event list
  (events.php) and event edition page (event_edit.php).
- Added an update of the global timestamp in the event of source type
  deletion (in source_types.php). Cosmetics.
- Created 'event_types' table. Bumped DB schema version to 13. Created
  event types edition page. Already created stump 'events' table (enough of
  it to "left join" from 'event_types'). Adapted admin page to count events
  and event types.
- Added top menu icon for 'events' table/object.

0.17b (23/11/08)
----------------
- Improved book and article deletion procedure to also take bibrefs
  into account. Deleting a book will now also remove all contained
  quotes articles, as well as all quotes that link directly to the book
  or to any of the contained articles. The deletion confirmation screen
  will detail all these items. Deleting an article also removes all
  quotes that link to it.
- Added columns 'website' and 'catalogue' to the 'libraries' table.
  Modified the library edition screen accordingly. Cosmetics.
- Added "switch to edit/view mode" links to the tray edition screen.
- Added columns 'created' and 'created_by' to the following tables:
  * articles            | * slides
  * bibref              | * sources
  * books               | * trays
  * libraries           | * users
  Adapted the relevant edition/view pages to match. Bumped database
  schema version to 12.
- Made library name into link to library view from book_edit.php and
  from source_edit.php (in view mode only).
- Fixed display bug in the book reference in article_edit.php ('edit',
  'clone' and 'view' sections): removed a leading comma when the book
  author field is empty.
- Modified 'slides_p.php' to create LaTeX booklet from slide index.

0.16b (15/11/08)                                  [webstore]
----------------
- In book_edit.php, added an "Add article to book" link in the 'insert'
  and 'update' sections.
- Added format help and validation tests for page refs in obj_ref_edit.php.
- Added a visual clue to the "periodical" status of each entry in the
  book list.
- Added validation tests on a few fields in the book and article edition
  screens.
- Improved admin page: added support for 'libraries' table.  Added
  "Country Breakdown per object type" section.
- Added "comment marks" support in the INX tree browser (inxtree.php).
- Added "switch to edit/view mode" links in 'inxtree' edition screens
  (inx_edit.php). Also regenerated '$curtag' contents in 'view' section
  when coming from the search page.
- Improved BuildBibRef() (in functions.inc) to handle article quotes that
  do not contain page refs (=> use global article scope instead).
- Fixed a bug in the article search query (missing join condition) and
  display (query terms and variables mismatch). Improved 'book' and
  'article' query result display.
- Modified all open tags from the short version ('<?') to the long version
  ('<?php') -- this is the recommended practice.
- On the Admin page, added a split slide count for digitals and regulars
  (in addition to the global count).
- Added a column 'is_periodical' to the 'books' table. Bumped DB schema
  version to 11. Modified book_edit.php to handle this field. Used the
  new field in BuildBibRef().
- Improved BuildBibRef() for the display of article references from
  periodicals.
- Added 'make_booklet.txt' in a new 'docs/' directory.
- Improved slides_p.php to support slide obsolescence.
- Improved slides_p.php to offer the user 4 possible sort orders for the
  slides list.
- Modified SlideView() to link to the webstore where appropriate (in
  'functions.inc').
- Added $webstore_base parameter to 'definitions.inc'.
- Modified 'trays.php' and 'trays_p.php' to display the new field.
- Modified 'tray_edit' to handle the new 'is_digital' field.
- Added column 'is_digital' to table 'trays'. Bumped DB schema version to
  10. Adapted 'definitions.inc' accordingly.

0.15b (21/07/08)                                   [sources]
----------------
- Added 'SRC' object support to "orphaned object" search (admin.php).
  Fixed a bug in the original OO query.
- In the slide edition screen, added a silent conversion of ',' to '.'
  in latitude and longitude seconds ('insert' and 'update' actions).
  Avoids the "numeric value expected" error if ',' is used as decimal
  separator.
- Improved display of inscription/sources texts by autonumbering lines.
  Also support non-numbered comment lines, and keyword RAW to prevent
  formatting altogether (in this case, the field contents is treated the
  same way as 'comment' or 'translation'.
- Move the "Edit" link for Categories, References and Attachments next to
  their section title (slide_edit.php, source_edit.php). The "switch to
  view mode" has been moved below the attachment list (same place as the
  "switch to edit mode" link in the view screens).
- Updated slides/sources creation and edition screens (slide_edit.php,
  source_edit.php) to take the new field into account. Updated the view
  functions (SlideView(), SourceView()) accordingly, but with the added
  feature that empty 'reading' or 'translation' fields will now trigger
  their title not to be displayed either.
- Added a new column 'translation' to both tables 'slides' and 'sources'.
  Bumped the DB schema to 9. Adapted definitions.inc to match.
- Add support for "sources" and "source_types" tables in 'admin.php'.
  Cosmectics.
- Added "SRC" object type support in 'obj_selector.php'.
- Added search capability on sources ('search.php').
- Added "SRC" object type support in 'attachment.php'.
- Added "SRC" object type support in 'obj_ref_edit.php'.
- See-also's now also support objects of type "SRC".
- Added "SRC" object type support in 'index_obj.php'.
- Added "SRC" object type support in 'obj_inx_edit.php'.
- Added support for sources (identified by 'S') in the 'Go' button
  redirector.
- Cosmetic improvement in navigation bar display (navigation outside of
  sets, for slides and sources) and to deletion feedback (slides).
- Cosmetic improvement in row display (slides list).
- Created 'sources' handling screens.
- Created 'source_types' table and related handling screen.
- Created 'sources' table and related index. Bumped DB schema version to 8.
  Adapted definitions.inc accordingly.
- Replace "media" icon with "source" icon. Replace all existing "MED" object
  types with "SRC". Renamed "media.php" to "sources.php".

0.14b (07/06/08)                                [navigation]
----------------
- Completed implementation of navigations between slides outsides of sets
  (by ID and by locations).
- Fixed bug in $skey handling that prevented navigation when sorting on
  location (slides.php, obj_selector.php).
- Started implementation of navigations between slides outsides of sets
  (as created by selecting a category in the index).
- In inx_edit.php, added affected rows display to the "del" section and
  enclosed it in a transaction to guarantee database integrity ('inxtree'
  and 'inxlink' tables).
- Implemented "Previous" / "Next" navigation within an object set as selected
  through the index page (selection done in index_inx.php, displayed in
  index_obj.php). Implemented through the use of cookies.
- Replaced all "include()" by "require()".
- Improved object selector: using the icons at the top of the screen, it is
  now possible to select the object type, the slides list is now split in
  more manageable chunks (cf. slides.php), and alternative sort keys can be
  selected (cf. slides.php). The "shot date" field has also been added, and
  support for the "obsoleted by" table included.
- Fixed "link title" display bug in index_inx.php.
- Moved the geographical coordinates 'seconds' fields to 2 decimal places
  (Google maps coordinates are provided to that level of precision).
  Updated the UI accordingly. Bumped DB schema to v. 7.
- Added "debug" flag display + largest attachment report in admin page.
- Added a book list in the library edition screen ('edit' and 'view'
  modes).
- Corrected a bug in the 'clone' action of the Books edition screen.
- Added support for UDC code field in the Books edition screen.
- Added column 'udc_tag' to table 'books'. Bumped DB schema version to 6.
  Adapted definitions.inc accordingly.

0.13b (11/02/08)
----------------
- Added missing "close" button in 'insert' action to obj_ref_edit.php.
- Fixed display bugs in 'view' sections for libraries, books, articles and
  bibrefs.
- Fixed a bug in SlideView() affecting the way HTML code is displayed in
  slide description fields.
- Added visual clues to the presence of a "HTML title" comment in the index
  tree (index_inx.php and inx_selector.php) and the book/articles list
  (ref_selector.php).
- In book_edit.php and article_edit.php ('edit' and 'view' sections), added
  a list of objects quoting the current book/article.
- Cosmetic improvements in books list.
- Corrected 'view' section in library_edit.php.

0.12b (02/01/08)                                   [BibRefs]
----------------
- Implementation of the bibliographical references handling system (books, 
  articles and bibliographical references), including support in stats
  page, search page and redirect page.
- Add support for geographical coordinates (latitude/longitude, as given by
  a GPS device) in slides edition screen. Bumped DB schema version to 5.

0.11b (08/12/07)
----------------
- Trim the userid during user account creation to avoid inconsistencies
  between the DB record and the htpasswd file.
- Add "clone" support in tray management screen.
- Implemented user deletion feature.
- Implemented the "Prune-n-graft" (= move) functionality in the INX tree.
  Preserves any existing INX link to the moved nodes.
- Added a navbar on the slides list page. The number of rows had grown too
  large to be displayed in a single table by Konqueror. The display is now
  done by block ('all' is still an option -- Firefox handles longer tables).
- Updated and improved the installation instructions.
- Cosmetic improvement to trays management screen layout.
- Further improved table layout in attached files management screen.
- Added missing '.php' in INX links in search results.

0.10b (31/10/07)                           [obsolete slides]
----------------
- Replaced 'text' input by 'textarea' for "description" field in the
  attachment edition screen.
- Further improved table layout in attached files management screen.
- Added rules in .htaccess to protect private information located in .inc
  file (DB credentials) to be directly accessed by users.
- Renamed weeknumber() to ISO_weeknumber(). Added missing 'global' statement
  in ISO_weeknumber(). Cosmetics.
- Fixed syntax error in GetMaxQuerySize ().
- Improved debugging and error handling in file upload procedure (attachments).
- Added the ability to mark a slide as obsolete (obsoleted by another slide).
- The 'obsoleted by' and 'obsoletes' fields on the slide edition screen can
  be used for navigation.
- Obsoleted slides are identified in the lists by the use of 'striked
  through' type (on their ID and trayID).
- In the slides list, moved the 'view' link on the slide ID in the 1st
  column and replaced the "View" action by "Clone" (the latter not implemented
  yet).
- Bumped the DB schema version to 4.

0.08b (23/06/05)                                 [global TS]
----------------
- Added a new 'db_info' table in the DB (includes two new fields:
  'schema_version' and 'data_last_modified'), added a definition of the 
  expected schema version in 'definitions.inc'. Added a display section for 
  the new fields in 'admin.php'. Modified all INSERT, UPDATE and DELETE queries
  to call set_global_ts() upon success (except for the 'users' table).
- Modified the tray contents page to show the slot numbers in hex when the
  max. number of slots is > 99. Fixed a syntax error in the tray update query.
- Added "view" link to "insert" and "update" actions of slide edition
  screen.
- Replaced the header in reports (slides, trays, inxtree) by a dedicated
  one (print_report_header()), in preparation for the addition of the "person"
  object type. Added a new menu icon for the "person" object type. Created the
  persons.php stub file.
- Improved "delcon" screen in the tray edition module.
- Added a navbar to the tray "insert" confirmation page.
- Cosmetic improvement to the "find gaps" report (admin page).
- Added "reports" page for trays.

0.07b (18/04/05)
----------------
- Created the "mkcdtray" script.
- Added support for attachments as object type in redirect.php.
- Added "orphan" and "empty" sections to the admin page. Cosmetics. Added
  IsLeaf() function.
- Added "gaps" section to the admin page.
- Sort user list by userid (instead of natural order of password file).
- Added debug feature.
- Modified files.php to add an initial "A" to all attachment IDs when
  displayed (same in search result display).
- Added attachment search routine (in "basic search").
- Added refresh button to the search result page.
- Cosmetics: color scheme for some tables, enhanced "DelCon" message.
- Added "alllevels" array to "definitions.inc". Added BuildPulldown() to
  "functions.inc". Switched "Submit" and "Reset" buttons placement for
  consistency in "user_edit.php". Improved row/columns handling (in same).
  Used BuildPulldown() for level pulldown generation + cosmetics (in same).
  Added $app_name and $app_title ("functions.inc" & "definitions.inc").
  Removed the "NavBar" from user_edit.php and user_post.php (relics from
  IPdBase).
- Added JavaScript focus handling to basic search page, the slide edition
  page, the INXtree edition page and the tray edition page (in the "Add"
  section only).

0.06b (02/03/05)
----------------
- Used htmlspecialchars() for inxtree comments (allows embedded quotes,
  amongst others).
- Cosmetic improvement in "files.php" (= attachments) table layout.
- Solved a nasty bug in INX tag value comparision (any category below tag
  "000e0001" would be hidden in some screens).
- Added "add new slide" link in insert and update section.
- Added basic search page.
- Corrected a bug in attachment handling ('Content-Disposition').
- Corrected a bug in 'can_publish' flag handling (flag was left empty
  in 'no' case after 'insert' action).
- Added stubs for books.php and media.php (to avoid the "file not found"
  error).

0.05b (22/02/05)
----------------
- Added auth. level checks.
- Added "maxlength" parameter to input fieds.
- Added "can_publish" field to 'slides' table. Modified slides edition
  screen accordingly. Created a 'bulk_edit' script to sequentially edit a
  given field for all slides.
- Switched 'submit' and 'reset' buttons on the "users" page (to stay in line
  with the rest of the application).

0.04b (15/12/04)
----------------
- Added attachment handling.

[...]

0.01a (12/11/04)
----------------
- Initial release.
    


Generated by SF_doc_gen v1.0, © Les Ateliers du Héron 2022.
Last Modified: August 17, 2024.
philipa STRUDEL scarlet PUNKT be
SourceForge Logo