Each component must have a component.json
in JSON format that
describes the main information about itself. The file must be structured
as a single object which corresponds to a PHP array once unserialized
with json_decode()
. Each key/value pair of the object is an array
key/value entry. The format is under development and may change further.
Note that, when using the adminstyle plugin for bibliographic styles, the component.json file is automatically created for you when creating a new style and updated when editing a style.
Description of fields:
Field | Type | M | Description |
---|---|---|---|
component_type | string | Y | Name of a type of component. Must be: plugin, style, or template. |
component_id | string | Y | Component identifier. Must be identical to the name of the root component directory. |
component_version | string | Y | Component public version number: what this number is is up to you. |
component_name | string | Y | Component short name. |
component_longname | string | Y | Component long name. |
component_description | string | Y | Component short description (without line break). Use the README.txt file for long description, notes… |
component_licence | string | N | Component license name or abbreviation (abbreviation recommended). |
component_website | string | N | A single full URL to the maintainer website to use as a link. |
component_sha256 | string | Y | Unique signature corresponding to a sha256 hash of the component files. Use cli-sign-components.php in the top level of the wikindx folder to compute it. |
component_authors | array | N | An array of objects that, unserialized, will be a PHP array of PHP arrays. Each object is an author or contributor. |
author_name | string | Y | Name of the author. |
author_role | string | Y | Role of the author. Something like: developer, packager, translator, tester, maintainer. |
author_copyright | string | Y | Contribution period. E.g. the years: 2004-2017. |
author_email | string | Y | A single email address of the author that could be embedded in a href with mailto. |
author_website | string | Y | A single full URL to the author website/personal page to use as a link. |
Column M indicates a mandatory field: Y=Yes, N=No.
Any additional fields will be ignored.
For the exact syntax of each data type, consult the official format specifications for JSON.
When WIKINDX starts or the components admin panel is opened a
components.json
file is created in the cache folder, and a
components.json
file is created in the data folder.
The file in cache folder, listing all components installed, is an array
of objects in JSON format. Each object is the content of a
component.json file with additional fields. Original component.json
fields remain unchanged.
Field | Type | M | Description |
---|---|---|---|
component_integrity | integer | Y | Error code returned when the component is checked. 0 is OK. Not 0 is an error. |
The file in data folder, listing persistent data of some components, is
an array of objects in JSON format. Each object is a short component
description (component_type + component_id) like a component.json
file
with additional persistent fields. This list can contain data about
components that are no longer installed but that we want to keep for a
future reinstallation. Original component.json fields remain unchanged.
Field | Type | M | Description |
---|---|---|---|
component_status | string | Y | Code status value: enabled or disabled. “enabled”, if the component is executed on WIKINDX startup. |
When the release script release/cli-make-package.php
script is executed, it creates
also a components.json
, listing all components released with the current
core.
As with the previous file, it is an array of objects in JSON format. Each
object is the content of a component.json
file with additional fields,
but different. Original component.json
fields remain unchanged.
Field | Type | M | Description |
---|---|---|---|
component_packages | array | N | Array of object. Each object is the description of a downloadable package of the component. |
package_location | string | Y | A single full URL to a downloadable package in zip format. |
package_sha256 | string | Y | Unique signature corresponding to a sha256 hash of the package generated by make.php. |
package_size | integer | Y | Size in bytes of the package. |
Example of a single component.json
file for the ideagen plugin component:
{
"component_type": "plugin",
"component_id": "ideagen",
"component_version": 647,
"component_updatable": "true",
"component_name": "Idea Generator",
"component_description": "Idea Generator randomly selects and displays two items of metadata (quotes, paraphrases, musings, or ideas) in the hope that the new juxtaposition might lead to serendipity.",
"component_licence": "ISC License",
"component_authors": [
{
"author_name": "Mark Grimshaw-Aagaard",
"author_role": "Developer",
"author_copyright": "2021-2022",
"author_email": "sirfragalot@users.sourceforge.net",
"author_website": "https://vbn.aau.dk/en/persons/126217"
},
{
"author_name": "Stéphane Aulery",
"author_role": "Developer",
"author_copyright": "2021",
"author_email": "lkppo@users.sourceforge.net",
"author_website": "http://saulery.legtux.org/"
}
],
"component_sha256": "3d8240986da289292d851d19caad87f46126cb5a80d9378a338faef3f87f905c"
}
Example of a data/components.json
file:
[
{
"component_type": "style",
"component_id": "apa",
"component_status": "enabled"
},
{
"component_type": "template",
"component_id": "default",
"component_status": "enabled"
},
{
"component_type": "plugin",
"component_id": "ideagen",
"component_status": "enabled"
}
]
Example of a cache/components.json
file extract:
[
{
"component_type": "plugin",
"component_id": "chooselanguage",
"component_version": "181",
"component_name": "Choose Language",
"component_longname": "Choose Language on the fly",
"component_description": "Display a drop-down menu on all pages to choose the language of the interface. This is useful if your website is hosted on the web and on public access.",
"component_licence": "ISC License",
"component_authors": [
{
"author_name": "Stéphane Aulery",
"author_role": "Translator",
"author_copyright": "2017-2019",
"author_email": "lkppo@users.sourceforge.net",
"author_website": "http://saulery.legtux.org/"
}
],
"component_sha256": "fff4092a9c602efe4e11bb2d68d1ca2afe6a6e7a40f4881d16b10ba11a12e474",
"component_integrity": 0
},
{
"component_type": "style",
"component_id": "apa",
"component_version": "53",
"component_name": "APA",
"component_longname": "American Psychological Association (APA)",
"component_description": "American Psychological Association (APA) (installed by default). APA is an author/date based style. This means emphasis is placed on the author and the date of a piece of work to uniquely identify it.",
"component_licence": "ISC License",
"component_website": "https://apastyle.apa.org",
"component_authors": [
{
"author_name": "Mark Grimshaw-Aagaard",
"author_role": "Compiler",
"author_copyright": "2005",
"author_email": "sirfragalot@users.sourceforge.net",
"author_website": "https://vbn.aau.dk/en/persons/126217"
}
],
"component_sha256": "af1ba8aa15c62d0ae9a2ce9dbe598d9001fab81451a7b10cf511d5ba26b6d25d",
"component_integrity": 0
}
]
Example of a component.json
file extract from the update server
generated by the make.php script:
[
{
"component_version": "181",
"component_licence": "ISC License",
"component_description": "Display a drop-down menu on all pages to choose the language of the interface. This is useful if your website is hosted on the web and on public access.",
"component_name": "Choose Language",
"component_longname": "Choose Language on the fly",
"component_sha256": "dc79b8c5e4f303fa242345df5ee734598972c56406191d14e946d81b0ec2bde7",
"component_id": "chooselanguage",
"component_type": "plugin",
"component_authors": [
{
"author_name": "Stéphane Aulery",
"author_role": "Translator",
"author_copyright": "2017-2019",
"author_email": "lkppo@users.sourceforge.net",
"author_website": "http://saulery.legtux.org/"
}
],
"component_packages": [
{
"package_location": "https://sourceforge.net/projects/wikindx/files/archives/5.9.1/components/wikindx_5.9.1_plugin_chooselanguage.zip",
"package_sha256": "afb5fad76f2c5ce810653988792462352bab0dfe17f8f6065bbefc2f10f983b5",
"package_size": 47372
}
]
},
{
"component_version": "53",
"component_sha256": "5b8c8f37c8f46f67ff6d80ae2b1c6901c6c82b599c34ca387b2b31fd27433fb0",
"component_licence": "ISC License",
"component_name": "APA",
"component_longname": "American Psychological Association (APA)",
"component_description": "American Psychological Association (APA) (installed by default). APA is an author/date based style. This means emphasis is placed on the author and the date of a piece of work to uniquely identify it.",
"component_id": "apa",
"component_type": "style",
"component_authors": [
{
"author_name": "Mark Grimshaw-Aagaard",
"author_role": "Compiler",
"author_copyright": "2005",
"author_email": "sirfragalot@users.sourceforge.net",
"author_website": "https://vbn.aau.dk/en/persons/126217"
}
],
"component_packages": [
{
"package_location": "https://sourceforge.net/projects/wikindx/files/archives/5.9.1/components/wikindx_5.9.1_style_apa.zip",
"package_sha256": "f86dde75e51816c8c25c2e6ef34b21a462a5b23273978f5692546e6bf9f8c8d6",
"package_size": 32241
}
]
}
]
From code 6.6.0, the support of vendor components type is removed. Vendor components have been merged with core.
From code 6.4.11, the component_builtin and component_updatable fields have been removed. From code 6.3.5, the support of language components type is removed. Translations are stored in core and plugin components directly.