Skip to content
James Cobban edited this page Apr 15, 2019 · 28 revisions

Summary

The product implements web access to a family history research system that combines maintenance of the family tree with deep integration with research tools including transcriptions of original documents. Being web-, or cloud-based it facilitates collaborative research.

This code is the implementation of the site genealogy.jamescobban.net.

This product addresses several weaknesses of existing genealogical tools.

Most existing products, even the mass genealogical websites, focus primarily on individual research. This results in massive duplication of effort. Information on a particular individual may exist in thousands of separate family trees, each maintained by an individual, with only inefficient tools for collaboration. This tool supports creating multiple trees, but each individual person exists only once as a record even if part of multiple trees.

The normal view of a family within the tree is as a human-oriented report. That is the display is made to look as much like a page from a published family tree, with an anecdotal style presentation of the facts about the individuals, pictures, footnotes, and a bibliography. This presentation is highly dynamic, however, compared to other systems because almost every piece of information is either defined as a hyperlink, or displays information in a pop-up if the mouse hovers over the information. The site can therefore be used as an alternative to publishing a traditional hard-copy family history, with the advantage that the site enforces privacy rules based upon who is looking at the history. For example no information is displayed about individuals who are less than 105 years old unless the current user is identified as a close relative. A separate data-entry view is used to edit the family tree.

Family Page

This site measures the completeness of research by tracking what percentage of each original source has been referenced by citations from the family tree. This also means that when you examine the transcription of a source document you can see which individuals in the family tree are documented by each page, or even each item on a page of a document.

Progress of Research

Overview

The implementation divides the functionality into layers:

  • The database server provides the standard Structured Query Language (SQL) command interface to a relational database. The current implementation uses the MySQL© server or the MariaDB© SQL server, but as far as possible supports any implementation by avoiding non-standard features of the SQL language.
  • Access to the SQL database is mediated by the PHP Data Objects (PDO) software layer to hide as many of the implementation dependent features of the SQL server as possible from the application.
  • PHP Hypertext Pre-processor (PHP) is used to define an object-oriented interface to the database. This layer ensures that the logical consistency of the database records is maintained. In addition it ensures that the syntax of SQL commands is valid for the server being used and in most cases uses only syntax defined by the SQL standard.
  • Database query and update requests are exchanged between the browser and the web server using eXtensible Markup Language (XML) documents or JavaScript Object Notation (JSON) documents using Asynchronous Javascript and XML (AJAX) techniques.
  • The client browser presents the user interface based on HyperText Markup Language (HTML) version 5 documents constructed by the PHP layer using HTML templates.
  • Dynamic web page functionality is implemented using Javascript (ECMAscript/JScript).
  • The site supports rich-text editing for almost all input text fields through the use of tinyMCE. This permits creating a family tree with more links and more flexibility in embedding images.
  • The presentation is controlled using a Cascading Style Sheets level 2 (CSS2) style sheet. The HTML templates and CSS style sheet can be customized by the implementor.

Table of Contents:

Next: File Summary

Clone this wiki locally
You can’t perform that action at this time.