diff --git a/custom/include/generic/SugarWidgets/SugarWidgetSubPanelFileDownloadViewLink.php b/custom/include/generic/SugarWidgets/SugarWidgetSubPanelFileDownloadViewLink.php new file mode 100644 index 00000000000..2a4713389a1 --- /dev/null +++ b/custom/include/generic/SugarWidgets/SugarWidgetSubPanelFileDownloadViewLink.php @@ -0,0 +1,102 @@ +_get_column_alias($layout_def); + $key = strtoupper($key); + } + + if (empty($layout_def['fields'][$key])) { + return ""; + } else { + $value = $layout_def['fields'][$key]; + } + + if (empty($layout_def['target_record_key'])) { + $record = $layout_def['fields']['ID']; + } else { + $record_key = strtoupper($layout_def['target_record_key']); + $record = $layout_def['fields'][$record_key]; + } + + if (!empty($layout_def['target_module_key'])) { + if (!empty($layout_def['fields'][strtoupper($layout_def['target_module_key'])])) { + $module=$layout_def['fields'][strtoupper($layout_def['target_module_key'])]; + } + } else { + if (!empty($layout_def['target_module'])) { + $module = $layout_def['target_module']; + } else { + $module = $layout_def['module']; + } + } + + global $current_user; + $groupAccessView = SecurityGroup::groupHasAccess($module,$record,'view'); + if (!empty($record) && + ($layout_def['DetailView'] && !$layout_def['owner_module'] + || $layout_def['DetailView'] && !ACLController::moduleSupportsACL($layout_def['owner_module']) + || ACLController::checkAccess($layout_def['owner_module'], 'view', $layout_def['owner_id'] == $current_user->id, 'module', $groupAccessView))) { + $link = ajaxLink("index.php?entryPoint=download&id={$record}&type={$module}"); + return ''.$value.''; + } else { + return $value; + } + } +} diff --git a/include/ListView/ListViewData.php b/include/ListView/ListViewData.php index ef11781b5d5..eae8e0ff8fd 100755 --- a/include/ListView/ListViewData.php +++ b/include/ListView/ListViewData.php @@ -310,6 +310,13 @@ public function getListViewData($seed, $where, $offset=-1, $limit = -1, $filter_ $orderBy = 'last_name '.$order['sortOrder'].', first_name '.$order['sortOrder']; } + // STIC-Custom 20240715 MHP - https://github.com/SinergiaTIC/SinergiaCRM/pull/62 + // If 'uploadfile' field is included in the fields to be displayed, 'filename' is added to the array since in custom modules + // that inherit from the file type module, the database field that stores the name is called 'filename'. + if (isset($GLOBALS["dictionary"][$seed->module_dir]['templates']['file']) && in_array('uploadfile', $filter_fields)){ + $filter_fields['filename'] = true; + } + // END STIC-Custom $ret_array = $seed->create_new_list_query($orderBy, $where, $filter_fields, $params, 0, '', true, $seed, $singleSelect); $ret_array['inner_join'] = ''; if (!empty($this->seed->listview_inner_join)) { @@ -369,6 +376,15 @@ public function getListViewData($seed, $where, $offset=-1, $limit = -1, $filter_ while (($row = $this->db->fetchByAssoc($result)) != null) { if ($count < $limit) { + // STIC-Custom 20240715 MHP - https://github.com/SinergiaTIC/SinergiaCRM/pull/62 + // In custom modules that inherit from the file type module, the field that displays the file name is called 'uploadfile' instead of 'filename'. + // The value of the 'filename' field is copied to the 'uploadfile' so that it can be displayed in the list view. + if (isset($GLOBALS["dictionary"][$seed->module_dir]['templates']['file']) && + !isset($row['uploadfile']) && isset($row['filename']) && !empty($row['filename'])) + { + $row['uploadfile'] = $row['filename']; + } + // END STIC-Custom $id_list .= ',\''.$row[$id_field].'\''; $idIndex[$row[$id_field]][] = count($rows); $rows[] = $seed->convertRow($row); diff --git a/include/SugarObjects/templates/file/metadata/listviewdefs.php b/include/SugarObjects/templates/file/metadata/listviewdefs.php index 7fc45cce24a..12e43dfb908 100755 --- a/include/SugarObjects/templates/file/metadata/listviewdefs.php +++ b/include/SugarObjects/templates/file/metadata/listviewdefs.php @@ -52,6 +52,16 @@ 'link' => true, 'default' => true ), + // STIC-Custom 20240715 MHP - https://github.com/SinergiaTIC/SinergiaCRM/pull/62 + // Add the file name and options to download and view the file in a new tab in the subpanel of a new module of type File + 'UPLOADFILE' => + array ( + 'type' => 'file', + 'label' => 'LBL_FILE_UPLOAD', + 'width' => '10%', + 'default' => true, + ), + // END STIC-Custom 'MODIFIED_BY_NAME' => array( 'width' => '10', 'label' => 'LBL_MODIFIED_USER', diff --git a/include/SugarObjects/templates/file/metadata/subpanels/default.php b/include/SugarObjects/templates/file/metadata/subpanels/default.php index 236b270ef77..d706d14eaa3 100755 --- a/include/SugarObjects/templates/file/metadata/subpanels/default.php +++ b/include/SugarObjects/templates/file/metadata/subpanels/default.php @@ -52,30 +52,76 @@ 'where' => '', 'list_fields' => array( + // STIC-Custom 20240715 MHP - https://github.com/SinergiaTIC/SinergiaCRM/pull/62 + // Add the file name and options to download and view the file in a new tab in the subpanel of a new module of type File + // 'object_image' => array( + // 'widget_class' => 'SubPanelIcon', + // 'width' => '2%', + // 'image2' => 'attachment', + // 'image2_url_field' => array( + // 'id_field' => 'selected_revision_id', + // 'filename_field' => 'selected_revision_filename' + // ), + // 'attachment_image_only' => true, + + // ), + // 'document_name' => array( + // 'name' => 'document_name', + // 'vname' => 'LBL_LIST_DOCUMENT_NAME', + // 'widget_class' => 'SubPanelDetailViewLink', + // 'width' => '45%', + // ), + // 'active_date' => array( + // 'name' => 'active_date', + // 'vname' => 'LBL_DOC_ACTIVE_DATE', + // 'width' => '45%', + // ), 'object_image' => array( + 'vname' => 'LBL_OBJECT_IMAGE', 'widget_class' => 'SubPanelIcon', 'width' => '2%', 'image2' => 'attachment', 'image2_url_field' => array( - 'id_field' => 'selected_revision_id', - 'filename_field' => 'selected_revision_filename' + 'id_field' => 'id', + 'filename_field' => 'filename' ), 'attachment_image_only' => true, - ), + 'filename' => array( + 'name' => 'filename', + 'vname' => 'LBL_LIST_DOCUMENT_NAME', + 'width' => '20%', + 'sortable'=>false, + 'widget_class' => 'SubPanelDetailViewLink', + ), 'document_name' => array( 'name' => 'document_name', - 'vname' => 'LBL_LIST_DOCUMENT_NAME', - 'widget_class' => 'SubPanelDetailViewLink', + 'vname' => 'LBL_FILENAME', + 'widget_class' => 'SubPanelFileDownloadViewLink', 'width' => '45%', ), - + 'status_id' => array( + 'type' => 'enum', + 'vname' => 'LBL_DOC_STATUS', + 'width' => '10%', + ), 'active_date' => array( 'name' => 'active_date', 'vname' => 'LBL_DOC_ACTIVE_DATE', 'width' => '45%', ), - + 'assigned_user_name' => + array ( + 'link' => true, + 'type' => 'relate', + 'vname' => 'LBL_ASSIGNED_TO_NAME', + 'id' => 'ASSIGNED_USER_ID', + 'width' => '10%', + 'widget_class' => 'SubPanelDetailViewLink', + 'target_module' => 'Users', + 'target_record_key' => 'assigned_user_id', + ), + // END STIC-Custom 'edit_button' => array( 'vname' => 'LBL_EDIT_BUTTON', 'widget_class' => 'SubPanelEditButton',