]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/facebookaction.php
Ticket http://laconi.ca/trac/ticket/1274
[quix0rs-gnu-social.git] / lib / facebookaction.php
index bfba702e6a09b6bb5d09c95a6b2b280ad0f38ead..043a078cd5bbd2fa8b0849fa7dc3c5238927cc3f 100644 (file)
@@ -129,7 +129,7 @@ class FacebookAction extends Action
      * Start an Facebook ready HTML document
      *
      *  For Facebook we don't want to actually output any headers,
-     *  DTD info, etc.
+     *  DTD info, etc.  Just Stylesheet and JavaScript links.
      *
      * If $type isn't specified, will attempt to do content negotiation.
      *
@@ -140,6 +140,9 @@ class FacebookAction extends Action
 
     function startHTML($type=null) 
     {          
+        $this->showStylesheets();
+        $this->showScripts();
+        
         $this->elementStart('div', array('class' => 'facebook-page'));
     }
 
@@ -168,7 +171,7 @@ class FacebookAction extends Action
 
     function showBody()
     {
-        $this->elementStart('div', 'wrap');
+        $this->elementStart('div', array('id' => 'wrap'));
         $this->showHeader();
         $this->showCore();
         $this->showFooter();
@@ -181,8 +184,6 @@ class FacebookAction extends Action
 
     function showHead($error, $success)
     {
-        $this->showStylesheets();
-        $this->showScripts();
         
         if ($error) {
             $this->element("h1", null, $error);
@@ -204,7 +205,6 @@ class FacebookAction extends Action
     // Make this into a widget later
     function showLocalNav()
     {
-                
         $this->elementStart('ul', array('class' => 'nav'));
 
         $this->elementStart('li', array('class' =>
@@ -229,18 +229,7 @@ class FacebookAction extends Action
         $this->elementEnd('li');
 
         $this->elementEnd('ul');
-
     }     
-
-    /**
-     * Show primary navigation.
-     *
-     * @return nothing
-     */
-    function showPrimaryNav()
-    {
-        // we don't want to show anything for this
-    }
     
     /**
      * Show header of the page.
@@ -254,7 +243,6 @@ class FacebookAction extends Action
         $this->elementStart('div', array('id' => 'header'));
         $this->showLogo();
         $this->showNoticeForm();
-        $this->showPrimaryNav();
         $this->elementEnd('div');
     }
     
@@ -282,7 +270,6 @@ class FacebookAction extends Action
 
         $loginmsg_part1 = _('To use the %s Facebook Application you need to login ' .
             'with your username and password. Don\'t have a username yet? ');
-
         $loginmsg_part2 = _(' a new account.');
 
         $this->elementStart('dd');
@@ -291,18 +278,18 @@ class FacebookAction extends Action
         $this->element('a',
             array('href' => common_local_url('register')), _('Register'));
         $this->text($loginmsg_part2);
+       $this->elementEnd('p');
         $this->elementEnd('dd');
+
         $this->elementEnd('dl');
-        
         $this->elementEnd('div');
-        
     }
 
 
     function showLoginForm($msg = null)
     {
 
-        $this->elementStart('div', array('class' => 'content'));
+        $this->elementStart('div', array('id' => 'content'));
         $this->element('h1', null, _('Login'));
 
         if ($msg) {
@@ -330,6 +317,7 @@ class FacebookAction extends Action
         $this->elementEnd('ul');
 
         $this->submit('submit', _('Login'));
+       $this->elementEnd('fieldset');
         $this->elementEnd('form');
 
         $this->elementStart('p');
@@ -338,6 +326,7 @@ class FacebookAction extends Action
         $this->elementEnd('p');
 
         $this->elementEnd('div');
+        $this->elementEnd('div');
 
     }
     
@@ -347,42 +336,70 @@ class FacebookAction extends Action
 
         // Need to include inline CSS for styling the Profile box
 
+       $app_props = $this->facebook->api_client->Admin_getAppProperties(array('icon_url'));
+       $icon_url = $app_props['icon_url'];
+
         $style = '<style>
+        .entry-title *,
+        .entry-content * {
+        font-size:14px;
+        font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
+        }
+        .entry-title a,
+        .entry-content a {
+        color:#002E6E;
+        }
+
          .entry-title .vcard .photo {
          float:left;
          display:inline;
+        margin-right:11px;
+        margin-bottom:11px
          }
-         .entry-title .vcard .nickname {
-         margin-left:5px;
-         }
-
+        .entry-title {
+        margin-bottom:11px;
+        }
          .entry-title p.entry-content {
          display:inline;
-         margin-left:5px;
+        margin-left:5px;
          }
 
+        div.entry-content {
+        clear:both;
+        }
          div.entry-content dl,
          div.entry-content dt,
          div.entry-content dd {
          display:inline;
+        text-transform:lowercase;
          }
 
-         div.entry-content dt,
-         div.entry-content dd {
-         display:inline;
-         margin-left:5px;
+         div.entry-content dd,
+        div.entry-content .device dt {
+        margin-left:0;
+        margin-right:5px;
          }
-         div.entry-content dl.timestamp dt {
+         div.entry-content dl.timestamp dt,
+        div.entry-content dl.response dt {
          display:none;
          }
          div.entry-content dd a {
          display:inline-block;
          }
+
+        #facebook_laconica_app {
+        text-indent:-9999px;
+        height:16px;
+        width:16px;
+        display:block;
+        background:url('.$icon_url.') no-repeat 0 0;
+        float:right;
+        }
          </style>';        
 
         $this->xw->openMemory();
 
-        $item = new FacebookNoticeListItem($notice, $this);
+        $item = new FacebookProfileBoxNotice($notice, $this);
         $item->show();
 
         $fbml = "<fb:wide>$style " . $this->xw->outputMemory(false) . "</fb:wide>";
@@ -465,8 +482,6 @@ class FacebookAction extends Action
             $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->showPage(_('That\'s too long. Max notice size is 140 chars.'));
                 return;
             }
@@ -539,6 +554,18 @@ class FacebookNoticeForm extends NoticeForm
 
 class FacebookNoticeList extends NoticeList
 {
+    
+    /**
+     * constructor
+     *
+     * @param Notice $notice stream of notices from DB_DataObject
+     */
+
+    function __construct($notice, $out=null)
+    {
+        parent::__construct($notice, $out);
+    }
+    
     /**
      * show the list of notices
      *
@@ -593,6 +620,20 @@ class FacebookNoticeList extends NoticeList
 
 class FacebookNoticeListItem extends NoticeListItem
 {    
+
+    /**
+     * constructor
+     *
+     * Also initializes the profile attribute.
+     *
+     * @param Notice $notice The notice we'll display
+     */
+
+    function __construct($notice, $out=null)
+    {
+        parent::__construct($notice, $out);
+    }
+
     /**
      * recipe function for displaying a single notice in the Facebook App.
      *
@@ -645,3 +686,65 @@ class FacebookNoticeListItem extends NoticeListItem
     }
 
 }
+
+
+class FacebookProfileBoxNotice extends FacebookNoticeListItem
+{    
+    
+    /**
+     * constructor
+     *
+     * Also initializes the profile attribute.
+     *
+     * @param Notice $notice The notice we'll display
+     */
+
+    function __construct($notice, $out=null)
+    {
+        parent::__construct($notice, $out);
+    }
+    
+    /**
+     * Recipe function for displaying a single notice in the 
+     * Facebook App's Profile
+     *
+     * @return void
+     */
+
+    function show()
+    {
+
+        $this->out->elementStart('div', 'entry-title');
+        $this->showAuthor();
+        $this->showContent();
+        $this->out->elementEnd('div');
+
+        $this->out->elementStart('div', 'entry-content');
+
+        $this->showNoticeLink();
+        $this->showNoticeSource();
+        $this->showReplyTo();
+        $this->out->elementEnd('div');
+        
+        $this->showAppLink();
+
+    }
+
+    function showAppLink() 
+    {
+        
+        $this->facebook = getFacebook();
+
+        $app_props = $this->facebook->api_client->Admin_getAppProperties(
+                array('canvas_name', 'application_name'));
+
+        $this->app_uri = 'http://apps.facebook.com/' . $app_props['canvas_name'];
+        $this->app_name = $app_props['application_name'];
+        
+        $this->out->elementStart('a', array('id' => 'facebook_laconica_app',
+                                            'href' => $this->app_uri));
+        $this->out->text($this->app_name);
+        $this->out->elementEnd('a');
+    }
+
+}