Skip to content

Commit

Permalink
#1044: Add maximum_image_size property to containers
Browse files Browse the repository at this point in the history
  • Loading branch information
ercanozkaya committed Dec 7, 2016
1 parent cf7da31 commit e7c5fb5
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 9 deletions.
28 changes: 28 additions & 0 deletions database/behavior/thumbnail.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,38 @@ public function __construct(KObjectConfig $config)
{
parent::__construct($config);

$this->addCommandCallback('after.save' , 'resizeIfNeeded');
$this->addCommandCallback('after.save' , 'saveThumbnail');
$this->addCommandCallback('after.delete', 'deleteThumbnail');
}

public function resizeIfNeeded()
{
$available_extensions = array('jpg', 'jpeg', 'gif', 'png');

if ($this->isImage()
&& $this->getContainer()->getParameters()->maximum_image_size
&& in_array(strtolower($this->extension), $available_extensions))
{
$parameters = $this->getContainer()->getParameters();
$size = $parameters['maximum_image_size'];

if (!empty($size))
{
$current_size = @getimagesize($this->fullpath);

if ($current_size && $current_size[0] > $size || $current_size[1] > $size)
{
$thumb = $this->getObject('com:files.model.entity.thumbnail', [
'size' => ['x' => $size, 'y' => 0]
]);
$thumb->source = $this;
$thumb->generateThumbnail(true);
}
}
}
}

public function saveThumbnail()
{
$result = null;
Expand Down
14 changes: 9 additions & 5 deletions model/entity/thumbnail.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ protected function _initialize(KObjectConfig $config)
parent::_initialize($config);
}

public function generateThumbnail()
public function generateThumbnail($in_place = false)
{
@ini_set('memory_limit', '256M');

Expand All @@ -63,10 +63,14 @@ public function generateThumbnail()
$size = $image_size->scale(1/($larger/$scale));
}

$string = (string) $image->thumbnail($size, \Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND);
$string = sprintf('data:%s;base64,%s', $source->mimetype, base64_encode($string));

return $string;
if ($in_place) {
return $image->resize($size)->save();
} else {
$string = (string) $image->thumbnail($size, \Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND);
$string = sprintf('data:%s;base64,%s', $source->mimetype, base64_encode($string));

return $string;
}
}
catch (Exception $e) {
return false;
Expand Down
17 changes: 13 additions & 4 deletions resources/assets/js/uploader/koowa.uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,12 +313,21 @@ $.widget("koowa.uploader", {
var container = this.options.container;

if (typeof container.parameters === 'object') {
if (container.parameters.maximum_size) {
this.options.maximum_size = container.parameters.maximum_size;
var parameters = container.parameters;

if (parameters.maximum_size) {
this.options.maximum_size = parameters.maximum_size;
}

if (typeof parameters.allowed_extensions === 'object') {
this.options.filters.extensions = parameters.allowed_extensions;
}

if (typeof container.parameters.allowed_extensions === 'object') {
this.options.filters.extensions = container.parameters.allowed_extensions;
if (parameters.maximum_image_size) {
this.options.resize = {
'width': parameters.maximum_image_size,
'height': parameters.maximum_image_size
};
}
}

Expand Down

0 comments on commit e7c5fb5

Please sign in to comment.