SuiteCRM图片上传(自定义控制器)

当前的需求是在SuiteCRM系统中添加一个富文本编辑器,那就会涉及到上传本地图片的问题,富文本编辑器这是用的是Wangeditor,下面就开始我们的代码工作。

第一步,配置wangeditor,让它支持图片的本地上传

wangeditor配置本地上传图片很简单,官网上说的也很清楚,直接上代码。

custom/include/SugarFields/Fields/Editor/EditView.tpl

<div id='{{if empty($displayParams.idName)}}{{sugarvar key='name'}}{{else}}{{$displayParams.idName}}{{/if}}' style="width: 243%;"></div>

<textarea id="text1" name='{{if empty($displayParams.idName)}}{{sugarvar key='name'}}{{else}}{{$displayParams.idName}}{{/if}}' style="display: none;">{$value}</textarea>

<script>
    {literal}
    jQuery.browser={};
    (function(){jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)./)){ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();

    $(document).ready(function(){
    	var textareaDom = '#{/literal}{{if empty($displayParams.idName)}}{{sugarvar key='name'}}{{else}}{{$displayParams.idName}}{{/if}}{literal}';
        var E = window.wangEditor
        var editor = new E(textareaDom)
        var $text1 = $('#text1')  // 文本域

        editor.customConfig.onchange = function (html) {
            // 监控变化,同步更新到 textarea
            $text1.val(html)
        }
        // 配置服务器端地址
    	editor.customConfig.uploadImgServer = 'index.php?module=aaaa_A1&action=upload';
    	editor.customConfig.uploadFileName = 'file';
    	editor.customConfig.uploadImgMaxSize = 3 * 1024 * 1024;

        editor.create()
        // 初始化 编辑器 的值
        editor.txt.html($text1.val());
    });
    {/literal}
</script>

这样的话,在我们的编辑器里就会多出一个“上传图片”tab,如下:
在这里插入图片描述

第二步,编写上传图片的后台接口

从上面的代码中,我们可以看到图片上传的接口地地为index.php?module=aaaa_A1&action=upload,这样的写法,是符合SuiteCRM的路由规则的。这里的aaaa_A1是控制器,upload是方法。
我们将控制器建在如下的目录中,SuiteCRM有自己的一套规则。

custom/modules/aaaa_A1/controller.php

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

Class CustomAaaa_A1Controller extends SugarController
{
	// 编辑器内本地图片上传
    public function action_upload()
    {
        $file = $_FILES['file'];
        $name_arr = explode('.', $file['name']);
        $file_suffix = strtolower(end($name_arr));
        $file_name = self::createFileName($file_suffix);

        $file_size = $file['size'];
        $file_tmp = $file['tmp_name'];
        
        $extensions= array('jpeg', 'jpg', 'png', 'gif');
         // 规定可以上传的扩展名文件 
        if(in_array($file_suffix, $extensions) === false){
            echo json_encode(['errno' => 1]);die;
        }
        // 规定可以上传的文件大小
        if($file_size > 3 * 1024 * 1024) {
            echo json_encode(['errno' => 1]);die;
        }

        // 把图片从临时文件夹内的文件移动到指定目录 
        $fullPath = self::mkDir('Uploads', date('Y-m-d'));
        $fullName = $fullPath. '/'. $file_name;
        move_uploaded_file($file_tmp, $fullName);
        echo json_encode([
            'errno' => 0,
            'data' => ['http://'. $_SERVER['HTTP_HOST']. '/'. $fullName]
        ]);die;
    }

    // 生成图片名
    public static function createFileName($file_suffix)
    {
        $str = md5(uniqid(mt_rand(), true));
        $uuid  = substr($str, 0, 8). '-';
        $uuid .= substr($str, 8, 4). '-';
        $uuid .= substr($str, 12, 4);
        return $prefix. $uuid. '.'. $file_suffix;
    }

    // 创建目录
    public static function mkDir($path, $dir)
    {
        $fullPath = $path. '/'. $dir;
        if(!is_dir($fullPath))
            mkdir($fullPath, 0755);
        return $fullPath;
    }	
}

这样,编辑器就可以上传本地的图片了。

最后补充一点,SuiteCRM系统在使用控制器的时候,首先会查找 custom/module/<模块名>/controller.php这个文件。如果未找到此文件,则会继续查找module/<模块名>/controller.php这个文件。要是这两个文件都没有找到,则将使用默认控制器include/MVC/Controller/SugarController.php
因为custom/module下的模块目录是你在后台添加上去的,我们为了不用多次添加上传接口,所以,我们可以把上传接口写到module目录下,在原有的控制器文件中,添加上传接口,比如原有的Home模块(目录)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
据说是CRM市场最牛软件,从Siebel经过SugarCRM到现在的SuiteCRM Siebel 公司建于1993年,在2001年度财富杂志所发表的全球100个发展最快的企业名单上位居第二位,曾经红得发紫。 2012年 IBM用SugarCRM替代Siebel做为客户关系管理系统,在这一年里Siebel失去惠普、微软和IBM三大顶级客户。 SugarCRM 从2007 年起连续多年获得Bossie Awards年度最佳开源CRM软件,经历了高速成长,从开源慢慢变为只开一点点,直到不再维护开源版。 SuiteCRM 从2014开始, 2015 2016逐年替代了SugarCRM成为Bossie Awards最佳开源CRM软件。 SUITECRM是一个屡获殊荣的企业级的,强大的,可定制的,免费的开源客户关系管理应用程序。14种语言界面自由替换,世界上一些最大的公司是优先选择SUITECRM上一代像SALESFORCE的,SAP,SIEBEL和MICROSOFT应用程序。 SUITECRM提供具有大大降低了部署成本和(TCO)总拥有成本相同的功能,它是完全免费的 - 每行代码是开源的,永远都是。 我们正在改变CRM变得更好 - 更低的成本,更灵活,更快速的部署,没有厂商限制。 经过超过多年的发展,SuiteCRM仍然在不断实现创新及扩展。这位从SugarCRM手中接过开源CRM皇冠的继任者将账目管理、销售自动化与营销工具等从Sugar专业版中的功能加以整合。另外,它还提供丰富的扩展集合,从企业安全插件到搜索、社交媒体乃至Mail Chimp市场营销工具皆在其中。 它的最新版本提供深层报告选项,并经由Suite Spot这一新型分析工具实现。这款拖拽操作型报告设计工具允许大家创建并定义复杂的报告,而不要求使用者接受SQL培训或者具备相关知识。它的报告可以本地方式交付,或者推送至门户网站以进行共享。 而更为重要的是,SuiteCRM用户界面在设计中充分考虑到移动设备的实际情况,专门进行了小屏幕优化,同时提供可靠的信息同步机制。如果大家希望寻找一种功能及性能出众的销售流程与客户交互CRM解决方案,那么SuiteCRM绝对值得一试。 产品亮点 ● 开源、免费,多语言 ● 荣获BOSSIE评比的2014, 2015和2016年度最佳CRM软件 ● 定位于与Salesforce, Oracle, SAP and Microsoft Dynamics等商业CRM竞争 ● 能够通过工作流功能来对报价、Pipeline、合同等进行审批流程设置 ● 产品基于SugarCRM开源版,但远远超出 适用的操作系统 Windows: SuiteCRM runs on any OS that runs PHP Linux: SuiteCRM runs on any OS that runs PHP Mac: SuiteCRM runs on any OS that runs PHP
SuiteCRM是一款开源的客户关系管理软件,拥有中文版。它提供了一套全面的工具和功能,用于管理和跟踪客户关系。中文版的SuiteCRM对于中国用户来说非常重要,因为它使得使用软件的过程更加方便和易于理解。 首先,中文版的SuiteCRM提供了全面的中文界面,所有的菜单、选项和标签都可以用中文显示。这使得用户无需费力地去学习和理解英文,可以直接在自己熟悉的语言环境下操作和使用软件。这对于那些对英文不太熟悉的用户来说,是一大优势。 其次,中文版的SuiteCRM还提供了完整的中文文档和教程,用户可以随时查阅学习。这些文档详细介绍了软件的各项功能和使用方法,可以帮助用户更好地了解和掌握软件。对于新手用户来说,这些文档是宝贵的学习资源。 除了中文界面和文档外,中文版的SuiteCRM还专门针对中国市场做了一些本地化调整。例如,支持中国的日期和时间格式,支持中文姓名的输入和显示,更好地适应中国用户的习惯和需求。这些本地化的调整使得软件在中国的使用更加顺畅和便捷。 总而言之,SuiteCRM中文版是一款非常适合中国用户的客户关系管理软件。它提供了中文界面、中文文档和本地化的特性,可以帮助用户更好地管理客户关系,提高工作效率。无论是个人用户还是企业用户,都可以通过SuiteCRM中文版来实现更好的客户关系管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值