package WebGUI::Operation::RichEdit;
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2004 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
use strict;
use WebGUI::Asset;
use WebGUI::HTMLForm;
use WebGUI::Session;
#-------------------------------------------------------------------
sub www_richEditPageTree {
my $f = WebGUI::HTMLForm->new(-action=>"#");
$f->text(
-name=>"url",
-label=>"URL",
-extras=>'id="url"'
);
$f->yesNo(
-name=>"newWindow",
-label=>"Open in new window?"
);
$f->button(
-value=>"Done",
-extras=>'onclick="window.opener.blah()"'
);
my $output = $f->print.'
';
my $base = WebGUI::Asset->newByUrl || WebGUI::Asset->getRoot;
my @crumb;
my $ancestors = $base->getLineage(["self","ancestors"],{returnQuickReadObjects=>1});
foreach my $ancestor (@{$ancestors}) {
push(@crumb,''.$ancestor->get("menuTitle").'');
}
$output .= ''.join(" > ", @crumb)."
\n";
my $children = $base->getLineage(["children"],{returnQuickReadObjects=>1});
foreach my $child (@{$children}) {
$output .= '(•) '.$child->get("menuTitle").''."
\n";
}
$session{page}{useEmptyStyle} = 1;
return $output;
}
#-------------------------------------------------------------------
sub _htmlAreaCreateTree {
my ($output);
my ($name, $description, $url, $image, $indent, $target, $delete) = @_;
if($delete) {
$delete = qq//;
$delete .= deleteIcon()."";
}
$target = ' target="'.$target.'" ' if ($target);
$output .= '';
$output .= (' ') x$indent;
$output .= ' ';
$output .= ''.$name.' | ';
$output .= ''.$delete.' |
';
return $output;
}
#-------------------------------------------------------------------
sub www_htmlArealistCollateral {
my (@parents, $sth, $data, $indent);
$session{page}{makePrintable}=1; $session{page}{printableStyleId}=10;
return "Only Content Managers are allowed to use WebGUI Collateral" unless (WebGUI::Grouping::isInGroup(4));
my $output = '';
my $folderId = $session{form}{fid} || 0;
my $parent = $folderId;
# push parent folders in array so it can be reversed
unshift(@parents, $parent);
until($parent eq '0') {
($parent) = WebGUI::SQL->quickArray("select parentId from collateralFolder where collateralFolderId=".quote($parent));
unshift(@parents, $parent);
}
# Build tree for opened parent folders
foreach $parent (@parents) {
my ($name, $description) = WebGUI::SQL->quickArray("select name, description from
collateralFolder where collateralFolderId=".quote($parent));
my ($itemsInFolder) = WebGUI::SQL->quickArray("select count(*) from collateral where collateralFolderId = ".quote($parent));
my ($foldersInFolder)=WebGUI::SQL->quickArray("select count(*) from collateralFolder where parentId=".quote($parent));
my $delete = "fid=$parent" unless ($itemsInFolder + $foldersInFolder);
$output .= _htmlAreaCreateTree($name, $description,
WebGUI::URL::page('op=htmlArealistCollateral&fid='.$parent), "opened.gif",
$indent++,"" ,$delete);
}
# Extend tree with closed folders in current folder
$sth = WebGUI::SQL->read("select collateralFolderId, name, description from collateralFolder
where parentId=".quote($folderId)." and collateralFolderId <> '0' order by name");
while ($data = $sth->hashRef) {
my ($itemsInFolder) = WebGUI::SQL->quickArray("select count(*) from collateral where
collateralFolderId = ".quote($data->{collateralFolderId}));
my $delete = 'fid='.$data->{collateralFolderId} unless $itemsInFolder;
$output .= _htmlAreaCreateTree($data->{name}, $data->{description},
WebGUI::URL::page('op=htmlArealistCollateral&fid='.$data->{collateralFolderId}),
"closed.gif", $indent, "", $delete);
}
# Extend tree with images in current folder
$sth = WebGUI::SQL->read("select collateralId, name, filename from collateral where collateralType = 'image' ".
"and collateralFolderId = ".quote($folderId));
while ($data = $sth->hashRef) {
$data->{filename} =~ /\.([^\.]+)$/; # Get extension
my $fileType = $1.'.gif';
$output .= _htmlAreaCreateTree($data->{filename}, $data->{name},
WebGUI::URL::page('op=htmlAreaviewCollateral&cid='.$data->{collateralId}),
$fileType, $indent, "viewer", 'cid='.$data->{collateralId}.'&fid='.$folderId);
}
$output .= '
';
$output .= '\n";
$sth->finish;
return $output;
}
#-------------------------------------------------------------------
sub www_htmlAreaviewCollateral {
my($output, $collateral, $file, $x, $y, $image, $error);
$session{page}{makePrintable}=1; $session{page}{printableStyleId}=10;
$output .= '';
if($session{form}{cid} eq "" || ! WebGUI::Grouping::isInGroup(4)) {
$output .= '| ';
$output .= '
 ';
$output .= 'WebGUI Image Manager for TinyMCE ';
$output .= ' |
';
} else {
my $c = WebGUI::Collateral->new($session{form}{cid});
$collateral = $c->get;
$file = WebGUI::Attachment->new($collateral->{filename},"images",$collateral->{collateralId});
$output .= '';
$output .= ''.$file->getFilename.' ';
# if ($hasImageMagick) {
# $image = Image::Magick->new;
# $error = $image->Read($file->getPath);
# ($x, $y) = $image->Get('width','height');
# $output .= $error ? "Error reading image: $error" : "($x × $y)";
# }
$output .= ' |
';
$output .= ' ';
$output .= ' |
';
$output .= '\n";
}
return $output;
}
#-------------------------------------------------------------------
sub www_htmlAreaUpload {
$session{page}{makePrintable}=1; $session{page}{printableStyleId}=10;
return "Only Content Managers are allowed to use WebGUI Collateral" unless (WebGUI::Grouping::isInGroup(4));
return www_htmlArealistCollateral() if ($session{form}{image} eq "");
my($test, $file);
$session{form}{fid} = $session{form}{collateralFolderId} = $session{form}{path};
my $collateral = WebGUI::Collateral->new("new");
$session{form}{thumbnailSize} ||= $session{setting}{thumbnailSize};
$session{form}{cid} = $collateral->get("collateralId");
$collateral->save("image", $session{form}{thumbnailSize});
$session{form}{name} = "untitled" if ($session{form}{name} eq "");
while (($test) = WebGUI::SQL->quickArray("select name from collateral
where name=".quote($session{form}{name})." and collateralId<>".quote($collateral->get("collateralId")))) {
if ($session{form}{name} =~ /(.*)(\d+$)/) {
$session{form}{name} = $1.($2+1);
} elsif ($test ne "") {
$session{form}{name} .= "2";
}
}
$collateral->set($session{form});
$session{form}{collateralType} = "";
return www_htmlArealistCollateral();
}
#-------------------------------------------------------------------
sub www_htmlAreaDelete {
$session{page}{makePrintable}=1; $session{page}{printableStyleId}=10;
return "Only Content Managers are allowed to use WebGUI Collateral" unless (WebGUI::Grouping::isInGroup(4));
if($session{form}{cid}) { # Delete Image
my $collateral = WebGUI::Collateral->new($session{form}{cid});
$collateral->delete;
} elsif($session{form}{fid} and not($session{form}{cid})) {
return WebGUI::Privilege::vitalComponent() unless ($session{form}{fid} > 999);
my ($parent) = WebGUI::SQL->quickArray("select parentId from collateralFolder where collateralFolderId=".quote($session{form}{fid}));
WebGUI::SQL->write("delete from collateralFolder where collateralFolderId=".quote($session{form}{fid}));
$session{form}{fid}=$parent;
}
return www_htmlArealistCollateral();
}
#-------------------------------------------------------------------
sub www_htmlAreaCreateFolder {
$session{page}{makePrintable}=1; $session{page}{printableStyleId}=10;
return "Only Content Managers are allowed to use WebGUI Collateral" unless (WebGUI::Grouping::isInGroup(4));
$session{form}{fid} = WebGUI::Id::generate();
WebGUI::Session::setScratch("collateralFolderId",$session{form}{fid});
WebGUI::SQL->write("insert into collateralFolder (collateralFolderId) values (".quote($session{form}{fid}).")");
my $folderId = $session{scratch}{collateralFolderId} || 0;
$session{form}{name} = $session{form}{folder};
$session{form}{name} = "untitled" if ($session{form}{name} eq "");
while (my ($test) = WebGUI::SQL->quickArray("select name from collateralFolder
where name=".quote($session{form}{name})." and collateralFolderId<>".quote($folderId))) {
if ($session{form}{name} =~ /(.*)(\d+$)/) {
$session{form}{name} = $1.($2+1);
} elsif ($test ne "") {
$session{form}{name} .= "2";
}
}
WebGUI::SQL->write("update collateralFolder set parentId=".quote($session{form}{path}).", name=".quote($session{form}{name})
.", description=".quote($session{form}{description})." where collateralFolderId=".quote($folderId));
$session{form}{fid} = $session{form}{path};
return www_htmlArealistCollateral();
}
1;