Ferreteria/v0.5/dropin: Difference between revisions
< Ferreteria | v0.5
Jump to navigation
Jump to search
Line 35: | Line 35: | ||
These classes make heavy use of the {{l/same|ClassLoader}} system. | These classes make heavy use of the {{l/same|ClassLoader}} system. | ||
* '''csDropinManager''': static class which runs the whole process; analogous (but not related) to '''csLoader''' | * '''csDropinManager''': static class which runs the whole process; analogous (but not related) to '''csLoader''' | ||
* '''cDropIndex''' | * '''cDropIndex''' manages the Dropin library's index file (typically index.dropin.php); descends from '''caLibrary''' | ||
** '''cDropinLink''' displays the Feature link, if the user has permission to access it | |||
===URL interpretation=== | ===URL interpretation=== | ||
* '''cDropinLink''' | * '''cDropinLink''' |
Revision as of 16:30, 12 March 2022
A dropin is a collection of code-files which can be included in a Ferreteria project by simply being "dropped in" to the appropriate folder (as designated by the local configuration). Each dropin must have an index file which tells Ferreteria what classes, actions, files, etc. are involved.
Files/Classses
- base/dropin.php for dropin-specific loading
csDropinManager
: the Dropin ManagercDropIndex
: encapsulates a single Dropin Index file
- loader/ClassLoader.php (see ClassLoader) for generic class registration
Process
loading
- The Dropin Manager looks through each subfolder within the dropins folder.
- For each folder found,
csDropInManager::CheckFolder()
checks for an index file. - If the index file is found, it creates a
crcDropIndex
object and calls(crcDropIndex)->ProcessIndex()
->ProcessIndex()
- loads the
$arDropin
data into acrcDropIndex
object, which more or less encapsulates it. - calls
->RegisterClasses()
, which processes the Dropin array's 'classes' subarray - calls
->RegisterMenuBits()
, which processes the Dropin array's 'actions' subarray
- loads the
display
- The Navbar shows only Features that the current user has permission to access.
- BUG: It will show Dropins for which there are no Features that the user has permission to access.
cMenuFolder
(tree/nav/MenuFolder.php) manages the display of each Dropin and its Features.
- The Software Feature in the Basics dropin displays a list of all available Modules and Dropins.
URL interpretation
- in
cArrayLink
( tree/items/ArrayLink.php):- GetLinkURL() calls GetLinkArray()
- GetLinkArray() calls GetLinkArray_figured()
- GetLinkArray_figured() calls cDropinLink→GetLinkArray_self()
- in cDropinLink tree/menu/DropinLink.php):
- OnEventAfter() calls PageEvent(); Render() calls AddPageRendering();
- PageEvent(), AddPageRendering(), and GetLinkArray_self() each call MakeActionObject() to get the table or record to act on.
- MakeActionObject() looks up a record or table object from the URL, and returns the result.
Classes
loading/display
These classes make heavy use of the ClassLoader system.
- csDropinManager: static class which runs the whole process; analogous (but not related) to csLoader
- cDropIndex manages the Dropin library's index file (typically index.dropin.php); descends from caLibrary
- cDropinLink displays the Feature link, if the user has permission to access it
URL interpretation
- cDropinLink
- cDropinAction
- value\cDropin
Index File
By convention, the index file is named index.dropin.php
; this name can be changed via the global settings object. The index file's primary task is to define the $arDropin
array, with the following elements:
- name: the name of the dropin
- descr: one-line description
- version: version number
- date: release date, in YYYY-MM-DD format
- URL: full URL to documentation
- db.spec: name of class for database spec (must descend from cDatabaseSpec)
- If omitted, uses the site's default db spec.
- if NULL, Tabloid class is constructed without a db.
- section: array which defines how the dropin will be listed in the dropins bar
- title: what to display at the top of the section
- popup: (optional) text to appear when mouse hovers over the dropin name
- actions: array of items to appear within the section
- array[<item key>]: indexed array of information for a single actionable item
class: name of action class to invoke- feature: slug for Feature class (singleton object) (replaces "class")
- text: text to display in section listing
- summary: one-line description of item (used for hover-over text but may appear in other places)
- perms: permits required in order to invoke this item. If user lacks permission, item will not be displayed.
- array[<item key>]: indexed array of information for a single actionable item
- classes: array of files and the classes they contain
- array[<relative filespec>]: collection array of classes available in the given code-file