From 8fdf888edbd74e707d2698c7625dc90b22f0aeef Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Sun, 18 Jan 2009 06:12:47 +0000 Subject: [PATCH] trac750 Javascript file for Facebook app --- actions/facebooksettings.php | 17 +++++++---------- js/facebookapp.js | 25 +++++++++++++++++++++++++ lib/facebookaction.php | 15 ++++++++++++--- lib/facebookutil.php | 10 +++++++++- 4 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 js/facebookapp.js diff --git a/actions/facebooksettings.php b/actions/facebooksettings.php index eafd911236..372c40c28c 100644 --- a/actions/facebooksettings.php +++ b/actions/facebooksettings.php @@ -68,19 +68,18 @@ class FacebooksettingsAction extends FacebookAction $this->showHeader('Settings', $msg, $success); - common_element_start('fb:if-section-not-added', array('section' => 'profile')); - common_element('h2', null, _('Add an Identi.ca box to my profile')); + common_element('form', array('id' => 'redirect_form', + 'style' => 'display: none;')); + common_element_start('p'); - common_element('fb:add-section-button', array('section' => 'profile')); - common_element_end('p'); - - common_element_end('fb:if-section-not-added'); - common_element_start('p'); - common_element_start('fb:prompt-permission', array('perms' => 'status_update')); + common_element_start('fb:prompt-permission', array('perms' => 'status_update', + 'next_fbjs' => 'redirectSettings()')); common_element('h2', null, _('Allow Identi.ca to update my Facebook status')); common_element_end('fb:prompt-permission'); common_element_end('p'); + + if ($facebook->api_client->users_hasAppPermission('status_update')) { common_element_start('form', array('method' => 'post', @@ -94,8 +93,6 @@ class FacebooksettingsAction extends FacebookAction common_checkbox('replysync', _('Send local "@" replies to Facebook.'), ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true); - // function common_input($id, $label, $value=null,$instructions=null) - $prefix = $facebook->api_client->data_getUserPreference(1); diff --git a/js/facebookapp.js b/js/facebookapp.js new file mode 100644 index 0000000000..3f809e50cb --- /dev/null +++ b/js/facebookapp.js @@ -0,0 +1,25 @@ +/* + * Laconica - a distributed open-source microblogging tool + * Copyright (C) 2008, Controlez-Vous, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +// Psycho Facebook redirect hack, used because 'document.location' +// simply does not work in FBJS +function redirectSettings() { + form = document.getElementById('redirect_form'); + form.setAction('settings.php'); + form.submit(); +} diff --git a/lib/facebookaction.php b/lib/facebookaction.php index 1bf026281e..a8f16b34a6 100644 --- a/lib/facebookaction.php +++ b/lib/facebookaction.php @@ -37,7 +37,11 @@ class FacebookAction extends Action common_element('link', array('rel' => 'stylesheet', 'type' => 'text/css', - 'href' => get_facebook_css())); + 'href' => getFacebookCSS())); + + common_element('script', array('type' => 'text/javascript', + 'src' => getFacebookJS()), + ' '); common_element_start('a', array('class' => 'url home bookmark', 'href' => common_local_url('public'))); @@ -58,6 +62,12 @@ class FacebookAction extends Action start_fbml(); + common_element_start('fb:if-section-not-added', array('section' => 'profile')); + common_element_start('span', array('id' => 'add_to_profile')); + common_element('fb:add-section-button', array('section' => 'profile')); + common_element_end('span'); + common_element_end('fb:if-section-not-added'); + $this->showLogo(); common_element_start('dl', array("id" => 'site_nav_local_views')); @@ -141,8 +151,7 @@ class FacebookAction extends Action common_element('link', array('rel' => 'stylesheet', 'type' => 'text/css', - 'href' => get_facebook_css())); - + 'href' => getFacebookCSS())); $this->showLogo(); diff --git a/lib/facebookutil.php b/lib/facebookutil.php index 532e9c9d74..61469b3c64 100644 --- a/lib/facebookutil.php +++ b/lib/facebookutil.php @@ -105,7 +105,7 @@ function update_profile_box($facebook, $fbuid, $user, $notice) $facebook->api_client->profile_setFBML(null, $fbuid, $fbml, null, null, $fbml_main); } -function get_facebook_css() +function getFacebookCSS() { # Add a timestamp to the CSS file so Facebook cache wont ignore our changes $ts = filemtime(theme_file('facebookapp.css')); @@ -113,6 +113,14 @@ function get_facebook_css() return $cssurl; } +function getFacebookJS() { + + # Add a timestamp to the FBJS file so Facebook cache wont ignore our changes + $ts = filemtime(INSTALLDIR.'/js/facebookapp.js'); + $jsurl = common_path('js/facebookapp.js') . "?ts=$ts"; + return $jsurl; +} + class FacebookNoticeList extends NoticeList {