Bug 3934 - move test prediction pattern button

On the subscription add/edit screen the buttons related to numbering
patterns are grouped with the "save" button, which is potentially
confusing. This patch moves the buttons into the "serials planning"
region so they are visually grouped with related functionality.

Unrelated changes: Removed a few redundant "javascript:"
pseudo-protocols from event handlers, and added a "Cancel" link.

To test, edit an existing subscription and confirm that the prediction
pattern buttons are grouped inside the "serials planning" region.
Confirm that each button triggers the correct event. Confirm that
clicking the "cancel" link returns you to the subscription detail view.

Also test creating a new subscription. Again buttons should work
correctly. The "Cancel" link should return you to the Serials module
home page.

Signed-off-by: Paola Rossi <paola.rossi@cineca.it>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 11108: fix duplicate display of basket whose receipt has just been cancelled

After receiving an order basket, before finishing receiving the shipment,
one has an option to cancel the receipt.  This patch fixes a bug where
a basket whose receipt was just cancelled displays on both the pending orders
and already received tabs.

This patch also fixes a minor unitialized variable warning.

To test:

[1] Create a basket with at least one order and close it.
[2] Receive the order, then on the row in the 'Already received'
    table, click the cancel receipt link.
[3] In the page that displays, the basket just cancelled displays
    on both tables.  Clicking the cancel receipt link again results
    in an error message.
[4] Apply the patch.
[5] Repeat steps 1 and 2.  This time, the cancelled basket displays
    only in the pending orders table, as expected.
[6] Verify that after applying the patch, the following no longer
    is logged in the Apache error log:

parcel.pl: Use of uninitialized value in string eq at acqui/parcel.pl line...

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Ed Veal <ed.veal@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes test plan, all tests and QA script.
Works as described.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 0010c27ea17a515683f5ae01b9e97d4f80e3d55f)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10750: Correct capitalization on suggestion form in OPAC

Create a new suggestion from your patron account in the OPAC.
Verify that all strings are correctly capitalized on the form
and submit buttons.

- Copyright date
- Standard number ... and other
- Submit your suggestion

Signed-off-by: Dani Elder <dani@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 8417fb5b9b9d24d5cb47c5e12b298319006bff42)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10271: regression test for search using indexes containing 'ns'

This patch adds a regression test for doing a form-based catalog
search using an index that contains the string 'ns' in its name.  In
this case, the index being tested is 'Code-institution'.

To test
-------
[1] Prove -v t/db_dependent/Search.t should have two failed tests;
    one each for GRS-1 and DOM testing.
[2] After applying the main patch for this bug, the tests should
    pass.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 935ed2876b3902ca5e2dfa2cc258baf6fc464ab3)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10271: fix searching using an index containing "ns" or "nb"

When an index does not contain a structure part, the structure "wrdl"
is automatically added and a structure is mandatory to build search
query (to convert ':' into '=').

But the code that tests that the structure is not already defined looks
in entire index string :

  $index =~ /(st-|phr|ext|wrdl|nb|ns)/

It should look for a comma followed by a structure and in the case of
"nb" and "ns" look for an exact match.

The consequence is that an index containing ns or nb or phr or etc does
not work.

This patch modifies the regexp for this part and other parts looking at
structures into index.

Test plan :
- Desactivate all searching sysprefs.
- Create a new index called "ansa" number 8999 into bib1.att,
  ccl.properties and records.abs
- Index a biblio with a value on this index, ie "VALUE"
- Perform a search on this index by editing URL:
  http://<server>/cgi-bin/koha/catalogue/search.pl?idx=ansa&q=VALUE
=> Without patch, the search does not work. The PQF query is
   "@and ansa: VALUE"
=> With patch, the search works. The PQF query is "@attr 1=8999 VALUE";
- Perform same test with an index containing a structure ie "aphra"
- Set QueryAutoTruncate syspref to automatically
=> Check * is added to operand : PQF query is
   "@attr 1=8999 @attr 4=6 @attr 5=1 VALUE"
- You may check stopwords removal but this feature is obsolete

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Comment: as far as I can test, this works. Small tab error reported
by koha-qa, fixed in a followup.

This kind of patch is difficult to test without explicit instructions,
not everyone knows how to check what kind of PQF search is used.
I don't know. But I can test search results.

Test:
1) Deactivate search sysprefs
QueryAutoTruncate = only if * is added
QueryFuzzy = Don't try
QueryStemming = Don't try
QueryWeightFields = Disable
UseQueryParser = Do not try

2) Create new index 'ansa'
bib1.att : att 8999 ansa
ccl.properties : ansa 1=8999
records.abs : melm 999 ansa:w,ansa:p

1) and 2) from comment 3 on Bug

3) In the undestanding that index refers to field 999,
edited default framework, made 999a visible on editor

4) Edit sample record, add 'VALUE' to 999a, save, reindex

5) Search with /cgi-bin/koha/catalogue/search.pl?idx=ansa&q=VALUE
No results

6) Apply patch, repeat search
Got results

That's all I can test. If not enough for QA, then this
must wait until further and explicit test instructions

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

There is (for MARC21, at least), an exising indexes that this patch
fixes: Code-institution.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit e17abe0e2891cc420581ebe998e1c8444ba844d3)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10271: (follow-up) correct tabs

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit c6721b2fceb47f4599d092b6473323b687f9669f)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 11086: Fixing some grammatical mistakes in member-flags and tools-home

To test before the patch is applied notice that on the member-flags
page it says

"upload patron images in batch or one at a time"
After the patch it should say

"upload patron images in a batch or one at a time"

Try also for tools-home

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
String change, only affecting templates.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit fa88585674148b36817168c27cc70da555ce6da6)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 11086: (follow-up) editing the database files also

Signed-off-by: David Noe <drnoe@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Changes permission description in en and untranslated
installer files.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit ffa2fbc93de0df27482556ae7dabdc57d9ab1a60)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10243: prevent holds queue from making transfer requests that contradict library holds policy

For some reason MapItemsToHoldRequests will, as a last ditch effort,
grab what seems to be an arbitrary available item to fill a hold request,
even if it will violate the circulation rules for holds.

In other words, even if an item matches a "Holds policy by item type"
that says "From home library", a request to transfer that item to
another library will be added to the holds queue!

Test Plan:
1) Create a record with a an item at BranchA of item type BOOK
2) Set the holds policy such that itemtype BOOK for BranchA is set
   to "From home library"
3) Place a bib-level hold request for a patron with a pickup at BranchB
4) Run build_holds_queue.pl
5) You should now see a request for that item to be transfered to
   BranchB, even though the rules should not allow this.
6) Apply this patch
7) Run build_holds_queue.pl again
8) View the holds queue again, that request should no longer exist

Signed-off-by: Heather Braum <hbraum@nekls.org>
Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 78d27ad5393308ce097db9aa0dfe5c28aa40a516)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10243: (follow-up) add unit tests

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit e74b91165de888cd260afd575c20358dc9f435d7)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10243: (follow-up) prevent TransportCostMatrix from overriding library holds policy

Using the TransportCostMatrix can cause the same issue. Removing the
last ditch use of the first item causes the the subroutine to continue
with the traditional matching, which will respect the hold policies.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 06ea76c3c2c9afcc324166c12b0510fdad0d77f1)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10283: Hide "many items" on second tab when using OpacSeparateHoldings

If there are over 50 items in the holdings or Other holdings tab, the
warning and link 'This record has many physical items. Click here to
view them all.' is only shown for the first tab.

Test plan:
- Switch on the OpacSeparateHoldings pref.
- Go on a biblio detail page at the OPAC with more than 50 items
- Check that the 'view all' link appears on the second tab.

Signed-off-by: Srdjan <srdjan@catalyst.net.nz>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works as described, passes all tests and QA script.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 363e986c60b8d3a0fc6badf3739e58fbb3e65801)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10974: make OAI-PMH resumption tokens handle time correctly

This patch changes the value separator in OAI-PMH resumption tokens
from colons to slashes, so that the token string isn't split incorrectly
when a time is included.

TEST PLAN:

1) Turn on the OAI-PMH server syspref in Koha
2) Send a ListRecords request using 'from' and 'until' arguments that
include times (Best to use very far apart times so that you retrieve
more than 50 records which will likely be the trigger for a resumptionToken).
Here is an example:

http://KOHAINSTANCE/cgi-bin/koha/oai.pl?verb=ListRecords&
metadataPrefix=oai_dc&from=2012-09-05T13:44:33Z&until=2014-09-05T13:44:33Z

N.B. Replace KOHAINSTANCE with the URL of your Koha instance.

3) Scroll down to the bottom of the page until you find the resumptionToken.
It will look similar to this:

<resumptionToken cursor="50">
oai_dc:50:2012-09-05T13:44:33Z:2014-09-05T13:44:33Z:
</resumptionToken>

4) Copy that resumption token and send a request with it like so:

http://KOHAINSTANCE/cgi-bin/koha/oai.pl?verb=ListRecords&
resumptionToken=oai_dc:50:2012-09-05T13:44:33Z:2014-09-05T13:44:33Z:

5) The page should (incorrectly) show no records.

6) APPLY PATCH

7) Repeat steps 2, 3, and 4

8) Note that the resumptionToken now uses slashes (e.g. /) instead of
colons.

Note also that now the second request will show records!!!

N.B. This will only happen if Koha has enough records to serve to you.
If your Koha has less than 50 records, try lowering the number provided
in the "OAI-PMH:MaxCount" system preference.

Signed-off-by: Petter Goksoyr Asen <boutrosboutrosboutros@gmail.com>

I understand; I can now confirm the behaviour described in the test plan.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes test plan, all tests and QA script.
Resumption Token works correctly after applying the patch.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit f57a057ef4420bf5e30ed36a054d99058cdfa4f3)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10445: make SIP Server respect maxoutstanding system preference

The system preference 'maxoutstanding' is defined as the maximum amount
of fees owed by the patron before Koha should block placing holds (
terrible naming on this one ).

However, although the Koha OPAC respects this preference, placing holds
via a SIP2 device will not.

Test Plan:
1) Set maxoutstanding to $10
2) Pick a patron owning more than $10 in fees
3) Attempt to place a hold for this patron from a SIP2 device
   This attempt should succeed
4) Apply this patch
5) Restart your SIP2 server
6) Attempt to place a hold for this patron from a SIP2 device again
   This attempt should now fail

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 070e52f401155e00f075bc45287c98ba94f4cf79)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10445: (follow-up) fix error

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>

Followup to failed QA tests have helped pass.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit d4ad282e91f034d992e0f726ed256a0ddbf6b20f)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 10776: fix awkward wording in subscription notification screen

to test:
- make a subscription available to be notified about
- log into the opac, click the subscriptions tab, then More details
- click "Subscribe to email notification on new issues"
- observe the text without the patch - there seems to be an extra "arrive?"
- apply the patch, refresh - wording should flow a bit better.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Fixes bad wording and works as described.
Passes all tests and QA script, template change only.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 6398126f8899b57380fbc32d23662ba0e9c48f43)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 9218: fix intranet cart email for non english templates

This patch adapts the method from OPAC to the staff interface (cf bug 8062).

Test plan:
- add somes notices to the cart
- try to send the cart by email
- the email should be the same as before
- translate templates and retry with another language. Before this patch,
  the email was empty. With this patch, it contains the list of records
  and items.

Signed-off-by: Paola Rossi <paola.rossi@cineca.it>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Passes all tests and QA script.
Fixes quite a bad translation problem, tested with German templates
and umlauts in the message and records.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit c4c5496ec656ee4745587b3cea239cc849d2c09a)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 9374: Only 0.00 prices must have class error in basket.tt

A regexp '^0' in basket.tt is used to give the class "error" to null prices.
It is wrong, because it matches prices like "0.15". It should only match "0.00".

To test :
- apply the patch
- display a basket with an order with a price between 0 and 1 (like "0.50") and an order with a price stricty null ("0.00")
- only the "0.00" price should be displayed in red

Signed-off-by: Cedric Vita <cedric.vita@dracenie.com>

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit cbe0d7bebdd0de8e15d1f5fe3cb12da3160baa64)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 9374: The color should manage all zero format.

The format of prices in Koha is discuted in some bugs (e.g. 9410).
The good way will be to introduce a syspref in order to deal with the
number of decimal.
The previous patch is too restrictive, we should deal with other zero
format.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit c523b56bcf0eccb2feb342fe962e590d74baa749)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Bug 9374: (follow-up) add FIXME suggesting that use of a regexp is not the long-term solution

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 8ae61b6a2a6b2c6e27f33d1d32e1849265782530)
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>