diff --git a/db/update10.0.sql b/db/update10.0.sql index ff6c47d325..4ff46c29e9 100644 --- a/db/update10.0.sql +++ b/db/update10.0.sql @@ -2,6 +2,8 @@ ALTER TABLE `zt_storyspec` CHANGE `title` `title` varchar(255) NOT NULL; update `zt_todo` set assignedTo = 'closed', assignedDate = closedDate where status = 'closed'; DROP TABLE IF EXISTS `zt_webhookdatas`; +ALTER TABLE `zt_webhook` ADD `domain` varchar(255) NOT NULL AFTER `url`; + ALTER TABLE `zt_action` DROP INDEX `action`; ALTER TABLE `zt_action` ADD INDEX `date` (`date`); ALTER TABLE `zt_action` ADD INDEX `actor` (`actor`); diff --git a/db/zentao.sql b/db/zentao.sql index 9e768e7cd8..8ba89ddff6 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -896,6 +896,7 @@ CREATE TABLE IF NOT EXISTS `zt_webhook` ( `type` varchar(10) NOT NULL DEFAULT 'default', `name` varchar(50) NOT NULL, `url` varchar(255) NOT NULL, + `domain` varchar(255) NOT NULL, `contentType` varchar(30) NOT NULL DEFAULT 'application/json', `sendType` enum('sync','async') NOT NULL DEFAULT 'sync', `products` text NOT NULL, diff --git a/module/webhook/lang/en.php b/module/webhook/lang/en.php index de81884c53..024f07ca56 100644 --- a/module/webhook/lang/en.php +++ b/module/webhook/lang/en.php @@ -16,6 +16,7 @@ $lang->webhook->id = 'ID'; $lang->webhook->type = 'Type'; $lang->webhook->name = 'Name'; $lang->webhook->url = 'Webhook Address'; +$lang->webhook->domain = 'Zentao Domain'; $lang->webhook->contentType = 'Content Type'; $lang->webhook->sendType = 'Send Type'; $lang->webhook->product = "{$lang->productCommon}"; diff --git a/module/webhook/lang/zh-cn.php b/module/webhook/lang/zh-cn.php index 0a18d0c807..490891e904 100644 --- a/module/webhook/lang/zh-cn.php +++ b/module/webhook/lang/zh-cn.php @@ -16,6 +16,7 @@ $lang->webhook->id = 'ID'; $lang->webhook->type = '类型'; $lang->webhook->name = '名称'; $lang->webhook->url = 'Hook地址'; +$lang->webhook->domain = '禅道域名'; $lang->webhook->contentType = '内容类型'; $lang->webhook->sendType = '发送方式'; $lang->webhook->product = "关联{$lang->productCommon}"; diff --git a/module/webhook/model.php b/module/webhook/model.php index cb183a6074..67aebe12ce 100644 --- a/module/webhook/model.php +++ b/module/webhook/model.php @@ -220,7 +220,7 @@ class webhookModel extends model $object = $this->dao->select('*')->from($this->config->objectTables[$objectType])->where('id')->eq($objectID)->fetch(); $field = $this->config->action->objectNameFields[$objectType]; - $host = common::getSysURL(); + $host = empty($webhook->domain) ? common::getSysURL() : $webhook->domain; $viewLink = $this->getViewLink($objectType, $objectID); $title = $this->app->user->realname . $this->lang->action->label->$actionType . $this->lang->action->objectTypes[$objectType]; $text = $title . ' ' . "[#{$objectID}::{$object->$field}](" . $host . $viewLink . ")"; diff --git a/module/webhook/view/create.html.php b/module/webhook/view/create.html.php index 2863fb8b33..cf5e319afd 100644 --- a/module/webhook/view/create.html.php +++ b/module/webhook/view/create.html.php @@ -35,6 +35,11 @@ webhook->note->typeList['default'];?> + + webhook->domain;?> + + + webhook->sendType;?> webhook->sendTypeList, '', "class='form-control'");?> diff --git a/module/webhook/view/edit.html.php b/module/webhook/view/edit.html.php index 8c5fdf9314..3e80b11187 100644 --- a/module/webhook/view/edit.html.php +++ b/module/webhook/view/edit.html.php @@ -34,6 +34,11 @@ url, "class='form-control'");?> webhook->note->typeList, $webhook->type);?> + + webhook->domain;?> + domain, "class='form-control'");?> + + type != 'dingding'):?> webhook->sendType;?> diff --git a/www/js/zui/min.js b/www/js/zui/min.js index 0572f1ebd9..e437f010c9 100644 --- a/www/js/zui/min.js +++ b/www/js/zui/min.js @@ -74,10 +74,5 @@ if(!t.fn.droppable)return void console.error("Sortable requires droppable.js");v * Original idea by: * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ */ -<<<<<<< HEAD function(t){function e(e){if("string"==typeof e.data){var i=e.handler,n=e.data.toLowerCase().split(" ");e.handler=function(e){if(this===e.target||!/textarea|select/i.test(e.target.nodeName)&&"text"!==e.target.type){var s="keypress"!==e.type&&t.hotkeys.specialKeys[e.which],o=String.fromCharCode(e.which).toLowerCase(),a="",r={};e.altKey&&"alt"!==s&&(a+="alt+"),e.ctrlKey&&"ctrl"!==s&&(a+="ctrl+"),e.metaKey&&!e.ctrlKey&&"meta"!==s&&(a+="meta+"),e.shiftKey&&"shift"!==s&&(a+="shift+"),s?r[a+s]=!0:(r[a+o]=!0,r[a+t.hotkeys.shiftNums[o]]=!0,"shift+"===a&&(r[t.hotkeys.shiftNums[o]]=!0));for(var l=0,h=n.length;l","/":"?","\\":"|"}},t.each(["keydown","keyup","keypress"],function(){t.event.special[this]={add:e}})}(jQuery),function(t){"use strict";function e(e,i){if(e===!1)return e;if(!e)return i;e===!0?e={add:!0,"delete":!0,edit:!0,sort:!0}:"string"==typeof e&&(e=e.split(","));var n;return t.isArray(e)&&(n={},t.each(e,function(e,i){t.isPlainObject(i)?n[i.action]=i:n[i]=!0}),e=n),t.isPlainObject(e)&&(n={},t.each(e,function(e,i){i?n[e]=t.extend({type:e},a[e],t.isPlainObject(i)?i:null):n[e]=!1}),e=n),i?t.extend(!0,{},i,e):e}function i(e,i,n){return i=i||e.type,t(n||e.template).addClass("tree-action").attr(t.extend({"data-type":i,title:e.title||""},e.attr)).data("action",e)}var n="zui.tree",s=0,o=function(e,i){this.name=n,this.$=t(e),this.getOptions(i),this._init()},a={sort:{template:''},add:{template:''},edit:{template:''},"delete":{template:''}};o.DEFAULTS={animate:null,initialState:"normal",toggleTemplate:''},o.prototype.add=function(e,i,n,s,o){var a,r=t(e),l=this.options;if(r.is("li")?(a=r.children("ul"),a.length||(a=t("