Added SQLReport download and Product AddToGroup handler

This commit is contained in:
Doug Bell 2006-10-10 18:14:31 +00:00
parent 03822a9488
commit 6d56df1362
13 changed files with 946 additions and 28 deletions

View file

@ -12,6 +12,11 @@
- fix: Events Calendar: error in "big" template (Martin Kamerbeek / Procolix)
- fix: PM task editor not preserving duration
- fix: PM project completion percentage updates not working right
- Added ability to download an SQLReport in either CSV or as a template.
- Added ability for Products to add a user to a group when purchased.
- Changed the ?op=editProduct form to a TabForm.
- fixed a small error in WebGUI::Group documentation.
- Added WebGUI::Text with some CSV functions.
7.0.9
- Removed the need for DateTime::Cron::Simple, which also added the ability

View file

@ -0,0 +1,129 @@
#SQLReportDownload0001
#namespace:SQLReport/Download
#title:SQLReport Download Default Template
<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>

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 url>?func=download">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>

16
docs/upgrades/upgrade_7.0.9-7.1.0.pl Normal file → Executable file
View file

@ -20,6 +20,8 @@ my $quiet; # this line required
my $session = start(); # this line required
recalculateProjectCompletion($session);
updateSqlReportTable($session);
updateProductsTable($session);
finish($session); # this line required
@ -38,6 +40,20 @@ sub recalculateProjectCompletion {
}
}
sub updateSqlReportTable {
my $session = shift;
print "\tUpdating SQLReport table structure.\n" unless ($quiet);
$session->db->write("alter table `SQLReport` ADD COLUMN ( downloadType varchar(255), downloadFilename varchar(255), downloadTemplateId varchar(22), downloadMimeType varchar(255), downloadUserGroup varchar(22))");
}
sub updateProductsTable {
my $session = shift;
print "\tUpdating products table structure.\n" unless ($quiet);
$session->db->write("alter table products add column (groupId varchar(22), groupExpiresOffset varchar(16))");
}
# ---- DO NOT EDIT BELOW THIS LINE ----
#-------------------------------------------------