Bug 20700: MARC21 add/update leader/007/008 codes
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / includes / cateditor-widgets-marc21.inc
1 <div id="editor-widget-templates" style="display:none">
2     <div id="widget-leader">
3         Leader:&nbsp;<span title="Record length (autogenerated)">#####</span>
4         <select name="f5" title="Record status">
5             <option value="a">a - Increase in encoding level</option>
6             <option value="c">c - Corrected or revised</option>
7             <option value="d">d - Deleted</option>
8             <option value="n">n - New</option>
9             <option value="p">p - Increase in encoding level from prepublication</option>
10         </select>
11         <select name="f6" title="Type of record">
12             <option value="a">a - Language material</option>
13             <option value="c">c - Notated music</option>
14             <option value="d">d - Manuscript notated music</option>
15             <option value="e">e - Cartographic material</option>
16             <option value="f">f - Manuscript cartographic material</option>
17             <option value="g">g - Projected medium</option>
18             <option value="i">i - Nonmusical sound recording</option>
19             <option value="j">j - Musical sound recording</option>
20             <option value="k">k - Two-dimensional nonprojectable graphic</option>
21             <option value="m">m - Computer file</option>
22             <option value="o">o - Kit</option>
23             <option value="p">p - Mixed materials</option>
24             <option value="r">r - Three-dimensional artifact or naturally occurring object</option>
25             <option value="t">t - Manuscript language material</option>
26         </select>
27         <select name="f7" title="Bibliographic level">
28             <option value="a">a - Monographic component part</option>
29             <option value="b">b - Serial component part</option>
30             <option value="c">c - Collection</option>
31             <option value="d">d - Subunit</option>
32             <option value="i">i - Integrating resource</option>
33             <option value="m">m - Monograph/item</option>
34             <option value="s">s - Serial</option>
35         </select>
36         <select name="f8" title="Type of control">
37                 <option value=" ">_ - No specific type</option>
38                 <option value="a">a - Archival</option>
39         </select>
40         <span title="Encoding (forced Unicode)">a</span>
41         <span title="Indicator/subfield lengths">22</span>
42         <span title="Data base address (autogenerated)">#####</span>
43         <select name="f17" title="Encoding level">
44             <option value=" ">_ - Full level</option>
45             <option value="1">1 - Full level, material not examined</option>
46             <option value="2">2 - Less-than-full level, material not examined</option>
47             <option value="3">3 - Abbreviated level</option>
48             <option value="4">4 - Core level</option>
49             <option value="5">5 - Partial (preliminary) level</option>
50             <option value="7">7 - Minimal level</option>
51             <option value="8">8 - Prepublication level</option>
52             <option value="u">u - Unknown</option>
53             <option value="z">z - Not applicable</option>
54         </select>
55         <select name="f18" title="Descriptive cataloging form">
56             <option value=" ">_ - Non-ISBD</option>
57             <option value="a">a - AACR 2</option>
58             <option value="c">c - ISBD punctuation omitted</option>
59             <option value="i">i - ISBD punctuation included</option>
60             <option value="n">n - Non-ISBD punctuation omitted</option>
61             <option value="u">u - Unknown</option>
62         </select>
63         <select name="f19" title="Multipart record resource level">
64             <option value=" ">_ - Not specified or not applicable</option>
65             <option value="a">a - Set</option>
66             <option value="b">b - Part with independent title</option>
67             <option value="c">c - Part with dependent title</option>
68         </select>
69         <span title="Length of directory elements">4500</span>
70     </div>
71 </div>
72
73 <script>
74
75 /**
76  * Each widget should provide one to three methods:
77  *   init( text ): Returns the DOM node for this widget.
78  *   postCreate( node, mark ): Optional, called once the mark has been created
79  *                             and the node shown. Bind event handlers here.
80  *   makeTemplate(): Optional, should return some sane default contents for a
81  *                   newly created field/subfield. '<empty>' will be used if this
82  *                   method is unset.
83  *
84  * Following the Koha convention, control fields are defined as tags with a
85  * single subfield, '@'.
86  */
87
88 require( [ 'widget' ], function( Widget ) {
89     Widget.Register( '000@', {
90         makeTemplate: function() {
91             return '     nam a22     7a 4500';
92         },
93         init: function() {
94             var $result = $( '<span class="subfield-widget fixed-widget"></span>' );
95
96             return $result[0];
97         },
98         postCreate: function() {
99             // Clear the length and directory start fields; these are unnecessary for MARCXML and will be filled in upon USMARC export
100             this.setFixed( 0, 5, '     ' );
101             this.setFixed( 9, 17, 'a22     ' );
102             this.setFixed( 20, 24, '4500' );
103
104             this.insertTemplate( '#widget-leader' );
105
106             this.bindFixed( '[name=f5]', 5, 6 );
107             this.bindFixed( '[name=f6]', 6, 7 );
108             this.bindFixed( '[name=f7]', 7, 8 );
109             this.bindFixed( '[name=f8]', 8, 9 );
110             this.bindFixed( '[name=f17]', 17, 18 );
111             this.bindFixed( '[name=f18]', 18, 19 );
112             this.bindFixed( '[name=f19]', 19, 20 );
113         },
114     } );
115
116     Widget.Register( '005@', {
117         init: function() {
118             var $result = $( '<span class="subfield-widget fixed-widget">' + _("Updated: ") + '</span>' );
119
120             return $result[0];
121         },
122         postCreate: function( node, mark ) {
123             var parts = this.text.match( /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d)/ );
124
125             if ( parts ) {
126                 var dateVal = new Date(
127                     parseInt( parts[1] ), // Year
128                     parseInt( parts[2] ) - 1, // Month (0-11)
129                     parseInt( parts[3] ), // Day
130                     parseInt( parts[4] ), // Hour
131                     parseInt( parts[5] ), // Minute
132                     parseInt( parts[6] ), // Second
133                     parseInt( parts[7] ) * 100 // Millisecond
134                 );
135
136                 $( this.node ).append( dateVal.toLocaleString() );
137             } else {
138                 $( this.node ).append( '<span class="hint">' + _("unset") + '</span>' );
139             }
140         }
141     } );
142
143     Widget.Register( '006@', {
144         makeTemplate: function() {
145             return "a                 ";
146         },
147         init: function() {
148             var $result = $( '<span class="subfield-widget fixed-widget">' + _("Fixed data:") + '<span class="hint widget-loading">' + _("Loading...") + '</span></span>' );
149
150             return $result[0];
151         },
152         postCreate: function( node, mark ) {
153             this.createFromXML( 'marc21/xml/006' );
154         }
155     } );
156
157     Widget.Register( '007@', {
158         makeTemplate: function() {
159             return "a       ";
160         },
161         init: function() {
162             var $result = $( '<span class="subfield-widget fixed-widget">' + _("Fixed data:") + '<span class="hint widget-loading">' + _("Loading...") + '</span></span>' );
163
164             return $result[0];
165         },
166         postCreate: function( node, mark ) {
167             this.createFromXML( 'marc21/xml/007' );
168         }
169     } );
170
171     Widget.Register( '008@', {
172         makeTemplate: function() {
173             var now = new Date();
174             return Widget.PadNum( now.getYear() % 100, 2 ) + Widget.PadNum( now.getMonth() + 1, 2 ) + Widget.PadNum( now.getDate(), 2 ) + "b        xxu||||| |||| 00| 0 [% DefaultLanguageField008 %] d";
175         },
176         init: function() {
177             var $result = $( '<span class="subfield-widget fixed-widget">' + _("Fixed data:") + '<span class="hint widget-loading">' + _("Loading...") + '</span></span>' );
178
179             return $result[0];
180         },
181         postCreate: function( node, mark ) {
182             this.createFromXML( 'marc21/xml/008' );
183         }
184     } );
185 } );
186
187 </script>