diff --git a/web/app/plugins/mitlib-multisearch-widget/class-multisearch-widget.php b/web/app/plugins/mitlib-multisearch-widget/class-multisearch-widget.php index 9e73e7c6..963e8819 100644 --- a/web/app/plugins/mitlib-multisearch-widget/class-multisearch-widget.php +++ b/web/app/plugins/mitlib-multisearch-widget/class-multisearch-widget.php @@ -32,124 +32,58 @@ public function __construct() { * @link https://developer.wordpress.org/reference/classes/wp_widget/ */ public function widget( $args, $instance ) { - // Identify which templates are needed based on instance variable. - $all_template = 'templates/tab-all-eds.php'; - $books_template = 'templates/tab-books-eds.php'; - $articles_template = 'templates/tab-articles-eds.php'; - $articles_tab_name = 'Journals + articles'; - $more_template = 'templates/tab-more-eds.php'; - if ( 'alma' == $instance['targets'] ) { - $all_template = 'templates/tab-all-alma.php'; - $books_template = 'templates/tab-books-alma.php'; - $articles_template = 'templates/tab-articles-alma.php'; - $articles_tab_name = 'Articles + chapters'; - $more_template = 'templates/tab-more-alma.php'; - } + // Strip initial arguments. + $args = null; + + // By default, we use the v2 template (suitable for v2 page layouts). + $all_template = 'templates/tab-all-use-v2.php'; if ( 'use' == $instance['targets'] ) { + // Alternatively, we use the v1 template (for old page layouts). $all_template = 'templates/tab-all-use.php'; } - if ( 'use-v2' == $instance['targets'] ) { - $all_template = 'templates/tab-all-use-v2.php'; - } - // Strip initial arguments. - $args = null; // Register / enqueue javascript. - // First we add the responsive tabs plugin. - wp_register_script( - 'responsivetabs-js', - plugin_dir_url( __FILE__ ) . 'libs/jquery.responsiveTabs.min.js', - array( 'jquery' ), - '1.6.1', - false - ); // Second, we add this plugin's javascript. wp_register_script( 'multisearch-js', plugin_dir_url( __FILE__ ) . 'mitlib-multisearch-widget.js', - array( 'responsivetabs-js' ), - '1.4.1', + array(), + '1.8.0', false ); // Finally, we enquey only this plugin's javascript (which brings everything else in). wp_enqueue_script( 'multisearch-js' ); // Register / enqueue styles. - wp_register_style( 'responsivetabs-css', plugin_dir_url( __FILE__ ) . 'libs/responsive-tabs.css', '', '1.6.1' ); wp_register_style( 'multisearch-tabs', plugin_dir_url( __FILE__ ) . 'mitlib-multisearch-widget.css', - array( 'responsivetabs-css' ), - '1.3.0' + array(), + '1.8.0' ); wp_enqueue_style( 'multisearch-tabs' ); - if ( $instance['targets'] != 'use-v2' ) { + // Determine whether to enable NLS based on widget settings and the user's cookie. + $nls_enabled = $this->readCookie( $instance['nls_default'] ); + + $nls_link_toggle = $this->setToggleValue( $nls_enabled ); + + $nls_included = $instance['nls_included']; + if ( 'use' == $instance['targets'] ) { // Render markup. echo ''; echo '
'; echo '

Search the MIT libraries

'; - - }; - - // Render the search tabs only when "Unified Search" option is not selected - if ( $instance['targets'] != 'use' && $instance['targets'] != 'use-v2' ) { - - echo ''; - - // Render the individual tab panes - echo '
'; - include( $all_template ); - echo '
'; - echo '
'; - include( $books_template ); - echo '
'; - echo '
'; - include( $articles_template ); - echo '
'; - echo '
'; - include( $more_template ); - echo '
'; - - }; - - if ( $instance['targets'] == 'use' ) { - - // Determine whether to enable NLS based on widget settings and the user's cookie. - $nls_enabled = $this->readCookie( $instance['nls_default'] ); - - $nls_link_toggle = $this->setToggleValue( $nls_enabled ); - - $nls_included = $instance['nls_included']; - echo '
'; - include( $all_template ); - echo '
'; - }; - if ( $instance['targets'] == 'use-v2' ) { - - // Determine whether to enable NLS based on widget settings and the user's cookie. - $nls_enabled = $this->readCookie( $instance['nls_default'] ); - - $nls_link_toggle = $this->setToggleValue( $nls_enabled ); - - $nls_included = $instance['nls_included']; - - include( $all_template ); - + include $all_template; + if ( 'use' == $instance['targets'] ) { + echo '
'; // This closes the div#search-all. }; if ( $instance['banner_text'] ) { @@ -170,8 +104,8 @@ public function widget( $args, $instance ) { echo ''; } - if ( $instance['targets'] != 'use-v2' ) { - echo ''; + if ( 'use' == $instance['targets'] ) { + echo ''; // This closes the div#multisearch. }; } @@ -186,11 +120,7 @@ public function form( $instance ) { $banner_text = $instance['banner_text']; $targets = $instance['targets']; if ( '' == $instance['targets'] ) { - $targets = 'eds'; - } - $bento_url = $instance['bento_url']; - if ( '' == $instance['bento_url'] ) { - $bento_url = 'https://lib.mit.edu/'; + $targets = 'use-v2'; } $nls_default = $instance['nls_default']; if ( '' == $instance['nls_default'] ) { @@ -211,36 +141,6 @@ class="widefat"

Which set of search targets should be shown?

-

- - -

-

Natural language search

Should the natural language option be shown?

",click:function(){},activate:function(){},deactivate:function(){},load:function(){},activateState:function(){},classes:{stateDefault:"r-tabs-state-default",stateActive:"r-tabs-state-active",stateDisabled:"r-tabs-state-disabled",stateExcluded:"r-tabs-state-excluded",container:"r-tabs",ul:"r-tabs-nav",tab:"r-tabs-tab",anchor:"r-tabs-anchor",panel:"r-tabs-panel",accordionTitle:"r-tabs-accordion-title"}};e.prototype.init=function(){var a=this;this.tabs=this._loadElements(),this._loadClasses(),this._loadEvents(),t(s).on("resize",function(t){a._setState(t),a.options.fluidHeight!==!0&&a._equaliseHeights()}),t(s).on("hashchange",function(t){var e=a._getTabRefBySelector(s.location.hash),o=a._getTab(e);e>=0&&!o._ignoreHashChange&&!o.disabled&&a._openTab(t,a._getTab(e),!0)}),this.options.rotate!==!1&&this.startRotation(),this.options.fluidHeight!==!0&&a._equaliseHeights(),this.$element.bind("tabs-click",function(t,s){a.options.click.call(this,t,s)}),this.$element.bind("tabs-activate",function(t,s){a.options.activate.call(this,t,s)}),this.$element.bind("tabs-deactivate",function(t,s){a.options.deactivate.call(this,t,s)}),this.$element.bind("tabs-activate-state",function(t,s){a.options.activateState.call(this,t,s)}),this.$element.bind("tabs-load",function(t){var s;a._setState(t),a.options.startCollapsed===!0||"accordion"===a.options.startCollapsed&&"accordion"===a.state||(s=a._getStartTab(),a._openTab(t,s),a.options.load.call(this,t,s))}),this.$element.trigger("tabs-load")},e.prototype._loadElements=function(){var s=this,a=this.$element.children("ul:first"),e=[],o=0;return this.$element.addClass(s.options.classes.container),a.addClass(s.options.classes.ul),t("li",a).each(function(){var a,i,n,l,r,c=t(this),h=c.hasClass(s.options.classes.stateExcluded);if(!h){a=t("a",c),r=a.attr("href"),i=t(r),n=t(s.options.accordionTabElement).insertBefore(i),l=t("").attr("href",r).html(a.html()).appendTo(n);var p={_ignoreHashChange:!1,id:o,disabled:-1!==t.inArray(o,s.options.disabled),tab:t(this),anchor:t("a",c),panel:i,selector:r,accordionTab:n,accordionAnchor:l,active:!1};o++,e.push(p)}}),e},e.prototype._loadClasses=function(){for(var t=0;t=0&&!this._getTab(a).disabled?this._getTab(a):this.options.active>0&&!this._getTab(this.options.active).disabled?this._getTab(this.options.active):this._getTab(0)},e.prototype._setState=function(s){var e,o=t("ul:first",this.$element),i=this.state,n="string"==typeof this.options.startCollapsed;o.is(":visible")?this.state="tabs":this.state="accordion",this.state!==i&&(this.$element.trigger("tabs-activate-state",{oldState:i,newState:this.state}),i&&n&&this.options.startCollapsed!==this.state&&this._getCurrentTab()===a&&(e=this._getStartTab(s),this._openTab(s,e)))},e.prototype._openTab=function(s,a,e,o){var i,n=this;e&&this._closeTab(s,this._getCurrentTab()),o&&this.rotateInterval>0&&this.stopRotation(),a.active=!0,a.tab.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive),a.accordionTab.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive),n._doTransition(a.panel,n.options.animation,"open",function(){var e="tabs-load"!==s.type||n.options.scrollToAccordionOnLoad;a.panel.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive),"accordion"!==n.getState()||!n.options.scrollToAccordion||n._isInView(a.accordionTab)&&"default"===n.options.animation||!e||(i=a.accordionTab.offset().top-n.options.scrollToAccordionOffset,"default"!==n.options.animation&&n.options.duration>0?t("html, body").animate({scrollTop:i},n.options.duration):t("html, body").scrollTop(i))}),this.$element.trigger("tabs-activate",a)},e.prototype._closeTab=function(t,s){var e,o=this,i="string"==typeof o.options.animationQueue;s!==a&&(e=i&&o.getState()===o.options.animationQueue?!0:i?!1:o.options.animationQueue,s.active=!1,s.tab.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault),o._doTransition(s.panel,o.options.animation,"close",function(){s.accordionTab.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault),s.panel.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault)},!e),this.$element.trigger("tabs-deactivate",s))},e.prototype._doTransition=function(t,s,a,e,o){var i,n=this;switch(s){case"slide":i="open"===a?"slideDown":"slideUp";break;case"fade":i="open"===a?"fadeIn":"fadeOut";break;default:i="open"===a?"show":"hide",n.options.duration=0}this.$queue.queue("responsive-tabs",function(o){t[i]({duration:n.options.duration,complete:function(){e.call(t,s,a),o()}})}),("open"===a||o)&&this.$queue.dequeue("responsive-tabs")},e.prototype._isCollapisble=function(){return"boolean"==typeof this.options.collapsible&&this.options.collapsible||"string"==typeof this.options.collapsible&&this.options.collapsible===this.getState()},e.prototype._getTab=function(t){return this.tabs[t]},e.prototype._getTabRefBySelector=function(t){for(var s=0;s=n&&i>=e},e.prototype.activate=function(t,s){var a=jQuery.Event("tabs-activate"),e=this._getTab(t);e.disabled||this._openTab(a,e,!0,s||!0)},e.prototype.deactivate=function(t){var s=jQuery.Event("tabs-dectivate"),a=this._getTab(t);a.disabled||this._closeTab(s,a)},e.prototype.enable=function(t){var s=this._getTab(t);s&&(s.disabled=!1,s.tab.addClass(this.options.classes.stateDefault).removeClass(this.options.classes.stateDisabled),s.accordionTab.addClass(this.options.classes.stateDefault).removeClass(this.options.classes.stateDisabled))},e.prototype.disable=function(t){var s=this._getTab(t);s&&(s.disabled=!0,s.tab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled),s.accordionTab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled))},e.prototype.getState=function(){return this.state},e.prototype.startRotation=function(s){var a=this;if(!(this.tabs.length>this.options.disabled.length))throw new Error("Rotation is not possible if all tabs are disabled");this.rotateInterval=setInterval(function(){var t=jQuery.Event("rotate");a._openTab(t,a._getTab(a._getNextTabRef()),!0)},s||(t.isNumeric(a.options.rotate)?a.options.rotate:4e3))},e.prototype.stopRotation=function(){s.clearInterval(this.rotateInterval),this.rotateInterval=0},e.prototype.option=function(t,s){return s&&(this.options[t]=s),this.options[t]},t.fn.responsiveTabs=function(s){var o,i=arguments;return s===a||"object"==typeof s?this.each(function(){t.data(this,"responsivetabs")||t.data(this,"responsivetabs",new e(this,s))}):"string"==typeof s&&"_"!==s[0]&&"init"!==s?(o=t.data(this[0],"responsivetabs"),"destroy"===s&&t.data(this,"responsivetabs",null),o instanceof e&&"function"==typeof o[s]?o[s].apply(o,Array.prototype.slice.call(i,1)):this):void 0}}(jQuery,window); diff --git a/web/app/plugins/mitlib-multisearch-widget/libs/responsive-tabs.css b/web/app/plugins/mitlib-multisearch-widget/libs/responsive-tabs.css deleted file mode 100644 index 1f5a9080..00000000 --- a/web/app/plugins/mitlib-multisearch-widget/libs/responsive-tabs.css +++ /dev/null @@ -1,34 +0,0 @@ -.r-tabs .r-tabs-nav { - margin: 0; - padding: 0; -} - -.r-tabs .r-tabs-tab { - display: inline-block; - margin: 0; - list-style: none; -} - -.r-tabs .r-tabs-panel { - padding: 15px; - display: none; -} - -.r-tabs .r-tabs-accordion-title { - display: none; -} - -.r-tabs .r-tabs-panel.r-tabs-state-active { - display: block; -} - -/* Accordion responsive breakpoint */ -@media only screen and (max-width: 768px) { - .r-tabs .r-tabs-nav { - display: none; - } - - .r-tabs .r-tabs-accordion-title { - display: block; - } -} diff --git a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.css b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.css index f8d85907..e96d71a4 100644 --- a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.css +++ b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.css @@ -1,3 +1,40 @@ +/* These styles were in libs/responsive-tabs.css. */ +.r-tabs .r-tabs-nav { + margin: 0; + padding: 0; +} + +.r-tabs .r-tabs-tab { + display: inline-block; + margin: 0; + list-style: none; +} + +.r-tabs .r-tabs-panel { + padding: 15px; + display: none; +} + +.r-tabs .r-tabs-accordion-title { + display: none; +} + +.r-tabs .r-tabs-panel.r-tabs-state-active { + display: block; +} + +/* Accordion responsive breakpoint */ +@media only screen and (max-width: 768px) { + .r-tabs .r-tabs-nav { + display: none; + } + + .r-tabs .r-tabs-accordion-title { + display: block; + } +} + +/* These styles were always part of this file. */ #multisearch.nojs { display: none; } diff --git a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.js b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.js index 842647d8..46a676d4 100644 --- a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.js +++ b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.js @@ -16,9 +16,7 @@ function preventSearch(textField,button) { $( button ).prop('disabled', true); e.preventDefault(); } - }); - } @@ -28,35 +26,10 @@ jQuery( document ).ready(function() { // If javascript is present, we disable the nojs class. $tabs.removeClass("nojs"); - // Check if this is the USE form and does not need tabs. - if ( $('#search-all').hasClass("use") ) { - // add r-tabs class to force styling of the form to be consistent with the other tabs. - $tabs.addClass("r-tabs"); - } else { - // Call Responsive Tabs plugin. - $tabs.responsiveTabs({ - rotate: false, - startCollapsed: false, - collapsible: false, - setHash: true - }); - - $( '#search_tabs_nav a' ).click( function(e) { - $( '#search_tabs_nav a' ).removeAttr( "aria-expanded" ); - $( '#search_tabs_nav a .current' ).remove(); - $(this).attr( "aria-expanded", "true" ).prepend( "Current: " ); - }); - } + // add r-tabs class to force styling of the form to be consistent with the other tabs. + $tabs.addClass("r-tabs"); // prevent submission until text field is not empty preventSearch( '#searchinput-bento', '.search-bento .button-search'); - - preventSearch( '#searchinput-bookslocal', 'form#booksearch .button-search'); - - preventSearch( '#searchinput-article', 'form#edssearch .button-search'); - - preventSearch( '#searchinput-site', '.search-site .button-search'); - - }); diff --git a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.php b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.php index d11b56e5..287d5e01 100644 --- a/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.php +++ b/web/app/plugins/mitlib-multisearch-widget/mitlib-multisearch-widget.php @@ -2,7 +2,7 @@ /** * Plugin Name: MITlib Multisearch Widget * Description: This plugin provides a widget that provides searches against multiple targets. - * Version: 1.7.0 + * Version: 1.8.0 * Author: MIT Libraries * License: GPL2 * @@ -18,7 +18,7 @@ } // Include the necessary classes. -include_once( 'class-multisearch-widget.php' ); +include_once 'class-multisearch-widget.php'; /** * Registers base widget. diff --git a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-alma.php b/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-alma.php deleted file mode 100644 index 75695c40..00000000 --- a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-alma.php +++ /dev/null @@ -1,33 +0,0 @@ - -

All panel

-
- -
-
- -
-
- -
-
-
-

- Advanced search | Citation search -

diff --git a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-eds.php b/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-eds.php deleted file mode 100644 index efcbe54d..00000000 --- a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-eds.php +++ /dev/null @@ -1,27 +0,0 @@ - -

All panel

-
- -
-
- -
-
- -
-
-
-

Advanced search

diff --git a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-use-v2.php b/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-use-v2.php index 73d21879..b6b900e9 100644 --- a/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-use-v2.php +++ b/web/app/plugins/mitlib-multisearch-widget/templates/tab-all-use-v2.php @@ -1,14 +1,13 @@ -