diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 42f4579ca..d7d9bae98 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -2131,7 +2131,9 @@ sub processTemplate { } $template = WebGUI::Asset->new($self->session, $templateId,"WebGUI::Asset::Template") unless (defined $template); + warn("templateId: $templateId: template: $template"); if (defined $template) { + warn("templateId: $templateId: template: $template: id: ", $template->getId()); $var = { %{ $var }, %{ $self->getMetaDataAsTemplateVariables } }; $var->{'controls'} = $self->getToolbar if $self->session->var->isAdminOn; my %vars = ( @@ -2140,6 +2142,7 @@ sub processTemplate { 'menuTitle' => $self->getMenuTitle, %{$var}, ); + warn("templateId: $templateId: template: $template"); return $template->process(\%vars); } else { @@ -2606,6 +2609,11 @@ NOTE: Don't try to override or overload this method. It won't work. What you are sub www_editSave { my $self = shift; + + my $annotations = ""; + if ($self->isa("WebGUI::Asset::File::Image")) { + $annotations = $self->get("annotations"); + } ##If this is a new asset (www_add), the parent may be locked. We should still be able to add a new asset. my $isNewAsset = $self->session->form->process("assetId") eq "new" ? 1 : 0; return $self->session->privilege->locked() if (!$self->canEditIfLocked and !$isNewAsset); @@ -2644,6 +2652,12 @@ sub www_editSave { } } + if ($self->isa("WebGUI::Asset::File::Image")) { + $object->update({ annotations => $annotations }); + } + + ### + $object->updateHistory("edited"); # we handle auto commit assets here in case they didn't handle it themselves diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 5df71ac9b..63c396ae8 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -112,6 +112,10 @@ sub definition { fieldType => 'textarea', defaultValue => 'style="border-style:none;"', }, + annotations => { + fieldType => 'textarea', + defaultValue => '', + }, }, }; return $class->SUPER::definition($session,$definition); @@ -236,17 +240,38 @@ sub view { return $out if $out; } my %var = %{$self->get}; + my ($crop_js, $domMe) = $self->annotate_js({ just_image => 1 }); + + if ($crop_js) { + my ($style, $url) = $self->session->quick(qw(style url)); + + $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'}); + } + $var{controls} = $self->getToolbar; $var{fileUrl} = $self->getFileUrl; $var{fileIcon} = $self->getFileIconUrl; $var{thumbnail} = $self->getThumbnailUrl; - my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); + $var{annotateJs} = "$crop_js$domMe"; + $var{parameters} = sprintf("id=%s", $self->getId()); + warn("annotateJs: $var{annotateJs}"); + my $form = $self->session->form; + my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) { WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout")); } return $out; } + #---------------------------------------------------------------------------- =head2 setFile ( filename ) @@ -288,31 +313,17 @@ sub www_undo { my $previous = (@{$self->getRevisions()})[1]; # instantiate assetId if ($previous) { - warn("here"); # my $session = $self->session; - warn("here"); # my $cache = WebGUI::Cache->new($self->session, ["asset",$self->getId,$self->getRevisionDate]); - warn("here"); # $cache->flush; - warn("here"); # my $cache = WebGUI::Cache->new($previous->session, ["asset",$previous->getId,$previous->getRevisionDate]); - warn("here"); # $cache->flush; - warn("here"); - warn("$previous"); - warn(ref $previous); - warn($previous->getId); $self = $self->purgeRevision(); # $self = undef; - warn("here"); # $self = WebGUI::Asset->new($previous->session, $previous->getId, ref $previous, $previous->getRevisionDate); $self = $previous; - warn("$self"); - warn(ref $self); - warn($self->getId); - warn($self->session->cache); $self->generateThumbnail; } return $self->www_edit(); @@ -330,22 +341,16 @@ sub www_annotate { my $self = shift; return $self->session->privilege->insufficient() unless $self->canEdit; return $self->session->privilege->locked() unless $self->canEditIfLocked; - if ($self->session->form->process("annotate_text")) { + if (1) { my $newSelf = $self->addRevision(); delete $newSelf->{_storageLocation}; - warn("here"); - $newSelf->getStorageLocation->annotate($newSelf->get("filename"),$newSelf->session->form); - warn("here"); + $newSelf->getStorageLocation->annotate($newSelf->get("filename"),$newSelf,$newSelf->session->form); $newSelf->setSize($newSelf->getStorageLocation->getFileSize($newSelf->get("filename"))); - warn("here"); $self = $newSelf; - warn("here"); $self->generateThumbnail; - warn("here"); } my ($style, $url) = $self->session->quick(qw(style url)); - # http://www.kryogenix.org/code/browser/annimg/annimg.html (creative commons) # $style->setLink($url->extras('annotate/imageMap.css'), {rel=>'stylesheet', type=>'text/css'}); $style->setLink($url->extras('yui/build/resize/assets/skins/sam/resize.css'), {rel=>'stylesheet', type=>'text/css'}); @@ -358,50 +363,21 @@ sub www_annotate { $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 $imageAsset = $self->session->db->getRow("ImageAsset","assetId",$self->getId); + # my $imageAsset = $self->session->db->getRow("ImageAsset","assetId",$self->getId); - warn("annotations: " . $self->{annotations}); - my @pieces = split(/\n/, $imageAsset->{annotations}); + my @pieces = split(/\n/, $self->get('annotations')); # my ($top_left, $width_height, $note) = split(/\n/, $imageAsset->{annotations}); - my $crop_js = qq( - - ); my $image = '