HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: /home/mmickelson/martyknows.com/wp-content/plugins/enhanced-media-library/js/eml-media-editor.js
window.wp = window.wp || {};
window.eml = window.eml || { l10n: {} };


( function( $, _ ) {

    var media = wp.media,
        l10n = media.view.l10n;



    /**
     * eml.mediaCollection
     *
     */
    eml.mediaCollection = {

        collections: {},

        attachments: function( shortcode ) {

            var collections = this.collections,
                shortcodeString = shortcode.string(),
                result = collections[ shortcodeString ],
                attrs, args, query, others, self = this,
                isFilterBased = emlIsFilterBased( shortcode.attrs.named );


            delete collections[ shortcodeString ];

            if ( result && ! isFilterBased && _.isUndefined( shortcode.attrs.named.limit ) ) {
                return result;
            }

            // Fill the default shortcode attributes.
            attrs = _.defaults( shortcode.attrs.named, this.defaults );
            args  = _.pick( attrs, 'orderby', 'order' );

            if ( ! attrs.limit || _.isNaN( parseInt( attrs.limit, 10 ) ) || parseInt( attrs.limit, 10 ) < 1 ) {
                delete attrs.limit;
            }
            else {
                attrs.limit = parseInt( attrs.limit, 10 );
            }

            args.type = this.type;
            args.perPage = attrs.limit || -1;


            if ( 'rand' === attrs.orderby ) {
                attrs._orderbyRandom = true;
            }

            if ( 'post_date' === attrs.orderby ) {
                args.orderby = 'date';
            }

            // Map the `orderby` attribute to the corresponding model property.
            if ( ! attrs.orderby || /^menu_order(?: ID)?$/i.test( attrs.orderby ) ) {
                args.orderby = 'menuOrder';
            }

            if ( 'menuOrder' === args.orderby ) {
                args.order = 'ASC';
            }

            if ( _.isUndefined( attrs.id )  && ! isFilterBased ) {
                attrs.id = media.view.settings.post && media.view.settings.post.id;
            }

            if ( isFilterBased ) {

                if ( attrs.id ) {
                    args.uploadedTo = attrs.id;
                }

                _.each( eml.l10n.taxonomies, function( terms, taxonomy ) {

                    if ( attrs[taxonomy] ) {
                        args[taxonomy] = attrs[taxonomy];
                    }
                });

                if ( attrs.monthnum && attrs.year ) {
                    args.monthnum = attrs.monthnum;
                    args.year = attrs.year;
                }
            }
            else {

                if ( attrs.ids ) {

                    args.post__in = attrs.ids.split(',');

                    if ( 'menuOrder' === args.orderby ) {
                        args.orderby = 'post__in';
                    }
                }
                else if ( attrs.include ) {
                    args.post__in = attrs.include.split(',');
                }

                if ( attrs.exclude ) {
                    args.post__not_in = attrs.exclude.split(',');
                }

                if ( ! args.post__in ) {
                    args.uploadedTo = attrs.id;
                }
            }


            // Collect the attributes that were not included in `args`.
            others = _.omit( attrs, 'id', 'ids', 'include', 'exclude' );

            _.each( this.defaults, function( value, key ) {
                others[ key ] = self.coerce( others, key );
            });

            media.model.Query.cleanQueries();

            query = wp.media.query( args );
            query[ this.tag ] = new Backbone.Model( others );

            return query;
        },

        shortcode: function( attachments ) {

            var collections = this.collections,
                props = attachments.props.toJSON(),
                attrs = _.pick( props, 'orderby', 'order' ),
                shortcode, clone,
                isFilterBased = emlIsFilterBased( props );


            if ( attachments.type ) {
                attrs.type = attachments.type;
                delete attachments.type;
            }

            if ( attachments[this.tag] ) {
                _.extend( attrs, attachments[this.tag].toJSON() );
            }

            if ( ! isFilterBased ) {
                // Convert all gallery shortcodes to use the `ids` property.
                // Ignore `post__in` and `post__not_in`; the attachments in
                // the collection will already reflect those properties.
                attrs.ids = attachments.pluck('id');
            }

            // Copy the `uploadedTo` post ID.
            if ( props.uploadedTo ) {
                attrs.id = props.uploadedTo;
            }

            if ( undefined !== attrs._orderbyRandom ) {

                if ( attrs._orderbyRandom ) {
                    attrs.orderby = 'rand';
                } else {
                    delete attrs.orderby;
                }
                delete attrs._orderbyRandom;
            }


            _.each( eml.l10n.taxonomies, function( terms, taxonomy ) {

                if ( props[taxonomy] ) {
                    attrs[taxonomy] = props[taxonomy];
                }
            });


            if ( props.monthnum && props.year ) {
                attrs.monthnum = props.monthnum;
                attrs.year = props.year;
            }

            if ( 'rand' === attrs.orderby || 'menuOrder' === attrs.orderby ) {
                delete attrs.order;
            }

            if ( ! attrs.limit || _.isNaN( parseInt( attrs.limit, 10 ) ) || parseInt( attrs.limit, 10 ) < 1 ) {
                delete attrs.limit;
                delete media.galleryDefaults.limit;
            }
            else {
                attrs.limit = parseInt( attrs.limit, 10 ).toString();
            }

            attrs = this.setDefaults( attrs );

            shortcode = new wp.shortcode({
                tag:    this.tag,
                attrs:  attrs,
                type:   'single'
            });

            // Use a cloned version of the gallery.
            clone = new wp.media.model.Attachments( attachments.models, {
                props: props
            });
            clone[ this.tag ] = attachments[ this.tag ];
            collections[ shortcode.string() ] = clone;

            return shortcode;
        }

    };



    /**
     * wp.media.gallery
     *
     */
    _.extend( media.gallery.defaults, {
        orderby : 'menuOrder',
        order: 'ASC'
    });

    delete media.gallery.defaults.id;

    _.extend( media.gallery, eml.mediaCollection );



    /**
     * wp.media.playlist
     *
     */

    _.extend( media.playlist.defaults, {
        orderby: 'menuOrder',
        order: 'ASC'
    });

    delete media.playlist.defaults.id;

    _.extend( media.playlist, eml.mediaCollection );


})( jQuery, _ );