[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