[关闭]
@caijinlin 2015-12-17T06:34:08.000000Z 字数 4709 阅读 641

灵析插件市场

灵析

配置部分

1.config.php中增加

'plugin/:plugin_name/:plugin_action/:plugin_operation' => "plugin/dispatch/index"

2.config.php中APP_GROUP_LIST 里面增加 Plugin

'APP_GROUP_LIST'=>"Frontend,Common,Admin,Feature,Maintenance,Plugin"

3.config.php中LOAD_EXT_FILE 里面增加plugin

"LOAD_EXT_FILE"=>"json,widget,form_widget,mail,snoopy,sms,plugin"

4.config.php中加入灵析插件项目名称配置

'PLUGIN_PROJECT_NAME' => 'lingxi_plugin'

5.在Tpl里增加Plugin的软连接,指向lingxi_plugin/Tpl/Plugin

ln -s /wwwroot/lingxi_plugin/Tpl/ /wwwroot/lingxi/Tpl/Plugin

6.在dist里面加入软链接,引入css文件

ln -s /Users/caijinlin/www/lingxi_plugin/styles/ plugin

数据库部分

1.lingxi_config => plugins

CREATE TABLE `plugins` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `code` varchar(32) NOT NULL COMMENT '唯一标示',
 `title` varchar(256) DEFAULT NULL,
 `summary` text,
 `desc` text COMMENT '如何使用之类的,富文本',
 `icon` varchar(512) DEFAULT NULL,
 `link` int(11) DEFAULT NULL,
 `price` float DEFAULT NULL,
 `free_version` varchar(128) DEFAULT NULL COMMENT '对哪些版本免费,免费版本中间用逗号隔开',
 PRIMARY KEY (`id`),
 UNIQUE KEY `uniq_code` (`code`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

2.lingxi_local => custom_plugins

CREATE TABLE `custom_plugins` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `code` varchar(32) DEFAULT NULL,
 `title` varchar(256) DEFAULT NULL,
 `summary` text,
 `desc` text NOT NULL,
 `price` float DEFAULT NULL,
 `icon` varchar(512) DEFAULT NULL,
 `link` varchar(50) NOT NULL,
 `free_version` varchar(128) DEFAULT NULL COMMENT '对哪些版本免费,免费版本中间用逗号隔开',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

3.lingxi_local => installed_plugins

CREATE TABLE `installed_plugins` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `code` varchar(32) DEFAULT NULL,
 `type` enum('SYSTEM','CUSTOM') DEFAULT 'SYSTEM',
 `create_time` datetime DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=122 DEFAULT CHARSET=utf8

4.lingxi_local => smartag_contact_mapping

CREATE TABLE `smartag_contact_mapping` ( `id` INT NOT NULL AUTO_INCREMENT, `smartag_id` INT(10) NOT NULL , `contact_id` INT(10) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '智能标签联系人关联表'

5.lingxi_local => smart_tag

CREATE TABLE `smart_tag` ( `id` INT(10) NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签名称' , `desc` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签描述' , `icon` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签图标' , `condition` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '贴标签条件', PRIMARY KEY (`id`) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '智能标签'

6.lingxi_local => jobs

CREATE TABLE `jobs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) DEFAULT NULL,
  `desc` varchar(512) DEFAULT NULL,
  `run_type` enum('ONETIME','INTERVAL','TRIGGER') DEFAULT NULL COMMENT '一次性的还是周期性的,还是通过其他地方触发的',
  `trigger_code` varchar(32) DEFAULT NULL COMMENT '如果是触发型,那么这里是什么时候触发',
  `interval` int(16) DEFAULT NULL COMMENT '如果是周期性的,那么这里是执行周期',
  `last_run_time` datetime DEFAULT NULL COMMENT '上次执行时间',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

7.lingxi_local => job_reqs

CREATE TABLE `job_reqs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL,
  `worker_code` varchar(128) NOT NULL DEFAULT '',
  `seq` int(11) DEFAULT '10' COMMENT '执行顺序',
  `params` longtext,
  PRIMARY KEY (`id`),
  KEY `job_id_and_seq_idx` (`job_id`,`seq`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

8.lingxi_local => job_ops

CREATE TABLE `job_ops` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL,
  `worker_code` varchar(128) NOT NULL DEFAULT '',
  `seq` int(11) DEFAULT '10' COMMENT '执行顺序',
  `params` longtext,
  PRIMARY KEY (`id`),
  KEY `job_id_and_seq_idx` (`job_id`,`seq`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

9.lingxi_config => job_workers

CREATE TABLE `job_workers` (
  `code` varchar(128) NOT NULL DEFAULT '' COMMENT '唯一识别',
  `desc` varchar(512) DEFAULT NULL,
  `type` enum('REQ','OP') NOT NULL DEFAULT 'REQ' COMMENT '条件和操作的区分',
  `class` varchar(64) DEFAULT NULL,
  `function` varchar(64) DEFAULT NULL,
  `input` varchar(128) DEFAULT NULL,
  `output` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

封装代码

1.plugin/DispatchAction =>分发插件操作
2.common/plugin.php =>PD('SmarTtag/SmartTag'):跨项目调用model
3.pluginBaseAction =>display/fetch:跨项目显示

启用与停用

智能标签启用:并未默认开启list_views需要手动设置启用->update custom_list_views显示该列,才显示。
智能标签启用不显示:update->custom_list_views
智能标签停用:unset(),不出现所有显示列中,unset(),不出现显示列中

显示与不显示

联系人列表:unset
联系人详情:if else

存在问题

代码层面的封装,tag与smart_tag很多功能是联系在一起的

  1. widget.php->display_tag_string->联系人详情页显示智能标签和标签
  2. widget.php->column_item_key->联系人列表页显示标签和智能标签列
  3. contactsModel.php->_getContactBySmartTag->通过智能标签获取联系人id
  4. --more--

todo

1.job机制
2.删除时要删除job表
3.linux下用cron定时执行任务的方法
4.job_worker将SmartTagOp改为了EditSmartTag(class)

has do

1.插件市场相关
2.智能标签列表,编辑,更新
3.皮肤作为插件已到插件市场中
4. 智能标签的搜索:带role_id
5. 新建智能标签js文件,处理智能标签列表页逻辑
6 customcolumnsModel加入smart_tag,widget.php加入smart_tag
7.jquery.plugin.js 中封装simplecolorpicker改变智能标签页图标
8.联系人详情:智能标签启用显示配置
9.安装插件中数据库设计没有考虑team_id, InstalledPlugins, 智能标签区分teamid,role_id
10.邮件和短信,查找联系人,根据智能标签搜索
11.and so on.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注