- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
195 lines
5.3 KiB
JavaScript
Executable File
195 lines
5.3 KiB
JavaScript
Executable File
( function ( $ ) {
|
|
var _instance = null,
|
|
_utils = require( '../_utils' );
|
|
|
|
module.exports = TVE.CloudTemplatesCategories.extend( {
|
|
$$type: 'ultimatum_' + tve_ult_page_data.design_type,
|
|
templateName: TVE.ucFirst( tve_ult_page_data.design_type === 'bar' ? 'ribbon' : tve_ult_page_data.design_type ),
|
|
categoryId: 'countdown_type',
|
|
before_open: function () {
|
|
|
|
this.applyTo = TVE.Editor_Page.editor.children( '.thrv_wrapper' );
|
|
if ( ! TVE.ActiveElement ) {
|
|
TVE.ActiveElement = this.applyTo.addClass( 'edit_mode' );
|
|
}
|
|
|
|
if ( ! TVE.CONST[ this.collectionName ] ) {
|
|
this.fetchTemplates( this.$$type );
|
|
} else {
|
|
this.$( '[data-item="Saved Templates"] .lp-group-count' ).text( tve_ult_page_data.saved_tpls.length )
|
|
}
|
|
|
|
this.resetFilters();
|
|
|
|
if ( ! this.applyTo.hasClass( 'tcb-ct-placeholder' ) && this.applyTo.attr( 'tcb-template-name' ) ) {
|
|
this.$warning.show().find( '.tcb-notification-content' ).html( TVE.t.warning_change_ct.replace( /%s/g, this.templateName ) );
|
|
} else {
|
|
this.$warning.hide();
|
|
}
|
|
|
|
this.selectDefault();
|
|
},
|
|
|
|
selectDefault: function () {
|
|
this.filter( {}, this.$typesWrapper.find( '[data-item="Cloud Templates"]' ) );
|
|
},
|
|
|
|
on_success: function ( response ) {
|
|
if ( response.error ) {
|
|
return this.on_error( {responseJSON: response} );
|
|
}
|
|
|
|
this.collection.reset( response.templates );
|
|
this.build_preview();
|
|
|
|
/**
|
|
* Render Types
|
|
*/
|
|
this.types = {};
|
|
|
|
_.each( response.templates, ( tpl ) => {
|
|
const type = tpl.config[ `tve_tpl_${this.$$type}_meta` ][ this.categoryId ];
|
|
|
|
if ( type && ! this.types[ type ] ) {
|
|
this.types[ type ] = 0;
|
|
}
|
|
|
|
this.types[ type ] ++;
|
|
} );
|
|
|
|
this.$typesWrapper.empty()
|
|
.append( this.group_item( {group: 'All Cloud Templates', counter: response.templates.length} ) )
|
|
|
|
_.each( this.types, ( counter, groupKey ) => {
|
|
this.$typesWrapper.append( this.group_item( {group: groupKey, counter: counter} ) )
|
|
} );
|
|
|
|
this.$typesWrapper.append( this.group_item( {group: 'Saved Templates', counter: tve_ult_page_data.saved_tpls.length} ) );
|
|
|
|
this.selectDefault();
|
|
TVE.CONST[ this.collectionName ] = response.templates;
|
|
},
|
|
/**
|
|
* Build the preview
|
|
*
|
|
* Called from reset collection
|
|
*/
|
|
build_preview: function () {
|
|
var html = '',
|
|
self = this;
|
|
if ( this.filters.group.length > 0 ) {
|
|
if ( this.filters.group[ 0 ].indexOf( 'Cloud' ) !== - 1 ) {
|
|
this.collection.reset( TVE.CONST[ this.collectionName ] );
|
|
} else if ( this.filters.group[ 0 ].indexOf( 'Countdown' ) !== - 1 ) {
|
|
this.collection.reset( TVE.CONST[ this.collectionName ].filter( t => t.config[ `tve_tpl_${this.$$type}_meta` ][ this.categoryId ] === this.filters.group[ 0 ] ) );
|
|
} else {
|
|
this.collection.reset( tve_ult_page_data.saved_tpls );
|
|
}
|
|
}
|
|
|
|
this.instance.collection.each( function ( model ) {
|
|
html += self.item_template( {
|
|
item: model.toJSON(),
|
|
selected: '',
|
|
} );
|
|
|
|
} );
|
|
|
|
if ( html.length ) {
|
|
this.$content.html( html );
|
|
|
|
var dynamicImageWidth = parseInt( this.$content.find( this.itemClass ).outerWidth( true ) );
|
|
|
|
this.$content.find( 'img' ).each( function () {
|
|
var imageRation = this.getAttribute( 'data-ratio' );
|
|
if ( imageRation ) {
|
|
$( this ).closest( '.cloud-template-item' ).css( 'height', dynamicImageWidth * parseFloat( imageRation ) );
|
|
}
|
|
} );
|
|
|
|
this.applyMasonry();
|
|
} else {
|
|
this.$content.html( this.no_templates() );
|
|
}
|
|
|
|
this.on_finished();
|
|
},
|
|
/**
|
|
* Download a template
|
|
*
|
|
* @param id
|
|
*/
|
|
select_template: function ( id ) {
|
|
this.selected = String( id );
|
|
|
|
this.applyTo.addClass( 'tcb-block-placeholder tcb-elem-placeholder' ).empty();
|
|
|
|
this.close();
|
|
|
|
TVE.inner_$( 'html' ).stop().animate( {
|
|
scrollTop: this.applyTo.offset().top - 50
|
|
}, {duration: 500} );
|
|
|
|
if ( this.selected.indexOf( 'tvu-tpl' ) !== - 1 ) {
|
|
this.saveSavedTemplate();
|
|
} else {
|
|
this.save();
|
|
|
|
}
|
|
},
|
|
saveSavedTemplate: function () {
|
|
var self = this;
|
|
_utils.tpl_ajax( {
|
|
custom: 'get_saved_tpl',
|
|
tpl_id: this.selected
|
|
} ).done( function ( response ) {
|
|
self.applyTo.replaceWith( $( response.content ) );
|
|
TVE.Editor_Page.content_manager.insert_head_css( response.inline_css ).done( function () {
|
|
|
|
TVE.Editor_Page.editor.find( '[data-css]' ).addBack( '[data-css]' ).each( function () {
|
|
TVE.inner_$( this ).head_css_clone();
|
|
} );
|
|
|
|
TVE.main.overlay( true );
|
|
TVE.Editor_Page.save( true );
|
|
} )
|
|
} )
|
|
},
|
|
alter_wrapper_attributes: function ( attributes, data ) {
|
|
/**
|
|
* Force the proper active element
|
|
*/
|
|
if ( this.applyTo.length > 1 ) {
|
|
this.applyTo = this.applyTo.filter( ':not(style)' );
|
|
TVE.ClickedElement = TVE.ActiveElement = this.applyTo;
|
|
}
|
|
return {
|
|
'tcb-template-name': data.name,
|
|
'tcb-template-id': data.id,
|
|
'tvu-tpl-id': 'cloud_' + data.type + '-' + data.id,
|
|
'tcb-template-pack': data.pack,
|
|
'data-keep-css_id': 1,
|
|
}
|
|
},
|
|
afterTemplateCssApplied: function () {
|
|
TVE.Editor_Page.editor.children( 'style' ).slice( 1 ).remove();
|
|
}
|
|
}, {
|
|
/**
|
|
* "Singleton" implementation for modal instance
|
|
*
|
|
* @param el
|
|
*/
|
|
get_instance: function ( el ) {
|
|
if ( ! _instance ) {
|
|
_instance = new TVE_Ult_Int.DesignTemplates( {
|
|
el: el
|
|
} );
|
|
_instance.$el.addClass( 'tcb-modal-cloud-templates-categories' )
|
|
}
|
|
|
|
return _instance;
|
|
}
|
|
} );
|
|
} )( jQuery );
|