escape asset titles in manageTrash

This commit is contained in:
Paul Driver 2010-05-27 08:42:15 -07:00
parent 5b3103ebf8
commit 99fbe6d155

View file

@ -16,6 +16,7 @@ package WebGUI::Asset;
use strict; use strict;
use WebGUI::Asset::Shortcut; use WebGUI::Asset::Shortcut;
use JSON;
=head1 NAME =head1 NAME
@ -417,21 +418,37 @@ sub www_manageTrash {
assetManager.AddColumn('".$i18n->get("last updated")."','','center',''); assetManager.AddColumn('".$i18n->get("last updated")."','','center','');
assetManager.AddColumn('".$i18n->get("size")."','','right',''); assetManager.AddColumn('".$i18n->get("size")."','','right','');
\n"; \n";
# To avoid string escaping issues
my $json = JSON->new;
my $amethod = sub {
my ($method, @args) = @_;
my $array = $json->encode(\@args);
$array =~ s/^\[//;
$array =~ s/\]$//;
$output .= "assetManager.$method($array);\n";
};
foreach my $child (@{$self->getAssetsInTrash($limit)}) { foreach my $child (@{$self->getAssetsInTrash($limit)}) {
my $title = $child->getTitle; my $title = $child->getTitle;
$title =~ s/\'/\\\'/g;
my $plus =$child->getChildCount({includeTrash => 1}) ? "+ " : "    "; my $plus =$child->getChildCount({includeTrash => 1}) ? "+ " : "    ";
$output .= "assetManager.AddLine('" $amethod->('AddLine',
.WebGUI::Form::checkbox($self->session, { WebGUI::Form::checkbox($self->session, {
name=>'assetId', name=>'assetId',
value=>$child->getId value=>$child->getId
}) }),
."','" . $plus . "<a href=\"".$child->getUrl("op=assetManager")."\">" . $title qq($plus<a href=").$child->getUrl("op=assetManager")
."</a>','<p style=\"display:inline;vertical-align:middle;\"><img src=\"".$child->getIcon(1)."\" style=\"vertical-align:middle;border-style:none;\" alt=\"".$child->getName."\" /></p> ".$child->getName .qq(">$title</a>),
."','".$self->session->datetime->epochToHuman($child->get("revisionDate")) '<p style="display:inline;vertical-align:middle;"><img src="'
."','".formatBytes($child->get("assetSize"))."');\n"; .$child->getIcon(1)
$output .= "assetManager.AddLineSortData('','".$title."','".$child->getName .'" style="vertical-align:middle;border-style:none;" alt='
."','".$child->get("revisionDate")."','".$child->get("assetSize")."');\n"; .$child->getName .'" /></p> ' . $child->getName,
$self->session->datetime->epochToHuman($child->get("revisionDate")),
formatBytes($child->get("assetSize"))
);
$amethod->('AddLineSortData',
'', $title, $child->getName,
$child->get('revisionDate'), $child->get('assetSize')
);
} }
$output .= ' $output .= '
assetManager.AddButton("'.$i18n->get("restore").'","restoreList","manageTrash"); assetManager.AddButton("'.$i18n->get("restore").'","restoreList","manageTrash");