diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js
index 5aa4017a8b..a4f57403a2 100644
--- a/module/kanban/js/view.js
+++ b/module/kanban/js/view.js
@@ -867,6 +867,10 @@ function createColumnCreateMenu(options)
if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(privs.includes('batchCreateCard')) items.push({label: kanbanLang.batchCreateCard, url: $.createLink('kanban', 'batchCreateCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), attrs: {'data-width': '80%'}});
+ if(privs.includes('import') && kanban.importObject.indexOf('cards') != -1) items.push({label: kanbanLang.importCard, url: $.createLink('kanban', 'importCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), attrs: {'data-width': '80%'}});
+ if(privs.includes('import') && kanban.importObject) items.push({className: 'parentDivider'});
+ if(privs.includes('import') && kanban.importObject) items.push({label: kanbanLang.importAB, className: 'import'});
+
return items;
}
@@ -984,6 +988,22 @@ $(function()
if(!items || !items.length) return;
$.zui.ContextMenu.show(items, items.$options || {event: event});
+
+ $('.parentDivider').parent().addClass('divider');
+ $('.import').parent().addClass('dropdown-submenu top');
+
+ /* The submenu of import. */
+ var importPlanLink = createLink('kanban', 'importPlan');
+ var importReleaseLink = createLink('kanban', 'importRelease');
+ var importExecutionLink = createLink('kanban', 'importExecution');
+ var importBuildLink = createLink('kanban', 'importBuild');
+ var importPlanLink = kanban.importObject.indexOf('plan') != -1 ? '
' + kanbanLang.importPlan + '' : '';
+ var importReleaseLink = kanban.importObject.indexOf('release') != -1 ? '' + kanbanLang.importRelease + '' : '';
+ var importExecutionLink = kanban.importObject.indexOf('execution') != -1 ? '' + kanbanLang.importExecution + '' : '';
+ var importBuildLink = kanban.importObject.indexOf('build') != -1 ? '' + kanbanLang.importBuild + '' : '';
+ var importSubmenu = '';
+ $('.import').parent().append(importSubmenu);
+
});
/* Adjust the add button position on window resize */
diff --git a/module/kanban/lang/en.php b/module/kanban/lang/en.php
index 05fd40ec65..2c437638b1 100644
--- a/module/kanban/lang/en.php
+++ b/module/kanban/lang/en.php
@@ -63,6 +63,7 @@ $lang->kanban->restore = 'Restore';
$lang->kanban->child = 'Child';
$lang->kanban->batchCreateCard = 'Batchcreate Card';
$lang->kanban->import = 'Import';
+$lang->kanban->importAB = 'Import';
$lang->kanban->showClosed = 'Closed';
/* Fields. */
diff --git a/module/kanban/lang/zh-cn.php b/module/kanban/lang/zh-cn.php
index 5a013d06a8..cf134f06dd 100644
--- a/module/kanban/lang/zh-cn.php
+++ b/module/kanban/lang/zh-cn.php
@@ -63,6 +63,7 @@ $lang->kanban->restore = '还原';
$lang->kanban->child = '子';
$lang->kanban->batchCreateCard = '批量创建卡片';
$lang->kanban->import = '导入功能';
+$lang->kanban->importAB = '导入';
$lang->kanban->showClosed = '显示已关闭';
/* Fields. */
diff --git a/module/kanban/model.php b/module/kanban/model.php
index aa0a7c581f..eba6660470 100644
--- a/module/kanban/model.php
+++ b/module/kanban/model.php
@@ -886,7 +886,7 @@ class kanbanModel extends model
->orderBy($order)
->fetchGroup('group');
- $actions = array('createColumn', 'setColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'batchCreateCard', 'splitColumn', 'sortColumn');
+ $actions = array('createColumn', 'setColumn', 'setWIP', 'archiveColumn', 'restoreColumn', 'deleteColumn', 'createCard', 'batchCreateCard', 'splitColumn', 'import', 'sortColumn');
/* Group by parent. */
$parentColumnGroup = array();
diff --git a/module/todo/model.php b/module/todo/model.php
index 5473018c90..f565eb985b 100644
--- a/module/todo/model.php
+++ b/module/todo/model.php
@@ -51,7 +51,7 @@ class todoModel extends model
if($todo->pri == 'low') $todo->pri = 3;
}
- if($todo->type != 'custom')
+ if($todo->type != 'custom' and $todo->idvalue)
{
$type = $todo->type;
$object = $this->loadModel($type)->getByID($this->post->$type);