Difference between revisions of "Developer Manual"
(48 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
− | + | The developer manual is aimed at people who will be contributing to the project and to a certain extent to those who intend to hack ARK to use it for their own ends. As a general rule, if you find yourself doing extensive hacking, please let us know as we would be happy to consider adding new code to the project. | |
+ | |||
+ | If you don't know why you are reading this documentation, you are probably looking in the wrong part of the manual. For information on installation and administration see the [[Administrator Manual| administrator]] section of the manual. | ||
+ | |||
+ | Work to create developer documentation including migration of old documentation (Ticket #122) is ongoing (as of 21st Oct 2016) but in the meantime please contact a member of the [http://ark.lparchaeology.com/contact ARK Development Team] if you can't find what you are looking for within these pages. | ||
+ | |||
+ | ===Background Reading=== | ||
+ | |||
+ | ====[[ARK model]]==== | ||
+ | An incomplete guide to the overall structure of ARK, its file structures etc. | ||
+ | |||
+ | ====[[ARK Data Storage]]==== | ||
+ | An overview of the ARK data storage model | ||
+ | |||
+ | ====[[Filters]]==== | ||
+ | An overview of filters and how they work (theoretical) | ||
+ | |||
+ | ===Standards and Guidance=== | ||
+ | |||
+ | Coding standards are simple and follow the PEAR system rigidly without exception. See the page blow for further detail. Some further guidance is given below to try to help you build new code in a way that fits into the overall ARK style. This material is incomplete at this stage. | ||
+ | |||
+ | ====[[Coding Standards]]==== | ||
+ | An overview of the coding standards with a link to PEAR. | ||
+ | |||
+ | ====[[Adding a New Page]]==== | ||
+ | How to add a new page to the system | ||
+ | |||
+ | ====[[Data Entry Pages]]==== | ||
+ | How the data entry pages fit together. Possibly needs to be re-written as something more generic | ||
+ | |||
+ | ====[[Page Header Block]]==== | ||
+ | example code for a page header block. Possibly needs to be made into a more generic code snippets page | ||
+ | |||
+ | ====[[Developing Subforms]]==== | ||
+ | A brief guide to developing new subforms | ||
+ | |||
+ | ====[[Accessing User Information]]==== | ||
+ | How to get access to the logged in user's information which is held in the SESSION | ||
+ | |||
+ | ====[[ARK log]]==== | ||
+ | An overview of the log system with detailed notes (note that this system is currently not fully working) | ||
+ | |||
+ | ====[[Markup and Aliases]]==== | ||
+ | An overview and guide | ||
+ | |||
+ | ====[[Error and Message Handling]]==== | ||
+ | An overview and guide | ||
+ | |||
+ | ====[[Configuration Settings for Developers]]==== | ||
+ | An overview for developers of the config system | ||
+ | |||
+ | ===Developer Documentation=== | ||
+ | |||
+ | The code is documented in detail within the header blocks for each file and the documentation blocks for each function. This doucmentation is in the process of being categorised and grouped for easier reading, but can be consulted at: | ||
+ | |||
+ | ====[[http://ark.lparchaeology.com/ark_phpdoc/li_ark.html PhpDocumenter Output]]==== | ||
+ | Detailed reference material for every function and script in the system - NB this is for ARK v0.7, and has not yet been updated for the latest release(s). | ||
+ | |||
+ | ====[[http://www.phpdoc.org/ PhpDocumenter]]==== | ||
+ | Some info on the software used to create the documentation from the header blocks | ||
+ | |||
+ | [[Category:Developer]] | ||
+ | |||
+ | ===API Documentation=== | ||
+ | |||
+ | As of v1.1 it is possible to access ARK using an API via a URL - which currently responds with a JSON object. | ||
+ | |||
+ | The following methods can be used: | ||
+ | |||
+ | [[describeARK]] - this provides some simple metadata about the ARK instance | ||
+ | |||
+ | [[describeItems]] - this provides a list of all the types of modules available | ||
+ | |||
+ | [[describeFrags]] - this provides a list of all the different types of data available within the ARK instance (it lists the different 'types' of dataclass available | ||
+ | |||
+ | [[describeFilters]] - this provides a list of all available filters | ||
+ | |||
+ | [[describeSubforms]] - this provides a list of available subforms (for transclusion) | ||
+ | |||
+ | [[describeFields]] - this provides a list of available fields | ||
+ | |||
+ | [[getItems]] - this returns an array of items of a specified module | ||
+ | |||
+ | [[getFrags]] - this returns an array of data frags attached to a specified item | ||
+ | |||
+ | [[getFilter]] - this returns the result of a saved filter or a free-text search | ||
+ | |||
+ | [[getFields]] - this returns an array of the fields attached to an item with their values | ||
+ | |||
+ | [[getConcepts]] - this is a wrapper page which retrieves the definition of a particular concept | ||
+ | |||
+ | [[transcludeFilter]] - this returns a fully rendered HTML representation of a filter result | ||
+ | |||
+ | [[transcludeSubform]] - this returns a fully rendered HTML representation of a subform | ||
+ | |||
+ | [[putField]] - this is for putting values to an ARK. Use this for adding, editing or deleting fields | ||
+ | |||
+ | [[XMLParser]] - this is mainly used internally by the spatial elements of ARK to retrieve and present GML data | ||
− | |||
[[Category:Developer]] | [[Category:Developer]] |
Latest revision as of 16:40, 21 October 2016
The developer manual is aimed at people who will be contributing to the project and to a certain extent to those who intend to hack ARK to use it for their own ends. As a general rule, if you find yourself doing extensive hacking, please let us know as we would be happy to consider adding new code to the project.
If you don't know why you are reading this documentation, you are probably looking in the wrong part of the manual. For information on installation and administration see the administrator section of the manual.
Work to create developer documentation including migration of old documentation (Ticket #122) is ongoing (as of 21st Oct 2016) but in the meantime please contact a member of the ARK Development Team if you can't find what you are looking for within these pages.
Contents
Background Reading
ARK model
An incomplete guide to the overall structure of ARK, its file structures etc.
ARK Data Storage
An overview of the ARK data storage model
Filters
An overview of filters and how they work (theoretical)
Standards and Guidance
Coding standards are simple and follow the PEAR system rigidly without exception. See the page blow for further detail. Some further guidance is given below to try to help you build new code in a way that fits into the overall ARK style. This material is incomplete at this stage.
Coding Standards
An overview of the coding standards with a link to PEAR.
Adding a New Page
How to add a new page to the system
Data Entry Pages
How the data entry pages fit together. Possibly needs to be re-written as something more generic
Page Header Block
example code for a page header block. Possibly needs to be made into a more generic code snippets page
Developing Subforms
A brief guide to developing new subforms
Accessing User Information
How to get access to the logged in user's information which is held in the SESSION
ARK log
An overview of the log system with detailed notes (note that this system is currently not fully working)
Markup and Aliases
An overview and guide
Error and Message Handling
An overview and guide
Configuration Settings for Developers
An overview for developers of the config system
Developer Documentation
The code is documented in detail within the header blocks for each file and the documentation blocks for each function. This doucmentation is in the process of being categorised and grouped for easier reading, but can be consulted at:
[PhpDocumenter Output]
Detailed reference material for every function and script in the system - NB this is for ARK v0.7, and has not yet been updated for the latest release(s).
[PhpDocumenter]
Some info on the software used to create the documentation from the header blocks
API Documentation
As of v1.1 it is possible to access ARK using an API via a URL - which currently responds with a JSON object.
The following methods can be used:
describeARK - this provides some simple metadata about the ARK instance
describeItems - this provides a list of all the types of modules available
describeFrags - this provides a list of all the different types of data available within the ARK instance (it lists the different 'types' of dataclass available
describeFilters - this provides a list of all available filters
describeSubforms - this provides a list of available subforms (for transclusion)
describeFields - this provides a list of available fields
getItems - this returns an array of items of a specified module
getFrags - this returns an array of data frags attached to a specified item
getFilter - this returns the result of a saved filter or a free-text search
getFields - this returns an array of the fields attached to an item with their values
getConcepts - this is a wrapper page which retrieves the definition of a particular concept
transcludeFilter - this returns a fully rendered HTML representation of a filter result
transcludeSubform - this returns a fully rendered HTML representation of a subform
putField - this is for putting values to an ARK. Use this for adding, editing or deleting fields
XMLParser - this is mainly used internally by the spatial elements of ARK to retrieve and present GML data