File Manager
/* global _envatoMarket, tb_click */
/**
* Envato Market sripts.
*
* @since 1.0.0
*/
(function( $ ) {
'use strict';
var dialog, envatoMarket = {
cache: {},
init: function () {
this.bindEvents()
},
bindEvents: function () {
const self = this
self.addItem()
self.removeItem()
self.tabbedNav()
$(document).on('click', '.envato-card a.thickbox', function () {
tb_click.call(this)
$('#TB_title').css({ 'background-color': '#23282d', color: '#cfcfcf' })
return false
})
},
addItem: function () {
$(document).on('click', '.add-envato-market-item', function (event) {
const id = 'envato-market-dialog-form'
event.preventDefault()
if ($('#' + id).length === 0) {
$('body').append(wp.template(id))
}
dialog = $('#' + id).dialog({
autoOpen: true,
modal: true,
width: 350,
buttons: {
Save: {
text: _envatoMarket.i18n.save,
click: function () {
const form = $(this)
let request; let token; let input_id
form.on('submit', function (event) {
event.preventDefault()
})
token = form.find('input[name="token"]').val()
input_id = form.find('input[name="id"]').val()
request = wp.ajax.post(_envatoMarket.action + '_add_item', {
nonce: _envatoMarket.nonce,
token,
id: input_id
})
request.done(function (response) {
const item = wp.template('envato-market-item')
const card = wp.template('envato-market-card')
const button = wp.template('envato-market-auth-check-button')
$('.nav-tab-wrapper').find('[data-id="' + response.type + '"]').removeClass('hidden')
response.item.type = response.type
$('#' + response.type + 's').append(card(response.item)).removeClass('hidden')
$('#envato-market-items').append(item({
name: response.name,
token: response.token,
id: response.id,
key: response.key,
type: response.type,
authorized: response.authorized
}))
if ($('.auth-check-button').length === 0) {
$('p.submit').append(button)
}
dialog.dialog('close')
envatoMarket.addReadmore()
})
request.fail(function (response) {
const template = wp.template('envato-market-dialog-error')
const data = {
message: (response.message ? response.message : _envatoMarket.i18n.error)
}
dialog.find('.notice').remove()
dialog.find('form').prepend(template(data))
dialog.find('.notice').fadeIn('fast')
})
}
},
Cancel: {
text: _envatoMarket.i18n.cancel,
click: function () {
dialog.dialog('close')
}
}
},
close: function () {
dialog.find('.notice').remove()
dialog.find('form')[0].reset()
}
})
})
},
removeItem: function () {
$(document).on('click', '#envato-market-items .item-delete', function (event) {
const self = this; const id = 'envato-market-dialog-remove'
event.preventDefault()
if ($('#' + id).length === 0) {
$('body').append(wp.template(id))
}
dialog = $('#' + id).dialog({
autoOpen: true,
modal: true,
width: 350,
buttons: {
Save: {
text: _envatoMarket.i18n.remove,
click: function () {
const form = $(this)
let request; let id
form.on('submit', function (submit_event) {
submit_event.preventDefault()
})
id = $(self).parents('li').data('id')
request = wp.ajax.post(_envatoMarket.action + '_remove_item', {
nonce: _envatoMarket.nonce,
id
})
request.done(function () {
const item = $('.col[data-id="' + id + '"]')
const type = item.find('.envato-card').hasClass('theme') ? 'theme' : 'plugin'
item.remove()
if ($('#' + type + 's').find('.col').length === 0) {
$('.nav-tab-wrapper').find('[data-id="' + type + '"]').addClass('hidden')
$('#' + type + 's').addClass('hidden')
}
$(self).parents('li').remove()
$('#envato-market-items li').each(function (index) {
$(this).find('input').each(function () {
$(this).attr('name', $(this).attr('name').replace(/\[\d\]/g, '[' + index + ']'))
})
})
if ($('.auth-check-button').length !== 0 && $('#envato-market-items li').length === 0) {
$('p.submit .auth-check-button').remove()
}
dialog.dialog('close')
})
request.fail(function (response) {
const template = wp.template('envato-market-dialog-error')
const data = {
message: response.message ? response.message : _envatoMarket.i18n.error
}
dialog.find('.notice').remove()
dialog.find('form').prepend(template(data))
dialog.find('.notice').fadeIn('fast')
})
}
},
Cancel: {
text: _envatoMarket.i18n.cancel,
click: function () {
dialog.dialog('close')
}
}
}
})
})
},
tabbedNav: function () {
const self = this
const $wrap = $('.about-wrap')
// Hide all panels
$('div.panel', $wrap).hide()
const tab = self.getParameterByName('tab')
const hashTab = window.location.hash.substr(1)
// Listen for the click event.
$(document, $wrap).on('click', '.nav-tab-wrapper a', function () {
// Deactivate and hide all tabs & panels.
$('.nav-tab-wrapper a', $wrap).removeClass('nav-tab-active')
$('div.panel', $wrap).hide()
// Activate and show the selected tab and panel.
$(this).addClass('nav-tab-active')
$('div' + $(this).attr('href'), $wrap).show()
self.maybeLoadhealthcheck()
return false
})
if (tab) {
$('.nav-tab-wrapper a[href="#' + tab + '"]', $wrap).click()
} else if (hashTab) {
$('.nav-tab-wrapper a[href="#' + hashTab + '"]', $wrap).click()
} else {
$('div.panel:not(.hidden)', $wrap).first().show()
}
},
getParameterByName: function (name) {
let regex, results
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]')
regex = new RegExp('[\\?&]' + name + '=([^&#]*)')
results = regex.exec(location.search)
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '))
},
maybeLoadhealthcheck: function () {
// We only load the health check ajax call when the envato-market-healthcheck div is visible on the page.
const $healthCheckOutput = $('.envato-market-healthcheck')
if ($healthCheckOutput.is(':visible')) {
$healthCheckOutput.text('Loading...')
// Use our existing wp.ajax.post pattern from above to call the healthcheck API endpoint
const request = wp.ajax.post(_envatoMarket.action + '_healthcheck', {
nonce: _envatoMarket.nonce
})
request.done(function (response) {
if (response && response.limits) {
const $healthCheckUL = $('<ul></ul>')
const limits = Object.keys(response.limits)
for (let i = 0; i < limits.length; i++) {
const $healthCheckLI = $('<li></li>')
const healthCheckItem = response.limits[limits[i]]
$healthCheckLI.addClass(healthCheckItem.ok ? 'healthcheck-ok' : 'healthcheck-error')
$healthCheckLI.attr('data-limit', limits[i])
$healthCheckLI.append('<span class="healthcheck-item-title">' + healthCheckItem.title + '</span>')
$healthCheckLI.append('<span class="healthcheck-item-message">' + healthCheckItem.message + '</span>')
$healthCheckUL.append($healthCheckLI)
}
$healthCheckOutput.html($healthCheckUL)
} else {
window.console.log(response)
$healthCheckOutput.text('Health check failed to load. Please check console for errors.')
}
})
request.fail(function (response) {
window.console.log(response)
$healthCheckOutput.text('Health check failed to load. Please check console for errors.')
})
}
}
}
$(window).on('load', function () {
envatoMarket.init()
})
})(jQuery)
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com