]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/XXXX.schema.AT-def-groups.sql
LP#1749475: OPAC email/print record improvements
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.schema.AT-def-groups.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 INSERT into config.org_unit_setting_type
6 ( name, grp, label, description, datatype, fm_class ) VALUES
7 ( 'opac.email_record.allow_without_login', 'opac',
8     oils_i18n_gettext('opac.email_record.allow_without_login',
9         'Allow record emailing without login',
10         'coust', 'label'),
11     oils_i18n_gettext('opac.email_record.allow_without_login',
12         'Instead of forcing a patron to log in in order to email the details of a record, just challenge them with a simple catpcha.',
13         'coust', 'description'),
14     'bool', null)
15 ;
16
17 CREATE TABLE action_trigger.event_def_group (
18     id      SERIAL  PRIMARY KEY,
19     owner   INT     NOT NULL REFERENCES actor.org_unit (id)
20                         ON DELETE RESTRICT ON UPDATE CASCADE
21                         DEFERRABLE INITIALLY DEFERRED,
22     hook    TEXT    NOT NULL REFERENCES action_trigger.hook (key)
23                         ON DELETE RESTRICT ON UPDATE CASCADE
24                         DEFERRABLE INITIALLY DEFERRED,
25     active  BOOL    NOT NULL DEFAULT TRUE,
26     name    TEXT    NOT NULL
27 );
28 SELECT SETVAL('action_trigger.event_def_group_id_seq'::TEXT, 100, TRUE);
29
30 CREATE TABLE action_trigger.event_def_group_member (
31     id          SERIAL  PRIMARY KEY,
32     grp         INT     NOT NULL REFERENCES action_trigger.event_def_group (id)
33                             ON DELETE CASCADE ON UPDATE CASCADE
34                             DEFERRABLE INITIALLY DEFERRED,
35     event_def   INT     NOT NULL REFERENCES action_trigger.event_definition (id)
36                             ON DELETE RESTRICT ON UPDATE CASCADE
37                             DEFERRABLE INITIALLY DEFERRED,
38     sortable    BOOL    NOT NULL DEFAULT TRUE,
39     holdings    BOOL    NOT NULL DEFAULT FALSE,
40     external    BOOL    NOT NULL DEFAULT FALSE,
41     name        TEXT    NOT NULL
42 );
43
44 INSERT INTO action_trigger.event_def_group (id, owner, hook, name)
45     VALUES (1, 1, 'biblio.format.record_entry.print','Print Record(s)');
46
47 INSERT INTO action_trigger.event_def_group_member (grp, name, event_def)
48     SELECT 1, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print';
49
50 INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def)
51     SELECT 1, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.print';
52
53 INSERT INTO action_trigger.event_def_group (id, owner, hook, name)
54     VALUES (2,1,'biblio.format.record_entry.email','Email Record(s)');
55
56 INSERT INTO action_trigger.event_def_group_member (grp, name, event_def)
57     SELECT 2, 'Brief', id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email';
58
59 INSERT INTO action_trigger.event_def_group_member (grp, name, holdings, event_def)
60     SELECT 2, 'Full', TRUE, id FROM action_trigger.event_definition WHERE hook = 'biblio.format.record_entry.email';
61
62 UPDATE action_trigger.event_definition SET template = $$
63 [%- USE date -%]
64 [%- SET user = target.0.owner -%]
65 To: [%- params.recipient_email || user_data.0.email || user.email %]
66 From: [%- params.sender_email || default_sender %]
67 Date: [%- date.format(date.now, '%a, %d %b %Y %T -0000', gmt => 1) %]
68 Subject: [%- user_data.0.subject || 'Bibliographic Records' %]
69 Auto-Submitted: auto-generated
70
71 [% FOR cbreb IN target;
72
73     flesh_list = '{mra';
74     IF user_data.0.type == 'full';
75         flesh_list = flesh_list _ ',holdings_xml,acp';
76         IF params.holdings_limit;
77             flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit;
78         END;
79     END;
80     flesh_list = flesh_list _ '}';
81
82     item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
83
84 FOR item IN item_list %]
85
86 [% loop.count %]/[% loop.size %].  Bib ID# [% item.id %]
87 [% IF item.isbn %]ISBN: [% item.isbn _ "\n" %][% END -%]
88 [% IF item.issn %]ISSN: [% item.issn _ "\n" %][% END -%]
89 [% IF item.upc  %]UPC:  [% item.upc _ "\n" %][% END -%]
90 Title: [% item.title %]
91 [% IF item.author %]Author: [% item.author _ "\n" %][% END -%]
92 Publication Info: [% item.publisher %] [% item.pubdate %]
93 Item Type: [% item.item_type %]
94 [% IF user_data.0.type == 'full' && item.holdings.size == 0 %]
95  * No items for this record at the selected location
96 [% END %]
97 [% FOR cp IN item.holdings -%]
98  * Library: [% cp.circ_lib %]
99    Location: [% cp.location %]
100    Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]
101 [% IF cp.parts %]   Parts: [% cp.parts _ "\n" %][% END -%]
102    Status: [% cp.status_label %]
103    Barcode: [% cp.barcode %]
104  
105 [% END %]
106
107 [% END %]
108 [% END %]
109 $$ WHERE hook = 'biblio.format.record_entry.email';
110
111 UPDATE action_trigger.event_definition SET template = $$
112 <div>
113     <style> li { padding: 8px; margin 5px; }</style>
114     <ol>
115     [% FOR cbreb IN target;
116
117     flesh_list = '{mra';
118     IF user_data.0.type == 'full';
119         flesh_list = flesh_list _ ',holdings_xml,acp';
120         IF params.holdings_limit;
121             flimit = 'acn=>' _ params.holdings_limit _ ',acp=>' _ params.holdings_limit;
122         END;
123     END;
124     flesh_list = flesh_list _ '}';
125
126     item_list = helpers.sort_bucket_unapi_bre(cbreb.items,{flesh => flesh_list, site => user_data.0.context_org, flesh_limit => flimit}, user_data.0.sort_by, user_data.0.sort_dir);
127     FOR item IN item_list %]
128         <li>
129             Bib ID# [% item.id %]<br />
130             [% IF item.isbn %]ISBN: [% item.isbn %]<br />[% END %]
131             [% IF item.issn %]ISSN: [% item.issn %]<br />[% END %]
132             [% IF item.upc  %]UPC:  [% item.upc %]<br />[% END %]
133             Title: [% item.title %]<br />
134 [% IF item.author %]            Author: [% item.author %]<br />[% END -%]
135             Publication Info: [% item.publisher %] [% item.pubdate %]<br/>
136             Item Type: [% item.item_type %]
137             <ul>
138             [% IF user_data.0.type == 'full' && item.holdings.size == 0 %]
139                 <li>No items for this record at the selected location</li>
140             [% END %]
141             [% FOR cp IN item.holdings -%]
142                 <li>
143                     Library: [% cp.circ_lib %]<br/>
144                     Location: [% cp.location %]<br/>
145                     Call Number: [% cp.prefix _ ' ' _ cp.callnumber _ ' ' _ cp.suffix %]<br/>
146                     [% IF cp.parts %]Parts: [% cp.parts %]<br/>[% END %]
147                     Status: [% cp.status_label %]<br/>
148                     Barcode: [% cp.barcode %]
149                 </li>
150             [% END %]
151             </ul>
152         </li>
153     [% END %]
154     [% END %]
155     </ol>
156 </div>
157 $$ WHERE hook = 'biblio.format.record_entry.print';
158
159 COMMIT;
160