/*
* API key, this should be initialized before any another function in this file is called.
*/
var is_initialized = false;
/*
* Ensure Facebook app is initialized and call callback afterward
*
*/
function ensure_init(callback) {
if(!window.api_key) {
window.alert("api_key is not set");
}
if(window.is_initialized) {
callback();
} else {
FB_RequireFeatures(["XFBML", "CanvasUtil"], function() {
FB.FBDebug.LogLevel = 4;
FB.Facebook.init(window.api_key, "wp-content/plugins/comm-facebook/xd_receiver.php");
window.is_initialized = true;
callback();
});
}
}
function showDocAfterRender() {
ensure_init(function() {
FB.XFBML.Host.get_areElementsReady().waitUntilReady (show_document);
});
}
/*
* "Session Ready" handler. This is called when the facebook
* session becomes ready after the user clicks the "Facebook login" button.
* In a more complex app, this could be used to do some in-page
* replacements and avoid a full page refresh. For now, just
* notify the server the user is logged in, and redirect to home.
*
* @param link_to_current_user if the facebook session should be
* linked to a currently logged in user, or used
* to create a new account anyway
*/
function facebook_session_is_ready(link_to_current_user) {
var user = FB.Facebook.apiClient.get_session() ?
FB.Facebook.apiClient.get_session().uid :
null;
if (!user) {
// probably should give some indication of failure to the user
document.getElementById('fbconnect_button') = document.getElementById('fbconnect_button') + '
Couldn\'t authenticate with Facebook - Please try again.
';
return;
}
// don't pass the user back raw to the server - it's too easy to spoof
// better to just tell them that the session is ready, and let facebook
// figure it out based on the cookies and signature
var params = 'save=1';
ajax('/wp-content/plugins/comm-facebook/ajax.php', params, function(text) {
if (text > 0) {
window.location.reload();
}
else {
// should probably display some sort of error somewhere
document.getElementById('login_sector_fb') = document.getElementById('fbconnect_button') + 'Couldn\'t authenticate with Facebook - Please try again.
';
}
});
}
/*
* This will process the session when it becomes available.
*/
function facebook_session_on_ready(link_to_current_user) {
ensure_init(function() {
FB.Facebook.get_sessionState().waitUntilReady(function() {
facebook_session_is_ready(link_to_current_user);
});
});
}
/*
* Prompts the user to grant a permission to the application.
*/
function facebook_prompt_permission(permission) {
ensure_init(function() {
FB.Connect.showPermissionDialog(permission);
});
}
/*
* Show the feed form. This would be typically called in response to the
* onclick handler of a "Publish" button, or in the onload event after
* the user submits a form with info that should be published.
*
*/
function facebook_publish_feed_story(form_bundle_id, template_data) {
// Load the feed form
ensure_init(function() {
FB.Connect.showFeedDialog(form_bundle_id, template_data);
//FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, FB.FeedStorySize.shortStory, FB.RequireConnect.promptConnect);
// hide the "Loading feed story ..." div
ge('feed_loading').style.visibility = "hidden";
});
}
/*
* If a user is not connected, then the checkbox that says "Publish To Facebook"
* is hidden in the "add run" form.
* This function detects whether the user is logged into facebook but just
* not connected, and shows the checkbox if that's true.
*
*/
function facebook_show_feed_checkbox() {
ensure_init(function() {
FB.Connect.get_status().waitUntilReady(function(status) {
if (status != FB.ConnectState.userNotLoggedIn) {
// If the user is currently logged into Facebook, but has not
// authorized the app, then go ahead and show them the feed dialog + upsell
checkbox = ge('publish_fb_checkbox');
if (checkbox) {
checkbox.style.visibility = "visible";
}
}
});
});
}