ФорумФорум  КалендарьКалендарь  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
автор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
автор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
автор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
автор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
автор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
автор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
автор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
автор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
автор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Август 2018
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

Поделиться | 
 

 Attachment файлов к записи (SugarCRM 5.0)

Перейти вниз 
АвторСообщение
Admin
Admin


Сообщения : 74
Очки : 71
Дата регистрации : 2010-08-23

СообщениеТема: Attachment файлов к записи (SugarCRM 5.0)   Ср Сен 08, 2010 6:49 pm

Бывает, что к записи необходимо прикрепить файл. Это можно сделать, если у модуля есть субпанель "Activities", которая позволяет прикрепить "Notes" к записи. Есть второй способ, разместить на форме стандартное поле загрузки файла с кнопкой "обзор".
Конечно же описанный мною способ является лишь приблизительным, и уж он вовсе никак не окончательный...это лишь мои наработки в этом вопросе. Я рассчитываю что возможно он подтолкнет Вас к разработке своего, более оптимального решения. Тем более разработчики добавили прикрипление файлов в SugarCRM 5.1 Но лишь через студию.
И так, для осуществления задуманного нам потребуется изменить следующие файлы:
1. /modules/module_name/vardefs.php;
2. /modules/module_name/module_name.php;
3. /modules/module_name/metadata/editviewdefs.php;
4. /modules/module_name/metadata/detailviewdefs.php;
5. /modules/module_name/language/*.lang.php;
6. Файл, лежащий в корневой директории: download.php;

Vardefs.php
Чтобы добавить в таблицу БД нужные поля, вставляем следующий код:

Код:
'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',
 ),


Поле active_date необязательное.

Module_name.php
К свойствам класса добавить:

Код:
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];
       }
    }

editviewdefs.php
Теперь разместим наши поля на форме редактирования и добавления записи.
После

Код:
'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>',


И потом, примерно на 65 строку:

Код:
 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),
            ),
   ),


detailviewdefs.php
Разместим ссылку для скачивания файла и имя файла на форме просмотра записи:

Код:
array (
    array (
      'name' => 'document_name',
      'label' => 'LBL_DOC_NAME',
    ),
  ),
  array (
    array (
      'name' => 'uploadfile',
      'displayParams' => array('link'=>'uploadfile', 'id'=>'id'),
    ),
  ),

*.lang.php
Теперь необходимо для созданных полей добавить метки:

Код:
'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',


donwload.php
И наконец, чтобы мы могли скачать добавленный файл, примерно после 66-ой строки, после

Код:
} 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'] ."'";


Repair модуля. Соглашаемся на предложение добавить в базу поля. Готово.
Вернуться к началу Перейти вниз
Посмотреть профиль http://easy-sugarcrm.forum2x2.ru
 
Attachment файлов к записи (SugarCRM 5.0)
Вернуться к началу 
Страница 1 из 1
 Похожие темы
-
» Размещение картинок и файлов на форуме

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: SugarCRM :: Статьи по установке и настройке SugarCRM-
Перейти: