使用 Perfex CRM 创建管理员和客户模块 - 需要帮助

问题描述 投票:0回答:2

我正在为 prefex CRM 创建一个模块。这个模块要做的事情非常简单,但很快就会变得超出我的预期。请允许我解释一下我在做什么以及我陷入困境的地方。希望有人能给点建议。

管理员视图

  • 管理模块将菜单项“邮件”添加到侧面导航栏
  • 单击此菜单项时,将加载一个页面,该页面使用已经使用 CRM 内置的拖放文件上传功能前缀。
  • 当工作人员上传文件时,会启动一个模式,其中包含一个表单,询问用户应将上传分配给谁。它应该使用自动完成功能来选择要附加文件的客户。
  • 上传日期/时间记录在数据库中,并且数据库中的记录条目被赋予一个 GUID

客户视图

  • 将菜单项“邮件”添加到客户端导航栏的客户端模块
  • 单击此菜单项时,将加载一个显示表格的页面。该表显示了管理视图中文件上传的所有条目。该表格应包含扫描邮件的图像、收到的日期/时间以及目前为空白的另一列。

这就是我想要实现的目标。为了更好地理解 Prefex CRM 模块的结构,我解构了 Prefex CRM 员工聊天模块。在这种情况下,很难将苹果与橙子进行比较,但它确实帮助我开发了如下文件结构:

-assets
--css
--js
--module_includes
-controllers
--admin_controller
--client_controller
-models
-uploads
-views
--admin_view
--client_view
mail.php
index.php
install.php

现在您已经了解了我在做什么,这就是我需要帮助的地方 -

我陷入困境:我希望回收 Prefex CRM 中已内置的文件上传功能。文件正常存放的位置就可以,不需要更改。我不确定如何重用这些内置函数来创建 Mail_ClientsController.php 和 Mail_Controller.php,以及 mail_admin_view.php 和 mail_clients_view.php 上的一些不确定

任何人都可以分享一些 Perfex 工作模块的示例,以阐明如何连接这些模块吗?

mail.php页面

    <?php

/**
 * Ensures that the module init file can't be accessed directly, only within the application.
 */
defined('BASEPATH') or exit('No direct script access allowed');

/*
Module Name: Mail
Description: Client online mailbox module for Perfex CRM system
Version: 2.3.0
Requires at least: 2.3.*
*/

define('BSSI_MAIL_MODULE_NAME', 'bssi_mail');
define('BSSI_MAIL_MODULE_UPLOAD_FOLDER', module_dir_path(BSSI_MAIL_MODULE_NAME, 'uploads'));

$CI = &get_instance();

/**
 * Register the activation 
 */
register_activation_hook(BSSI_MAIL_MODULE_NAME, 'bssi_mail_activation_hook');

/**
 * The activation function
 */
function bssi_mail_activation_hook()
{
    require(__DIR__ . '/install.php');
}
/**
 * Register new menu item in admin sidebar menu
 */
if (staff_can('view', BSSI_MAIL_MODULE_NAME)) {
    if (get_option('bssi_staff_can_delete_messages') == '1') {
        $CI->app_menu->add_sidebar_menu_item('bssi_mail', [
            'name'     => 'BSSI Mail',
            'href'     => admin_url('bssi_mail/mail_admin_view'),
            'icon'     => 'fa fa-envelope',
            'position' => 6,
        ]);
    }
}

Mail_ClientsController.php(不确定将哪些函数放在这里用于上传功能)

<?php defined('BASEPATH') or exit('No direct script access allowed');

class Prchat_ClientsController extends ClientsController
{
    
}

Mail_Clients_View.php

<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>

<div class="bssiClient">
    <div class="container">
        <div class="row">
            <div class="col">
                <table class="bssiMailTable">
                    <thead>
                        <th>Mail Image</th>
                        <th>Date Received</th>
                        <th>Actions</th>
                    </thead>
                    <tr>
                        <td>Image Query</td>
                        <td>Get Date Query</td>
                        <td>Action Items</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</div>

Mail_admin_view.php

<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>

<div class="bssiAdmin">
    <div class="container">
        <div class="row">
            <div class="col">
                <table class="bssiAdminMailTable">
                    <thead>
                        <th>Mail Image</th>
                        <th>Date Received</th>
                        <th>Actions</th>
                    </thead>
                    <tr>
                        <td>Image Query</td>
                        <td>Get Date Query</td>
                        <td>Action Items</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</div>
php module crm
2个回答
2
投票

因此,在您的控制器/模型中,您需要在构造方法中加载标准电子邮件模型。 Perfex 有一个用于分发电子邮件的标准模型(可以在 root > application > models > Emails_model.php 下看到)

$this->load->model('emails_model');

或者如果它是从管理控制器外部调用的(例如通过 cron)

$this->ci->load->model('emails_model');

在标准 Emails_model.php 中有一个函数“send_simple_email()”,它允许您直接从 Perfex 向任何电子邮件地址发送电子邮件

EG

$email = '[email protected]';
$subject = 'Email Subject';
$message = 'Your Message';
$this->ci->emails_model->send_simple_email($email, $subject, $message);

对于文件上传,您应该查看 Perfex 中的标准文件上传程序(查看 upload_helper.php 内部,您会发现许多可以帮助您上传文件的函数。


0
投票

首先我想说的是理解架构。 文档: 查看Perfex CRM提供的官方文档。它应该包含有关模块创建、挂钩和自定义选项的详细信息。 创建模块文件夹: 首先在 Perfex CRM 的模块目录中为您的模块创建一个新文件夹。 模块结构: 在模块文件夹中,创建必要的子文件夹,例如控制器、模型、视图以及对模块有意义的任何其他文件夹。 创建一个 installer.php 和你的模块名称.php 它将帮助你安装你的模块。

© www.soinside.com 2019 - 2024. All rights reserved.