/home/arranoyd/zeleniprojekti/wp-content/plugins/envato-market/js/envato-market.js
/* global _envatoMarket, tb_click */
/**
* Envato Market sripts.
*
* @since 1.0.0
*/
(function( $ ) {
'use strict';
var dialog, envatoMarket = {
cache: {},
init: function() {
this.cacheElements();
this.bindEvents();
},
cacheElements: function() {
this.cache = {
$window: $( window ),
$document: $( document )
};
},
bindEvents: function() {
var self = this;
self.cache.$window.on( 'resize', $.proxy( self.tbPosition, self ) );
self.cache.$document.on( 'ready', function() {
self.addItem();
self.removeItem();
self.tabbedNav();
$( '.envato-card' ).on( 'click', 'a.thickbox', function() {
tb_click.call( this );
$( '#TB_title' ).css({ 'background-color': '#23282d', 'color': '#cfcfcf' });
self.cache.$window.trigger( 'resize' );
return false;
});
});
},
addItem: function() {
$( '.add-envato-market-item' ).on( 'click', function( event ) {
var id = 'envato-market-dialog-form';
event.preventDefault();
if ( 0 === $( '#' + id ).length ) {
$( 'body' ).append( wp.template( id ) );
}
dialog = $( '#' + id ).dialog({
autoOpen: true,
modal: true,
width: 350,
buttons: {
Save: {
text: _envatoMarket.i18n.save,
click: function() {
var form = $( this ),
request, token, 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: token,
id: input_id
});
request.done(function( response ) {
var item = wp.template( 'envato-market-item' ),
card = wp.template( 'envato-market-card' ),
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 ( 0 === $( '.auth-check-button' ).length ) {
$( 'p.submit' ).append( button );
}
dialog.dialog( 'close' );
envatoMarket.addReadmore();
});
request.fail(function( response ) {
var template = wp.template( 'envato-market-dialog-error' ),
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() {
$( '#envato-market-items' ).on( 'click', '.item-delete', function( event ) {
var self = this, id = 'envato-market-dialog-remove';
event.preventDefault();
if ( 0 === $( '#' + id ).length ) {
$( 'body' ).append( wp.template( id ) );
}
dialog = $( '#' + id ).dialog({
autoOpen: true,
modal: true,
width: 350,
buttons: {
Save: {
text: _envatoMarket.i18n.remove,
click: function() {
var form = $( this ),
request, 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: id
});
request.done(function() {
var item = $( '.col[data-id="' + id + '"]' ),
type = item.find( '.envato-card' ).hasClass( 'theme' ) ? 'theme' : 'plugin';
item.remove();
if ( 0 === $( '#' + type + 's' ).find( '.col' ).length ) {
$( '.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 ( 0 !== $( '.auth-check-button' ).length && 0 === $( '#envato-market-items li' ).length ) {
$( 'p.submit .auth-check-button' ).remove();
}
dialog.dialog( 'close' );
});
request.fail(function( response ) {
var template = wp.template( 'envato-market-dialog-error' ),
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() {
var self = this,
$wrap = $( '.about-wrap' );
// Hide all panels
$( 'div.panel', $wrap ).hide();
this.cache.$window.on( 'load', function() {
var tab = self.getParameterByName( 'tab' ),
hashTab = window.location.hash.substr( 1 );
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();
}
});
// Listen for the click event.
$( '.nav-tab-wrapper a', $wrap ).on( 'click', 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();
return false;
});
},
getParameterByName: function( name ) {
var regex, results;
name = name.replace( /[\[]/, '\\[' ).replace( /[\]]/, '\\]' );
regex = new RegExp( '[\\?&]' + name + '=([^&#]*)' );
results = regex.exec( location.search );
return null === results ? '' : decodeURIComponent( results[1].replace( /\+/g, ' ' ) );
},
tbPosition: function() {
var $tbWindow = $( '#TB_window' ),
$tbFrame = $( '#TB_iframeContent' ),
windowWidth = this.cache.$window.width(),
newHeight = this.cache.$window.height() - ( ( 792 < windowWidth ) ? 90 : 50 ),
newWidth = ( 792 < windowWidth ) ? 772 : windowWidth - 20;
if ( $tbWindow.size() ) {
$tbWindow
.width( newWidth )
.height( newHeight )
.css({ 'margin-left': '-' + parseInt( ( newWidth / 2 ), 10 ) + 'px' });
$tbFrame.width( newWidth ).height( newHeight );
if ( 'undefined' !== typeof document.body.style.maxWidth ) {
$tbWindow.css({
'top': ( 792 < windowWidth ? 30 : 10 ) + 'px',
'margin-top': '0'
});
}
}
return $( 'a.thickbox' ).each(function() {
var href = $( this ).attr( 'href' );
if ( ! href ) {
return;
}
href = href.replace( /&width=[0-9]+/g, '' );
href = href.replace( /&height=[0-9]+/g, '' );
href = href + '&width=' + newWidth + '&height=' + newHeight;
$( this ).attr( 'href', href );
});
}
};
envatoMarket.init();
})( jQuery );