HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/AppData/Roaming/Code/Backups/9ea4679ac31bf97d57dc6b16a920c27c/file/-720ba233
file:///c%3A/xampp/htdocs/wordpress/wp-content/pluginsBK/google-drive-embedder/js/gdm-simple-browser.js {"mtime":1780030181203,"ctime":1734019404081,"size":8088,"etag":"3g5fflj5s8cs","orphaned":false,"typeId":""}
/**
 * Created by dan on 04/06/2015.
 *
 * Function to display the file list - including Next/Prev but not Search
 *
 *
 */

/* To be called with new, passing
 jQuery selector,
 options = {

 }
  */

GdmSimpleFileBrowser = (function($) {
    var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

    function GdmSimpleFileBrowser(selector, serviceHandler, options) {
        this.selector = selector;
        this.serviceHandler = serviceHandler;
        this.options = options;
    }

    GdmSimpleFileBrowser.prototype.init = function() {
        if (!this.boundEvents) {
            this.bindEvents();
        }
        this.boundEvents = true;

        this.drawHTML();
    };

    GdmSimpleFileBrowser.prototype.bindEvents = function() {
        this.fileClicked = __bind(this.fileClicked, this);
        this.authClicked = __bind(this.authClicked, this);
    };

    GdmSimpleFileBrowser.prototype.drawHTML = function () {
        $(this.selector).empty().append(
            $('#gdm-simple-browser-template-html').html()
        ).show()
            .find('.gdm-start-browse2').click( this.authClicked );
    };

    GdmSimpleFileBrowser.prototype.authClicked = function (event) {
        if (this.options.onAuthClicked) {
            this.options.onAuthClicked(event);
        }
    };

    GdmSimpleFileBrowser.prototype.showAuthBox = function () {
        $(this.selector + ' .gdm-authbtn').show();
        $(this.selector + ' .gdm-filelist').hide();
        $(this.selector + ' .gdm-thinking').hide();
    };

    GdmSimpleFileBrowser.prototype.displayMessage = function (html) {
        $(this.selector + ' .gdm-nextprev-div a').attr('disabled', 'disabled').hide();
        $(this.selector + ' .gdm-thinking-text').html(html);
        $(this.selector + ' .gdm-thinking').show();
    };

    GdmSimpleFileBrowser.prototype.startThinking = function () {
        $(this.selector + ' .gdm-nextprev-div a').attr('disabled', 'disabled').hide();
        $(this.selector + ' .gdm-thinking-text').html('Loading...');
        $(this.selector + ' .gdm-browsebox').hide();
        $(this.selector + ' .gdm-thinking').show();
    };

    GdmSimpleFileBrowser.prototype.stopThinking = function () {
        $(this.selector + ' .gdm-thinking').hide();
    };

    GdmSimpleFileBrowser.prototype.displayError = function (error) {

        if (error.errors && error.errors.length > 0) {
            var errorhtml = this.serviceHandler.getErrorHTML(error);
            this.displayMessage(errorhtml);
        }
    };

    GdmSimpleFileBrowser.prototype._gdmMakeListItem = function (links) {
        var attrs =
        {
            'href': links.viewer.url, 'class': "gdm-file-link",
            'gdm-data-id': links.id
        };

        var htmlItem = $('<div class="gdm-drivefile-div" />');

        var iconSpan = $('<span class="gdm-drivefile-icon" />')
            .append($(links.icon.url ? '<img alt="" src="' + links.icon.url + '" width="16" height="16" '
            + (links.icon.color ? ' style="background-color: ' + links.icon.color + '" ' : '') + ' />'
                : '<span style="width: 16px; height: 16px; background-color: ' + links.icon.color + '" />'));
        var titleSpan = $('<span class="gdm-drivefile-title" />')
            .append($('<a />', attrs)
                .text(links.title));

        htmlItem.append(iconSpan);
        htmlItem.append(titleSpan);

        return htmlItem;
    };

    GdmSimpleFileBrowser.prototype.startQuery = function(current_search_query, pageToken) {
        this.current_search_query = current_search_query;
        this.startThinking();
        var self = this;
        this.serviceHandler.makeAPICall(current_search_query, pageToken,
            function(linkslist, current_search_query, thisPageToken, newNextPageToken, newPrevPageToken) {
                // Disable OK button
                if (self.options.onFileSelected) {
                    self.options.onFileSelected('');
                }

                if (linkslist.hasOwnProperty('error')) {
                    self.displayError(linkslist.error);
                } else {
                    self.displayFiles(linkslist, current_search_query, thisPageToken, newNextPageToken, newPrevPageToken);
                }
            });
    };

    GdmSimpleFileBrowser.prototype.displayFiles = function (linkslist, current_search_query, thisPageToken, nextPageToken, prevPageToken) {
        this.stopThinking();
        $('.gdm-nextprev-div a').removeAttr('disabled');

        var fileslist = document.createDocumentFragment();

        if (linkslist.length > 0) {
            for (var i = 0; i < linkslist.length; ++i) {
                fileslist.appendChild(this._gdmMakeListItem(linkslist[i]).get(0));
            }
        }
        else {
            var htmlItem = $('<div class="gdm-nofiles-div" />');
            var spanItem = $('<span class="gdm-drivefile-title">No matching Drive files found</span>');

            if (current_search_query != '') {
                var self = this;
                spanItem.append(' (<a href="#" class="gdm-search-clear">Clear search</a>)');
                spanItem.find('.gdm-search-clear').on('click', function (e) {
                    if (self.options.onClearSearchClicked) {
                        self.options.onClearSearchClicked(e);
                    }
                });
            }

            htmlItem.append(spanItem);

            fileslist.appendChild(htmlItem.get(0));
        }

        $(this.selector + ' .gdm-filelist').empty().append(fileslist).show()
            .find('div.gdm-drivefile-div').on('click', this.fileClicked);

        var self = this;
        // next and prev buttons
        if (nextPageToken) {
            $('.gdm-next-link').show().off('click').click(function (event) {
                self.startQuery(self.current_search_query, nextPageToken);
            });
        }
        else {
            $('.gdm-next-link').hide();
        }

        if (thisPageToken) {
            $('.gdm-prev-link').show().off('click').click(function (event) {
                self.startQuery(self.current_search_query, prevPageToken);
            });
        }
        else {
            $('.gdm-prev-link').hide();
        }
    };

    GdmSimpleFileBrowser.prototype.fileClicked = function (event) {
        var elt = $(event.delegateTarget);
        var id = undefined;

        if (elt.hasClass('gdm-selected')) {
            elt.removeClass('gdm-selected');
        }
        else {
            $('.gdm-drivefile-div.gdm-selected').removeClass('gdm-selected');
            elt.addClass('gdm-selected');

            var anchor = elt.find('span.gdm-drivefile-title a');

            id = anchor.attr('gdm-data-id');
        }

        if (this.options.onFileSelected) {
            this.options.onFileSelected(id);
        }

        event.preventDefault();
        return false;
    };

    return GdmSimpleFileBrowser;
})(jQuery);