From bd7e4fb0d9fb90050a908f4162dfc0351aad1320 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 19 May 2016 09:42:48 +0100 Subject: [PATCH] Bug 16552: Add the ability to change the default holdings sort This new enhancement will add the ability to change the default holdings sort on OPAC displays to be by library, instead of item type. This patch adds a new pref OPACHoldingsDefaultSortField with 3 different possible values: - Item type - Home library - Holding library Note that if OpacLocationBranchToDisplay is set not to display home libraries, unexpected behaviors might happen if OPACHoldingsDefaultSortField is set to "Home library", same for "Holding library". Test plan: - Confirm that the default value for OPACHoldingsDefaultSortField is 'first column' after executing the DB entry and that there is no change in the behavior (first column is used to sort the holdings table on the detail page). - Set OpacLocationBranchToDisplay to both and play with the different values of OPACHoldingsDefaultSortField => Confrm that the default column used to sort the table is correctly changed - Set the pref SeparateHoldings on => Confirm that both tables (Holdings and other holdings) are sorted using the OPACHoldingsDefaultSortField value. Sponsored-by: University of the Arts London Signed-off-by: Claire Gravely Signed-off-by: Katrin Fischer Signed-off-by: Kyle M Hall --- installer/data/mysql/atomicupdate/bug_16552.sql | 2 ++ installer/data/mysql/sysprefs.sql | 1 + .../prog/en/modules/admin/preferences/opac.pref | 7 +++++++ .../opac-tmpl/bootstrap/en/modules/opac-detail.tt | 14 +++++++++++++- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 installer/data/mysql/atomicupdate/bug_16552.sql diff --git a/installer/data/mysql/atomicupdate/bug_16552.sql b/installer/data/mysql/atomicupdate/bug_16552.sql new file mode 100644 index 0000000000..21fdb5cfe1 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_16552.sql @@ -0,0 +1,2 @@ +INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES +('OPACHoldingsDefaultSortField','first_column','first_column|homebranch|holdingbranch','Default sort field for the holdings table at the OPAC','choice'); diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 803a559974..7ffc576083 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -308,6 +308,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('opacheader','','70|10','Add HTML to be included as a custom header in the OPAC','Textarea'), ('OpacHiddenItems','','','This syspref allows to define custom rules for hiding specific items at opac. See docs/opac/OpacHiddenItems.txt for more informations.','Textarea'), ('OpacHighlightedWords','1','','If Set, then queried words are higlighted in OPAC','YesNo'), +('OPACHoldingsDefaultSortField','first_column','first_column|homebranch|holdingbranch','Default sort field for the holdings table at the OPAC','choice'), ('OpacHoldNotes','0','','Show hold notes on OPAC','YesNo'), ('OPACISBD','#100||{ 100a }{ 100b }{ 100c }{ 100d }{ 110a }{ 110b }{ 110c }{ 110d }{ 110e }{ 110f }{ 110g }{ 130a }{ 130d }{ 130f }{ 130g }{ 130h }{ 130k }{ 130l }{ 130m }{ 130n }{ 130o }{ 130p }{ 130r }{ 130s }{ 130t }|

\r\n#245||{ 245a }{ 245b }{245f }{ 245g }{ 245k }{ 245n }{ 245p }{ 245s }{ 245h }|\r\n#246||{ : 246i }{ 246a }{ 246b }{ 246f }{ 246g }{ 246n }{ 246p }{ 246h }|\r\n#242||{ = 242a }{ 242b }{ 242n }{ 242p }{ 242h }|\r\n#245||{ 245c }|\r\n#242||{ = 242c }|\r\n#250| - |{ 250a }{ 250b }|\r\n#254|, |{ 254a }|\r\n#255|, |{ 255a }{ 255b }{ 255c }{ 255d }{ 255e }{ 255f }{ 255g }|\r\n#256|, |{ 256a }|\r\n#257|, |{ 257a }|\r\n#258|, |{ 258a }{ 258b }|\r\n#260| - |{ 260a }{ 260b }{ 260c }|\r\n#300| - |{ 300a }{ 300b }{ 300c }{ 300d }{ 300e }{ 300f }{ 300g }|\r\n#306| - |{ 306a }|\r\n#307| - |{ 307a }{ 307b }|\r\n#310| - |{ 310a }{ 310b }|\r\n#321| - |{ 321a }{ 321b }|\r\n#340| - |{ 3403 }{ 340a }{ 340b }{ 340c }{ 340d }{ 340e }{ 340f }{ 340h }{ 340i }|\r\n#342| - |{ 342a }{ 342b }{ 342c }{ 342d }{ 342e }{ 342f }{ 342g }{ 342h }{ 342i }{ 342j }{ 342k }{ 342l }{ 342m }{ 342n }{ 342o }{ 342p }{ 342q }{ 342r }{ 342s }{ 342t }{ 342u }{ 342v }{ 342w }|\r\n#343| - |{ 343a }{ 343b }{ 343c }{ 343d }{ 343e }{ 343f }{ 343g }{ 343h }{ 343i }|\r\n#351| - |{ 3513 }{ 351a }{ 351b }{ 351c }|\r\n#352| - |{ 352a }{ 352b }{ 352c }{ 352d }{ 352e }{ 352f }{ 352g }{ 352i }{ 352q }|\r\n#362| - |{ 362a }{ 351z }|\r\n#440| - |{ 440a }{ 440n }{ 440p }{ 440v }{ 440x }|.\r\n#490| - |{ 490a }{ 490v }{ 490x }|.\r\n#800| - |{ 800a }{ 800b }{ 800c }{ 800d }{ 800e }{ 800f }{ 800g }{ 800h }{ 800j }{ 800k }{ 800l }{ 800m }{ 800n }{ 800o }{ 800p }{ 800q }{ 800r }{ 800s }{ 800t }{ 800u }{ 800v }|.\r\n#810| - |{ 810a }{ 810b }{ 810c }{ 810d }{ 810e }{ 810f }{ 810g }{ 810h }{ 810k }{ 810l }{ 810m }{ 810n }{ 810o }{ 810p }{ 810r }{ 810s }{ 810t }{ 810u }{ 810v }|.\r\n#811| - |{ 811a }{ 811c }{ 811d }{ 811e }{ 811f }{ 811g }{ 811h }{ 811k }{ 811l }{ 811n }{ 811p }{ 811q }{ 811s }{ 811t }{ 811u }{ 811v }|.\r\n#830| - |{ 830a }{ 830d }{ 830f }{ 830g }{ 830h }{ 830k }{ 830l }{ 830m }{ 830n }{ 830o }{ 830p }{ 830r }{ 830s }{ 830t }{ 830v }|.\r\n#500|

|{ 5003 }{ 500a }|\r\n#501|

|{ 501a }|\r\n#502|

|{ 502a }|\r\n#504|

|{ 504a }|\r\n#505|

|{ 505a }{ 505t }{ 505r }{ 505g }{ 505u }|\r\n#506|

|{ 5063 }{ 506a }{ 506b }{ 506c }{ 506d }{ 506u }|\r\n#507|

|{ 507a }{ 507b }|\r\n#508|

|{ 508a }{ 508a }|\r\n#510|

|{ 5103 }{ 510a }{ 510x }{ 510c }{ 510b }|\r\n#511|

|{ 511a }|\r\n#513|

|{ 513a }{513b }|\r\n#514|

|{ 514z }{ 514a }{ 514b }{ 514c }{ 514d }{ 514e }{ 514f }{ 514g }{ 514h }{ 514i }{ 514j }{ 514k }{ 514m }{ 514u }|\r\n#515|

|{ 515a }|\r\n#516|

|{ 516a }|\r\n#518|

|{ 5183 }{ 518a }|\r\n#520|

|{ 5203 }{ 520a }{ 520b }{ 520u }|\r\n#521|

|{ 5213 }{ 521a }{ 521b }|\r\n#522|

|{ 522a }|\r\n#524|

|{ 524a }|\r\n#525|

|{ 525a }|\r\n#526|

|{\\n510i }{\\n510a }{ 510b }{ 510c }{ 510d }{\\n510x }|\r\n#530|

|{\\n5063 }{\\n506a }{ 506b }{ 506c }{ 506d }{\\n506u }|\r\n#533|

|{\\n5333 }{\\n533a }{\\n533b }{\\n533c }{\\n533d }{\\n533e }{\\n533f }{\\n533m }{\\n533n }|\r\n#534|

|{\\n533p }{\\n533a }{\\n533b }{\\n533c }{\\n533d }{\\n533e }{\\n533f }{\\n533m }{\\n533n }{\\n533t }{\\n533x }{\\n533z }|\r\n#535|

|{\\n5353 }{\\n535a }{\\n535b }{\\n535c }{\\n535d }|\r\n#538|

|{\\n5383 }{\\n538a }{\\n538i }{\\n538u }|\r\n#540|

|{\\n5403 }{\\n540a }{ 540b }{ 540c }{ 540d }{\\n520u }|\r\n#544|

|{\\n5443 }{\\n544a }{\\n544b }{\\n544c }{\\n544d }{\\n544e }{\\n544n }|\r\n#545|

|{\\n545a }{ 545b }{\\n545u }|\r\n#546|

|{\\n5463 }{\\n546a }{ 546b }|\r\n#547|

|{\\n547a }|\r\n#550|

|{ 550a }|\r\n#552|

|{ 552z }{ 552a }{ 552b }{ 552c }{ 552d }{ 552e }{ 552f }{ 552g }{ 552h }{ 552i }{ 552j }{ 552k }{ 552l }{ 552m }{ 552n }{ 562o }{ 552p }{ 552u }|\r\n#555|

|{ 5553 }{ 555a }{ 555b }{ 555c }{ 555d }{ 555u }|\r\n#556|

|{ 556a }{ 506z }|\r\n#563|

|{ 5633 }{ 563a }{ 563u }|\r\n#565|

|{ 5653 }{ 565a }{ 565b }{ 565c }{ 565d }{ 565e }|\r\n#567|

|{ 567a }|\r\n#580|

|{ 580a }|\r\n#581|

|{ 5633 }{ 581a }{ 581z }|\r\n#584|

|{ 5843 }{ 584a }{ 584b }|\r\n#585|

|{ 5853 }{ 585a }|\r\n#586|

|{ 5863 }{ 586a }|\r\n#020|

|{ 020a }{ 020c }|\r\n#022|

|{ 022a }|\r\n#222| = |{ 222a }{ 222b }|\r\n#210| = |{ 210a }{ 210b }|\r\n#024|

|{ 024a }{ 024c }{ 024d }{ 0242 }|\r\n#027|

|{ 027a }|\r\n#028|

|{ 028a }{ 028b }|\r\n#013|

|{ 013a }{ 013b }{ 013c }{ 013d }{ 013e }{ 013f }|\r\n#030|

|{ 030a }|\r\n#037|

|{ 037a }{ 037b }{ 037c }{ 037f }{ 037g }{ 037n }|\r\n#010|

|{ 010a }|\r\n#015|

|{ 015a }{ 0152 }|\r\n#016|

|{ 016a }{ 0162 }|\r\n#600|

|{\\n6003 }{\\n600a}{ 600b }{ 600c }{ 600d }{ 600e }{ 600f }{ 600g }{ 600h }{--600k}{ 600l }{ 600m }{ 600n }{ 600o }{--600p}{ 600r }{ 600s }{ 600t }{ 600u }{--600x}{--600z}{--600y}{--600v}|\r\n#610|

|{\\n6103 }{\\n610a}{ 610b }{ 610c }{ 610d }{ 610e }{ 610f }{ 610g }{ 610h }{--610k}{ 610l }{ 610m }{ 610n }{ 610o }{--610p}{ 610r }{ 610s }{ 610t }{ 610u }{--610x}{--610z}{--610y}{--610v}|\r\n#611|

|{\\n6113 }{\\n611a}{ 611b }{ 611c }{ 611d }{ 611e }{ 611f }{ 611g }{ 611h }{--611k}{ 611l }{ 611m }{ 611n }{ 611o }{--611p}{ 611r }{ 611s }{ 611t }{ 611u }{--611x}{--611z}{--611y}{--611v}|\r\n#630|

|{\\n630a}{ 630b }{ 630c }{ 630d }{ 630e }{ 630f }{ 630g }{ 630h }{--630k }{ 630l }{ 630m }{ 630n }{ 630o }{--630p}{ 630r }{ 630s }{ 630t }{--630x}{--630z}{--630y}{--630v}|\r\n#648|

|{\\n6483 }{\\n648a }{--648x}{--648z}{--648y}{--648v}|\r\n#650|

|{\\n6503 }{\\n650a}{ 650b }{ 650c }{ 650d }{ 650e }{--650x}{--650z}{--650y}{--650v}|\r\n#651|

|{\\n6513 }{\\n651a}{ 651b }{ 651c }{ 651d }{ 651e }{--651x}{--651z}{--651y}{--651v}|\r\n#653|

|{ 653a }|\r\n#654|

|{\\n6543 }{\\n654a}{--654b}{--654x}{--654z}{--654y}{--654v}|\r\n#655|

|{\\n6553 }{\\n655a}{--655b}{--655x }{--655z}{--655y}{--655v}|\r\n#656|

|{\\n6563 }{\\n656a}{--656k}{--656x}{--656z}{--656y}{--656v}|\r\n#657|

|{\\n6573 }{\\n657a}{--657x}{--657z}{--657y}{--657v}|\r\n#658|

|{\\n658a}{--658b}{--658c}{--658d}{--658v}|\r\n#050|

|{ 050a }{ / 050b }|\r\n#082|

|{ 082a }{ / 082b }|\r\n#080|

|{ 080a }{ 080x }{ / 080b }|\r\n#070|

|{ 070a }{ / 070b }|\r\n#060|

|{ 060a }{ / 060b }|\r\n#074|

|{ 074a }|\r\n#086|

|{ 086a }|\r\n#088|

|{ 088a }|','70|10','OPAC ISBD','Textarea'), ('OpacItemLocation','callnum','callnum|ccode|location','Show the shelving location of items in the opac','Choice'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref index a565f5760c..b74f19cda9 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -308,6 +308,13 @@ OPAC: homebranch: 'home library' holdingbranch: 'holding library' - "is the logged in user's library. The second tab will contain all other items." + - + - pref: OPACHoldingsDefaultSortField + choices: + first_column: First column of the table + homebranch: Home library + holdingbranch: Holding library + - "is the default sort field for the holdings table" - - pref: OpacSuggestionManagedBy choices: diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt index f64e3f1fd8..696f3a477f 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt @@ -1430,6 +1430,17 @@ }); [% END %] + [%# Note that there is no way atm to target a column with its class name to set it as the default sort order %] + [% IF Koha.Preference('OpacLocationBranchToDisplay') == 'home' AND Koha.Preference('OPACHoldingsDefaultSortField') == 'homebranch' AND item_level_itypes + OR Koha.Preference('OpacLocationBranchToDisplay') == 'holding' AND Koha.Preference('OPACHoldingsDefaultSortField') == 'holdingbranch' AND item_level_itypes + OR Koha.Preference('OpacLocationBranchToDisplay') == 'both' AND Koha.Preference('OPACHoldingsDefaultSortField') == 'homebranch' AND NOT item_level_itypes + OR Koha.Preference('OpacLocationBranchToDisplay') == 'both' AND Koha.Preference('OPACHoldingsDefaultSortField') == 'holdingbranch' AND item_level_itypes %] + var default_order_index = 1; + [% ELSIF Koha.Preference('OpacLocationBranchToDisplay') == 'both' AND Koha.Preference('OPACHoldingsDefaultSortField') == 'homebranch' AND item_level_itypes %] + var default_order_index = 2; + [% ELSE %] + var default_order_index = 0; + [% END %] $(".holdingst").dataTable($.extend(true, {}, dataTablesDefaults, { "aoColumns": [ [% IF ( item_level_itypes ) %]null,[% END %] @@ -1452,7 +1463,8 @@ null, [% END %] [% IF ( ShowCourseReservesHeader ) %]null,[% END %] - ] + ], + "aaSorting": [[ default_order_index, 'asc' ]] })); [% IF ( query_desc ) %][% IF ( OpacHighlightedWords ) %]var query_desc = "[% query_desc |replace("'", "\'") |replace('\n', '\\n') |replace('\r', '\\r') |html %]"; -- 2.39.2