Версия: SugarCRM 5.0
Бывает, что к записи необходимо прикрепить файл. Это можно сделать, если у модуля есть субпанель "Activities", которая позволяет прикрепить "Notes" к записи. Есть второй способ, разместить на форме стандартное поле загрузки файла с кнопкой "обзор".
Конечно же описанный мною способ является лишь приблизительным, и уж он вовсе никак не окончательный...это лишь мои наработки в этом вопросе. Я рассчитываю что возможно он подтолкнет Вас к разработке своего, более оптимального решения. Тем более разработчики добавили прикрипление файлов в SugarCRM 5.1 Но лишь через студию.'document_name' =>
array (
'name' => 'document_name',
'vname' => 'LBL_DOCUMENT_NAME',
'type' => 'varchar',
'len' => '255',
'required'=>true
),
'filename' =>
array (
'name' => 'filename',
'vname' => 'LBL_FILENAME',
'type' => 'varchar',
'required'=>true,
'len' => '255',
),
'file_ext' =>
array (
'name' => 'file_ext',
'vname' => 'LBL_FILE_EXTENSION',
'type' => 'varchar',
'len' => '25',
),
'file_mime_type' =>
array (
'name' => 'file_mime_type',
'vname' => 'LBL_MIME',
'type' => 'varchar',
'len' => '100',
),
'uploadfile' =>
array (
'name'=>'uploadfile',
'vname' => 'LBL_FILENAME',
'type' => 'file',
'source' => 'non-db',
),
'active_date' =>
array (
'name' => 'active_date',
'vname' => 'LBL_DOC_ACTIVE_DATE',
'type' => 'date',
), var $document_name;
var $filename;
var $file_ext;
var $file_mime_type;
var $uploadfile;
var $active_date;
var $file_url;
var $file_url_noimage;Затем, к методам:function save($check_notify=false){
$move=false;
$upload_file = new UploadFile('uploadfile');
if (isset($_FILES['uploadfile']) && $upload_file->confirm_upload())
{
$this->filename = $upload_file->get_stored_file_name();
$this->file_mime_type = $upload_file->mime_type;
$this->file_ext = $upload_file->file_ext;
$move=true;
}
parent::save($check_notify);
if ($move) {
$upload_file->final_move($this->id);
}
return $this->id;
//handleRedirect($return_id, $this->object_name);
}
function fill_in_additional_detail_fields(){
global $theme;
global $current_language;
global $timedate;
global $app_list_strings;
$this->uploadfile = $this->filename;
$mod_strings = return_module_language($current_language, $this->object_name);
global $img_name;
global $img_name_bare;
if (!$this->file_ext) {
$img_name = "themes/".$theme."/images/".strtolower($this->file_ext)."_image_inline.gif";
$img_name_bare = strtolower($this->file_ext)."_image_inline";
}
//set default file name.
if (!empty ($img_name) && file_exists($img_name)) {
$img_name = $img_name_bare;
} else {
$img_name = "def_image_inline"; //todo change the default image.
}
//$this->file_url = "<a href='index.php?entryPoint=download&id=".basename(UploadFile :: get_url($this->filename, $this->id))."&type=file&module=".$this->table_name."target='_blank'>".get_image('themes/'.$theme.'/images/'.$img_name, 'alt="'.$mod_strings['LBL_LIST_VIEW_DOCUMENT'].'" border="0"')."</a>";
$this->file_url_noimage = basename(UploadFile :: get_url($this->filename, $this->id));
if(!empty($this->status_id)) {
$this->status = $app_list_strings['document_status_dom'][$this->status_id];
}
}'templateMeta' => array( и перед 'maxColumns' => '2', добавить: 'form' => array('enctype'=>'multipart/form-data',
'hidden'=>array()),
После массива 'widths' добавить массив:'javascript' =>
'<script type="text/javascript" src="include/javascript/popup_parent_helper.js?s={$SUGAR_VERSION}&c={$JS_CUSTOM_VERSION}"> </script>
<script type="text/javascript" src="include/jsolait/init.js?s={$SUGAR_VERSION}&c={$JS_CUSTOM_VERSION}"></script>
<script type="text/javascript" src="include/jsolait/lib/urllib.js?s={$SUGAR_VERSION}&c={$JS_CUSTOM_VERSION}"></script>
<script type="text/javascript" src="include/javascript/jsclass_base.js"></script>
<script type="text/javascript" src="include/javascript/jsclass_async.js"></script>
<script type="text/javascript" src="modules/Documents/documents.js?s={$SUGAR_VERSION}&c={$JS_CUSTOM_VERSION}"></script>',
array (
'document_name',
),
array (
array('name'=>'uploadfile',
'customCode' => '{if $fields.id.value!=""}
{assign var="type" value="hidden"}
{else}
{assign var="type" value="file"}
{/if}
<<input name="uploadfile" type = {$type} size="30" maxlength="" onchange="setvalue(this);" value="{$fields.filename.value}">{$fields.filename.value}',
'displayParams'=>array('required'=>true),
),
),
array (
array (
'name' => 'document_name',
'label' => 'LBL_DOC_NAME',
),
),
array (
array (
'name' => 'uploadfile',
'displayParams' => array('link'=>'uploadfile', 'id'=>'id'),
),
),'LBL_DOCUMENT_ID' => 'Document ID',
'LBL_DOCUMENT_NAME' => 'Document Name',
'LBL_MIME' => 'Mime Type',
'LBL_REVISION' => 'Revision',
'LBL_DOCUMENT' => 'Related Document',
'LBL_LATEST_REVISION' => 'Latest Revision',
'LBL_CHANGE_LOG'=> 'Change Log',
'LBL_FILE_EXTENSION' => 'File Extension',
} elseif(strtolower($_REQUEST['type']) == 'notes') {
$query = "SELECT filename name FROM notes WHERE id = '" . $_REQUEST['id'] ."'";
добавляем: } elseif(strtolower($_REQUEST['type']) == 'module_name') {
$query = "SELECT filename name FROM module_name WHERE id = '" . $_REQUEST['id'] ."'";
2009 © Olmish.com