(function ($) {
function SbspfAdmin(plugin, $adminEl) {
this.plugin = plugin;
this.$adminEl = $adminEl;
this.accesstokenSplitter = "access_token=";
}
SbspfAdmin.prototype = {
init: function () {
var self = this,
id = "#" + this.plugin,
cla = "." + this.plugin;
this.addAccessTokenListener();
$(
"." +
this.plugin +
"_connected_accounts_wrap ." +
this.plugin +
"_connected_account"
).each(function () {
self.initClickRemove($(this));
self.initInfoToggle(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
});
this.$adminEl.find(".sbspf_type_input").on("change", function () {
self.updateOnSelect($(this));
});
self.updateOnSelect();
self.initAppCredToggle();
self.initWidthResponsiveToggle();
self.initActionButtons();
this.addManualAccessTokenListener();
$(id + "_search_submit").on("click", function (event) {
event.preventDefault();
var submitData = {
term: $(id + "_channel_search").val(),
action: self.plugin + "_account_search",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
var html = "";
$.each(returnObj.items, function (index, value) {});
}
};
sbAjax(submitData, onSuccess);
});
// color picker
var $ctfColorpicker = $(cla + "_colorpicker");
if ($ctfColorpicker.length > 0) {
$ctfColorpicker.wpColorPicker();
}
// shortcode tooltips
var $adminLabel = $(id + "_admin label");
$adminLabel.on("click", function () {
var $shortcode = $(this).siblings(cla + "_shortcode");
if ($shortcode.is(":visible")) {
$(this).closest("tr").removeClass("sby_shortcode_visible");
$shortcode.hide();
} else {
$(this).closest("tr").addClass("sby_shortcode_visible");
$shortcode.show();
}
});
$adminLabel.on("mouseenter mouseleave", function (e) {
switch (e.type) {
case "mouseenter":
if (
$(this).siblings(cla + "_shortcode").length &&
!$(this).find(cla + "_shortcode_symbol").length
) {
$(this).append(
'<code class="' + self.plugin + '_shortcode_symbol">[]</code>'
);
}
break;
case "mouseleave":
$(this)
.find(cla + "_shortcode_symbol")
.remove();
break;
}
});
$(cla + "_shortcode").hide();
//Scroll to hash for quick links
$(id + "_admin a").on("click", function () {
if (
location.pathname.replace(/^\//, "") ==
this.pathname.replace(/^\//, "") &&
location.hostname == this.hostname
) {
var target = $(this.hash);
target = target.length ? target : this.hash.slice(1);
if (target.length) {
$("html,body").animate(
{
scrollTop: target.offset().top,
},
500
);
return false;
}
}
});
//Caching options
if ($(id + "_caching_type_page").is(":checked")) {
$(cla + "-caching-cron-options").hide();
$(cla + "-caching-page-options").show();
} else {
$(cla + "-caching-page-options").hide();
$(cla + "-caching-cron-options").show();
}
$("." + self.plugin + "_caching_type_input").on("change", function () {
if (this.value == "page") {
$(cla + "-caching-cron-options").slideUp();
$(cla + "-caching-page-options").slideDown();
} else if (this.value == "background") {
$(cla + "-caching-page-options").slideUp();
$(cla + "-caching-cron-options").slideDown();
}
});
//Should we show the caching time settings?
var sbspf_cache_cron_interval = $(id + "_cache_cron_interval").val(),
$sbspf_caching_time_settings = $(id + "-caching-time-settings");
//Should we show anything initially?
if (
sbspf_cache_cron_interval == "30mins" ||
sbspf_cache_cron_interval == "1hour"
)
$sbspf_caching_time_settings.hide();
$(id + "_cache_cron_interval").on("change", function () {
sbspf_cache_cron_interval = $(id + "_cache_cron_interval").val();
if (
sbspf_cache_cron_interval == "30mins" ||
sbspf_cache_cron_interval == "1hour"
) {
$sbspf_caching_time_settings.hide();
} else {
$sbspf_caching_time_settings.show();
}
});
sbspf_cache_cron_interval = $(id + "_cache_cron_interval").val();
if (
sbspf_cache_cron_interval == "30mins" ||
sbspf_cache_cron_interval == "1hour"
) {
$sbspf_caching_time_settings.hide();
} else {
$sbspf_caching_time_settings.show();
}
self.updateLayoutOptionsDisplay();
$(cla + "_layout_type").on("change", function () {
self.updateLayoutOptionsDisplay();
});
$(cla + "_sub_option_type").on("change", function () {
self.updateBoxSelectionDisplay();
});
self.updateBoxSelectionDisplay();
// tooltips
$(id + "_admin " + cla + "_tooltip_link").on("click", function () {
if ($(this).closest(cla + "_box").length) {
$(this)
.closest(cla + "_box")
.find(cla + "_tooltip")
.slideToggle();
} else {
$(this)
.closest("tr, h3, " + cla + "_tooltip_wrap")
.find(cla + "_tooltip")
.slideToggle();
}
});
$(id + "_admin " + cla + "_type_tooltip_link").on("click", function () {
$(this)
.closest(cla + "_row")
.find(cla + "_tooltip")
.slideToggle();
});
//Mobile width
var $feedWidth = $(id + "_admin " + id + "_settings_width"),
$widthUnit = $(id + "_admin " + id + "_settings_width_unit");
if ($feedWidth.length) {
$feedWidth.on("change", function () {
self.updateFeedWidthDisplay();
});
$widthUnit.on("change", function () {
self.updateFeedWidthDisplay();
});
self.updateFeedWidthDisplay();
}
this.afterInit();
},
afterInit: function () {},
addAccessTokenListener: function () {
var self = this;
if (
window.location.hash.length > 5 &&
window.location.hash.indexOf(this.accesstokenSplitter) > -1
) {
var accessToken = window.location.hash.split(this.accesstokenSplitter);
// clear access token from hash
window.location.hash = "";
var submitData = {
access_token: accessToken[1],
action: this.plugin + "_process_access_token",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
$("." + self.plugin + "_connected_accounts_wrap").prepend(
returnObj.html
);
self.initClickRemove(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
self.initInfoToggle(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
}
};
sbAjax(submitData, onSuccess);
}
},
initClickRemove: function (el) {
var self = this;
el.find("." + this.plugin + "_delete_account").on("click", function () {
if (
!$(this)
.closest("." + self.plugin + "_connected_accounts_wrap")
.hasClass(self.plugin + "-waiting")
) {
$(this)
.closest("." + self.plugin + "_connected_accounts_wrap")
.addClass(self.plugin + "-waiting");
var $connectedAccount = $(this).closest(
"." + self.plugin + "_connected_account"
),
accountID = $connectedAccount.attr("data-userid");
if (window.confirm("Delete this connected account?")) {
$("#" + self.plugin + "_user_feed_id_" + accountID).remove();
$("#" + self.plugin + "_connected_account_" + accountID)
.append(
'<div class="spinner" style="margin-top: -10px;visibility: visible;top: 50%;position: absolute;right: 50%;"></div>'
)
.find("." + self.plugin + "_ca_info")
.css("opacity", ".5");
var submitData = {
account_id: accountID,
action: self.getAction("ca_after_remove_clicked"),
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
$("." + self.plugin + "-waiting").removeClass(
self.plugin + "-waiting"
);
$connectedAccount.fadeOut(300, function () {
$(this).remove();
});
self.afterConnectedAccountRemoved(accountID);
}
};
sbAjax(submitData, onSuccess);
} else {
$("." + self.plugin + "-waiting").removeClass(
self.plugin + "-waiting"
);
}
}
});
},
initInfoToggle: function (el) {
var self = this;
el.find("." + self.plugin + "_ca_show_token")
.off()
.on("click", function () {
$(this)
.closest("." + self.plugin + "_ca_info")
.find("." + self.plugin + "_ca_accesstoken")
.slideToggle(200);
});
el.find("." + self.plugin + "_ca_token_shortcode")
.off()
.on("click", function () {
$(this)
.closest("." + self.plugin + "_ca_info")
.find("." + self.plugin + "_ca_shortcode")
.slideToggle(200);
});
},
initAppCredToggle: function () {
var self = this;
$("#" + self.plugin + "_have_own_tokens").on("click", function () {
if ($(this).is(":checked")) {
$(this)
.closest("form")
.find("." + self.plugin + "_own_credentials_wrap")
.slideDown();
} else {
$(this)
.closest("form")
.find("." + self.plugin + "_own_credentials_wrap")
.slideUp();
}
});
if ($("#" + self.plugin + "_have_own_tokens").is(":checked")) {
$("#" + self.plugin + "_have_own_tokens")
.closest("form")
.find("." + self.plugin + "_own_credentials_wrap")
.slideDown();
} else {
$("#" + self.plugin + "_have_own_tokens")
.closest("form")
.find("." + self.plugin + "_own_credentials_wrap")
.slideUp();
}
},
initWidthResponsiveToggle: function () {
//Mobile width
var feedWidth = $("#sby_settings_width").length
? $("#sby_settings_width").val()
: "100",
widthUnit = $("#sby_settings_widthunit").length
? $("#sby_settings_widthunit").val()
: "%",
$widthOptions = $("#sbspf_width_options");
if ($("#sby_settings_widthunit").length) {
//Show initially if a width is set
if (feedWidth !== "100" && widthUnit === "%") {
$widthOptions.slideDown();
} else {
$widthOptions.slideUp();
}
$("#sby_settings_width_unit, #sby_settings_width").on(
"change",
function () {
feedWidth = $("#sby_settings_width").length
? $("#sby_settings_width").val()
: "100";
widthUnit = $("#sby_settings_widthunit").length
? $("#sby_settings_widthunit").val()
: "%";
if (feedWidth !== "100" && widthUnit === "%") {
$widthOptions.slideDown();
} else {
$widthOptions.slideUp();
}
}
);
}
},
initActionButtons: function () {
$("#sbspf_admin .sbspf-button-action").each(function () {
$(this).on("click", function () {
event.preventDefault();
$(this).next(".sbspf_success").remove();
var doAction =
typeof $(this).attr("data-sby-action") !== "undefined"
? $(this).attr("data-sby-action")
: "",
confirmMessage =
typeof $(this).attr("data-sby-confirm") !== "undefined"
? $(this).attr("data-sby-confirm")
: false,
$targetWaitingEl =
typeof $(this).attr("data-sby-waiter") !== "undefined"
? $($(this).attr("data-sby-waiter"))
: $(this),
$self = $(this);
if (!confirmMessage || window.confirm(confirmMessage)) {
$(this).prop("disabled", true);
$targetWaitingEl.after(
'<div class="spinner sbspf_spinner" style="display:inline-block;visibility: visible;"></div>'
);
var submitData = {
action: doAction,
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
$self.prop("disabled", false);
$targetWaitingEl.next(".spinner").fadeOut("slow", function () {
$targetWaitingEl.after(
'<span class="sbspf_success"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="check-circle" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-check-circle fa-w-16"><path fill="currentColor" d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z" class=""></path></svg></span>'
);
});
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
console.log(returnObj);
}
};
sbAjax(submitData, onSuccess);
} else {
$("." + self.plugin + "-waiting").removeClass(
self.plugin + "-waiting"
);
}
console.log(
$(this).attr("data-sby-action"),
$(this).attr("data-sby-confirm")
);
});
});
},
getAction(action) {
return self.plugin + "_" + action;
},
addManualAccessTokenListener: function () {
var self = this,
id = "#" + this.plugin,
cla = "." + this.plugin;
$(cla + "_manually_connect_wrap").hide();
$(cla + "_manually_connect").on("click", function (event) {
event.preventDefault();
if ($(cla + "_manually_connect_wrap").is(":visible")) {
$(cla + "_manually_connect_wrap").slideUp(200);
} else {
$(cla + "_manually_connect_wrap").slideDown(200);
}
});
$(id + "_manual_submit").on("click", function (event) {
event.preventDefault();
var $self = $(this);
var accessToken = $(id + "_manual_at").val(),
error = false;
if (accessToken.length < 15) {
if (
!$(cla + "_manually_connect_wrap").find(cla + "_user_id_error")
.length
) {
$(cla + "_manually_connect_wrap")
.show()
.prepend(
'<div class="' +
self.plugin +
'_user_id_error" style="display:block;">Please enter a valid access token</div>'
);
}
} else if (!error) {
$(this).prop("disabled", true);
$(this)
.closest(cla + "_manually_connect_wrap")
.fadeOut();
$(cla + "_connected_accounts_wrap")
.fadeTo("slow", 0.5)
.find(cla + "_user_id_error")
.remove();
var submitData = {
access_token: accessToken,
action: self.plugin + "_process_access_token",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
$(cla + "_connected_accounts_wrap").fadeTo("slow", 1);
$self.prop("disabled", false);
var returnObj = JSON.parse(data.trim());
$("." + self.plugin + "_connected_accounts_wrap").prepend(
returnObj.html
);
self.initClickRemove(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
self.initInfoToggle(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
};
sbAjax(submitData, onSuccess);
}
});
},
afterConnectedAccountRemoved: function (accountID) {},
updateLayoutOptionsDisplay: function () {
self = this;
setTimeout(function () {
$("." + self.plugin + "_layout_settings").hide();
$(
"." +
self.plugin +
"_layout_settings." +
self.plugin +
"_layout_type_" +
$("." + self.plugin + "_layout_type:checked").val()
).show();
}, 1);
},
updateBoxSelectionDisplay: function () {
self = this;
setTimeout(function () {
$("." + self.plugin + "_sub_option_settings").hide();
$(
"." +
self.plugin +
"_sub_option_settings." +
self.plugin +
"_sub_option_type_" +
$("." + self.plugin + "_sub_option_type:checked").val()
).show();
}, 1);
},
updateFeedWidthDisplay: function () {
self = this;
var sbspfFeedWidth = $(
"#" + self.plugin + "_admin " + "#" + self.plugin + "_settings_width"
).val(),
sbspfWidthUnit = $(
"#" +
self.plugin +
"_admin " +
"#" +
self.plugin +
"_settings_width_unit"
).val(),
$sbspfWidthOptions = $(
"#" + self.plugin + "_admin " + "#" + self.plugin + "_width_options"
);
if (
sbspfFeedWidth.length < 2 ||
(sbspfFeedWidth == "100" && sbspfWidthUnit == "%")
) {
$sbspfWidthOptions.slideUp();
} else {
$sbspfWidthOptions.slideDown();
}
},
updateOnSelect: function ($changed) {
this.$adminEl.find(".sbspf_type_input").each(function () {
if ($(this).is(":checked")) {
$(this).closest(".sbspf_type_row").find(".sbspf_onselect").show();
} else {
$(this).closest(".sbspf_type_row").find(".sbspf_onselect").hide();
}
});
//console.log($changed.is(':checked'),$changed.closest('.sbspf_type_row').find('.sbspf_onselect').length)
},
encodeHTML: function (raw) {
// make sure passed variable is defined
if (typeof raw === "undefined") {
return "";
}
// replace greater than and less than symbols with html entity to disallow html in comments
var encoded = raw.replace(/(>)/g, ">"),
encoded = encoded.replace(/(<)/g, "<");
encoded = encoded.replace(/(<br\/>)/g, "<br>");
encoded = encoded.replace(/(<br>)/g, "<br>");
return encoded;
},
};
window.sbspf_admin_init = function () {
var plugin =
typeof $(".sbspf-admin").attr("data-sb-plugin") !== "undefined"
? $(".sbspf-admin").attr("data-sb-plugin")
: "sbspf",
$adminEl = $("#sbspf_admin.sby_admin");
window.sb = new SbspfAdmin(plugin, $adminEl);
window.sb.init();
};
function sbAjax(submitData, onSuccess) {
$.ajax({
url: sbspf.ajaxUrl,
type: "post",
data: submitData,
success: onSuccess,
});
}
function SbYoutubeAdmin(plugin, $adminEl) {
SbspfAdmin.call(this, plugin, $adminEl);
this.afterInit = function () {
var self = this,
id = "#" + this.plugin,
cla = "." + this.plugin;
$("#sbspf_usecustomsearch").on("change", function () {
if ($(this).is(":checked")) {
$("#sbspf_usecustomsearch_reveal").show();
} else {
$("#sbspf_usecustomsearch_reveal").hide();
}
});
if ($("#sbspf_usecustomsearch").is(":checked")) {
$("#sbspf_usecustomsearch_reveal").show();
} else {
$("#sbspf_usecustomsearch_reveal").hide();
}
$("#sby_api_key").on("change", function () {
self.toggleAPIKeyWarnings();
});
this.toggleAPIKeyWarnings();
this.toggleAccessTokenDisclaimer();
$("#sby_settings_dateformat").on("input", function () {
self.toggleCustomDateField();
});
this.toggleCustomDateField();
$(".sbspf_dismiss_button").on("click", function () {
event.preventDefault();
$("#sbspf_modal_overlay").remove();
var submitData = {
action: $(this).attr("data-action"),
};
sbAjax(submitData, function () {});
});
$(".sbspf_dismiss_at_warning_button").on("click", function () {
event.preventDefault();
$("#sbspf_modal_overlay").remove();
var submitData = {
action: $(this).attr("data-action"),
};
sbAjax(submitData, function () {});
});
//
$(".sby_api_key_needed").each(function () {
$(this)
.find("label")
.append(
'<span class="sby_api_key_needed_message"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="key" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-key fa-w-16"><path fill="currentColor" d="M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" class=""></path></svg> API Key Needed</span>'
);
});
if (
typeof $("#sbspf_get_token").attr("data-show-warning") !== "undefined"
) {
$("#sbspf_get_token").on("click", function (event) {
event.preventDefault();
var html = self.getModal();
$("#sbspf_admin").append(html);
$("#sbspf_admin")
.find(".sbspf_modal_close")
.on("click", function () {
$("#sbspf_admin").find("#sbspf_modal_overlay").remove();
});
var submitData = {
action: "sby_dismiss_connect_warning_button",
};
sbAjax(submitData, function () {});
});
}
jQuery(".sbspf_show_gdpr_list").on("click", function () {
jQuery(this).closest("div").find(".sbspf_gdpr_list").slideToggle();
});
//Selecting a post style
jQuery("#sbspf_gdpr_setting").on("change", function () {
sbspfCheckGdprSetting(jQuery(this).val());
});
function sbspfCheckGdprSetting(option) {
if (option == "yes") {
jQuery(".sbspf_gdpr_yes,#sbspf_images_options").show();
jQuery(".sbspf_gdpr_no, .sbspf_gdpr_auto").hide();
}
if (option == "no") {
jQuery(".sbspf_gdpr_no").show();
jQuery(
".sbspf_gdpr_yes, .sbspf_gdpr_auto, #sbspf_images_options"
).hide();
}
if (option == "auto") {
jQuery(".sbspf_gdpr_auto").show();
jQuery(".sbspf_gdpr_yes, .sbspf_gdpr_no").hide();
if (jQuery(".sbspf_gdpr_plugin_active").length) {
jQuery("#sbspf_images_options").show();
} else {
jQuery("#sbspf_images_options").hide();
}
}
}
sbspfCheckGdprSetting(jQuery("#sbspf_gdpr_setting").val());
// Locator
jQuery(".sby-locator-more").on("click", function (e) {
e.preventDefault();
jQuery(this).closest("td").find(".sby-full-wrap").show();
jQuery(this).closest("td").find(".sby-condensed-wrap").hide();
jQuery(this).remove();
});
};
this.getModal = function () {
var modal =
'<div id="sbspf_modal_overlay">' +
'<div class="sbspf_modal">' +
'<div class="sbspf_modal_message">' +
' <div class="sby_before_connection">' +
' <p>The Feeds for YouTube plugin requires <strong>"read only"</strong> access to your YouTube account in order to retrieve data from the YouTube API.</p>' +
" <p><strong>Please note:</strong> The plugin is only able to read public data from your account and cannot be used to edit or write to your YouTube account in any way.</p>" +
' <p class="sbspf_submit">' +
' <a href="' +
$("#sbspf_get_token").attr("href") +
'" class="button button-primary sbspf_dismiss_connect_warning_button" data-action="sby_dismiss_connect_warning_notice">Continue</a>' +
" </p>" +
' <a href="JavaScript:void(0);" class="sbspf_modal_close sbspf_dismiss_connect_warning_button" data-action="sby_dismiss_connect_warning_notice"><i class="fa fa-times"></i></a>' +
"" +
" </div>" +
"</div>" +
"" +
"</div>" +
"</div>";
return modal;
};
this.toggleCustomDateField = function () {
if ($("#sby_settings_dateformat").val() === "custom") {
$(".sby_customdate_wrap").slideDown();
} else {
$(".sby_customdate_wrap").slideUp();
}
};
this.toggleAPIKeyWarnings = function () {
if ($("#sby_api_key").val() !== "") {
if ($(".sby_disabled_wrap").length) {
var $closestTD = $(".sbspf_row.sbspf_type_row").first().closest("td");
$(".sbspf_type_row").each(function () {
if ($(this).find(".sbspf_type_input").attr("value") !== "channel") {
$closestTD.append($(this));
$(this).find("input").prop("disabled", false);
}
});
$(".sby_disabled_wrap").remove();
}
} else if (!$(".sby_disabled_wrap").length) {
var $closestTD = $(".sbspf_row.sbspf_type_row").first().closest("td");
$closestTD.append(
'<div class="sby_disabled_wrap sbspf_fade"><div class="sbspf_lock"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="key" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-key fa-w-16"><path fill="currentColor" d="M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" class=""></path></svg>API Key Needed</div></div>'
);
$(".sbspf_type_row").each(function () {
if ($(this).find(".sbspf_type_input").attr("value") !== "channel") {
$(".sby_disabled_wrap").append($(this));
$(this).find("input").prop("disabled", true);
} else {
$(this).find("input").prop("disabled", false);
}
});
}
};
this.toggleAccessTokenDisclaimer = function () {
var self = this;
if ($(".sby_account_just_added").length) {
$(".sby_api_needed").remove();
$(".sby_after_connection").show();
} else {
$(".sby_after_connection").remove();
$(".sby_api_needed").show();
}
};
this.addAccessTokenListener = function () {
var self = this;
if (
window.location.hash.length > 5 &&
window.location.hash.indexOf(this.accesstokenSplitter) > -1
) {
var accessToken = window.location.hash.split(this.accesstokenSplitter);
// clear access token from hash
window.location.hash = "";
var submitData = {
access_token: accessToken[1],
action: "sby_process_access_token",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
$("." + self.plugin + "_connected_accounts_wrap").prepend(
returnObj.html
);
self.initClickRemove(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
self.initInfoToggle(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
}
};
sbAjax(submitData, onSuccess);
}
};
this.addManualAccessTokenListener = function () {
var self = this,
id = "#" + this.plugin,
cla = "." + this.plugin;
$(cla + "_manually_connect_wrap").hide();
$(cla + "_manually_connect").on("click", function (event) {
event.preventDefault();
if ($(cla + "_manually_connect_wrap").is(":visible")) {
$(cla + "_manually_connect_wrap").slideUp(200);
} else {
$(cla + "_manually_connect_wrap").slideDown(200);
}
});
$(id + "_manual_submit").on("click", function (event) {
event.preventDefault();
var $self = $(this);
var accessToken = $(id + "_manual_at").val(),
refreshToken = $(id + "_manual_rt").val(),
error = false;
if (accessToken.length < 15) {
if (
!$(cla + "_manually_connect_wrap").find(cla + "_user_id_error")
.length
) {
$(cla + "_manually_connect_wrap")
.show()
.prepend(
'<div class="' +
self.plugin +
'_user_id_error" style="display:block;">Please enter a valid access token</div>'
);
}
} else if (!error) {
$(this).prop("disabled", true);
$(this)
.closest(cla + "_manually_connect_wrap")
.fadeOut();
$(cla + "_connected_accounts_wrap")
.fadeTo("slow", 0.5)
.find(cla + "_user_id_error")
.remove();
var submitData = {
sby_access_token: accessToken,
sby_refresh_token: refreshToken,
action: "sby_process_access_token",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
$(cla + "_connected_accounts_wrap").fadeTo("slow", 1);
$self.prop("disabled", false);
if (data.trim().indexOf("{") === 0) {
var returnObj = JSON.parse(data.trim());
if (typeof returnObj.error === "undefined") {
if (
!$("#sbspf_connected_account_" + returnObj.account_id).length
) {
$("." + self.plugin + "_connected_accounts_wrap").prepend(
returnObj.html
);
self.initClickRemove(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
self.initInfoToggle(
$("." + self.plugin + "_connected_accounts_wrap").last()
);
console.log("added");
} else {
$(
"#sbspf_connected_account_" + returnObj.account_id
).replaceWith(returnObj.html);
self.initClickRemove(
$("#sbspf_connected_account_" + returnObj.account_id)
);
self.initInfoToggle(
$("#sbspf_connected_account_" + returnObj.account_id)
);
console.log("updated");
}
} else {
alert(returnObj.error);
}
}
self.toggleAccessTokenDisclaimer();
$(".sbspf_dismiss_at_warning_button").on("click", function () {
event.preventDefault();
$("#sbspf_modal_overlay").remove();
var submitData = {
action: $(this).attr("data-action"),
};
sbAjax(submitData, function () {});
});
};
sbAjax(submitData, onSuccess);
}
});
};
this.getAction = function (action) {
return "sby_" + action;
};
}
SbYoutubeAdmin.prototype = Object.create(SbspfAdmin.prototype);
window.sby_admin_init = function () {
var plugin =
typeof $(".sbspf-admin").attr("data-sb-plugin") !== "undefined"
? $(".sbspf-admin").attr("data-sb-plugin")
: "sbspf",
$adminEl = $("#sbspf_admin.sby_admin");
window.sb = new SbYoutubeAdmin(plugin, $adminEl);
window.sb.init();
window.sbImporter = new SBImporter();
window.sbImporter.init();
};
function SBImporter() {
this.channel = "";
this.playlistID = "";
this.numNeeded = 0;
this.numRetrieved = 0;
this.nextPage = $("#sby_import_data").attr("data-next");
this.remainingCycles = 100;
this.spinner =
'<svg class="svg-inline--fa fa-spinner fa-w-16 fa-pulse" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="spinner" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path></svg>';
}
SBImporter.prototype = {
init: function () {
var sbImporter = this;
$("#sby_do_import").on("click", function (event) {
event.preventDefault();
$(this).prop("disabled", true);
sbImporter.numNeeded = $("#sby_num").val();
sbImporter.channel = $("#sby_import").val();
$(this).html(sbImporter.spinner);
$(".sby_remaining").after(sbImporter.spinner);
$(".sby_remaining").text(sbImporter.numNeeded);
$(".sby_status").slideDown();
sbImporter.doImportBatch();
});
},
updateHTML: function (continueLoading) {
if (continueLoading) {
$(".sby_remaining").text(sbImporter.numNeeded);
} else {
$("#sby_do_import").remove();
}
},
doImportBatch: function () {
this.remainingCycles--;
var sbImporter = this,
toRetrieve = Math.min(this.numNeeded - this.numRetrieved, 50);
var submitData = {
channel: this.channel,
playlist: this.playlistID,
needed: toRetrieve,
page: this.nextPage,
action: "sby_do_import_batch",
sbspf_nonce: sbspf.nonce,
};
var onSuccess = function (data) {
if (data.indexOf("{") > -1) {
var response = JSON.parse(data);
console.log(response);
sbImporter.numNeeded = sbImporter.numNeeded - response.num_retrieved;
if (
response.num_retrieved > 0 &&
sbImporter.numNeeded > 0 &&
sbImporter.remainingCycles > 0 &&
response.next.length > 1
) {
sbImporter.nextPage = response.next;
sbImporter.playlistID = response.playlist;
sbImporter.doImportBatch();
sbImporter.updateHTML(true);
} else {
sbImporter.updateHTML(false);
window.location.reload();
}
}
};
sbAjax(submitData, onSuccess);
},
};
})(jQuery);
jQuery(document).ready(function ($) {
sby_admin_init();
});