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
|