Koha-clms/C4
Marcel de Rooy ff5996d65e Bug 10480: Use the framework plugin object in cataloguing
This patch implements the use of Koha::FrameworkPlugin in Cataloguing,
Authorities, Acquisition, Serials and Tools.

The main change is architectural: see the commit message of the previous
patch. No changes in behavior are expected, but the support of new events
may provide additional functionality in the future. Some small bugs are
resolved along the way.

The change primarily focuses on the MARC and items editor in Cataloguing.
But the MARC editor for Authorities and the item editor in Acquisition,
Serials and Tools are touched too. This commit message gives some comments
per module.

NOTE FOR CATALOGUING:
A new plugin without popup (or other click event code) now shows the title
No popup when hovering over the tag editor image. The image alerts the
user on a plugin, the title tells about its status. The noclick property
allows for further style modifications in the template. Note that a
follow-up patch will clean up the old style plugins too with the same
effect.

Some additional code in cataloging.js makes it possible to clone subfields
with plugins (although only theoretically useful). The clones use the
same javascript functions but event.data contains an updated id.
This effectively resolves bug 13306. Note that if old plugins do not use
the javascript parameter for the id but the perl variable, cloning does
still operate on the wrong field (with and without this patch set).

In the absence of report 12176 in master, it is not yet necessary to modify
additem.tt. When it gets pushed, it should be an easy rebase.
New style item plugins will no longer need an extra parameter. (The code in
the FrameworkPlugin object actually takes care of that.)

NOTE FOR AUTHORITIES:
This patch also adds class name tag_editor to the buttonDot anchors. This
effectively makes the same tag editor image appear as in Cataloguing.
Futhermore it removes the button from the tab sequence if there is no click
event (really effective after conversion to the new style, since the old
style plugins contain empty onclicks and launchers).
Both small adjustments increase consistency between auth and bib edits.

NOTE FOR ACQUISITION:
In Acquisition two scripts use an item editor, but in a different way.
The scripts addorderiso2709 and neworderempty both rely on the routine
PrepareItemrecordDisplay in C4::Items, but neworderempty creates item
blocks dynamically via an ajax call to services/itemrecorddisplay.pl.

In order to make the dynamic item blocks work with plugins, some code
changes were needed in additem.js. (Normally the event binding is done
at document ready time; now it must be done later.)

At this moment the routine in Items.pm contains the html tags, and this
makes changes to the following templates not necessary for now:
* acqui/addorderiso2709.tt
* services/itemrecorddisplay.tt
Report 13397 has been opened to address moving the html to the templates.

NOTE FOR SERIALS:
Script serial-edit relies also on C4::Items (just as in Acquisition).
This makes changes to serials/serials-edit.tt not necessary for now.

NOTE FOR TOOLS:
The current code in tools/batchMod.pl allows the use of plugins for batch
modification of items. This patch just converts that code to use the new
object. Most item plugins however may not be very useful for operating on
multiple items at once.

PERFORMANCE:
I have benchmarked build_tabs in addbiblio to see how especially the
additional processing of the javascript in the FrameworkPlugin object
would impact performance. Testing default MARC21 framework with 8 plugins
gave the following figures:
- Old situation: 851 ms
- New situation: 942 ms (+10,7%)
- New situation after plugin cleanup: 881 ms (+3,4%)
Note also that adding lines for event binding is compensated by removing
lines for unused events. Page load should essentially be the same.

TEST PLAN:
Suggestion: If you also apply the next patch with the EXAMPLE plugin, you
can test with a rather harmless plugin (with popup) on various places :)
But your test should also include old style plugins, with[out] popups.

If you want to test a new plugin without popup, rename/remove Click$id
in the javascript code of the $builder definition (temporarily).

[1] Test Cataloguing:
    - Add/Edit biblio. Try plugins with and without popup.
    - Add/Edit items. (EXAMPLE can be used as an item plugin with popup.)
    - Clone a subfield with plugin (use EXAMPLE): Verify that the plugin
      works on both original and clone with the respective field values.
      Is the value put back in the right field too?
[2] Test Authorities:
    Edit an authority record. Try plugins with an without popup.
[3] Test Acquisition:
    Set system preference AcqCreateItem to "placing an order".
    Check the item editor in the following two places:
    a- addorderiso2709: Open a basket, add an order from a staged file.
       Select a file, click Add orders, and go to tab Item information.
    b- neworderempty: Open a basket, add an order from a new empty record.
[4] Test Serials:
    Check the item editor on serials-edit. Go to subscription detail.
    Click Receive. Choose "Click to add item". (Note that this subscription
    should create an item record when receiving this serial.)
[5] Test Tools:
    Check the item editor for batch item modification. Enter a few valid
    barcodes and press Continue to reach the item editor.

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

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
2015-04-16 14:48:36 -03:00
..
AuthoritiesMarc Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
Barcodes Bug 13603 - autoBarcode setting hbyymmincr not taking month into account when looking up next increment 2015-02-13 14:11:59 -03:00
Bookseller Bug 10402 follow-up: choose contacts for claims 2014-08-26 11:45:59 -03:00
ClassSortRoutine Bug 8837: Dewey cn_sort inaccurate 2014-10-28 09:39:29 -03:00
Creators Bug 13407: Removing depricated code included in PDF::Reuse 2015-01-07 20:18:53 -03:00
External Bug 12858 [QA Followup] - Don't call webservice if we have no data 2015-02-20 10:22:51 -03:00
Form Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
Heading Bug 10308 - local subjects can use authorities too 2014-09-01 10:45:07 -03:00
ILSDI Bug 13939: ILS-DI function GetServices doesn't work when the item/biblio is available for hold for specific patron 2015-04-08 15:16:14 -03:00
Installer Bug 13601: get rid of DateTime::Format::DateParse 2015-03-30 13:40:00 -03:00
Labels Bug 10773 - Add item-level descriptions for Label Printing 2015-03-30 13:22:35 -03:00
Linker Bug 11650: multiplicated authorities after link_bibs_to_authorities.pl 2014-07-07 12:40:25 -03:00
Members Bug 13194: Fix typo in SetMessagingPreferencesFromDefaults POD 2014-11-06 10:14:13 -03:00
OAI Bug 13940 : Testing C4::OAI::Sets 2015-04-09 11:56:41 -03:00
Output
…
Patroncards Bug 13954 - Patroncards: images show inadequate rough pixelation 2015-04-08 10:44:50 -03:00
Reports Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
SIP Bug 13803 Flag to self check book has gone into transit 2015-04-16 14:16:44 -03:00
Search Bug 11430: delete search history by id - API changes 2015-03-11 15:02:37 -03:00
Serials Bug 7688: (follow-up) update license statements 2013-10-30 02:56:32 +00:00
Utils Bug 13894: Make reserve.pl not using C4::Members::Search 2015-03-30 12:56:53 -03:00
VirtualShelves Bug 5786 - Move AllowOnShelfHolds and OPACItemHolds system prefs to the Circulation Matrix 2015-03-25 10:33:14 -03:00
Accounts.pm Bug 12865 - 'Pay amount toward all fines' does not record payment note 2014-11-25 16:38:46 -03:00
Acquisition.pm Bug 13244: (follow-up) fix mixup to and from in the sql query 2015-04-13 11:08:47 -03:00
Auth.pm Bug 13507: Add intranet support for CAS authentication 2015-04-08 12:04:26 -03:00
Auth_cas_servers.yaml.orig
…
Auth_with_cas.pm Bug 13507: Add intranet support for CAS authentication 2015-04-08 12:04:26 -03:00
Auth_with_ldap.pm Bug 9165: (Followup) Tidied code slightly 2014-11-27 14:58:46 -03:00
Auth_with_shibboleth.pm BUG8446, QA Followup: Use DBIx::Class 2014-10-16 12:28:01 -03:00
AuthoritiesMarc.pm Bug 12861: (follow-up) Noisy warn in error logs 2015-01-21 10:47:47 -03:00
BackgroundJob.pm Bug 10601: (follow-up) improvements to ->set() and ->get() 2013-09-18 17:23:44 +00:00
Barcodes.pm Bug 6679 - [SIGNED-OFF] fix 8 perlcritic violations in C4/Barcodes.pm 2012-09-20 12:01:36 +02:00
Biblio.pm Bug 11944: FIX Error on editing an authority 2015-01-13 13:07:11 -03:00
Bookseller.pm Bug 12896: Move the bookseller-related code into Koha::Acquisition::Bookseller 2014-12-31 14:15:58 -03:00
Boolean.pm Bug 10080 - Change system pref IndependantBranches to IndependentBranches 2013-05-22 07:58:23 -07:00
Branch.pm Bug 9350: Making changes so that you can add the new fields to branches 2014-10-27 10:38:16 -03:00
Breeding.pm Bug 11961 - Add a "Z39.50 search" button to the authority creation and modification pages. 2015-01-24 18:19:06 -03:00
Budgets.pm Bug 11714 - GetBudgetHierarchy needs optimization 2014-10-31 16:41:46 -03:00
Calendar.pm Bug 7351 : feature that allows to delete a range of dates 2012-09-28 12:19:45 +02:00
Category.pm Bug 7919: FIX the "all" categories method 2013-01-02 16:50:52 -05:00
Charset.pm Bug 11944: revert unneeded IsStringUTF8ish behaviour change 2015-01-13 13:07:52 -03:00
Circulation.pm Bug 13315 - Add feedback for last item checked out to circulation.pl 2015-04-13 14:52:26 -03:00
ClassSortRoutine.pm Bug 12424 - ddc sorting of call numbers truncates long Cutter parts 2014-10-18 10:50:07 -03:00
ClassSource.pm Bug 10643: fix inappropriate uses of $sth->finish() in C4::ClassSource.pm 2013-08-09 15:32:22 +00:00
Context.pm Bug 13645: Use DBIx::Connector 2015-02-20 14:37:08 -03:00
Contract.pm Bug 12487 [QA Followup] - GetContract must return undef with no params 2014-07-30 10:44:45 -03:00
CourseReserves.pm bug 8215: (followup) rename GetItemReservesInfo 2013-05-21 15:51:03 -07:00
Creators.pm Bug 8315 - remove use C4::* version 2012-07-13 14:17:20 +02:00
Csv.pm Bug 10853: All existing routing to get a CSV should return a MARC csv 2013-10-11 02:16:33 +00:00
Dates.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
Debug.pm Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
HTML5Media.pm Bug 8377: Followup move style in a css file and do not pass template to a pm 2012-12-27 09:28:00 -05:00
Heading.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
HoldsQueue.pm Bug 11258: fix another case where holds queue made transfer requests that contradict the library holds policy 2014-04-18 15:23:23 +00:00
Images.pm Bug 8710 - Don't show the images tab in the OPAC if the record has no local images 2012-11-28 18:54:40 -05:00
ImportBatch.pm Bug 6520: Display items for staged record 2015-04-16 13:40:46 -03:00
ImportExportFramework.pm Bug 11666: remove SQL as an option for MARC framework exports and imports 2014-02-05 19:48:27 +00:00
Input.pm Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
InstallAuth.pm Bug 10900 - Incorrect calling conventions accessing C4::Context 2015-02-09 17:00:13 -03:00
Installer.pm Bug 11944: replace use of utf8 with Encode 2015-01-13 13:06:45 -03:00
ItemCirculationAlertPreference.pm Bug 6679 - [SIGNED-OFF] fix 2 perlcritic violations in C4/ItemCirculationAlertPreference.pm 2012-09-20 12:01:39 +02:00
ItemType.pm Bug 13934: C4::ItemType->get should return undef if no parameter given 2015-04-10 10:18:07 -03:00
Items.pm Bug 10480: Use the framework plugin object in cataloguing 2015-04-16 14:48:36 -03:00
Koha.pm Bug 13167 Stage MARC for Import hangs for biblio containing invalid ISBN-13 2015-01-04 11:15:24 -03:00
Labels.pm Bug 8315 - remove use C4::* version 2012-07-13 14:17:20 +02:00
Languages.pm Bug 12534 - PROG/CCSR deprecation: Make getlanguages() theme independent for opac 2014-07-14 09:01:08 -03:00
Letters.pm Bug 12739: (QA followup) use 'UTF-8' instead of 'utf8' 2015-03-30 13:36:48 -03:00
Linker.pm Bug 11650: multiplicated authorities after link_bibs_to_authorities.pl 2014-07-07 12:40:25 -03:00
Log.pm Bug 11331 - CSV export for viewlog.pl is missing newlines 2014-08-05 20:23:26 -03:00
MarcModificationTemplates.pm Bug 11413: Fix field_numbers 2014-11-14 12:05:47 -03:00
Matcher.pm Bug 10500: (follow-up) disable AggressiveMatchOnISBN if UseQueryParser is on 2014-05-05 19:31:00 +00:00
Members.pm Bug 13740: Fix null vs not null in the query 2015-03-31 10:54:30 -03:00
Message.pm Bug 13504: Remove the '----' marker for CHECKIN and CHECKOUT notices 2015-01-04 11:20:10 -03:00
NewsChannels.pm Bug 12507 - News does not always display in staff or OPAC 2014-08-24 12:37:06 -03:00
Output.pm Bug 13684: C4::Budgets should not be used in C4::Output 2015-02-16 23:36:40 -03:00
Overdues.pm Bug 13909: Suspension days calculation should respect finesCalendar 2015-04-10 10:19:24 -03:00
Patroncards.pm Bug 8315 - remove use C4::* version 2012-07-13 14:17:20 +02:00
Print.pm Bug 6679 - [SIGNED-OFF] fix 2 perlcritic violations in C4/Print.pm 2012-09-20 12:17:43 +02:00
Ratings.pm Bug 12609: Add some unit tests for C4::Ratings 2014-09-17 22:08:57 -03:00
Record.pm Bug 13190: Reintroduce the checkouts export feature 2014-11-06 10:00:30 -03:00
Reports.pm Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
Reserves.pm Bug 5786 [QA Followup] 2015-03-25 10:33:31 -03:00
Review.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
Ris.pm Bug 13850: Fix typo in C4::Ris 2015-04-08 10:45:40 -03:00
RotatingCollections.pm Bug 8836 [QA Followup] - Prevent multiple collections from having the same title 2014-11-06 15:12:20 -03:00
SMS.pm Bug 3186 [QA Followup] - Don't return undef, just return 2014-10-30 01:23:12 -03:00
SQLHelper.pm Bug 11425: Get column names using DBIX 2014-11-04 19:10:28 -03:00
Scheduler.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
Scrubber.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
Search.pm Bug 13528: Use the different isbn variations on search on the isbn index (nb) 2015-04-16 13:44:57 -03:00
Serials.pm Bug 11337: Remove the C4::Serials::GetSubscriptions routine 2015-04-13 10:36:19 -03:00
Service.pm Bug 11944: use CGI( -utf8 ) everywhere 2015-01-13 13:07:21 -03:00
ShelfBrowser.pm Bug 9580 Cover images from Coce, a remote image URL cache 2015-04-01 09:31:42 -03:00
SocialData.pm bug 7470 follow-up, fix POD doc 2012-03-26 17:53:28 +02:00
Stats.pm Bug 10860 - Change "in-house use" to "on-site checkout" 2014-11-03 10:26:22 -03:00
Suggestions.pm Bug 13007: Special case budgetid == '' 2015-02-09 15:49:57 -03:00
TTParser.pm Bug 12207: fix TTparser's handling of TT directives that contain "]" 2014-05-23 15:23:20 +00:00
Tags.pm Bug 12916 - Use of uninitialized values $max and $min in C4/Tags.pm 2014-10-30 00:31:36 -03:00
Templates.pm Bug 10328 - Rename opaccolorstylesheet to OpacAdditionalStylesheet 2015-03-31 11:30:54 -03:00
TmplToken.pm Bug 12131: Remove unused dependency on Exporter 2014-04-25 15:24:39 +00:00
TmplTokenType.pm Revert "Bug 6679 - [SIGNED-OFF] fix 9 perlcritic violations in C4/TmplTokenType.pm" 2012-09-20 13:29:59 +02:00
UploadedFile.pm Bug 7941 : Fix version numbers in modules 2012-06-11 17:29:38 +02:00
UsageStats.pm Bug 13497: Remove the pref AddPatronsLists 2015-04-13 11:46:09 -03:00
VirtualShelves.pm Bug 13417: Remove warnings 2015-02-13 13:52:24 -03:00
XISBN.pm Bug 11096: support the retrieval of large MARCXML records 2014-02-28 19:50:09 +00:00
XSLT.pm Bug 12655 [Revised] PROG/CCSR deprecation: Correct hard-coded opac-tmpl/prog path in XSLT 2014-10-30 09:35:12 +13:00