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/sysprefs.sql (-1 / +1 lines)
Lines 365-371 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
365
('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'),
365
('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'),
366
('OAI-PMH:MaxCount','50',NULL,'OAI-PMH maximum number of records by answer to ListRecords and ListIdentifiers queries','Integer'),
366
('OAI-PMH:MaxCount','50',NULL,'OAI-PMH maximum number of records by answer to ListRecords and ListIdentifiers queries','Integer'),
367
('OPACAcquisitionDetails','0','','Show the acquisition details at the OPAC','YesNo'),
367
('OPACAcquisitionDetails','0','','Show the acquisition details at the OPAC','YesNo'),
368
('OPACSuggestionAutoFill','0',NULL,'Automaticly fill forms with data from Google Books API','YesNo'),
368
('OPACSuggestionAutoFill','0',NULL,'Automatically fill OPAC suggestion form with data from Google Books API','YesNo'),
369
('OpacAddMastheadLibraryPulldown','0','','Adds a pulldown menu to select the library to search on the opac masthead.','YesNo'),
369
('OpacAddMastheadLibraryPulldown','0','','Adds a pulldown menu to select the library to search on the opac masthead.','YesNo'),
370
('OpacAdvSearchMoreOptions','pubdate,itemtype,language,subtype,sorting,location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple'),
370
('OpacAdvSearchMoreOptions','pubdate,itemtype,language,subtype,sorting,location','Show search options for the expanded view (More options)','pubdate|itemtype|language|subtype|sorting|location','multiple'),
371
('OpacAdvSearchOptions','pubdate,itemtype,language,sorting,location','Show search options','pubdate|itemtype|language|subtype|sorting|location','multiple'),
371
('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 532-538 OPAC: Link Here
532
              choices:
532
              choices:
533
                  yes: Enable
533
                  yes: Enable
534
                  no: Disable
534
                  no: Disable
535
            - automatic form filling with data from Google Books API.
535
            - OPAC suggestions form automatically filling with data from Google Books API.
536
        -
536
        -
537
            - "Use the following as the OPAC ISBD template:"
537
            - "Use the following as the OPAC ISBD template:"
538
            - pref: OPACISBD
538
            - 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 (-4 / +11 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 95-105 Link Here
95
                                            <div title="Copyright or publication year, for example: 2016">
98
                                            <div title="Copyright or publication year, for example: 2016">
96
                                                [% IF ( copyrightdate_required ) %]
99
                                                [% IF ( copyrightdate_required ) %]
97
                                                    <label for="copyrightdate" class="required">Copyright date:</label>
100
                                                    <label for="copyrightdate" class="required">Copyright date:</label>
98
                                                    <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="4" maxlength="4" value="[% copyrightdate | html %]" required="required" />
101
                                                    <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="10" maxlength="4" value="[% copyrightdate | html %]" required="required" />
99
                                                <span class="required">Required</span>
102
                                                <span class="required">Required</span>
100
                                                [% ELSE %]
103
                                                [% ELSE %]
101
                                                    <label for="copyrightdate">Copyright date:</label>
104
                                                    <label for="copyrightdate">Copyright date:</label>
102
                                                    <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="4" maxlength="4" value="[% copyrightdate | html %]" />
105
                                                    <input type="text" id="copyrightdate" name="copyrightdate" pattern="[12]\d{3}" size="10" maxlength="4" value="[% copyrightdate | html %]" />
103
                                                [% END %]
106
                                                [% END %]
104
                                            </div>
107
                                            </div>
105
                                        </li>
108
                                        </li>
Lines 452-457 Link Here
452
455
453
[% INCLUDE 'opac-bottom.inc' %]
456
[% INCLUDE 'opac-bottom.inc' %]
454
[% BLOCK jsinclude %]
457
[% BLOCK jsinclude %]
458
[% IF ( Koha.Preference("OPACSuggestionAutoFill") ) %]
459
    [% Asset.js("js/autofill.js") | $raw %]
460
[% END %]
455
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
461
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
456
[% INCLUDE 'datatables.inc' %]
462
[% INCLUDE 'datatables.inc' %]
457
<script>
463
<script>
Lines 477-482 Link Here
477
            'volumeInfo.title': {target: 'title', effect: 'flash'},
483
            'volumeInfo.title': {target: 'title', effect: 'flash'},
478
            'volumeInfo.authors': {target: 'author', effect: 'flash'},
484
            'volumeInfo.authors': {target: 'author', effect: 'flash'},
479
            'volumeInfo.publisher': {target: 'publishercode', effect: 'flash'},
485
            'volumeInfo.publisher': {target: 'publishercode', effect: 'flash'},
486
            'volumeInfo.publishedDate': {target: 'copyrightdate', effect: 'flash'},
480
            /* google books api seem to only have books, so if we got a result
487
            /* google books api seem to only have books, so if we got a result
481
             * item, type will be a book, so set to BK (book). */
488
             * item, type will be a book, so set to BK (book). */
482
            'kind': {target: 'itemtype', handle: function(t,v) { t.val('BK'); },},
489
            '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