Changes
Specific Folder FTP Upload / ftp-deploy (push) Successful in 28s Details

This commit is contained in:
Ravi Gulhane 2026-10-28 16:09:06 +05:30
parent c9efdeaaf0
commit b15ddc9710
2 changed files with 172 additions and 85 deletions

View File

@ -258,10 +258,11 @@ class FormController extends Controller
return $this->deliverform($formdata, $finfo->data->questions);
} elseif ($formdata->link_type == 'list') {
$form = $finfo->data->form ?? $formdata;
$showPositions = $form->show_positions ?? $form->show_position ?? 'no';
$positionColumns = $this->getAvailablePositionColumns($finfo->data->submissions ?? [], $showPositions);
$userAttrs = $this->userAttributeCodes($form);
$userAttrLabels = $this->resolveUserAttributeLabels($userAttrs);
$dataDesignerView = $this->hasDataDesignerView($form);
$showPositions = $dataDesignerView ? 'no' : ($form->show_positions ?? $form->show_position ?? 'no');
$positionColumns = $dataDesignerView ? [] : $this->getAvailablePositionColumns($finfo->data->submissions ?? [], $showPositions);
$userAttrs = $dataDesignerView ? [] : $this->userAttributeCodes($form);
$userAttrLabels = $dataDesignerView ? [] : $this->resolveUserAttributeLabels($userAttrs);
$listViewData = [
'questions' => $finfo->data->questions,
'submissions' => $finfo->data->submissions,
@ -273,6 +274,7 @@ class FormController extends Controller
'positionColumns' => $positionColumns,
'userAttrs' => $userAttrs,
'userAttrLabels' => $userAttrLabels,
'dataDesignerView' => $dataDesignerView,
];
if (\View::exists('form.'.$formdata->partition.'.list-'.$formdata->form_id)) {
return view('form.'.$formdata->partition.'.list-'.$formdata->form_id)->with($listViewData);
@ -401,17 +403,39 @@ class FormController extends Controller
$sessionForm = $request->session()->get('formdata');
$canDeleteByPermission = $request->input('delete_submission') == 1
|| $this->sessionFlag($sessionForm, 'delete_submission');
$userAttrs = $this->userAttributeCodes($formdata);
$dataDesignerView = $this->hasDataDesignerView($formdata);
$userAttrs = $dataDesignerView ? [] : $this->userAttributeCodes($formdata);
foreach($submissions as $submission) {
if (!isset($submission->user_info->name)) continue;
$row = [
"date" => date("d M Y", strtotime($submission->updatedAt)),
"name" => $submission->user_info->name,
"designation" => $submission->user_info->designation ?? "",
"employee_code" => $submission->user_info->employee_code ?? "",
"submission_id" => $submission->id,
"actions" => []
];
if ($dataDesignerView) {
foreach ($questions as $code => $question) {
if (isset($question->type) && $question->type == 'hidden') {
continue;
}
$value = null;
if (isset($submission->formdata) && is_object($submission->formdata) && property_exists($submission->formdata, $code)) {
$value = $submission->formdata->{$code};
} elseif (isset($submission->{$code})) {
$value = $submission->{$code};
}
if (is_array($value)) {
$value = implode(', ', $value);
}
$row[$code] = $value ?? '';
}
if (isset($formdata->workflow) && $formdata->workflow == 'yes') {
$row['workflow_next_approver'] = $submission->workflow_next_approver ?? '';
}
} else {
$row['date'] = date("d M Y", strtotime($submission->updatedAt));
$row['name'] = $submission->user_info->name;
$row['designation'] = $submission->user_info->designation ?? "";
$row['employee_code'] = $submission->user_info->employee_code ?? "";
foreach ($userAttrs as $attr) {
$row[$attr] = $this->userAttributeValue($submission->user_info ?? null, $attr);
}
@ -479,6 +503,7 @@ class FormController extends Controller
$row['manager2_name'] = $submission->manager2_name ?? '';
$row['manager2_code'] = $submission->manager2_code ?? '';
}
}
// actions
if(isset($formdata->approver_can_edit) && $formdata->approver_can_edit == 'yes') {
@ -508,6 +533,7 @@ class FormController extends Controller
}
// Target forms: always expose approval status for list UI (downloadpersonalization list)
if (!$dataDesignerView) {
$targetFormIds = [
'1781004538-88671587-3b81-403b-af63-fdbfae8a965e', // rapport-team2
'1782118020-9c6160bf-f07c-465e-9ea1-e8ff0c0b89dd', // rapport-titans
@ -526,6 +552,7 @@ class FormController extends Controller
$row['workflow_status'] = ucfirst(trim((string) $workflowStatus));
$row['workflow_next_approver'] = $submission->workflow_next_approver ?? ($row['workflow_next_approver'] ?? '');
}
}
$jsonRows[] = $row;
}
@ -13337,6 +13364,47 @@ class FormController extends Controller
Log::debug($cmd);
}
/**
* True when the form Data Designer has at least one show_in_view field.
* Opt-in only: empty designer or export-only fields keep the legacy list.
*/
protected function hasDataDesignerView($form): bool
{
if (!$form) {
return false;
}
$designer = $form->data_designer ?? null;
if (is_string($designer) && trim($designer) !== '') {
$decoded = json_decode($designer, true);
$designer = is_array($decoded) ? $decoded : null;
} elseif (is_object($designer)) {
$designer = (array) $designer;
}
if (!is_array($designer)) {
return false;
}
$fields = $designer['fields'] ?? [];
if (is_object($fields)) {
$fields = (array) $fields;
}
if (!is_array($fields)) {
return false;
}
foreach ($fields as $field) {
if (is_object($field)) {
$show = $field->show_in_view ?? false;
} elseif (is_array($field)) {
$show = $field['show_in_view'] ?? false;
} else {
continue;
}
if ($show === true || $show === 1 || $show === '1' || $show === 'true') {
return true;
}
}
return false;
}
/**
* Selected user attribute codes when Show User Attributes is Yes.
* A saved attribute list is ignored while that setting is No.

View File

@ -64,6 +64,15 @@
<thead>
<tr>
<th data-priority="1">Action</th>
@if(!empty($dataDesignerView))
@foreach($questions as $code => $question)
@if(isset($question->type) && $question->type == 'hidden')
@continue
@endif
<th data-priority="1">{{ $question->label }}</th>
@endforeach
@php $showGeneratedImage = false; @endphp
@else
<th data-priority="1">Submission Date</th>
<th data-priority="1">Submitted By</th>
<th data-priority="1">Employee Code</th>
@ -107,6 +116,7 @@
@if($showGeneratedImage)
<th data-priority="1">Generated Image</th>
@endif
@endif
</tr>
</thead>
<tbody>
@ -240,6 +250,14 @@
return buttons;
}
},
@if(!empty($dataDesignerView))
@foreach($questions as $code => $question)
@if(isset($question->type) && $question->type == 'hidden')
@continue
@endif
{ "data": "{{$code}}", "defaultContent": "" },
@endforeach
@else
{ "data": "date" },
{ "data": "name" },
{ "data": "employee_code" },
@ -310,6 +328,7 @@
}
},
@endif
@endif
],
"initComplete": function(settings, json) {
var textBox = $('.dataTables_filter label input');