Bug 15128 - Add ability to limit patrons open purchase suggestions
To test: 1 - Define a number of MaxOpenSuggestions 2 - Add some suggestions for a patron 3 - Note they cannot add any more suggestions if limit is reached 4 - Delete a suggestion and note you can add another 5 - Add them to limit again 6 - Accept a suggestion in the staff client and note user can add more 7 - Repeat above with rejecting or deleting 8 - Sign off. Sponsored by: North Central Regional Library (http://ncrl.org/) Signed-off-by: Barbara Walters <bwalters@ncrl.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
f65cf574d0
commit
7445b8f897
5 changed files with 34 additions and 4 deletions
|
@ -0,0 +1 @@
|
||||||
|
INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('MaxOpenSuggestions','',NULL,'Limit the number of open suggestions a patron can have at once, unlimited if blank','Integer')
|
|
@ -236,6 +236,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
|
||||||
('MaxItemsToDisplayForBatchDel','1000',NULL,'Display up to a given number of items in a single item deletionbatch.','Integer'),
|
('MaxItemsToDisplayForBatchDel','1000',NULL,'Display up to a given number of items in a single item deletionbatch.','Integer'),
|
||||||
('MaxItemsToProcessForBatchMod','1000',NULL,'Process up to a given number of items in a single item modification batch.','Integer'),
|
('MaxItemsToProcessForBatchMod','1000',NULL,'Process up to a given number of items in a single item modification batch.','Integer'),
|
||||||
('maxItemsInSearchResults','20',NULL,'Specify the maximum number of items to display for each result on a page of results','free'),
|
('maxItemsInSearchResults','20',NULL,'Specify the maximum number of items to display for each result on a page of results','free'),
|
||||||
|
('MaxOpenSuggestions','',NULL,'Limit the number of open suggestions a patron can have at once','Integer')
|
||||||
('maxoutstanding','5','','maximum amount withstanding to be able make holds','Integer'),
|
('maxoutstanding','5','','maximum amount withstanding to be able make holds','Integer'),
|
||||||
('maxRecordsForFacets','20',NULL,NULL,'Integer'),
|
('maxRecordsForFacets','20',NULL,NULL,'Integer'),
|
||||||
('maxreserves','50','','Define maximum number of holds a patron can place','Integer'),
|
('maxreserves','50','','Define maximum number of holds a patron can place','Integer'),
|
||||||
|
|
|
@ -571,7 +571,11 @@ OPAC:
|
||||||
yes: "Block"
|
yes: "Block"
|
||||||
no: "Don't block"
|
no: "Don't block"
|
||||||
- expired patrons from OPAC actions such as placing a hold or renewing. Note that the setting for a patron category takes priority over this system preference.
|
- expired patrons from OPAC actions such as placing a hold or renewing. Note that the setting for a patron category takes priority over this system preference.
|
||||||
|
-
|
||||||
|
- Limit patrons to
|
||||||
|
- pref: MaxOpenSuggestions
|
||||||
|
class: integer
|
||||||
|
- "open suggestions. Leave empty for no limit. **Note: this setting does not affect anonymous suggestions"
|
||||||
Privacy:
|
Privacy:
|
||||||
-
|
-
|
||||||
- pref: StoreLastBorrower
|
- pref: StoreLastBorrower
|
||||||
|
|
|
@ -28,6 +28,10 @@
|
||||||
<div class="span10">
|
<div class="span10">
|
||||||
<div id="usersuggestions" class="maincontent">
|
<div id="usersuggestions" class="maincontent">
|
||||||
[% IF ( op_add ) %]
|
[% IF ( op_add ) %]
|
||||||
|
[% IF ( Koha.Preference('MaxOpenSuggestions') && own_suggestions_count >= Koha.Preference('MaxOpenSuggestions') ) %]
|
||||||
|
<h1 class="TooManySuggestions">You cannot place any more suggestions</h1>
|
||||||
|
<h2 class="TooManySuggestionsText">You have reached your limit of suggestions you can place at this time ([% Koha.Preference('MaxOpenSuggestions') %]). Once the library has processed those suggestions you will be able to place more.</h2>
|
||||||
|
[% ELSE %]
|
||||||
<h1>Enter a new purchase suggestion</h1>
|
<h1>Enter a new purchase suggestion</h1>
|
||||||
|
|
||||||
<p>Please fill out this form to make a purchase suggestion. You will receive an email when the library processes your suggestion</p>
|
<p>Please fill out this form to make a purchase suggestion. You will receive an email when the library processes your suggestion</p>
|
||||||
|
@ -88,6 +92,7 @@
|
||||||
<input type="submit" onclick="Check(this.form); return false;" class="btn" value="Submit your suggestion" /> <a class="action" href="/cgi-bin/koha/opac-suggestions.pl">Cancel</a>
|
<input type="submit" onclick="Check(this.form); return false;" class="btn" value="Submit your suggestion" /> <a class="action" href="/cgi-bin/koha/opac-suggestions.pl">Cancel</a>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
[% END %]
|
||||||
[% END # IF op_add %]
|
[% END # IF op_add %]
|
||||||
|
|
||||||
[% IF ( op_else ) %]
|
[% IF ( op_else ) %]
|
||||||
|
@ -105,6 +110,8 @@
|
||||||
[% FOR m IN messages %]
|
[% FOR m IN messages %]
|
||||||
<div class="alert alert-[% m.type %]">
|
<div class="alert alert-[% m.type %]">
|
||||||
[% SWITCH m.code %]
|
[% SWITCH m.code %]
|
||||||
|
[% CASE 'too_many' %]
|
||||||
|
The suggestion has not been added. You have reached your limit of suggestions you can place at this time ([% Koha.Preference('MaxOpenSuggestions') %]). Once the library has processed those suggestions you will be able to place more.
|
||||||
[% CASE 'already_exists' %]
|
[% CASE 'already_exists' %]
|
||||||
The suggestion has not been added. A suggestion with this title already exists.
|
The suggestion has not been added. A suggestion with this title already exists.
|
||||||
[% CASE 'success_on_inserted' %]
|
[% CASE 'success_on_inserted' %]
|
||||||
|
@ -145,7 +152,11 @@
|
||||||
<input type="hidden" name="op" value="delete_confirm" />
|
<input type="hidden" name="op" value="delete_confirm" />
|
||||||
[% IF ( loggedinusername || ( Koha.Preference( 'AnonSuggestions' ) == 1 ) ) %]
|
[% IF ( loggedinusername || ( Koha.Preference( 'AnonSuggestions' ) == 1 ) ) %]
|
||||||
<div id="toolbar" class="toolbar clearfix">
|
<div id="toolbar" class="toolbar clearfix">
|
||||||
<a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a>
|
[% IF ( Koha.Preference('MaxOpenSuggestions') && own_suggestions_count >= Koha.Preference('MaxOpenSuggestions') ) %]
|
||||||
|
<p class="TooManySuggestionsText">You have reached your limit of suggestions you can place at this time ([% Koha.Preference('MaxOpenSuggestions') %]).</br>Once the library has processed those suggestions you will be able to place more.</p>
|
||||||
|
[% ELSE %]
|
||||||
|
<a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a>
|
||||||
|
[% END %]
|
||||||
</div>
|
</div>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
|
@ -245,7 +256,11 @@
|
||||||
<p>There are no pending purchase suggestions.</p>
|
<p>There are no pending purchase suggestions.</p>
|
||||||
[% END %]
|
[% END %]
|
||||||
[% IF ( loggedinusername || ( Koha.Preference( 'AnonSuggestions' ) == 1 ) ) %]
|
[% IF ( loggedinusername || ( Koha.Preference( 'AnonSuggestions' ) == 1 ) ) %]
|
||||||
<p><a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a></p>
|
[% IF ( Koha.Preference('MaxOpenSuggestions') && own_suggestions_count >= Koha.Preference('MaxOpenSuggestions') ) %]
|
||||||
|
<p class="TooManySuggestionsText">You have reached your limit of suggestions you can place at this time.</br>Once the library has processed those suggestions you will be able to place more</p>
|
||||||
|
[% ELSE %]
|
||||||
|
<p><a class="new" href="/cgi-bin/koha/opac-suggestions.pl?op=add">New purchase suggestion</a></p>
|
||||||
|
[% END %]
|
||||||
[% END %]
|
[% END %]
|
||||||
[% END # / IF suggestions_loop %]
|
[% END # / IF suggestions_loop %]
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,11 @@ if ( $op eq 'else' ) {
|
||||||
my $suggestions_loop =
|
my $suggestions_loop =
|
||||||
&SearchSuggestion( $suggestion);
|
&SearchSuggestion( $suggestion);
|
||||||
if ( $op eq "add_confirm" ) {
|
if ( $op eq "add_confirm" ) {
|
||||||
if (@$suggestions_loop>=1){
|
my $count_own_suggestions = $borrowernumber ? &SearchSuggestion( { suggestedby => $borrowernumber}) : 0;
|
||||||
|
if( @$count_own_suggestions >= C4::Context->preference("MaxOpenSuggestions") ){
|
||||||
|
push @messages, { type => 'error', code => 'too_many'};
|
||||||
|
}
|
||||||
|
elsif (@$suggestions_loop>=1){
|
||||||
#some suggestion are answering the request Donot Add
|
#some suggestion are answering the request Donot Add
|
||||||
for my $suggestion ( @$suggestions_loop ) {
|
for my $suggestion ( @$suggestions_loop ) {
|
||||||
push @messages, { type => 'error', code => 'already_exists', id => $suggestion->{suggestionid} };
|
push @messages, { type => 'error', code => 'already_exists', id => $suggestion->{suggestionid} };
|
||||||
|
@ -157,9 +161,13 @@ map{
|
||||||
$library ? $s->{branchcodesuggestedby} = $library->branchname : ()
|
$library ? $s->{branchcodesuggestedby} = $library->branchname : ()
|
||||||
} @$suggestions_loop;
|
} @$suggestions_loop;
|
||||||
|
|
||||||
|
my $own_suggestions_count = 0;
|
||||||
foreach my $suggestion(@$suggestions_loop) {
|
foreach my $suggestion(@$suggestions_loop) {
|
||||||
if($suggestion->{'suggestedby'} == $borrowernumber) {
|
if($suggestion->{'suggestedby'} == $borrowernumber) {
|
||||||
$suggestion->{'showcheckbox'} = $borrowernumber;
|
$suggestion->{'showcheckbox'} = $borrowernumber;
|
||||||
|
if ( $suggestion->{'STATUS'} eq 'ASKED' ) {
|
||||||
|
$own_suggestions_count++;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$suggestion->{'showcheckbox'} = 0;
|
$suggestion->{'showcheckbox'} = 0;
|
||||||
}
|
}
|
||||||
|
@ -195,6 +203,7 @@ $template->param(
|
||||||
messages => \@messages,
|
messages => \@messages,
|
||||||
suggestionsview => 1,
|
suggestionsview => 1,
|
||||||
suggested_by_anyone => $suggested_by_anyone,
|
suggested_by_anyone => $suggested_by_anyone,
|
||||||
|
own_suggestions_count => $own_suggestions_count,
|
||||||
);
|
);
|
||||||
|
|
||||||
output_html_with_http_headers $input, $cookie, $template->output;
|
output_html_with_http_headers $input, $cookie, $template->output;
|
||||||
|
|
Loading…
Reference in a new issue