[Vtigercrm-developers] Add upload file to Task

Uma S uma.s at vtiger.com
Tue Mar 10 11:09:56 GMT 2020


Hi Sukhdev,

Please go through the saveRecord() api in Save.php (See
<https://sc.vtiger.in/screenshots/uma-sc-at-10-03-2020-16-37-08.png>),

which expects 'imgDeleted' to be set on request to delete the saved images
from recordModel.

On Tue, Mar 10, 2020 at 2:11 PM Sukhdev Mohan <s.mohan at myti.it> wrote:

> Hi Uma,
>
> Somehow I solved it!
> As you say UI Type 61 and have added this
>
> {*<!--
> /*********************************************************************************
>   ** The contents of this file are subject to the vtiger CRM Public License Version 1.0
>    * ("License"); You may not use this file except in compliance with the License
>    * The Original Code is: vtiger CRM Open Source
>    * The Initial Developer of the Original Code is vtiger.
>    * Portions created by vtiger are Copyright (C) vtiger.
>    * All Rights Reserved.
>   *
>  ********************************************************************************/
> -->*}
> {strip}
>     {assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()}
>     {assign var=FILE_LOCATION_TYPE_FIELD value=$RECORD_STRUCTURE['LBL_FILE_INFORMATION']['filelocationtype']}
>     {if $FILE_LOCATION_TYPE_FIELD eq NULL}
>         {assign var=DOCUMENTS_MODULE_MODEL value=Vtiger_Module_Model::getInstance('Documents')}
>         {assign var=FILE_LOCATION_TYPE_FIELD value=$DOCUMENTS_MODULE_MODEL->getField('filelocationtype')}
>     {/if}
>     {assign var=IS_INTERNAL_LOCATION_TYPE value=$FILE_LOCATION_TYPE_FIELD->get('fieldvalue') neq 'E'}
>     {assign var=IS_EXTERNAL_LOCATION_TYPE value=$FILE_LOCATION_TYPE_FIELD->get('fieldvalue') eq 'E'}
>
>     {assign var=FIELD_VALUE value=$FIELD_MODEL->get('fieldvalue')}
>     {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()}
>
>     <div class="fileUploadContainer">
>         {if $IS_EXTERNAL_LOCATION_TYPE}
>             <input type="text" class="inputElement {if $FIELD_MODEL->isNameField()}nameField{/if}" name="{$FIELD_MODEL->getFieldName()}"
>                    value="{if $IS_EXTERNAL_LOCATION_TYPE}{$FIELD_VALUE}{/if}" {if !empty($SPECIAL_VALIDATOR)} data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}' {/if}
>                     {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
>                     {if count($FIELD_INFO['validator'])}
>                         data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}'
>                     {/if}
>             />
>         {else}
>             <div class="fileUploadBtn btn btn-primary">
>                 <span><i class="fa fa-laptop"></i> {vtranslate('LBL_UPLOAD', $MODULE)}</span>
>                 <input type="file" class="inputElement {if $FIELD_MODEL->isNameField()}nameField{/if}" name="{$FIELD_MODEL->getFieldName()}"
>                        value="{if $IS_INTERNAL_LOCATION_TYPE} {$FIELD_VALUE} {/if}" {if !empty($SPECIAL_VALIDATOR)}data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if} {if $IS_INTERNAL_LOCATION_TYPE && !empty($FIELD_VALUE)} style="width:86px;" {/if}
>                         {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
>                         {if count($FIELD_INFO['validator'])}
>                             data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}'
>                         {/if}
>                 />
>             </div>
>         {/if}
>         <div class="uploadedFileDetails {if $IS_EXTERNAL_LOCATION_TYPE}hide{/if}">
>             <div class="uploadedFileSize"></div>
>             <div class="uploadedFileName">
>                 {if $IS_INTERNAL_LOCATION_TYPE && !empty($FIELD_VALUE)}
>                     [{$FIELD_VALUE}]
>                 {/if}
>             </div>
>             <div class="uploadFileSizeLimit redColor">
>                 {vtranslate('LBL_MAX_UPLOAD_SIZE',$MODULE)} <span class="maxUploadSize" data-value="{$MAX_UPLOAD_LIMIT_BYTES}">{$MAX_UPLOAD_LIMIT_MB}{vtranslate('MB',$MODULE)}</span>
>             </div>
>         </div>
>     </div>
> {/strip}
>
> Customizing the layouts/v7/modules/Vtiger/partials/EditViewContents.tpl
> with this
>
> {if $FIELD_MODEL->get('uitype') neq '83'}
>    <td class="fieldValue" {if $FIELD_MODEL->getFieldDataType() eq 'boolean'} style="width:25%" {/if} {if $FIELD_MODEL->get('uitype') eq '19'} colspan="3" {assign var=COUNTER value=$COUNTER+1} {/if}>
>
>       {if $MODULE eq 'Calendar' && $FIELD_MODEL->get('uitype') eq '69'}
>          {include file=vtemplate_path('uitypes/File.tpl',$MODULE)}
>       {else}
>          {include file=vtemplate_path($FIELD_MODEL->getUITypeModel()->getTemplateName(),$MODULE)}
>       {/if}
>    </td>
> {/if}
>
>
> But there is problem when editing: the attachments is deleted but not
> updated with the new upload. I’ve modified CRMEntity.php in this way:
>
> if ($insertion_mode == 'edit') {
>    //Track the update and update only when needed - vikas
>    $updateFieldValues = @array_combine($updateColumnNames, $update_params);
>    $changedFields =  $this->column_fields->getChanged();
>
>    if(count($changedFields) > 0) {
>       $update = array();
>       $update_params = array();
>       foreach($changedFields as $field) {
>          $fieldColumn = $updateFieldNameColumnNameMap[$field];
>          if(@array_key_exists($fieldColumn, $updateFieldValues)) {
>             array_push($update, $fieldColumn.'=?');
>             array_push($update_params, $updateFieldValues[$fieldColumn]);
>          }
>       }
>
>               if ($module == "Calendar") {
>                   array_push($update, 'allegato=?');
>                   if (array_key_exists("allegato", $updateFieldValues)) {
>                       array_push($update_params, $updateFieldValues["allegato"]);
>                   } elseif($updateFieldValues["allegato"] == " 0000 ") {
>                       array_push($update_params, '');
>                   }
>
>               }
>       if (count($update) > 0) {
>          $sql1 = "UPDATE $table_name SET " . implode(",", $update) . " WHERE " . $this->tab_name_index[$table_name] . "=?";
>          array_push($update_params, $this->id);
>          if(Vtiger_Functions::isUserSpecificFieldTable($table_name, $module)){
>             $sql1 .= ' AND userid = ?';
>             array_push($update_params, $current_user->id);
>          }
>          $adb->pquery($sql1, $update_params);
>       }
>    }
> } else {
>    $sql1 = "insert into $table_name(" . implode(",", $column) . ") values(" . generateQuestionMarks($value) . ")";
>    $adb->pquery($sql1, $value);
> }
>
> Still there’s one problem: you can’t delete an attached Item (delete an
> attachment and have the field empty)… Any idea?
>
>
>
> Best Regards,
> Sukhdev Mohan
> ———————————
> Cel. (+39) 320 7020345
> Email s.mohan at myti.it <s.mohan at myti.it>
>
>
>
>
> Il giorno 10 mar 2020, alle ore 09:10, Uma S <uma.s at vtiger.com> ha
> scritto:
>
> Hi Sukhdev,
>
> Do try with uitype 61 for file type field. Check this for reference
> <https://sc.vtiger.in/screenshots/uma-sc-at-10-03-2020-13-39-29.png>
>  (660_to_700.php)
>
> On Wed, Feb 26, 2020 at 4:31 PM Alan Lord <alanslists at gmail.com> wrote:
>
>> On 26/02/2020 10:51, Sukhdev Mohan wrote:
>> > Hi alan,
>> >
>> > Use case is as follows: the sales person need to add documents (PDF or
>> > Images) while adding tasks, that’s why we discarded the relationship
>> > with documents. How can I do?
>>
>> See my earlier reply; it is not trivial.
>>
>> You will need to clone a fair bit of code/functionality from the other
>> relevant modules. Take a look at the Documents and Contacts/Products
>> modules to see how they do it.
>>
>>
>> Al
>>
>>
>> _______________________________________________
>> http://www.vtiger.com/
>
>
>
> --
> With
> Best Regards
> Uma.S
> Vtiger Team
> _______________________________________________
> http://www.vtiger.com/
>
>
> _______________________________________________
> http://www.vtiger.com/



-- 
With
Best Regards
Uma.S
Vtiger Team
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20200310/0d322227/attachment-0001.html>


More information about the vtigercrm-developers mailing list