daily pastebin goal
26%
SHARE
TWEET

Untitled

a guest May 16th, 2018 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. if ( !function_exists( 'stick_scroll_filter_wp_list_tables' ) ) {
  3. function stick_scroll_filter_wp_list_tables() {
  4.     $screen = get_current_screen();
  5.     $base = $screen->base;
  6.     $type = $screen->post_type;
  7.     $name = $screen->id;
  8. if ( (($base === 'edit') && ($type == 'page' || $type == 'post')) && (wp_script_is( 'jquery', 'done' )) )
  9. { ?>
  10. <style type="text/css">
  11.     .filter-table .quick {
  12.         margin-left: 0.5em;
  13.         font-size: 0.8em;
  14.         text-decoration: none;
  15.     }
  16.     .fitler-table .quick:hover {
  17.         text-decoration: underline;
  18.     }
  19.     td.alt {
  20.         background-color: #ffc;
  21.         background-color: rgba(255, 255, 0, 0.2);
  22.     }
  23. </style>
  24. <!-- Sticky Table Headeers on Scroll and Filter Table CSS-->
  25. <script type="text/javascript">
  26.     (function (e, i) {
  27.         "use strict";
  28.  
  29.         function t(t, s) {
  30.             var d = this;
  31.             d.$el = e(t), d.el = t, d.id = l++, d.$window = e(i), d.$document = e(document), d.$el.bind("destroyed", e.proxy(d.teardown, d)), d.$clonedHeader = null, d.$originalHeader = null, d.isSticky = !1, d.hasBeenSticky = !1, d.leftOffset = null, d.topOffset = null, d.init = function () {
  32.                 d.$el.each(function () {
  33.                     var i = e(this);
  34.                     i.css("padding", 0), d.$originalHeader = e("thead:first", this), d.$clonedHeader = d.$originalHeader.clone(), i.trigger("clonedHeader." + o, [d.$clonedHeader]), d.$clonedHeader.addClass("tableFloatingHeader"), d.$clonedHeader.css("display", "none"), d.$originalHeader.addClass("tableFloatingHeaderOriginal"), d.$originalHeader.after(d.$clonedHeader), d.$printStyle = e('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'), e("head").append(d.$printStyle)
  35.                 }), d.setOptions(s), d.updateWidth(), d.toggleHeaders(), d.bind()
  36.             }, d.destroy = function () {
  37.                 d.$el.unbind("destroyed", d.teardown), d.teardown()
  38.             }, d.teardown = function () {
  39.                 d.isSticky && d.$originalHeader.css("position", "static"), e.removeData(d.el, "plugin_" + o), d.unbind(), d.$clonedHeader.remove(), d.$originalHeader.removeClass("tableFloatingHeaderOriginal"), d.$originalHeader.css("visibility", "visible"), d.$printStyle.remove(), d.el = null, d.$el = null
  40.             }, d.bind = function () {
  41.                 d.$scrollableArea.on("scroll." + o, d.toggleHeaders), d.isWindowScrolling || (d.$window.on("scroll." + o + d.id, d.setPositionValues), d.$window.on("resize." + o + d.id, d.toggleHeaders)), d.$scrollableArea.on("resize." + o, d.toggleHeaders), d.$scrollableArea.on("resize." + o, d.updateWidth)
  42.             }, d.unbind = function () {
  43.                 d.$scrollableArea.off("." + o, d.toggleHeaders), d.isWindowScrolling || (d.$window.off("." + o + d.id, d.setPositionValues), d.$window.off("." + o + d.id, d.toggleHeaders)), d.$scrollableArea.off("." + o, d.updateWidth), d.$el.off("." + o), d.$el.find("*").off("." + o)
  44.             }, d.toggleHeaders = function () {
  45.                 d.$el && d.$el.each(function () {
  46.                     var i, t = e(this),
  47.                         o = d.isWindowScrolling ? isNaN(d.options.fixedOffset) ? d.options.fixedOffset.outerHeight() : d.options.fixedOffset : d.$scrollableArea.offset().top + (isNaN(d.options.fixedOffset) ? 0 : d.options.fixedOffset),
  48.                         l = t.offset(),
  49.                         n = d.$scrollableArea.scrollTop() + o,
  50.                         s = d.$scrollableArea.scrollLeft(),
  51.                         a = d.isWindowScrolling ? n > l.top : o > l.top,
  52.                         r = (d.isWindowScrolling ? n : 0) < l.top + t.height() - d.$clonedHeader.height() - (d.isWindowScrolling ? 0 : o);
  53.                     a && r ? (i = l.left - s + d.options.leftOffset, d.$originalHeader.css({
  54.                         position: "fixed",
  55.                         "margin-top": 0,
  56.                         left: i,
  57.                         "z-index": 1
  58.                     }), d.leftOffset = i, d.topOffset = o, d.$clonedHeader.css("display", ""), d.isSticky || (d.isSticky = !0, d.updateWidth()), d.setPositionValues()) : d.isSticky && (d.$originalHeader.css("position", "static"), d.$clonedHeader.css("display", "none"), d.isSticky = !1, d.resetWidth(e("td,th", d.$clonedHeader), e("td,th", d.$originalHeader)))
  59.                 })
  60.             }, d.setPositionValues = function () {
  61.                 var e = d.$window.scrollTop(),
  62.                     i = d.$window.scrollLeft();
  63.                 !d.isSticky || 0 > e || e + d.$window.height() > d.$document.height() || 0 > i || i + d.$window.width() > d.$document.width() || d.$originalHeader.css({
  64.                     top: d.topOffset - (d.isWindowScrolling ? 0 : e),
  65.                     left: d.leftOffset - (d.isWindowScrolling ? 0 : i)
  66.                 })
  67.             }, d.updateWidth = function () {
  68.                 if(d.isSticky) {
  69.                     d.$originalHeaderCells || (d.$originalHeaderCells = e("th,td", d.$originalHeader)), d.$clonedHeaderCells || (d.$clonedHeaderCells = e("th,td", d.$clonedHeader));
  70.                     var i = d.getWidth(d.$clonedHeaderCells);
  71.                     d.setWidth(i, d.$clonedHeaderCells, d.$originalHeaderCells), d.$originalHeader.css("width", d.$clonedHeader.width())
  72.                 }
  73.             }, d.getWidth = function (t) {
  74.                 var o = [];
  75.                 return t.each(function (t) {
  76.                     var l, n = e(this);
  77.                     if("border-box" === n.css("box-sizing")) l = n.outerWidth();
  78.                     else {
  79.                         var s = e("th", d.$originalHeader);
  80.                         if("collapse" === s.css("border-collapse"))
  81.                             if(i.getComputedStyle) l = parseFloat(i.getComputedStyle(this, null).width);
  82.                             else {
  83.                                 var a = parseFloat(n.css("padding-left")),
  84.                                     r = parseFloat(n.css("padding-right")),
  85.                                     c = parseFloat(n.css("border-width"));
  86.                                 l = n.outerWidth() - a - r - c
  87.                             } else l = n.width()
  88.                     }
  89.                     o[t] = l
  90.                 }), o
  91.             }, d.setWidth = function (e, i, t) {
  92.                 i.each(function (i) {
  93.                     var o = e[i];
  94.                     t.eq(i).css({
  95.                         "min-width": o,
  96.                         "max-width": o
  97.                     })
  98.                 })
  99.             }, d.resetWidth = function (i, t) {
  100.                 i.each(function (i) {
  101.                     var o = e(this);
  102.                     t.eq(i).css({
  103.                         "min-width": o.css("min-width"),
  104.                         "max-width": o.css("max-width")
  105.                     })
  106.                 })
  107.             }, d.setOptions = function (t) {
  108.                 d.options = e.extend({}, n, t), d.$scrollableArea = e(d.options.scrollableArea), d.isWindowScrolling = d.$scrollableArea[0] === i
  109.             }, d.updateOptions = function (e) {
  110.                 d.setOptions(e), d.unbind(), d.bind(), d.updateWidth(), d.toggleHeaders()
  111.             }, d.init()
  112.         }
  113.         var o = "stickyTableHeaders",
  114.             l = 0,
  115.             n = {
  116.                 fixedOffset: 0,
  117.                 leftOffset: 0,
  118.                 scrollableArea: i
  119.             };
  120.         e.fn[o] = function (i) {
  121.             return this.each(function () {
  122.                 var l = e.data(this, "plugin_" + o);
  123.                 l ? "string" == typeof i ? l[i].apply(l) : l.updateOptions(i) : "destroy" !== i && e.data(this, "plugin_" + o, new t(this, i))
  124.             })
  125.         }
  126.     })(jQuery, window);
  127. </script><!-- Sticky Table Headeers on Scroll Script -->
  128. <script type="text/javascript">
  129.     ! function (i) {
  130.         i.fn.bindWithDelay = function (n, u, t, e, d) {
  131.             return i.isFunction(u) && (d = e, e = t, t = u, u = void 0), t.guid = t.guid || i.guid && i.guid++, this.each(function () {
  132.                 function l() {
  133.                     var n = i.extend(!0, {}, arguments[0]),
  134.                         u = this,
  135.                         l = function () {
  136.                             o = null, t.apply(u, [n])
  137.                         };
  138.                     d || (clearTimeout(o), o = null), o || (o = setTimeout(l, e))
  139.                 }
  140.                 var o = null;
  141.                 l.guid = t.guid, i(this).bind(n, u, l)
  142.             })
  143.         }
  144.     }(jQuery);
  145. </script><!-- Bind With Delay for Filter Table Script -->
  146. <script type="text/javascript">
  147.     ! function (e) {
  148.         var t = e.fn.jquery.split("."),
  149.             i = parseFloat(t[0]),
  150.             a = parseFloat(t[1]);
  151.         e.expr[":"].filterTableFind = 2 > i && 8 > a ? function (t, i, a) {
  152.             return e(t).text().toUpperCase().indexOf(a[3].toUpperCase()) >= 0
  153.         } : jQuery.expr.createPseudo(function (t) {
  154.             return function (i) {
  155.                 return e(i).text().toUpperCase().indexOf(t.toUpperCase()) >= 0
  156.             }
  157.         }), e.fn.filterTable = function (t) {
  158.             var i = {
  159.                     autofocus: !1,
  160.                     callback: null,
  161.                     containerClass: "filter-table",
  162.                     containerTag: "p",
  163.                     hideTFootOnFilter: !1,
  164.                     highlightClass: "alt",
  165.                     inputSelector: null,
  166.                     inputName: "",
  167.                     inputType: "search",
  168.                     label: "Filter:",
  169.                     minRows: 8,
  170.                     placeholder: "search this table",
  171.                     quickList: [],
  172.                     quickListClass: "quick",
  173.                     quickListGroupTag: "",
  174.                     quickListTag: "a",
  175.                     visibleClass: "visible"
  176.                 },
  177.                 a = function (e) {
  178.                     return e.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")
  179.                 },
  180.                 l = e.extend({}, i, t),
  181.                 n = function (e, t) {
  182.                     var i = e.find("tbody");
  183.                     "" === t ? (i.find("tr").show().addClass(l.visibleClass), i.find("td").removeClass(l.highlightClass), l.hideTFootOnFilter && e.find("tfoot").show()) : (i.find("tr").hide().removeClass(l.visibleClass), l.hideTFootOnFilter && e.find("tfoot").hide(), i.find("td").removeClass(l.highlightClass).filter(':filterTableFind("' + t.replace(/(['"])/g, "\\$1") + '")').addClass(l.highlightClass).closest("tr").show().addClass(l.visibleClass)), l.callback && l.callback(t, e)
  184.                 };
  185.             return this.each(function () {
  186.                 var t = e(this),
  187.                     i = t.find("tbody"),
  188.                     s = null,
  189.                     r = null,
  190.                     o = null,
  191.                     c = !0;
  192.                 "TABLE" === t[0].nodeName && i.length > 0 && (0 === l.minRows || l.minRows > 0 && i.find("tr").length > l.minRows) && !t.prev().hasClass(l.containerClass) && (l.inputSelector && 1 === e(l.inputSelector).length ? (o = e(l.inputSelector), s = o.parent(), c = !1) : (s = e("<" + l.containerTag + " />"), "" !== l.containerClass && s.addClass(l.containerClass), s.prepend(l.label + " "), o = e('<input type="' + l.inputType + '" placeholder="' + l.placeholder + '" name="' + l.inputName + '" />')), l.autofocus && o.attr("autofocus", !0), e.fn.bindWithDelay ? o.bindWithDelay("keyup", function () {
  193.                     n(t, e(this).val())
  194.                 }, 200) : o.bind("keyup", function () {
  195.                     n(t, e(this).val())
  196.                 }), o.bind("click search", function () {
  197.                     n(t, e(this).val())
  198.                 }), c && s.append(o), l.quickList.length > 0 && (r = l.quickListGroupTag ? e("<" + l.quickListGroupTag + " />") : s, e.each(l.quickList, function (t, i) {
  199.                     var n = e("<" + l.quickListTag + ' class="' + l.quickListClass + '" />');
  200.                     n.text(a(i)), "A" === n[0].nodeName && n.attr("href", "#"), n.bind("click", function (e) {
  201.                         e.preventDefault(), o.val(i).focus().trigger("click")
  202.                     }), r.append(n)
  203.                 }), r !== s && s.append(r)), c && t.before(s))
  204.             })
  205.         }
  206.     }(jQuery);
  207. </script>
  208. <style type="text/css">
  209.     .tableFloatingHeaderOriginal {
  210.         background-color: #ffffff;
  211.     }
  212. </style>
  213. <script type="text/javascript">
  214.     jQuery(document).ready(function ($) {
  215.         $('table').stickyTableHeaders({
  216.             fixedOffset: 50
  217.         });
  218.         $('table.wp-list-table').filterTable({
  219.             inputSelector: '.search-box input[type=search][name=s]',
  220.             autofocus: true,
  221.             placeholder: 'What Are You Looking For?',
  222.             quickListTag: 'li',
  223.             hideTFootOnFilter: true
  224.         });
  225.     });
  226. </script><!-- Filter Table Bind With Delay and Sticky Headers -->
  227. <?php } // end if
  228. } // end function
  229. add_action( 'admin_print_footer_scripts', 'stick_scroll_filter_wp_list_tables', 99 );
  230. } // end function_exists
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top