diff --git a/modules/bibformat/lib/bibformat_templates.py b/modules/bibformat/lib/bibformat_templates.py index c1dcb890b..b990d5f6f 100644 --- a/modules/bibformat/lib/bibformat_templates.py +++ b/modules/bibformat/lib/bibformat_templates.py @@ -1,2068 +1,2177 @@ # -*- coding: utf-8 -*- ## $Id$ ## Administration of BibFormat config files ## This file is part of CDS Invenio. ## Copyright (C) 2002, 2003, 2004, 2005 CERN. ## ## The CDSware is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 2 of the ## License, or (at your option) any later version. ## ## The CDSware is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with CDSware; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. """HTML Templates for BibFormat administration""" __lastupdated__ = """$Date$""" # non Invenio imports import cgi # Invenio imports from invenio.messages import gettext_set_language from invenio.textutils import indent_text from invenio.config import weburl, sweburl from invenio.messages import language_list_long from invenio.config import php class Template: """Templating class, refer to bibformat.py for examples of call""" def tmpl_admin_index(self, ln, warnings, is_admin): """ Returns the main BibFormat admin page. @param ln language @param warnings a list of warnings to display at top of page. None if no warning @param is_admin indicate if user is authorized to use BibFormat @return main BibFormat admin page """ _ = gettext_set_language(ln) # load the right message language out = '' if warnings: out += '''
%(warnings)s |
---|
For some time the old BibFormat will still run along the new one, so that you can transition smoothly (See old Admin Interface further below).
''' out += '''
BibFormat has changed!
You will need to migrate your old formats if you are not a new user. You can read the documentation to learn how to write formats, or use the migration assistant. %(comment_on_php_admin_interface)s |
---|
This is where you can edit the formatting styles available for the records. ''' if not is_admin: out += '''You need to login to enter. ''' % {'weburl':weburl} out += '''
The BibFormat admin interface enables you to specify how the bibliographic data is presented to the end user in the search interface and search results pages. For example, you may specify that titles should be printed in bold font, the abstract in small italic, etc. Moreover, the BibFormat is not only a simple bibliographic data output formatter, but also an automated link constructor. For example, from the information on journal name and pages, it may automatically create links to publisher's site based on some configuration rules.
By default, a simple HTML format based on the most common fields (title, author, abstract, keywords, fulltext link, etc) is defined. You certainly want to define your own ouput formats in case you have a specific metadata structure.
Here is a short guide of what you can configure:
- Behaviours
- Define one or more output BibFormat behaviours. These are then passed as parameters to the BibFormat modules while executing formatting.
Example: You can tell BibFormat that is has to enrich the incoming metadata file by the created format, or that it only has to print the format out.- Extraction Rules
- Define how the metadata tags from input are mapped into internal BibFormat variable names. The variable names can afterwards be used in formatting and linking rules.
Example: You can tell that100 $a
field should be mapped into$100.a
internal variable that you could use later.- Link Rules
- Define rules for automated creation of URI links from mapped internal variables.
Example: You can tell a rule how to create a link to People database out of the$100.a
internal variable repesenting author's name. (The$100.a
variable was mapped in the previous step, see the Extraction Rules.)- File Formats
- Define file format types based on file extensions. This will be used when proposing various fulltext services.
Example: You can tell that- User Defined Functions (UDFs)
- Define your own functions that you can reuse when creating your own output formats. This enables you to do complex formatting without ever touching the BibFormat core code.
Example: You can define a function how to match and extract email addresses out of a text file.- Formats
- Define the output formats, i.e. how to create the output out of internal BibFormat variables that were extracted in a previous step. This is the functionality you would want to configure most of the time. It may reuse formats, user defined functions, knowledge bases, etc.
Example: You can tell that authors should be printed in italic, that if there are more than 10 authors only the first three should be printed, etc.- Knowledge Bases (KBs)
- Define one or more knowledge bases that enables you to transform various forms of input data values into the unique standard form on the output.
Example: You can tell that Phys Rev D and Physical Review D are both the same journal and that these names should be standardized to Phys Rev : D.- Execution Test
- Enables you to test your formats on your sample data file. Useful when debugging newly created formats.
To learn more on BibFormat configuration, you can consult the BibFormat Admin Guide.
Run Reformat Records tool.
This tool permits you to update stored formats for bibliographic records.
It should normally be used after configuring BibFormat's
Behaviours and
Formats.
When these are ready, you can choose to rebuild formats for selected
collections or you can manually enter a search query and the web interface
will accomplish all necessary formatting steps.
Example: You can request Photo collections to have their HTML
brief formats rebuilt, or you can reformat all the records written by Ellis.
Consider having an XML MARC data file that is to be uploaded into the CDS Invenio. (For example, it might have been harvested from other sources and processed via BibConvert.) Having configured BibFormat and its default output type behaviour, you would then run this file throught BibFormat as follows:
that would create default HTML formats and would "enrich" the input XML data file by this format. (You would then continue the upload procedure by calling successively BibUpload and BibWords.)$ bibformat < /tmp/sample.xml > /tmp/sample_with_fmt.xml
Now consider a different situation. You would like to add a new
possible format, say "HTML portfolio" and "HTML captions" in order to
nicely format multiple photographs in one page. Let us suppose that
these two formats are called hp
and hc
and
are already loaded in the collection_format
table.
(TODO: describe how this is done via WebAdmin.) You would then
proceed as follows: firstly, you would prepare the corresponding output behaviours called HP
and HC
(TODO: note the uppercase!) that would not enrich
the input file but that would produce an XML file with only
001
and FMT
tags. (This is in order not to
update the bibliographic information but the formats only.) You would
also prepare corresponding formats
at the same time. Secondly, you would launch the formatting as
follows:
that should give you an XML file containing only 001 and FMT tags. Finally, you would upload the formats:$ bibformat otype=HP,HC < /tmp/sample.xml > /tmp/sample_fmts_only.xml
and that's it. The new formats should now appear in WebSearch.$ bibupload < /tmp/sample_fmts_only.xml
%(menu)s | |||
---|---|---|---|
0. %(close_editor)s | 1. %(template_editor)s | 2. %(modify_template_attributes)s | 3. %(check_dependencies)s |
%(menu)s | |||
---|---|---|---|
0. %(close_editor)s | 1. %(template_editor)s | 2. %(modify_template_attributes)s | 3. %(check_dependencies)s |
Output Formats that use %(name)s | Format Elements used by %(name)s* | All Tags Called* |
---|---|---|
''' % {'ln':ln, 'filename':filename, 'menu': _("Menu"), 'close_editor': _("Close Editor"), 'modify_template_attributes': _("Modify Template Attributes"), 'template_editor': _("Template Editor"), 'check_dependencies': _("Check Dependencies"), 'name': name } #Print output formats if len(output_formats) == 0: out += ' No output format uses this format template. ' for output_format in output_formats: name = output_format['names']['generic'] filename = output_format['filename'] out += ''' %(name)s''' % {'filename':filename, 'name':name, 'ln':ln} if len(output_format['tags']) > 0: out += "("+", ".join(output_format['tags'])+")" out += "" #Print format elements (and tags) out += ' | ' if len(format_elements) == 0: out += ' This format template uses no format element. ' for format_element in format_elements: name = format_element['name'] out += ''' %(name)s''' % {'name':"bfe_"+name.lower(), 'anchor':name.upper(), 'ln':ln} if len(format_element['tags']) > 0: out += "("+", ".join(format_element['tags'])+")" out += "" #Print tags out += ' | ' if len(tags) == 0: out += ' This format template uses no tag. ' for tag in tags: out += '''%(tag)s''' % { 'tag':tag} out += ''' |
%(menu)s | |||
---|---|---|---|
0. %(close_editor)s | 1. %(template_editor)s | 2. %(modify_template_attributes)s | 3. %(check_dependencies)s |
''' % {'code':code, 'ln':ln, 'weburl':weburl, 'filename':filename, 'ln_for_preview':ln_for_preview, 'pattern_for_preview':pattern_for_preview } #Second column Print documentation out += ''' |
|