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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/flow-flo.../js
File: admin.js
FlowFlow.checkScrollbar();
[4000] Fix | Delete
FlowFlow.setScrollbar();
[4001] Fix | Delete
FlowFlow.$html.addClass( 'popup_visible' );
[4002] Fix | Delete
[4003] Fix | Delete
$popup.on( 'click', this.popupClick );
[4004] Fix | Delete
[4005] Fix | Delete
// add notice about auth
[4006] Fix | Delete
var notice = '<div class="ff-notice">Access token is required for %network% feeds, please add on <a href="#ff-auth-tab" class="ff-pseudo-link">AUTH tab</a></div>';
[4007] Fix | Delete
[4008] Fix | Delete
if ( ! $popup.find('.ff-notice').length ) {
[4009] Fix | Delete
switch ( network ) {
[4010] Fix | Delete
case 'facebook': {
[4011] Fix | Delete
if ( ! $( '#facebook_access_token' ).val() ) {
[4012] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Facebook' ) )
[4013] Fix | Delete
}
[4014] Fix | Delete
break;
[4015] Fix | Delete
}
[4016] Fix | Delete
case 'twitter': {
[4017] Fix | Delete
if ( ! $( '#oauth_access_token' ).val() ) {
[4018] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Twitter' ) )
[4019] Fix | Delete
}
[4020] Fix | Delete
break;
[4021] Fix | Delete
}
[4022] Fix | Delete
case 'youtube': {
[4023] Fix | Delete
if ( ! $( '#google_api_key' ).val() ) {
[4024] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Youtube' ) )
[4025] Fix | Delete
}
[4026] Fix | Delete
break;
[4027] Fix | Delete
}
[4028] Fix | Delete
case 'instagram': {
[4029] Fix | Delete
if ( ! $( '#facebook_access_token' ).val() ) {
[4030] Fix | Delete
$view.addClass( 'auth-required' ).find( '> h1' ).after( '<div class="ff-notice">If you plan to use official Instagram API by Facebook, access token is required, please add on <a href="#ff-auth-tab" class="ff-pseudo-link">AUTH tab</a></div>' )
[4031] Fix | Delete
}
[4032] Fix | Delete
break;
[4033] Fix | Delete
}
[4034] Fix | Delete
}
[4035] Fix | Delete
}
[4036] Fix | Delete
[4037] Fix | Delete
// store all input values to revert them on popup closing without save
[4038] Fix | Delete
[4039] Fix | Delete
var initialSettings = {};
[4040] Fix | Delete
[4041] Fix | Delete
$view.find( 'input, select' ).each( function ( i, el ) {
[4042] Fix | Delete
var $el = $( this );
[4043] Fix | Delete
[4044] Fix | Delete
if ( $el.is(':radio') ) {
[4045] Fix | Delete
if ( $el.is(':checked') ) {
[4046] Fix | Delete
initialSettings[ this.name ] = $el.val();
[4047] Fix | Delete
}
[4048] Fix | Delete
} else if ( $el.is(':checkbox')) {
[4049] Fix | Delete
if ( $el.is(':checked') ) {
[4050] Fix | Delete
initialSettings[ this.name ] = 'yep';
[4051] Fix | Delete
} else {
[4052] Fix | Delete
initialSettings[ this.name ] = 'nope';
[4053] Fix | Delete
}
[4054] Fix | Delete
}
[4055] Fix | Delete
else {
[4056] Fix | Delete
initialSettings[ this.name ] = $.trim( $el.val() );
[4057] Fix | Delete
}
[4058] Fix | Delete
})
[4059] Fix | Delete
[4060] Fix | Delete
$view.data( 'initialSettings', initialSettings );
[4061] Fix | Delete
[4062] Fix | Delete
},
[4063] Fix | Delete
[4064] Fix | Delete
popupClick: function (e) {
[4065] Fix | Delete
var $t = $(e.target)
[4066] Fix | Delete
if ($t.is('.popup' )) $('.active .popup .popupclose').click();
[4067] Fix | Delete
if ($t.is('.ff-pseudo-link' )) {
[4068] Fix | Delete
$('.active .popup .popupclose').click();
[4069] Fix | Delete
$('#ff-auth-tab').click();
[4070] Fix | Delete
}
[4071] Fix | Delete
},
[4072] Fix | Delete
[4073] Fix | Delete
filterFeed: function (e) {
[4074] Fix | Delete
var $t = $(e.target);
[4075] Fix | Delete
var uid = $t.closest('[data-uid]').attr('data-uid');
[4076] Fix | Delete
var $popup = this.$popup;
[4077] Fix | Delete
$popup.find('.feed-view-visible').removeClass('feed-view-visible');
[4078] Fix | Delete
var feed = this.model.get('feeds') ? this.model.get('feeds')[uid] : null;
[4079] Fix | Delete
var network = feed && feed.type;
[4080] Fix | Delete
[4081] Fix | Delete
var $view = $popup.find('.feed-view[data-uid=' + uid + ']');
[4082] Fix | Delete
var $filterView = $popup.find('.feed-view[data-filter-uid=' + uid + ']');
[4083] Fix | Delete
[4084] Fix | Delete
if ( ! $view.length && ! $filterView.length ) {
[4085] Fix | Delete
$view = $( _.template(templates[network + 'View'])({
[4086] Fix | Delete
uid: uid
[4087] Fix | Delete
}) );
[4088] Fix | Delete
[4089] Fix | Delete
$filterView = $( _.template(templates['filterView'])({
[4090] Fix | Delete
uid: uid
[4091] Fix | Delete
}));
[4092] Fix | Delete
this.$el.find( '#feed-views' ).append( $view );
[4093] Fix | Delete
this.$el.find( '#filter-views' ).append( $filterView );
[4094] Fix | Delete
}
[4095] Fix | Delete
[4096] Fix | Delete
$popup.find('.feed-view[data-filter-uid=' + uid + ']').addClass('feed-view-visible');
[4097] Fix | Delete
$popup.addClass('add-feed-step-2');
[4098] Fix | Delete
[4099] Fix | Delete
$popup.find('.feed-popup-controls').hide();
[4100] Fix | Delete
$popup.find('.feed-popup-controls.edit').show();
[4101] Fix | Delete
FlowFlow.checkScrollbar();
[4102] Fix | Delete
FlowFlow.setScrollbar();
[4103] Fix | Delete
FlowFlow.$html.addClass('popup_visible');
[4104] Fix | Delete
$popup.on('click', this.popupClick);
[4105] Fix | Delete
[4106] Fix | Delete
this.renderFilters(uid)
[4107] Fix | Delete
},
[4108] Fix | Delete
[4109] Fix | Delete
resetFeedCache: function (e) {
[4110] Fix | Delete
var $t = $(e.target);
[4111] Fix | Delete
var uid = $t.closest('[data-uid]').attr('data-uid');
[4112] Fix | Delete
var changed = this.model.get('feeds_changed');
[4113] Fix | Delete
var feeds = this.model.get('feeds');
[4114] Fix | Delete
[4115] Fix | Delete
changed[ uid ] = _.clone( feeds[ uid ] );
[4116] Fix | Delete
changed[ uid ][ 'state' ] = 'reset_cache';
[4117] Fix | Delete
[4118] Fix | Delete
this.saveViaAjax();
[4119] Fix | Delete
},
[4120] Fix | Delete
[4121] Fix | Delete
checkStreams: function (e) {
[4122] Fix | Delete
[4123] Fix | Delete
var $t = $(e.target);
[4124] Fix | Delete
var str = '';
[4125] Fix | Delete
[4126] Fix | Delete
var streams = streamRowModels.models;
[4127] Fix | Delete
var streamFeeds, found;
[4128] Fix | Delete
var id = $t.closest('[data-uid]').attr('data-uid');
[4129] Fix | Delete
[4130] Fix | Delete
//
[4131] Fix | Delete
for ( var i = 0, len = streams.length; i < len; i++ ) {
[4132] Fix | Delete
[4133] Fix | Delete
streamFeeds = streams[i].get( 'feeds' );
[4134] Fix | Delete
found = _.find( streamFeeds, function (feed) {
[4135] Fix | Delete
return feed.id == id
[4136] Fix | Delete
})
[4137] Fix | Delete
[4138] Fix | Delete
if ( found ) {
[4139] Fix | Delete
[4140] Fix | Delete
if ( str ) str += '<br>'
[4141] Fix | Delete
str += streams[i].get( 'name' ) + ' #' + streams[i].id
[4142] Fix | Delete
// reset
[4143] Fix | Delete
found = '';
[4144] Fix | Delete
}
[4145] Fix | Delete
}
[4146] Fix | Delete
[4147] Fix | Delete
if ( ! str ) str = 'not yet connected to any streams';
[4148] Fix | Delete
[4149] Fix | Delete
FlowFlow.popup( 'Feed is connected to:<br>' + str , 'neutral', 'alert');
[4150] Fix | Delete
},
[4151] Fix | Delete
[4152] Fix | Delete
toggleDropDown: function (e) {
[4153] Fix | Delete
var self = this;
[4154] Fix | Delete
var $t = $(e.target);
[4155] Fix | Delete
var $cont = $t.closest('td');
[4156] Fix | Delete
var isOpened = $cont.data('popup') === 'opened';
[4157] Fix | Delete
[4158] Fix | Delete
$('td.open').removeClass('open').data('popup', '');
[4159] Fix | Delete
if ( isOpened ) {
[4160] Fix | Delete
$cont.removeClass('open');
[4161] Fix | Delete
$cont.data('popup', '');
[4162] Fix | Delete
//FlowFlow.$body.off('click', this.popupMoreClick);
[4163] Fix | Delete
} else {
[4164] Fix | Delete
setTimeout(function () {
[4165] Fix | Delete
$cont.addClass('open');
[4166] Fix | Delete
$cont.data('popup', 'opened');
[4167] Fix | Delete
//FlowFlow.$body.on('click', self.popupMoreClick);
[4168] Fix | Delete
}, 0)
[4169] Fix | Delete
}
[4170] Fix | Delete
},
[4171] Fix | Delete
[4172] Fix | Delete
popupMoreClick: function (e) {
[4173] Fix | Delete
var $t = $(e.target)
[4174] Fix | Delete
if (!$t.closest('.feed-dropdown-menu').length) {
[4175] Fix | Delete
$('td.open').removeClass('open').data('popup', '');
[4176] Fix | Delete
FlowFlow.$body.off('click', this.popupMoreClick);
[4177] Fix | Delete
}
[4178] Fix | Delete
},
[4179] Fix | Delete
[4180] Fix | Delete
popupLeave: function () {
[4181] Fix | Delete
$('td.open').removeClass('open').data('popup', '');
[4182] Fix | Delete
},
[4183] Fix | Delete
[4184] Fix | Delete
deleteFeed: function (e) {
[4185] Fix | Delete
var promise = FlowFlow.popup('Do you want to permanently delete this feed?');
[4186] Fix | Delete
var $t = $( e.currentTarget );
[4187] Fix | Delete
var self = this;
[4188] Fix | Delete
promise.then(function success(){
[4189] Fix | Delete
var uid = $t.closest('[data-uid]').attr('data-uid');
[4190] Fix | Delete
var modelFeeds = self.model.get('feeds');
[4191] Fix | Delete
var changed = self.model.get('feeds_changed');
[4192] Fix | Delete
[4193] Fix | Delete
changed[ uid ] = _.clone( modelFeeds[ uid ] );
[4194] Fix | Delete
changed[ uid ][ 'state' ] = 'deleted';
[4195] Fix | Delete
[4196] Fix | Delete
if ( changed[ uid ][ 'boosted' ] === 'yep' ) {
[4197] Fix | Delete
FlowFlow.availableBoosts++;
[4198] Fix | Delete
FlowFlow.$boostSmartElement.html( FlowFlow.availableBoosts + ' boost' + ( FlowFlow.availableBoosts != 1 ? 's' : '' ) );
[4199] Fix | Delete
}
[4200] Fix | Delete
[4201] Fix | Delete
if (self.paginator._items.length - 1 < self.paginator.options.perPage * self.paginator._currentPageNum - (self.paginator.options.perPage - 1) ) {
[4202] Fix | Delete
self.currentPage = self.paginator._currentPageNum - 1 || 1;
[4203] Fix | Delete
} else {
[4204] Fix | Delete
self.currentPage = self.paginator._currentPageNum;
[4205] Fix | Delete
}
[4206] Fix | Delete
delete modelFeeds[uid];
[4207] Fix | Delete
[4208] Fix | Delete
self.saveViaAjax();
[4209] Fix | Delete
[4210] Fix | Delete
}, function fail () {})
[4211] Fix | Delete
},
[4212] Fix | Delete
[4213] Fix | Delete
closeFeedPopup: function (e) {
[4214] Fix | Delete
FlowFlow.$html.removeClass('popup_visible');
[4215] Fix | Delete
FlowFlow.resetScrollbar();
[4216] Fix | Delete
[4217] Fix | Delete
var $popup = this.$popup;
[4218] Fix | Delete
var id;
[4219] Fix | Delete
var feeds = this.model.get('feeds');
[4220] Fix | Delete
var changed = this.model.get('feeds_changed');
[4221] Fix | Delete
[4222] Fix | Delete
var $view = $popup.find('.feed-view-visible');
[4223] Fix | Delete
[4224] Fix | Delete
$popup.off('click', this.popupClick);
[4225] Fix | Delete
[4226] Fix | Delete
var $fresh = $popup.find('.feed-view-dynamic');
[4227] Fix | Delete
[4228] Fix | Delete
if ( $fresh.length && this.feedChanged ) {
[4229] Fix | Delete
[4230] Fix | Delete
id = $fresh.data('uid');
[4231] Fix | Delete
[4232] Fix | Delete
delete changed[ id ];
[4233] Fix | Delete
delete feeds[ id ];
[4234] Fix | Delete
[4235] Fix | Delete
$fresh.remove();
[4236] Fix | Delete
[4237] Fix | Delete
if (this.model.get('feeds').length) this.model.get('feeds').pop();
[4238] Fix | Delete
}
[4239] Fix | Delete
[4240] Fix | Delete
setTimeout(function () {
[4241] Fix | Delete
$popup.removeClass('add-feed-step-1 add-feed-step-2');
[4242] Fix | Delete
}, 400);
[4243] Fix | Delete
[4244] Fix | Delete
this.feedChanged = false;
[4245] Fix | Delete
[4246] Fix | Delete
// restore settings and revert model
[4247] Fix | Delete
[4248] Fix | Delete
var initialSettings = $view.data( 'initialSettings' ) || {};
[4249] Fix | Delete
[4250] Fix | Delete
$view.find( 'input, select' ).each( function ( i, el ) {
[4251] Fix | Delete
var $el = $( this );
[4252] Fix | Delete
[4253] Fix | Delete
if ( $el.is( ':radio') ) {
[4254] Fix | Delete
if ( initialSettings[ this.name ] == $el.val() ) {
[4255] Fix | Delete
$el.prop( 'checked', true ).change();
[4256] Fix | Delete
}
[4257] Fix | Delete
} else if ( $el.is(':checkbox') ) {
[4258] Fix | Delete
[4259] Fix | Delete
if ( initialSettings[ this.name ] == 'yep' ) {
[4260] Fix | Delete
$el.prop( 'checked', true ).change();
[4261] Fix | Delete
} else {
[4262] Fix | Delete
$el.prop( 'checked', false ).change();
[4263] Fix | Delete
}
[4264] Fix | Delete
}
[4265] Fix | Delete
else {
[4266] Fix | Delete
$el.val( initialSettings[ this.name ] ).change();
[4267] Fix | Delete
}
[4268] Fix | Delete
[4269] Fix | Delete
})
[4270] Fix | Delete
[4271] Fix | Delete
$view.data( 'initialSettings', '' );
[4272] Fix | Delete
[4273] Fix | Delete
// delete from changed obj
[4274] Fix | Delete
[4275] Fix | Delete
delete changed[ $view.data('uid') ];
[4276] Fix | Delete
},
[4277] Fix | Delete
[4278] Fix | Delete
showErrorIfPresent: function (e) {
[4279] Fix | Delete
[4280] Fix | Delete
var $error = $(e.currentTarget).find('.cache-status-error'), errorStr = '';
[4281] Fix | Delete
if (!$error.length) return;
[4282] Fix | Delete
var errorData = $error.data('err');
[4283] Fix | Delete
[4284] Fix | Delete
if (errorData && errorData[0]) {
[4285] Fix | Delete
errorData = errorData[0];
[4286] Fix | Delete
} else {
[4287] Fix | Delete
return;
[4288] Fix | Delete
}
[4289] Fix | Delete
[4290] Fix | Delete
var messages = errorData['message'];
[4291] Fix | Delete
[4292] Fix | Delete
if (messages) {
[4293] Fix | Delete
if ($.isArray(messages)) {
[4294] Fix | Delete
for (var i = 0, len = messages.length; i < len;i++) {
[4295] Fix | Delete
if (i > 0) errorStr += '<br>';
[4296] Fix | Delete
[4297] Fix | Delete
errorStr += messages[i]['msg'];
[4298] Fix | Delete
}
[4299] Fix | Delete
} else if (typeof messages === 'object') {
[4300] Fix | Delete
if (messages['msg']) {
[4301] Fix | Delete
errorStr += messages['msg'];
[4302] Fix | Delete
} else {
[4303] Fix | Delete
try {
[4304] Fix | Delete
errorStr += JSON.stringify(messages)
[4305] Fix | Delete
} catch (e) {
[4306] Fix | Delete
errorStr += 'Unknown error. Please ask for support <a href="https://social-streams.com/contact/">here</a>'
[4307] Fix | Delete
}
[4308] Fix | Delete
}
[4309] Fix | Delete
} else if (typeof messages === 'string') {
[4310] Fix | Delete
errorStr += messages
[4311] Fix | Delete
}
[4312] Fix | Delete
} else if (errorData['msg']) {
[4313] Fix | Delete
errorStr += errorData['msg'];
[4314] Fix | Delete
} else if ($.isArray(errorData)) {
[4315] Fix | Delete
if (errorData[0].msg) {
[4316] Fix | Delete
errorStr += errorData[0].msg;
[4317] Fix | Delete
} else {
[4318] Fix | Delete
try {
[4319] Fix | Delete
errorStr += JSON.stringify(errorData[0])
[4320] Fix | Delete
} catch (e) {
[4321] Fix | Delete
errorStr += 'Unknown error. Please <a href="https://social-streams.com/contact/">submit ticket</a> and send access'
[4322] Fix | Delete
}
[4323] Fix | Delete
}
[4324] Fix | Delete
} else {
[4325] Fix | Delete
try {
[4326] Fix | Delete
errorStr += JSON.stringify(errorData)
[4327] Fix | Delete
} catch (e) {
[4328] Fix | Delete
errorStr += 'Unknown error. Please <a href="https://social-streams.com/contact/">submit ticket</a> and send access'
[4329] Fix | Delete
}
[4330] Fix | Delete
}
[4331] Fix | Delete
[4332] Fix | Delete
var offset = $error.offset();
[4333] Fix | Delete
FlowFlow.$errorPopup.addClass('visible').css({top: offset.top - 20, left: offset.left + 30});
[4334] Fix | Delete
[4335] Fix | Delete
if (errorData.type === 'facebook' && errorStr.indexOf('Application request limit') + 1) {
[4336] Fix | Delete
errorStr += '. Check <a href="http://docs.social-streams.com/article/133-facebook-app-request-limit-reached" target="_blank">more info</a>'
[4337] Fix | Delete
}
[4338] Fix | Delete
else if (errorStr.toLowerCase().indexOf('bad request') + 1) {
[4339] Fix | Delete
errorStr += '<br><br>Check <a href="https://docs.social-streams.com/article/55-400-bad-request" target="_blank"> info</a>'
[4340] Fix | Delete
}
[4341] Fix | Delete
[4342] Fix | Delete
if ( errorStr) {
[4343] Fix | Delete
[4344] Fix | Delete
}
[4345] Fix | Delete
[4346] Fix | Delete
FlowFlow.$errorPopup.html('<h4>App received next error message for this feed:</h4><p>' + errorStr + '</p>')
[4347] Fix | Delete
},
[4348] Fix | Delete
[4349] Fix | Delete
goBackToFeedChoice: function (e) {
[4350] Fix | Delete
var $t = $(e.target);
[4351] Fix | Delete
var $popup = this.$popup;
[4352] Fix | Delete
var feeds = this.model.get('feeds');
[4353] Fix | Delete
var $view = $popup.find('.feed-view-dynamic')
[4354] Fix | Delete
var uid = $view.data('uid')
[4355] Fix | Delete
[4356] Fix | Delete
$popup.removeClass('add-feed-step-2').addClass('add-feed-step-1');
[4357] Fix | Delete
$popup.find('.feed-view-dynamic').remove();
[4358] Fix | Delete
[4359] Fix | Delete
if (this.feedChanged) {
[4360] Fix | Delete
delete feeds[uid];
[4361] Fix | Delete
this.feedChanged = false;
[4362] Fix | Delete
}
[4363] Fix | Delete
},
[4364] Fix | Delete
[4365] Fix | Delete
createFeedView: function (e) {
[4366] Fix | Delete
var $t = $( e.currentTarget );
[4367] Fix | Delete
var $popup = this.$popup;
[4368] Fix | Delete
var network = $t.data('network') || 'instagram'; // if not defined then it's grace
[4369] Fix | Delete
var fid = FlowFlow.getRandomId();
[4370] Fix | Delete
var compiled = _.template(templates[network + 'View'])({uid: fid});
[4371] Fix | Delete
var filterViewCompiled = _.template(templates['filterView'])({uid: fid});
[4372] Fix | Delete
var $view = $( compiled );
[4373] Fix | Delete
var $filterView = $( filterViewCompiled );
[4374] Fix | Delete
[4375] Fix | Delete
if ( vars.m == 'l' && network.indexOf( 'gram' ) == -1 && network.indexOf( 'book' ) == -1 && network.indexOf( 'erest' ) == -1 && network.indexOf( 'twi' ) == -1 ) return;
[4376] Fix | Delete
[4377] Fix | Delete
// Prepare popup window
[4378] Fix | Delete
if ( plugin == 'insta_flow' ) {
[4379] Fix | Delete
this.addFeedStepOne(e);
[4380] Fix | Delete
}
[4381] Fix | Delete
[4382] Fix | Delete
$popup.find('.feed-view-visible').removeClass('feed-view-visible');
[4383] Fix | Delete
$view.addClass('feed-view-visible').add($filterView).addClass('feed-view-dynamic').data('fid', fid);
[4384] Fix | Delete
$popup.removeClass('add-feed-step-1').addClass('add-feed-step-2');
[4385] Fix | Delete
$popup.find('.feed-popup-controls').hide();
[4386] Fix | Delete
$popup.find('.networks-content .feed-popup-controls.add').show();
[4387] Fix | Delete
$popup.find('#feed-views').prepend($view);
[4388] Fix | Delete
$popup.find('#filter-views').prepend($filterView);
[4389] Fix | Delete
[4390] Fix | Delete
// focus on content field
[4391] Fix | Delete
$view.find( '[name=' + fid + '-content]' ).focus();
[4392] Fix | Delete
[4393] Fix | Delete
// add notice about auth
[4394] Fix | Delete
var notice = '<div class="ff-notice">Access token is required for %network% feeds, please add on <a href="#ff-auth-tab" class="ff-pseudo-link">AUTH tab</a></div>';
[4395] Fix | Delete
[4396] Fix | Delete
if ( ! $popup.find('.ff-notice').length ) {
[4397] Fix | Delete
[4398] Fix | Delete
switch ( network ) {
[4399] Fix | Delete
case 'facebook': {
[4400] Fix | Delete
if ( ! $( '#facebook_access_token' ).val() ) {
[4401] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Facebook' ) )
[4402] Fix | Delete
}
[4403] Fix | Delete
break;
[4404] Fix | Delete
}
[4405] Fix | Delete
case 'twitter': {
[4406] Fix | Delete
if ( ! $( '#oauth_access_token' ).val() ) {
[4407] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Twitter' ) )
[4408] Fix | Delete
}
[4409] Fix | Delete
break;
[4410] Fix | Delete
}
[4411] Fix | Delete
case 'youtube': {
[4412] Fix | Delete
if ( ! $( '#google_api_key' ).val() ) {
[4413] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( notice.replace( '%network%', 'Youtube' ) )
[4414] Fix | Delete
}
[4415] Fix | Delete
break;
[4416] Fix | Delete
}
[4417] Fix | Delete
case 'instagram': {
[4418] Fix | Delete
if ( ! $( '#facebook_access_token' ).val() ) {
[4419] Fix | Delete
$view.addClass( 'auth-required' ).find( 'h1' ).after( '<div class="ff-notice">If you plan to use official Instagram API by Facebook, access token is required, please add on <a href="#ff-auth-tab" class="ff-pseudo-link">AUTH tab</a></div>' )
[4420] Fix | Delete
}
[4421] Fix | Delete
break;
[4422] Fix | Delete
}
[4423] Fix | Delete
}
[4424] Fix | Delete
}
[4425] Fix | Delete
[4426] Fix | Delete
this.feedChanged = true;
[4427] Fix | Delete
this.addFeedInModel($view, fid);
[4428] Fix | Delete
[4429] Fix | Delete
if ($view.attr('data-feed-type') === 'wordpress') {
[4430] Fix | Delete
$view.find('input:radio').first().change();
[4431] Fix | Delete
}
[4432] Fix | Delete
},
[4433] Fix | Delete
[4434] Fix | Delete
updateModel: function ( event, triggeredFromList ) {
[4435] Fix | Delete
[4436] Fix | Delete
var $t = $( event.currentTarget );
[4437] Fix | Delete
var val = $t.val();
[4438] Fix | Delete
var name = $t.attr('name');
[4439] Fix | Delete
var $group;
[4440] Fix | Delete
var $view = $t.closest('.feed-view');
[4441] Fix | Delete
var id = $view.data('uid') || $view.data('filter-uid');
[4442] Fix | Delete
var isFresh = $view.is('.feed-view-dynamic');
[4443] Fix | Delete
var modelFeeds = this.model.get('feeds');
[4444] Fix | Delete
var changed = this.model.get('feeds_changed');
[4445] Fix | Delete
[4446] Fix | Delete
var self = this;
[4447] Fix | Delete
[4448] Fix | Delete
if ( !name ) {
[4449] Fix | Delete
return;
[4450] Fix | Delete
}
[4451] Fix | Delete
[4452] Fix | Delete
var streams, feeds, found;
[4453] Fix | Delete
var currProp;
[4454] Fix | Delete
var cancelUpdatingModel = false;
[4455] Fix | Delete
var cancelBoostChange = false;
[4456] Fix | Delete
currProp = name.replace(id + '-', '');
[4457] Fix | Delete
var boostInputChecked;
[4458] Fix | Delete
[4459] Fix | Delete
if ( currProp == 'boosted' && ! triggeredFromList ) {
[4460] Fix | Delete
[4461] Fix | Delete
boostInputChecked = $t.is(':checked');
[4462] Fix | Delete
[4463] Fix | Delete
if ( ( boostInputChecked && modelFeeds[ id ][ 'boosted' ] == 'yep' ) || ( ! boostInputChecked && modelFeeds[ id ][ 'boosted' ] == 'nope' ) ) {
[4464] Fix | Delete
// do nothing, it means it was changed programmatically from yep to yep, or nope to nope
[4465] Fix | Delete
} else {
[4466] Fix | Delete
// check if boosts available, checked AND (not number OR less than 1)
[4467] Fix | Delete
if ( boostInputChecked && ( ! Number.isInteger( FlowFlow.availableBoosts ) || parseInt( FlowFlow.availableBoosts ) < 1 ) ) {
[4468] Fix | Delete
[4469] Fix | Delete
FlowFlow.popup( 'No boosts available, please remove from other feeds to free up boosts or upgrade your plan', 'neutral', 'alert' );
[4470] Fix | Delete
[4471] Fix | Delete
// revert if not available
[4472] Fix | Delete
$t.prop( 'checked', false );
[4473] Fix | Delete
cancelBoostChange = true;
[4474] Fix | Delete
}
[4475] Fix | Delete
[4476] Fix | Delete
if ( boostInputChecked ) { // set to enable boost on save
[4477] Fix | Delete
[4478] Fix | Delete
// boosts available UI decreased
[4479] Fix | Delete
if ( ! cancelBoostChange ) FlowFlow.availableBoosts--;
[4480] Fix | Delete
[4481] Fix | Delete
} else { // set to disable boost on save
[4482] Fix | Delete
[4483] Fix | Delete
streams = streamRowModels.models;
[4484] Fix | Delete
[4485] Fix | Delete
// alert if try to disable boost for feed in cloud stream
[4486] Fix | Delete
for ( var i = 0, len = streams.length; i < len; i++ ) {
[4487] Fix | Delete
feeds = streams[ i ].get( 'feeds' );
[4488] Fix | Delete
found = _.find( feeds, function ( feed ) {
[4489] Fix | Delete
return feed.id == id
[4490] Fix | Delete
})
[4491] Fix | Delete
[4492] Fix | Delete
if ( found ) { // this feed in
[4493] Fix | Delete
// show first found
[4494] 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' );
[4495] Fix | Delete
[4496] Fix | Delete
$t.prop( 'checked', true );
[4497] Fix | Delete
[4498] Fix | Delete
cancelUpdatingModel = true;
[4499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function