From 20e83a01717b0876b684c9b5f5cf5236e64fc58d Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Sat, 13 Jun 2020 12:36:01 +0200 Subject: [PATCH] Bug 25728: Use a svc script instead of the REST API endpoint The try to implement correctly the REST API endpoint for authorised values failed. This patch uses an easy to implement svc script for the POST route. --- koha-tmpl/intranet-tmpl/prog/js/cataloging.js | 22 +++--- svc/authorised_values | 72 +++++++++++++++++++ 2 files changed, 85 insertions(+), 9 deletions(-) create mode 100755 svc/authorised_values diff --git a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js b/koha-tmpl/intranet-tmpl/prog/js/cataloging.js index fd462b67ed..9f077d765a 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js +++ b/koha-tmpl/intranet-tmpl/prog/js/cataloging.js @@ -555,20 +555,24 @@ $(document).ready(function() { } $("#add_new_av").on("submit", function(){ - var data = { - category: $(this).find('input[name="category"]').val(), - value: $(this).find('input[name="value"]').val(), - description: $(this).find('input[name="description"]').val(), - opac_description: $(this).find('input[name="opac_description"]').val(), - }; + var category = $(this).find('input[name="category"]').val(); + var value = $(this).find('input[name="value"]').val(); + var description = $(this).find('input[name="description"]').val(); + var opac_description = $(this).find('input[name="opac_description"]').val(); + + var data = "category="+encodeURIComponent(category) + +"&value="+encodeURIComponent(value) + +"&description="+encodeURIComponent(description) + +"&opac_description="+encodeURIComponent(opac_description); + $.ajax({ type: "POST", - url: "/api/v1/authorised_values", - data:JSON.stringify(data), + url: "/cgi-bin/koha/svc/authorised_values", + data: data, success: function(response) { $('#avCreate').modal('hide'); - $(current_select2).append(''); + $(current_select2).append(''); }, error: function(err) { $("#avCreate .error").html(_("Something went wrong, maybe the value already exists?")) diff --git a/svc/authorised_values b/svc/authorised_values new file mode 100755 index 0000000000..692b82d6d7 --- /dev/null +++ b/svc/authorised_values @@ -0,0 +1,72 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Copyright 2020 Koha Development Team +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use JSON qw( to_json ); +use CGI; +use C4::Service; +use C4::Auth qw( check_cookie_auth ); +use C4::Output qw(:DEFAULT :ajax); +use Koha::AuthorisedValues; + +=head1 NAME + +svc/authorised_values - Web service for adding authorised values + +=head1 DESCRIPTION + +=cut + +our ( $query, $response ) = C4::Service->init( parameters => 'manage_auth_values' ); + +sub add_authorised_value { + my $category = $query->param('category'); + my $value = $query->param('value'); + my $description = $query->param('description'); + my $opac_description = $query->param('opac_description'); + my $image_url = $query->param('image_url'); + + eval { + my $av = Koha::AuthorisedValue->new( + { + category => $category, + authorised_value => $value, + lib => $description, + lib_opac => $opac_description, + imageurl => $image_url, + } + ); + $av->store; + $response->param( + category => $av->category, + value => $av->authorised_value, + description => $av->lib, + opac_description => $av->lib_opac, + image_url => $av->imageurl, + ); + }; + C4::Service->return_error ( $@ ) if $@; + + C4::Service->return_success( $response ); +} + +C4::Service->dispatch( + [ 'POST /', [ 'category', 'value', 'description', 'opac_description' ], \&add_authorised_value ], +); -- 2.20.1