0

我的版本:

SugarCRM CE 6.5.2 在 Linux 上运行

我想做的事 :

我通过编写几个逻辑钩子在“custom/modules/Documents”中自定义了 Documents 模块。这些逻辑挂钩在“ressources/”中创建新文件夹,这是我的新上传文件夹。(我已将 config.php 中的“upload_dir”从“./upload”更改为“./ressources”)这是通过在工作室中创建的名为“folder_name”的自定义字段完成的,然后,逻辑挂钩剪切和粘贴文件上传到这个新文件夹。

我的问题是什么

所以,有了这一切,我在编辑、详细信息和修订子面板视图中的下载 url 是错误的。我想将其更改为正确的文件夹,例如,在 url 中添加一个文件夹参数,如下所示:

/index.php?entryPoint=download&folder=图片&id=idDoc&type=文档

我试图更改 EditView.tpl 或 DetailView.tpl 中的 a href 链接(如 ),但它不起作用,因为它们位于我的缓存/模块/文档文件夹中,并且在我进行快速修复时被覆盖。

因此,我将 DetailView.tpl 和 EditView.tpl 复制/粘贴到 custom/modules/Documents/tpls 并尝试覆盖 view.edit.php 和 view.detail.php 以链接自定义模板,但它不起作用. 代码 :

<?php

  require_once('include/MVC/View/views/view.detail.php');

  class DocumentsViewDetail extends ViewDetail {

     function DocumentsViewDetail() {
       parent::ViewDetail();
     }

    function display() {
      parent::display();
    }

    function detailViewProcess() {
      $this->processSearchForm();
      $this->lv->searchColumns = $this->searchForm->searchColumns;

      if (!$this->headers)
        return;
      if (empty($_REQUEST['search_form_only']) || $_REQUEST['search_form_only'] == false) {
        //here we are overriding with your custom template            
        $this->lv->setup($this->seed, 'custom/modules/Documents/tpls/DetailView.tpl', $this->where, $this->params);
        echo $this->lv->display();
       }
   }

}

?>

你知道为什么这不起作用吗?

您对我如何重写我的 URL 或覆盖编辑、修订子面板和详细信息视图有任何想法吗?

请回答,这是紧急的

提前谢谢你。

4

2 回答 2

1

尝试将文件夹参数添加$file_urlfill_in_additional_detail_fields().modules/Documents/Document.php

[已编辑]

EditView: include/SugarFields/Fields/File/EditView.tpl
DetailView: include/SugarFields/Fields/File/DetailView.tpl

<a href="index.php?entryPoint=download&id={$fields.{{$vardef.fileId}}.value}&type={{$vardef.linkModule}}&folder=test" ...

ListView: include/SugarFields/Fields/File/ListView.tpl

<a href="index.php?entryPoint=download&id={$parentFieldArray.ID}&type={$displayParams.module}{$vardef.displayParams.module}&folder=test" ...

于 2012-09-26T17:38:53.777 回答
0

所以,感谢@air4x,我确实回答了我的问题:覆盖 DetailView.tpl 为了使其升级安全,我从

include/SugarFields/Fields/File/DetailView.tpl

custom/include/SugarFields/Fields/File/DetailView.tpl

有用!

但是有一个大麻烦来了...

解释: 1]我创建一个新文档,将image01上传到Folder01。节省。数据库正常。在 DetailView 中,文件夹名称为“Folder01”,链接“//Folder01/image01_id”有效。

2]我创建另一个新文档,将image02上传到Folder02。节省。数据库正常。但是在 DetailView 中,文件夹的名称不是“Folder02”而是“Folder01”。并且链接是 //Folder01/image02_id 所以它不起作用,因为在数据库或我的文件夹中,文件仍在 Folder02 中。

这是我的 custom/include/SugarFields/Fields/File/DetailView.tpl 代码:

//BEGIN the code i modified
<span class="sugar_field" id="{{if empty($displayParams.idName)}}{{sugarvar key='name'}}{{else}}{{$displayParams.idName}}{{/if}}">
   <a href="ressources/{$fields.folder_name_c.value}/{$fields.{{$vardef.fileId}}.value}" class="tabDetailViewDFLink" target='_blank'>{{sugarvar key='value'}}</a>
</span>
//END the code i modified

{{if isset($vardef) && isset($vardef.allowEapm) && $vardef.allowEapm}}
    {if isset($fields.{{$vardef.docType}}) && !empty($fields.{{$vardef.docType}}.value) && $fields.{{$vardef.docType}}.value != 'SugarCRM' && !empty($fields.{{$vardef.docUrl}}.value) }
        {capture name=imageNameCapture assign=imageName}
          {$fields.{{$vardef.docType}}.value}_image_inline.png
        {/capture}
        <a href="{$fields.{{$vardef.docUrl}}.value}" class="tabDetailViewDFLink" target="_blank">{sugar_getimage name=$imageName alt=$imageName other_attributes='border="0" '}</a>
   {/if}
{{/if}}
{{if !empty($displayParams.enableConnectors)}}
    {{sugarvar_connector view='DetailView'}}
{{/if}}

我真的不知道为什么我的$fields.folder_name_c.value保留在第一个文档中并替换第二个文档中的那个...你知道我如何在 EditView.tpl 中进行 sql 查询来更改它并拥有正确的价值?

拜托,我真的需要帮助。

谢谢

(ps:@air4x,非常感谢,即使我遇到了另一个麻烦,也让我知道如何覆盖 EditView。谢谢!

于 2012-09-28T10:19:59.900 回答