diff --git a/module/product/model.php b/module/product/model.php
index dc25b7bd0c..5cb99b5cfd 100644
--- a/module/product/model.php
+++ b/module/product/model.php
@@ -802,6 +802,26 @@ class productModel extends model
$this->loadModel('search')->setSearchParams($this->config->product->search);
}
+ /**
+ * Get projects by product.
+ *
+ * @param int $productID
+ * @param int $branch
+ * @access public
+ * @return void
+ */
+ public function getProjectPairsByProduct($productID, $branch = 0)
+ {
+ return $this->dao->select('t2.id,t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
+ ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
+ ->where('t1.product')->eq($productID)
+ ->andWhere('t2.type')->eq('project')
+ ->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
+ ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
+ ->andWhere('t2.deleted')->eq('0')
+ ->fetchPairs();
+ }
+
/**
* Get executions by product and project.
*
diff --git a/module/productplan/control.php b/module/productplan/control.php
index 27db1b19fe..3f9882c4bb 100644
--- a/module/productplan/control.php
+++ b/module/productplan/control.php
@@ -208,6 +208,7 @@ class productplan extends control
public function browse($productID = 0, $branch = 0, $browseType = 'all', $orderBy = 'begin_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1 )
{
$this->app->loadLang('project');
+
/* Load pager. */
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
@@ -226,6 +227,7 @@ class productplan extends control
$this->view->orderBy = $orderBy;
$this->view->plans = $this->productplan->getList($productID, $branch, $browseType, $pager, $sort);
$this->view->pager = $pager;
+ $this->view->projects = $this->product->getProjectPairsByProduct($productID, $branch);
$this->display();
}
diff --git a/module/productplan/js/browse.js b/module/productplan/js/browse.js
index 17281b7eb3..6cd058cc56 100644
--- a/module/productplan/js/browse.js
+++ b/module/productplan/js/browse.js
@@ -19,7 +19,14 @@ $(function()
$content.append("");
}
});
-})
+
+ $('#createExecutionButton').on('click', function()
+ {
+ var PRJID = $('#project').val();
+ var planID = $('#planID').val();
+ parent.location.href = createLink('project', 'create', 'productID=' + productID + '&projectID=©ProjectID=&planID=' + planID + '&confirm=&PRJID=' + PRJID);
+ });
+});
$(document).on('click', 'td.content .more', function(e)
{
var $toggle = $(this);
@@ -38,3 +45,16 @@ $(document).on('click', 'td.content .more', function(e)
$toggle.find('i').removeClass('icon-chevron-double-down').addClass('icon-chevron-double-up');
}
});
+
+/**
+ * Get planID
+ *
+ * @param object $obj
+ * @access public
+ * @return void
+ */
+function getPlanID(obj)
+{
+ var planID = $(obj).attr("data-id")
+ $('#planID').val(planID);
+}
diff --git a/module/productplan/lang/de.php b/module/productplan/lang/de.php
index cc74406eb7..88badd5bca 100644
--- a/module/productplan/lang/de.php
+++ b/module/productplan/lang/de.php
@@ -19,6 +19,7 @@ $lang->productplan->view = "Details";
$lang->productplan->bugSummary = "%s Bugs auf dieser Seite";
$lang->productplan->basicInfo = 'Basis Info';
$lang->productplan->batchEdit = 'Mehrere bearbeiten';
+$lang->productplan->project = 'Project';
$lang->productplan->batchUnlink = "Mehere Verknüpfungen aufheben";
$lang->productplan->linkStory = "Story verknüpfen";
@@ -43,6 +44,8 @@ $lang->productplan->confirmUnlinkStory = "Möchten Sie diese Story löschen?";
$lang->productplan->confirmUnlinkBug = "Möchten Sie diesen Bug löschen?";
$lang->productplan->noPlan = 'Kein Plan. ';
$lang->productplan->cannotDeleteParent = 'Cannot delete parent plan';
+$lang->productplan->selectProjects = "Please select the project";
+$lang->productplan->nextStep = "Next step";
$lang->productplan->id = 'ID';
$lang->productplan->product = $lang->productCommon;
@@ -56,7 +59,7 @@ $lang->productplan->future = 'Wartend';
$lang->productplan->stories = 'Storys';
$lang->productplan->bugs = 'Bugs';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "Parent Plan";
$lang->productplan->parentAB = "Parent";
$lang->productplan->children = "Child Plan";
diff --git a/module/productplan/lang/en.php b/module/productplan/lang/en.php
index 3e04faacea..e5422bb322 100644
--- a/module/productplan/lang/en.php
+++ b/module/productplan/lang/en.php
@@ -19,6 +19,7 @@ $lang->productplan->view = "Plan Detail";
$lang->productplan->bugSummary = "Total %s Bugs on this page.";
$lang->productplan->basicInfo = 'Basic Info';
$lang->productplan->batchEdit = 'Batch Edit';
+$lang->productplan->project = 'Project';
$lang->productplan->batchUnlink = "Batch Unlink";
$lang->productplan->linkStory = "Link Story";
@@ -43,6 +44,8 @@ $lang->productplan->confirmUnlinkStory = "Do you want to unlink this story?";
$lang->productplan->confirmUnlinkBug = "Do you want to unlink this bug?";
$lang->productplan->noPlan = 'No plans yet. ';
$lang->productplan->cannotDeleteParent = 'Cannot delete parent plan';
+$lang->productplan->selectProjects = "Please select the project";
+$lang->productplan->nextStep = "Next step";
$lang->productplan->id = 'ID';
$lang->productplan->product = $lang->productCommon;
@@ -56,7 +59,7 @@ $lang->productplan->future = 'TBD';
$lang->productplan->stories = 'Story';
$lang->productplan->bugs = 'Bug';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "Parent Plan";
$lang->productplan->parentAB = "Parent";
$lang->productplan->children = "Child Plan";
diff --git a/module/productplan/lang/fr.php b/module/productplan/lang/fr.php
index 528e39f092..f407883ca1 100644
--- a/module/productplan/lang/fr.php
+++ b/module/productplan/lang/fr.php
@@ -19,6 +19,7 @@ $lang->productplan->view = "Détail Plan";
$lang->productplan->bugSummary = "Total %s Bugs sur cette page.";
$lang->productplan->basicInfo = 'Infos de Base';
$lang->productplan->batchEdit = 'Edition par Lot';
+$lang->productplan->project = 'Project';
$lang->productplan->batchUnlink = "Retirer par lot";
$lang->productplan->linkStory = "Planifier Story";
@@ -43,6 +44,8 @@ $lang->productplan->confirmUnlinkStory = "Voulez-vous détacher cette Story du P
$lang->productplan->confirmUnlinkBug = "Voulez-vous retirer ce bug du plan ?";
$lang->productplan->noPlan = "Aucun plan pour l'instant. ";
$lang->productplan->cannotDeleteParent = 'Impossible de supprimer le plan parent';
+$lang->productplan->selectProjects = "Please select the project";
+$lang->productplan->nextStep = "Next step";
$lang->productplan->id = 'ID';
$lang->productplan->product = $lang->productCommon;
@@ -56,7 +59,7 @@ $lang->productplan->future = 'A Définir';
$lang->productplan->stories = 'Story';
$lang->productplan->bugs = 'Bug';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "Plan Parent";
$lang->productplan->parentAB = "Parent";
$lang->productplan->children = "Sous-Plan";
diff --git a/module/productplan/lang/vi.php b/module/productplan/lang/vi.php
index 297ab27b1f..7e3e83b1dc 100644
--- a/module/productplan/lang/vi.php
+++ b/module/productplan/lang/vi.php
@@ -19,6 +19,7 @@ $lang->productplan->view = "Chi tiết kế hoạch";
$lang->productplan->bugSummary = "Tổng %s Bugs trên trang này.";
$lang->productplan->basicInfo = 'Thông tin cơ bản';
$lang->productplan->batchEdit = 'Sửa hàng loạt';
+$lang->productplan->project = 'Project';
$lang->productplan->batchUnlink = "Hủy liên kết hàng loạt";
$lang->productplan->linkStory = "Liên kết câu chuyện";
@@ -43,6 +44,8 @@ $lang->productplan->confirmUnlinkStory = "Bạn có muốn hủy liên kết câ
$lang->productplan->confirmUnlinkBug = "Bạn có muốn hủy liên kết bug này?";
$lang->productplan->noPlan = 'Không có kế hoạch nào';
$lang->productplan->cannotDeleteParent = 'Không thể xóa kế hoạch mẹ';
+$lang->productplan->selectProjects = "Please select the project";
+$lang->productplan->nextStep = "Next step";
$lang->productplan->id = 'ID';
$lang->productplan->product = $lang->productCommon;
@@ -56,7 +59,7 @@ $lang->productplan->future = 'TBD';
$lang->productplan->stories = 'Câu chuyện';
$lang->productplan->bugs = 'Bug';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "Kế hoạch mẹ";
$lang->productplan->parentAB = "Mẹ";
$lang->productplan->children = "Kế hoạch con";
diff --git a/module/productplan/lang/zh-cn.php b/module/productplan/lang/zh-cn.php
index 8c81417de6..a5f97153b8 100644
--- a/module/productplan/lang/zh-cn.php
+++ b/module/productplan/lang/zh-cn.php
@@ -19,6 +19,7 @@ $lang->productplan->view = "计划详情";
$lang->productplan->bugSummary = "本页共 %s 个Bug";
$lang->productplan->basicInfo = '基本信息';
$lang->productplan->batchEdit = '批量编辑';
+$lang->productplan->project = '项目';
$lang->productplan->batchUnlink = "批量移除";
$lang->productplan->linkStory = "关联{$lang->productSRCommon}";
@@ -43,6 +44,8 @@ $lang->productplan->confirmUnlinkStory = "您确认移除该{$lang->productSRCom
$lang->productplan->confirmUnlinkBug = "您确认移除该Bug吗?";
$lang->productplan->noPlan = "暂时没有计划。";
$lang->productplan->cannotDeleteParent = "不能删除父计划";
+$lang->productplan->selectProjects = "请选择所属项目";
+$lang->productplan->nextStep = "下一步";
$lang->productplan->id = '编号';
$lang->productplan->product = $lang->productCommon;
@@ -56,7 +59,7 @@ $lang->productplan->future = '待定';
$lang->productplan->stories = "{$lang->productSRCommon}数";
$lang->productplan->bugs = 'Bug数';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "父计划";
$lang->productplan->parentAB = "父";
$lang->productplan->children = "子计划";
diff --git a/module/productplan/lang/zh-tw.php b/module/productplan/lang/zh-tw.php
index cbc43eef1f..ae19ffdd3b 100644
--- a/module/productplan/lang/zh-tw.php
+++ b/module/productplan/lang/zh-tw.php
@@ -56,7 +56,7 @@ $lang->productplan->future = '待定';
$lang->productplan->stories = "{$lang->productSRCommon}數";
$lang->productplan->bugs = 'Bug數';
$lang->productplan->hour = $lang->hourCommon;
-$lang->productplan->project = $lang->executionCommon;
+$lang->productplan->execution = $lang->executionCommon;
$lang->productplan->parent = "父計劃";
$lang->productplan->parentAB = "父";
$lang->productplan->children = "子計劃";
diff --git a/module/productplan/view/browse.html.php b/module/productplan/view/browse.html.php
index e755ffe1fd..136b83222d 100644
--- a/module/productplan/view/browse.html.php
+++ b/module/productplan/view/browse.html.php
@@ -13,6 +13,7 @@
productplan->confirmDelete)?>
+
moduleName, $this->methodName) as $menuItem):?>
@@ -62,7 +63,7 @@
productplan->stories;?> |
productplan->bugs;?> |
productplan->hour;?> |
-
productplan->project;?> |
+
productplan->execution;?> |
productplan->desc;?> |
productplan->getFlowExtendFields();
@@ -127,7 +128,7 @@
" . $this->loadModel('flow')->getFieldValue($extendField, $plan) . "";?>
id"), '', '', "class='btn' title='{$lang->project->create}'");
+ if(common::hasPriv('project', 'create', $plan)) echo html::a('#projects', '', '', "data-toggle='modal' data-id='$plan->id' onclick='getPlanID(this)' class='btn' title='{$lang->project->create}'");
if(common::hasPriv('productplan', 'linkStory', $plan) and $plan->parent >= 0) echo html::a(inlink('view', "planID=$plan->id&type=story&orderBy=id_desc&link=true"), '', '', "class='btn' title='{$lang->productplan->linkStory}'");
if(common::hasPriv('productplan', 'linkBug', $plan)) echo html::a(inlink('view', "planID=$plan->id&type=bug&orderBy=id_desc&link=true"), '', '', "class='btn' title='{$lang->productplan->linkBug}'");
common::printIcon('productplan', 'edit', "planID=$plan->id", $plan, 'list');
@@ -166,4 +167,28 @@
+
diff --git a/module/project/control.php b/module/project/control.php
index 16e89772c0..ab073209ec 100644
--- a/module/project/control.php
+++ b/module/project/control.php
@@ -1081,8 +1081,9 @@ class project extends control
* @access public
* @return void
*/
- public function create($productID = '', $projectID = '', $copyProjectID = '', $planID = 0, $confirm = 'no')
+ public function create($productID = '', $projectID = '', $copyProjectID = '', $planID = 0, $confirm = 'no', $PRJID = 0)
{
+ if($PRJID) $this->session->set('PRJ', $PRJID);
$this->app->loadLang('program');
$this->app->loadLang('stage');
$this->app->loadLang('programplan');
|