]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Actually crop your avatar when hitting 'crop' button on profile
authorZach Copley <zach@controlyourself.ca>
Fri, 12 Dec 2008 04:30:18 +0000 (23:30 -0500)
committerZach Copley <zach@controlyourself.ca>
Fri, 12 Dec 2008 04:30:18 +0000 (23:30 -0500)
darcs-hash:20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz

_darcs/inventory
_darcs/patches/20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz [new file with mode: 0644]
_darcs/patches/unrevert
_darcs/pristine/classes/Avatar.php
_darcs/pristine/classes/Profile.php
_darcs/tentative_inventory
classes/Avatar.php
classes/Profile.php

index 0b89ad9627ce23e530b32ae1f7da9d44467e12bb..da63f8216a3766f9ab9b16fe3a3b08c90fce8395 100644 (file)
@@ -122,4 +122,6 @@ Zach Copley <zach@controlyourself.ca>**20090105045603]
 [Jcrop v2 (POST cropping to be completed)
 csarven@controlyourself.ca**20081210021607] 
 [Jcrop CSS updates to original/preview views
-csarven@controlyourself.ca**20081210025922] 
\ No newline at end of file
+csarven@controlyourself.ca**20081210025922] 
+[Actually crop your avatar when hitting 'crop' button on profile
+Zach Copley <zach@controlyourself.ca>**20081212043018] 
\ No newline at end of file
diff --git a/_darcs/patches/20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz b/_darcs/patches/20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz
new file mode 100644 (file)
index 0000000..51acb50
Binary files /dev/null and b/_darcs/patches/20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz differ
index 3748132458388a635428311489f19ebc61d2498d..f112ac9a51d022cdd6a905c12e2d1ccc1c735a78 100644 (file)
@@ -2,43 +2,45 @@
 New patches:
 
 [unrevert
-anonymous**20090106212612] {
-hunk ./actions/profilesettings.php 140
-                                            common_local_url('profilesettings')));
-         common_hidden('token', common_session_token());
+anonymous**20090106212613] {
+hunk ./actions/profilesettings.php 57
+             return;
+         }
  
 +v v v v v v v
-               if ($original) {
-hunk ./actions/profilesettings.php 142
-+                      common_element_start('div', array('id'=>'avatar_original', 'class'=>'avatar_view'));
-+                      common_element('h3', null, _("Original:"));
-+                      common_element_start('div', array('id'=>'avatar_original_view'));
-                       common_element('img', array('src' => $original->url,
-                                                                               'class' => 'avatar original',
-                                                                               'width' => $original->width,
-hunk ./actions/profilesettings.php 150
-                                                                               'height' => $original->height,
-                                                                               'alt' => $user->nickname));
-+                      common_element_end('div');
-+                      common_element_end('div');
+               if ($this->arg('save')) {
+                       $this->save_profile();
+               } else if ($this->arg('upload')) {
+hunk ./actions/profilesettings.php 62
+                       $this->upload_avatar();
++              } else if ($this->arg('crop')) {
++                      $this->crop_avatar();
+               } else if ($this->arg('changepass')) {
+                       $this->change_password();
+hunk ./actions/profilesettings.php 66
++              } else {
++                      $this->show_form(_('Unexpected form submission.'));
                }
-hunk ./actions/profilesettings.php 153
+hunk ./actions/profilesettings.php 69
 +*************
-+        if ($original) {
-+            common_element('img', array('src' => $original->url,
-+                                        'class' => 'avatar original',
-+                                        'width' => $original->width,
-+                                        'height' => $original->height,
-+                                        'alt' => $user->nickname));
++        if ($this->arg('save')) {
++            $this->save_profile();
++        } else if ($this->arg('upload')) {
++            $this->upload_avatar();
++        } else if ($this->arg('changepass')) {
++            $this->change_password();
 +        }
 +^ ^ ^ ^ ^ ^ ^
  
+     }
+hunk ./actions/profilesettings.php 164
          $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
  
-hunk ./actions/profilesettings.php 165
 +v v v v v v v
                if ($avatar) {
-hunk ./actions/profilesettings.php 167
+hunk ./actions/profilesettings.php 166
 -                      common_element('img', array('src' => $avatar->url,
 +                      common_element_start('div', array('id'=>'avatar_preview', 'class'=>'avatar_view'));
 +                      common_element('h3', null, _("Preview:"));
@@ -47,7 +49,7 @@ hunk ./actions/profilesettings.php 167
                                                                                'class' => 'avatar profile',
                                                                                'width' => AVATAR_PROFILE_SIZE,
                                                                                'height' => AVATAR_PROFILE_SIZE,
-hunk ./actions/profilesettings.php 175
+hunk ./actions/profilesettings.php 174
                                                                                'alt' => $user->nickname));
 +                      common_element_end('div');
 +                      common_element_end('div');
@@ -57,9 +59,9 @@ hunk ./actions/profilesettings.php 175
 +                                                                                        'type' => 'hidden',
 +                                                                                        'id' => $crop_info));
 +                      }
-+                      common_submit('avatar_crop', _('Crop'));
++                      common_submit('crop', _('Crop'));
                }
-hunk ./actions/profilesettings.php 185
+hunk ./actions/profilesettings.php 184
 +*************
 +        if ($avatar) {
 +            common_element('img', array('src' => $avatar->url,
@@ -72,10 +74,171 @@ hunk ./actions/profilesettings.php 185
  
  
          common_element('input', array('name' => 'MAX_FILE_SIZE',
+hunk ./actions/profilesettings.php 429
+             $this->show_form(_('Failed updating avatar.'));
+         }
++v v v v v v v
+               @unlink($_FILES['avatarfile']['tmp_name']);
+       }
+hunk ./actions/profilesettings.php 433
++      function crop_avatar() {
++
++              $user = common_current_user();
++              $profile = $user->getProfile();
++
++              $x = $this->arg('avatar_crop_x');
++              $y = $this->arg('avatar_crop_y');
++              $w = $this->arg('avatar_crop_w');
++              $h = $this->arg('avatar_crop_h');
++
++              if ($profile->crop_avatars($x, $y, $w, $h)) {
++                      $this->show_form(_('Avatar updated.'), true);
++              } else {
++                      $this->show_form(_('Failed updating avatar.'));
++              }
++      }
++*************
++        @unlink($_FILES['avatarfile']['tmp_name']);
++    }
++^ ^ ^ ^ ^ ^ ^
++
+     function nickname_exists($nickname)
+     {
+         $user = common_current_user();
+hunk ./classes/Avatar.php 82
+         }
+     }
++v v v v v v v
++      function scale_and_crop($size, $x, $y, $w, $h) {
++
++              $image_s = imagecreatetruecolor($size, $size);
++              $image_a = $this->to_image();
++
++              # Retain alpha channel info if possible for .pngs
++              $background = imagecolorallocate($image_s, 0, 0, 0);
++              ImageColorTransparent($image_s, $background);
++              imagealphablending($image_s, false);
++
++              imagecopyresized($image_s, $image_a, 0, 0, $x, $y, $size, $size, $w, $h);
++
++              $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png";
++
++              $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp());
++
++              if ($this->mediatype == 'image/jpeg') {
++                      imagejpeg($image_s, common_avatar_path($filename));
++              } else {
++                      imagepng($image_s, common_avatar_path($filename));
++              }
++
++              $cropped = DB_DataObject::factory('avatar');
++              $cropped->profile_id = $this->profile_id;
++              $cropped->width = $size;
++              $cropped->height = $size;
++              $cropped->original = false;
++              $cropped->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
++              $cropped->filename = $filename;
++              $cropped->url = common_avatar_url($filename);
++              $cropped->created = DB_DataObject_Cast::dateTime(); # current time
++
++              if ($cropped->insert()) {
++                      return $cropped;
++              } else {
++                      return NULL;
++              }
++      }
++
+       function to_image() {
+               $filepath = common_avatar_path($this->filename);
+               if ($this->mediatype == 'image/gif') {
+hunk ./classes/Avatar.php 138
+       function &pkeyGet($kv) {
+               return Memcached_DataObject::pkeyGet('Avatar', $kv);
+       }
++*************
++    function to_image()
++    {
++        $filepath = common_avatar_path($this->filename);
++        if ($this->mediatype == 'image/gif') {
++            return imagecreatefromgif($filepath);
++        } else if ($this->mediatype == 'image/jpeg') {
++            return imagecreatefromjpeg($filepath);
++        } else if ($this->mediatype == 'image/png') {
++            return imagecreatefrompng($filepath);
++        } else {
++            return null;
++        }
++    }
++    
++    function &pkeyGet($kv)
++    {
++        return Memcached_DataObject::pkeyGet('Avatar', $kv);
++    }
++^ ^ ^ ^ ^ ^ ^
+ }
+hunk ./classes/Profile.php 124
+         return $avatar;
+     }
+-      function delete_avatars() {
++v v v v v v v
++      function crop_avatars($x, $y, $w, $h) {
++
++              $avatar = $this->getOriginalAvatar();
++              $this->delete_avatars(false); # don't delete original
++
++              foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
++                      # We don't do a scaled one if original is our scaled size
++                      if (!($avatar->width == $size && $avatar->height == $size)) {
++                              $s = $avatar->scale_and_crop($size, $x, $y, $w, $h);
++                              if (!$s) {
++                                      return NULL;
++                              }
++                      }
++              }
++              return true;
++      }
++
++      function delete_avatars($original=true) {
+               $avatar = new Avatar();
+               $avatar->profile_id = $this->id;
+               $avatar->find();
+hunk ./classes/Profile.php 147
+               while ($avatar->fetch()) {
++                      if ($avatar->original) {
++                              if ($original == false) {
++                                      continue;
++                              }
++                      }
+                       $avatar->delete();
+               }
+               return true;
+hunk ./classes/Profile.php 156
+       }
++*************
++    function delete_avatars()
++    {
++        $avatar = new Avatar();
++        $avatar->profile_id = $this->id;
++        $avatar->find();
++        while ($avatar->fetch()) {
++            $avatar->delete();
++        }
++        return true;
++    }
++^ ^ ^ ^ ^ ^ ^
+     function getBestName()
+     {
 }
 
 Context:
 
+[Actually crop your avatar when hitting 'crop' button on profile
+Zach Copley <zach@controlyourself.ca>**20081212043018] 
 [Jcrop CSS updates to original/preview views
 csarven@controlyourself.ca**20081210025922] 
 [Jcrop v2 (POST cropping to be completed)
@@ -201,4 +364,4 @@ Sarven Capadisli <csarven@controlyourself.ca>**20081218003302
 [TAG 0.6.4.1
 Evan Prodromou <evan@controlezvous.ca>**20081220204906] 
 Patch bundle hash:
-b75aa06ac49c2ff8a9fa803da998c6ea5f5c1d17
+316173068f974bea2f9537d45d347f45c12050bc
index 3c754ec2d52385907372e512ee31afa07a077e3a..4fdb99d35e7e306a2c37ff3207c1760e9f66bee9 100644 (file)
@@ -79,22 +79,20 @@ class Avatar extends Memcached_DataObject
         }
     }
 
-    function to_image()
-    {
-        $filepath = common_avatar_path($this->filename);
-        if ($this->mediatype == 'image/gif') {
-            return imagecreatefromgif($filepath);
-        } else if ($this->mediatype == 'image/jpeg') {
-            return imagecreatefromjpeg($filepath);
-        } else if ($this->mediatype == 'image/png') {
-            return imagecreatefrompng($filepath);
-        } else {
-            return null;
-        }
-    }
-    
-    function &pkeyGet($kv)
-    {
-        return Memcached_DataObject::pkeyGet('Avatar', $kv);
-    }
+       function to_image() {
+               $filepath = common_avatar_path($this->filename);
+               if ($this->mediatype == 'image/gif') {
+                       return imagecreatefromgif($filepath);
+               } else if ($this->mediatype == 'image/jpeg') {
+                       return imagecreatefromjpeg($filepath);
+               } else if ($this->mediatype == 'image/png') {
+                       return imagecreatefrompng($filepath);
+               } else {
+                       return NULL;
+               }
+       }
+       
+       function &pkeyGet($kv) {
+               return Memcached_DataObject::pkeyGet('Avatar', $kv);
+       }
 }
index fb6ff90f1e484adb1cf24cae9ea4eced02e13fed..3b6ac1d7f2438422dc39818855963510bf882775 100644 (file)
@@ -121,16 +121,15 @@ class Profile extends Memcached_DataObject
         return $avatar;
     }
 
-    function delete_avatars()
-    {
-        $avatar = new Avatar();
-        $avatar->profile_id = $this->id;
-        $avatar->find();
-        while ($avatar->fetch()) {
-            $avatar->delete();
-        }
-        return true;
-    }
+       function delete_avatars() {
+               $avatar = new Avatar();
+               $avatar->profile_id = $this->id;
+               $avatar->find();
+               while ($avatar->fetch()) {
+                       $avatar->delete();
+               }
+               return true;
+       }
 
     function getBestName()
     {
index 0b89ad9627ce23e530b32ae1f7da9d44467e12bb..da63f8216a3766f9ab9b16fe3a3b08c90fce8395 100644 (file)
@@ -122,4 +122,6 @@ Zach Copley <zach@controlyourself.ca>**20090105045603]
 [Jcrop v2 (POST cropping to be completed)
 csarven@controlyourself.ca**20081210021607] 
 [Jcrop CSS updates to original/preview views
-csarven@controlyourself.ca**20081210025922] 
\ No newline at end of file
+csarven@controlyourself.ca**20081210025922] 
+[Actually crop your avatar when hitting 'crop' button on profile
+Zach Copley <zach@controlyourself.ca>**20081212043018] 
\ No newline at end of file
index 3c754ec2d52385907372e512ee31afa07a077e3a..4fdb99d35e7e306a2c37ff3207c1760e9f66bee9 100644 (file)
@@ -79,22 +79,20 @@ class Avatar extends Memcached_DataObject
         }
     }
 
-    function to_image()
-    {
-        $filepath = common_avatar_path($this->filename);
-        if ($this->mediatype == 'image/gif') {
-            return imagecreatefromgif($filepath);
-        } else if ($this->mediatype == 'image/jpeg') {
-            return imagecreatefromjpeg($filepath);
-        } else if ($this->mediatype == 'image/png') {
-            return imagecreatefrompng($filepath);
-        } else {
-            return null;
-        }
-    }
-    
-    function &pkeyGet($kv)
-    {
-        return Memcached_DataObject::pkeyGet('Avatar', $kv);
-    }
+       function to_image() {
+               $filepath = common_avatar_path($this->filename);
+               if ($this->mediatype == 'image/gif') {
+                       return imagecreatefromgif($filepath);
+               } else if ($this->mediatype == 'image/jpeg') {
+                       return imagecreatefromjpeg($filepath);
+               } else if ($this->mediatype == 'image/png') {
+                       return imagecreatefrompng($filepath);
+               } else {
+                       return NULL;
+               }
+       }
+       
+       function &pkeyGet($kv) {
+               return Memcached_DataObject::pkeyGet('Avatar', $kv);
+       }
 }
index fb6ff90f1e484adb1cf24cae9ea4eced02e13fed..3b6ac1d7f2438422dc39818855963510bf882775 100644 (file)
@@ -121,16 +121,15 @@ class Profile extends Memcached_DataObject
         return $avatar;
     }
 
-    function delete_avatars()
-    {
-        $avatar = new Avatar();
-        $avatar->profile_id = $this->id;
-        $avatar->find();
-        while ($avatar->fetch()) {
-            $avatar->delete();
-        }
-        return true;
-    }
+       function delete_avatars() {
+               $avatar = new Avatar();
+               $avatar->profile_id = $this->id;
+               $avatar->find();
+               while ($avatar->fetch()) {
+                       $avatar->delete();
+               }
+               return true;
+       }
 
     function getBestName()
     {