fix: XHTML 1.0 strict, FileUploadControl.js, resizable textarea
This commit is contained in:
parent
8b8feb6af3
commit
81fd7c6194
5 changed files with 138 additions and 87 deletions
|
|
@ -147,6 +147,49 @@ sub displayValue {
|
|||
return $fileValue;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getFilePreview ( storage )
|
||||
|
||||
Returns a preview of the files attached to this form control.
|
||||
|
||||
=head3 storage
|
||||
|
||||
A WebGUI::Storage object.
|
||||
|
||||
=cut
|
||||
|
||||
sub getFilePreview {
|
||||
my $self = shift;
|
||||
my $storage = shift;
|
||||
my $preview = "";
|
||||
foreach my $file (@{$storage->getFiles}) {
|
||||
if ($self->get("deleteFileUrl")) {
|
||||
$preview = '<p style="display:inline;vertical-align:middle;"><a href="'.$self->get("deleteFileUrl").$file.'">'
|
||||
.'<img src="'.$self->session->icon->getBaseURL().'delete.gif" style="vertical-align:middle;border: 0px;" alt="x" /></a></p> ';
|
||||
}
|
||||
$preview .= '<p style="display:inline;vertical-align:middle;"><a href="'.$storage->getUrl($file).'">'
|
||||
.'<img src="'.$storage->getFileIconUrl($file).'" style="vertical-align:middle;border: 0px;" alt="'
|
||||
.$file.'" /> '.$file.'</a></p><br />';
|
||||
}
|
||||
return $preview;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getStorageLocation ( )
|
||||
|
||||
Returns the WebGUI::Storage object for this control.
|
||||
|
||||
=cut
|
||||
|
||||
sub getStorageLocation {
|
||||
my $self = shift;
|
||||
my $storage = WebGUI::Storage->get($self->session, $self->get("value")) if ($self->get("value"));
|
||||
return $storage;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getValueFromPost ( )
|
||||
|
|
@ -199,43 +242,51 @@ sub toHtml {
|
|||
my $self = shift;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
my $uploadControl = undef;
|
||||
my $storage = WebGUI::Storage->get($self->session, $self->get("value")) if ($self->get("value"));
|
||||
my $storage = $self->getStorageLocation;
|
||||
my @files = $storage->getFiles if (defined $storage);
|
||||
my $maxFiles = $self->get('maxAttachments') - scalar(@files);
|
||||
if ($maxFiles > 0) {
|
||||
$self->session->style->setScript($self->session->url->extras('FileUploadControl.js'),{type=>"text/javascript"});
|
||||
$uploadControl = '<script type="text/javascript">
|
||||
var fileIcons = new Array();
|
||||
';
|
||||
opendir(DIR,$self->session->config->get("extrasPath").'/fileIcons');
|
||||
my @icons = readdir(DIR);
|
||||
closedir(DIR);
|
||||
foreach my $file (@icons) {
|
||||
unless ($file eq "." || $file eq "..") {
|
||||
my $ext = $file;
|
||||
$ext =~ s/(.*?)\.gif/$1/;
|
||||
$uploadControl .= 'fileIcons["'.$ext.'"] = "'.$self->session->url->extras('fileIcons/'.$file).'";'."\n";
|
||||
}
|
||||
}
|
||||
$uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d", "%s"); uploader.addRow(); </script>!
|
||||
, $self->get("name")."_file", $i18n->get("removeLabel"), $maxFiles, $self->get("size");
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'upload'})->toHtml()."<br />";
|
||||
} else {
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->get("name"), -value => $self->get("value")})->toHtml()."<br />";
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'keep'})->toHtml()."<br />";
|
||||
$self->session->style->setScript($self->session->url->extras('FileUploadControl.js'),{type=>"text/javascript"});
|
||||
$uploadControl = '<noscript>
|
||||
|
||||
</noscript>';
|
||||
$uploadControl .= '<script type="text/javascript">
|
||||
var fileIcons = new Array();
|
||||
';
|
||||
opendir(DIR,$self->session->config->get("extrasPath").'/fileIcons');
|
||||
my @icons = readdir(DIR);
|
||||
closedir(DIR);
|
||||
foreach my $file (@icons) {
|
||||
unless ($file eq "." || $file eq "..") {
|
||||
my $ext = $file;
|
||||
$ext =~ s/(.*?)\.gif/$1/;
|
||||
$uploadControl .= 'fileIcons["'.$ext.'"] = "'.$self->session->url->extras('fileIcons/'.$file).'";'."\n";
|
||||
}
|
||||
}
|
||||
$uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d", "%s"); uploader.addRow(); </script>!
|
||||
, $self->get("name")."_file", $i18n->get("removeLabel"), $maxFiles, $self->get("size");
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
|
||||
name => $self->privateName('action'),
|
||||
value => 'upload',
|
||||
id => $self->get('id')
|
||||
})->toHtml()."<br />";
|
||||
}
|
||||
else {
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
|
||||
name => $self->get("name"),
|
||||
value => $self->get("value"),
|
||||
id => $self->get("id")
|
||||
})->toHtml()."<br />";
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
|
||||
name => $self->privateName('action'),
|
||||
value => 'keep',
|
||||
id => $self->get("id")
|
||||
})->toHtml()."<br />";
|
||||
}
|
||||
if (scalar(@files)) {
|
||||
foreach my $file (@{$storage->getFiles}) {
|
||||
if ($self->get("deleteFileUrl")) {
|
||||
$uploadControl .= '<p style="display:inline;vertical-align:middle;"><a href="'.$self->get("deleteFileUrl").$file.'">'
|
||||
.'<img src="'.$self->session->icon->getBaseURL().'delete.gif" style="vertical-align:middle;border: 0px;" alt="x" /></a></p> ';
|
||||
}
|
||||
$uploadControl .= '<p style="display:inline;vertical-align:middle;"><a href="'.$storage->getUrl($file).'">'
|
||||
.'<img src="'.$storage->getFileIconUrl($file).'" style="vertical-align:middle;border: 0px;" alt="'
|
||||
.$file.'" /> '.$file.'</a></p><br />';
|
||||
}
|
||||
$uploadControl .= $self->getFilePreview($storage);
|
||||
}
|
||||
return $uploadControl;
|
||||
return $uploadControl;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -135,6 +135,50 @@ sub displayValue {
|
|||
return $fileValue;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getFilePreview ( storage )
|
||||
|
||||
Returns a preview of the files attached to this form control.
|
||||
|
||||
=head3 storage
|
||||
|
||||
A WebGUI::Storage object.
|
||||
|
||||
=cut
|
||||
|
||||
sub getFilePreview {
|
||||
my $self = shift;
|
||||
my $storage = shift;
|
||||
my $preview = "";
|
||||
foreach my $file (@{$storage->getFiles}) {
|
||||
if ($self->get("deleteFileUrl")) {
|
||||
$preview = '<p style="display:inline;vertical-align:middle;"><a href="'.$self->get("deleteFileUrl").$file.'">'
|
||||
.'<img src="'.$self->session->icon->getBaseURL().'delete.gif" style="vertical-align:middle;border: 0px;" alt="x" /></a></p> ';
|
||||
}
|
||||
my $image = $storage->isImage($file) ? $storage->getThumbnailUrl($file) : $storage->getFileIconUrl($file);
|
||||
$preview .= '<p style="display:inline;vertical-align:middle;"><a href="'.$storage->getUrl($file).'">'
|
||||
.'<img src="'.$image.'" style="vertical-align:middle;border: 0px;" alt="'
|
||||
.$file.'" /> '.$file.'</a></p><br />';
|
||||
}
|
||||
return $preview;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getStorageLocation ( )
|
||||
|
||||
Returns the WebGUI::Storage object for this control.
|
||||
|
||||
=cut
|
||||
|
||||
sub getStorageLocation {
|
||||
my $self = shift;
|
||||
my $storage = WebGUI::Storage::Image->get($self->session, $self->get("value")) if ($self->get("value"));
|
||||
return $storage;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getValueFromPost ( )
|
||||
|
|
@ -164,54 +208,4 @@ sub getValueFromPost {
|
|||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 toHtml ( )
|
||||
|
||||
Renders a file upload control.
|
||||
|
||||
=cut
|
||||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
my $uploadControl = undef;
|
||||
my $storage = WebGUI::Storage::Image->get($self->session, $self->get("value")) if ($self->get("value"));
|
||||
my @files = defined($storage)? @{$storage->getFiles} : ();
|
||||
my $maxNewFiles = $self->get('maxAttachments') - scalar(@files);
|
||||
if ($maxNewFiles > 0) {
|
||||
$self->session->style->setScript($self->session->url->extras('/FileUploadControl.js'),{type=>"text/javascript"});
|
||||
$uploadControl = '<script type="text/javascript">
|
||||
var fileIcons = new Array();
|
||||
';
|
||||
opendir(DIR,$self->session->config->get("extrasPath").'/fileIcons');
|
||||
my @icons = readdir(DIR);
|
||||
closedir(DIR);
|
||||
foreach my $file (@icons) {
|
||||
unless ($file eq "." || $file eq "..") {
|
||||
my $ext = $file;
|
||||
$ext =~ s/(.*?)\.gif/$1/;
|
||||
$uploadControl .= 'fileIcons["'.$ext.'"] = "'.$self->session->url->extras('fileIcons/'.$file).'";'."\n";
|
||||
}
|
||||
}
|
||||
$uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d", "%s"); uploader.addRow(); </script>!,
|
||||
$self->get("name")."_file", $i18n->get("removeLabel"), $maxNewFiles, $self->get("size");
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'upload'})->toHtml()."<br />";
|
||||
} else {
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->get("name"), -value => $self->get("value")})->toHtml()."<br />";
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'keep'})->toHtml()."<br />";
|
||||
}
|
||||
foreach my $file (@files) {
|
||||
if ($self->get("deleteFileUrl")) {
|
||||
$uploadControl .= '<p style="display:inline;vertical-align:middle;"><a href="'.$self->get("deleteFileUrl").$file.'">'
|
||||
.'<img src="'.$self->session->icon->getBaseURL().'delete.gif" style="vertical-align:middle;border: 0px;" alt="x" /></a></p> ';
|
||||
}
|
||||
my $image = $storage->isImage($file) ? $storage->getThumbnailUrl($file) : $storage->getFileIconUrl($file);
|
||||
$uploadControl .= '<p style="display:inline;vertical-align:middle;"><a href="'.$storage->getUrl($file).'">'
|
||||
.'<img src="'.$image.'" style="vertical-align:middle;border: 0px;" alt="'
|
||||
.$file.'" /> '.$file.'</a></p><br />';
|
||||
}
|
||||
return $uploadControl;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -112,11 +112,12 @@ sub toHtml {
|
|||
my $value = $self->fixMacros($self->fixTags($self->fixSpecialCharacters($self->get("value"))));
|
||||
my $width = $self->get('width') || 400;
|
||||
my $height = $self->get('height') || 150;
|
||||
my $style = "width: ".$width."px; height: ".$height."px; ".$self->get("style");
|
||||
my $out = '<textarea rows="#" cols="#" id="'.$self->get('id').'" name="'.$self->get("name").'" style="'.$style.'" '.$self->get("extras").'>'.$value.'</textarea>';
|
||||
my ($style, $url) = $self->session->quick(qw(style url));
|
||||
my $styleAttribute = "width: ".$width."px; height: ".$height."px; ".$self->get("style");
|
||||
$style->setRawHeadTags(qq|<style type="text/css">\n#|.$self->get('id').qq|{ $styleAttribute }\n</style>|);
|
||||
my $out = '<textarea id="'.$self->get('id').'" name="'.$self->get("name").'" '.$self->get("extras").' rows="#" cols="#">'.$value.'</textarea>';
|
||||
if ($self->get("resizable")) {
|
||||
$out = '<div style="border: 0px; width: '.$width.'px; height: '.$height.'px;" class="yresizable-pinned" id="'.$self->get('id').'_wrapper">'.$out.'</div>';
|
||||
my ($style, $url) = $self->session->quick(qw(style url));
|
||||
$style->setScript($url->extras("yui/build/yahoo/yahoo-min.js"), {type=>"text/javascript"});
|
||||
$style->setScript($url->extras("yui/build/event/event-min.js"), {type=>"text/javascript"});
|
||||
$style->setScript($url->extras("yui/build/dom/dom-min.js"), {type=>"text/javascript"});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue