]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Creating albums and uploading to them
authorMax Shinn <trombonechamp@gmail.com>
Tue, 28 Dec 2010 13:33:06 +0000 (07:33 -0600)
committerMax Shinn <trombonechamp@gmail.com>
Tue, 28 Dec 2010 13:33:06 +0000 (07:33 -0600)
plugins/GNUsocialPhotos/actions/photoupload.php
plugins/GNUsocialPhotos/classes/gnusocialphotoalbum.php

index 42bbb633a32f97d41835f80a3ca8863b2da0f4bd..28405bc58fcc4f6f522191de3e9d4f438f1b2613 100644 (file)
@@ -59,6 +59,7 @@ class PhotouploadAction extends Action
 
     function showContent()
     {
+        //Upload a photo
         if(empty($this->user)) {
             $this->element('p', array(), 'You are not logged in.');
         } else {
@@ -73,14 +74,34 @@ class PhotouploadAction extends Action
             $this->elementEnd('li');
             //$this->element('br');
             $this->elementStart('li');
-            $this->input('phototitle', "Title", null, "The title of the photo. (Optional)");
+            $this->input('phototitle', _("Title"), null, _("The title of the photo. (Optional)"));
             $this->elementEnd('li');
             $this->elementStart('li');
-            $this->textarea('photo_description', "Description", null, "A description of the photo. (Optional)");
+            $this->textarea('photo_description', _("Description"), null, _("A description of the photo. (Optional)"));
+            $this->elementEnd('li');
+            $this->elementStart('li');
+            $this->dropdown('album', _("Album"), $this->albumList(), _("The album in which to place this photo"), false);
             $this->elementEnd('li');
             $this->elementEnd('ul');
             $this->submit('upload', _('Upload'));
             $this->elementEnd('form');
+            $this->element('br');
+
+            //Create a new album
+            $this->element('h3', array(), _("Create a new album"));
+            $this->elementStart('form', array('method' => 'post',
+                                              'action' =>common_local_url('photoupload')));
+            $this->elementStart('ul', 'form_data');
+            $this->elementStart('li');
+            $this->input('album_name', _("Title"), null, _("The title of the album."));
+            $this->elementEnd('li');
+            $this->elementStart('li');
+            $this->textarea('album_description', _("Description"), null, _("A description of the album. (Optional)"));
+            $this->elementEnd('li');
+            $this->elementEnd('ul');
+            $this->submit('create', _('Create'));
+            $this->elementEnd('form');
+            
         }
     }
 
@@ -111,19 +132,38 @@ class PhotouploadAction extends Action
             return;
         } */
 
-        if($this->arg('upload')) {
+        if ($this->arg('upload')) {
             $this->uploadPhoto();
         }
+        if ($this->arg('create')) {
+            $this->createAlbum();
+        }
     }
 
     function showForm($msg, $success=false)
-    { 
+    {
         $this->msg = $msg;
         $this->success = $success;
 
 //        $this->showPage();
     }
 
+    function albumList() 
+    {
+        $cur = common_current_user();
+        $album = new GNUsocialPhotoAlbum();
+        $album->user_id = $cur->id;
+
+        $albumlist = array();
+        if (!$album->find()) {
+            GNUsocialPhotoAlbum::newAlbum($cur->id, 'Default');
+        }
+        while ($album->fetch()) {
+            $albumlist[$album->album_id] = $album->album_name;
+        }
+        return $albumlist;
+    }
+
     function uploadPhoto()
     {
         $cur = common_current_user();
@@ -154,10 +194,24 @@ class PhotouploadAction extends Action
         $profile_id = $cur->id;
        
         // TODO: proper multiple album support 
-        $album = GNUsocialPhotoAlbum::staticGet('profile_id', $profile_id);
-        if(!$album)
-            $album = GNUsocialPhotoAlbum::newAlbum($profile_id, 'Default');
+        $album = GNUsocialPhotoAlbum::staticGet('album_id', $this->trimmed('album'));
+        if ($album->profile_id != $profile_id) {
+            $this->showForm(_('Error: This is not your album!'));
+            return;
+        }
         GNUsocialPhoto::saveNew($profile_id, $album->album_id, $thumb_uri, $uri, 'web', false, $title, $photo_description);
     }
 
+    function createAlbum()
+    {
+        $cur = common_current_user();
+        if(empty($cur)) {
+            return;
+        }
+
+        $album_name = $this->trimmed('album_name');
+        $album_description = $this->trimmed('album_description');
+       
+        GNUsocialPhotoAlbum::newAlbum($cur->id, $album_name, $album_description);
+    }
 }
index 13c7663a672b76082add78a0fc461d15826909fb..ed18f1f338b2a22faa6df9f47fdd34cd7650c107 100644 (file)
@@ -36,9 +36,10 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
 class GNUsocialPhotoAlbum extends Memcached_DataObject
 {
     public $__table = 'GNUsocialPhotoAlbum';
-    public $album_id;       // int(11) -- Unique identifier for the album
-    public $profile_id;     // int(11) -- Profile ID for the owner of the album
-    public $album_name;     // varchar(256) -- Title for this album
+    public $album_id;          // int(11) -- Unique identifier for the album
+    public $profile_id;        // int(11) -- Profile ID for the owner of the album
+    public $album_name;        // varchar(256) -- Title for this album
+    public $album_description; // text -- A description of the album
     
 
     function staticGet($k,$v=NULL)
@@ -52,7 +53,8 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
     {
         return array('album_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
                      'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'album_name' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL);
+                     'album_name' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+                     'album_description' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL);
     }
     
     function keys()
@@ -72,7 +74,7 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
         return array('album_id', true, false);
     }
 
-    static function newAlbum($profile_id, $album_name)
+    static function newAlbum($profile_id, $album_name, $album_description)
     {
         //TODO: Should use foreign key instead...
         if (!Profile::staticGet('id', $profile_id)){
@@ -83,6 +85,7 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
         $album = new GNUsocialPhotoAlbum();
         $album->profile_id = $profile_id;
         $album->album_name = $album_name;
+        $album->album_description = $album_description;
        
         $album->album_id = $album->insert();
         if (!$album->album_id){