include form parameters in sql report download link

This commit is contained in:
Graham Knop 2007-09-07 21:38:31 +00:00
parent 3dbde9ff3f
commit 29f2018b6f
3 changed files with 188 additions and 3 deletions

View file

@ -31,6 +31,7 @@
- fix: SQLReport templatable download doesn't run nested queries
- fix: Edit branch copies hide from navigation setting from events and posts to rest of branch
- Dashboard now shows default view if user hasn't configured their own view
- fix: SQL Report download link doesn't include form parameters
7.4.5
- fix: Apostrophy incorrectly escaped as double quote in some places

View file

@ -0,0 +1,161 @@
#PBtmpl0000000000000059
<a name="id<tmpl_var assetId>" id="id<tmpl_var assetId>"></a>
<tmpl_if session.var.adminOn>
<p><tmpl_var controls></p>
</tmpl_if>
<tmpl_if displayTitle>
<h2><tmpl_var title></h2>
</tmpl_if>
<tmpl_if description>
<tmpl_var description>
<p />
</tmpl_if>
<tmpl_if canDownload>
<a href="<tmpl_var downloadLink>">Download this data</a>
</tmpl_if>
<tmpl_if debugMode>
<ul>
<tmpl_loop debug_loop>
<li><tmpl_var debug.output></li>
</tmpl_loop>
</ul>
</tmpl_if>
<table width="100%" cellspacing="0" cellpadding="0" style="border: 1px solid black;">
<tr>
<tmpl_loop columns_loop>
<td class="tableHeader"><tmpl_var column.name></td>
</tmpl_loop>
</tr>
<tmpl_loop rows_loop>
<tr>
<tmpl_loop row.field_loop>
<td class="tableData"><tmpl_var field.value></td>
</tmpl_loop>
</tr>
<!-- Handle nested query2 -->
<tmpl_if hasNest>
<tr>
<td colspan="<tmpl_var columns.count>">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="20">&nbsp;</td>
<td>
<table width="100%" cellspacing="0" cellpadding="0" style="border: 1px solid black;">
<tr>
<tmpl_loop query2.columns_loop>
<td class="tableHeader"><tmpl_var column.name></td>
</tmpl_loop>
</tr>
<tmpl_loop query2.rows_loop>
<tr>
<tmpl_loop query2.row.field_loop>
<td class="tableData"><tmpl_var field.value></td>
</tmpl_loop>
</tr>
<!-- Handle nested query3 -->
<tmpl_if query2.hasNest>
<tr>
<td colspan="<tmpl_var query2.columns.count>">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td style="width:20px;">&nbsp;</td>
<td>
<table width="100%" cellspacing="0" cellpadding="0" style="border: 1px solid black;">
<tr>
<tmpl_loop query3.columns_loop>
<td class="tableHeader"><tmpl_var column.name></td>
</tmpl_loop>
</tr>
<tmpl_loop query3.rows_loop>
<tr>
<tmpl_loop query3.row.field_loop>
<td class="tableData"><tmpl_var field.value></td>
</tmpl_loop>
</tr>
<!-- Handle nested query4 -->
<tmpl_if query3.hasNest>
<tr>
<td colspan="<tmpl_var query3.columns.count>">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td style="width:20px;">&nbsp;</td>
<td>
<table width="100%" cellspacing="0" cellpadding="0" style="border: 1px solid black;">
<tr>
<tmpl_loop query4.columns_loop>
<td class="tableHeader"><tmpl_var column.name></td>
</tmpl_loop>
</tr>
<tmpl_loop query4.rows_loop>
<tr>
<tmpl_loop query4.row.field_loop>
<td class="tableData"><tmpl_var field.value></td>
</tmpl_loop>
<!-- Handle nested query5 -->
<tmpl_if query4.hasNest>
<tr>
<td colspan="<tmpl_var query4.columns.count>">
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td style="width:20px;">&nbsp;</td>
<td>
<table width="100%" cellspacing="0" cellpadding="0" style="border: 1px solid black;">
<tr>
<tmpl_loop query5.columns_loop>
<td class="tableHeader"><tmpl_var column.name></td>
</tmpl_loop>
</tr>
<tmpl_loop query5.rows_loop>
<tr>
<tmpl_loop query5.row.field_loop>
<td class="tableData"><tmpl_var field.value></td>
</tmpl_loop>
</tr>
</tmpl_loop>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tmpl_if>
</tr>
</tmpl_loop>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tmpl_if>
</tmpl_loop>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tmpl_if>
</tmpl_loop>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tmpl_if>
</tmpl_loop>
</table>
<tmpl_if pagination.pageCount.isMultiple>
<div class="pagination">
<tmpl_var pagination.previousPage> <tmpl_var pagination.pageList.upTo20> <tmpl_var pagination.nextPage>
</div>
</tmpl_if>

View file

@ -477,10 +477,12 @@ sub view {
#use Data::Dumper; return '<pre>'.Dumper($var).'</pre>';
# Add the "Download data" link if the user is allowed to download
$var->{'canDownload'} = 1
if ($self->getValue("downloadType") ne "none"
if ($self->getValue("downloadType") ne "none"
&& $self->session->user->isInGroup($self->getValue("downloadUserGroup"))
);
) {
$var->{'canDownload'} = 1;
$var->{'downloadLink'} = $self->_getDownloadLink($self);
}
my $out = $self->processTemplate($var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
@ -489,6 +491,27 @@ sub view {
return $out;
}
#-------------------------------------------------------------------
# Create download link be adding all the passed in parameters and values to the url
sub _getDownloadLink {
my $self = shift;
my %params;
for my $nr (1 .. 5) {
foreach my $row (split(/\n/,$self->{_query}{$nr}{placeholderParams})) {
$row =~ s/^\s+//;
$row =~ s/\s+$//;
if ($row =~ /^form:(.*)/) {
$params{$1} ||= $self->session->form->param($1);
}
}
}
my $url = "func=download";
for my $param (sort keys %params) {
$url .= ";$param=" . $self->session->url->escape($params{$param});
}
return $self->getUrl($url);
}
#-------------------------------------------------------------------
sub _storeQueries {
my $self = shift;