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

Project Hirtius - Development Roadmap

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

Project Hirtius -- Development Roadmap
======================================
(pan - 12/08/2024)


Ver. 0.14b
----------
- focus on improving the navigation possibilities for currently
  supported object types (DIA).
  

Ver. 0.16b
----------
- Add ability to quote "whole book" or "whole article" (=> if book, no page
  ref ; if article, quote page refs = article page refs). [OK - 28/10/08]
- Add some validation to book and article and quote creation:
  * book:
    + if periodical, 'edition' and 'pub_year' should be blank. [OK - 02/11/08]
  * article:
    + to_page >= from_page [OK - 02/11/08]
    + from_page required [OK - 02/11/08]
    + if to_page left blank, stored as == from_page [already]
  * quote:
    + if quoting article, and *NOT* whole article, check that quoted
      page range is within article page range. [OK - 02/11/08]
- Add "switch to edit mode" (and back) to 'inxtree' view screen.
  [OK - 28/10/2008]
- Add "Add article to this book" link post book creation. [OK - 08/11/08]
- add a "source" object type (litterary sources, mss, inscriptions, etc.)
  [OK - 0.16b]
- change "media" icon to something more appropriate [OK - 0.16b]
- a "source" can be linked to bibliographical references [OK - 0.16b]
- Make sure to always use "long" PHP opening tags ('<?php').
  => Set "short_open_tag = Off" [OK - 17/10/2008]


Ver. 0.17b
----------
- Add "website URL" and "catalog URL" fields to the 'libraries' table.
  [OK - 23/11/08]
- Add "created" and "created_by" columns to all tables that already have
  the "modified" and "mod_by" columns. [OK - 22/11/08]
- Missing "switch to view/edition mode" in tray edition screen.
  [OK - 22/11/08]
- book deletion should also check for any bib. reference to that book, and
  delete those if confirmed. Idem for articles. [OK - 23/11/08]


Ver. 0.18b
----------
- Add missing action clone in source_edit.php. [OK - 08/05/09]
- when sorting on location (slides, events), the sort key should include
  the 'country' column (=> avoid mixing Paris, Texas with Paris, France).
  [OK - 01/12/08]
- Add a flag "entry_point" to the slides table. Visually identify the
  slides thus flagged in the lists. [OK - 03/01/09]
- Add a "quality" drop-down field to the slide edition screen (integer
  values 0 to 3, mapped to {bad, poor, fair, good} through a static
  array. [OK - 03/01/09]
- Underscore periodical title in bibref quotes (instead of italicising it).
  [OK - 07/01/09]
- Add initial support for "events" [OK]
- An "event" can be linked to bibliographical and source references [OK]
- "event" objects can exist outside any link to "person" [OK]
- in event view/edit screen, add a (R/O) list of objects this event is
  linked from. [OK - 11/05/09]
- Explicitely specify the codepage used (cf. sandwich). Currently, it's
  ISO-8859-15 (Apache's default). [OK - 14/05/09]
- HTML error in slide edition screen: global row not closed. [OK - 15/05/09]


Ver. 0.19b
----------
- create an "advanced search" page. [OK - 04/06/09]
- improve the way source references are displayed (don't display date for
  published litterary sources, for instance). Add a flag to the 'source_types'
  table to control this. Also add a "short type" field (MSS, LITT, FORM, etc.)
  to be used in table listings (cf. event types). [OK - 21/05/09]
- add "short" source type to the fields displayed in 'sources.php'.
  [OK - 21/05/09]
- replace source type by the short version in the source selector screen.
  [OK - 21/05/09]
- reengineer "shot type" field => replace it with a drop-down control (6
  values: Color Print, B/W Print, Color Slide, B/W Slide, Color Digital Still,
  B/W Digital Still). [OK - 05/06/09]
- reengineer the way coordinates are stored in the DB: should use a single
  decimal value for each axis, positive or negative, to allow for easy
  comparision in advanced searches. The UI should stay the same, and PHP should
  convert between deg/min/sec and decimal and back when needed. [OK - 06/06/09]
- add a "Quoted by" section in the source edition/view screen. [OK - 04/06/09]
- add a URL field to books, articles and sources for those cases where the
  document is available on-line. [OK - 27/06/09]
- include slide quality in the slide reports (./slides_p.php). [OK - 27/06/09]
- move the '<table>' tag inside the ListAttachments() function. [OK - 28/06/09]
- also convert "end date" field to date_e_key in the events table, to make it
  easier to search. [OK - 29/06/09]
- link slide coordinates to google maps:
  e.g. http://maps.google.be/maps?s=t&sll=50.850856,4.423925 [OK - 09/07/09]
- create an "advanced search" result page with user-selectable columns.
  [OK - 17/07/09]
- enable prev./next navigation between events within a sequence (place links
  next to sequence name, as an event may be part of n sequences).
  [OK - 27/07/09]
- in "basic search" result, display linked object reference for attachments.
  [OK - 13/09/09]
- allow search on categories (inxtree), if only on 1 at a time first [OK]
- make sure to SQL-quote the 'subject date' field (slide_edit.php) -- update
  fails on single quote character. [OK - 10/03/10]
- Improve the logic behind date input fields (slides.shot date) to broaden the
  scope of accepted formats. Typically, we should be able to take at least the
  following formats for equivalent:
  * 20090930
  * 2009-09-30
  * 2009/09/30
  [OK - 11/03/10]
- slide/source deletion procedure should be included in a transaction.
  [OK - 17/03/10]
- slide deletion proc. still lacks bibrefs, srcrefs and events cleanup.
  [OK - 17/03/10]
- align the sections at the bottom of the event view screen with those of
  the edition screen ('rel. date' and 'sequences' are missing.)
  [OK - 18/03/10]
- improve "basic search" result display (quote extract that match query
  term). [OK - 19/03/10]

***
- add a way to link sources with slides (e.g. for epigraphical sources or MSS).
  ---> the "see also" and auto-URLification features may be enough. Leave
  as is for now.


Ver. 0.20b
----------
- add a "person" object type ('individual'), with support for "event"
  objects [OK - 19/04/10]
- a "person" can be linked to bibliographical references [OK - 06/04/10]
- improve attachments list screen (paginate, sort keys) [OK - 22/04/10]
- add ability to move attachment to another object [OK - 29/04/10]
- include 'individual' objects in admin page stats [OK - 30/04/10]
- implement alternate names feature [OK - 22/05/10]
- implement title feature [OK - 31/05/10]
- a "source" can be linked from "event" objects [OK] and from "person"
  objects [OK] and their properties (such as name variants) [OK - 31/05/10]
- date formats should be in english [OK - 01/06/10]
- update 'attachments' table layout to handle last_modif/last_mod_by
  fields like all other main tables [OK - 01/06/10]
- add creation and modification info to 'inxtree' table [OK - 02/06/10]
- a "source" object should be able to refer to sources of its own (goal
  being to trace its history) [OK - 07/06/10]
- make "sequences" into lesser objects [OK - 10/06/10]
- add sequences to the admin page (statistics) [OK - 15/06/10]
- bug in auto-event handling: auto-events can't be unlinked from objects.
  This should only apply to the IND object that created them. Example is
  E75 linked to D3219. [OK - 25/06/10]
- implement deletion of altnames and titles on individual deletion [OK -
  07/07/10]
- store web links in a table comparable to books, quote them via the
  bibrefs table [OK - 31/08/10]
- in individual edition screen, the "linked event list" should have a "new
  event" button, to create one that would be linked with the indiv. [OK -
  25/10/10]


Ver. 0.21b
----------
- implement 'family' object + lineage display in 'individual' screen
  [OK - 17/12/2010]
- auto-link marriage/union event with both partners (regular link)
  [OK - 22/12/2010]
- bug in person_edit and family_edit, delete mode: if we chose to keep the
  auto-events, in addition to unlinking them in OEM, we should also update
  the event record to reset "is_auto" and "owner_obj_id", "owner_obj_type"
  [OK - 24/01/2011]
- implement advanced search on 'individual' object (do something clever with
  the name variants and the nickname [+ include family ? => no, separate])
  [OK - 29/01/2011]
- event adv. search: add ability to search on "is_auto" flag (yes, no, whatever)
  + add "is_auto" & "owner object" column to result [OK - 01/02/2011]
- bug: in advanced book search, when searching on both books and articles
  and you provide an author name that should match both kinds, only articles
  are returned (see bug_20110129.txt) [OK - 02/02/2011]
- in the case of auto-events, restrict the way the event type can be changed
  in edit mode: birth, death => R/O, union, marriage => only change between
  those two [OK - 04/02/2011]
- implement advanced search on 'family' object (w/ flexible way to search
  on names of partners) [OK - 21/02/2011]
- add ability to manage library cards (relationship between 'user' and
  'library') [OK - 04/03/2011]
- add script to warn when library card needs renewal [OK - 11/03/2011]
- improved the "quoted by" list in book, article and source view screens.
  Arrange for them to be sorted and "uniqued", but keep an accurate count of
  references (+ add a per-object ref. count ?) [OK - 02/05/2011]
- add sort / navigation controls to evt_selector.php [OK - 04/05/2011]
  

Ver. 0.22b
----------
- consolidate getUserList() to also use it in the adv. search page
  [OK - 02/07/2011]
- offer an in-database "TiddlyWiki"-like interface as the place to
  start putting all the objects and refs together and building a
  draft article/report/book. Best starting point is to combine those 2
  existing projects:
  - ServerBased_tiddlywiki02.zip (nice interface, server-stored, file
    back-end, PHP)
  - PhpTiddlyWiki0.5b.zip (poor interface, server-stored, MySQL back-end,
    PHP)
  Both are kept in ~/Documents/files/HTML_templates. Projects should be made
  into lesser objects, tiddlers into fully fledged ones. 
  BEWARE: TiddlyWiki is, by nature, non linear (i.e., you can't really create
  a structure composed of different tiddlers) => we need to add a layer on
  top, to support that kind of structure. Have a pool of unordered tiddlers
  (possibly linked together), and a way of creating a structure (tree => TOC /
  mind map), then attaching selected tiddlers to the structure. The structure 
  can be modified (reordered) at will, and tiddlers can be unlinked from it.
  [OK - 09/09/2011]
- implement "advanced search" for tiddlers (includes project-level fields
  + categories + something clever with the tags) [OK - 09/09/2011]
- improve "latest updates" search by offering a choice between "latest
  updates" and "updated between 2 arbitrary dates". Add option to search on
  creation date, modification date, or both. Rename tab to "timeline"
  [OK - 15/09/2011]
- search on date ranges: verify that D1 <= D2 [OK - 20/09/2011]
- add a "copy" action to the INXtree management page. In the confirmation
  dialog, offer a choice between copying the selected node (and everything
  below it) or only its sons (and everything below) to below the target
  node [OK - 30/09/2011]
- bug: new copy action doesn't work from header lines in inxtree. Check
  whether this may also be the case for the merge action [OK - 04/10/2011]
- add a visual marker on all edition pages next to required fields (red
  asterisk) [OK - 20/10/2011]
- make slides.descript_1, trays.slides_per_tray, trays.last_mod_by,
  users.fullname, users.mod_by "NOT NULL" [OK - 27/10/2011]
- add validation on slides_per_tray field in tray_edit.php (x > 0) + add
  validation on all required fields [OK - 28/10/2011]
- add missing action 'clone' in slide_edit.php [OK - 02/11/2011]
- make all array building routines into function calls in adv. search page
  [OK - 03/11/2011]
- implement some form of reporting based on project + tiddlers. Add a 'tag'
  field to project = top-level node for proj. structure. Once set, all new
  tiddlers are auto-linked to it. Warning: add 'projects.tag' field mgt to
  'move' and 'del' procs in inx_edit. 'Report' action in project uses this
  node as entry point. project comment becomes abstract. All linked objects
  become paragraphs (in the LaTeX sense) [OK - 19/01/2012]
- modify the "dump_layout" script so that it doesn't include initial
  auto-increment values in the generated file [OK - 01/02/2012]
- convert own database to full UTF-8, investigate need for "mbstring" PHP5
  library (see <http://php.net/manual/fr/book.mbstring.php>) [OK - 08/02/2012]
- the add bibref, weblink or srcref screen (obj_ref_edit.php and
  obj_src_edit.php) should display (R/O) the book, article, weblink or
  source we're quoting [OK - 09/02/2012]
- add a filter (multi-select) on object types (incl. lesser and non-objects)
  on the basic search form [OK - 10/02/2012]
- add a "formatter" to the TiddlyWiki to URLify object refs in tiddlers
  [OK - 27/02/2012]
- in lineage edition screen, next to "new" action, add a "link" action
  to link child to existing family. Rename "New" to "New Union" ("Pick
  spouse, create new family"). Add "Link Parents" ("Select existing
  family to link to as parents") [OK - 26/03/2012]
- add UI elements to TiddlyWiki to manage past versions of tiddlers. E.g.:
  new "history" menu (next to "edit", etc) that pops-up a list of past
  versions (version number, date). Clicking on a row opens the selected
  version in a new tiddler (R/O). Similar behaviour to the "jump" menu
  [OK - 27/08/2012]
- bug: the couple creation event description is not updated when partner's
  names are (birth/death events for individuals are already handled OK)
- bug: the predefined part of AE description field is not properly escaped
  [OK - 31/08/2012]


First public release (1.0)
--------------------------
- allow link to titles and alt. names from comments (e.g. '{N234}') [OK]
- offer a project 'preview' report (both from project_p and inxtree): simple
  hierarchical structure with all objects linked at each level
  [OK - 18/12/2012]
- TiddlyWiki: when creating a new journal, the name should use the ISO date
  format in order to sort correctly, and the tag JOURNAL should be
  automatically added [OK - 05/03/2013]
- Admin email address is hardcoded in ./functions.inc. Move it to 
  'definitions.inc' [OK - 08/11/2013]
- strip "heron.net"-specific information from the distributed 'definitions.inc'
  file [OK - 08/11/2013]
- On-line, context-sensitive help and/or user manual [OK - 20/11/2013]
- Fix / improve Google Maps interface. See:
  <http://stackoverflow.com/questions/7135722/display-location-using-longitude-latitude-coordinates-google-maps>
  <https://developers.google.com/maps/documentation/javascript/tutorial#MapOptions>
  [OK - 12/12/2013]
- implement the sanity checks (admin page) based on a procedure similar to
  that used by Bugzilla [OK - 07/01/2014]
- add EXIF data field(*) to 'slides' table. Not editable, upload through ext. 
  script only (w/ option to not update "last mod." info). On slide view/edit 
  page, add button to view exif data through JS pop-up window. Make EXIF 
  field searchable via both basic and adv. search.
  (*) as an alternative to a text field, use a separate table with the 
  following structure:
  ID | Slide_ID | Property | Value
  [OK - 31/01/2014]
- Improve all "delcon" actions to check and warn if attachments are linked
  to the record selected for deletion. If this is the case, warn that it is
  possible to move those attachments to another object [OK - 03/02/2014]
- the in-frame object viewer for tiddlers should contain a link to the 
  tiddlywiki interface for that tiddler [OK - 03/02/2014]
- improve source delcon action: check whether referenced first [OK - 05/02/2014]
- define the TLL (tag level length, default = 4) as a global constant. Warn
  to NOT change it post deployment. Update admin page to also compute max
  tag depth based on tag column length / TLL value [OK - 11/03/2014]
- in ./obj_att_edit.php, add total attachments size in yellow line at
  bottom of table [OK - 15/07/2014]
- Refresh ISO 3166 country codes list [OK - 08/09/2014]
- add userid to generated file names for all LaTeX reports (to further
  reduce risk of collision and make things easier in multi-user env.)
  [OK - 15/10/2014]
- declare interface variables in comments. Validate them where appropriate
  [OK - 02/07/2015]
- BUG: call-time pass-by-reference deprecated (functions.inc, l. 1190 = 
  getVarcharColLen() & 8637 = reformat_date(), calls to preg_match())
  [OK - 28/07/2015]
- reset "is entry point" flag on slide clone [OK - 28/07/2015]
- for all create/update/delete operations inside transactions, expand the 
  error message to recommend running the sanity check if rollback fails
  [OK - 17/09/2015]
- add inxtree structural integrity check to sanity check [OK - 18/09/2015]
- improve user deletion proc: ask for confirmation first (delcon). Warn that
  user accounts shouldn't be deleted but rather disabled. Allow override if
  admin knows what he's doing. Also delete linked library cards and renewals
  [OK - 21/09/2015]
- add validations to event creation/edition:
  * check if event type "has duration". If not, date_end should be empty or 
    same as date_start.
  * if both start and end date are given, end should be >= to start
  * check that death date is >= to birth date [OK - 02/10/2015]
- check that the global timestamp is updated in all 'del' and 'unlink'
  cases as well, as well as on all DB impacts from user accounts management
  [OK - 09/10/2015]
- BUG: missing script "chhtuser" [OK - 09/10/2015]
- improve weblinks structure to allow handling of web-based databases
  (base link + query term) => 'link_is_query' in weblinks + 'query_term'
  in bibref (mandatory if 'link_is_query' is true, hidden otherwise). 
  Cf. W904 [OK - 26/10/2015]
- strip HTML tags from INXtree nodes, books, articles and trays comment field 
  before displaying them on mouse hover (not supported in "title" parameters)
  [OK - 04/11/2015]
- in evt, fam, ind, inx, ref and src selector, disable nav. from icons in
  header [OK - 23/11/2015]
- wrap creation of new tag in a transaction in ./inx_edit.php, to avoid
  collisions (/!\: collision would simply result in "duplicate key" error
  from MySQL => safe, even though not user friendly). See "next-key locking",
  § 13.2.10.6 [OK - 26/11/2015]
- prepare upload files ('.sql') for generic data tables: 'altname_types', 
  'country_codes', 'event_types', 'source_types' + 'users' with admin account 
  only. Assign all generic records to 'admin' account [OK - 01/12/2015]
- validate install procedure to create a new, empty Herodote instance
  (+ test w/ different values of $tll and $tidlen) [OK - 17/12/2015]
- create script to export fully static version of the HelpSet (for the project
  website) [OK - 11/01/2016]
- rename project [OK - 06/07/2016]
- add license message in source files and license text in project (GNU Affero 
  General Public License v3?) [OK - 17/02/2017]
  

Ver. 1.01
---------
- improve stats page number formatting with number_format() [OK - 04/10/2017]
- card renewal edition screen: 'fee' entry field: align right. Also for any
  numeric ID (e.g. slide_edit, ID in adv. search page) [OK - 10/10/2017]
- add "cloned_from" column to all full-fledged objects. Display it when set
  next to the record creation date. Add "clone" action link next to "switch to 
  edit mode" on view page for all full-fledged objects [OK - 17/11/2017]
- improve TiddlerView() output by converting wiki format to HTML  
  [OK - 21/12/2017]
- add translatable strings for use in LaTeX report outputs ("References", 
  "Sources", etc.). Add language column to project record (R/O after initial
  creation) => default tiddlers contents based on this [OK - 09/07/2018]
- improve latexify_IND() function to also display families (incl. children), 
  alternate names and titles where present. Add missing 'children' section 
  to latexify_FAM() [OK - 09/07/2018]
- on the statistics page, count the number of relative dating entries for 
  events [OK - 12/07/2018]
- improve 'upload_exif' performance by inserting all property/value pairs 
  from a given slide in a single query [OK - 24/07/2018]
- add "return to edit mode" from INXtree preview [OK - 25/07/2018]


Ver. 1.02
---------
- add "switch to view/edit mode" on user edition screen [OK - 13/08/2018]
- improve 'publish' script to generate static HTML gallery for each tray. 
  Useful CLI tools referenced from:
  <http://www.yolinux.com/TUTORIALS/LinuxTutorialMyPhotoGallery.html#STATIC>
  [OK - 19/08/2018]
- in TiddlyWiki interface, add ability to limit the number of past versions
  kept for tiddlers (currently, it's either none or unlimited). Could be 
  implemented using triggers [OK - 30/08/2018]
- Add tags section to latexify_TID() [OK - 04/10/2018]
- Add ability to flag projects as "closed". Hide closed projects from list
  by default. Add check-box on list page to show them when checked.
  Add control on seach page to include or exclude them from results.
  Tiddlers from closed projects to appear greyed on home page and in 
  search results. Tiddlers in closed projects to become R/O in Wiki I/F
  [OK - 12/11/2018]
- add a "sortkey" column to the "inxlink" table. Add controls (to 
  inx_edit.php?) to allow sorting of objects as they are attached to a project 
  structure. Should be reachable from "Project Preview" page [OK - 15/03/2019]
- add "back to project report" link to preview page and "back to preview" on
  linked objects sort page [OK - 17/04/2019]
- bugfix: proper handling of tray renaming (what if it already contains 
  slides)? [OK - 08/07/2019]
- in ./sequences.php, add "Add" action next to "Link" to allow creation of new
  event as member of that sequence (cf. similar feature in "Biography" section
  of Individual edition page) [OK - 11/07/2019]
- add ability to add a (set of) category membership to all objects resulting 
  from an advanced query [OK - 06/08/2020]
- expand 'slide_extract' script to allow the export of all Slide objects
  linked below a given INXtree node (specified by its "tag") [OK - 13/08/2021]
- write global test procedure [OK - 23/08/2021]
- improve 'upload_exif' script to ignore non_slide files (e.g. the 
  thumbnails generated by the gallery creation script) [OK - 23/08/2021]
- fix UTF-8 support in 'card_reminder' script emails [OK - 24/08/2021]


Ver. 1.03
---------
- re-design Users List and Users Edition Page to keep in line with the rest
  of the application (single file for edit and post, action links in Users 
  List, etc.) [OK]
  + add confirmation step before modifying an existing User ID (as it could 
    break the DB consistency, idem 'delcon') [OK]
  + enforce min. password length (add global definition for it) [OK]
  + check user ID for acceptable characters and max. length (also in
    'chhtuser' script) [OK]
  + even 'Reader'-type users should be able to edit their own preferences [OK]
  + prevent last 'Admin' account from being deleted [OK]
  + non-admin users should not be able to modify their own user ID [OK]
  + non-admin users should not be able to access detailed info (view page) 
    about other users [OK]
  + add ability to sort user list by Full Name [OK]
  + integrate relevant changes from 'chhtpwd' v1.4 project [OK]


Ver. 1.04
---------
- hs2static to add link back to Project Hirtius website home page
  [OK - 12/04/2022]


Ver. 1.05
---------
- add column to 'db_info' table to keep track of when the sanity check was
  last run OR track this through a new "Event Log" feature (also log who 
  ran it, how many problems were reported) -- creating a log entry doesn't
  update the DB timestamp of last modif as such (adapt from 'tirelire')
  [OK - 24/10/2022]
- add processing time measurement to sanity checks [OK - 24/10/2022]
- improve ordering in ./fam_selector.php (to handle subsequent union cases):
  + add 2nd-level key on date behind MPname and FPname 
  + add controls to select order: MP+FPname / FP+MPname [OK - 03/11/2022]
- visually identify obsolete slides in view mode (and ideally in edit mode 
  as well) [OK - 11/11/2022]
- BUG: event view mode, sequence membership list: only events with date set
  can be navigated with next/prev [OK - 20/02/2023]
- Create new global default (perhaps even user pref) for Event Type on
  Event creation form (currently first item in list, meaningful default would
  be "Generic Event") -- existing function getEventTypeIDbyCode() can help
  [OK - 20/02/2023]
- add new "flexible" mode for Advanced Slides Search on 'reading' field, to
  support alternative spellings in inscriptions text (e.g. 'v'='u', 'ij'='y').
  Add new "literal" checkbox to activate/deactivate the feature
  => alternative approach: add 'transcription' field [OK - 10/03/2023]
- bug in FormatReading() may cause certain inputs to trigger a 2nd table
  opening without closing the 1st one (Reading = "Bla\n" -> 
  "<table border=0><table border=0><tr><td></td><td>Bla</td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr></table>"
  /!\ check rendering of D118! [OK - 14/04/2023]
- closing and re-opening projects should be logged [OK - 26/04/2023]
- TST: [OK - 23/05/2023]
  * update "Slides" toolbar icon title: "Manage Slides" -> "Manage Slides &
    Trays"
  * update "Books" toolbar icon title: "Manage Books" -> "Manage Books, 
    Articles & Weblinks"
  * update "Persons" toolbar icon title: "Manage Persons" -> "Manage Persons &
    Families"
  * update "Projects" toolbar icon title: "Manage Projects" -> "Manage 
    Projects & Tiddlers"
- TST: HTML error in ./index_inx.php and ./inxtree.php: missing closing '>' 
  in "img src=" element [OK - 24/05/2023]
- TST: QuickJump fails to detect non-existant Tiddler [OK - 23/05/2023]
- TST: per-category object count not formatted as per user prefs in flat
  list report [OK - 24/05/2023]
- TST: in inx_edit.php, when copying only sub-nodes, issue message that
  no copy took place when no sub-nodes were found [OK - 25/05/2023]
- TST: '\' char. not properly escaped during LaTeX conversion (slide book,
  offending text in obj. E2 linked as Event to D10):
  ! Undefined control sequence.
  l.232 Un 'soir' sur "deux" : C:\Temp
  => missing handler in html2latex_text() and html2latex_line()
  [OK - 06/06/2023]
- add warning / confirmation step before removing 'required' flag on event
  type [OK - 02/08/2023]
- TST: '\n' sequence not properly escaped inside "preformatted" blocks in
  TiddlyWiki. Appear OK when first displayed, but converted to line breaks
  when the Wiki is reloaded [OK - 11/08/2023]
- TST: Add '$DEBUG_ALL' constant [OK - 01/09/2023]
- Add number of linked books to Library list screen [OK - 06/10/2023]
- Cosmetic on Users List: center number of rows shown + "email all" link
  below table [OK - 06/10/2023]
- Admin users should be made easier to identify in Users List (level in bold?)
  + add column with account creation date [OK - 06/10/2023]
- review all hidden fields for encoding need (see event_types.php, 'update'
  confirmation section) [OK - 23/10/2023]


Ver. 1.06
---------
- add "Calendar View" for Events (linked from Event List):
  * year selector for quick jump + Next/Prev controls + +10/-10 & +100/-100
  * 2 months per row, 1 page per year
  * ability to "zoom in" on given month to see it full page?
  * based on jPerCal algo
  * show roman date (optional)
  * selector for calendar (Julian, Gregorian, Transition)
  * recorded Events / shot Slides are linked from each day
  * may need to add a field in Event record to track the calendar in which
    the date is expressed
  * add link on Event/Slide Edition Page in 'view' mode (if (shot)date is set) 
    to jump to Calendar View with in-page address for relevant month
  [OK - 10/05/2024]
- add missing field 'is_alive' to adv. individuals search [OK - 12/06/2024]
- BUG: when title ends with punctuation mark, don't add ',' before concat. 
  of subtitle (see B323) [OK - 19/06/2024]
- improve 'dd2dms' by trimming -s parameter value before parsing it 
  [OK - 20/06/2024]
- BUG: even a Reader-level user should be able to manage their own libary
  cards and related renewal records [OK - 01/07/2024]
- add link "Add slide to this tray" to tray view page, auto-fill tray ID on
  new slide page [OK - 01/07/2024]
- event log message for user edition events should contain special mention
  when user account is disabled or re-enabled [OK - 05/07/2024]
- modify URLify() function to visually identify dead links (e.g. those that
  point to objects that may not exist yet) [OK - 29/07/2024]


Ver. 1.07
---------
***

- migrate to / add support for PHP8
  <https://www.php.net/manual/en/migration80.php>
- add alternative sort keys + pagination to individual selector
- offer alternative sort keys in books and weblinks list (by ID, by title,
  by pub.date?)
- add "age at death" computation to individuals view page (result in years, 
  months, days)
- add a 2nd webstore for eBooks, add field on book/article page for URL inside
  webstore (=> allow for direct reading). If possible, allow to browse and
  select inside the webstore as alternative to typing URL
- add ability to move tiddlers (and their past versions) to a different project 
  (through a new "list" page [./tiddlers.php] with a "move" action link). Add a 
  count of contained tiddlers on the project edition page (view and edit 
  modes). Next to it, add an action link "list all" that leads to 
  ./tiddlers.php. Possibly, add a fourth action link "list tiddlers" ([+] ?) 
  with the same goal on the projects list page [./projects.php]
- search pages: do not error out if min/max field values are reversed -- 
  silently swap them instead
  + cosmetic: align "Fuse message, client address and user agent" on input
    fields (event log search)
- Book edition screen: add JS to disable 'edition' and 'published' fields
  when 'periodical' is set
- BUG: JS-based validation tests allow commit on error, value reset to zero
  (e.g. PosIntCheckJS() for 'Published' field in ./book_edit.php). PHP insert 
  action may then reset 0 values to blank or error out. Possible alternative 
  approach: validate at page submission and return false if fails: 
  <https://stackoverflow.com/questions/8664486/javascript-code-to-stop-form-submission>
  (or remove JS altogether and rely only on post-submit validation)
- should event deletion be recorded in event log, even when deletion occurs
  as metadata cleanup? (e.g. death event when "is alive" flag is set, couple
  creation)
- in the 'slides' table, add field(s) to keep a formatted date bracket
  (with an attempt at auto-filling based on the contents of 'subject_date')
  for the purpose of sorting and searching. Only present those fields on
  'edit' page. Create script to fill them where possible for existing slides.
  Should this bracket be limited to year, or do we want down to day precision?
- change debug level "names" from variables into constants (avoids having
  to declare them as "global" in functions)
- add a thumbnail picture field to individuals table + view page (portrait)
  OR: add field to store 'Slide' obj. ref. that represents portrait and 
  display existing thumbnail from gallery.


Later
-----
- add concept of object 'owner' (initially, may == creator), and use it for
  granting access (e.g. to 'delete' actions or project reopen):
  if ((admin) || (writer && owner))
- call 'quote_smart()' in create_tiddler() instead of hard-coding escape chars
  in trans_strings.inc
- identify URLs in wiki2latex() and wiki2html() and paint them with a
  suitable format (\url{} in latex, <a href=""> in html)
- add tooltips to all "action" links
- use consistent naming convention for "action" links (e.g. "add" or "new")
- add "list unquoted books and articles" to admin page
- improve user access control: add validation fn() cf WarZone, and disable
  edit controls if needed. Finer control over who can do what (e.g. only 
  owner and admin can delete ?).
- add ability to view query results (or other applicable object lists) as 
  image gallery where slides are concerned
- in INXtree "flat list" report, add sort order selection (tag or node name)
- add sort order control to adv. search result page through clickable columns 
  titles
- make it possible through advanced search to identify alternate names of a 
  particular type
- tiddlywiki, see-also: should detect and prevent link to self at JS level 
  (already not stored in DB).
- test and adapt the "options:" menu in the TiddlyWiki interface to only keep 
  the entries that are still relevant and that work.
- add confirmation step when death event is removed on "is_alive" flag being
  set post-creation.
- in object edition mode, the window title should contain the object ref.
- in event list & selector, offer option (checkbox ?) to hide auto-events
- provide a mechanism (via an external script ?) to periodically check
  weblinks for validity (just flag them dead if they are, update "last_seen"
  otherwise).
- prevent storing duplicate copies of the same attached file by storing a 
  checksum and checking against it
- have bookmarkable queries
- "saved search" feature
- "change several objects at once" feature (based on the query result
  page).
- improve advanced search by adding a small drop-down next to each text field:
  + == (exact match)
  + != (exact difference)
  + %% (contains substring)
  + !%% (does not contain substring)
  + // (matches regexp)
  + !// (doesn't match regexp)
- create an "even more advanced search" page, with support for "boolean
  charts"
- add "mid-air collision" detection feature
- check for deltas before update (=> don't affect timestamp of last modif.
  unless needed)
- track changes (either as a versionning of the whole record, or through
  some sort of "object activity" cf. Bugzilla)
- quips ? ("I am not one who was born in the possession of knowledge; I am
  one who is fond of antiquity, and earnest in seeking it there.[Confucius]")
- in the links creation routines (e.g. evt_selector.php), make sure that
  the user rights are verified before creating the link.
- also add support for relative dating of objects/slides (w/ respect to
  other objects or events)
- based on formatted date bracket and relative dating, offer a chronological
  ordering of the objects/slides
- enhance relative dating of events to also support linking with objects/
  slides
- add support for adoption (e.g. new 'adopt_fam_id' field in 'individuals'
  table)
- allow for creation of homosexual couples
- offer support for adoption by homosexual couples
- only allow regular filiation from heterosexual couples
- make 'location' into a separate object type (fully fledged or pseudo?) and 
  store following metadata:
  * administrative context (e.g. state, province, county, etc.)
  * past names
  * alternative spellings

- In "category view" (index.php), in-category navigation doesn't follow
  the same order as the list (because getLeafList() only knows about
  obj_type/obj_id pairs, and can't sort the same way as the $allrows
  array). Maybe it can be fixed now that we use sessions.
- allow multiple selection in the INX selector (cf OPX2 "search activity")
- in index.php and help_index.php, provide working, minimal "no frame"
  contents

- on slide creation/edition, add validation on image type based on tray
  properties (=> need new tray property, like "supported image types")
- implement sorting mechanism for relative-dated events (needs I.E. ?)
- base the 'persons' and 'events' tables design on the GEDCOM format
- add support for GEDCOM import and export
  (see <http://pear.php.net/package/Genealogy_Gedcom>)
- add ability to use Hirtius DB as a BibTeX source
  (see <http://pear.php.net/package/Structures_BibTex>)
- add "family tree" display + navigation (using 'dot')
- in the slides table, add a field to track the author of the picture. The
  field should be a drop-down (=> separate screen to manage its contents).
  The picture authors should *not* be confused with users of the application.
  We should also add a "license" field for the picture (which should also be
  handled through a drop-down).
  
- add a "raw data" object type with per-project custom fields (use case: 
  projects centered around the study of large data sets, e.g. geographical 
  and chronological distribution of archeological finds, cf. Kockerols, 
  Jeneson, Fauduet).

- improve report generation capabilities.
- in the LaTeX slide list report, fix the charset support and the translation
  of HTML entities:
  * if the selected charset is UTF-8, the generated .tex file fails to build
  * if the selected charset is ISO-8859-15, non-latin characters are converted
    to HTML entities, and those are dumped "as-is" in the .tex (e.g. Ӓ)
- in the "Tray Index" report, offer choice of scope (only subset of trays), 
  and add "quality" field to output

- add "timeline" display for all supported object types:
  * DIA
  * SRC
  * IND
  * EVT

- Keep per-user preferences in a profiles table.
- Add a user preference edition page.

- improve user interface (cf. WarZone ? JavaScript menus ? CSS ?)
- improve security model (who can edit what / owner can delete, etc.)

- add full-text search index (?) -- is it supported with InnoDB, or only
  MyISAM?
  
- Investigate Drools (rule-based inference engine):
  <http://www.jboss.org/drools>
  or NodeBrain (GPL'd rule engine)
  Could be helpful in the context of relative event sort (?)

- Integrate with a GIS tool (to locate groups of objects on the map)

- Integrate my Java chrono tools using WebStart ?

- Investigate ChronoZoom:
  <http://newscenter.berkeley.edu/2012/03/14/chronozoom-a-deep-dive-into-the-history-of-everything/>
  <http://www.chronozoomproject.org/>
  <http://chronozoom.codeplex.com/>
  (Beware: Azure/C#)
  
- Advanced Search on strings containing '\':
  <https://stackoverflow.com/questions/14926386/how-to-search-for-slash-in-mysql-and-why-escaping-not-required-for-wher>

- Investigate EpiDoc: Epigraphic Documents in TEI XML
  XML text markup for ancient documents
  <https://sourceforge.net/p/epidoc/wiki/Home/>


Security/Standards
------------------
- check URLs (sources, books, articles, weblinks) to guard against SQL
  injection and privilege escalation. Cf ATihon: no way to check URLs --
  just make sure to never update DB based on a GET parameter (see below)
- Make sure the application works w/ register_globals turned OFF.
  => Set "register_globals = Off"
  => make the difference between POST and GET parameters. Never update DB
     based on a GET parameter
  [OK - done in v1.0]
- Use query functions w/ placeholders, NOT queries built from chains
  => see <http://php.net/manual/en/pdo.prepared-statements.php>
- /!\ mysql_* functions are no longer maintained and are deprecated.
  Replace with either PDO or MySQLi. See:
  <http://php.net/manual/en/mysqlinfo.api.choosing.php>
  /!\ support for mysql_* function REMOVED from PHP v7!
  [OK - done in v1.02]
- Make sure to prevent JavaScript injection in text fields
  => either disallow HTML tags and implement BBscript
  => or filter out any unwanted attributes (e.g. "ONCLICK") on all other
     tags
- Move DB and app to using numerical user IDs.
- Switch to safe temp. file generation in Perl scripts
    


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