-= Backing up your Evergreen System =
+== Backing up your Evergreen System ==
-== Database backups ==
+=== Database backups ===
Although it might seem pessimistic, spending some of your limited time preparing for disaster is one of
the best investments you can make for the long-term health of your Evergreen system. If one of your
or additional functionality. This section describes how to back up your data so that you or a colleague
can help you recover from various disaster scenarios.
-=== Creating logical database backups ===
+==== Creating logical database backups ====
The simplest method to back up your PostgreSQL data is to use the `pg_dump` utility to create a logical
backup of your database. Logical backups have the advantage of taking up minimal space, as the indexes
You should establish a routine of nightly logical backups of your database, with older logical backups
being automatically deleted after a given interval.
-=== Restoring from logical database backups ===
+==== Restoring from logical database backups ====
To increase your confidence in the safety of your data, you should regularly test your ability to
restore from a logical backup. Restoring a logical backup that you created using the custom format
to restore the logical backup from a file named evergreen_20121212.dump into the "testrestore"
database on a system with 2 CPU cores: `pg_restore -j 2 -d testrestore evergreen_20171212.dump`
-=== Creating physical database backups with support for point-in-time recovery ===
+==== Creating physical database backups with support for point-in-time recovery ====
While logical database backups require very little space, they also have the disadvantage of
taking a great deal of time to restore for anything other than the smallest of Evergreen systems.
to any point in time over the past four weeks, you might take physical backups at weekly intervals,
keeping the last four physical backups and all of the corresponding WAL segments.
-=== Creating a replicated database ===
+==== Creating a replicated database ====
If you have a separate server that you can use to run a replica of your database, consider
replicating your database to that server. In the event that your primary database server suffers a
-= Phonelist.pm Module =
+== Phonelist.pm Module ==
-== Introduction ==
+=== Introduction ===
PhoneList.pm is a mod_perl module for Apache that works with Evergreen
to generate callings lists for patron holds or overdues. It outputs a csv file
The following sections provide more information on getting what you want in your output.
-== Adding Parameters ==
+=== Adding Parameters ===
If you are not familiar with HTTP/URL query strings, the format is
quite simple.
Any misspelled or parameters not listed in the table above will be
ignored by the program.
-== Output ==
+=== Output ===
On a successful run, the program will return a CSV file named
phone.csv. Depending on your browser or settings you will alternately
holds or overdues. The specific contents are described in the
appropriate sections below.
-== Holds ==
+=== Holds ===
The `phonelist` program will return a list of patrons with items on
hold by default, so long as you do not use the `overdue`
| Count | Number of items on hold, if `addcount` parameter is used, otherwise this column is not present in the file.
|=====================================
-== Overdues ==
+=== Overdues ===
If you add the `overdue` parameter, you can get a list of patrons with
overdue items instead of a list of patrons with items on the hold
| Titles | A colon-separated list of titles that the patron has overdue.
|=================================
-== Skipping patrons with email notification of holds ==
+=== Skipping patrons with email notification of holds ===
Skipping patrons who have email notification for their holds or
overdues is very simple. You just need to add the `skipemail`
request email notification on all of their current holds. In practice,
we find that this is usually the case.
-== Using the ws_ou parameter ==
+=== Using the ws_ou parameter ===
Generally, you will not need to use the ws_ou parameter when using the
phonelist program. The phonelist will look up the branch where your
to specify which branch, or the whole system, you wish to search when
running the program.
-== Automating the download ==
+=== Automating the download ===
If you'd like to automate the download of these files, you should be
able to do so using any HTTP programming toolkit. Your client must
-= Designing the patron search experience =
+== Designing the patron search experience ==
Editing the formats select box options in the search interface
---------------------------------------------------------------
{adv_label => l("Our Library's Field"), adv_filter => "facet_group_code"},
----
-== Changing the display of facets and facet groups ==
+=== Changing the display of facets and facet groups ===
Facets can be reordered on the search results page by editing the
_opac/parts/config.tt2_ file in your template directory.
by editing the _facet.default_display_count_ value in _config.tt2_. The default
value is 5.
-== Facilitating search scope changes ==
+=== Facilitating search scope changes ===
Users often search in a limited scope, such as only searching items in their
local library. When they aren't able find materials that meet their needs in
-== Patron privacy and the SIP protocol ==
+=== Patron privacy and the SIP protocol ===
SIP traffic includes a lot of patron information, and is not
encrypted by default. It is strongly recommended that you
encrypt any SIP traffic.
-=== SIP server configuration ===
+==== SIP server configuration ====
On the SIP server, use `iptables` or `etc/hosts` to allow SSH connections on port 22 from the SIP client machine. You will probably want to have very restrictive rules
on which IP addresses can connect to this server.
-=== SSH tunnels on SIP clients ===
+==== SSH tunnels on SIP clients ====
SSH tunnels are a good fit for use cases like self-check machines, because it is relatively easy to automatically open the connection. Using a VPN is another option,
but many VPN clients require manual steps to open the VPN connection.
* System Configuration and Customization
** xref:admin_initial_setup:introduction.adoc[Introduction]
-:leveloffset: 1
** xref:admin_initial_setup:describing_your_organization.adoc[]
** xref:admin_initial_setup:describing_your_people.adoc[]
** xref:admin_initial_setup:migrating_patron_data.adoc[]
** xref:admin_initial_setup:different_styles_for_searchbar.adoc[]
** xref:admin:search_interface.adoc[]
** xref:admin_initial_setup:borrowing_items.adoc[]
-:leveloffset: 0
** xref:admin:autorenewals.adoc[]
** xref:admin_initial_setup:hard_due_dates.adoc[]
** xref:admin:template_toolkit.adoc[]
-:leveloffset: 1
** xref:opac:new_skin_customizations.adoc[]
-:leveloffset: 0
** xref:admin:auto_suggest_search.adoc[]
** xref:admin:authentication_proxy.adoc[]
-:leveloffset: 1
-** xref:TechRef:KidsOPAC.adoc[]
-:leveloffset: 0
+** xref:admin_initial_setup:KidsOPAC.adoc[]
** xref:admin:patron_address_by_zip_code.adoc[]
-:leveloffset: 1
** xref:admin:phonelist.adoc[]
-:leveloffset: 0
** xref:admin:sip_server.adoc[]
-:leveloffset: 1
** xref:admin:sip_privacy.adoc[]
-:leveloffset: 0
** xref:admin:apache_rewrite_tricks.adoc[]
** xref:admin:apache_access_handler.adoc[]
** xref:admin:ebook_api_service.adoc[]
** xref:admin:hold_targeter_service.adoc[]
-:leveloffset: 1
** xref:admin:backups.adoc[]
-:leveloffset: 0
-= Borrowing items: who, what, for how long =
+== Borrowing items: who, what, for how long ==
Circulation policies pull together user, library, and item data to determine how
library materials circulate, such as: which patrons, from what libraries can
interfaces, and should be configured prior to setting up the circulation
policies.
-== Data elements that affect your circulation policies ==
+=== Data elements that affect your circulation policies ===
There are a few data elements which must be considered when setting up your
circulation policies.
-=== Copy data ===
+==== Copy data ====
Several fields set via the holdings editor are commonly used to affect the
circulation of an item.
* *Reference?* flag - The reference? flag in the holdings editor can also be used as
a data element in circulation policies.
-=== Shelving location data ===
+==== Shelving location data ====
* To get to the Shelving Locations Editor, navigate to *Administration ->
Local Administration -> Shelving Locations Editor*.
* Shelving locations can also be used as a data element in circulation policies.
-=== User data ===
+==== User data ====
Finally, several characteristics of specific patrons can affect circulation
policies. You can modify these characteristics in a patron's record (*Search ->
* Other user data that can be used for circulation policies include the
*juvenile* flag in the user record.
-== Circulation Rules ==
+=== Circulation Rules ===
*Loan duration* describes the length of time for a checkout. You can also
identify the maximum renewals that can be placed on an item.
does. This will make it easier to select the correct rule when creating your
circ policies.
-=== Circulation Limit Sets ===
+==== Circulation Limit Sets ====
Circulation Limit Sets allow you to limit the maximum number of items for
different types of materials that a patron can check out at one time. Evergreen
*Min Depth* field and select the *Global* flag. Add the DVD, BLURAY and VHS circ
modifiers to the limit set.
-== Creating Circulation Policies ==
+=== Creating Circulation Policies ===
Once you have identified your data elements that will drive circulation policies
and have created your circulation rules, you are ready to begin creating your
and circulation sets created in the above sets when creating the circulation
policy.
-=== Best practices for creating policies ===
+==== Best practices for creating policies ====
* Start by replacing the default consortium-level circ policy with one that
contains a majority of your libraries' duration, recurring fine, and max fine
is not circulated. However, now we have added new rules that state that "Adult"
patrons of "SYS1" can circulate "dvd" items.
-=== Settings Relevant to Circulation ===
+==== Settings Relevant to Circulation ====
The following circulation settings, available via *Administration
-> Local Administration -> Library Settings Editor*, can
-= Describing your organization =
+== Describing your organization ==
Your Evergreen system is almost ready to go. You'll need to add each of the
libraries that will be using your Evergreen system. If you're doing this for a
will appear in the hierarchy list below the parent unit. Click on the new unit
and edit the data, click *Save*
-=== Organizational Unit data ===
+==== Organizational Unit data ====
The *Addresses* tab allows you to enter library contact information. Library
Phone number, email address, and addresses are used in patron email
notifications, hold slips, and transit slips. The Library address tab is broken
and other closures are set in the *Closed Dates Editor*. Hours of operation and
closed dates impact due dates and fine accrual.
-=== After Changing Organization Unit Data ===
+==== After Changing Organization Unit Data ====
After you change Org Unit data, you must run the autogen.sh script.
This script updates the Evergreen organization tree and fieldmapper IDL.
-= Describing your people =
+== Describing your people ==
Many different members of your staff will use your Evergreen system to perform
the wide variety of tasks required of the library.
referred to as a working organizational unit or work OU) which affects where a
particular user can exercise the permissions they have been granted.
-== Setting the staff user's working location ==
+=== Setting the staff user's working location ===
To grant a working location to a staff user in the staff client:
. Search for the patron. Select *Search > Search for Patrons* from the top menu.
to this user. Depending on your own permissions, you may also have the ability
to grant individual permissions directly to this user.
-== Comparing approaches for managing permissions ==
+=== Comparing approaches for managing permissions ===
The Evergreen community uses two different approaches to deal with managing
permissions for users:
permission group in line with what your library, or possibly your consortium,
defines as the appropriate needs for each function in the library.
-== Managing permissions in the staff client ==
+=== Managing permissions in the staff client ===
In this section, we'll show you in the staff client:
* where to find the available permissions
some essential groups. You can compare the existing permissions with these
suggested permissions and, if any are missing, you will know how to add them.
-=== Where to find existing permissions and what they mean ===
+==== Where to find existing permissions and what they mean ====
In the staff client, in the upper right corner of the screen, click on
*Administration > Server Administration > Permissions*.
permission allows. All of the most common permissions have easily
understandable descriptions.
-=== Where to find existing Permission Groups ===
+==== Where to find existing Permission Groups ====
In the staff client, in the upper right corner of the screen, navigate to
*Administration > Server Administration > Permission Groups*.
Groups that were listed at the beginning of this chapter. If you do not and you
need them, you will have to create them.
-=== Adding or removing permissions from a Permission Group ===
+==== Adding or removing permissions from a Permission Group ====
First, we will remove a permission from the Staff group.
. From the list of Permission Groups, click on *Staff*.
If you have saved your changes and you don't see them, you may have to click
the Reload button in the upper left side of the staff client screen.
-== Managing role-based permission groups in the staff client ==
+=== Managing role-based permission groups in the staff client ===
Main permission groups are granted in the staff client through Edit in the patron record using the Main (Profile) Permission Group field. Additional permission
groups can be granted using secondary permission groups.
[[secondaryperms]]
-=== Secondary Group Permissions ===
+==== Secondary Group Permissions ====
The _Secondary Groups_ button functionality enables supplemental permission
groups to be added to staff accounts. The *CREATE_USER_GROUP_LINK* and
In general when creating a secondary permission group do not grant the
permission to login to Evergreen.
-==== Granting Secondary Permissions Groups ====
+===== Granting Secondary Permissions Groups =====
. Open the account of the user you wish to grant secondary permission group to.
. Click _Save_ in the top right hand corner of the _Edit Screen_ to save the user's account.
-==== Removing Secondary Group Permissions ====
+===== Removing Secondary Group Permissions =====
. Open the account of the user you wish to remove the secondary permission group from.
. Click _Edit_.
. Click _Secondary Groups_, located to the right of the _Main (Profile) Permission Group_.
+
. Click _Save_ in the top right hand corner of the _Edit Screen_ to save the user's account.
-== Managing role-based permission groups in the database ==
+=== Managing role-based permission groups in the database ===
While the ability to assign a user to multiple permission groups has existed in
Evergreen for years, a staff client interface is not currently available to
facilitate the work of the Evergreen administrator. However, if you or members
-= Designing your catalog =
+== Designing your catalog ==
When people want to find things in your Evergreen system, they will check the
catalog. In Evergreen, the catalog is made available through a web interface,
In this chapter, we'll show you how to customize the OPAC, change it from its
default configuration, and make it your own.
-== Configuring and customizing the public interface ==
+=== Configuring and customizing the public interface ===
The public interface is referred to as the TPAC or Template Toolkit (TT) within
the Evergreen community. The template toolkit system allows you to customize the
look and feel of your OPAC by editing the template pages (.tt2) files as well as
the associated style sheets.
-=== Locating the default template files ===
+==== Locating the default template files ====
The default URL for the TPAC on a default Evergreen system is
_http://localhost/eg/opac/home_ (adjust _localhost_ to match your hostname or IP
than touching the installed templates until you are ready to commit the changes
to a branch. See below for information on template overrides.
-=== Mapping templates to URLs ===
+==== Mapping templates to URLs ====
The mapping for templates to URLs is straightforward. Following are a few
examples, where _<templates>_ is a placeholder for one or more directories that
----
Note that file references are relative to the top of the template directory.
-=== How to override template files ===
+==== How to override template files ====
Overrides for template files or TPAC pages go in a directory that parallels the
structure of the default templates directory. The overrides then get pulled in
bash$ vim /openils/var/templates_custom/opac/advanced.tt2
----
-=== Configuring the custom templates directory in Apache's eg.conf ===
+==== Configuring the custom templates directory in Apache's eg.conf ====
You now need to teach Apache about the new custom template directory. Edit
_/etc/apache2/sites-available/eg.conf_ and add the following _<Location /eg>_
be able to see your change at _http://localhost/eg/opac/advanced_ where
_localhost_ is the hostname of your Evergreen server.
-=== Adjusting colors for your public interface ===
+==== Adjusting colors for your public interface ====
You may adjust the colors of your public interface by editing the _colors.tt2_
file. The location of this file is in
template folder and edit the custom file and not the file located in your default
template.
-=== Adjusting fonts in your public interface ===
+==== Adjusting fonts in your public interface ====
Font sizes can be changed in the _colors.tt2_ file located in
_/openils/var/templates/opac/parts/css/_. Again, create and edit a custom
Other aspects of fonts such as the default font family can be adjusted in
_/openils/var/templates/opac/css/style.css.tt2_.
-=== Media file locations in the public interface ===
+==== Media file locations in the public interface ====
The media files (mostly PNG images) used by the default TPAC templates are stored
in the repository in _Open-ILS/web/images/_ and installed in
_/openils/var/web/images/_.
-=== Changing some text in the public interface ===
+==== Changing some text in the public interface ====
Out of the box, TPAC includes a number of placeholder text and links. For
example, there is a set of links cleverly named Link 1, Link 2, and so on in the
Once the link and link text has been edited to your satisfaction, load the page
in a Web browser and see the live changes immediately.
-=== Adding translations to PO file ===
+==== Adding translations to PO file ====
After you have added custom text in translatable form to a TT2 template, you need to add the custom strings and its translations to the PO file containing the translations. Evergreen PO files are stored in _/openils/var/template/data/locale/_
service apache2 restart
----
-=== Adding and removing MARC fields from the record details display page ===
+==== Adding and removing MARC fields from the record details display page ====
It is possible to add and remove the MARC fields and subfields displayed in the
record details page. In order to add MARC fields to be displayed on the details
can also be used to display MARC fields in other pages, such as your results
page.
-==== Using bibliographic source variables ====
+===== Using bibliographic source variables =====
For bibliographic records, there is a "bib source" that can be associated with
every record. This source and its ID are available as record attributes called
****
-== Setting the default physical location for your library environment ==
+=== Setting the default physical location for your library environment ===
_physical_loc_ is an Apache environment variable that sets the default physical
location, used for setting search scopes and determining the order in which
SetEnv physical_loc 104
----
-== Setting a default language and adding optional languages ==
+=== Setting a default language and adding optional languages ===
_OILSWebLocale_ adds support for a specific language. Add this variable to the
Virtual Host section in _/etc/apache2/eg_vhost.conf_.
*American English is built into Evergreen so you do not need to set up this
language and there are no PO files.
-=== Updating translations in Evergreen using current translations from Launchpad ===
+==== Updating translations in Evergreen using current translations from Launchpad ====
Due to Evergreen release workflow/schedule, some language strings may already have been translated in Launchpad,
but are not yet packaged with Evergreen. In such cases, it is possible to manually replace the PO file in
service apache2 restart
----
-== Change Date Format in Patron Account View ==
+=== Change Date Format in Patron Account View ===
Libraries with same-day circulations may want their patrons to be able to view
the due *time* as well as due date when they log in to their OPAC account. To
accomplish this, go to _opac/myopac/circs.tt2_. Find the line that reads:
----
-== Including External Content in Your Public Interface ==
+=== Including External Content in Your Public Interface ===
The public interface allows you to include external services and content in your
public interface. These can include book cover images, user reviews, table of
The following are some of the external content services which you can configure
in Evergreen.
-=== OpenLibrary ===
+==== OpenLibrary ====
The default install of Evergreen includes OpenLibrary book covers. The settings
for this are controlled by the <added_content> section of
of the record.summary.jacket_size. The default value is "medium" and the
available options are "small", "medium" and "large."
-=== ChiliFresh ===
+==== ChiliFresh ====
ChiliFresh is a subscription-based service which allows book covers, reviews and
social interaction of patrons to appear in your catalog. To activate ChiliFresh,
in opensrf.xml. When the option is present, only the identifier(s) listed will
be sent.
-=== Obalkyknih.cz ===
+==== Obalkyknih.cz ====
-==== Setting up Obalkyknih.cz account ====
+===== Setting up Obalkyknih.cz account =====
If your library wishes to use added content provided by Obalkyknih.cz, a service based in the Czech Republic, you have to http://obalkyknih.cz/signup[create an Obalkyknih.cz account].
Please note that the interface is only available in Czech. After logging in your Obalkyknih.cz account, you have to add your IP address and Evergreen server address to your account settings.
(In case each library uses an address of its own, all of these addresses have to be added.)
-==== Enabling Obalkyknih.cz in Evergreen ====
+===== Enabling Obalkyknih.cz in Evergreen =====
Set obalkyknih_cz.enabled to true in '/openils/var/templates/opac/parts/config.tt2':
----
-=== Google Analytics ===
+==== Google Analytics ====
Google Analytics is a free service to collect statistics for your Evergreen
site. Statistic tracking is disabled by default through the Evergreen
the value of google_analytics.enabled to true and change the value of
_google_analytics.code_ to be the code in your Google Analytics account.
-=== NoveList ===
+==== NoveList ====
Novelist is a subscription-based service providing reviews and recommendation
for books in you catalog. To activate your Novelist service in Evergreen, open
You should use the URL provided by NoveList.
-=== RefWorks ===
+==== RefWorks ====
RefWorks is a subscription-based online bibliographic management tool. If you
have a RefWorks subscription, you can activate RefWorks in Evergreen by editing
the _ctx.refworks.enabled_ value to _true_. You may also set the RefWorks URL by
changing the _ctx.refworks.url_ setting on the same file.
-=== SFX OpenURL Resolver ===
+==== SFX OpenURL Resolver ====
An OpenURL resolver allows you to find electronic resources and pull them into
your catalog based on the ISBN or ISSN of the item. In order to use the SFX
change the _openurl.baseurl_ setting to point to the URL of your OpenURL
resolver.
-=== Syndetic Solutions ===
+==== Syndetic Solutions ====
Syndetic Solutions is a subscription service providing book covers and other
data for items in your catalog. In order to activate Syndetic, edit the
* ISSN
-=== Clear External/Added Content Cache ===
+==== Clear External/Added Content Cache ====
On the catalog's record summary page, there is a link for staff that will forcibly clear
the cache of the Added Content for that record. This is helpful for when the Added Content
Added Content Supplier.
-=== Configure a Custom Image for Missing Images ===
+==== Configure a Custom Image for Missing Images ====
You can configure a "no image" image other than the standard 1-pixel
blank image. The example eg_vhost.conf file provides examples in the
comments. Note: Evergreen does not provide default images for these.
-== Including Locally Hosted Content in Your Public Interface ==
+=== Including Locally Hosted Content in Your Public Interface ===
It is also possible to show added content that has been generated locally
by placing the content in a specific spot on the web server. It is
possible to have local book jackets, reviews, TOC, excerpts or annotations.
-=== File Location and Format ===
+==== File Location and Format ====
By default the files will need to be placed in directories under
*/openils/var/web/opac/extras/ac/* on the server(s) that run Apache.
- others, one of html, xml or json ... html is the default for non-image added content
* *recordid* is the bibliographic record id (bre.id).
-=== Example ===
+==== Example ====
If you have some equipment that you are circulating such as a
laptop or eBook reader and you want to add an image of the equipment
-== Styling the searchbar on the homepage ==
+=== Styling the searchbar on the homepage ===
The `.searchbar-home` class is added to the div that
contains the searchbar when on the homepage. This allows
-= Importing materials in the staff client =
+== Importing materials in the staff client ==
Evergreen exists to connect users to the materials represented by bibliographic
records, call numbers, and copies -- so getting these materials into your
for large batches of records such as the initial migration from your legacy
library system.
-== Staff client batch record imports ==
+=== Staff client batch record imports ===
The staff client has a utility for importing batches of bibliographic and item
records available through *Cataloging > MARC Batch Import/Export*. In addition
to importing new records, this interface can be used to match incoming records
For instance, when you click on the *Record Match Sets*, the title on the screen
will be *Vandelay Match Sets*.
-=== When to use the MARC Batch Importer ===
+==== When to use the MARC Batch Importer ====
* When importing in batches of up to 500 to 1,000 records.
* When you need the system to match those incoming records to existing records
must enable the _Vandelay Generate Default Barcodes_ and _Vandelay Default
Barcode Prefix (vandelay.item.barcode.prefix)_ settings.
-=== Record Match Sets ===
+==== Record Match Sets ====
Click the *Record Match Sets* button to identify how Evergreen should match
incoming records to existing records in the system.
* MARC tag 024a (UPC)
* MARC tag 028a (Publisher number)
-=== Create Match Sets ===
+==== Create Match Sets ====
. On the *Record Match Sets* screen, click *New Match Set* to create a set of
record match points. Give the set a *Name*. Assign the *Owning Library* from
the dropdown list. The *Match Set Type* should remain as *biblio*. Click
image::media/create_match_sets.png[Creating a Match Point]
. Click *Save Changes to Expression*.
-=== Quality Metrics ===
+==== Quality Metrics ====
* Quality metrics provide a mechanism for Evergreen to measure the quality of
records and to make importing decisions based on quality.
* Metrics are configured in the match set editor.
image::media/record_quality_metrics.png[Quality Metric Grid]
-=== Import Item Attributes ===
+==== Import Item Attributes ====
If you are importing items with your records, you will need to map the data in
your holdings tag to fields in the item record. Click the *Holdings Import
Profile* button to map this information.
image::media/batch_import_profile.png[Partial Screenshot of a Holdings Import Profile]
-=== Overlay/Merge Profiles ===
+==== Overlay/Merge Profiles ====
If Evergreen finds a match for an incoming record in the database, you need to
identify which fields should be replaced, which should be preserved, and which
should be added to the record. Click the *Merge/Overlay Profiles* button to
You can add multiple tags to these specifications, separating each tag with a
comma.
-=== Importing the records ===
+==== Importing the records ====
After making the above configurations, you are now ready to import your
records.
-= Migrating Patron Data =
+== Migrating Patron Data ==
-== Introduction ==
+=== Introduction ===
This section will explain the task of migrating your patron data from comma
delimited files into Evergreen. It does not deal with the process of exporting
This assumes 1 address per patron. More complex scenarios may require more sophisticated SQL.
-== Creating an sql Script for Importing Patrons ==
+=== Creating an sql Script for Importing Patrons ===
The procedure for importing patron can be automated with the help of an sql script. Follow these
steps to create an import script:
database is rolled back to its original state. Lines beginning with -- are
comments to let you you what each sql statement is doing and are not processed.
-== Batch Updating Patron Data ==
+=== Batch Updating Patron Data ===
For academic libraries, doing batch updates to add new patrons to the Evergreen
database is a critical task. The above procedures and import script can be
-= Migrating from a legacy system =
+== Migrating from a legacy system ==
-== Introduction ==
+=== Introduction ===
When you migrate to Evergreen, you generally want to migrate the bibliographic
records and item information that existed in your previous library system. For
then the following section will guide you towards a method of generating common
data formats so that you can then load the data into the database in bulk.
-== Making electronic resources visible in the catalog ==
+=== Making electronic resources visible in the catalog ===
Electronic resources generally do not have any call number or item information
associated with them, and Evergreen enables you to easily make bibliographic
records visible in the public catalog within sections of the organizational
load the records using either the command-line bulk import method or the MARC
Batch Importer in the staff client.
-== Migrating your bibliographic records ==
+=== Migrating your bibliographic records ===
Convert your MARC21 binary records into the MARCXML format, with one record per
line. You can use the following Python script to achieve this goal; just
install the _pymarc_ library first, and adjust the values of the _input_ and
-= Ordering materials =
+== Ordering materials ==
-== Introduction ==
+=== Introduction ===
Acquisitions allows you to order materials, track the expenditure of your
collections funds, track invoices and set up policies for manual claiming. In
this chapter, we're going to be describing how to use the most essential
functions of acquisitions in the Evergreen system.
-== When should libraries use acquisitions? ==
+=== When should libraries use acquisitions? ===
* When you want to track spending of your collections budget.
* When you want to use Evergreen to place orders electronically with your
vendors.
with acquisitions. At a minimum, a library must configure *Funding Sources*,
*Funds*, and *Providers* to use acquisitions.
-== Managing Funds ==
+=== Managing Funds ===
-=== Funding Sources (Required) ===
+==== Funding Sources (Required) ====
Funding sources allow you to specify the sources that contribute monies to your
fund(s). You can create as few or as many funding sources as you need. These
can be used to track exact amounts for accounts in your general ledger.
hyperlinked name of the funding source and then click the *Apply Credit*
button. Add the amount of funds you need to add. The *Note* field is optional.
-=== Funds (Required) ===
+==== Funds (Required) ====
Funds allow you to allocate credits toward specific purchases. They typically
are used to track spending and purchases for specific collections. Some
libraries may choose to define very broad funds for their collections (e.g.
*Funding Source* from which the allocation will be drawn and then enter an
amount for the allocation. The *Note* field is optional.
-=== Fund Tags (Optional) ===
+==== Fund Tags (Optional) ====
You can apply tags to funds so that you can group funds for easy reporting. For
example, you have three funds for children’s materials: Children's Board Books,
Children's DVDs, and Children's CDs. Assign a fund tag of children's to each
For convenience when propagating or rolling over a fund for a new fiscal year,
fund tags will be copied from the current fund to the new year's fund.
-== Ordering ==
+=== Ordering ===
-=== Providers (Required) ===
+==== Providers (Required) ====
Providers are the vendors from whom you order titles.
. To add a provider record, select *Administration -> Acquisitions Administration ->
*Provider Name*, *Code*, *Owner*, and *Currency*. You also need to select the
*Active* checkbox to use the provider.
-=== Distribution Formulas (Optional) ===
+==== Distribution Formulas (Optional) ====
If you are ordering for a multi-branch library system, distribution formulas
are a useful way to specify the number of items that should be distributed to
specific branches and item locations.
the right side of the field.
. Keep adding entries until the distribution formula is complete.
-=== Helpful acquisitions Library Settings ===
+==== Helpful acquisitions Library Settings ====
There are several acquisitions Library Settings available that will help with
acquisitions workflow. These settings can be found at *Administration -> Local
Administration -> Library Settings Editor*.
* Temporary call number prefix - Applies a unique prefix to the start of the
call number that is automatically generated during the acquisitions process.
-=== Preparing for order record loading ===
+==== Preparing for order record loading ====
If your library is planning to upload order records in a batch, you need to add
some information to your provider records so that Evergreen knows how to map
the item data contained in the order record.
+
where 962 is the holdings tag and p is the subfield that contains the PO Name.
-=== Preparing to send electronic orders from Evergreen ===
+==== Preparing to send electronic orders from Evergreen ====
If your library wants to transmit electronic order information to a vendor, you
will need to configure your server to use EDI. You need to install the EDI
translator and EDI scripts on your server by following the instructions in the
* Getting Data from Evergreen
** xref:development:introduction.adoc[Introduction]
-:leveloffset: 1
** xref:development:data_supercat.adoc[]
** xref:development:data_unapi.adoc[]
** xref:development:data_opensearch.adoc[]
-:leveloffset: 0
** xref:cataloging:copy-buckets_web_client.adoc[]
** xref:cataloging:item_tags_cataloging.adoc[]
** xref:cataloging:MARC_Editor.adoc[]
-
-:leveloffset: 1
** xref:cataloging:record_buckets.adoc[]
-:leveloffset: 0
-
** xref:cataloging:merge_overlay_bibs.adoc[]
** xref:cataloging:physical_char_wizard.adoc[]
** xref:admin:staff_client-return_to_results_from_marc.adoc[]
** xref:cataloging:cataloging_electronic_resources.adoc[]
** xref:cataloging:item_status.adoc[]
** xref:cataloging:volcopy_editor.adoc[]
-
-:leveloffset: 1
** xref:cataloging:tpac_copy_edit_links.adoc[]
** xref:cataloging:holdings_editor_hide_fields.adoc[]
-:leveloffset: 0
-
** xref:cataloging:MARC_batch_edit.adoc[]
** xref:cataloging:authorities.adoc[]
** xref:cataloging:link_checker.adoc[]
-== Hiding Fields in the Holdings Editor ==
+=== Hiding Fields in the Holdings Editor ===
A user may hide specific fields in the holdings editor if these fields are not used for cataloging in their organization. Hiding fields that are not used by your organization helps to reduce confusion among staff and also declutters the holdings editor screen.
+
image::media/Holdings_Editor_Hide_Display_Defaults.png[Holdings editor display defaults with deselected fields]
+
-. Select the *Edit* tab; the de-selected fields no longer appear on the holdings editor.
\ No newline at end of file
+. Select the *Edit* tab; the de-selected fields no longer appear on the holdings editor.
-= Record Buckets =
+== Record Buckets ==
-== Introduction ==
+=== Introduction ===
Record buckets are containers for MARC records. Once records are in a bucket, you can take
various types of actions, including:
* Downloading the MARC files for all records in the bucket, so you can edit them in another
program like http://marcedit.reeset.net[MARCEdit].
-== Creating Record Buckets ==
+=== Creating Record Buckets ===
. Click on _Cataloging_ -> _Record Buckets_.
. On the _Buckets_ menu, click _New Bucket_.
. Give the bucket a name and (optionally) a description.
-== Adding Records to a Bucket ==
+=== Adding Records to a Bucket ===
-=== From the Record Bucket Interface ===
+==== From the Record Bucket Interface ====
. Click on _Cataloging_ -> _Record Buckets_.
. On the _Buckets_ menu, choose the bucket that you'd like to add records to.
. Go to the _Record Query_ tab.
-== Accessing the holdings editor from a catalog record ==
+=== Accessing the holdings editor from a catalog record ===
The bibliographic record detail page displays library holdings, including the call number, shelving location, and item barcode. Within the
staff client, the holdings list displays a column next to the item barcode(s) containing two links, *view* and *edit*.
** xref:circulation:circulation_patron_records_web_client.adoc[]
** xref:admin:patron_self_registration.adoc[]
** xref:circulation:triggered_events.adoc[]
-
-:leveloffset: 1
** xref:circulation:offline_circ_webclient.adoc[]
** xref:circulation:self_check.adoc[]
-:leveloffset: 0
-= Offline Circulation =
+== Offline Circulation ==
-== Introduction ==
+=== Introduction ===
Evergreen's Offline Circulation interface is designed to log transactions during a network or server outage. Transactions can be uploaded and processed once connectivity is restored.
The web service workers will refresh the cache every 24 hours under normal use. Offline Circulation information is stored via IndexedDB.
-== Using Offline Circulation ==
+=== Using Offline Circulation ===
The Offline Circulation interface can be found by navigating to *Circulation -> Offline Circulation*.
This warning is not network-aware and it will appear regardless of network connection state. You must be logged out to record offline transactions. If you see this warning and wish to record offline transactions, click *Proceed* in order to log out.
-== Checkout ==
+=== Checkout ===
To check out items in Offline Circulation:
Pre-cataloged item checkout is not available in Offline Circulation. Any pre-cataloged item checked out through Offline Circulation will result in an entry in the Exception List and will not successfully check out. Pre-cataloged items which are checked in through offline will also result in an entry in the Exception List, but will successfully check in.
-== Renew ==
+=== Renew ===
To renew an item, you must know the item's barcode number. The patron's barcode is optional.
image::media/offline_renew.png[Offline renewal]
-== In-House Use ==
+=== In-House Use ===
To record in-house use transactions in *Offline Circulation*:
image::media/offline_inhouse.png[Offline in house use]
-== Checkin ==
+=== Checkin ===
To checkin items in Offline Circulation:
Items targeted for holds will be captured for their holds when the offline transactions are uploaded and processed; however, there will be no indication in the Exceptions list about this unless the item is also transiting.
-== Patron Registration ==
+=== Patron Registration ===
Patron registration in Evergreen Offline Circulation records patron information for later upload. In the web staff client, the Patron Registration form in Offline is the same as the regular Patron Registration interface.
Enter patron information and click the *Save* button in the top-right of the Patron Registration interface. You may checkout items to this patron right away, even if you are still in offline mode.
-== Managing Offline Transactions ==
+=== Managing Offline Transactions ===
-=== Offline Block List ===
+==== Offline Block List ====
While logged in and still online, you may download an *Offline Block List*. This will locally store a list of all patrons with blocks at the time of the download. If this list is present, the Offline Circulation interface will check transactions against this list.
image::media/offline_patron_blocked.png[Patron blocked modal]
-=== Exporting Offline Transactions ===
+==== Exporting Offline Transactions ====
If you anticipate a multi-day closing or if you plan to process your offline transactions at a different workstation, you will want to export your offline transactions.
To export transactions while you are logged in, navigate to *Circulation -> Offline Circulation* and click on the *Session Management* tab. Click on the *Export Transactions* button to generate the pending.xacts file as above. If you wish, you can at this point click *Clear Transactions* to clear the list of pending transactions.
-=== Processing Offline Transactions ===
+==== Processing Offline Transactions ====
Once connectivity is restored, navigate back to your *Evergreen Login Page*. You will see a message telling you that there are unprocessed Offline Transactions waiting for upload.
+
. Scroll to the bottom of the screen to see if there are any entries in the <<_exceptions,*Exception List*>>. Some of these may require staff follow up.
-=== Uploading Previously Exported Transactions ===
+==== Uploading Previously Exported Transactions ====
If you had previous exported your offline transactions you can upload them for processing.
. The *Pending Transactions* list will populate with your imported transactions.
. You may now proceed according to the instructions under <<_processing_offline_transactions,Processing Offline Transactions>>.
-==== Exceptions ====
+===== Exceptions =====
Exceptions are problems that were encountered during processing. For example, a mis-scanned patron barcode, an open circulation, or an item that was not checked in before it was checked out to another patron would all be listed as exceptions. Those transactions causing exceptions might not be loaded into Evergreen database. Staff should examine the exceptions and take necessary action.
-= Self checkout =
+== Self checkout ==
-== Introduction ==
+=== Introduction ===
Evergreen includes a self check interface designed for libraries that simply
want to record item circulation without worrying about security mechanisms like
magnetic strips or RFID tags.
-== Initializing the self check ==
+=== Initializing the self check ===
The self check interface runs in a web browser. Before patrons can use the self
check station, a staff member must initialize the interface by logging in.
image::media/self-check-admin-login.png[Self Check Admin Login]
-== Basic Check Out ==
+=== Basic Check Out ===
. Patron scans their barcode.
+
image::media/self_check_check_out_6.png[self check]
==========
-== View Items Out ==
+=== View Items Out ===
. Patrons are able to view the items they currently have checked out by clicking *View Items Out*
+
image::media/self_check_view_items_out_2.png[self check]
-== View Holds ==
+=== View Holds ===
. Patrons are able to view their current holds by clicking *View Holds*
+
+
image::media/self_check_view_holds_2.png[self check]
-== View Fines ==
+=== View Fines ===
. Patrons are able to view the fines they currently owe by clicking *View Details*
+
* Developer Resources
** xref:development:introduction.adoc[Introduction]
** xref:development:support_scripts.adoc[]
-
-:leveloffset: 1
** xref:development:pgtap.adoc[]
** xref:development:intro_opensrf.adoc[]
** xref:development:updating_translations_launchpad.adoc[]
-:leveloffset: 0
-= Using Opensearch as a developer =
+== Using Opensearch as a developer ==
-== Introduction ==
+=== Introduction ===
Evergreen responds to OpenSearch requests. This can be a good way to get
search results delivered in a format that you prefer.
-= Using Supercat =
+== Using Supercat ==
-== Introduction ==
+=== Introduction ===
You can use SuperCat to get data about ISBNs, metarecords, bibliographic
records, and authority records.
Throughout this section, replace `<hostname>` with the domain or subdomain
of your Evergreen installation to try these examples on your own system.
-== ISBNs ==
+=== ISBNs ===
Given one ISBN, Evergreen can return a list of related records and ISBNs,
including alternate editions and translations. To use the Supercat
</idlist>
----------------------------------------------------------------------------
-== Records ==
+=== Records ===
-=== Record formats ===
+==== Record formats ====
First, determine which format you'd like to receive data in. To see the
available formats for bibliographic records, visit
============================================================================
-=== Retrieve records ===
+==== Retrieve records ====
You can retrieve records using URLs in the following format:
----
</modsCollection>
----------------------------------------------------------------------------
-=== Recent records ===
+==== Recent records ====
SuperCat can return feeds of recently edited or created authority and bibliographic records:
Example: http://gapines.org/opac/extras/feed/freshmeat/atom/biblio/import/10/2008-01-01
-==== Filtering by Org Unit ====
+===== Filtering by Org Unit =====
You can generate a similar list, with the added ability to limit by Org Unit, using the item-age browse axis.
Example: http://gapines.org/opac/extras/browse/html-full/item-age/ARL-BOG/1/10
-==== Additional Filters ====
+===== Additional Filters =====
If you'd like to limit to a particular status, you can append `?status=0`
where `0` is the ID number of the status you'd like to limit to. If a
-= Using UnAPI =
+== Using UnAPI ==
-== URL format ==
+=== URL format ===
Evergreen's unAPI support includes access to many
record types. For example, the following URL would fetch
-= Easing gently into OpenSRF =
+== Easing gently into OpenSRF ==
-== Abstract ==
+=== Abstract ===
The Evergreen open-source library system serves library consortia composed of
hundreds of branches with millions of patrons - for example,
http://www.georgialibraries.org/statelibrarian/bythenumbers.pdf[the Georgia
simple code examples, and explains the technical foundations on which OpenSRF
is built.
-== Introducing OpenSRF ==
+=== Introducing OpenSRF ===
OpenSRF is a message routing network that offers scalability and failover
support for individual services and entire servers with minimal development and
deployment overhead. You can use OpenSRF to build loosely-coupled applications
could add an inexpensive server to your cluster and dedicate it to running that
resource-hungry service.
-=== Programming language support ===
+==== Programming language support ====
If you need to develop an entirely new OpenSRF service, you can choose from a
number of different languages in which to implement that service. OpenSRF
to use the Python implementation as the cleanest basis for a port to another
language.
-=== OpenSRF communication flows over XMPP ===
+==== OpenSRF communication flows over XMPP ====
The XMPP messaging service underpins OpenSRF, requiring an XMPP server such
as http://www.ejabberd.im/[ejabberd]. When you start OpenSRF, the first XMPP
`opensrf@private.localhost/opensrf.simple-text_drone_at_localhost_6285`.
[id="OpenSRFOverHTTP"]
-=== OpenSRF communication flows over HTTP ===
+==== OpenSRF communication flows over HTTP ====
Any OpenSRF service registered with the public router is accessible via the
OpenSRF HTTP Translator. The OpenSRF HTTP Translator implements the
http://www.open-ils.org/dokuwiki/doku.php?id=opensrf_over_http[OpenSRF-over-HTTP
additional authentication and authorization layer in `open-ils.pcrud` prevents
unchecked access to Evergreen's data.
-=== Stateless and stateful connections ===
+==== Stateless and stateful connections ====
OpenSRF supports both _stateless_ and _stateful_ connections. When an OpenSRF
client issues a `REQUEST` message in a _stateless_ connection, the router
.CONNECT, REQUEST, and DISCONNECT flow in a stateful connection
image:media/CONNECT.png[CONNECT, REQUEST, and DISCONNECT flow in a stateful connection]
-== Enough jibber-jabber: writing an OpenSRF service ==
+=== Enough jibber-jabber: writing an OpenSRF service ===
Imagine an application architecture in which 10 lines of Perl or Python, using
the data types native to each language, are enough to implement a method that
can then be deployed and invoked seamlessly across hundreds of servers. You
procedure is how we introduce a method to the rest of the OpenSRF world.
[id="serviceRegistration"]
-=== Registering a service with the OpenSRF configuration files ===
+==== Registering a service with the OpenSRF configuration files ====
Two files control most of the configuration for OpenSRF:
Once you have defined the new service, you must restart the OpenSRF Router
to retrieve the new configuration and start or restart the service itself.
-=== Calling an OpenSRF method ===
+==== Calling an OpenSRF method ====
OpenSRF clients in any supported language can invoke OpenSRF services in any
supported language. So let's see a few examples of how we can call our fancy
new `opensrf.simple-text.reverse()` method:
-==== Calling OpenSRF methods from the srfsh client ====
+===== Calling OpenSRF methods from the srfsh client =====
`srfsh` is a command-line tool installed with OpenSRF that you can use to call
OpenSRF methods. To call an OpenSRF method, issue the `request` command and pass
the OpenSRF service and method name as the first two arguments; then pass a list
--------------------------------------------------------------------------------
[id="opensrfIntrospection"]
-==== Getting documentation for OpenSRF methods from the srfsh client ====
+===== Getting documentation for OpenSRF methods from the srfsh client =====
The `srfsh` client also gives you command-line access to retrieving metadata
about OpenSRF services and methods. For a given OpenSRF method, for example,
<9> `argc` is an integer describing the minimum number of arguments that
must be passed to this method.
-==== Calling OpenSRF methods from Perl applications ====
+===== Calling OpenSRF methods from Perl applications =====
To call an OpenSRF method from Perl, you must connect to the OpenSRF service,
issue the request to the method, and then retrieve the results.
<10> The `OpenSRF::AppSession->disconnect()` method closes the XMPP client
connection and cleans up resources associated with the session.
-=== Accepting and returning more interesting data types ===
+==== Accepting and returning more interesting data types ====
Of course, the example of accepting a single string and returning a single
string is not very interesting. In real life, our applications tend to pass
documentation used to register to determine the data structures - if the developer has
added the appropriate documentation.
-=== Accepting and returning Evergreen objects ===
+==== Accepting and returning Evergreen objects ====
OpenSRF is agnostic about objects; its role is to pass JSON back and forth
between OpenSRF clients and services, and it allows the specific clients and
Evergreen can then act in batch mode over the collection to perform the
requested actions on any of the instances that have been flagged for action.
-=== Returning streaming results ===
+==== Returning streaming results ====
In the previous implementation of the `opensrf.simple-text.split` method, we
returned a reference to the complete array of results. For small values being
<2> Registering the method as a streaming method instructs OpenSRF to also
register an atomic variant (`opensrf.simple-text.split.atomic`).
-=== Error! Warning! Info! Debug! ===
+==== Error! Warning! Info! Debug! ====
As hard as it may be to believe, it is true: applications sometimes do not
behave in the expected manner, particularly when they are still under
development. The server language bindings for OpenSRF include integrated
set to INTERNAL for a few minutes - just ensure that you have a lot of free disk
space available if you have a moderately busy system!
-=== Caching results: one secret of scalability ===
+==== Caching results: one secret of scalability ====
If you have ever used an application that depends on a remote Web service
outside of your control-say, if you need to retrieve results from a
microblogging service-you know the pain of latency and dependability (or the
value in seconds to ensure that we do not return stale data on subsequent
calls
-=== Initializing the service and its children: child labour ===
+==== Initializing the service and its children: child labour ====
When an OpenSRF service is started, it looks for a procedure called
`initialize()` to set up any global variables shared by all of the children of
the service. The `initialize()` procedure is typically used to retrieve
Similarly, when the OpenSRF service is stopped, it calls the `DESTROY()`
procedure to clean up any remaining resources.
-=== Retrieving configuration settings ===
+==== Retrieving configuration settings ====
The settings for OpenSRF services are maintained in the `opensrf.xml` XML
configuration file. The structure of the XML document consists of a root
element `<opensrf>` containing two child elements:
every request and enable the developer to request specific values without
having to manually construct XPath expressions.
-== Getting under the covers with OpenSRF ==
+=== Getting under the covers with OpenSRF ===
Now that you have seen that it truly is easy to create an OpenSRF service, we
can take a look at what is going on under the covers to make all of this work
for you.
-=== Get on the messaging bus - safely ===
+==== Get on the messaging bus - safely ====
One of the core innovations of OpenSRF was to use the Extensible Messaging and
Presence Protocol (XMPP, more colloquially known as Jabber) as the messaging
bus that ties OpenSRF services together across servers. XMPP is an "XML
list of services that should be public, are contained in the `opensrf_core.xml`
configuration file.
-=== Message body format ===
+==== Message body format ====
OpenSRF was an early adopter of JavaScript Object Notation (JSON). While XMPP
is an XML protocol, the Evergreen developers recognized that the compactness of
the JSON format offered a significant reduction in bandwidth for the volume of
look familiar; they match the structure of the <<OpenSRFOverHTTP,OpenSRF over
HTTP examples>> that we previously dissected.
-=== Registering OpenSRF methods in depth ===
+==== Registering OpenSRF methods in depth ====
Let's explore the call to `__PACKAGE__->register_method()`; most of the elements
of the hash are optional, and for the sake of brevity we omitted them in the
previous example. As we have seen in the results of the <<opensrfIntrospection,introspection call>>, a
*** `desc`: a description of the return value
*** `type`: the data type of the return value: for example, string, integer, boolean, number, array, or hash
-== Evergreen-specific OpenSRF services ==
+=== Evergreen-specific OpenSRF services ===
Evergreen is currently the primary showcase for the use of OpenSRF as an
application architecture. Evergreen 2.6.0 includes the following
integrated into the same configuration and control infrastructure as the
OpenSRF services.
-== Evergreen after one year: reflections on OpenSRF ==
+=== Evergreen after one year: reflections on OpenSRF ===
http://projectconifer.ca[Project Conifer] has been live on Evergreen for just
over a year now, and as one of the primary technologists I have had to work
a position to identify some of the strengths and weaknesses of OpenSRF based
on our experiences.
-=== Strengths of OpenSRF ===
+==== Strengths of OpenSRF ====
As a service infrastructure, OpenSRF has been remarkably reliable. We initially
deployed Evergreen on an unreleased version of both OpenSRF and Evergreen due
entire cluster in context, rather than trying to piece them together across
servers.
-=== Weaknesses ===
+==== Weaknesses ====
The primary weakness of OpenSRF is the lack of either formal or informal
documentation for OpenSRF. There are many frequently asked questions on the
contribute patches as they could sanity check their own code without an intense
effort before exposing it to their peers.
-== Summary ==
+=== Summary ===
In this article, I attempted to provide both a high-level and detailed overview
of how OpenSRF works, how to build and deploy new OpenSRF services, how to make
requests to OpenSRF method from OpenSRF clients or over HTTP, and why you
right application of skills could make a significant difference to the Evergreen
and OpenSRF projects.
-== Appendix: Python client ==
+=== Appendix: Python client ===
Following is a Python client that makes the same OpenSRF calls as the Perl
client:
-= Developing with pgTAP tests =
+== Developing with pgTAP tests ==
-== Setting up pgTAP on your development server ==
+=== Setting up pgTAP on your development server ===
Currently, Evergreen pgTAP tests expect a version of pgTAP (0.93)
that is not yet available in the packages for most Linux distributions.
CREATE EXTENSION pgtap;
------------------------------------------------------------------------------
-== Running pgTAP tests ==
+=== Running pgTAP tests ===
The pgTAP tests can be found in subdirectories of `Open-ILS/src/sql/Pg/`
as follows:
-= Updating translations using Launchpad =
+== Updating translations using Launchpad ==
This document describes how to update the translations in an Evergreen branch
by pulling them from Launchpad, as well as update the files to be translated
in Launchpad by updating the POT files in the Evergreen master branch.
-== Prerequisites ==
+=== Prerequisites ===
You must install all of the Python prerequisites required for building
translations, per
http://evergreen-ils.org/dokuwiki/doku.php?id=evergreen-admin:customizations:i18n
* http://pypi.python.org/pypi/simplejson/[simplejson]
* http://lxml.de/[lxml]
-== Updating the translations ==
+=== Updating the translations ===
. Check out the latest translations from Launchpad by branching the Bazaar
repository:
** xref:opac:tpac_meta_record_holds.adoc[]
** xref:opac:linked_libraries.adoc[]
** xref:opac:opensearch.adoc[]
-
-:leveloffset: 1
** xref:opac:search_form.adoc[]
-:leveloffset: 0
-= Creating a New Skin: the Bare Minimum =
+== Creating a New Skin: the Bare Minimum ==
-== Introduction ==
+=== Introduction ===
When you adopt the TPAC as your catalog, you must create a new skin. This
involves a combination of overriding template files and setting Apache
directives to control the look and feel of your customized TPAC.
-== Apache directives ==
+=== Apache directives ===
There are a few Apache directives and environment variables of note for
customizing TPAC behavior. These directives should generally live within a
`<vhost>` section of your Apache configuration.
SetEnv physical_loc 104
------------------------------------------------------------------------------
-== Customizing templates ==
+=== Customizing templates ===
When you install Evergreen, the TPAC templates include many placeholder images,
text, and links. You should override most of these to provide your users with a
custom experience that matches your library. Following is a list of templates
-= Adding an Evergreen search form to a web page =
+== Adding an Evergreen search form to a web page ==
-== Introduction ==
+=== Introduction ===
To enable users to quickly search your Evergreen catalog, you can add a
simple search form to any HTML page. The following code demonstrates
how to create a quick search box suitable for the header of your web
site:
-== Simple search form ==
+=== Simple search form ===
[source,html]
------------------------------------------------------------------------------
wish to anchor your search. This is the value of the ''locg'' parameter in
your normal search.
-== Advanced search form ==
+=== Advanced search form ===
[source,html]
--------------------------------------------------------------------------------
</form>
--------------------------------------------------------------------------------
-== Encoding ==
+=== Encoding ===
For non English characters it is vital to set the attribute `accept-charset="UTF-8"` in the form tag (as in the examples above). If the parameter is not set, records with non English characters will not be retrieved.
-== Setting the document type ==
+=== Setting the document type ===
You can set the document types to be searched using the attribute `option value=` in the form. For the value use MARC 21 code defining the type of record (i.e. https://www.loc.gov/marc/bibliographic/bdleader.html[Leader, position 06]).
For example, for musical recordings you could use `<option value='j'>Musical Sound Recording</option>`
-== Setting the library ==
+=== Setting the library ===
Instead of searching the entire consortium, you can set the Library to be searched in using the attribute `option value=` in the form. For the value use Evergreen database.organization unit ID.