Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/flow-flo.../js
File: admin.js
//console.profile("Processing page");
[0] Fix | Delete
//console.time("Page loading");
[1] Fix | Delete
[2] Fix | Delete
;(function (window) {
[3] Fix | Delete
var transitions = {
[4] Fix | Delete
'transition': 'transitionend',
[5] Fix | Delete
'WebkitTransition': 'webkitTransitionEnd',
[6] Fix | Delete
'MozTransition': 'transitionend',
[7] Fix | Delete
'OTransition': 'otransitionend'
[8] Fix | Delete
},
[9] Fix | Delete
elem = document.createElement('div');
[10] Fix | Delete
[11] Fix | Delete
for(var t in transitions){
[12] Fix | Delete
if(typeof elem.style[t] !== 'undefined'){
[13] Fix | Delete
window.transitionEnd = transitions[t];
[14] Fix | Delete
break;
[15] Fix | Delete
}
[16] Fix | Delete
}
[17] Fix | Delete
if (!window.transitionEnd) window.transitionEnd = false;
[18] Fix | Delete
})(window);
[19] Fix | Delete
[20] Fix | Delete
//polyfills
[21] Fix | Delete
Number.isInteger = Number.isInteger || function(value) {
[22] Fix | Delete
return typeof value === 'number' &&
[23] Fix | Delete
isFinite(value) &&
[24] Fix | Delete
Math.floor(value) === value;
[25] Fix | Delete
};
[26] Fix | Delete
[27] Fix | Delete
jQuery.fn.textWidth = function(_text, _font){//get width of text with font. usage: $("div").textWidth();
[28] Fix | Delete
var fakeEl = jQuery('<span>').hide().appendTo(document.body).text(_text || this.val() || this.text()).css('font', _font || this.css('font')),
[29] Fix | Delete
width = fakeEl.width();
[30] Fix | Delete
fakeEl.remove();
[31] Fix | Delete
return width;
[32] Fix | Delete
};
[33] Fix | Delete
[34] Fix | Delete
jQuery.fn.autoresize = function(options){//resizes elements based on content size. usage: $('input').autoresize({padding:10,minWidth:0,maxWidth:100});
[35] Fix | Delete
options = jQuery.extend({padding:10,minWidth:0,maxWidth:10000}, options||{});
[36] Fix | Delete
var $t = jQuery(this);
[37] Fix | Delete
$t.on('input', function() {
[38] Fix | Delete
$t.css('width', Math.min(options.maxWidth,Math.max(options.minWidth,$t.textWidth() + options.padding)));
[39] Fix | Delete
}).trigger('input');
[40] Fix | Delete
return this;
[41] Fix | Delete
}
[42] Fix | Delete
[43] Fix | Delete
var FlowFlowApp = ( function($) {
[44] Fix | Delete
[45] Fix | Delete
var $ = jQuery;
[46] Fix | Delete
[47] Fix | Delete
// streams model, view and collection declaring
[48] Fix | Delete
var StreamModel;
[49] Fix | Delete
var StreamModelsCollection;
[50] Fix | Delete
var StreamView;
[51] Fix | Delete
[52] Fix | Delete
// rows model, view and collection declaring
[53] Fix | Delete
var StreamRowModel;
[54] Fix | Delete
var StreamRowModelsCollection;
[55] Fix | Delete
var StreamRowView;
[56] Fix | Delete
[57] Fix | Delete
// instances declaring
[58] Fix | Delete
var Streams;
[59] Fix | Delete
var streamRowModels;
[60] Fix | Delete
var streamModels;
[61] Fix | Delete
[62] Fix | Delete
// Feeds MVC
[63] Fix | Delete
var FeedsModel;
[64] Fix | Delete
var FeedsView;
[65] Fix | Delete
var feedsModel, feedsView;
[66] Fix | Delete
[67] Fix | Delete
var templates = window.ff_templates;
[68] Fix | Delete
[69] Fix | Delete
var sessionStorage = window.sessionStorage || {getItem: function(){return false}, setItem: function(){}};
[70] Fix | Delete
[71] Fix | Delete
var transitionEnd = window.transitionEnd;
[72] Fix | Delete
[73] Fix | Delete
var alphabet = 'abcdefghijklmnopqrstuvwxyz';
[74] Fix | Delete
[75] Fix | Delete
var ua = navigator.userAgent.toLowerCase();
[76] Fix | Delete
var isWebkit = /safari|chrome/.test(ua);
[77] Fix | Delete
var isMobile = /android|blackBerry|iphone|ipad|ipod|opera mini|iemobile/i.test(ua);
[78] Fix | Delete
var isIE = /msie|trident.*rv\:11\./.test(ua);
[79] Fix | Delete
var isFF = /firefox/.test( ua );
[80] Fix | Delete
[81] Fix | Delete
// making life of hackers harder when minified
[82] Fix | Delete
var vars = window [ window[ 'l' + alphabet[0] + '_plugin']['slug_' + 'down'] + '_' + 'v' + alphabet[0] + 'r' + 's' ];
[83] Fix | Delete
var plugin = window[ 'l' + alphabet[0] + '_plugin']['slug_' + 'down'];
[84] Fix | Delete
[85] Fix | Delete
var la_plugin_slug_down = plugin;
[86] Fix | Delete
[87] Fix | Delete
// css variables
[88] Fix | Delete
if ( plugin === 'insta_flow' ) {
[89] Fix | Delete
document.documentElement.style.setProperty('--main-ui-color', "#c13584");
[90] Fix | Delete
document.documentElement.style.setProperty('--bg-ui-color', "#fffef5");
[91] Fix | Delete
document.documentElement.style.setProperty('--link-ui-color', "#bb0069");
[92] Fix | Delete
document.documentElement.style.setProperty('--main-ui-color-hover', "#e3027f");
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
var FlowFlow = {
[96] Fix | Delete
savedView : sessionStorage.getItem( 'ff_stream' ) || 'list',
[97] Fix | Delete
$body: null,
[98] Fix | Delete
$streamsContainer : null,
[99] Fix | Delete
$sources : null,
[100] Fix | Delete
$list : null,
[101] Fix | Delete
$streamsList : null,
[102] Fix | Delete
$errorPopup : $('<div id="error-popup"></div>'),
[103] Fix | Delete
$html : null,
[104] Fix | Delete
$content : null,
[105] Fix | Delete
$tabList : null,
[106] Fix | Delete
$boostWidget : null,
[107] Fix | Delete
$cloudStatusEl : null,
[108] Fix | Delete
$tabs: null,
[109] Fix | Delete
$overlay : null,
[110] Fix | Delete
$previewStyles : null,
[111] Fix | Delete
$form: null,
[112] Fix | Delete
$popupBanner: null,
[113] Fix | Delete
editor: null,
[114] Fix | Delete
clip: null,
[115] Fix | Delete
activeTabIndex: parseInt( sessionStorage.getItem('as_active_tab') || 0 ),
[116] Fix | Delete
boostPlan: null,
[117] Fix | Delete
availableBoosts: null,
[118] Fix | Delete
[119] Fix | Delete
renderBoostsUI: function ( model ) {
[120] Fix | Delete
[121] Fix | Delete
if ( plugin == 'insta_flow' ) return;
[122] Fix | Delete
[123] Fix | Delete
var self = this;
[124] Fix | Delete
[125] Fix | Delete
var data = {
[126] Fix | Delete
'action': la_plugin_slug_down + '_get_boosts',
[127] Fix | Delete
security: vars.nonce
[128] Fix | Delete
};
[129] Fix | Delete
[130] Fix | Delete
this.$cloudStatusEl = $( '#ff-cloud-status' );
[131] Fix | Delete
[132] Fix | Delete
// add dynamic boosts block
[133] Fix | Delete
[134] Fix | Delete
if ( ! this.$boostWidget ) {
[135] Fix | Delete
[136] Fix | Delete
this.$boostWidget = $( '<div id="ff-boost-widget" class="ff-boosts--not-available ff-hide"><a class="" href="#addons-tab" id="ff-boost-link"><i class="flaticon-rocket" style="display: inline-block;"></i> Boost</a><span class="ff-boost-info">In use: <span id="ff-boost-in-use">-</span>&nbsp;&nbsp;&nbsp;Expire on: <span id="ff-boost-exp">-</span></span><a href="#addons-tab" class="ff-pseudo-link">Get Boosts!</a></div>' );
[137] Fix | Delete
[138] Fix | Delete
this.$sources.find( '#feeds-list-section' ).append( this.$boostWidget );
[139] Fix | Delete
[140] Fix | Delete
this.$boostSmartElement = this.$boostWidget.find( '#ff-boost-link' );
[141] Fix | Delete
[142] Fix | Delete
this.$boostSmartElement.on( 'mouseenter', function () {
[143] Fix | Delete
if ( self.drake ) self.$sources.addClass( 'ff-droparea--active' );
[144] Fix | Delete
}).on( 'mouseleave', function () {
[145] Fix | Delete
if ( self.drake && ! self.drake.dragging ) self.$sources.removeClass( 'ff-droparea--active' );
[146] Fix | Delete
})
[147] Fix | Delete
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
if ( !! window.boostsActivated !== true ) { // convert to boolean
[151] Fix | Delete
data[ 'not_active' ] = true;
[152] Fix | Delete
}
[153] Fix | Delete
[154] Fix | Delete
var boostsRequest = $.post( vars.ajaxurl, data ).done( function( res ) {
[155] Fix | Delete
[156] Fix | Delete
if ( res.error == 'not_allowed' ) {
[157] Fix | Delete
return;
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
var subscription;
[161] Fix | Delete
var nextPaymentDate;
[162] Fix | Delete
var months = [ 'Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' ];
[163] Fix | Delete
var inUse;
[164] Fix | Delete
[165] Fix | Delete
try {
[166] Fix | Delete
subscription = JSON.parse( res );
[167] Fix | Delete
} catch ( e ) {
[168] Fix | Delete
alert( 'We are sorry but something went wrong with boost activation. Please contact via social-streams.com/contact to sort this out.')
[169] Fix | Delete
return;
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
self.subscription = subscription;
[173] Fix | Delete
[174] Fix | Delete
if ( subscription.state === 'active' || subscription.state === 'trialing' ) {
[175] Fix | Delete
[176] Fix | Delete
self.$boostWidget.removeClass( 'ff-boosts--not-available' );
[177] Fix | Delete
[178] Fix | Delete
inUse = ( _.filter( model.get( 'feeds' ), function( feed ){ return feed.boosted == 'yep' }) ).length;
[179] Fix | Delete
nextPaymentDate = new Date( subscription.next_payment.date );
[180] Fix | Delete
self.availableBoosts = subscription.availableBoosts;
[181] Fix | Delete
[182] Fix | Delete
if ( self.availableBoosts > 0 ) {
[183] Fix | Delete
self.$boostSmartElement.html( self.availableBoosts + ' boost' + ( self.availableBoosts != 1 ? 's' : '' )).addClass( 'ff-item__draggable' );
[184] Fix | Delete
}
[185] Fix | Delete
[186] Fix | Delete
self.$boostWidget.find( '#ff-boost-in-use' ).html( inUse );
[187] Fix | Delete
self.$boostWidget.find( '#ff-boost-exp' ).html( nextPaymentDate.getDate() + ' ' + months[ nextPaymentDate.getMonth() ] + ' ' + nextPaymentDate.getFullYear() );
[188] Fix | Delete
[189] Fix | Delete
// custom plan
[190] Fix | Delete
if ( subscription.plan === $( 'boosts_custom_plan' ).val() ) {
[191] Fix | Delete
$( '.boosts_custom .boost_custom__plan_txt' ).html( 'Plan ID ' + subscription.subscription_id + ' activated.')
[192] Fix | Delete
$( '.boosts_custom .boost_custom__plan_actions' ).html( '<a href="/wp-admin/admin-ajax.php?action=flow_flow_cancel_subscription" class="ff-pseudo-link">Cancel subscription</a>')
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
// init drag n drop in any case after re-render
[196] Fix | Delete
[197] Fix | Delete
if ( self.drake ) self.drake.destroy();
[198] Fix | Delete
[199] Fix | Delete
self.drake = dragula( [ document.getElementById( 'ff-boost-widget' ) ], {
[200] Fix | Delete
revertOnSpill: true,
[201] Fix | Delete
isContainer: function (el) {
[202] Fix | Delete
return el.classList.contains( 'feed-row' );
[203] Fix | Delete
},
[204] Fix | Delete
copy: true
[205] Fix | Delete
} );
[206] Fix | Delete
[207] Fix | Delete
self.drake.on( 'drag', function ( item, _source ) {
[208] Fix | Delete
console.log( 'drag start' )
[209] Fix | Delete
[210] Fix | Delete
if ( item.id === 'ff-boost-link' && self.availableBoosts > 0 ) {
[211] Fix | Delete
[212] Fix | Delete
var available = self.availableBoosts;
[213] Fix | Delete
[214] Fix | Delete
// switch to feeds tab
[215] Fix | Delete
[216] Fix | Delete
// no need
[217] Fix | Delete
// if ( ! $('#sources-tab').is( '.active' ) ) $('#sources-tab').click();
[218] Fix | Delete
[219] Fix | Delete
self.$sources.addClass( 'ff-droparea--active' );
[220] Fix | Delete
[221] Fix | Delete
item.innerHTML = '1 Boost';
[222] Fix | Delete
[223] Fix | Delete
setTimeout( function () {
[224] Fix | Delete
item.innerHTML = ( available - 1 > 0 ? available - 1 : '<i class="flaticon-rocket" style="display: inline-block;"></i>' ) + ' boost' + ( available - 1 > 1 ? 's' : '' );
[225] Fix | Delete
if ( available - 1 < 1 ) {
[226] Fix | Delete
self.$boostSmartElement.removeClass( 'ff-item__draggable' );
[227] Fix | Delete
} else {
[228] Fix | Delete
self.$boostSmartElement.addClass( 'ff-item__draggable' );
[229] Fix | Delete
}
[230] Fix | Delete
}, 0)
[231] Fix | Delete
[232] Fix | Delete
} else if ( _source.classList.contains( 'feed-row' ) && item.classList.contains( 'td-info' ) && item.querySelector( '.ff-item__draggable' ) ) { // remove boost from feed case
[233] Fix | Delete
[234] Fix | Delete
[235] Fix | Delete
self.$boostWidget.addClass( 'ff-droparea-widget--active' );
[236] Fix | Delete
[237] Fix | Delete
[238] Fix | Delete
} else { // if target not boost icon then cancel
[239] Fix | Delete
[240] Fix | Delete
self.drake.cancel()
[241] Fix | Delete
[242] Fix | Delete
}
[243] Fix | Delete
})
[244] Fix | Delete
[245] Fix | Delete
self.drake.on( 'over', function ( item, _lastDropTarget, _source ) {
[246] Fix | Delete
console.log( 'drag over' );
[247] Fix | Delete
[248] Fix | Delete
if ( item.id === 'ff-boost-link' ) {
[249] Fix | Delete
$( _lastDropTarget ).addClass( 'ff-droparea' );
[250] Fix | Delete
} else {
[251] Fix | Delete
$( _lastDropTarget ).addClass( 'ff-droparea-widget' );
[252] Fix | Delete
}
[253] Fix | Delete
[254] Fix | Delete
})
[255] Fix | Delete
[256] Fix | Delete
self.drake.on( 'out', function ( item, _lastDropTarget, _source ) {
[257] Fix | Delete
console.log( 'drag out' );
[258] Fix | Delete
if ( item.id === 'ff-boost-link' ) {
[259] Fix | Delete
$( _lastDropTarget ).removeClass( 'ff-droparea' );
[260] Fix | Delete
} else {
[261] Fix | Delete
$( _lastDropTarget ).removeClass( 'ff-droparea-widget' );
[262] Fix | Delete
}
[263] Fix | Delete
})
[264] Fix | Delete
[265] Fix | Delete
self.$sources.find( '.hilite-boost' ).off( 'mouseenter mouseleave' ).on( 'mouseenter', function () {
[266] Fix | Delete
self.$boostWidget.addClass( 'ff-droparea-widget--active' );
[267] Fix | Delete
} ).on( 'mouseleave', function () {
[268] Fix | Delete
if ( ! self.drake.dragging ) self.$boostWidget.removeClass( 'ff-droparea-widget--active' );
[269] Fix | Delete
})
[270] Fix | Delete
[271] Fix | Delete
self.drake.on( 'drop', function ( item, _lastDropTarget, _source, _dropTargetChild ) {
[272] Fix | Delete
console.log( 'drag drop' )
[273] Fix | Delete
self.$sources.removeClass( 'ff-droparea--active' );
[274] Fix | Delete
self.$boostWidget.removeClass( 'ff-droparea-widget--active' );
[275] Fix | Delete
// _lastDropTarget null if not container
[276] Fix | Delete
[277] Fix | Delete
var sync, found;
[278] Fix | Delete
[279] Fix | Delete
if ( ! _lastDropTarget || _lastDropTarget.classList.contains( 'feed-boosted' ) ) {
[280] Fix | Delete
self.drake.cancel();
[281] Fix | Delete
self.showNotification( 'Feed is already boosted.<i class="flaticon-error"></i>' )
[282] Fix | Delete
return;
[283] Fix | Delete
}
[284] Fix | Delete
[285] Fix | Delete
if ( _lastDropTarget.getAttribute( 'data-network' ) === 'wordpress' ) {
[286] Fix | Delete
self.drake.cancel();
[287] Fix | Delete
self.showNotification( 'Boosting WP feeds is not currently possible.<i class="flaticon-error"></i>' )
[288] Fix | Delete
return;
[289] Fix | Delete
}
[290] Fix | Delete
[291] Fix | Delete
if ( _lastDropTarget.classList.contains( 'feed-row' ) && self.availableBoosts > 0 ) {
[292] Fix | Delete
[293] Fix | Delete
var $t = $( _lastDropTarget );
[294] Fix | Delete
var uid = $t.data('uid');
[295] Fix | Delete
var feeds = model.get('feeds');
[296] Fix | Delete
var type = $t.data('network');
[297] Fix | Delete
[298] Fix | Delete
var $view = model.view.$popup.find('[data-uid="' + uid + '"]');
[299] Fix | Delete
if ( ! $view.length ) {
[300] Fix | Delete
$view = $( _.template(templates[ type + 'View'])({
[301] Fix | Delete
uid: uid
[302] Fix | Delete
}) );
[303] Fix | Delete
model.view.$el.find( '#feed-views' ).append( $view );
[304] Fix | Delete
// set values
[305] Fix | Delete
model.view.setInputsValue( uid );
[306] Fix | Delete
}
[307] Fix | Delete
[308] Fix | Delete
var $channeling = $view.find('input[name="' + uid + '-boosted"]');
[309] Fix | Delete
var checked = $channeling.is(':checked');
[310] Fix | Delete
[311] Fix | Delete
if ( checked ) return; // already boosted
[312] Fix | Delete
[313] Fix | Delete
var streams = streamRowModels.models;
[314] Fix | Delete
var _feeds, found;
[315] Fix | Delete
sync = true;
[316] Fix | Delete
[317] Fix | Delete
// check if feed in self-hosted stream
[318] Fix | Delete
[319] Fix | Delete
for ( var i = 0, len = streams.length; i < len; i++ ) {
[320] Fix | Delete
_feeds = streams[ i ].get( 'feeds' );
[321] Fix | Delete
found = _.find( _feeds, function ( feed ) {
[322] Fix | Delete
return feed.id == uid
[323] Fix | Delete
})
[324] Fix | Delete
[325] Fix | Delete
if ( found && streams[ i ].get( 'cloud' ) == 'nope' ) { // feed is connected to self-hosted stream
[326] Fix | Delete
[327] Fix | Delete
self.drake.cancel();
[328] Fix | Delete
[329] Fix | Delete
var alert = FlowFlow.popup( 'You\'re trying to boost feed that is connected to self-hosted stream #' + streams[ i ].get( 'id' ) + ( streams[ i ].get( 'name' ) ? ' "' + streams[ i ].get( 'name' ) + '"' : '' ) + '. It\'s not possible to have boosted feeds in self-hosted stream. Please disconnect feed from stream first and create cloud stream for it. Or go to settings of this stream and activate CLOUD switcher on SOURCE tab', 'neutral', 'alert' );
[330] Fix | Delete
sync = false;
[331] Fix | Delete
[332] Fix | Delete
alert.then( function () {
[333] Fix | Delete
[334] Fix | Delete
});
[335] Fix | Delete
}
[336] Fix | Delete
}
[337] Fix | Delete
[338] Fix | Delete
if ( !sync ) return;
[339] Fix | Delete
[340] Fix | Delete
feeds[ uid ]['boosted'] = 'yep';
[341] Fix | Delete
$channeling.prop('checked', true).change();
[342] Fix | Delete
[343] Fix | Delete
// ajax will update this
[344] Fix | Delete
// self.availableBoosts--;
[345] Fix | Delete
[346] Fix | Delete
model.view.saveViaAjax();
[347] Fix | Delete
[348] Fix | Delete
[349] Fix | Delete
} if ( _source.classList.contains( 'feed-row' ) && item.classList.contains( 'td-info' ) && _lastDropTarget.id == 'ff-boost-widget' ) { // remove boost from feed case
[350] Fix | Delete
[351] Fix | Delete
var streams = streamRowModels.models, found;
[352] Fix | Delete
var sync = true;
[353] Fix | Delete
var uid = $( _source ).data('uid');
[354] Fix | Delete
[355] Fix | Delete
for ( var i = 0, len = streams.length; i < len; i++ ) {
[356] Fix | Delete
feeds = streams[ i ].get( 'feeds' );
[357] Fix | Delete
found = _.find( feeds, function ( feed ) {
[358] Fix | Delete
return feed.id == uid
[359] Fix | Delete
})
[360] Fix | Delete
[361] Fix | Delete
if ( found ) {
[362] Fix | Delete
[363] Fix | Delete
// show first found
[364] Fix | Delete
var alert = FlowFlow.popup( 'You are about to remove boost from feed that is connected to cloud stream ID #' + streams[ i ].get( 'id' ) + ( streams[ i ].get( 'name' ) ? ' "' + streams[ i ].get( 'name' ) + '"' : '' ) + '. Cloud streams can\'t contain self-hosted feeds. Please disconnect feed from stream first.', 'neutral', 'alert' );
[365] Fix | Delete
sync = false;
[366] Fix | Delete
[367] Fix | Delete
alert.then( function () {
[368] Fix | Delete
[369] Fix | Delete
});
[370] Fix | Delete
}
[371] Fix | Delete
}
[372] Fix | Delete
[373] Fix | Delete
if ( sync ) applyChange();
[374] Fix | Delete
[375] Fix | Delete
function applyChange() {
[376] Fix | Delete
[377] Fix | Delete
// increment boosts in UI
[378] Fix | Delete
self.$boostSmartElement.html( self.availableBoosts + 1 + ' boost' + ( self.availableBoosts + 1 != 1 ? 's' : '' ) );
[379] Fix | Delete
[380] Fix | Delete
// remove from feed
[381] Fix | Delete
var $t = $( _source );
[382] Fix | Delete
var uid = $t.data('uid');
[383] Fix | Delete
var type = $t.data('network');
[384] Fix | Delete
var feeds = model.get('feeds');
[385] Fix | Delete
[386] Fix | Delete
[387] Fix | Delete
var $view = model.view.$popup.find('[data-uid="' + uid + '"]');
[388] Fix | Delete
if ( ! $view.length ) {
[389] Fix | Delete
$view = $( _.template(templates[ type + 'View'])({
[390] Fix | Delete
uid: uid
[391] Fix | Delete
}) );
[392] Fix | Delete
[393] Fix | Delete
model.view.$el.find( '#feed-views' ).append( $view );
[394] Fix | Delete
// set values
[395] Fix | Delete
model.view.setInputsValue( uid );
[396] Fix | Delete
}
[397] Fix | Delete
[398] Fix | Delete
var $channeling = $view.find('input[name="' + uid + '-boosted"]');
[399] Fix | Delete
var checked = $channeling.is(':checked');
[400] Fix | Delete
[401] Fix | Delete
feeds[ uid ]['boosted'] = 'nope';
[402] Fix | Delete
$channeling.prop( 'checked', false ).trigger( 'change', { triggeredFromList: true } );
[403] Fix | Delete
// todo cancel change event
[404] Fix | Delete
[405] Fix | Delete
model.view.saveViaAjax();
[406] Fix | Delete
}
[407] Fix | Delete
[408] Fix | Delete
} else {
[409] Fix | Delete
//self.drake.cancel()
[410] Fix | Delete
}
[411] Fix | Delete
})
[412] Fix | Delete
[413] Fix | Delete
self.drake.on( 'cancel', function ( item, _lastDropTarget, _source ) {
[414] Fix | Delete
console.log( 'drag cancel' );
[415] Fix | Delete
self.$sources.removeClass( 'ff-droparea--active' );
[416] Fix | Delete
self.$boostWidget.removeClass( 'ff-droparea-widget--active' );
[417] Fix | Delete
[418] Fix | Delete
if ( item.id === 'ff-boost-link' && self.availableBoosts > 0 ) {
[419] Fix | Delete
var initialHtml = item.innerHTML;
[420] Fix | Delete
self.$boostSmartElement.html( initialHtml );
[421] Fix | Delete
}
[422] Fix | Delete
[423] Fix | Delete
})
[424] Fix | Delete
} else if (subscription.state === 'deleted') {
[425] Fix | Delete
window.location.replace( vars.ajaxurl + '?action=flow_flow_cancel_subscription');
[426] Fix | Delete
} else {
[427] Fix | Delete
self.availableBoosts = 'not_active';
[428] Fix | Delete
}
[429] Fix | Delete
[430] Fix | Delete
self.$cloudStatusEl.html( 'Your server can connect to cloud OK <span class="cache-status-ok"></span>' );
[431] Fix | Delete
[432] Fix | Delete
self.$boostWidget.removeClass( 'ff-hide' );
[433] Fix | Delete
[434] Fix | Delete
}).error( function () {
[435] Fix | Delete
[436] Fix | Delete
self.$cloudStatusEl.html( 'It seems your server can\'t connect to cloud <span class="cache-status-error"></span>' );
[437] Fix | Delete
[438] Fix | Delete
})
[439] Fix | Delete
[440] Fix | Delete
return boostsRequest;
[441] Fix | Delete
[442] Fix | Delete
},
[443] Fix | Delete
[444] Fix | Delete
renderBoostPricingTable: function ( plans, boosts ) {
[445] Fix | Delete
[446] Fix | Delete
var self = this;
[447] Fix | Delete
var active = false;
[448] Fix | Delete
[449] Fix | Delete
// sort plans by order prop
[450] Fix | Delete
[451] Fix | Delete
plans = _.sortBy( plans, 'order' );
[452] Fix | Delete
[453] Fix | Delete
// replacing placeholders
[454] Fix | Delete
var html = ''
[455] Fix | Delete
for ( var i = 0, len = plans.length; i < len; i++ ) {
[456] Fix | Delete
html += ff_templates.pricing_table_item;
[457] Fix | Delete
}
[458] Fix | Delete
[459] Fix | Delete
// adding custom plan card if it's not active plan and not found in plans
[460] Fix | Delete
// todo detect better if not custom is active
[461] Fix | Delete
[462] Fix | Delete
if ( ! boosts.plan_id || plans.length < 5 ) {
[463] Fix | Delete
html += ff_templates.pricing_table_item;
[464] Fix | Delete
}
[465] Fix | Delete
[466] Fix | Delete
$( '#boosts .pricing-table' ).html( html )
[467] Fix | Delete
[468] Fix | Delete
$( '.pricing-table__item' ).filter( '[data-plan]' ).each( function ( index, el ) {
[469] Fix | Delete
[470] Fix | Delete
var $t = $( this );
[471] Fix | Delete
var plan, feature, id;
[472] Fix | Delete
var featuresHtml = '';
[473] Fix | Delete
[474] Fix | Delete
plan = plans[ index ];
[475] Fix | Delete
[476] Fix | Delete
if ( plan ) {
[477] Fix | Delete
[478] Fix | Delete
id = plan.id;
[479] Fix | Delete
[480] Fix | Delete
$t.attr( 'data-id', id );
[481] Fix | Delete
$t.attr( 'data-plan', plan.name.toLowerCase() );
[482] Fix | Delete
[483] Fix | Delete
$t.find( 'h2' ).html( plan.name )
[484] Fix | Delete
$t.find( '.pricing-table__item_price ').html( plan.recurring_price.USD );
[485] Fix | Delete
[486] Fix | Delete
// features
[487] Fix | Delete
[488] Fix | Delete
for ( var i = 0, len = plan.options.length; i < len; i++ ) {
[489] Fix | Delete
feature = plan.options[ i ];
[490] Fix | Delete
featuresHtml += '<li>' + feature + '</li>';
[491] Fix | Delete
}
[492] Fix | Delete
[493] Fix | Delete
$t.find( '.pricing-table__content ul' ).html( featuresHtml );
[494] Fix | Delete
[495] Fix | Delete
[496] Fix | Delete
if ( id == boosts.plan_id && ( boosts.state === 'active' || boosts.state === 'trialing' ) ) { // active plan
[497] Fix | Delete
$t.addClass( 'pricing-table__active' );
[498] Fix | Delete
active = true;
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function