View | Details | Raw Unified | Return to bug 14242
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_14242-autofill_syspref.perl (+6 lines)
Line 0 Link Here
1
$DBversion = 'XXX';
2
if( CheckVersion( $DBversion ) ) {
3
    $dbh->do(q{ INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`,`type`) VALUES ('OPACSuggestionAutoFill', '0', NULL, 'Automatically fill OPAC suggestion form with data from Google Books API','YesNo') });
4
5
    NewVersion( $DBversion, 14242, "Add OPACSuggestionAutoFill system preference");
6
}
(-)a/installer/data/mysql/mandatory/sysprefs.sql (-1 / +1 lines)
Lines 368-374 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
368
('OAI-PMH:DeletedRecord','persistent','Koha\'s deletedbiblio table will never be deleted (persistent), might be deleted (transient), or will never have any data in it (no)','transient|persistent|no','Choice'),
368
('OAI-PMH:DeletedRecord','persistent','Koha\'s deletedbiblio table will never be deleted (persistent), might be deleted (transient), or will never have any data in it (no)','transient|persistent|no','Choice'),
369
('OAI-PMH:MaxCount','50',NULL,'OAI-PMH maximum number of records by answer to ListRecords and ListIdentifiers queries','Integer'),
369
('OAI-PMH:MaxCount','50',NULL,'OAI-PMH maximum number of records by answer to ListRecords and ListIdentifiers queries','Integer'),
370
('OPACAcquisitionDetails','0','','Show the acquisition details at the OPAC','YesNo'),
370
('OPACAcquisitionDetails','0','','Show the acquisition details at the OPAC','YesNo'),
371
('OPACSuggestionAutoFill','0',NULL,'Automaticly fill forms with data from Google Books API','YesNo'),
371
('OPACSuggestionAutoFill','0',NULL,'Automatically fill OPAC suggestion form with data from Google Books API','YesNo'),
372
('OpacAddMastheadLibraryPulldown','0','','Adds a pulldown menu to select the library to search on the opac masthead.','YesNo'),
372
('OpacAddMastheadLibraryPulldown','0','','Adds a pulldown menu to select the library to search on the opac masthead.','YesNo'),
373
('OpacAdvSearchMoreOptions','pubdate,itemtype,language,subtype,sorting,location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple'),
373
('OpacAdvSearchMoreOptions','pubdate,itemtype,language,subtype,sorting,location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple'),
374
('OpacAdvSearchOptions','pubdate,itemtype,language,sorting,location','Show search options','pubdate|itemtype|language|subtype|sorting|location','multiple'),
374
('OpacAdvSearchOptions','pubdate,itemtype,language,sorting,location','Show search options','pubdate|itemtype|language|subtype|sorting|location','multiple'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref (-1 / +1 lines)
Lines 536-542 OPAC: Link Here
536
              choices:
536
              choices:
537
                  yes: Enable
537
                  yes: Enable
538
                  no: Disable
538
                  no: Disable
539
            - automatic form filling with data from Google Books API.
539
            - OPAC suggestions form automatically filling with data from Google Books API.
540
        -
540
        -
541
            - "Use the following as the OPAC ISBD template:"
541
            - "Use the following as the OPAC ISBD template:"
542
            - pref: OPACISBD
542
            - pref: OPACISBD
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc (-4 lines)
Lines 279-288 $.widget.bridge('uitooltip', $.ui.tooltip); Link Here
279
    </script>
279
    </script>
280
[% END %]
280
[% END %]
281
281
282
[% IF ( Koha.Preference('OPACSuggestionAutoFill') ) %]
283
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/autofill.js"></script>
284
[% END %]
285
286
[% IF ( BakerTaylorEnabled ) %]
282
[% IF ( BakerTaylorEnabled ) %]
287
    [% Asset.js("js/bakertaylorimages.js") | $raw %]
283
    [% Asset.js("js/bakertaylorimages.js") | $raw %]
288
    <script>
284
    <script>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-suggestions.tt (-5 / +12 lines)
Lines 65-72 Link Here
65
65
66
                            <form action="/cgi-bin/koha/opac-suggestions.pl" method="post" id="add_suggestion_form">
66
                            <form action="/cgi-bin/koha/opac-suggestions.pl" method="post" id="add_suggestion_form">
67
                                [% IF Koha.Preference( 'OPACSuggestionAutoFill' ) %]
67
                                [% IF Koha.Preference( 'OPACSuggestionAutoFill' ) %]
68
                                <fieldset class="rows well" style="margin-bottom: 3em;padding-top: 5px;">
68
                                <fieldset class="rows well" style="margin-bottom: 3em;padding: 5px;">
69
                                    <label for="isbn">Standard number (ISBN, ISSN or other):</label><input type="text" id="isbn" name="isbn"  maxlength="80" />
69
                                    <ol><li>
70
                                        <label for="isbn">Standard number (ISBN, ISSN or other):</label>
71
                                        <input type="text" id="isbn" name="isbn" maxlength="80" style="margin-right:10px;margin-top:10px;" size="15"/>
72
                                    </li></ol>
70
                                </fieldset>
73
                                </fieldset>
71
                                [% END %]
74
                                [% END %]
72
                                    <fieldset class="rows [% IF Koha.Preference( 'OPACSuggestionAutoFill' ) %]well[% END %]">
75
                                    <fieldset class="rows [% IF Koha.Preference( 'OPACSuggestionAutoFill' ) %]well[% END %]">
Lines 98-108 Link Here
98
                                                <div title="Copyright or publication year, for example: 2016">
101
                                                <div title="Copyright or publication year, for example: 2016">
99
                                                    [% IF ( copyrightdate_required ) %]
102
                                                    [% IF ( copyrightdate_required ) %]
100
                                                        <label for="copyrightdate" class="required">Copyright date:</label>
103
                                                        <label for="copyrightdate" class="required">Copyright date:</label>
101
                                                        <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="4" maxlength="4" value="[% copyrightdate | html %]" required="required" />
104
                                                        <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="10" maxlength="4" value="[% copyrightdate | html %]" required="required" />
102
                                                    <span class="required">Required</span>
105
                                                        <span class="required">Required</span>
103
                                                    [% ELSE %]
106
                                                    [% ELSE %]
104
                                                        <label for="copyrightdate">Copyright date:</label>
107
                                                        <label for="copyrightdate">Copyright date:</label>
105
                                                        <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="4" maxlength="4" value="[% copyrightdate | html %]" />
108
                                                        <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="10" maxlength="4" value="[% copyrightdate | html %]" />
106
                                                    [% END %]
109
                                                    [% END %]
107
                                                </div>
110
                                                </div>
108
                                            </li>
111
                                            </li>
Lines 470-475 Link Here
470
473
471
[% INCLUDE 'opac-bottom.inc' %]
474
[% INCLUDE 'opac-bottom.inc' %]
472
[% BLOCK jsinclude %]
475
[% BLOCK jsinclude %]
476
[% IF ( Koha.Preference("OPACSuggestionAutoFill") ) %]
477
    [% Asset.js("js/autofill.js") | $raw %]
478
[% END %]
473
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
479
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
474
[% INCLUDE 'datatables.inc' %]
480
[% INCLUDE 'datatables.inc' %]
475
<script>
481
<script>
Lines 495-500 Link Here
495
            'volumeInfo.title': {target: 'title', effect: 'flash'},
501
            'volumeInfo.title': {target: 'title', effect: 'flash'},
496
            'volumeInfo.authors': {target: 'author', effect: 'flash'},
502
            'volumeInfo.authors': {target: 'author', effect: 'flash'},
497
            'volumeInfo.publisher': {target: 'publishercode', effect: 'flash'},
503
            'volumeInfo.publisher': {target: 'publishercode', effect: 'flash'},
504
            'volumeInfo.publishedDate': {target: 'copyrightdate', effect: 'flash'},
498
            /* google books api seem to only have books, so if we got a result
505
            /* google books api seem to only have books, so if we got a result
499
             * item, type will be a book, so set to BK (book). */
506
             * item, type will be a book, so set to BK (book). */
500
            'kind': {target: 'itemtype', handle: function(t,v) { t.val('BK'); },},
507
            'kind': {target: 'itemtype', handle: function(t,v) { t.val('BK'); },},
(-)a/koha-tmpl/opac-tmpl/bootstrap/js/autofill.js (-11 / +8 lines)
Lines 1-7 Link Here
1
/*
1
/*
2
 * jQuery autofill plugin
2
 * Plugin dealing with the Google API based on jQuery autofill plugin
3
 * https://plugins.jquery.com/autofill/
3
 *
4
 *
4
 * Automaticly fills form inputs with relevant data based on search result
5
 * Automatically fills form inputs with relevant data based on search result
6
 * Modified for OPAC Suggestion form
5
 */
7
 */
6
8
7
(function ($) {
9
(function ($) {
Lines 26-36 Link Here
26
        self.fields = fields;
28
        self.fields = fields;
27
29
28
        /* decorate element as autofiller */
30
        /* decorate element as autofiller */
29
        var $inputgroup = $('<div class="input-prepend">');
31
        self.$undo = $('<input type="button" class="btn" style="display:none;margin-left:5px;" value="' + MSG_UNDO_AUTOFILL_SUGGESTION + '" />');
30
        self.$undo = $('<span class="add-on" style="display:none;cursor:pointer;">' + MSG_UNDO_AUTOFILL_SUGGESTION + '</span>');
32
        self.$fillbtn = $('<input type="button" class="btn" value="' + MSG_SEARCH_GOOGLE_BOOKS + '" />');
31
        self.$fillbtn = $('<span class="add-on" style="cursor:pointer;">' + MSG_SEARCH_GOOGLE_BOOKS + '</span>');
33
        self.$error = $('<span class="add-on" style="display:none;padding-left:5px;"></span>');
32
        self.$error = $('<span class="add-on" style="display:none;"></span>');
33
        self.$elm.wrap($inputgroup);
34
        self.$elm.after(self.$error);
34
        self.$elm.after(self.$error);
35
        self.$elm.after(self.$undo);
35
        self.$elm.after(self.$undo);
36
        self.$elm.after(self.$fillbtn);
36
        self.$elm.after(self.$fillbtn);
Lines 65-77 Link Here
65
            self.$fillbtn.fadeOut(1000).fadeIn(1000);
65
            self.$fillbtn.fadeOut(1000).fadeIn(1000);
66
            if ( self.$elm.val()) {
66
            if ( self.$elm.val()) {
67
                var gAPI = 'https://www.googleapis.com/books/v1/volumes?q=';
67
                var gAPI = 'https://www.googleapis.com/books/v1/volumes?q=';
68
                if(self.type)
69
                    gAPI += self.type + ':';
70
                gAPI += self.$elm.val().replace(/\-/g, '');
68
                gAPI += self.$elm.val().replace(/\-/g, '');
71
                gAPI += '&maxResults=1';
69
                gAPI += '&maxResults=1';
72
                $.getJSON(gAPI, function (response) {
70
                $.getJSON(gAPI, function (response) {
73
                    if(response.totalItems == 0) {
71
                    if(response.totalItems == 0) {
74
                        self.$error.html('Sorry, nothing found.');
72
                        self.$error.html(_('Sorry, nothing found.'));
75
                        self.$error.show();
73
                        self.$error.show();
76
                        return;
74
                        return;
77
                    }
75
                    }
78
- 

Return to bug 14242