From f1c85801ded475daa05b69cdf726b266335706c4 Mon Sep 17 00:00:00 2001 From: oleonard Date: Tue, 19 Jul 2005 20:42:46 +0000 Subject: [PATCH] First draft of programmer's templates: a stripped-down version of the templates for use by programmers in adding and testing new functionality. Template-authors can use these templates to track changes that need to be incorporated into their custom templates. --- .../prog/en/includes/calendar/cal.gif | Bin 0 -> 127 bytes .../prog/en/includes/calendar/calendar-en.js | 127 ++ .../en/includes/calendar/calendar-setup.js | 181 ++ .../en/includes/calendar/calendar-system.css | 254 +++ .../prog/en/includes/calendar/calendar.js | 1715 +++++++++++++++++ .../en/includes/countryCodes/countryCodes.dat | 14 + .../prog/en/includes/doc-head-close.inc | 9 + .../prog/en/includes/doc-head-open.inc | 5 + .../prog/en/includes/favicon.ico | Bin 0 -> 1406 bytes .../prog/en/includes/intranet.css | 46 + .../labelConfig/itemsLabelConfig.conf | 8 + .../prog/en/members/deletemem.tmpl | 14 + .../prog/en/members/jmemberentry.tmpl | 56 + .../prog/en/members/member-flags.tmpl | 27 + .../prog/en/members/member-password.tmpl | 23 + .../members/member-quicksearch-results.tmpl | 41 + .../prog/en/members/member-quicksearch.tmpl | 8 + .../intranet-tmpl/prog/en/members/member.tmpl | 31 + .../prog/en/members/memberentry.tmpl | 153 ++ .../prog/en/members/members-home.tmpl | 17 + .../prog/en/members/moremember-print.tmpl | 60 + .../prog/en/members/moremember-receipt.tmpl | 44 + .../prog/en/members/moremember.tmpl | 175 ++ .../intranet-tmpl/prog/en/members/pay.tmpl | 44 + .../prog/en/members/readingrec.tmpl | 45 + .../prog/en/parameters/admin-home.tmpl | 107 + .../prog/en/parameters/aqbookfund.tmpl | 147 ++ .../prog/en/parameters/aqbudget.tmpl | 133 ++ .../parameters/auth_subfields_structure.tmpl | 133 ++ .../en/parameters/auth_tag_structure.tmpl | 177 ++ .../prog/en/parameters/authorised_values.tmpl | 93 + .../prog/en/parameters/authtypes.tmpl | 147 ++ .../prog/en/parameters/biblio_framework.tmpl | 130 ++ .../prog/en/parameters/branches.tmpl | 215 +++ .../prog/en/parameters/categorie.tmpl | 183 ++ .../prog/en/parameters/categoryitem.tmpl | 306 +++ .../prog/en/parameters/charges.tmpl | 29 + .../prog/en/parameters/checkmarc.tmpl | 137 ++ .../prog/en/parameters/currency.tmpl | 190 ++ .../prog/en/parameters/issuingrules.tmpl | 58 + .../prog/en/parameters/itemtypes.tmpl | 168 ++ .../prog/en/parameters/koha2marclinks.tmpl | 137 ++ .../parameters/marc_subfields_structure.tmpl | 131 ++ .../prog/en/parameters/marctagstructure.tmpl | 206 ++ .../prog/en/parameters/printers.tmpl | 187 ++ .../prog/en/parameters/stopwords.tmpl | 156 ++ .../prog/en/parameters/systempreferences.tmpl | 242 +++ .../prog/en/parameters/thesaurus.tmpl | 148 ++ .../prog/en/parameters/z3950servers.tmpl | 269 +++ .../prog/en/search.marc/dictionary.tmpl | 136 ++ .../prog/en/search.marc/result.tmpl | 71 + .../prog/en/search.marc/search.tmpl | 204 ++ .../prog/en/search.marc/suggest.tmpl | 37 + 53 files changed, 7374 insertions(+) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/calendar/cal.gif create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-en.js create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-setup.js create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-system.css create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar.js create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/countryCodes/countryCodes.dat create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/favicon.ico create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/intranet.css create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/labelConfig/itemsLabelConfig.conf create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/deletemem.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/jmemberentry.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/member-flags.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/member-password.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch-results.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/member.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/memberentry.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/members-home.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/moremember-print.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/moremember-receipt.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/moremember.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/pay.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/members/readingrec.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/admin-home.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/aqbookfund.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/aqbudget.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/auth_subfields_structure.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/auth_tag_structure.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/authorised_values.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/authtypes.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/biblio_framework.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/branches.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/categorie.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/categoryitem.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/charges.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/checkmarc.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/currency.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/issuingrules.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/itemtypes.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/koha2marclinks.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/marc_subfields_structure.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/marctagstructure.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/printers.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/stopwords.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/systempreferences.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/thesaurus.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/parameters/z3950servers.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/search.marc/dictionary.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/search.marc/result.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/search.marc/search.tmpl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/search.marc/suggest.tmpl diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/cal.gif b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/cal.gif new file mode 100644 index 0000000000000000000000000000000000000000..8526cf5d19a915aa8073cf344873c4505491970d GIT binary patch literal 127 zcmZ?wbhEHb6krfwSj51v)Yr?)cd3`J*V1K6uU)?O9}E~67!-f9FfuT(G3WrDe9t*l +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December"); + +// short month names +Calendar._SMN = new Array +("Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "About the calendar"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-) +"For latest version visit: http://dynarch.com/mishoo/calendar.epl\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; +Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; +Calendar._TT["GO_TODAY"] = "Go Today"; +Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; +Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; +Calendar._TT["SEL_DATE"] = "Select date"; +Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; +Calendar._TT["PART_TODAY"] = " (today)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "Display %s first"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "0,6"; + +Calendar._TT["CLOSE"] = "Close"; +Calendar._TT["TODAY"] = "Today"; +Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "wk"; +Calendar._TT["TIME"] = "Time:"; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-setup.js b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-setup.js new file mode 100644 index 0000000000..ca4588e64f --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-setup.js @@ -0,0 +1,181 @@ +/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ + * --------------------------------------------------------------------------- + * + * The DHTML Calendar + * + * Details and latest version at: + * http://dynarch.com/mishoo/calendar.epl + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + * + * This file defines helper functions for setting up the calendar. They are + * intended to help non-programmers get a working calendar on their site + * quickly. This script should not be seen as part of the calendar. It just + * shows you what one can do with the calendar, while in the same time + * providing a quick and simple method for setting it up. If you need + * exhaustive customization of the calendar creation process feel free to + * modify this code to suit your needs (this is recommended and much better + * than modifying calendar.js itself). + */ + +// $Id$ + +/** + * This function "patches" an input field (or other element) to use a calendar + * widget for date selection. + * + * The "params" is a single object that can have the following properties: + * + * prop. name | description + * ------------------------------------------------------------------------------------------------- + * inputField | the ID of an input field to store the date + * displayArea | the ID of a DIV or other element to show the date + * button | ID of a button or other element that will trigger the calendar + * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") + * ifFormat | date format that will be stored in the input field + * daFormat | the date format that will be used to display the date in displayArea + * singleClick | (true/false) wether the calendar is in single click mode or not (default: true) + * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. + * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation + * range | array with 2 elements. Default: [1900, 2999] -- the range of years available + * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers + * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID + * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) + * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar + * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) + * onClose | function that gets called when the calendar is closed. [default] + * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. + * date | the date that the calendar will be initially displayed to + * showsTime | default: false; if true the calendar will include a time selector + * timeFormat | the time format; can be "12" or "24", default is "12" + * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close + * step | configures the step of the years in drop-down boxes; default: 2 + * position | configures the calendar absolute position; default: null + * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible + * showOthers | if "true" (but default: "false") it will show days from other months too + * + * None of them is required, they all have default values. However, if you + * pass none of "inputField", "displayArea" or "button" you'll get a warning + * saying "nothing to setup". + */ +Calendar.setup = function (params) { + function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; + + param_default("inputField", null); + param_default("displayArea", null); + param_default("button", null); + param_default("eventName", "click"); + param_default("ifFormat", "%Y/%m/%d"); + param_default("daFormat", "%Y/%m/%d"); + param_default("singleClick", true); + param_default("disableFunc", 'dateStatusHandler'); + param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined + param_default("firstDay", 0); // defaults to "Sunday" first + param_default("align", "Br"); + param_default("range", [1900, 2999]); + param_default("weekNumbers", true); + param_default("flat", null); + param_default("flatCallback", null); + param_default("onSelect", null); + param_default("onClose", null); + param_default("onUpdate", null); + param_default("date", null); + param_default("showsTime", false); + param_default("timeFormat", "24"); + param_default("electric", true); + param_default("step", 2); + param_default("position", null); + param_default("cache", false); + param_default("showOthers", false); + + var tmp = ["inputField", "displayArea", "button"]; + for (var i in tmp) { + if (typeof params[tmp[i]] == "string") { + params[tmp[i]] = document.getElementById(params[tmp[i]]); + } + } + if (!(params.flat || params.inputField || params.displayArea || params.button)) { + alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); + return false; + } + + function onSelect(cal) { + var p = cal.params; + var update = (cal.dateClicked || p.electric); + if (update && p.flat) { + if (typeof p.flatCallback == "function") + p.flatCallback(cal); + else + alert("No flatCallback given -- doing nothing."); + return false; + } + if (update && p.inputField) { + p.inputField.value = cal.date.print(p.ifFormat); + if (typeof p.inputField.onchange == "function") + p.inputField.onchange(); + } + if (update && p.displayArea) + p.displayArea.innerHTML = cal.date.print(p.daFormat); + if (update && p.singleClick && cal.dateClicked) + cal.callCloseHandler(); + if (update && typeof p.onUpdate == "function") + p.onUpdate(cal); + }; + + if (params.flat != null) { + if (typeof params.flat == "string") + params.flat = document.getElementById(params.flat); + if (!params.flat) { + alert("Calendar.setup:\n Flat specified but can't find parent."); + return false; + } + var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.params = params; + cal.weekNumbers = params.weekNumbers; + cal.setRange(params.range[0], params.range[1]); + cal.setDateStatusHandler(params.dateStatusFunc); + cal.create(params.flat); + cal.show(); + return false; + } + + var triggerEl = params.button || params.displayArea || params.inputField; + triggerEl["on" + params.eventName] = function() { + var dateEl = params.inputField || params.displayArea; + var dateFmt = params.inputField ? params.ifFormat : params.daFormat; + var mustCreate = false; + var cal = window.calendar; + if (!(cal && params.cache)) { + window.calendar = cal = new Calendar(params.firstDay, + params.date, + params.onSelect || onSelect, + params.onClose || function(cal) { cal.hide(); }); + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.weekNumbers = params.weekNumbers; + mustCreate = true; + } else { + if (params.date) + cal.setDate(params.date); + cal.hide(); + } + cal.showsOtherMonths = params.showOthers; + cal.yearStep = params.step; + cal.setRange(params.range[0], params.range[1]); + cal.params = params; + cal.setDateStatusHandler(params.dateStatusFunc); + cal.setDateFormat(dateFmt); + if (mustCreate) + cal.create(); + cal.parseDate(dateEl.value || dateEl.innerHTML); + cal.refresh(); + if (!params.position) + cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); + else + cal.showAt(params.position[0], params.position[1]); + return false; + }; +}; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-system.css b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-system.css new file mode 100644 index 0000000000..f202773d6b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar-system.css @@ -0,0 +1,254 @@ +/* The main calendar widget. DIV containing a table. */ + +.calendar { + position: relative; + display: none; + border: 1px solid; + border-color: #fff #000 #000 #fff; + font-size: 11px; + cursor: default; + background: Window; + color: WindowText; + font-family: tahoma,verdana,sans-serif; + width:250px; +} + +.calendar table { + border: 1px solid; + border-color: #fff #000 #000 #fff; + font-size: 11px; + cursor: default; + background: Window; + color: WindowText; + font-family: tahoma,verdana,sans-serif; + border-collapse:separate; +} + +/* Header part -- contains navigation buttons and day names. */ + +.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ + text-align: center; + padding: 1px; + border: 1px solid; + display: table-cell; + -moz-border-radius: 0px; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; + background: ButtonFace; +} + +.calendar .nav { + background: ButtonFace url('menuarrow.gif') no-repeat 100% 100%; +} + +.calendar thead .title { /* This holds the current "month, year" */ + font-weight: bold; + padding: 1px; + border: 1px solid #000; + background: ActiveCaption; + color: CaptionText; + text-align: center; +} + +.calendar thead .headrow { /* Row containing navigation buttons */ +} + +.calendar thead .daynames { /* Row containing the day names */ +} + +.calendar thead .name { /* Cells containing the day names */ + border-bottom: 1px solid ButtonShadow; + padding: 2px; + text-align: center; + background: ButtonFace; + color: ButtonText; +} + +.calendar thead .weekend { /* How a weekend day name shows in header */ +// color: #f00; +} + +.calendar thead .hilite { /* How do the buttons in header appear when hover */ + border: 2px solid; + padding: 0px; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} + +.calendar thead .active { /* Active (pressed) buttons in header */ + border-width: 1px; + padding: 2px 0px 0px 2px; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} + +/* The body part -- contains all the days in month. */ + +.calendar tbody .day { /* Cells containing month days dates */ + width: 2em; + text-align: right; + padding: 2px 4px 2px 2px; +} +.calendar tbody .day.othermonth { + font-size: 80%; + color: #aaa; +} +.calendar tbody .day.othermonth.oweekend { + color: #faa; +} + +.calendar table .wn { + padding: 2px 3px 2px 2px; + border-right: 1px solid ButtonShadow; + background: ButtonFace; + color: ButtonText; +} + +.calendar tbody .rowhilite td { +// background: Highlight; +// color: HighlightText; +} + +.calendar tbody td.hilite { /* Hovered cells */ + padding: 1px 3px 1px 1px; + border-top: 1px solid #fff; + border-right: 1px solid #000; + border-bottom: 1px solid #000; + border-left: 1px solid #fff; +} + +.calendar tbody td.active { /* Active (pressed) cells */ +// padding: 2px 2px 0px 2px; +// border: 1px solid; +// border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} + +.calendar tbody td.selected { /* Cell showing selected date */ + font-weight: bold; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; + padding: 2px 2px 0px 2px; + background: ButtonFace; + color: ButtonText; +} + +.calendar tbody td.weekend { /* Cells showing weekend days */ +// color: #f00; +} + +.calendar tbody td.today { /* Cell showing today date */ + font-weight: bold; + color: #00f; +} + +.calendar tbody td.disabled { color: GrayText; } + +.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ + visibility: hidden; +} + +.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ + display: none; +} + +/* The footer part -- status bar and "Close" button */ + +.calendar tfoot .footrow { /* The in footer (only one right now) */ +} + +.calendar tfoot .ttip { /* Tooltip (status bar) cell */ + background: ButtonFace; + padding: 1px; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; + color: ButtonText; + text-align: center; +} + +.calendar tfoot .hilite { /* Hover style for buttons in footer */ + border-top: 1px solid #fff; + border-right: 1px solid #000; + border-bottom: 1px solid #000; + border-left: 1px solid #fff; + padding: 1px; + background: #e4e0d8; +} + +.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ + padding: 2px 0px 0px 2px; + border-top: 1px solid #000; + border-right: 1px solid #fff; + border-bottom: 1px solid #fff; + border-left: 1px solid #000; +} + +/* Combo boxes (menus that display months/years for direct selection) */ + +.calendar .combo { + position: absolute; + display: none; + width: 4em; + top: 0px; + left: 0px; + cursor: default; + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; + background: Menu; + color: MenuText; + font-size: 90%; + padding: 1px; +} + +.calendar .combo .label, +.calendar .combo .label-IEfix { + text-align: center; + padding: 1px; +} + +.calendar .combo .label-IEfix { + width: 4em; +} + +.calendar .combo .active { + padding: 0px; + border: 1px solid #000; +} + +.calendar .combo .hilite { + background: Highlight; + color: HighlightText; +} + +.calendar td.time { + border-top: 1px solid ButtonShadow; + padding: 1px 0px; + text-align: center; + background-color: ButtonFace; +} + +.calendar td.time .hour, +.calendar td.time .minute, +.calendar td.time .ampm { + padding: 0px 3px 0px 4px; + border: 1px solid #889; + font-weight: bold; + background-color: Menu; +} + +.calendar td.time .ampm { + text-align: center; +} + +.calendar td.time .colon { + padding: 0px 2px 0px 3px; + font-weight: bold; +} + +.calendar td.time span.hilite { + border-color: #000; + background-color: Highlight; + color: HighlightText; +} + +.calendar td.time span.active { + border-color: #f00; + background-color: #000; + color: #0f0; +} \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar.js b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar.js new file mode 100644 index 0000000000..96bec6f78e --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/calendar/calendar.js @@ -0,0 +1,1715 @@ +/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ + * ------------------------------------------------------------------ + * + * The DHTML Calendar, version 0.9.6 "Keep cool but don't freeze" + * + * Details and latest version at: + * http://dynarch.com/mishoo/calendar.epl + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + */ + +// $Id$ + +/** The Calendar object constructor. */ +Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { + // member variables + this.activeDiv = null; + this.currentDateEl = null; + this.getDateStatus = null; + this.timeout = null; + this.onSelected = onSelected || null; + this.onClose = onClose || null; + this.dragging = false; + this.hidden = false; + this.minYear = 1970; + this.maxYear = 2050; + this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; + this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; + this.isPopup = true; + this.weekNumbers = true; + this.firstDayOfWeek = firstDayOfWeek; // 0 for Sunday, 1 for Monday, etc. + this.showsOtherMonths = false; + this.dateStr = dateStr; + this.ar_days = null; + this.showsTime = false; + this.time24 = true; + this.yearStep = 2; + // HTML elements + this.table = null; + this.element = null; + this.tbody = null; + this.firstdayname = null; + // Combo boxes + this.monthsCombo = null; + this.yearsCombo = null; + this.hilitedMonth = null; + this.activeMonth = null; + this.hilitedYear = null; + this.activeYear = null; + // Information + this.dateClicked = false; + + // one-time initializations + if (typeof Calendar._SDN == "undefined") { + // table of short day names + if (typeof Calendar._SDN_len == "undefined") + Calendar._SDN_len = 3; + var ar = new Array(); + for (var i = 8; i > 0;) { + ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); + } + Calendar._SDN = ar; + // table of short month names + if (typeof Calendar._SMN_len == "undefined") + Calendar._SMN_len = 3; + ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); + } + Calendar._SMN = ar; + } +}; + +// ** constants + +/// "static", needed for event handlers. +Calendar._C = null; + +/// detect a special case of "web browser" +Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && + !/opera/i.test(navigator.userAgent) ); + +Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); + +/// detect Opera browser +Calendar.is_opera = /opera/i.test(navigator.userAgent); + +/// detect KHTML-based browsers +Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); + +// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate +// library, at some point. + +Calendar.getAbsolutePos = function(el) { + var SL = 0, ST = 0; + var is_div = /^div$/i.test(el.tagName); + if (is_div && el.scrollLeft) + SL = el.scrollLeft; + if (is_div && el.scrollTop) + ST = el.scrollTop; + var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; + if (el.offsetParent) { + var tmp = this.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +Calendar.isRelated = function (el, evt) { + var related = evt.relatedTarget; + if (!related) { + var type = evt.type; + if (type == "mouseover") { + related = evt.fromElement; + } else if (type == "mouseout") { + related = evt.toElement; + } + } + while (related) { + if (related == el) { + return true; + } + related = related.parentNode; + } + return false; +}; + +Calendar.removeClass = function(el, className) { + if (!(el && el.className)) { + return; + } + var cls = el.className.split(" "); + var ar = new Array(); + for (var i = cls.length; i > 0;) { + if (cls[--i] != className) { + ar[ar.length] = cls[i]; + } + } + el.className = ar.join(" "); +}; + +Calendar.addClass = function(el, className) { + Calendar.removeClass(el, className); + el.className += " " + className; +}; + +Calendar.getElement = function(ev) { + if (Calendar.is_ie) { + return window.event.srcElement; + } else { + return ev.currentTarget; + } +}; + +Calendar.getTargetElement = function(ev) { + if (Calendar.is_ie) { + return window.event.srcElement; + } else { + return ev.target; + } +}; + +Calendar.stopEvent = function(ev) { + ev || (ev = window.event); + if (Calendar.is_ie) { + ev.cancelBubble = true; + ev.returnValue = false; + } else { + ev.preventDefault(); + ev.stopPropagation(); + } + return false; +}; + +Calendar.addEvent = function(el, evname, func) { + if (el.attachEvent) { // IE + el.attachEvent("on" + evname, func); + } else if (el.addEventListener) { // Gecko / W3C + el.addEventListener(evname, func, true); + } else { + el["on" + evname] = func; + } +}; + +Calendar.removeEvent = function(el, evname, func) { + if (el.detachEvent) { // IE + el.detachEvent("on" + evname, func); + } else if (el.removeEventListener) { // Gecko / W3C + el.removeEventListener(evname, func, true); + } else { + el["on" + evname] = null; + } +}; + +Calendar.createElement = function(type, parent) { + var el = null; + if (document.createElementNS) { + // use the XHTML namespace; IE won't normally get here unless + // _they_ "fix" the DOM2 implementation. + el = document.createElementNS("http://www.w3.org/1999/xhtml", type); + } else { + el = document.createElement(type); + } + if (typeof parent != "undefined") { + parent.appendChild(el); + } + return el; +}; + +// END: UTILITY FUNCTIONS + +// BEGIN: CALENDAR STATIC FUNCTIONS + +/** Internal -- adds a set of events to make some element behave like a button. */ +Calendar._add_evs = function(el) { + with (Calendar) { + addEvent(el, "mouseover", dayMouseOver); + addEvent(el, "mousedown", dayMouseDown); + addEvent(el, "mouseout", dayMouseOut); + if (is_ie) { + addEvent(el, "dblclick", dayMouseDblClick); + el.setAttribute("unselectable", true); + } + } +}; + +Calendar.findMonth = function(el) { + if (typeof el.month != "undefined") { + return el; + } else if (typeof el.parentNode.month != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.findYear = function(el) { + if (typeof el.year != "undefined") { + return el; + } else if (typeof el.parentNode.year != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.showMonthsCombo = function () { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var mc = cal.monthsCombo; + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + if (cal.activeMonth) { + Calendar.removeClass(cal.activeMonth, "active"); + } + var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; + Calendar.addClass(mon, "active"); + cal.activeMonth = mon; + var s = mc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var mcw = mc.offsetWidth; + if (typeof mcw == "undefined") + // Konqueror brain-dead techniques + mcw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; +}; + +Calendar.showYearsCombo = function (fwd) { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var yc = cal.yearsCombo; + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + if (cal.activeYear) { + Calendar.removeClass(cal.activeYear, "active"); + } + cal.activeYear = null; + var Y = cal.date.getFullYear() + (fwd ? 1 : -1); + var yr = yc.firstChild; + var show = false; + for (var i = 12; i > 0; --i) { + if (Y >= cal.minYear && Y <= cal.maxYear) { + yr.firstChild.data = Y; + yr.year = Y; + yr.style.display = "block"; + show = true; + } else { + yr.style.display = "none"; + } + yr = yr.nextSibling; + Y += fwd ? cal.yearStep : -cal.yearStep; + } + if (show) { + var s = yc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var ycw = yc.offsetWidth; + if (typeof ycw == "undefined") + // Konqueror brain-dead techniques + ycw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; + } +}; + +// event handlers + +Calendar.tableMouseUp = function(ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + if (cal.timeout) { + clearTimeout(cal.timeout); + } + var el = cal.activeDiv; + if (!el) { + return false; + } + var target = Calendar.getTargetElement(ev); + ev || (ev = window.event); + Calendar.removeClass(el, "active"); + if (target == el || target.parentNode == el) { + Calendar.cellClick(el, ev); + } + var mon = Calendar.findMonth(target); + var date = null; + if (mon) { + date = new Date(cal.date); + if (mon.month != date.getMonth()) { + date.setMonth(mon.month); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } else { + var year = Calendar.findYear(target); + if (year) { + date = new Date(cal.date); + if (year.year != date.getFullYear()) { + date.setFullYear(year.year); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } + } + with (Calendar) { + removeEvent(document, "mouseup", tableMouseUp); + removeEvent(document, "mouseover", tableMouseOver); + removeEvent(document, "mousemove", tableMouseOver); + cal._hideCombos(); + _C = null; + return stopEvent(ev); + } +}; + +Calendar.tableMouseOver = function (ev) { + var cal = Calendar._C; + if (!cal) { + return; + } + var el = cal.activeDiv; + var target = Calendar.getTargetElement(ev); + if (target == el || target.parentNode == el) { + Calendar.addClass(el, "hilite active"); + Calendar.addClass(el.parentNode, "rowhilite"); + } else { + if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) + Calendar.removeClass(el, "active"); + Calendar.removeClass(el, "hilite"); + Calendar.removeClass(el.parentNode, "rowhilite"); + } + ev || (ev = window.event); + if (el.navtype == 50 && target != el) { + var pos = Calendar.getAbsolutePos(el); + var w = el.offsetWidth; + var x = ev.clientX; + var dx; + var decrease = true; + if (x > pos.x + w) { + dx = x - pos.x - w; + decrease = false; + } else + dx = pos.x - x; + + if (dx < 0) dx = 0; + var range = el._range; + var current = el._current; + var count = Math.floor(dx / 10) % range.length; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + while (count-- > 0) + if (decrease) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.firstChild.data = newval; + + cal.onUpdateTime(); + } + var mon = Calendar.findMonth(target); + if (mon) { + if (mon.month != cal.date.getMonth()) { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + Calendar.addClass(mon, "hilite"); + cal.hilitedMonth = mon; + } else if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + } else { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + var year = Calendar.findYear(target); + if (year) { + if (year.year != cal.date.getFullYear()) { + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + Calendar.addClass(year, "hilite"); + cal.hilitedYear = year; + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.tableMouseDown = function (ev) { + if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { + return Calendar.stopEvent(ev); + } +}; + +Calendar.calDragIt = function (ev) { + var cal = Calendar._C; + if (!(cal && cal.dragging)) { + return false; + } + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posX = ev.pageX; + posY = ev.pageY; + } + cal.hideShowCovered(); + var st = cal.element.style; + st.left = (posX - cal.xOffs) + "px"; + st.top = (posY - cal.yOffs) + "px"; + return Calendar.stopEvent(ev); +}; + +Calendar.calDragEnd = function (ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + cal.dragging = false; + with (Calendar) { + removeEvent(document, "mousemove", calDragIt); + removeEvent(document, "mouseup", calDragEnd); + tableMouseUp(ev); + } + cal.hideShowCovered(); +}; + +Calendar.dayMouseDown = function(ev) { + var el = Calendar.getElement(ev); + if (el.disabled) { + return false; + } + var cal = el.calendar; + cal.activeDiv = el; + Calendar._C = cal; + if (el.navtype != 300) with (Calendar) { + if (el.navtype == 50) { + el._current = el.firstChild.data; + addEvent(document, "mousemove", tableMouseOver); + } else + addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); + addClass(el, "hilite active"); + addEvent(document, "mouseup", tableMouseUp); + } else if (cal.isPopup) { + cal._dragStart(ev); + } + if (el.navtype == -1 || el.navtype == 1) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); + } else if (el.navtype == -2 || el.navtype == 2) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); + } else { + cal.timeout = null; + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseDblClick = function(ev) { + Calendar.cellClick(Calendar.getElement(ev), ev || window.event); + if (Calendar.is_ie) { + document.selection.empty(); + } +}; + +Calendar.dayMouseOver = function(ev) { + var el = Calendar.getElement(ev); + if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { + return false; + } + if (el.ttip) { + if (el.ttip.substr(0, 1) == "_") { + el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); + } + el.calendar.tooltips.firstChild.data = el.ttip; + } + if (el.navtype != 300) { + Calendar.addClass(el, "hilite"); + if (el.caldate) { + Calendar.addClass(el.parentNode, "rowhilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseOut = function(ev) { + with (Calendar) { + var el = getElement(ev); + if (isRelated(el, ev) || _C || el.disabled) { + return false; + } + removeClass(el, "hilite"); + if (el.caldate) { + removeClass(el.parentNode, "rowhilite"); + } + el.calendar.tooltips.firstChild.data = _TT["SEL_DATE"]; + return stopEvent(ev); + } +}; + +/** + * A generic "click" handler :) handles all types of buttons defined in this + * calendar. + */ +Calendar.cellClick = function(el, ev) { + var cal = el.calendar; + var closing = false; + var newdate = false; + var date = null; + if (typeof el.navtype == "undefined") { + Calendar.removeClass(cal.currentDateEl, "selected"); + Calendar.addClass(el, "selected"); + closing = (cal.currentDateEl == el); + if (!closing) { + cal.currentDateEl = el; + } + cal.date = new Date(el.caldate); + date = cal.date; + newdate = true; + // a date was clicked + if (!(cal.dateClicked = !el.otherMonth)) + cal._init(cal.firstDayOfWeek, date); + } else { + if (el.navtype == 200) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + return; + } + date = (el.navtype == 0) ? new Date() : new Date(cal.date); + // unless "today" was clicked, we assume no date was clicked so + // the selected handler will know not to close the calenar when + // in single-click mode. + // cal.dateClicked = (el.navtype == 0); + cal.dateClicked = false; + var year = date.getFullYear(); + var mon = date.getMonth(); + function setMonth(m) { + var day = date.getDate(); + var max = date.getMonthDays(m); + if (day > max) { + date.setDate(max); + } + date.setMonth(m); + }; + switch (el.navtype) { + case 400: + Calendar.removeClass(el, "hilite"); + var text = Calendar._TT["ABOUT"]; + if (typeof text != "undefined") { + text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; + } else { + // FIXME: this should be removed as soon as lang files get updated! + text = "Help and about box text is not translated into this language.\n" + + "If you know this language and you feel generous please update\n" + + "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + + "and send it back to to get it into the distribution ;-)\n\n" + + "Thank you!\n" + + "http://dynarch.com/mishoo/calendar.epl\n"; + } + alert(text); + return; + case -2: + if (year > cal.minYear) { + date.setFullYear(year - 1); + } + break; + case -1: + if (mon > 0) { + setMonth(mon - 1); + } else if (year-- > cal.minYear) { + date.setFullYear(year); + setMonth(11); + } + break; + case 1: + if (mon < 11) { + setMonth(mon + 1); + } else if (year < cal.maxYear) { + date.setFullYear(year + 1); + setMonth(0); + } + break; + case 2: + if (year < cal.maxYear) { + date.setFullYear(year + 1); + } + break; + case 100: + cal.setFirstDayOfWeek(el.fdow); + return; + case 50: + var range = el._range; + var current = el.firstChild.data; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + if (ev && ev.shiftKey) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.firstChild.data = newval; + cal.onUpdateTime(); + return; + case 0: + // TODAY will bring us here + if ((typeof cal.getDateStatus == "function") && cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { + // remember, "date" was previously set to new + // Date() if TODAY was clicked; thus, it + // contains today date. + return false; + } + break; + } + if (!date.equalsTo(cal.date)) { + cal.setDate(date); + newdate = true; + } + } + if (newdate) { + cal.callHandler(); + } + if (closing) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + } +}; + +// END: CALENDAR STATIC FUNCTIONS + +// BEGIN: CALENDAR OBJECT FUNCTIONS + +/** + * This function creates the calendar inside the given parent. If _par is + * null than it creates a popup calendar inside the BODY element. If _par is + * an element, be it BODY, then it creates a non-popup calendar (still + * hidden). Some properties need to be set before calling this function. + */ +Calendar.prototype.create = function (_par) { + var parent = null; + if (! _par) { + // default parent is the document body, in which case we create + // a popup calendar. + parent = document.getElementsByTagName("body")[0]; + this.isPopup = true; + } else { + parent = _par; + this.isPopup = false; + } + this.date = this.dateStr ? new Date(this.dateStr) : new Date(); + + var table = Calendar.createElement("table"); + this.table = table; + table.cellSpacing = 0; + table.cellPadding = 0; + table.calendar = this; + Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); + + var div = Calendar.createElement("div"); + this.element = div; + div.className = "calendar"; + if (this.isPopup) { + div.style.position = "absolute"; + div.style.display = "none"; + } + div.appendChild(table); + + var thead = Calendar.createElement("thead", table); + var cell = null; + var row = null; + + var cal = this; + var hh = function (text, cs, navtype) { + cell = Calendar.createElement("td", row); + cell.colSpan = cs; + cell.className = "button"; + if (navtype != 0 && Math.abs(navtype) <= 2) + cell.className += " nav"; + Calendar._add_evs(cell); + cell.calendar = cal; + cell.navtype = navtype; + if (text.substr(0, 1) != "&") { + cell.appendChild(document.createTextNode(text)); + } + else { + // FIXME: dirty hack for entities + cell.innerHTML = text; + } + return cell; + }; + + row = Calendar.createElement("tr", thead); + var title_length = 6; + (this.isPopup) && --title_length; + (this.weekNumbers) && ++title_length; + + hh("?", 1, 400).ttip = Calendar._TT["INFO"]; + this.title = hh("", title_length, 300); + this.title.className = "title"; + if (this.isPopup) { + this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; + this.title.style.cursor = "move"; + hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; + } + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + this._nav_py = hh("«", 1, -2); + this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; + + this._nav_pm = hh("‹", 1, -1); + this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; + + this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); + this._nav_now.ttip = Calendar._TT["GO_TODAY"]; + + this._nav_nm = hh("›", 1, 1); + this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; + + this._nav_ny = hh("»", 1, 2); + this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; + + // day names + row = Calendar.createElement("tr", thead); + row.className = "daynames"; + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + cell.className = "name wn"; + cell.appendChild(document.createTextNode(Calendar._TT["WK"])); + } + for (var i = 7; i > 0; --i) { + cell = Calendar.createElement("td", row); + cell.appendChild(document.createTextNode("")); + if (!i) { + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + } + this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; + this._displayWeekdays(); + + var tbody = Calendar.createElement("tbody", table); + this.tbody = tbody; + + for (i = 6; i > 0; --i) { + row = Calendar.createElement("tr", tbody); + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + cell.appendChild(document.createTextNode("")); + } + for (var j = 7; j > 0; --j) { + cell = Calendar.createElement("td", row); + cell.appendChild(document.createTextNode("")); + cell.calendar = this; + Calendar._add_evs(cell); + } + } + + if (this.showsTime) { + row = Calendar.createElement("tr", tbody); + row.className = "time"; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + cell.innerHTML = Calendar._TT["TIME"] || " "; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = this.weekNumbers ? 4 : 3; + + (function(){ + function makeTimePart(className, init, range_start, range_end) { + var part = Calendar.createElement("span", cell); + part.className = className; + part.appendChild(document.createTextNode(init)); + part.calendar = cal; + part.ttip = Calendar._TT["TIME_PART"]; + part.navtype = 50; + part._range = []; + if (typeof range_start != "number") + part._range = range_start; + else { + for (var i = range_start; i <= range_end; ++i) { + var txt; + if (i < 10 && range_end >= 10) txt = '0' + i; + else txt = '' + i; + part._range[part._range.length] = txt; + } + } + Calendar._add_evs(part); + return part; + }; + var hrs = cal.date.getHours(); + var mins = cal.date.getMinutes(); + var t12 = !cal.time24; + var pm = (hrs > 12); + if (t12 && pm) hrs -= 12; + var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); + var span = Calendar.createElement("span", cell); + span.appendChild(document.createTextNode(":")); + span.className = "colon"; + var M = makeTimePart("minute", mins, 0, 59); + var AP = null; + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + if (t12) + AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); + else + cell.innerHTML = " "; + + cal.onSetTime = function() { + var hrs = this.date.getHours(); + var mins = this.date.getMinutes(); + var pm = (hrs > 12); + if (pm && t12) hrs -= 12; + H.firstChild.data = (hrs < 10) ? ("0" + hrs) : hrs; + M.firstChild.data = (mins < 10) ? ("0" + mins) : mins; + if (t12) + AP.firstChild.data = pm ? "pm" : "am"; + }; + + cal.onUpdateTime = function() { + var date = this.date; + var h = parseInt(H.firstChild.data, 10); + if (t12) { + if (/pm/i.test(AP.firstChild.data) && h < 12) + h += 12; + else if (/am/i.test(AP.firstChild.data) && h == 12) + h = 0; + } + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + date.setHours(h); + date.setMinutes(parseInt(M.firstChild.data, 10)); + date.setFullYear(y); + date.setMonth(m); + date.setDate(d); + this.dateClicked = false; + this.callHandler(); + }; + })(); + } else { + this.onSetTime = this.onUpdateTime = function() {}; + } + + var tfoot = Calendar.createElement("tfoot", table); + + row = Calendar.createElement("tr", tfoot); + row.className = "footrow"; + + cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); + cell.className = "ttip"; + if (this.isPopup) { + cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; + cell.style.cursor = "move"; + } + this.tooltips = cell; + + div = Calendar.createElement("div", this.element); + this.monthsCombo = div; + div.className = "combo"; + for (i = 0; i < Calendar._MN.length; ++i) { + var mn = Calendar.createElement("div"); + mn.className = Calendar.is_ie ? "label-IEfix" : "label"; + mn.month = i; + mn.appendChild(document.createTextNode(Calendar._SMN[i])); + div.appendChild(mn); + } + + div = Calendar.createElement("div", this.element); + this.yearsCombo = div; + div.className = "combo"; + for (i = 12; i > 0; --i) { + var yr = Calendar.createElement("div"); + yr.className = Calendar.is_ie ? "label-IEfix" : "label"; + yr.appendChild(document.createTextNode("")); + div.appendChild(yr); + } + + this._init(this.firstDayOfWeek, this.date); + parent.appendChild(this.element); +}; + +/** keyboard navigation, only for popup calendars */ +Calendar._keyEvent = function(ev) { + if (!window.calendar) { + return false; + } + (Calendar.is_ie) && (ev = window.event); + var cal = window.calendar; + var act = (Calendar.is_ie || ev.type == "keypress"); + if (ev.ctrlKey) { + switch (ev.keyCode) { + case 37: // KEY left + act && Calendar.cellClick(cal._nav_pm); + break; + case 38: // KEY up + act && Calendar.cellClick(cal._nav_py); + break; + case 39: // KEY right + act && Calendar.cellClick(cal._nav_nm); + break; + case 40: // KEY down + act && Calendar.cellClick(cal._nav_ny); + break; + default: + return false; + } + } else switch (ev.keyCode) { + case 32: // KEY space (now) + Calendar.cellClick(cal._nav_now); + break; + case 27: // KEY esc + act && cal.callCloseHandler(); + break; + case 37: // KEY left + case 38: // KEY up + case 39: // KEY right + case 40: // KEY down + if (act) { + var date = cal.date.getDate() - 1; + var el = cal.currentDateEl; + var ne = null; + var prev = (ev.keyCode == 37) || (ev.keyCode == 38); + switch (ev.keyCode) { + case 37: // KEY left + (--date >= 0) && (ne = cal.ar_days[date]); + break; + case 38: // KEY up + date -= 7; + (date >= 0) && (ne = cal.ar_days[date]); + break; + case 39: // KEY right + (++date < cal.ar_days.length) && (ne = cal.ar_days[date]); + break; + case 40: // KEY down + date += 7; + (date < cal.ar_days.length) && (ne = cal.ar_days[date]); + break; + } + if (!ne) { + if (prev) { + Calendar.cellClick(cal._nav_pm); + } else { + Calendar.cellClick(cal._nav_nm); + } + date = (prev) ? cal.date.getMonthDays() : 1; + el = cal.currentDateEl; + ne = cal.ar_days[date - 1]; + } + Calendar.removeClass(el, "selected"); + Calendar.addClass(ne, "selected"); + cal.date = new Date(ne.caldate); + cal.callHandler(); + cal.currentDateEl = ne; + } + break; + case 13: // KEY enter + if (act) { + cal.callHandler(); + cal.hide(); + } + break; + default: + return false; + } + return Calendar.stopEvent(ev); +}; + +/** + * (RE)Initializes the calendar to the given date and firstDayOfWeek + */ +Calendar.prototype._init = function (firstDayOfWeek, date) { + var today = new Date(); + this.table.style.visibility = "hidden"; + var year = date.getFullYear(); + if (year < this.minYear) { + year = this.minYear; + date.setFullYear(year); + } else if (year > this.maxYear) { + year = this.maxYear; + date.setFullYear(year); + } + this.firstDayOfWeek = firstDayOfWeek; + this.date = new Date(date); + var month = date.getMonth(); + var mday = date.getDate(); + var no_days = date.getMonthDays(); + + // calendar voodoo for computing the first day that would actually be + // displayed in the calendar, even if it's from the previous month. + // WARNING: this is magic. ;-) + date.setDate(1); + var day1 = (date.getDay() - this.firstDayOfWeek) % 7; + if (day1 < 0) + day1 += 7; + date.setDate(-day1); + date.setDate(date.getDate() + 1); + + var row = this.tbody.firstChild; + var MN = Calendar._SMN[month]; + var ar_days = new Array(); + var weekend = Calendar._TT["WEEKEND"]; + for (var i = 0; i < 6; ++i, row = row.nextSibling) { + var cell = row.firstChild; + if (this.weekNumbers) { + cell.className = "day wn"; + cell.firstChild.data = date.getWeekNumber(); + cell = cell.nextSibling; + } + row.className = "daysrow"; + var hasdays = false; + for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(date.getDate() + 1)) { + var iday = date.getDate(); + var wday = date.getDay(); + cell.className = "day"; + var current_month = (date.getMonth() == month); + if (!current_month) { + if (this.showsOtherMonths) { + cell.className += " othermonth"; + cell.otherMonth = true; + } else { + cell.className = "emptycell"; + cell.innerHTML = " "; + cell.disabled = true; + continue; + } + } else { + cell.otherMonth = false; + hasdays = true; + } + cell.disabled = false; + cell.firstChild.data = iday; + if (typeof this.getDateStatus == "function") { + var status = this.getDateStatus(date, year, month, iday); + if (status === true) { + cell.className += " disabled"; + cell.disabled = true; + } else { + if (/disabled/i.test(status)) + cell.disabled = true; + cell.className += " " + status; + } + } + if (!cell.disabled) { + ar_days[ar_days.length] = cell; + cell.caldate = new Date(date); + cell.ttip = "_"; + if (current_month && iday == mday) { + cell.className += " selected"; + this.currentDateEl = cell; + } + if (date.getFullYear() == today.getFullYear() && + date.getMonth() == today.getMonth() && + iday == today.getDate()) { + cell.className += " today"; + cell.ttip += Calendar._TT["PART_TODAY"]; + } + if (weekend.indexOf(wday.toString()) != -1) { + cell.className += cell.otherMonth ? " oweekend" : " weekend"; + } + } + } + if (!(hasdays || this.showsOtherMonths)) + row.className = "emptyrow"; + } + this.ar_days = ar_days; + this.title.firstChild.data = Calendar._MN[month] + ", " + year; + this.onSetTime(); + this.table.style.visibility = "visible"; + // PROFILE + // this.tooltips.firstChild.data = "Generated in " + ((new Date()) - today) + " ms"; +}; + +/** + * Calls _init function above for going to a certain date (but only if the + * date is different than the currently selected one). + */ +Calendar.prototype.setDate = function (date) { + if (!date.equalsTo(this.date)) { + this._init(this.firstDayOfWeek, date); + } +}; + +/** + * Refreshes the calendar. Useful if the "disabledHandler" function is + * dynamic, meaning that the list of disabled date can change at runtime. + * Just * call this function if you think that the list of disabled dates + * should * change. + */ +Calendar.prototype.refresh = function () { + this._init(this.firstDayOfWeek, this.date); +}; + +/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ +Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { + this._init(firstDayOfWeek, this.date); + this._displayWeekdays(); +}; + +/** + * Allows customization of what dates are enabled. The "unaryFunction" + * parameter must be a function object that receives the date (as a JS Date + * object) and returns a boolean value. If the returned value is true then + * the passed date will be marked as disabled. + */ +Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { + this.getDateStatus = unaryFunction; +}; + +/** Customization of allowed year range for the calendar. */ +Calendar.prototype.setRange = function (a, z) { + this.minYear = a; + this.maxYear = z; +}; + +/** Calls the first user handler (selectedHandler). */ +Calendar.prototype.callHandler = function () { + if (this.onSelected) { + this.onSelected(this, this.date.print(this.dateFormat)); + } +}; + +/** Calls the second user handler (closeHandler). */ +Calendar.prototype.callCloseHandler = function () { + if (this.onClose) { + this.onClose(this); + } + this.hideShowCovered(); +}; + +/** Removes the calendar object from the DOM tree and destroys it. */ +Calendar.prototype.destroy = function () { + var el = this.element.parentNode; + el.removeChild(this.element); + Calendar._C = null; + window.calendar = null; +}; + +/** + * Moves the calendar element to a different section in the DOM tree (changes + * its parent). + */ +Calendar.prototype.reparent = function (new_parent) { + var el = this.element; + el.parentNode.removeChild(el); + new_parent.appendChild(el); +}; + +// This gets called when the user presses a mouse button anywhere in the +// document, if the calendar is shown. If the click was outside the open +// calendar this function closes it. +Calendar._checkCalendar = function(ev) { + if (!window.calendar) { + return false; + } + var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); + for (; el != null && el != calendar.element; el = el.parentNode); + if (el == null) { + // calls closeHandler which should hide the calendar. + window.calendar.callCloseHandler(); + return Calendar.stopEvent(ev); + } +}; + +/** Shows the calendar. */ +Calendar.prototype.show = function () { + var rows = this.table.getElementsByTagName("tr"); + for (var i = rows.length; i > 0;) { + var row = rows[--i]; + Calendar.removeClass(row, "rowhilite"); + var cells = row.getElementsByTagName("td"); + for (var j = cells.length; j > 0;) { + var cell = cells[--j]; + Calendar.removeClass(cell, "hilite"); + Calendar.removeClass(cell, "active"); + } + } + this.element.style.display = "block"; + this.hidden = false; + if (this.isPopup) { + window.calendar = this; + Calendar.addEvent(document, "keydown", Calendar._keyEvent); + Calendar.addEvent(document, "keypress", Calendar._keyEvent); + Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); + } + this.hideShowCovered(); +}; + +/** + * Hides the calendar. Also removes any "hilite" from the class of any TD + * element. + */ +Calendar.prototype.hide = function () { + if (this.isPopup) { + Calendar.removeEvent(document, "keydown", Calendar._keyEvent); + Calendar.removeEvent(document, "keypress", Calendar._keyEvent); + Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); + } + this.element.style.display = "none"; + this.hidden = true; + this.hideShowCovered(); +}; + +/** + * Shows the calendar at a given absolute position (beware that, depending on + * the calendar element style -- position property -- this might be relative + * to the parent's containing rectangle). + */ +Calendar.prototype.showAt = function (x, y) { + var s = this.element.style; + s.left = x + "px"; + s.top = y + "px"; + this.show(); +}; + +/** Shows the calendar near a given element. */ +Calendar.prototype.showAtElement = function (el, opts) { + var self = this; + var p = Calendar.getAbsolutePos(el); + if (!opts || typeof opts != "string") { + this.showAt(p.x, p.y + el.offsetHeight); + return true; + } + function fixPosition(box) { + if (box.x < 0) + box.x = 0; + if (box.y < 0) + box.y = 0; + var cp = document.createElement("div"); + var s = cp.style; + s.position = "absolute"; + s.right = s.bottom = s.width = s.height = "0px"; + document.body.appendChild(cp); + var br = Calendar.getAbsolutePos(cp); + document.body.removeChild(cp); + if (Calendar.is_ie) { + br.y += document.body.scrollTop; + br.x += document.body.scrollLeft; + } else { + br.y += window.scrollY; + br.x += window.scrollX; + } + var tmp = box.x + box.width - br.x; + if (tmp > 0) box.x -= tmp; + tmp = box.y + box.height - br.y; + if (tmp > 0) box.y -= tmp; + }; + this.element.style.display = "block"; + Calendar.continuation_for_the_fucking_khtml_browser = function() { + var w = self.element.offsetWidth; + var h = self.element.offsetHeight; + self.element.style.display = "none"; + var valign = opts.substr(0, 1); + var halign = "l"; + if (opts.length > 1) { + halign = opts.substr(1, 1); + } + // vertical alignment + switch (valign) { + case "T": p.y -= h; break; + case "B": p.y += el.offsetHeight; break; + case "C": p.y += (el.offsetHeight - h) / 2; break; + case "t": p.y += el.offsetHeight - h; break; + case "b": break; // already there + } + // horizontal alignment + switch (halign) { + case "L": p.x -= w; break; + case "R": p.x += el.offsetWidth; break; + case "C": p.x += (el.offsetWidth - w) / 2; break; + case "r": p.x += el.offsetWidth - w; break; + case "l": break; // already there + } + p.width = w; + p.height = h + 40; + self.monthsCombo.style.display = "none"; + fixPosition(p); + self.showAt(p.x, p.y); + }; + if (Calendar.is_khtml) + setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); + else + Calendar.continuation_for_the_fucking_khtml_browser(); +}; + +/** Customizes the date format. */ +Calendar.prototype.setDateFormat = function (str) { + this.dateFormat = str; +}; + +/** Customizes the tooltip date format. */ +Calendar.prototype.setTtDateFormat = function (str) { + this.ttDateFormat = str; +}; + +/** + * Tries to identify the date represented in a string. If successful it also + * calls this.setDate which moves the calendar to the given date. + */ +Calendar.prototype.parseDate = function (str, fmt) { + var y = 0; + var m = -1; + var d = 0; + var a = str.split(/\W+/); + if (!fmt) { + fmt = this.dateFormat; + } + var b = fmt.match(/%./g); + var i = 0, j = 0; + var hr = 0; + var min = 0; + for (i = 0; i < a.length; ++i) { + if (!a[i]) + continue; + switch (b[i]) { + case "%d": + case "%e": + d = parseInt(a[i], 10); + break; + + case "%m": + m = parseInt(a[i], 10) - 1; + break; + + case "%Y": + case "%y": + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + break; + + case "%b": + case "%B": + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } + } + break; + + case "%H": + case "%I": + case "%k": + case "%l": + hr = parseInt(a[i], 10); + break; + + case "%P": + case "%p": + if (/pm/i.test(a[i]) && hr < 12) + hr += 12; + break; + + case "%M": + min = parseInt(a[i], 10); + break; + } + } + if (y != 0 && m != -1 && d != 0) { + this.setDate(new Date(y, m, d, hr, min, 0)); + return; + } + y = 0; m = -1; d = 0; + for (i = 0; i < a.length; ++i) { + if (a[i].search(/[a-zA-Z]+/) != -1) { + var t = -1; + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } + } + if (t != -1) { + if (m != -1) { + d = m+1; + } + m = t; + } + } else if (parseInt(a[i], 10) <= 12 && m == -1) { + m = a[i]-1; + } else if (parseInt(a[i], 10) > 31 && y == 0) { + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + } else if (d == 0) { + d = a[i]; + } + } + if (y == 0) { + var today = new Date(); + y = today.getFullYear(); + } + if (m != -1 && d != 0) { + this.setDate(new Date(y, m, d, hr, min, 0)); + } +}; + +Calendar.prototype.hideShowCovered = function () { + var self = this; + Calendar.continuation_for_the_fucking_khtml_browser = function() { + function getVisib(obj){ + var value = obj.style.visibility; + if (!value) { + if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C + if (!Calendar.is_khtml) + value = document.defaultView. + getComputedStyle(obj, "").getPropertyValue("visibility"); + else + value = ''; + } else if (obj.currentStyle) { // IE + value = obj.currentStyle.visibility; + } else + value = ''; + } + return value; + }; + + var tags = new Array("applet", "iframe", "select"); + var el = self.element; + + var p = Calendar.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + for (var k = tags.length; k > 0; ) { + var ar = document.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + + p = Calendar.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if (self.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = cc.__msh_save_visibility; + } else { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = "hidden"; + } + } + } + }; + if (Calendar.is_khtml) + setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); + else + Calendar.continuation_for_the_fucking_khtml_browser(); +}; + +/** Internal function; it displays the bar with the names of the weekday. */ +Calendar.prototype._displayWeekdays = function () { + var fdow = this.firstDayOfWeek; + var cell = this.firstdayname; + var weekend = Calendar._TT["WEEKEND"]; + for (var i = 0; i < 7; ++i) { + cell.className = "day name"; + var realday = (i + fdow) % 7; + if (i) { + cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); + cell.navtype = 100; + cell.calendar = this; + cell.fdow = realday; + Calendar._add_evs(cell); + } + if (weekend.indexOf(realday.toString()) != -1) { + Calendar.addClass(cell, "weekend"); + } + cell.firstChild.data = Calendar._SDN[(i + fdow) % 7]; + cell = cell.nextSibling; + } +}; + +/** Internal function. Hides all combo boxes that might be displayed. */ +Calendar.prototype._hideCombos = function () { + this.monthsCombo.style.display = "none"; + this.yearsCombo.style.display = "none"; +}; + +/** Internal function. Starts dragging the element. */ +Calendar.prototype._dragStart = function (ev) { + if (this.dragging) { + return; + } + this.dragging = true; + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posY = ev.clientY + window.scrollY; + posX = ev.clientX + window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + with (Calendar) { + addEvent(document, "mousemove", calDragIt); + addEvent(document, "mouseup", calDragEnd); + } +}; + +// BEGIN: DATE OBJECT PATCHES + +/** Adds the number of days array to the Date object. */ +Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); + +/** Constants used for time computations */ +Date.SECOND = 1000 /* milliseconds */; +Date.MINUTE = 60 * Date.SECOND; +Date.HOUR = 60 * Date.MINUTE; +Date.DAY = 24 * Date.HOUR; +Date.WEEK = 7 * Date.DAY; + +/** Returns the number of days in the current month */ +Date.prototype.getMonthDays = function(month) { + var year = this.getFullYear(); + if (typeof month == "undefined") { + month = this.getMonth(); + } + if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { + return 29; + } else { + return Date._MD[month]; + } +}; + +/** Returns the number of day in the year. */ +Date.prototype.getDayOfYear = function() { + var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); + var time = now - then; + return Math.floor(time / Date.DAY); +}; + +/** Returns the number of the week in year, as defined in ISO 8601. */ +Date.prototype.getWeekNumber = function() { + var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var DoW = d.getDay(); + d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu + var ms = d.valueOf(); // GMT + d.setMonth(0); + d.setDate(4); // Thu in Week 1 + return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; +}; + +/** Checks dates equality (ignores time) */ +Date.prototype.equalsTo = function(date) { + return ((this.getFullYear() == date.getFullYear()) && + (this.getMonth() == date.getMonth()) && + (this.getDate() == date.getDate()) && + (this.getHours() == date.getHours()) && + (this.getMinutes() == date.getMinutes())); +}; + +/** Prints the date in a string according to the given format. */ +Date.prototype.print = function (str) { + var m = this.getMonth(); + var d = this.getDate(); + var y = this.getFullYear(); + var wn = this.getWeekNumber(); + var w = this.getDay(); + var s = {}; + var hr = this.getHours(); + var pm = (hr >= 12); + var ir = (pm) ? (hr - 12) : hr; + var dy = this.getDayOfYear(); + if (ir == 0) + ir = 12; + var min = this.getMinutes(); + var sec = this.getSeconds(); + s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] + s["%A"] = Calendar._DN[w]; // full weekday name + s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] + s["%B"] = Calendar._MN[m]; // full month name + // FIXME: %c : preferred date and time representation for the current locale + s["%C"] = 1 + Math.floor(y / 100); // the century number + s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%e"] = d; // the day of the month (range 1 to 31) + // FIXME: %D : american date style: %m/%d/%y + // FIXME: %E, %F, %G, %g, %h (man strftime) + s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) + s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) + s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) + s["%k"] = hr; // hour, range 0 to 23 (24h format) + s["%l"] = ir; // hour, range 1 to 12 (12h format) + s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 + s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 + s["%n"] = "\n"; // a newline character + s["%p"] = pm ? "PM" : "AM"; + s["%P"] = pm ? "pm" : "am"; + // FIXME: %r : the time in am/pm notation %I:%M:%S %p + // FIXME: %R : the time in 24-hour notation %H:%M + s["%s"] = Math.floor(this.getTime() / 1000); + s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 + s["%t"] = "\t"; // a tab character + // FIXME: %T : the time in 24-hour notation (%H:%M:%S) + s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; + s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) + s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) + // FIXME: %x : preferred date representation for the current locale without the time + // FIXME: %X : preferred time representation for the current locale without the date + s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) + s["%Y"] = y; // year with the century + s["%%"] = "%"; // a literal '%' character + + var re = /%./g; + if (!Calendar.is_ie5) + return str.replace(re, function (par) { return s[par] || par; }); + + var a = str.match(re); + for (var i = 0; i < a.length; i++) { + var tmp = s[a[i]]; + if (tmp) { + re = new RegExp(a[i], 'g'); + str = str.replace(re, tmp); + } + } + + return str; +}; + +Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; +Date.prototype.setFullYear = function(y) { + var d = new Date(this); + d.__msh_oldSetFullYear(y); + if (d.getMonth() != this.getMonth()) + this.setDate(28); + this.__msh_oldSetFullYear(y); +}; + +// END: DATE OBJECT PATCHES + + +// global object that remembers the calendar +window.calendar = null; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/countryCodes/countryCodes.dat b/koha-tmpl/intranet-tmpl/prog/en/includes/countryCodes/countryCodes.dat new file mode 100644 index 0000000000..c07abd26c2 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/countryCodes/countryCodes.dat @@ -0,0 +1,14 @@ +00 = USA I +93 = Australia +94 = New Zealand +779 = Argentina +773 = Uruguay +30 = France I +84 = Spain +45 = Japan +777 = Bolivia +80 = Italy I +73 = Sweden +40 = Germany +31 = France II +254 = Ucrania diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc new file mode 100644 index 0000000000..afa64ca212 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc new file mode 100644 index 0000000000..90770a40c3 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-open.inc @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/favicon.ico b/koha-tmpl/intranet-tmpl/prog/en/includes/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..586bd559d9cd6d67a69a1e0f5b96cc7a1b95ca46 GIT binary patch literal 1406 zcmeH`J&#gB6o#Mcdf62fk=5&>a$VQ2tDr8dvVLy@KZ1gW4ht&6KOlqvJ&84;0ct8b zLT5stAc2AcC`f4dNFYGM^)3Qon{DjOzLPUK&zUos%sUwnv|%)&&3pV5K>`#lv=WC} zoYybY$?souyIp)fAHiUd;c&=cFu-cH5{X2Z&*v-_3!>2|Hk*xHF2`&(V=|dAolXgd z!?@jUMxzm}R*O_BMKYPB)9GNh+i5nN`2BuFQN&;{P%f9z>2zc=8H&Xsi9~{YK2N1m zp-?Cg2n1-i+l<F!yk0M6vl)xULa9`u-|rKP#R!E$I2;bD)hZ^FiCV3OAP6)X4YJuR zilWf#^>DddNRoss%cRq3JRT46c$|8@j??M9%$BRQD+m5-2UJx(|1%e*6}Kb^8hrb% z*Z(*;+t<=1?>J9SKYjl4b<M~2W5>w{_2Zgt^4oXsjT)``Un#HOSeN*Bzy3KdUT(2! zk)IqsJ$kn8S05Zm=7*0SZ`gR(w14luv|;_tTenrioeitH-Mt$ct<F=g?QmV(;$^zx Li?<d2^@0BY<gf51 literal 0 HcmV?d00001 diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/intranet.css b/koha-tmpl/intranet-tmpl/prog/en/includes/intranet.css new file mode 100644 index 0000000000..1ddaa5d2d0 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/intranet.css @@ -0,0 +1,46 @@ +body { + font-family : Verdana, Geneva, Arial, sans-serif; + font-size : .7em; +} + +table { + border-collapse : collapse; + border-top : 1px solid #CCCCCC; + border-right : 1px solid #CCCCCC; + margin : 1em 0; +} + +caption { + font-size : 140%; + text-align : left; + font-weight : bold; +} + +td,th { + border-left : 1px solid #CCCCCC; + border-bottom : 1px solid #CCCCCC; + padding : 5px; +} + +th { + background-color : #CCCCCC; + border-left : 1px solid #999999; + border-bottom : 1px solid #999999; +} + +th[scope=row] { + background-color : #EEEEEE; + text-align : right; +} + +input[type=submit], input[type=button] { + background-color : #6699cc; + color : #FFFFFF; + font-size : 1em; + font-weight : bold; +} + +tr.highlight td, tr.highlight th { + background-color : #EEEEEE; +} + diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/labelConfig/itemsLabelConfig.conf b/koha-tmpl/intranet-tmpl/prog/en/includes/labelConfig/itemsLabelConfig.conf new file mode 100644 index 0000000000..54048e656d --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/labelConfig/itemsLabelConfig.conf @@ -0,0 +1,8 @@ +marginBottom = 25 +pageType = A4 +columns = 5 +systemDpi = 96 +labelHeigth = 21 +rows = 13 +marginLeft = 2 +labelWidth = 41 diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/deletemem.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/deletemem.tmpl new file mode 100644 index 0000000000..0ec8e373b8 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/deletemem.tmpl @@ -0,0 +1,14 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Cannot Delete Member<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + + <h3>Cannot Delete Member</h3> + <!-- TMPL_IF name="ItemsOnIssues" --> + Member has <!-- TMPL_VAR name="ItemsOnIssues" --> item(s) checked out. + <!-- /TMPL_IF --> + <!-- TMPL_IF name="charges --> + Member has <!-- TMPL_VAR name="charges" --> in fines. + <!-- /TMPL_IF --> + <!-- TMPL_IF name="guarantees" --> + Member's record has child accounts attached. + <!-- /TMPL_IF --> + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/jmemberentry.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/jmemberentry.tmpl new file mode 100644 index 0000000000..b821465319 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/jmemberentry.tmpl @@ -0,0 +1,56 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Add Child<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<form action="/cgi-bin/koha/newjmember.pl" method="post"> + <input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="member" -->" /> + <input type="hidden" name="updtype" value="I" /> + <input type="hidden" name="area" value="<!-- TMPL_VAR NAME="area" -->" /> + <input type="hidden" name="city" value="<!-- TMPL_VAR NAME="city" -->" /> + <input type="hidden" name="physstreet" value="<!-- TMPL_VAR NAME="physstreet" -->" /> + <input type="hidden" name="streetaddress" value="<!-- TMPL_VAR NAME="streetaddress" -->" /> + <input type="hidden" name="streetcity" value="<!-- TMPL_VAR NAME="streetcity" -->" /> + <input type="hidden" name="phone" value="<!-- TMPL_VAR NAME="phone" -->" /> + <input type="hidden" name="phoneday" value="<!-- TMPL_VAR NAME="phoneday" -->" /> + <input type="hidden" name="faxnumber" value="<!-- TMPL_VAR NAME="faxnumber" -->" /> + <input type="hidden" name="emailaddress" value="<!-- TMPL_VAR NAME="emailaddress" -->" /> + <input type="hidden" name="contactname" value="<!-- TMPL_VAR NAME="contactname" -->" /> + <input type="hidden" name="altphone" value"<!-- TMPL_VAR NAME="altphone" -->" /> + + <h1>Add Child</h1> +<table> + <caption>Parent or Guardian</caption> + <tr><th scope="row"><label for="firstname_guardian">First Name</label></th><td><input type="text" name="firstname_guardian" id="firstname_guardian" size="20" value="<!-- TMPL_VAR NAME="firstname" -->" /></td></tr> + <tr><th scope="row"><label for="surname_guardian">Last Name</label></th><td><input type="text" name="surname_guardian" id="surname_guardian" size="20" value="<!-- TMPL_VAR NAME="surname" -->" /></td></tr> + <tr><th scope="row"><label for="guardian_number">Library Card Number</label></th><td><input type="text" name="guardian_number" id="guardian_number" size="20" value="<!-- TMPL_VAR NAME="cardnumber" -->" /></td></tr> +</table></div> + + <div class="table"><!-- TMPL_LOOP NAME="cmemloop" --> + <table> + <caption>Child <!-- TMPL_VAR NAME="count" --></caption> + <tr> + <th scope="row"><label for="cmember">Member Number</label></th><td><!-- TMPL_VAR NAME="cmember" --></td> + </tr> + <tr> + <th scope="row"><label for="cardnumber_child_<!-- TMPL_VAR NAME="i" -->">Card Number</label></th><td><input type="text" id="cardnumber_child_<!-- TMPL_VAR NAME="i" -->" name="cardnumber_child_<!-- TMPL_VAR NAME="i" -->" size="20" value="<!-- TMPL_VAR NAME="jcardnumber" -->" /><input type="hidden" name="bornumber_child_<!-- TMPL_VAR NAME="i" -->" value="<!-- TMPL_VAR NAME="cmember" -->" /></td> + </tr> + <tr> + <th scope="row"><label for="firstname_child_<!-- TMPL_VAR NAME="i" -->">First Name(s)</label></th><td><input type="text" id="firstname_child_<!-- TMPL_VAR NAME="i" -->" name="firstname_child_<!-- TMPL_VAR NAME="i" -->" size="20" /></td></tr> + <tr><th scope="row"><label for="surname_child_<!-- TMPL_VAR NAME="i" -->">Last Name</label></th><td><input type="text" id="surname_child_<!-- TMPL_VAR NAME="i" -->" name="surname_child_<!-- TMPL_VAR NAME="i" -->" size="20" /></td></tr> + <tr><th scope="row"><label for="dateofbirth_child_<!-- TMPL_VAR NAME="i" -->">Date of Birth (<!-- TMPL_VAR NAME="dateformat" -->)</label></th><td><input type="text" name="dateofbirth_child_<!-- TMPL_VAR NAME="i" -->" id="dateofbirth_child_<!-- TMPL_VAR NAME="i" -->" size="10" /></td></tr> + <tr><th scope="row"><label for="sex_child_<!-- TMPL_VAR NAME="i" -->">Sex</label></th><td> + <input type="radio" id="sex_child_<!-- TMPL_VAR NAME="i" -->" name="sex_child_<!-- TMPL_VAR NAME="i" -->" value="F" />F + <input type="radio" name="sex_child_<!-- TMPL_VAR NAME="i" -->" value="M" />M + </td></tr> + <tr><th scope="row"><label for="school_child_<!-- TMPL_VAR NAME="i" -->">School</label></th><td><input type="text" id="school_child_<!-- TMPL_VAR NAME="i" -->" name="school_child_<!-- TMPL_VAR NAME="i" -->" size="20" ></td> + </tr> + <tr> + <th scope="row"><label for="altnotes_child_<!-- TMPL_VAR NAME="i" -->">Notes</label></th><td><textarea name="altnotes_child_<!-- TMPL_VAR NAME="i" -->" id="altnotes_child_<!-- TMPL_VAR NAME="i" -->" cols="40" rows="3"></textarea></td> + </tr> + </table> + <!-- /TMPL_LOOP --> + +<input type="submit" value="Add New Member" /> + +</form> + + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/member-flags.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/member-flags.tmpl new file mode 100644 index 0000000000..9490e0baf4 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/member-flags.tmpl @@ -0,0 +1,27 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Set Privileges for <!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --><!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<form method="post" action="/cgi-bin/koha/members/member-flags.pl"> + <input type="hidden" name="member" value="<!-- TMPL_VAR NAME="member" -->" /> + <input type="hidden" name="newflags" value="1" /> +<table> + <caption>Set Privileges for <!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></caption> + <tr><th scope="col">Flag</th><th scope="col">Name</th><th scope="col">Description</th></tr> + <!-- TMPL_LOOP NAME="loop" --> + <tr> + <td> + <input type="checkbox" id="flag-<!-- TMPL_VAR NAME="bit" -->" name="flag-<!-- TMPL_VAR NAME="bit" -->" <!-- TMPL_VAR NAME="checked" --> /> + </td> + <td> + <label for="flag-<!-- TMPL_VAR NAME="bit" -->"><!-- TMPL_VAR NAME="flag" --></label> + </td> + <td> + <!-- TMPL_VAR NAME="flagdesc" --> + </td> + </tr> + <!-- /TMPL_LOOP --> + </table> + +<input type="submit" value="Set Flags" /> + +</form> +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/member-password.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/member-password.tmpl new file mode 100644 index 0000000000..4b52057088 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/member-password.tmpl @@ -0,0 +1,23 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_IF NAME="newpassword" -->Password Updated <!-- TMPL_ELSE -->Update Password for <!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --><!-- /TMPL_IF --><!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<!-- TMPL_IF NAME="newpassword" --> +<h3>Password Updated</h3> + +<!-- TMPL_ELSE --> + +<form method="post" action="/cgi-bin/koha/members/member-password.pl"> +<h3>Change Username and/or Password for <!-- TMPL_VAR NAME="firstname" --> <!-- TMPL_VAR NAME="surname" --></h3> + + <!-- TMPL_IF NAME="warn" --> + <p>You have entered a User ID that already exists. Please choose another one.</p> + <!-- /TMPL_IF --> + +<table><tr><th scope="row">New UserID:</th><td><input type="hidden" name="member" value="<!-- TMPL_VAR NAME="member" -->" /> + +<input name="newuserid" size="20" value="<!-- TMPL_VAR NAME=userid -->" /></td></tr> +<tr><th scope="row">New Password:</th><td><input name="newpassword" type="text" size="20" value="<!-- TMPL_VAR NAME="defaultnewpassword" -->" /></td></tr></table> + +<input type="submit" value="Confirm Password" /> +</form><!-- /TMPL_IF --> + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch-results.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch-results.tmpl new file mode 100644 index 0000000000..28397f2946 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch-results.tmpl @@ -0,0 +1,41 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Koha -- Patron Quick Search<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<script type="text/javascript"> + // Set the value of the form field to the passed value and optionally shift + // focus and close the popup. + function FillForm(val,formname,formfield) { + + document.forms[formname].elements[formfield].value = val; + + // Uncomment below to shift focus after clicking link in popup. + document.forms[formname].elements[formfield].focus(); + + // Uncomment below to close popup after clicking link. + newwin.close(); + } +</script> + +<table> + <tr> + <th> </th> + <th>Card</th> + <th>Name (Cat.)</th> + <th>Address</th> + </tr> + <!-- TMPL_IF NAME="resultsloop" --> + <!-- TMPL_LOOP NAME="resultsloop" --> + <!-- TMPL_IF NAME="background" --> + <tr class="highlight"> + <!-- TMPL_ELSE --> + <tr> + <!-- /TMPL_IF --> + <td><form action="member-search-results.pl" method="get"><input type="button" value="Choose" title="Choose this Patron" onclick="window.opener.FillForm('<!-- TMPL_VAR NAME="cardnumber" -->','mainform','member'); return false;" /></form></td> + <td><!-- TMPL_VAR NAME="cardnumber" --></td> + <td><a href="/cgi-bin/koha/members/moremember.pl?bornum=<!-- TMPL_VAR NAME="borrowernumber" -->"><!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></a> (<!-- TMPL_VAR NAME="categorycode" -->)</td> + <td><!-- TMPL_VAR NAME="streetaddress" --> <!-- TMPL_VAR NAME=city --></td> + </tr> + <!-- /TMPL_LOOP --></table> + <!-- TMPL_ELSE -->No results found<!-- /TMPL_IF --> + + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch.tmpl new file mode 100644 index 0000000000..2f94c61e88 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/member-quicksearch.tmpl @@ -0,0 +1,8 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Koha -- Patron Quick Search<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + + <form action="/cgi-bin/koha/members/member.pl" method="post" id="mainform" class="mainform"> + <label for="member">Patron Search:</label><input id="member" type="text" size="25" name="member" /><input type="hidden" name="quicksearch" value="1" /> + <input type="submit" value="Search" /> + </form> + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/member.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/member.tmpl new file mode 100644 index 0000000000..0b15bba7c4 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/member.tmpl @@ -0,0 +1,31 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Member Search Results<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<table> +<caption>Member Search Results</caption> + <tr> + <th>Card</th> + <th>Name</th> + <th>Cat</th> + <th>Address</th> + <th>OD/Issues</th> + <th>Charges</th> + <th>Notes</th> + </tr> + <!-- TMPL_IF NAME="resultsloop" --> + <!-- TMPL_LOOP NAME="resultsloop" --> + + <tr> <td><!-- TMPL_VAR NAME="cardnumber" --></td> + <td><a href="/cgi-bin/koha/members/moremember.pl?bornum=<!-- TMPL_VAR NAME="borrowernumber" -->"><!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR NAME="firstname" --></a> </td> + <td><!-- TMPL_VAR NAME="categorycode" --></td> + <td><!-- TMPL_VAR NAME="streetaddress" --> <!-- TMPL_VAR NAME=city --></td> + <td><!-- TMPL_VAR NAME="odissue" --></td> + <td><!-- TMPL_VAR NAME="fines" --></td> + <td><!-- TMPL_VAR NAME="borrowernotes" --></td> +</tr> + <!-- /TMPL_LOOP --> + <!-- TMPL_ELSE --><td colspan="6">No results found</td><!-- /TMPL_IF --> +</table> + + + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/memberentry.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/memberentry.tmpl new file mode 100644 index 0000000000..e2502a1129 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/memberentry.tmpl @@ -0,0 +1,153 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --><!-- TMPL_IF NAME="modify" -->Edit Record<!-- TMPL_ELSE -->Add New <!-- TMPL_IF NAME="institution" -->Institutional <!-- /TMPL_IF -->Member<!-- /TMPL_IF --><!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + + <!-- TMPL_IF NAME="addAction" --> + <h1> + Add New <!-- TMPL_IF NAME="institution" -->Institutional <!-- /TMPL_IF -->Member + </h1> + <!-- TMPL_ELSE --> + <h1> + Update <!-- TMPL_IF NAME="institution" -->Institutional <!-- /TMPL_IF -->Member Details +</h1> +<h2><!-- TMPL_VAR NAME="surname" -->, <!-- TMPL_VAR name="firstname" --></h2> + <!-- /TMPL_IF --> + + <!-- TMPL_IF Name="NOK" --> + + <h3>Missing Information</h3> + <p>The following fields have a forbidden value. Correct them and press OK again :</p><ul> + <!-- TMPL_IF NAME="ERROR_surname" --> + <li><a href="#lastname">Last Name</a></li> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_firstname" --> + <li><a href="#firstname">First Name</a></li> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_gender" --> + <li><a href="sex">Sex</a></li> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_address" --> + <li><a href="#address">Mailing Address</a></li> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_city" --> + <li><a href="#city">Mailing Address City/State</a><br> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_cardnumber" --> + <li><a href="#cardnumber">Card Number</a></li> + <!-- /TMPL_IF --> + <!-- TMPL_IF NAME="ERROR_invalid_cardnumber" --> + <li><a href="#cardnumber">Invalid Card Number</a></li> + <!-- /TMPL_IF --> + </ul> + + <!-- /TMPL_IF --> + <form action="/cgi-bin/koha/members/memberentry.pl" method="post"> + <input type="hidden" name="destination" value="<!-- TMPL_VAR NAME="destination" -->" /> + <input type="hidden" name="type" value="borrowers" /> + <input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernumber" -->" /> + <input type="hidden" name="updtype" value="<!-- TMPL_VAR NAME="updtype" -->" /> + <input type="hidden" name="actionType" value="<!-- TMPL_VAR NAME="actionType" -->" /> + <!-- TMPL_IF NAME="addAction" --> + <input type="hidden" name="op" value="add" /> + <!-- TMPL_ELSE --> + <input type="hidden" name="op" value="modify" /> + <!-- /TMPL_IF --> +<table> + <!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="title">Salutation:</label></th><td><!-- TMPL_VAR NAME="Mr" --> + <select name="title" id="title"> + <option <!-- TMPL_VAR NAME="title_selected_ " --> value="">No Title</option> + <option value="Miss" <!-- TMPL_VAR NAME="title_Miss" -->>Miss</option> + <option value="Mrs" <!-- TMPL_VAR NAME="title_Mrs" -->>Mrs</option> + <option value="Ms" <!-- TMPL_VAR NAME="title_Ms" -->>Ms</option> + <option <!-- TMPL_VAR NAME="title_Mr" --> value="Mr" >Mr</option> + <option value="Dr" <!-- TMPL_VAR NAME="title_Dr" -->>Dr</option> + <option value="Sir" <!-- TMPL_VAR NAME="title_Sir" -->>Sir</option> + </select> + </td></tr><!-- /TMPL_UNLESS --> + <tr><th scope="row"><label for="surname"><a name="lastname" id="lastname"><!-- TMPL_IF NAME="institution" -->Institution name:<!-- TMPL_ELSE -->Last Name: <!-- /TMPL_IF --></a></label></th><td><input type="text" id="surname" name="surname" size="20" value="<!-- TMPL_VAR NAME="surname" -->"></td></tr> + + <!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="firstname"<!-- TMPL_IF NAME="ERROR_firstname" --> class="focus"<!-- /TMPL_IF -->><a name="firstname" id="firstname">First Name:</a></label> </th><td><input type="text" id="firstname" name="firstname" size="20" value="<!-- TMPL_VAR NAME="firstname" -->"<!-- TMPL_IF NAME="ERROR_firstname" --> class="focus"<!-- /TMPL_IF -->></td></tr><!-- /TMPL_UNLESS --> + + <!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="initials">Initials:</label></th><td><input type="text" id="initials" name="initials" size="5" value="<!-- TMPL_VAR NAME="initials" -->"></td></tr><!-- /TMPL_UNLESS --> + + <!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="othernames">Prefered Name:</label></th><td><input type="text" id="othernames" name="othernames" size="20" value="<!-- TMPL_VAR NAME="othernames" -->"></td></tr><!-- /TMPL_UNLESS --> + +<!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="sex"><a name="sex" id="sex">Sex:</a> </label></th><td><input type="radio" id="sex" name="sex" value="F"<!-- TMPL_IF NAME="female" --> checked="checked"<!-- /TMPL_IF -->>F <input type="radio" name="sex" value="M"<!-- TMPL_UNLESS name="female" --> checked="checked"<!-- /TMPL_UNLESS -->> M</td> +</tr><!-- /TMPL_UNLESS --> + +<!-- TMPL_UNLESS name="institution" --><tr><th scope="row"><label for="dateofbirth">Date of Birth: </label></th><td><input type="text" id="dateofbirth" name="dateofbirth" size="10" value="<!-- TMPL_VAR NAME="dateofbirth" -->"> (<!-- TMPL_VAR NAME="dateformat" -->)</td> +</tr><!-- /TMPL_UNLESS --> + + <tr><th scope="row">Addresses:</th><td><fieldset><legend>Mailing Address</legend><label for="streetaddress"<!-- TMPL_IF NAME="ERROR_address" --> class="focus"<!-- /TMPL_IF -->><a name="address" id="address">Address:</a> </label><input type="text" id="streetaddress" name="streetaddress" size="25" value="<!-- TMPL_VAR NAME="address" -->"<!-- TMPL_IF NAME="ERROR_address" --> class="focus"<!-- /TMPL_IF -->> +<br><label for="city"<!-- TMPL_IF NAME="ERROR_city" --> class="focus"<!-- /TMPL_IF -->><a name="#city" id="#city">City, State:</a></label> <input type="text" id="city" name="city" size="20" value="<!-- TMPL_VAR NAME="city" -->"<!-- TMPL_IF NAME="ERROR_city" --> class="focus"<!-- /TMPL_IF --> /> +<br><label for="zipcode">Zip Code:</label> <input type="text" id="zipcode" name="zipcode" size="20" maxlength="20" value="<!-- TMPL_VAR NAME="zipcode" -->"></fieldset> + +<fieldset><legend>Street Address (if different)</legend> +<label for="physstreet">Address:</label><input type="text" id="physstreet" name="physstreet" size="25" value="<!-- TMPL_VAR NAME="physstreet" -->" /> +<br><label for="streetcity">City, State: </label><input type="text" id="streetcity" name="streetcity" size="20" value="<!-- TMPL_VAR NAME="streetcity" -->" /> +<br><label for="homezipcode">Zip Code:</label><input type="text" id="homezipcode" name="homezipcode" size="20" maxlength="20" value="<!-- TMPL_VAR NAME="homezipcode" -->" /> +</fieldset> +</td></tr> + + <tr><th scope="row"><label for="phone">Phone (Home):</label> </th><td><input type="text" id="phone" name="phone" size="20" value="<!-- TMPL_VAR NAME="phone" -->" /></td></tr> + <tr><th scope="row"><label for="phoneday">Phone (Daytime):</label> </th><td><input type="text" id="phoneday" name="phoneday" size="20" value="<!-- TMPL_VAR NAME="phoneday" -->" /></td></tr> + <tr><th scope="row"><label for="faxnumber">Fax: </label></th><td><input type="text" id="faxnumber" name="faxnumber" size="20" value="<!-- TMPL_VAR NAME="faxnumber" -->" /></td></tr> + <tr><th scope="row"><label for="emailaddress">Email :</label> </th><td><input type="text" id="emailaddress" name="emailaddress" size="40" value="<!-- TMPL_VAR NAME="emailaddress" -->" /></td></tr> + </tr> + <tr><th scope="row"><label for="textmessaging">Member message:</label><p> (appears in OPAC)</p></th><td><textarea id="textmessaging" name="textmessaging" cols="30" rows="3"><!-- TMPL_VAR NAME="textmessaging" --></textarea></td></tr> + <tr><th scope="row"><label for="borrowernotes">Circulation note:</label> <p>(appears in Circulation)</p> </th><td><textarea id="borrowernotes" name="borrowernotes" cols="30" rows="3"><!-- TMPL_VAR NAME="borrowernotes" --></textarea></td></tr> + + <tr> + <!-- TMPL_IF NAME="addAction" --> + <th scope="row">Joining date (leave blank for today): </th> + <td><input type="text" name="joining" size="12" maxlength="10" value="<!-- TMPL_VAR name="joining" -->" /></td> + <!-- TMPL_ELSE --> + <th scope="row">Joining date: </th> + <td><!-- TMPL_VAR name="joining" --></td> + <!-- /TMPL_IF --> + </tr> + <tr> + <th scope="row">Expiry date (leave blank for auto calc): </th> + <td><input type="text" name="expiry" size="12" maxlength="10" value="<!-- TMPL_VAR name="expiry" -->" /></td> + </tr> + + </table> + + +<!-- TMPL_UNLESS name="institution" --> + <table> + <caption>Alternate Contact</caption> + <tr><th scope="row"><label for="contactname">Name: </label></th><td><input type="text" id="contactname" name="contactname" size="40" value="<!-- TMPL_VAR NAME="contactname" -->"></td></tr> + <tr><th scope="row"><label for="altphone">Phone:</label> </th><td><input type="text" id="altphone" name="altphone" size="20" value="<!-- TMPL_VAR NAME="altphone" -->"></td></tr> + <tr><th scope="row"><label for="altrelationship">Relationship:</label> </th><td><select id="altrelationship" name="altrelationship" size="1"> + <!-- TMPL_LOOP NAME="relshiploop" --> + <option <!-- TMPL_VAR NAME="selected" -->><!-- TMPL_VAR NAME="relationship" --></option> + <!-- /TMPL_LOOP --> + </select></td></tr> + <tr><th scope="row"><label for="altnotes">Notes: </label></th><td><textarea id="altnotes" name="altnotes" cols="30" rows="3"><!-- TMPL_VAR NAME="altnotes" --></textarea></td></tr> + </table><!-- /TMPL_UNLESS --> + +<table> + <caption>Flags</caption> + <!-- TMPL_LOOP NAME="flagloop" --> + <tr><th scope="row"><label for="<!-- TMPL_VAR NAME="name" -->"><!-- TMPL_VAR NAME="html" --></label></th><td><input type="radio" id="<!-- TMPL_VAR NAME="name" -->" name="<!-- TMPL_VAR NAME="name" -->" value="1" <!-- TMPL_VAR NAME="yes" -->>Yes <input type="radio" name="<!-- TMPL_VAR NAME="name" -->" value="0" <!-- TMPL_VAR NAME="no" -->>No</td></tr> + <!-- /TMPL_LOOP --> +</table> + +<table> +<caption>Member Details</caption> + <!-- TMPL_UNLESS NAME="addAction" --><tr><th scope="row"><label>Member Number:</label></th><td><span class="ex"><!-- TMPL_VAR NAME="member" --></span></td></tr><!-- /TMPL_UNLESS --> + <tr><th scope="row"><label for="categorycode">Category:</label> </th><td><!-- TMPL_VAR NAME="catcodepopup" --></td></tr> + <tr><th scope="row"><label for="branchcode">Branch:</label></th><td><!-- TMPL_VAR NAME="CGIbranch" --></td></tr> + <tr><th scope="row"><label for="cardnumber"<!-- TMPL_IF NAME="ERROR_cardnumber" --> class="focus"<!-- /TMPL_IF --><!-- TMPL_IF NAME="ERROR_invalid_cardnumber" --> class="focus"<!-- /TMPL_IF -->><a name="cardnumber" id="cardnumber">Card Number</a></label></th><td><input id="cardnumber" type="text" name="cardnumber" size="10" value="<!-- TMPL_VAR NAME="cardnumber" -->"<!-- TMPL_IF NAME="ERROR_cardnumber" --> class="focus"<!-- /TMPL_IF --><!-- TMPL_IF NAME="ERROR_invalid_cardnumber" --> class="focus"<!-- /TMPL_IF -->></td></tr> +</table> +<table><caption>Additional Fields</caption> + <tr><th scope="row"><label for="sort1">Sorting field 1</label></th><td><input type="text" id="sort1" name="sort1" value="<!-- TMPL_VAR NAME="sort1" -->"></td><td rowspan="2"><p>These fields are available for your own usage. They can be useful for statistical purposes</p></td></tr> + <tr><th scope="row"><label for="sort2">Sorting field 2</label></th><td><input type="text" id="sort2" name="sort2" value="<!-- TMPL_VAR NAME="sort2" -->"></td></tr> +</table> + + +<input type="hidden" name="type" value="<!-- TMPL_VAR NAME="type" -->"> + <input name="submit" type="submit" class="submit" value="<!-- TMPL_IF NAME="modify" -->Update<!-- TMPL_ELSE -->Add<!-- /TMPL_IF --> This Member" /> + </form> + + +<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/members-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/members-home.tmpl new file mode 100644 index 0000000000..369970eddd --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/members-home.tmpl @@ -0,0 +1,17 @@ +<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->Member Search<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> + +<title>Member Search + + +

Member Search

+ +
+ + + +
+ + diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/moremember-print.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/moremember-print.tmpl new file mode 100644 index 0000000000..1cd05aa956 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/moremember-print.tmpl @@ -0,0 +1,60 @@ +Summary for () + + + +

">Account Summary: ()

+ +
  • ,
  • +
  • (no phone number on file)
  • +
  • (no email on file)
  • +
+ + + + + + + + + + + + + class="overdue"> + + + + + + + +
Items Checked Out
TitleAuthorFormatDate DueStatus
+ + &bib=&bi="> + + Overdue! 
+ + + + + + + + + + + + + + + + + + + +
Items on Reserve
TitleAuthorFormatRequested
">
+ + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/moremember-receipt.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/moremember-receipt.tmpl new file mode 100644 index 0000000000..a939d3d6a1 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/moremember-receipt.tmpl @@ -0,0 +1,44 @@ +Print Receipt for + + + +

Athens County Library

+
+Issued To ">
+
+ + + + + + + + + + + + + + + +
Issues
Date DueTitle
&bib=&bi=">
+ + + + + + + + + + + + + + +
Overdues
Date DueTitle
&bib=&bi=">
+ + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/moremember.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/moremember.tmpl new file mode 100644 index 0000000000..5997034f06 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/moremember.tmpl @@ -0,0 +1,175 @@ +Member Details + +

()

+ +
    +
  • " />
  • +
  • " />
    " />
  • +
  • +
  • +
  • ">">
  • +
  • " />
  • +
  • " />
  • +
  • " />
  • +
+ + +
    +
  • Patron is debarred
    " />
  • +
  • Patron's address is in doubt.
  • +
  • Patron's card has been reported lost.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Borrower Information
Title (borrowers.title):
First Name (borrowers.firstname):
Last Name (borrowers.lastname):
Othernames (borrowers.othernames):
Initials (borrowers.initials):
Street Address (borrowers.streetaddress):
City (borrowers.city):
Zip Code (borrowers.zipcode):
(borrowers.physstreet):
(borrowers.streetcity):
(borrowers.homezipcode):
Home Phone (borrowers.phone):
Daytime Phone (borrowers.phoneday):
Fax (borrowers.faxnumber):
E-mail Address (borrowers.emailaddress):
Date of Birth (borrowers.dateofbirth):
Sex (borrowers.sex):
Member Number (borrowers.borrowernumber):
Category (borrowers.categorycode):
Registration Date (borrowers.dateenrolled):
Expiration Date (borrowers.expiry):
Registration Branch (borrowers.branchcode):
Ethnicity (borrowers.ethnicity):
Ethnicity Notes (borrowers.ethnotes):
Sort field 1 (borrowers.sort1):
Sort field 2 (borrowers.sort2):
OPAC login (borrowers.userid):
OPAC Password (borrowers.password):
Circulation Notes (borrowers.borrowernotes) :
Patron Message (borrowers.textmessaging):
Alternate Contact Name (borrowers.contactname):
Alternate Contact Phone (borrowers.altphone):
Alternate Contact Relationship (borrowers.altrelationship):
Alternate Contact Notes (borrowers.altnotes):
Guarantees:
Guarantor:">
+ +

Fines & Charges

+ Total Due: + + No Outstanding Charges + +
+ " /> + + + + + + + + + + + + + + + + + + + + + + + + +
Items On Loan
TitleDueItemtypeChargePriceRenewReturn
+ + &bib=&bi="> + + + + + ">Reserved + + " value="y"checked="checked" /> + + ">Return
Total Replacement Cost: 

+
+ +
" />" value="y" />
+ + + + +
+ + + + + + + + + + + + + + + + + " /> + " /> + + + +
Reserves
TitleRequestedRemove
+ "> + + + + + + +
+ +
+ diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/pay.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/pay.tmpl new file mode 100644 index 0000000000..ee91e42253 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/pay.tmpl @@ -0,0 +1,44 @@ +Pay Fines for , + +
" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pay Fines for
Fines & ChargesDescriptionAccount TypeAmountAmount Outstanding
+ " value="" /> + " value="" /> + " value="" /> + " value="" /> + " value="" /> + " value="" /> +
Total Due
+
+ + \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/members/readingrec.tmpl b/koha-tmpl/intranet-tmpl/prog/en/members/readingrec.tmpl new file mode 100644 index 0000000000..b62827575e --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/members/readingrec.tmpl @@ -0,0 +1,45 @@ +Reading Record for + + + + + + + + + + + + + + + class="highlight"> + class="onissue"> + "> + + class="onissue"> + + + class="onissue"> + class="onissue">Checked Out + + +
Reading Record for
+ &order=title&amp;limit=">Title + + &order=author&limit=">Author + Call No. + &order=returndate DESC&limit=">Return Date +
+ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/admin-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/admin-home.tmpl new file mode 100644 index 0000000000..93489c4296 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/admin-home.tmpl @@ -0,0 +1,107 @@ +Koha -- System Administration + + + +

Koha Administration

+ + + + + + + +
System Preferences
System preferencesChange essential system preferences like MARC flavor, date format, administrator e-mail, and templates.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
System parameters
For best results, configure these parameters in the order they appear
Library branchesThe different branches you manage with this Koha server.
Book fundsBook fund administration. Remember to edit your book funds before you start editing the budgets.
CurrenciesDefine exchange rates.
Item typesDefine item types.
Borrower categoriesDefine the categories of borrowers.
Issuing rulesDefine issuing rules for branches / borrowers / item types (nb of issues, duration, cost...)
Authorised valuesDefine categories and authorised values for them. Authorised values are used in MARC form to limit and help editing MARC biblios.
Thesaurus StructureDefine categories and thesaurus/authority MARC structure.
Biblio framework (MARC structure)the frameworks defined for the MARC editor. Create frameworks, then define the MARC structure (fields & subfields)
Links Koha - MARC DBDefine links between the Koha standard DB and the MARC one. Note those links can be defined through MARC structure. This tool is just a shortcut to speed up linkage.
MARC CheckChecks the MARC structure. USE IT before working with real data. It will show mistakes that can BREAK Koha's database!
Various parameters
PrintersPrinters (UNIX paths).
Stop wordsWords deleted during searches.
Z39.50 ServersServers to query for MARC data.
+ + + + + + + + + + + + + + + + + + + + + + + +
Tools
Export
MARC biblio export Exporting in MARC format.
Import
Upload MARC records to the reservoirThe reservoir is a table where imported MARC records are stored. A MARC record is stored in the reservoir as long as you have no item. When you type the ISBN or title of a biblio, it's searched for in the reservoir. If it is found, the biblio is added to Koha active table. +
Barcode generator
Generate barcodesthe barcode generator deals with generating barcodes for items you acquire +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbookfund.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbookfund.tmpl new file mode 100644 index 0000000000..1f4fc950c3 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbookfund.tmpl @@ -0,0 +1,147 @@ +Koha -- System Administration: Book Funds + +Data Recorded +Confirm Deletion of Fund '' +Data Deleted + + +

Book Fund Administration

+
+
+ + You Searched for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Book FundNameEditDelete
?op=add_form&bookfundid= ">
" method="get">" />
" method="get">" />
 Budget
" />
  + - : +
" />
" />
+
+

+
+ + + + +
" name="Aform" method="post"> + + + + + + + + + + + +
Book fund" />
Book fund
Name" />
+ +

" onclick="Check(this.form); return false;" /> '; return false;" />

+
+ + + +

Data Recorded

+
" method="post"> + +
+ + + +

Confirm Deletion of Fund

+ + + +
Book fund
Name
Group
" method="post">" />
" method="post">
+ + + +

Data Deleted

+
" method="post"> +
+ + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbudget.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbudget.tmpl new file mode 100644 index 0000000000..7d4df1c2e8 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/aqbudget.tmpl @@ -0,0 +1,133 @@ +Koha -- System Administration: Budget admin + +Budget Data Recorded +Delete Book Fund '' +Book fund deleted + + + +

Budget admin

+
+ + You Searched for + + + + + + + + + + + + + +
Book fundStart dateEnd dateBudget amount 
()">Edit">Delete
+
+

+ + + + + +
+ + +

+ + + + + + + + + + + + + + +
Book fund" />
Book fund name
" />
" /> 
" />
" />
+" />" onclick="Check(this.form)" />
+ + + +

Budget Data Recorded

+
" method="post"> + +
+ + + +

Delete Book Budget?

+ + + + +
Start date
End date
Budget Amount
+ +
" method="post">" />
" method="post">
+ + + +

Budget deleted

+
" method="post"> + +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_subfields_structure.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_subfields_structure.tmpl new file mode 100644 index 0000000000..9f04f96eef --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_subfields_structure.tmpl @@ -0,0 +1,133 @@ +Koha -- System Administration + + + + +

+ + Edit subfields + +

+
" name="Aform" method="post"> + + " /> + + + + + + +
+

Tag , Subfield

+

MARC constraints

+

+ repeatable + mandatory +

+

+ + " size="20" /> (example for 200a : '200c','200d','200e') +

+

Editor constaints

+

+ + " size="40" maxlength="80" /> +

+

+ + " size="40" maxlength="80" /> +

+

+

hidden (subfield is managed, but hidden. -should be filled by a plugin or thesaurus-)

+

URL (if checked, it means that the subfield is an URL and can be clicked

+

+ + or thesaurus: + or plugin: +

+
+ +

Note: in the last column, you can choose: +

  • An "authorised value": it refers to a list of authorised values for this subfield. See the corresponding admin table.
  • +
  • A "value builder": values builders are perl programs that help you select the value of the field. They are MARC-flavor dependant and sometimes fill another subfield automatically.
  • +
+

+
+ + + + +
+

+ Subfield + +

+
" method="post"> + + " /> + " /> + " /> + " /> +

CONFIRM DELETION

+ +
+
" method="post"> + " /> + +
+ + + + + +

Authority MARC subfield structure admin for tag (framework )(default framework)

+

This screen shows the subfields associated with the selected tag. You can edit subfields or add a new one by clicking on edit.

+ + + + + + + + + + + + + + + +
SubfieldTextConstraintsDelete
+ + + + + + + + subfield ignored + + Managed, Repeatable, Not repeatable, + Mandatory, Not mandatory, + see also : , + hidden, + is an url, + Auth value :, + Plugin :, + + + ">Delete +
+Edit +&authtypecode="> + //images/2uparrow.png" width="32" hspace="0" vspace="0" border="0"> + +<< Previous + + Next >> + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_tag_structure.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_tag_structure.tmpl new file mode 100644 index 0000000000..6192d6ee53 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/auth_tag_structure.tmpl @@ -0,0 +1,177 @@ +Koha -- System Administration + + + +

Authority MARC framework for default framework

+ + + + +

+ + Modify tag + Add tag + +

+
" name="Aform" method="post"> + + " /> +

+

" size="80" maxlength="100" />

+

" size="80" maxlength="100" />

+

+

+

(if you select a value here, the indicators will be limited to the authorised value list)

+

+
+ + + + + + + + + + + + + + " method="post"> + + "> + " /> + + + + + + + Data deleted + " method="post"> + + + + + + " method="post"> + + " /> + Create authority framework for using + + + + + + + +
+

Select an authority framework

+
" method="post"> + + " /> + + + +
+
tag
 
CONFIRM DELETION
" method="post">
+ + + + + + + + + + + + + + + + + + + + + +
TagLibRepeatableMandatoryAuthorised
value
SubfieldsEditDelete
YesNoYesNo">subfields">Edit">Delete
+
" method="post"> + + " /> + + + + ?offset=&searchfield=">Previous Page + + + ?offset=&searchfield=">Next Page + +
+ + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/authorised_values.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/authorised_values.tmpl new file mode 100644 index 0000000000..91bcbba2f3 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/authorised_values.tmpl @@ -0,0 +1,93 @@ +Koha -- System Administration: +Confirm Deletion +Authorised values admin + + + +
" name="Aform" method="post"> + + + + + + + + + + + + + + + +
" />
" />
" /> + " />
+ + + + + +

Confirm Deletion

+ + + + + + + +
VariableDescription
Value
+
" method="post"> + + " /> + " />
" method="post">
+ + + + + +

Authorised values admin

+

This table is used in MARC definition. You can define as many categories as you want, and as many authorised values as you want in each category.

+

When you define the MARC subfield structure, you can link a subfield to a authorised-value category. When the user ask for adding of modifying a biblio, +the subfield is not entered through a free field, but though a list of authorised values

+
+ + + + + + + + + + + + + + + + + +
CategoryAuthorised valueDescriptionEditDelete
">Edit">Delete
+ + +
" method="post"> +" />" /> +
+ + +
" method="post"> + +"> +
+ +
+ + +
" method="post"> +" />" /> +
+ + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/authtypes.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/authtypes.tmpl new file mode 100644 index 0000000000..175a73b1d0 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/authtypes.tmpl @@ -0,0 +1,147 @@ +Koha -- System Administration + + + + + + +
" name="Aform" method="post"> + + + + + + + + + + + + + +
Modify authority typeAdd authority type
+ " />
" />
" />Enter here the number of the tag that will be reported in the biblio (subfield by subfield). For example, in UNIMARC, enter 200 to report every 200 subfield in the 70x biblio
+

+

+
+ + + +
+

Authority structure definition for ()

+ +

+ This record is used times +

+ +

CONFIRM DELETION

+

+

" method="post"> + + " /> + +
+
" method="post"> + +
+

+ + + + +

Auth type Admin

+

Define authority types, then authority MARC structure in the same way you define itemtypes and biblio MARC tag structure. Authority values are managed through plugins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeDescriptionsummaryTag reported EditDelete
 Default framework  MARC structure  
" class="button parameters" >MARC structure?op=add_form&authtypecode=">Edit?op=delete_confirm&authtypecode=">Delete
+
" method="post"> + + + "><< Previous + ">Next >> +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/biblio_framework.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/biblio_framework.tmpl new file mode 100644 index 0000000000..91707908d7 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/biblio_framework.tmpl @@ -0,0 +1,130 @@ +Koha -- System Administration: Modify framework textAdd frameworkDelete Framework for ()?Biblio Framework + + + + + + +
" name="Aform" method="post"> + + + + + + + + + + + + + +
Modify framework textAdd framework
" />
+ " />
+

+
+ + + +

Delete ramework for ()?

+ +
This framework is used times + +

+

" method="post">" /> +
+
" method="post">
+

+ + + +

Biblio framework

+

Framework name, then go to MARC biblio to set MARC editor parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + +
CodeDescription EditDelete
 Default framework">MARC structure  
" >MARC structure?op=add_form&frameworkcode=">Edit?op=delete_confirm&frameworkcode=">Delete
+
" method="post"> + + + "><< Previous + ">Next >> +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/branches.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/branches.tmpl new file mode 100644 index 0000000000..4f98192723 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/branches.tmpl @@ -0,0 +1,215 @@ +Koha -- System Administration: +Confirm deletion of branch '' + +Confirm deletion of category + + +

+
" name="Aform" method="post"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Branch code + + " /> + + + " /> + +
Name" /> 
" />
Address" />
 " />
 " />
Phone" />
Fax" />
E-mail" />

+
+ + + +

Confirm deletion of ()?

+
" method="post"> + + " /> + "> + +
+
" method="post"> + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + +
NameCodeAddressCategory  
+ + (nothing entered) + + + + +
+ +
+ +
Ph: + +
Fax: + +
Email: + +
+ + (no categories set) + + +
+ + +
+
+ + " /> + +
+
+
+ " /> +"> + +
+
+
+

+

+
+ + + + + + + + + + + + + + + + + + + +
Branches Categories
NameCodeDescription  
+
+ + " /> + +
+
+
+ " /> + +
+
" method="post">

+ +

+
+ + + + +
+ + + + + + + + + + + + + + + +
Category code + + " /> + + + " /> + +
Name" /> 
Description" /> 
+
+ + + + Confirm delete: +
+ + " /> + +
+
" method="post"> + +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/categorie.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/categorie.tmpl new file mode 100644 index 0000000000..674dd8299e --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/categorie.tmpl @@ -0,0 +1,183 @@ +Koha -- System Administration: Modify category ''Add category +Data recorded +Confirm Deletion of Category '' +Category Deleted +Patron Categories + + + + + + + + + +
" name="Aform" method="post"> + + + +

Modify category

+ +

Add category

+ + + + + + + + + + + + + + +
Category code + " />
Category code
Description 
Enrolment period  years
Upperage limit  years
Age Required  years
Enrollment fee$
Overdue notice required 
Reserve fee$ " />
+

Update CategoryAdd Category" onclick="Check(this.form);" /> '; return false;" />

+
+ + + + +

Data recorded

+
" method="post"> + +
+ + + + + + +

Cagegory is in use. Deletion not possible!

Confirm Deletion of Category

+
This category is used times. Deletion not possible +
+ + + + + + + + +
Category code
Description
Enrolment period years
Upperage limit years
Age Required years
Enrolment fee$
Overdue notice requiredYesNo
Reserve fee$
+ +
" method="post">
+ +
" method="post"> + + " />
" method="post">
+ + + + +

Category Deleted

+ +
" method="post"> + +
+ + + +

Patron Category Administration

+ + You Searched for + +
" method="post"> + " /> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Category NameCodeEnrollment PeriodUpper Age LimitAge RequiredEnrollment FeeOverdueReservation Fee 
years years yearsYesNo
" method="get">" />
" />
" method="post"> + + +
+ + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/categoryitem.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/categoryitem.tmpl new file mode 100644 index 0000000000..c74ed49cc8 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/categoryitem.tmpl @@ -0,0 +1,306 @@ +Koha -- Modify categoryAdd category + + + + + + +

Modify category

+ +

Add category

+ + +
" name="Aform" method="post"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Category code + "> +
Category code + +
Description + "> +   +
Enrolment period + "> +
Upperage limit + "> +
Age Required + "> +
Fine type + "> +
Bulk + "> +
Enrolment fee + "> +
Overdue notice required + "> +
Issue limit + "> +
Reserve fee + "> +
  + +
+ + + + Data recorded + " method="post"> + +
+ + + TOTAL : :
+ + + + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + data deleted + + + + + + + +

Category admin

+ + You Searched for + + + " method="post"> + + + + +
+ Category code + + +
Description
Enrolment period
Upperage limit
Age Required
Fine type
Bulk
Enrolment fee
Overdue notice required
Issue limit
Reserve fee
This record is used times. Deletion not possible
+
" method="post"> + +
+
CONFIRM DELETION
+ + + + + + + + + + + + + + + + + "> + + + + + + + + + + + + +
CategoryDescriptionEnrolmentUpper Age LimitAge RequiredFineBulkFeeOverdueIssue LimitReserve  
?op=add_form&categorycode=">Edit?op=delete_confirm&categorycode=">Delete + + +
+

" method="post"> + +
+

+ + + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/charges.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/charges.tmpl new file mode 100644 index 0000000000..37b6f2e5d7 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/charges.tmpl @@ -0,0 +1,29 @@ +Koha -- System Administration: Fines + + +

Calculating Fines

+

Each box needs to be filled in with fine,time to start charging,charging cycle

+

eg 1,7,7 = $1 fine, after 7 days, every 7 days

+

Note : fines are calculated by the fines2.pl script, located in misc directory. Ask your administrator to put this script in crontab (after midnight) to have fines calculated every night

+
+
+ + + + + + + + + + + +
 
+ + "> + " value="" size="6" maxlength="10"> +
+ + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/checkmarc.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/checkmarc.tmpl new file mode 100644 index 0000000000..a791eeac5a --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/checkmarc.tmpl @@ -0,0 +1,137 @@ +Koha -- System Administration: MARC Check: + errors foundConfiguration OK! + + +

MARC Checks

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestResult
itemnum
  • The field itemnum MUST be mapped
  • +
  • The correspounding subfield MUST be in with -1 (ignore) tab
OKitemnum : the field itemnumber is mapped to a field in tab -1
item fieldsALL items fields MUST :
+
  • be mapped to the same tag,
  • +
  • and they must all be in the 10 (items) tab
OKAll item fields are in the same tag and in item tab
Item tagThere is more than 1 MARC tag related to items tab (10) :
OKOnly 1 MARC tag mapped to items
itemtype NOT mappedthe biblioitems.itemtype field MUST :
+
  • be mapped to a MARC subfield,
  • +
  • the correspounding subfield MUST have authorised_value=itemtype
OKbiblioitems.itemtype defined
homebranch NOT mappedthe items.homebranch field MUST :
+
  • be mapped to a MARC subfield,
  • +
  • the correspounding subfield MUST have authorised value=branches
OKhomebranch defined
holdingbranch NOT mappedthe items.holdingbranch field MUST :
+
  • be mapped to a MARC subfield,
  • +
  • the correspounding subfield MUST have authorised value=branches
OKholdingbranch defined
biblio and biblionumberThe biblio.biblionumber and biblioitems.biblioitemnumber fields MUST : +
  • be mapped to a MARC subfield,
  • +
  • be in the SAME tag (for example : 090$a and 090$b)
  • +
  • be in tab -1
OKbiblionumber and biblioitemnumber mapped correctly
framework valuesthere is a null value in a frameworkcode. Check the following tables
+
  • select * from marc_subfield_structure where frameworkcode is NULL
  • +
  • select * from marc_tag_structure where frameworkcode is NULL
  • +
  • select * from marc_biblio where frameworkcode is NULL
  • OKno NULL value in frameworkcode
    TOTALYou have error(s) in your MARC configuration. Please fix them before using Koha
    + + +

    Configuration OK, you don't have errors in your MARC parameters table

    + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/currency.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/currency.tmpl new file mode 100644 index 0000000000..836b02af74 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/currency.tmpl @@ -0,0 +1,190 @@ +Koha -- System Administration: +Modify currency ''Add currency +Data Recorded +Confirm Deletion of Currency '' +Currency Deleted +Currencies + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + Modify currency + + Add currency +
    Currency + " /> +
    Currency + +
    Rate + " /> +
    + + '; return false;" /> +
    + + + + +

    Data Recorded

    +
    " method="post"> +
    + + + +
    + + + + + + + + + + + + +
    Confirm Deletion of Currency
    Currency
    Rate
    + + + This currency is used times. Deletion not possible +
    " method="post"> + +
    + +
    + + " /> + +
    +
    " method="post"> + +
    + + + + +

    Currency Deleted

    +
    " method="post"> + +
    + + + + +

    Currencies Management

    + + You searched for + +
    + + +
    +
    + + + + + + + + + + + + + +
    CurrencyRate 
    " method="post">" />
    " method="get">" />
    +
    + +
    + + + + ?offset="><< Prev + + + + + ?offset=">Next >> + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/issuingrules.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/issuingrules.tmpl new file mode 100644 index 0000000000..e228ac6f69 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/issuingrules.tmpl @@ -0,0 +1,58 @@ +Koha -- System Administration: Issuing Rules + +

    Defining issuing rules for default issuing rules

    +
    +

    HINT for issues

    +

    Each box needs to be filled in with issuelength,maxissues

    +

    eq 21,5 enables 5 issues for 21 days

    + +
    +

    HINT for fines

    +

    Each box needs to be filled in with fine,time to start charging,charging cycle

    +

    eg 1,7,7 = 1 [USD,EUR,etc] fine after 7 days, every 7 days

    +

    Fines are calculated by the fines2.pl script, located in misc directory. Ask your administrator to put this script in crontab, after midnight, to have fines calculated every night

    + +
    +

    Default values

    +

    If a cell is not filled, the 1st of the following value is searched :

    +
      +
    • same branch and same borrower category, itemtype *
    • +
    • same branch and same itemtype, borrower category *
    • +
    • same itemtype and borrower category, branch *
    • +
    • everywhere
    • +
    • If nothing is set, default is 21,5 (hardcoded)
    • +
    + +
    + + + +
    +
    + + + + + + + + + + + + class="highlight"> + " value="" size="6" maxlength="10" /> / + " value="" size="6" maxlength="10" /> + + + + +
    Defining issuing rules for
     
    Issue / fine
    + + +
    + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/itemtypes.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/itemtypes.tmpl new file mode 100644 index 0000000000..59bc62f916 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/itemtypes.tmpl @@ -0,0 +1,168 @@ +Koha -- System Administration: +Modify item type ''Add item type +Cannot Delete Item Type ''Delete Item Type ''? +Data Deleted +Item Types Administration + + + + +
    " name="Aform" method="post"> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Modify item type + + Add item type +
    " />
    " /> 
    checked="checked" value="1"> (if checked, no item of this type can be issued. If not checked, every item of this type can be issued unless notforloan is set for a specific item)
    " value="1" />
    " />
    +
    + + + +
    This record is used times. Deletion is not possible. +
    + + + + + + + + + +
    Cannot Delete Item TypeDelete Item Type ''?
    Item type
    Description
    Loan length
    RenewalsAllowedNot allowed
    Rental charge
    +
    " method="post"> + " /> +
    " method="post">
    + +
    " method="post">
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Item Types Administration
    CodeDescriptionNot for LoanRenewableChargeEditDelete
    ?op=add_form&itemtype=">Yes  + time(s) + + No + +
    " method="get">" />
    " method="get">" />
    + +
    " method="post"> +

    + +'; return false;" value="<< Previous Page" /> + + + +'; return false;" value="Next Page >>" /> +

    + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/koha2marclinks.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/koha2marclinks.tmpl new file mode 100644 index 0000000000..2ed0c7de03 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/koha2marclinks.tmpl @@ -0,0 +1,137 @@ +Koha -- System Administration: + +MARC links + + + +

    +

    Choose and validate 1 of the following for .

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    " method="post"> + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    +
    " method="post"> + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    " method="post"> + + " /> + " /> +
    +
    +
    " name="Aform" method="post"> + + " /> + " /> + + +
    +
    + + + + + +

    MARC links

    +
    " method="post"> +

    +
    + + + + + + + + + + + + + + + + + +
    Koha FieldTagSubfieldLib 
    ">">Edit
    + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/marc_subfields_structure.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/marc_subfields_structure.tmpl new file mode 100644 index 0000000000..960904989a --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/marc_subfields_structure.tmpl @@ -0,0 +1,131 @@ +Koha -- System Administration: +Modify system preference ''Add a system preferenceData Added +Confirm Deletion of Parameter ''Parameter DeletedPreferences + + + + +

    + Edit MARC subfields constraints +

    +
    " name="Aform" method="post"> + + " /> + +
    ">

    Tag , Subfield

    + + + + + + +
    MARC constraints
    " name="seealso" value="" size="20" /> (example for 200a: '200c','200d','200e'...)
    + + + + + + + + +
    Editor constaints
    " type="text" name="liblibrarian" value="" size="40" maxlength="80" />
    " name="libopac" value="" size="40" maxlength="80" />
    (ignore means that the subfield is NOT managed by Koha)
    (subfield is managed, but hidden. -should be filled by a plugin or thesaurus-)
    (if checked, it means that the subfield is an URL and can be clicked
    +
      +
    • Authorized Value:
    • +
    • Thesaurus:
    • +
    • Plugin:
    • +
    • Link: " size="10" maxlength="5" /> (exemple:200b)
    • +
    +
    + + + +

    Note: in the last column, you can choose: +

    • An "authorised value": it refers to a list of authorised values for this subfield. See the corresponding admin table.
    • +
    • A "thesaurus category": it refers to a thesaurus category. See the corresponding admin table.
    • +
    • A "value builder": values builders are perl programs that help you select the value of the field. They are MARC-flavor dependant and sometimes fill another subfield automatically.
    • +
    +

    + + + + + + + + + + + + +
    Confirm Deletion of Subfield ?
    Subfield
    Description
    +
    " method="post"> + " /> + " />" />" /> +
    " method="post"> " /> " /> " /> " /> +
    + + + + + Data deleted +
    " method="post">"> + +
    + + + + +

    MARC subfield structure admin for (framework )

    +

    This screen shows the subfields associated with the selected tag. You can edit subfields or add a new one by clicking on edit.

    +

    The column Koha field shows that the subfield is linked with a Koha field. Koha can manage a MARC interface, or a Koha interface. This link ensures that both DB are synchronized, thus you can change from a MARC to a Koha interface easily.

    + + + + + + + + + + + + + + + +
    SubfieldTextConstraintsDelete
    + + + + + + + + subfield ignored + + Tab:, + | Koha field: , + Repeatable, Not repeatable, + Mandatory, Not mandatory, + | See Also: , + hidden, + is an url, + | Auth value:, + | Authority:, + | Plugin:, + | Link:, + + ">Delete
    +
    " method="get">" />" />
    " />" />
    + + //images/1leftarrow.png" title="previous" alt="previous" border="0" > + + + + //images/1rightarrow.png" title="next" alt="next" border="0" /> + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/marctagstructure.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/marctagstructure.tmpl new file mode 100644 index 0000000000..bde0940f6b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/marctagstructure.tmpl @@ -0,0 +1,206 @@ +Koha -- System Administration: + +Confirm Deletion of Tag '' +Data Deleted +MARC tag Structure + + +

    MARC tag structure admin for ()default MARC framework

    + + + + +
    " name="Aform" method="post"> + + "> + + + + + + + + +
    Modify tagAdd tag
    " size="80" maxlength="100">
    " size="80" maxlength="100">
    (if you select a value here, the indicators will be limited to the authorised value list)
    +

    +

    ?frameworkcode='; return false;" />

    +
    + + + + + + + + + +
    Confirm Deletion of Tag ?
    Tag:
    Description:
    +
    " method="post">">">
    " method="post">
    + + + + +

    Tag Deleted

    +
    " method="post">"> + +
    + + + +
    " method="post"> + + "> + Create framework for () using + + +
    + + + + + +
    " method="post"> + + + + "> + +

    + checked="checked" onchange="this.form.submit();" /> +

    +
    +

    NOTE : if you change the link between a MARC subfield and a non-MARC field, ask your administrator to run misc/rebuildnonmarc.pl script.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TagLibRepeatableMandatoryAuthorized
    value
    SubfieldsEditDelete
    YesNoYesNo">subfields">Edit">Delete
    +   + + +

    Tab: | $ + , repeatable, Mandatory, See , , , +

    + +
    YesNoYesNo">Edit Subfields">Edit">Delete
    + + ?offset=&searchfield=&frameworkcode=&select_display=True"><< Previous +
    " method="post"> + + " method="post"> + + "> + +
    + + ?offset=&searchfield=&frameworkcode=&select_display=True">Next >> + + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/printers.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/printers.tmpl new file mode 100644 index 0000000000..134bb59aed --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/printers.tmpl @@ -0,0 +1,187 @@ +Koha -- System Administration: +Modify printer ''Add printer +Printer Added +Confirm Deletion of Printer '' +Printer Deleted +Printers + + + + + + + +

    Modify printer

    + +

    Add printer

    + +
    " name="Aform" method="post"> + + + + + + + + + + + + + + + + + + + + + + +
    Printer Name + +
    Printer Name + +
    Queue" />
    Type" />

    ';" />

    +
    + + + + +

    Printer Added

    +
    " method="post"> + +
    + + + +

    Confirm Deletion of Printer

    + + + + + + + + + + + + + + + + + +
    Printer
    Queue
    Type
    + + + +
    +
    " method="post"> + + " /> + +
    " method="post"> + +
    + + + +

    Printer Deleted

    +
    " method="post"> + +
    + + + +

    Printer Admin

    + + You searched for + +
    " method="post"> + " /> + +
    + + + + + + + + + + + + + + + +
    NameQueueType 
    " method="get">" />
    " />
    +
    " method="post"> +

    + + ?offset="><< Prev + + + + ?offset=">Next >> + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/stopwords.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/stopwords.tmpl new file mode 100644 index 0000000000..218557a21a --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/stopwords.tmpl @@ -0,0 +1,156 @@ +Koha -- System Administration: +Stop Words Administration +Modify Stop WordAdd Stop Word +Stop Word Added +Confirm Deletion of Stop Word '' +Stop Word Deleted + + + + + + + +
    + + +

    Modify Stop Word

    + +

    Add Stop Word

    + + + + + + + + + + + + + +
    Stop Word +
    Stop Word: + +

    Update Stop WordAdd Stop Word " onclick="Check(this.form);" /> ';" />

    +
    + + + +

    Stop Word Added

    +
    " method="post"> + +
    + + + +

    Confirm Deletion of Stop Word

    + + + + +
    Stop Word:
    " method="post"> + + " /> +
    " method="post"> + +
    + + + +

    Stop Word Deleted

    +
    " method="post"> + +
    + + + +

    Stop Words Administration

    +
    " method="post"> + " /> + +
    + + You searched for + + + + + + + + + + + + + +
    Word 
    ?op=delete_confirm&searchfield=">Delete
    + + +
    " method="get">" />
    +
    " method="post"> + +
    +
    " method="get">" />
    + + + + + + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/systempreferences.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/systempreferences.tmpl new file mode 100644 index 0000000000..eaff113190 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/systempreferences.tmpl @@ -0,0 +1,242 @@ +Koha -- System Administration: +Modify system preference ''Add a system preferenceData Added +Confirm Deletion of Parameter ''Parameter DeletedPreferences + + + + + + + +

    Modify a system preference

    + +

    Add a system preference

    + +
    " name="Aform" method="post"> + + + + + + + +
    " />
    ">
    + " size="" /> + + + + + + + + + + Yes + + No +
    +

    Save ChangesAdd this Preference"> '; return false;" />

    + +

    Koha internal

    + Note: you should have no reasons to modify the following default values + + + +
    " size="40" maxlength="40"> (Choice, YesNo, Integer, Textarea, Float, Themes, or Languages)
    " size="60" maxlength="80" />(a choice list for Choice (separated by |) or cols|rows for Texarea)
    +
    + + + + + +

    Data recorded

    + +
    " method="post"> + +
    + + + + + + + + + + +
    Confirm Deletion of ?
    Variable Name:
    Value:
    +
    " method="post">" /> +
    " method="post">
    + + + + + + +

    Data deleted

    +
    " method="post"> + +
    + + + +

    System preferences admin

    + + + + + + + + + + + class="highlight"> + + + + + + + +
    VariableValueExplanation
    ">Edit">Delete
    + + +
    " method="post"> + + +
    + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/thesaurus.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/thesaurus.tmpl new file mode 100644 index 0000000000..0ab945a786 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/thesaurus.tmpl @@ -0,0 +1,148 @@ +Koha -- System Administration: Thesaurus Management + + + + + + + + +
    Thesaurus management
    Values related to ()
    + + + + + + + + + + + + + + + " method="post"> + +
    Other forms  
    ">Edit">Delete
    + " method="post"> + + " /> + " /> + + + + + + + +
    " name="Aform" method="post"> +

    AddModify

    + + + + + + + + + + + + + + + + + + + + +
    Category
    Authority lib" />" maxlength="80" size="80" />
    Other lib" maxlength="80" size="80" />
    +

    " /> + " /> + " /> + " /> + " /> + " /> + AddModify Value" />

    + + + + + + + + + + + + + + + +
    lib
    Value
    +
    " method="post"> + + " /> + " /> +
    CONFIRM DELETION of this entry and all entries depending on this one
    " method="post">
    + + + + +

    Thesaurus management

    +

    Manages thesaurus and authorities files.

    +
      +
    • Dig: see data dependent on this one
    • +
    • Related: see other forms of this authority entry
    • +
    +
    + + " /> +
    +
    + + + &search_category=">
    + + + + + + + + + + + + + + + + + + + + + + + + +
     Free formAuthorityDigRelatedEditDelete
      DigRelated">Edit">Delete
    + +

    " method="post"> + +

    +

    " method="post"> + + " /> + " /> + " /> + +

    + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/parameters/z3950servers.tmpl b/koha-tmpl/intranet-tmpl/prog/en/parameters/z3950servers.tmpl new file mode 100644 index 0000000000..ba4aafba96 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/parameters/z3950servers.tmpl @@ -0,0 +1,269 @@ +Koha -- System Administration: z39.50 Servers +Modify z39.50 Server Add z39.50 Server +Confirm Deletion +z39.50 Server Added +z39.50 Server Deleted + + + + +
    " name="Aform" method="post"> + + +

    Modify Z39.50 Server

    + +

    Add Z39.50 Server

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Z39.50 Server + " /> +
    Z39.50 Server + +
    Hostname + " /> +
    Port + " onblur="isNum(this)" /> +
    Database + " /> +
    Userid + " /> +
    Password + " /> +
    Checked (searched by default) + " onblur="isNum(this)" /> +
    Rank (display order) + " onblur="isNum(this)" /> +
    Syntax (z3950 can send
    + records in various format. Choose one)
    + +
    ';" /> +
    + + + +

    Z39.50 Server Added

    +
    " method="post"> + +
    + + + + +

    Confirm Deletion of Server

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Site + +
    Hostname
    Port
    Database
    Userid
    Password
    Checked
    Rank
    " method="post"> + + " />
    " method="post">
    + + + + +

    Z39.50 Server Deleted

    +
    " method="post"> + +
    + + + +

    Z39.50 Servers Admininistration

    +
    " method="post"> + " /> + +
    + + You searched for + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SiteHostname/PortDatabaseUseridPasswordCheckedRankSyntax 
    :
    " method="get">" />
    " method="get">" />
    + +
    " method="get"> + " /> + +
    +
    " method="post"> + + +
    +
    " method="get"> + " /> + +
    + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/search.marc/dictionary.tmpl b/koha-tmpl/intranet-tmpl/prog/en/search.marc/dictionary.tmpl new file mode 100644 index 0000000000..5a5db550e6 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/search.marc/dictionary.tmpl @@ -0,0 +1,136 @@ +Koha -- Dictionary Search + +

    Dictionary Search

    +
    + + + " /> + " size="35" /> + + " /> + " />
    + + + + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index="><<Previous + + + + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index="> + + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index=">Next>> + + + + + Results to of in AuthoritiesNo results found. + + + + + + + + + + + + + + + + + + +
    Authority Results
    SummaryUsed inSelect
    + + + records(s) + + ',,0)">Select | + ',,1)">Sel. & close +
    + + +

    No results in Authorities

    + + + + +

    Catalog Results

    + + + Results to of in the CatalogNo results found. + + + + + + + + + + + + + + + +
    SummaryUsed inSelect
    + + + + + + + records(s) + + ',,0)">Select | + ',,1)">Sel. & close +
    + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index="><<Previous + + + + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index="> + + + + &marclist=&search=&resultsperpage=&type=intranet&op=do_search&index=">Next>> + + + + + Results to of in the CatalogNo results found. + + + + + + + + + + \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/search.marc/result.tmpl b/koha-tmpl/intranet-tmpl/prog/en/search.marc/result.tmpl new file mode 100644 index 0000000000..46f3256ed6 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/search.marc/result.tmpl @@ -0,0 +1,71 @@ +Koha -- Catalog: MARC Search Results + + +

    Results for Search:

    + +

    You did not specify any search criteria

    + + +
    + + &=&resultsperpage=&type=intranet&op=do_search"><< + + + + + + =&resultsperpage=&type=intranet&op=do_search"> + + + + &=&&resultsperpage=&type=intranet&op=do_search">>> + + + +Results to of records.No results found. + + + + + + + + + + + + class="highlight"> + + + + + + +
    TitleCall No.CopiesLocation 

    ">

    +

    + - + ; + - + : + ; +

    (due ) ()
    ">ReservesNot Reservable
    + + + + &=&resultsperpage=&type=intranet&op=do_search"><< + + + + + + =&resultsperpage=&type=intranet&op=do_search"> + + + + &=&&resultsperpage=&type=intranet&op=do_search">>> + + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/en/search.marc/search.tmpl b/koha-tmpl/intranet-tmpl/prog/en/search.marc/search.tmpl new file mode 100644 index 0000000000..0ff7e60c8f --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/search.marc/search.tmpl @@ -0,0 +1,204 @@ +Koha -- Catalog: Advanced MARC Search + +

    Catalog Search

    +
    + + +" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Quick Search
    + + + +
    + + + + + ... +
    + + + + + ... +
    + + + + + ... +
    + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + +
    Add MARC Fields to Your Search
    + + + + value="">
    + Warning : the "contains" statement does NOT work if you enter 2 or less letters
    + +
    Results per page : + Ordered by + + +
    +

    + + +

    +
    + + + + + \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/search.marc/suggest.tmpl b/koha-tmpl/intranet-tmpl/prog/en/search.marc/suggest.tmpl new file mode 100644 index 0000000000..8945ee08e6 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/search.marc/suggest.tmpl @@ -0,0 +1,37 @@ +Koha -- Suggestions + + + + + + + + + + + + + + + +
    Catalog Search
    Initial wordSuggestedUsed X times
    ','')"> + +
    + + + + + + -- 2.39.2