migrate image rotate to AssetHelper
This commit is contained in:
parent
ca1a22995a
commit
e8d600aa29
2 changed files with 124 additions and 62 deletions
|
|
@ -185,6 +185,10 @@ override getHelpers => sub {
|
||||||
className => 'WebGUI::AssetHelper::Image::Resize',
|
className => 'WebGUI::AssetHelper::Image::Resize',
|
||||||
label => 'Resize Image',
|
label => 'Resize Image',
|
||||||
};
|
};
|
||||||
|
$helpers->{rotate} = {
|
||||||
|
className => 'WebGUI::AssetHelper::Image::Rotate',
|
||||||
|
label => 'Rotate Image',
|
||||||
|
};
|
||||||
|
|
||||||
return $helpers;
|
return $helpers;
|
||||||
};
|
};
|
||||||
|
|
@ -291,7 +295,6 @@ override setFile => sub {
|
||||||
# if ($self->filename) {
|
# if ($self->filename) {
|
||||||
# my $ac = $self->getAdminConsole;
|
# my $ac = $self->getAdminConsole;
|
||||||
# These are asset helpers now, not functions
|
# These are asset helpers now, not functions
|
||||||
# $ac->addSubmenuItem($self->getUrl('func=rotate'), $i18n->get("rotate image"));
|
|
||||||
# $ac->addSubmenuItem($self->getUrl('func=crop'), $i18n->get("crop image"));
|
# $ac->addSubmenuItem($self->getUrl('func=crop'), $i18n->get("crop image"));
|
||||||
# $ac->addSubmenuItem($self->getUrl('func=annotate'), $i18n->get("annotate image"));
|
# $ac->addSubmenuItem($self->getUrl('func=annotate'), $i18n->get("annotate image"));
|
||||||
# $ac->addSubmenuItem($self->getUrl('func=undo'), $i18n->get("undo image"));
|
# $ac->addSubmenuItem($self->getUrl('func=undo'), $i18n->get("undo image"));
|
||||||
|
|
@ -545,67 +548,6 @@ sub annotate_js {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 www_rotate
|
|
||||||
|
|
||||||
Displays a form to the user to rotate their image. If the C<Rotate> form variable
|
|
||||||
is true, does the rotation as well.
|
|
||||||
|
|
||||||
Returns the user to the roate form.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
sub www_rotate {
|
|
||||||
my $self = shift;
|
|
||||||
my $session = $self->session;
|
|
||||||
return $session->privilege->insufficient() unless $self->canEdit;
|
|
||||||
return $session->privilege->locked() unless $self->canEditIfLocked;
|
|
||||||
if (defined $session->form->process("Rotate")) {
|
|
||||||
my $tag = WebGUI::VersionTag->getWorking( $session );
|
|
||||||
my $newSelf = $self->addRevision({ tagId => $tag->getId, status => "pending" });
|
|
||||||
$newSelf->setVersionLock;
|
|
||||||
delete $newSelf->{_storageLocation};
|
|
||||||
$newSelf->getStorageLocation->rotate($newSelf->filename,$session->form->process("Rotate"));
|
|
||||||
$newSelf->setSize($newSelf->getStorageLocation->getFileSize($newSelf->filename));
|
|
||||||
$self = $newSelf;
|
|
||||||
$self->generateThumbnail;
|
|
||||||
WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { allowComments => 0 });
|
|
||||||
}
|
|
||||||
|
|
||||||
my ($x, $y) = $self->getStorageLocation->getSizeInPixels($self->filename);
|
|
||||||
|
|
||||||
##YUI specific datatable CSS
|
|
||||||
my ($style, $url) = $session->quick(qw(style url));
|
|
||||||
|
|
||||||
my $img_name = $self->getStorageLocation->getUrl($self->filename);
|
|
||||||
my $img_file = $self->filename;
|
|
||||||
my $image = '<div align="center" class="yui-skin-sam"><img src="'.$self->getStorageLocation->getUrl($self->filename).'" style="border-style:none;" alt="'.$self->filename.'" id="yui_img" /></div>';
|
|
||||||
|
|
||||||
my $i18n = WebGUI::International->new($session,"Asset_Image");
|
|
||||||
$self->getAdminConsole->addSubmenuItem($self->getUrl('func=edit'),$i18n->get("edit image"));
|
|
||||||
my $f = WebGUI::FormBuilder->new($session);
|
|
||||||
$f->addField( "hidden",
|
|
||||||
-name=>"func",
|
|
||||||
-value=>"rotate"
|
|
||||||
);
|
|
||||||
$f->addField( "button",
|
|
||||||
-value=>"Left",
|
|
||||||
-extras=>qq(onclick="var deg = document.getElementById('Rotate_formId').value; deg = parseInt(deg) + 90; document.getElementById('Rotate_formId').value = deg;"),
|
|
||||||
);
|
|
||||||
$f->addField( "button",
|
|
||||||
-value=>"Right",
|
|
||||||
-extras=>qq(onclick="var deg = document.getElementById('Rotate_formId').value; deg = parseInt(deg) - 90; document.getElementById('Rotate_formId').value = deg;"),
|
|
||||||
);
|
|
||||||
$f->addField( "integer",
|
|
||||||
-label=>$i18n->get('degree'),
|
|
||||||
-name=>"Rotate",
|
|
||||||
-value=>0,
|
|
||||||
);
|
|
||||||
$f->addField( "submit", name => "submit" );
|
|
||||||
return $self->getAdminConsole->render($f->toHtml.$image,$i18n->get("rotate image"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
|
|
||||||
=head2 www_crop
|
=head2 www_crop
|
||||||
|
|
||||||
Display a form that allows the user to Crop their images. Also does the
|
Display a form that allows the user to Crop their images. Also does the
|
||||||
|
|
|
||||||
120
lib/WebGUI/AssetHelper/Image/Rotate.pm
Normal file
120
lib/WebGUI/AssetHelper/Image/Rotate.pm
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
package WebGUI::AssetHelper::Image::Rotate;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Moose;
|
||||||
|
extends 'WebGUI::AssetHelper';
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 process ( )
|
||||||
|
|
||||||
|
Open a dialog to rotate the image
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub process {
|
||||||
|
my ( $self ) = @_;
|
||||||
|
my $asset = $self->asset;
|
||||||
|
my $session = $self->session;
|
||||||
|
|
||||||
|
my $i18n = WebGUI::International->new($session, 'WebGUI');
|
||||||
|
if (! $asset->canEdit) {
|
||||||
|
return { error => $i18n->get('38'), };
|
||||||
|
}
|
||||||
|
elsif ( ! $asset->canEditIfLocked ) {
|
||||||
|
return { error => $i18n->get('asset locked') };
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
openDialog => $self->getUrl( 'rotate' )
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_rotate
|
||||||
|
|
||||||
|
Displays a form for the user to rotate this image.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_rotate {
|
||||||
|
my ( $self ) = @_;
|
||||||
|
my $asset = $self->asset;
|
||||||
|
my $session = $self->session;
|
||||||
|
return $session->privilege->insufficient() unless $asset->canEdit;
|
||||||
|
return $session->privilege->locked() unless $asset->canEditIfLocked;
|
||||||
|
|
||||||
|
##YUI specific datatable CSS
|
||||||
|
my ($style, $url) = $session->quick(qw(style url));
|
||||||
|
|
||||||
|
my $img_file = $asset->filename;
|
||||||
|
my $img_name = $asset->getStorageLocation->getUrl($img_file);
|
||||||
|
my $image = '<div align="center" class="yui-skin-sam"><img src="'.$img_name.'" style="border-style:none;" alt="'.$img_name.'" id="yui_img" /></div>';
|
||||||
|
|
||||||
|
my $i18n = WebGUI::International->new($session,"Asset_Image");
|
||||||
|
my $f = $self->getForm( 'rotateSave' );
|
||||||
|
$f->addField( "button",
|
||||||
|
value=>"Left",
|
||||||
|
extras=>qq{onclick="var deg = document.getElementById('Rotate_formId').value; deg = parseInt(deg) + 90; document.getElementById('Rotate_formId').value = deg;"},
|
||||||
|
);
|
||||||
|
$f->addField( "button",
|
||||||
|
value=>"Right",
|
||||||
|
extras=>qq{onclick="var deg = document.getElementById('Rotate_formId').value; deg = parseInt(deg) - 90; document.getElementById('Rotate_formId').value = deg;"},
|
||||||
|
);
|
||||||
|
$f->addField( "integer",
|
||||||
|
label=>$i18n->get('degree'),
|
||||||
|
name=>"Rotate",
|
||||||
|
value=>0,
|
||||||
|
);
|
||||||
|
$f->addField( "submit", name => "submit" );
|
||||||
|
|
||||||
|
my $output = '<h1>' . $i18n->get("rotate image") . '</h1>' . $f->toHtml . $image;
|
||||||
|
return $style->process( $output, "PBtmplBlankStyle000001" );
|
||||||
|
} ## end sub www_rotate
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_rotateSave ( )
|
||||||
|
|
||||||
|
Rotate the image to the user's specifications and close the dialog
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_rotateSave {
|
||||||
|
my ( $self ) = @_;
|
||||||
|
my $asset = $self->asset;
|
||||||
|
my $session = $self->session;
|
||||||
|
return $session->privilege->insufficient() unless $asset->canEdit;
|
||||||
|
return $session->privilege->locked() unless $asset->canEditIfLocked;
|
||||||
|
|
||||||
|
my $tag = WebGUI::VersionTag->getWorking( $session );
|
||||||
|
$asset = $asset->addRevision({ tagId => $tag->getId, status => "pending" });
|
||||||
|
$asset->setVersionLock;
|
||||||
|
delete $asset->{_storageLocation};
|
||||||
|
$asset->getStorageLocation->rotate($asset->filename,$session->form->process("Rotate"));
|
||||||
|
$asset->setSize($asset->getStorageLocation->getFileSize($asset->filename));
|
||||||
|
$asset->generateThumbnail;
|
||||||
|
WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { allowComments => 0 });
|
||||||
|
|
||||||
|
# We're in admin mode, close the dialog
|
||||||
|
my $helper = {
|
||||||
|
message => 'Image Rotated',
|
||||||
|
};
|
||||||
|
my $text = '<script type="text/javascript">';
|
||||||
|
|
||||||
|
if ( ref $helper eq 'HASH' ) {
|
||||||
|
# Process the output as JSON
|
||||||
|
$text .= sprintf 'parent.admin.processPlugin( %s );', JSON->new->encode( $helper );
|
||||||
|
}
|
||||||
|
|
||||||
|
# Close dialog last so that script above runs!
|
||||||
|
$text .= 'parent.admin.closeModalDialog();'
|
||||||
|
. '</script>';
|
||||||
|
|
||||||
|
$self->session->output->print( $text, 1); # skipMacros
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue