//**This page is in the 'old' namespace, and was imported from our previous wiki.
We recommend checking for more up-to-date information using the search box.**//
====== Explaining plugins ======
[This was written for 2.80 and earlier. Its a little bit out of date for 2.81]
An outline of program flow when using import.pl for developers writing their own plugins:
import.pl calls the methods begin, read then end.
This starts at the import directory.
RecPlug handles directories, and will look through a directory to see what files are there.
These files get passed to the plugin pipeline, first using metadata_read, then read.
* The metadata_read method only gets called from RecPlug. (and MetadataCSVPlug)
All plugins inherit from BasPlug.
* BasPlug inplements the metadata_read and read methods.
* BasPlug read calls the process method.
Most plugins call the BasPLug read method, then do the format specific stuff using their own process method.
* Some plugins override read.
Plugins can implement either read or process (or both).
(Note to self - give examples)
----
===== Types of Plugin =====
There are two types, metadata and document plugins.
* no distinction currently made between them by the system
* All plugins process files, some
* group several files into one document,
* some split one file into several documents, and
* some have a one to one mapping.
* Plugins that split files up generally inherit from splitplug.
* Plugins that process XML files generally inherit from XMLPlug. (They don't need to, it just avoids rewriting all the same code.)
----
===== Operational summaries of example plugins =====
For basic information about plugins see [[Plugins]].
Another good section is [[More_about_plugins#How_do_I_get_my_XML_files_into_Greenstone]]
**MetadataCSVPlugin**
* takes comma separated (.csv) files, extracts metadata (using the metadata_read method)
* assigns metadata to the documents which are then processed by their normal plugin.
* The first line is a list of metadata names
* subsequent lines, one per record, contain the values.
* Requires a **filename** field which contains the file name of the document to which the record metadata will be assigned.
So the contents of a csv file containing 2 records would look as follows (the first line contains the fieldnames):
Filename,ex.dc.title,ex.dc.subject
file1.jpg,example title,example subject
file2.jpg,example title2,example subject2
For example:
Filename,ex.dc.Description,ex.dc.Creator,ex.dc.Subject
ieee.png,copyright policy of IEEE,Jane Smith,copyright
university-coauthorship.png, locations of international co-authors, University of Waikato, authorship
* Use the ex.* prefix before the namespaced metadata names, since Greenstone treats them as metadata it has extracted. This metadata
will appear in GLI's Enrich pane (with the ex.* prefix), but will be ineditable. If you wish to edit them, you need to edit them in
the source CSV file itself and reimport the file.
* If you experience any difficulties when building, try moving the MetadataCSVPlugin above the ExcelPlugin in the Document Plugins list.
* Further information on the MetadataCSVPlugin can be found on the [[MetadataCSVPlug_notes]] page.
**ImagePlugin**
* uses the imagemagic utilities to
* create derivatives(thumbnail images) and,
* extract image metadata (width height format)
* ImagePlug can easily be extended to extract more extensive image metadata if required
**ReferPlugin**
* takes Refer format Bibliographies reads them in (using the process method)
* assigns metadata and text with the add_utf8_metadata or add_metadata methods
* assigns text with the add_text
==== NOTE on methods- order called ====
* **metadata_read**: first to be called - usually by RecPlug - but also by MetadataCSVPlug
* in RecPlug greenstone metadata.xml files are read by the metadata_read method
* in MetadataCSVPlug a .csv text file with the first line containing field names is read by metadata_read
* **read**: called after metadata read
* //process//: called last?
Adding metadata
* add_utf8_metadata adds metadata that is already in utf8
* add_metadata converts to utf8 before adding metadata that is not already in utf8
- Thanks to Katherine Don for this text //Which I have only edited slightly.//