diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index 1683a6df6..cefaa32ab 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -245,11 +245,13 @@ sub getEditFormUploadControl { return $html; } - #------------------------------------------------------------------- sub getFileUrl { my $self = shift; #return $self->get("url"); + if (-f $self->getStorageLocation->getPath('crop-' . $self->get("filename"))) { + return $self->getStorageLocation->getUrl('crop-' . $self->get("filename")); + } return $self->getStorageLocation->getUrl($self->get("filename")); } @@ -562,7 +564,7 @@ sub www_edit { sub www_view { my $self = shift; return $self->session->privilege->noAccess() unless $self->canView; - + # Check to make sure it's not in the trash or some other weird place if ($self->get("state") ne "published") { my $i18n = WebGUI::International->new($self->session,'Asset_File'); diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index fa1984e9a..12bc08d9e 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -268,6 +268,7 @@ sub www_edit { return $self->session->privilege->locked() unless $self->canEditIfLocked; my $i18n = WebGUI::International->new($self->session, 'Asset_Image'); $self->getAdminConsole->addSubmenuItem($self->getUrl('func=resize'),$i18n->get("resize image")) if ($self->get("filename")); + $self->getAdminConsole->addSubmenuItem($self->getUrl('func=crop'),$i18n->get("crop image")) if ($self->get("filename")); my $tabform = $self->getEditForm; $tabform->getTab("display")->template( -value=>$self->get("templateId"), @@ -320,6 +321,108 @@ sub www_resize { return $self->getAdminConsole->render($f->print.$image,$i18n->get("resize image")); } +#------------------------------------------------------------------- +# feel free to take over typing +sub www_crop { + my $self = shift; + return $self->session->privilege->insufficient() unless $self->canEdit; + return $self->session->privilege->locked() unless $self->canEditIfLocked; + + if ($self->session->form->process("Width") || $self->session->form->process("Height") + || $self->session->form->process("Top") || $self->session->form->process("Left")) { + my $newSelf = $self->addRevision(); + delete $newSelf->{_storageLocation}; + $newSelf->getStorageLocation->crop( + $newSelf->get("filename"), + $newSelf->session->form->process("Width"), + $newSelf->session->form->process("Height"), + $newSelf->session->form->process("Top"), + $newSelf->session->form->process("Left") + ); + $self = $newSelf; + } + + my $filename = $self->get("filename"); + + ##YUI specific datatable CSS + my ($style, $url) = $self->session->quick(qw(style url)); + + my $crop_js = qq( + + ); + + $style->setLink($url->extras('yui/build/resize/assets/skins/sam/resize.css'), {rel=>'stylesheet', type=>'text/css'}); + $style->setLink($url->extras('yui/build/fonts/fonts-min.css'), {rel=>'stylesheet', type=>'text/css'}); + $style->setLink($url->extras('yui/build/imagecropper/assets/skins/sam/imagecropper.css'), {rel=>'stylesheet', type=>'text/css'}); + $style->setScript($url->extras('yui/build/yahoo-dom-event/yahoo-dom-event.js'), {type=>'text/javascript'}); + $style->setScript($url->extras('yui/build/element/element-beta-min.js'), {type=>'text/javascript'}); + $style->setScript($url->extras('yui/build/dragdrop/dragdrop-min.js'), {type=>'text/javascript'}); + $style->setScript($url->extras('yui/build/resize/resize-min.js'), {type=>'text/javascript'}); + $style->setScript($url->extras('yui/build/imagecropper/imagecropper-beta-min.js'), {type=>'text/javascript'}); + + my $i18n = WebGUI::International->new($self->session,"Asset_Image"); + + $self->getAdminConsole->addSubmenuItem($self->getUrl('func=edit'),$i18n->get("edit image")); + my $f = WebGUI::HTMLForm->new($self->session,-action=>$self->getUrl); + $f->hidden( + -name=>"func", + -value=>"crop" + ); + my ($x, $y) = $self->getStorageLocation->getSizeInPixels($filename); + $f->integer( + -label=>$i18n->get('width'), + -hoverHelp=>$i18n->get('new width description'), + -name=>"Width", + -value=>$x, + ); + $f->integer( + -label=>$i18n->get('height'), + -hoverHelp=>$i18n->get('new height description'), + -name=>"Height", + -value=>$y, + ); + $f->integer( + -label=>$i18n->get('top'), + -hoverHelp=>$i18n->get('new width description'), + -name=>"Top", + -value=>$x, + ); + $f->integer( + -label=>$i18n->get('left'), + -hoverHelp=>$i18n->get('new height description'), + -name=>"Left", + -value=>$y, + ); + $f->submit; + + my $image = '