Skip to content

Commit

Permalink
regression fix several form module issues; did not properly process a…
Browse files Browse the repository at this point in the history
… 'reloaded' uploadcontrol, we now display 'image' in confirm_data view; we now send field names in addition to captions to the showall and confirm_data views so we are dealing with the field 'name' and not the field 'caption' when it comes to the email and image field processing
  • Loading branch information
dleffler committed May 3, 2016
1 parent 597b13e commit ace8d96
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 65 deletions.
64 changes: 44 additions & 20 deletions framework/modules/forms/controllers/formsController.php
Expand Up @@ -110,11 +110,14 @@ public function showall() {
$columns = array();
foreach ($this->config['column_names_list'] as $column_name) {
if ($column_name == "ip") {
$columns[gt('IP Address')] = 'ip';
// $columns[gt('IP Address')] = 'ip';
$columns['ip'] = gt('IP Address');
} elseif ($column_name == "referrer") {
$columns[gt('Referrer')] = 'referrer';
// $columns[gt('Referrer')] = 'referrer';
$columns['referrer'] = gt('Referrer');
} elseif ($column_name == "location_data") {
$columns[gt('Entry Point')] = 'location_data';
// $columns[gt('Entry Point')] = 'location_data';
$columns['location_data'] = gt('Entry Point');
} elseif ($column_name == "user_id") {
foreach ($items as $key => $item) {
if ($item[$column_name] != 0) {
Expand All @@ -125,13 +128,15 @@ public function showall() {
}
$items[$key] = $item;
}
$columns[gt('Posted by')] = 'user_id';
// $columns[gt('Posted by')] = 'user_id';
$columns['user_id'] = gt('Posted by');
} elseif ($column_name == "timestamp") {
foreach ($items as $key => $item) {
$item[$column_name] = strftime(DISPLAY_DATETIME_FORMAT, $item[$column_name]);
$items[$key] = $item;
}
$columns[gt('Timestamp')] = 'timestamp';
// $columns[gt('Timestamp')] = 'timestamp';
$columns['timestamp'] = gt('Timestamp');
} else {
$control = $fc->find('first', "name='" . $column_name . "' AND forms_id=" . $f->id, 'rank');
if ($control) {
Expand All @@ -146,7 +151,8 @@ public function showall() {
);
$items[$key] = $item;
}
$columns[$control->caption] = $column_name;
// $columns[$control->caption] = $column_name;
$columns[$column_name] = $control->caption;
}
}
}
Expand Down Expand Up @@ -442,45 +448,62 @@ public function confirm_data() {
$cols = $f->forms_control;
$counts = array();
$responses = array();
$captions = array();

foreach ($cols as $col) {
$newupload = false;
$coldef = expUnserialize($col->data);
$coldata = new ReflectionClass($coldef);
if (empty($coldef->is_hidden)) {
$coltype = $coldata->getName();
if ($coltype == 'uploadcontrol') {
if ($coltype == 'uploadcontrol' && !empty($_FILES)) {
$newupload = true;
$value = call_user_func(array($coltype, 'parseData'), $col->name, $_FILES, true);
} else {
$value = call_user_func(array($coltype, 'parseData'), $col->name, $this->params, true);
}
$value = call_user_func(array($coltype, 'templateFormat'), $value, $coldef);
$value = call_user_func(array($coltype, 'templateFormat'), $value, $coldef); // convert parsed value to user readable
//eDebug($value);
$counts[$col->caption] = isset($counts[$col->caption]) ? $counts[$col->caption] + 1 : 1;
$num = $counts[$col->caption] > 1 ? $counts[$col->caption] : '';
// $counts[$col->caption] = isset($counts[$col->caption]) ? $counts[$col->caption] + 1 : 1;
// $num = $counts[$col->caption] > 1 ? $counts[$col->caption] : '';

if (!empty($this->params[$col->name])) {
// if ($coltype == 'checkboxcontrol') {
// $responses[$col->caption . $num] = gt('Yes');
// } else {
$responses[$col->caption . $num] = $value;
// $responses[$col->caption . $num] = $value;
$responses[$col->name] = $value;
$captions[$col->name] = $col->caption;
// }
} else {
if ($coltype == 'checkboxcontrol') {
$responses[$col->caption . $num] = gt('No');
// $responses[$col->caption . $num] = gt('No');
$responses[$col->name] = gt('No');
$captions[$col->name] = $col->caption;
} elseif ($coltype == 'datetimecontrol' || $coltype == 'calendarcontrol') {
// $responses[$col->name] = $value;
$responses[$col->name] = $value;
$captions[$col->name] = $col->caption;
} elseif ($coltype == 'uploadcontrol') {
$this->params[$col->name] = PATH_RELATIVE . call_user_func(
array($coltype, 'moveFile'),
$col->name,
$_FILES,
true
);
if ($newupload) {
$this->params[$col->name] = PATH_RELATIVE . call_user_func(
array($coltype, 'moveFile'),
$col->name,
$_FILES,
true
);
}
// $value = call_user_func(array($coltype,'buildDownloadLink'),$this->params[$col->name],$_FILES[$col->name]['name'],true);
//eDebug($value);
$responses[$col->caption . $num] = $_FILES[$col->name]['name'];
// $responses[$col->caption . $num] = $_FILES[$col->name]['name'];
// $responses[$col->name] = $_FILES[$col->name]['name'];
// $responses[$col->name] = $this->params[$col->name];
$responses[$col->name] = call_user_func(array($coltype, 'templateFormat'), $this->params[$col->name], null); // convert parsed value to user readable
$captions[$col->name] = $col->caption;
} elseif ($coltype != 'htmlcontrol' && $coltype != 'pagecontrol') {
$responses[$col->caption . $num] = '';
// $responses[$col->caption . $num] = '';
$responses[$col->name] = '';
$captions[$col->name] = $col->caption;
}
}
}
Expand All @@ -500,6 +523,7 @@ public function confirm_data() {

assign_to_template(array(
'responses' => $responses,
'captions' => $captions,
'postdata' => $this->params,
));
}
Expand Down
26 changes: 22 additions & 4 deletions framework/modules/forms/views/forms/confirm_data.tpl
Expand Up @@ -27,16 +27,34 @@
</tr>
</thead>
<tbody>
{foreach from=$responses item=response key=name}
{foreach $responses as $fieldname=>$response}
<tr class="{cycle values="odd,even"}">
<td><strong>{$name}: </strong>
<td>{$response}</td>
<td>
<strong>{$captions.$fieldname}: </strong>
</td>
<td>
{if $fieldname|lower == 'image'} {* fixme do we get a complete pathname here??? *}
{$matches = array()}
{$tmp = preg_match_all('~<a(.*?)href="([^"]+)"(.*?)>~', $response, $matches)}
{$filename1 = $matches.2.0}
{$filename2 = str_replace(URL_BASE, '/', $filename1)}
{$base = str_replace(PATH_RELATIVE, '', BASE)}
{$fileinfo = expFile::getImageInfo($base|cat:$filename2)}
{if $fileinfo.is_image == 1}
{img src=$filename1 w=64}
{else}
{$response}
{/if}
{else}
{$response}
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
{form action=submit_data}
{foreach from=$postdata item=data key=name}
{foreach $postdata as $name=>$data}
{control type=hidden name=$name value=$data}
{/foreach}
{control type=antispam}
Expand Down
4 changes: 2 additions & 2 deletions framework/modules/forms/views/forms/email/default_report.tpl
Expand Up @@ -37,7 +37,7 @@
{foreach from=$fields key=fieldname item=value}
<tr class="{cycle values="even,odd"}">
<td>
{$captions[$fieldname]}
{$captions.$fieldname}
</td>
<td>
{if $fieldname|lower == 'email'}
Expand All @@ -50,7 +50,7 @@
{$base = str_replace(PATH_RELATIVE, '', BASE)}
{$fileinfo = expFile::getImageInfo($base|cat:$filename2)}
{if $fileinfo.is_image == 1}
{img src=$filename1 w=64}
{img src=$filename1 w=64 fulllink=1}
{else}
{$value}
{/if}
Expand Down
4 changes: 2 additions & 2 deletions framework/modules/forms/views/forms/show.tpl
Expand Up @@ -67,9 +67,9 @@
</tr>
</thead>
<tbody>
{foreach from=$fields key=fieldname item=value}
{foreach $fields as $fieldname=>$value}
<tr class="{cycle values="even,odd"}">
<td>{$captions[$fieldname]}</td>
<td>{$captions.$fieldname}</td>
<td>
{if $fieldname|lower == 'email'}
<a href="mailto:{$value}">{$value}</a>
Expand Down
24 changes: 12 additions & 12 deletions framework/modules/forms/views/forms/showall.bootstrap.tpl
Expand Up @@ -58,40 +58,40 @@
<thead>
<tr>
{*{$page->header_columns}*}
{foreach from=$page->columns item=column key=name name=column}
<th{if $column@first} data-class="expand"{elseif $column@iteration < 4} data-hide="phone"{elseif $column@iteration > 7} data-hide="always"{else} data-hide="phone,tablet"{/if}>{$name}</th>
{foreach $page->columns as $name=>$caption}
<th{if $caption@first} data-class="expand"{elseif $caption@iteration < 4} data-hide="phone"{elseif $caption@iteration > 7} data-hide="always"{else} data-hide="phone,tablet"{/if}>{$caption}</th>
{/foreach}
<div class="item-actions">
<th>{'Actions'|gettext}</th>
</div>
</tr>
</thead>
<tbody>
{foreach from=$page->records item=fields key=ukey name=fields}
{foreach $page->records as $ukey=>$fields}
<tr>
{foreach from=$page->columns item=column key=field name=column}
{foreach $page->columns as $field=>$caption}
<td>
{if $column|lower == 'email'}
<a href="mailto:{$fields.$column}">
{elseif $smarty.foreach.column.iteration == 1}
{if $field|lower == 'email'}
<a href="mailto:{$fields.$field}">
{elseif $caption@iteration == 1}
<a href={link action=show forms_id=$f->id id=$fields.id}>
{/if}
{if $column|lower == 'image'}
{if $field|lower == 'image'}
{$matches = array()}
{$tmp = preg_match_all('~<a(.*?)href="([^"]+)"(.*?)>~', $fields.$column, $matches)}
{$tmp = preg_match_all('~<a(.*?)href="([^"]+)"(.*?)>~', $fields.$field, $matches)}
{$filename1 = $matches.2.0}
{$filename2 = str_replace(URL_BASE, '/', $filename1)}
{$base = str_replace(PATH_RELATIVE, '', BASE)}
{$fileinfo = expFile::getImageInfo($base|cat:$filename2)}
{if $fileinfo.is_image == 1}
{img src=$filename1 w=64}
{else}
{$fields.$column}
{$fields.$field}
{/if}
{else}
{$fields.$column}
{$fields.$field}
{/if}
{if $column|lower == 'email' || $smarty.foreach.column.iteration == 1}
{if $field|lower == 'email' || $caption@iteration == 1}
</a>
{/if}
</td>
Expand Down
24 changes: 12 additions & 12 deletions framework/modules/forms/views/forms/showall.bootstrap3.tpl
Expand Up @@ -58,40 +58,40 @@
<thead>
<tr>
{*{$page->header_columns}*}
{foreach from=$page->columns item=column key=name name=column}
<th{if $column@first} data-class="expand"{elseif $column@iteration < 4} data-hide="phone"{elseif $column@iteration > 7} data-hide="always"{else} data-hide="phone,tablet"{/if}>{$name}</th>
{foreach $page->columns as $name=>$caption}
<th{if $caption@first} data-class="expand"{elseif $caption@iteration < 4} data-hide="phone"{elseif $caption@iteration > 7} data-hide="always"{else} data-hide="phone,tablet"{/if}>{$caption}</th>
{/foreach}
<div class="item-actions">
<th>{'Actions'|gettext}</th>
</div>
</tr>
</thead>
<tbody>
{foreach from=$page->records item=fields key=ukey name=fields}
{foreach $page->records as $ukey=>$fields}
<tr>
{foreach from=$page->columns item=column key=field name=column}
{foreach $page->columns as $field=>$caption}
<td>
{if $column|lower == 'email'}
<a href="mailto:{$fields.$column}">
{elseif $smarty.foreach.column.iteration == 1}
{if $field|lower == 'email'}
<a href="mailto:{$fields.$field}">
{elseif $caption@iteration == 1}
<a href={link action=show forms_id=$f->id id=$fields.id}>
{/if}
{if $column|lower == 'image'}
{if $field|lower == 'image'}
{$matches = array()}
{$tmp = preg_match_all('~<a(.*?)href="([^"]+)"(.*?)>~', $fields.$column, $matches)}
{$tmp = preg_match_all('~<a(.*?)href="([^"]+)"(.*?)>~', $fields.$field, $matches)}
{$filename1 = $matches.2.0}
{$filename2 = str_replace(URL_BASE, '/', $filename1)}
{$base = str_replace(PATH_RELATIVE, '', BASE)}
{$fileinfo = expFile::getImageInfo($base|cat:$filename2)}
{if $fileinfo.is_image == 1}
{img src=$filename1 w=64}
{else}
{$fields.$column}
{$fields.$field}
{/if}
{else}
{$fields.$column}
{$fields.$field}
{/if}
{if $column|lower == 'email' || $smarty.foreach.column.iteration == 1}
{if $field|lower == 'email' || $caption@iteration == 1}
</a>
{/if}
</td>
Expand Down

0 comments on commit ace8d96

Please sign in to comment.