]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Improved animated image thumbnail freedom of choice
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 26 Jan 2015 15:33:39 +0000 (16:33 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 26 Jan 2015 15:33:39 +0000 (16:33 +0100)
Default is now to take still thumbnails of animated GIFs and then
show them as originals in an AttachmentListItem. The still frames
are mostly used with front-ends like qvitter.

classes/File.php
lib/attachmentlistitem.php
lib/default.php

index 58b1b0ed8943f6ac245bfa257c77dabfcda75e6e..ce2f9401618286bcfd9485f8f3682add5c8df0f2 100644 (file)
@@ -382,12 +382,16 @@ class File extends Managed_DataObject
      *
      * @return File_thumbnail
      */
-    public function getThumbnail($width=null, $height=null, $crop=false)
+    public function getThumbnail($width=null, $height=null, $crop=false, $force_still=true)
     {
         // Get some more information about this file through our ImageFile class
         $image = ImageFile::fromFileObject($this);
-        if ($image->animated && is_null(common_config('thumbnail', 'animated'))) {
-            throw new UseFileAsThumbnailException($this->id);
+        if ($image->animated && !common_config('thumbnail', 'animated')) {
+            // null  means "always use file as thumbnail"
+            // false means you get choice between frozen frame or original when calling getThumbnail
+            if (is_null(common_config('thumbnail', 'animated')) || !$force_still) {
+                throw new UseFileAsThumbnailException($this->id);
+            }
         }
 
         if ($width === null) {
index 3764c827cb2f7ea459f4db9ceb99601177274531..919727bc1f8ff69beab70f7c573bdd6efad20974 100644 (file)
@@ -113,7 +113,8 @@ class AttachmentListItem extends Widget
                 case 'image/jpg':
                 case 'image/jpeg':
                     try {
-                        $thumb = $this->attachment->getThumbnail();
+                        // Tell getThumbnail that we can show an animated image if it has one (4th arg, "force_still")
+                        $thumb = $this->attachment->getThumbnail(null, null, false, false);
                         $this->out->element('img', array('class'=>'u-photo', 'src' => $thumb->getUrl(), 'alt' => ''));
                     } catch (UseFileAsThumbnailException $e) {
                         $this->out->element('img', array('class'=>'u-photo', 'src' => $e->file->getUrl(), 'alt' => $e->file->title));
index 9ca7760280a4d3ceb3a77e6ac2ecf0f6199da327..396e409e6de5917123918412fdd6601937a6edf8 100644 (file)
@@ -258,7 +258,7 @@ $default =
               'maxsize' => 1000,     // thumbs with an edge larger than this will not be generated
               'width' => 450,
               'height' => 600,
-              'animated' => null), // null="UseFileAsThumbnail", false="take still image". true requires ImageMagickPlugin
+              'animated' => false), // null="UseFileAsThumbnail", false="can use still frame". true requires ImageMagickPlugin
         'application' =>
         array('desclimit' => null),
         'group' =>