]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'master' of /var/www/trunk
authorEvan Prodromou <evan@controlyourself.ca>
Mon, 19 Jan 2009 13:35:17 +0000 (13:35 +0000)
committerEvan Prodromou <evan@controlyourself.ca>
Mon, 19 Jan 2009 13:35:17 +0000 (13:35 +0000)
Conflicts:

actions/facebookhome.php
actions/facebooksettings.php

1  2 
actions/facebookhome.php
actions/facebookinvite.php
actions/facebookremove.php
actions/facebooksettings.php

index d2ac7617d1c76d0848bb4df0ab9e17c66a835781,3696df90ac534b962e803de50e042be78e6fbfc3..ae29ee1f841feb508807ae4eda4babd854aae0f2
@@@ -34,9 -34,43 +34,43 @@@ class FacebookhomeAction extends Facebo
          // Check to see whether there's already a Facebook link for this user
          $flink = Foreign_link::getByForeignID($fbuid, FACEBOOK_SERVICE);
  
+         // If the user has opted not to initially allow the app to have
+         // Facebook status update permission, store that preference. Only
+         // promt the user the first time she uses the app
+         if ($this->arg('skip')) {
+             $facebook->api_client->data_setUserPreference(
+                 FACEBOOK_PROMPTED_UPDATE_PREF, 'true');
+         }
          if ($flink) {
 -            if ($_POST['submit'] == 'Send') {       
++            if ($_POST['submit'] == 'Send') {
+                 $this->saveNewNotice($flink);
+                 return;
+             }
+             $user = $flink->getUser();
+             common_set_user($user);
+             // If this is the first time the user has started the app
+             // prompt for Facebook status update permission
+             if (!$facebook->api_client->users_hasAppPermission('status_update')) {
+                 if ($facebook->api_client->data_getUserPreference(
+                         FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') {
+                     $this->getUpdatePermission();
+                     return;
+                 }
+             }
+             // Use is authenticated and has already been prompted once for
+             // Facebook status update permission? Then show the main page
+             // of the app
              $this->showHome($flink, null);
          } else {
+             // User hasn't authenticated yet, prompt for creds
              $this->login($fbuid);
          }
  
          $notice = $user->getCurrentNotice();
          update_profile_box($facebook, $fbuid, $user, $notice);
  
 -        $this->showHeader($msg);      
++        $this->showHeader($msg);
+         $this->showNoticeForm($user);
+         $this->showNav('Home');
 -        
 +
-         $this->show_header('Home');
+         echo $this->showNotices($user);
  
-         if ($msg) {
-             $this->element('fb:success', array('message' => $msg));
-         }
-         echo $this->show_notices($user);
-         $this->show_footer();
+         $this->showFooter();
      }
  
-     function show_notices($user)
+     function showNotices($user)
      {
  
          $page = $this->trimmed('page');
          return $nl->show();
      }
  
 -    
+     function getUpdatePermission() {
+         $facebook = get_facebook();
+         $fbuid = $facebook->require_login();
+         startFBML();
+         $this->showStylesheets();
+         $this->showScripts();
+         $this->showLogo();
+         common_element_start('div', array('class' => 'content'));
+         // Figure what the URL of our app is.
+         $app_props = $facebook->api_client->Admin_getAppProperties(
+                 array('canvas_name', 'application_name'));
+         $app_url = 'http://apps.facebook.com/' . $app_props['canvas_name'] . '/index.php';
+         $app_name = $app_props['application_name'];
+         $instructions = sprintf(_('If you would like the %s app to automatically update ' .
+             'your Facebook status with your latest notice, you need ' .
+             'to give it permission.'), $app_name);
+         common_element_start('p');
+         common_element('span', array('id' => 'permissions_notice'), $instructions);
+         common_element_end('p');
+         common_element_start('form', array('method' => 'post',
+                                            'action' => $app_url,
+                                            'id' => 'facebook-skip-permissions'));
+         common_element_start('ul', array('id' => 'fb-permissions-list'));
+         common_element_start('li', array('id' => 'fb-permissions-item'));
+         common_element_start('fb:prompt-permission', array('perms' => 'status_update',
+             'next_fbjs' => 'document.setLocation(\'' . $app_url . '\')'));
+         common_element('span', array('class' => 'facebook-button'),
+             _('Allow Identi.ca to update my Facebook status'));
+         common_element_end('fb:prompt-permission');
+         common_element_end('li');
+         common_element_start('li', array('id' => 'fb-permissions-item'));
+         common_submit('skip', _('Skip'));
+         common_element_end('li');
+         common_element_end('ul');
+         common_element_end('form');
+         common_element_end('div');
+         common_end_xml();
+     }
 -        
++
+     function saveNewNotice($flink)
+     {
 -        $content = $_POST['status_textarea']; 
++
+         $user = $flink->getUser();
 -    
++        $content = $_POST['status_textarea'];
+         if (!$content) {
+             $this->showHome($flink, _('No content!'));
+             return;
+         } else {
+             $content_shortened = common_shorten_links($content);
+             if (mb_strlen($content_shortened) > 140) {
+                 common_debug("Content = '$content_shortened'", __FILE__);
+                 common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__);
+                 $this->showHome($flink, _('That\'s too long. Max notice size is 140 chars.'));
+                 return;
+             }
+         }
+         $inter = new CommandInterpreter();
+         $cmd = $inter->handle_command($user, $content_shortened);
+         if ($cmd) {
+             $cmd->execute(new WebChannel());
+             return;
+         }
+         $replyto = $this->trimmed('inreplyto');
+         $notice = Notice::saveNew($user->id, $content,
+             'Facebook', 1, ($replyto == 'false') ? null : $replyto);
+         if (is_string($notice)) {
+             $this->showHome($flink, 'Error!');
+             return;
+         }
+         common_broadcast_notice($notice);
+         $this->showHome($flink, 'Success!');
+     }
++
  }
index 103d5a5686fd721d30796b46fb5db86c751630ed,e67bfaa0006422378b843b271921a353ca5b1e37..1e6f6496e0ae093d49e8f0b00623ede4559727b9
@@@ -41,26 -41,26 +41,26 @@@ class FacebookinviteAction extends Face
          $facebook = get_facebook();
          $fbuid = $facebook->require_login();
  
-         $this->show_header('Invite');
+         $this->showHeader('Invite');
  
 -        common_element('h2', null, _('Thanks for inviting your friends to use Identi.ca!'));
 -        common_element('p', null, _('Invitations have been sent to the following users:'));
 +        $this->element('h2', null, _('Thanks for inviting your friends to use Identi.ca!'));
 +        $this->element('p', null, _('Invitations have been sent to the following users:'));
  
          $friend_ids = $_POST['ids']; // Hmm... $this->arg('ids') doesn't seem to work
  
 -        common_element_start("ul");
 +        $this->elementStart("ul");
  
          foreach ($friend_ids as $friend) {
 -            common_element_start('li');
 -            common_element('fb:profile-pic', array('uid' => $friend));
 -            common_element('fb:name', array('uid' => $friend,
 +            $this->elementStart('li');
 +            $this->element('fb:profile-pic', array('uid' => $friend));
 +            $this->element('fb:name', array('uid' => $friend,
                                              'capitalize' => 'true'));
 -            common_element_end('li');
 +            $this->elementEnd('li');
          }
  
 -        common_element_end("ul");
 +        $this->elementEnd("ul");
  
-         $this->show_footer();
+         $this->showFooter();
      }
  
      function showInviteForm()
                                                                 'exclude_ids' => implode(',', $exclude_ids),
                                                                 'bypass' => 'cancel'));
  
 -        common_element_end('fb:request-form');
 +        $this->elementEnd('fb:request-form');
  
 -        common_element('h2', null, _('Friends already using Identi.ca:'));
 -        common_element_start("ul");
 +        $this->element('h2', null, _('Friends already using Identi.ca:'));
 +        $this->elementStart("ul");
  
          foreach ($exclude_ids as $friend) {
 -            common_element_start('li');
 -            common_element('fb:profile-pic', array('uid' => $friend));
 -            common_element('fb:name', array('uid' => $friend,
 +            $this->elementStart('li');
 +            $this->element('fb:profile-pic', array('uid' => $friend));
 +            $this->element('fb:name', array('uid' => $friend,
                                              'capitalize' => 'true'));
 -            common_element_end('li');
 +            $this->elementEnd('li');
          }
  
 -        common_element_end("ul");
 +        $this->elementEnd("ul");
  
-         $this->show_footer();
+         $this->showFooter();
  
      }
  
Simple merge
index 8b071353a7c748c11e9684c3f705f56d27411f03,a08abc93719117d9a161b29121494a9591ef5b5a..bc034bc46d7a3e538fa60efd9b544e9e09f2a88d
@@@ -83,32 -72,55 +72,54 @@@ class FacebooksettingsAction extends Fa
  
          if ($facebook->api_client->users_hasAppPermission('status_update')) {
  
 -            common_element_start('form', array('method' => 'post',
 +            $this->elementStart('form', array('method' => 'post',
                                                 'id' => 'facebook_settings'));
  
 -            common_element('h2', null, _('Sync preferences'));
 +            $this->element('h2', null, _('Sync preferences'));
  
 -            common_checkbox('noticesync', _('Automatically update my Facebook status with my notices.'),
 +            $this->checkbox('noticesync', _('Automatically update my Facebook status with my notices.'),
                                  ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true);
  
-             $this->checkbox('replysync', _('Send local "@" replies to Facebook.'),
 -            common_checkbox('replysync', _('Send "@" replies to Facebook.'),
++            $this->checkbox('replysync', _('Send "@" replies to Facebook.'),
                               ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true);
  
-             // function $this->input($id, $label, $value=null,$instructions=null)
              $prefix = $facebook->api_client->data_getUserPreference(1);
-             
  
 -
 -            common_input('prefix', _('Prefix'),
 +            $this->input('prefix', _('Prefix'),
                           ($prefix) ? $prefix : null,
                           _('A string to prefix notices with.'));
 -            common_submit('save', _('Save'));
 +            $this->submit('save', _('Save'));
  
 -            common_element_end('form');
 +            $this->elementEnd('form');
  
+         } else {
+             // Figure what the URL of our app is.
+             $app_props = $facebook->api_client->Admin_getAppProperties(
+                     array('canvas_name', 'application_name'));
+             $app_url = 'http://apps.facebook.com/' . $app_props['canvas_name'] . '/settings.php';
+             $app_name = $app_props['application_name'];
+             $instructions = sprintf(_('If you would like the %s app to automatically update ' .
+                 'your Facebook status with your latest notice, you need ' .
+                 'to give it permission.'), $app_name);
+             common_element_start('p');
+             common_element('span', array('id' => 'permissions_notice'), $instructions);
+             common_element_end('p');
+             common_element_start('ul', array('id' => 'fb-permissions-list'));
+             common_element_start('li', array('id' => 'fb-permissions-item'));
+             common_element_start('fb:prompt-permission', array('perms' => 'status_update',
+                 'next_fbjs' => 'document.setLocation(\'' . $app_url . '\')'));
+             common_element('span', array('class' => 'facebook-button'),
+                 _('Allow Identi.ca to update my Facebook status'));
+             common_element_end('fb:prompt-permission');
+             common_element_end('li');
+             common_element_end('ul');
          }
  
-         $this->show_footer();
+         $this->showFooter();
      }
  
  }