* Adjust for story create page.
This commit is contained in:
@@ -1987,14 +1987,11 @@ class kanban extends control
|
||||
|
||||
if($this->viewType == 'json') return print($lanes);
|
||||
|
||||
if($pageType == 'batch')
|
||||
{
|
||||
$laneList = array();
|
||||
foreach($lanes as $laneID => $laneName) $laneList[] = array('value' => $laneID, 'text' => $laneName);
|
||||
return $this->send($laneList);
|
||||
}
|
||||
$laneList = array();
|
||||
foreach($lanes as $laneID => $laneName) $laneList[] = array('value' => $laneID, 'text' => $laneName);
|
||||
|
||||
return print(html::select($field, $lanes, '', "class='form-control'"));
|
||||
if($pageType == 'batch') return $this->send($laneList);
|
||||
return print(json_encode(array('items' => $laneList, 'name' => $field)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -154,7 +154,7 @@ window.loadProductPlans = function(productID, branch)
|
||||
new zui.Picker('#planIdBox #plan', {items: items, name: 'plan', defaultValue: planID.toString()});
|
||||
if(items.length == 0)
|
||||
{
|
||||
$inputGroup.append('<a class="btn btn-default" type="button" data-toggle="modal" href="' + $.createLink('productplan', 'create', 'productID=' + productID + '&branch=' + branch) + '"><i class="icon icon-cog"></i></a>');
|
||||
$inputGroup.append('<a class="btn btn-default" type="button" data-toggle="modal" href="' + $.createLink('productplan', 'create', 'productID=' + productID + '&branch=' + branch) + '"><i class="icon icon-plus"></i></a>');
|
||||
$inputGroup.append('<button class="refresh btn" type="button" onclick="loadProductPlans(' + productID + ')"><i class="icon icon-refresh"></i></button>');
|
||||
}
|
||||
})
|
||||
|
||||
@@ -5,19 +5,23 @@ window.toggleReviewer = function(obj)
|
||||
const $this = $(obj);
|
||||
const isChecked = $this.prop('checked');
|
||||
|
||||
$('#reviewer').attr('disabled', isChecked ? 'disabled' : null).trigger('chosen:updated');
|
||||
$reviewer = $('#reviewer').zui('picker');
|
||||
options = $reviewer.options;
|
||||
if(isChecked)
|
||||
{
|
||||
options.disabled = true;
|
||||
$reviewer.render(options);
|
||||
$('#reviewerBox').closest('.form-row').addClass('hidden');
|
||||
$('#needNotReview').val(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
options.disabled = false;
|
||||
$reviewer.render(options);
|
||||
$('#reviewerBox').closest('.form-row').removeClass('hidden');
|
||||
$('#needNotReview').val(0);
|
||||
}
|
||||
}
|
||||
toggleReviewer($('#needNotReview[type=checkbox]'));
|
||||
|
||||
window.toggleFeedback = function(obj)
|
||||
{
|
||||
@@ -30,7 +34,7 @@ window.toggleFeedback = function(obj)
|
||||
|
||||
$(document).on('change', '#module', function(){loadURS();})
|
||||
|
||||
if($("form select[id^='branches']").length == $('.switchBranch #branchBox option').length)
|
||||
if(branchCount <= 1)
|
||||
{
|
||||
$('.switchBranch .addNewLine').css('pointer-events', 'none')
|
||||
$('.switchBranch .addNewLine').addClass('disabled')
|
||||
@@ -46,9 +50,10 @@ window.loadProduct = function(e)
|
||||
window.loadBranchRelation = function(e)
|
||||
{
|
||||
const $this = $(e.target);
|
||||
const branch = $this.val();
|
||||
const branchIndex = $this.data('index');
|
||||
const productID = $('#product').val();
|
||||
const $picker = $this.zui('picker');
|
||||
const branch = $picker.$.value;
|
||||
const branchIndex = $picker.options.index;
|
||||
const productID = $('[name=product]').val();
|
||||
|
||||
$.ajaxSettings.async = false;
|
||||
loadModuleForTwins(productID, branch, branchIndex)
|
||||
@@ -60,55 +65,49 @@ window.loadBranchRelation = function(e)
|
||||
|
||||
window.addBranchesBox = function(e)
|
||||
{
|
||||
const productID = $('#product').val();
|
||||
const $formRow = $(e.target).closest('.form-row');
|
||||
const productID = $('#product').zui('picker').$.value;
|
||||
const $formRow = $(e.target).closest('.form-row');
|
||||
const $branchPicker = $('.switchBranch #branchBox .picker-box').zui('picker');
|
||||
const $modulePicker = $('.switchBranch #moduleIdBox .picker-box').zui('picker');
|
||||
const $planPicker = $('.switchBranch #planIdBox .picker-box').zui('picker');
|
||||
|
||||
$('#storyNoticeBranch').removeClass('hidden');
|
||||
if($("form select[id^='branches']").length == $('.switchBranch #branchBox option').length) return false;
|
||||
if($("form [name^='branches']").length == $branchPicker.options.items.length) return false;
|
||||
|
||||
var selectedVal = [];
|
||||
$("form select[id^='branches']").each(function()
|
||||
$("form [name^='branches']").each(function()
|
||||
{
|
||||
var selectedProduct = $(this).val();
|
||||
if(!selectedVal.includes(selectedProduct)) selectedVal.push(selectedProduct);
|
||||
});
|
||||
|
||||
var branch = 0;
|
||||
$('.switchBranch [id^=branches] option').each(function()
|
||||
$branchPicker.options.items.forEach(function(item)
|
||||
{
|
||||
if(!selectedVal.includes($(this).val()))
|
||||
if(!selectedVal.includes(item.value))
|
||||
{
|
||||
branch = $(this).val();
|
||||
branch = item.value;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var $newLine = $('#addBranchesBox').clone();
|
||||
$formRow.after($newLine);
|
||||
|
||||
$newLine.addClass('newLine').removeClass('hidden').addClass('addBranchesBox' + itemIndex).removeAttr('id');
|
||||
$newLine.find('[id^=branches]').attr('name', 'branches[' + itemIndex + ']').attr('id', 'branches[' + itemIndex + ']').attr('data-index', itemIndex).on('change', loadBranchRelation);
|
||||
$newLine.find('[id^=modules]').attr('name', 'modules[' + itemIndex + ']').attr('id', 'modules[' + itemIndex + ']');
|
||||
$newLine.find('[id^=plans]').attr('name', 'plans[' + itemIndex + ']').attr('id', 'plans[' + itemIndex + ']');
|
||||
$newLine.find('#branches').addClass('picker-box').attr('id', 'branches_' + itemIndex).attr('data-on', 'change').attr('data-call', 'loadBranchRelation').attr('data-params', 'event').picker($.extend({}, $branchPicker.options, {name: "branches[" + itemIndex + "]", index: itemIndex, afterRender: function(){disableSelectedBranches()}}));
|
||||
$newLine.find('#modules').addClass('picker-box').attr('id', 'modules_' + itemIndex).picker($.extend({}, $modulePicker.options, {name: "modules[" + itemIndex + "]"}));
|
||||
$newLine.find('#plans').addClass('picker-box').attr('id', 'plans_' + itemIndex).picker($.extend({}, $planPicker.options, {name: "plans[" + itemIndex + "]"}));
|
||||
$newLine.find('.addNewLine').on('click', addBranchesBox);
|
||||
$newLine.find('.removeNewLine').on('click', deleteBranchesBox);
|
||||
|
||||
//$('#branches_i__chosen').remove();
|
||||
//$('#branches' + itemIndex).chosen();
|
||||
//$('#modules_i__chosen').remove();
|
||||
//$('#modules' + itemIndex).chosen();
|
||||
//$('#plans_i__chosen').remove();
|
||||
//$('#plans' + itemIndex).chosen();
|
||||
//$('.addBranchesBox' + itemIndex + ' #planIdBox').css('flex', '0 0 ' + gap + 'px');
|
||||
$formRow.after($newLine);
|
||||
|
||||
$.ajaxSettings.async = false;
|
||||
loadModuleForTwins(productID, branch, itemIndex)
|
||||
loadPlanForTwins(productID, branch, itemIndex)
|
||||
$.ajaxSettings.async = true;
|
||||
|
||||
disableSelectedBranches();
|
||||
|
||||
if($("form select[id^='branches']").length == $('.switchBranch #branchBox option').length)
|
||||
if($("form [id^='branches']").length == $branchPicker.options.items.length)
|
||||
{
|
||||
$('.addNewLine').css('pointer-events', 'none')
|
||||
$('.addNewLine').addClass('disabled')
|
||||
@@ -125,7 +124,7 @@ window.deleteBranchesBox = function(e)
|
||||
|
||||
$('.addNewLine').css('pointer-events', 'auto')
|
||||
$('.addNewLine').removeClass('disabled')
|
||||
if($('form select[name^="branches"]').length < 2) $('#storyNoticeBranch').addClass('hidden');
|
||||
if($('form [name^="branches"]').length < 2) $('#storyNoticeBranch').addClass('hidden');
|
||||
};
|
||||
|
||||
window.loadProductPlans = function(productID, branch)
|
||||
@@ -133,15 +132,24 @@ window.loadProductPlans = function(productID, branch)
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(!branch) branch = 0;
|
||||
|
||||
var param = config.currentMethod == 'edit' ? 'skipParent|forStory' : 'skipParent';
|
||||
var expired = config.currentMethod == 'create' ? 'unexpired' : '';
|
||||
var planLink = $.createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branch + '&planID=' + $('#plan').val() + '&fieldID=&needCreate=true&expired='+ expired +'¶m=skipParent,forStory,' + config.currentMethod);
|
||||
var $planIdBox = $('#planIdBox');
|
||||
let planID = $('[name=plan]').val();
|
||||
let param = config.currentMethod == 'edit' ? 'skipParent|forStory' : 'skipParent';
|
||||
let expired = config.currentMethod == 'create' ? 'unexpired' : '';
|
||||
let planLink = $.createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branch + '&planID=' + planID + '&fieldID=&needCreate=true&expired='+ expired +'¶m=skipParent,forStory,' + config.currentMethod);
|
||||
let $planIdBox = $('#planIdBox');
|
||||
|
||||
$planIdBox.load(planLink, function()
|
||||
$.get(planLink, function(data)
|
||||
{
|
||||
//$planIdBox.find('#plan').chosen();
|
||||
});
|
||||
let items = JSON.parse(data);
|
||||
let $inputGroup = $planIdBox.closest('.input-group');
|
||||
$inputGroup.html("<span id='planIdBox'><div class='picker-box' id='plan'></div></span>")
|
||||
new zui.Picker('#planIdBox #plan', {items: items, name: 'plan', defaultValue: planID.toString()});
|
||||
if(items.length == 0)
|
||||
{
|
||||
$inputGroup.append('<a class="btn btn-default" type="button" data-toggle="modal" href="' + $.createLink('productplan', 'create', 'productID=' + productID + '&branch=' + branch) + '"><i class="icon icon-plus"></i></a>');
|
||||
$inputGroup.append('<button class="refresh btn" type="button" onclick="loadProductPlans(' + productID + ')"><i class="icon icon-refresh"></i></button>');
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
window.setLane = function(e)
|
||||
@@ -150,11 +158,7 @@ window.setLane = function(e)
|
||||
const laneLink = $.createLink('kanban', 'ajaxGetLanes', 'regionID=' + regionID + '&type=story&field=lane');
|
||||
$.get(laneLink, function(lane)
|
||||
{
|
||||
if(!lane) lane = "<select id='lane' name='lane' class='form-control'></select>";
|
||||
$('#lane').replaceWith(lane);
|
||||
$('#lane' + "_chosen").remove();
|
||||
$('#lane').next('.picker').remove();
|
||||
$('#lane').chosen();
|
||||
$('#myPicker').picker(JSON.parse(lane));
|
||||
});
|
||||
};
|
||||
|
||||
@@ -162,7 +166,7 @@ function loadModuleForTwins(productID, branch, branchIndex)
|
||||
{
|
||||
/* Load module */
|
||||
var currentModule = 0;
|
||||
var moduleLink = $.createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=story&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=' + branchIndex + '&needManage=false&extra=nodeleted¤tModuleID=' + currentModule);
|
||||
var moduleLink = $.createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=story&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=' + branchIndex + '&needManage=false&extra=nodeleted¤tModuleID=' + currentModule);
|
||||
if(branchIndex > 0)
|
||||
{
|
||||
var $moduleIdBox = $('.addBranchesBox' + branchIndex + ' #moduleIdBox');
|
||||
@@ -172,10 +176,7 @@ function loadModuleForTwins(productID, branch, branchIndex)
|
||||
var $moduleIdBox = $('.switchBranch #moduleIdBox');
|
||||
}
|
||||
|
||||
$moduleIdBox.load(moduleLink, function()
|
||||
{
|
||||
//$moduleIdBox.find('[id^=#modules]').chosen();
|
||||
});
|
||||
$.get(moduleLink, function(data){$moduleIdBox.find('.picker-box').picker(JSON.parse(data));});
|
||||
}
|
||||
|
||||
function loadPlanForTwins(productID, branch, branchIndex)
|
||||
@@ -191,32 +192,37 @@ function loadPlanForTwins(productID, branch, branchIndex)
|
||||
{
|
||||
var $planIdBox = $('.switchBranch #planIdBox');
|
||||
}
|
||||
$planIdBox.load(planLink, function()
|
||||
{
|
||||
//$planIdBox.find('[id^=plans]').chosen();
|
||||
});
|
||||
|
||||
$.get(planLink, function(data){$planIdBox.find('.picker-box').picker(JSON.parse(data));});
|
||||
}
|
||||
|
||||
function disableSelectedBranches()
|
||||
{
|
||||
$("form select[id^='branches'] option[disabled='disabled']").removeAttr('disabled');
|
||||
|
||||
var selectedVal = [];
|
||||
$("form select[id^='branches']").each(function()
|
||||
let selectedVal = [];
|
||||
let $pickers = [];
|
||||
$("form [name^='branches']").each(function()
|
||||
{
|
||||
var selectedBranch = $(this).val();
|
||||
if(!selectedVal.includes(selectedBranch)) selectedVal.push(selectedBranch);
|
||||
let $picker = $(this).zui('picker');
|
||||
let value = $picker.$.value;
|
||||
|
||||
$pickers.push($picker);
|
||||
if(!selectedVal.includes(value)) selectedVal.push(value);
|
||||
})
|
||||
|
||||
$("form select[id^='branches']").each(function()
|
||||
$pickers.forEach(function($picker)
|
||||
{
|
||||
var selectedBranch = $(this).val();
|
||||
$(this).find('option').each(function()
|
||||
let value = $picker.$.value;
|
||||
let options = $picker.options;
|
||||
let items = [];
|
||||
options.items.forEach(function(item)
|
||||
{
|
||||
var optionVal = $(this).attr('value');
|
||||
if(optionVal != selectedBranch && selectedVal.includes(optionVal)) $(this).attr('disabled', 'disabled');
|
||||
item = $.extend({}, item, {disabled: false});
|
||||
if(value !== item.value && selectedVal.includes(item.value)) item = $.extend({}, item, {disabled: true});
|
||||
items.push(item);
|
||||
})
|
||||
})
|
||||
options.items = items;
|
||||
delete options.afterRender;
|
||||
|
||||
//$("form select[id^=branches]").trigger('chosen:updated');
|
||||
$picker.render(options);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ array_shift($params);
|
||||
jsVar('createParams', http_build_query($params));
|
||||
jsVar('storyType', $type);
|
||||
jsVar('feedbackSource', $config->story->feedbackSource);
|
||||
jsVar('branchCount', isset($fields['branches']['options']) ? count($fields['branches']['options']) : 0);
|
||||
|
||||
$showFields = $config->story->custom->createFields;
|
||||
$fnGenerateCustomizedFields = function() use ($showFields, $customFields)
|
||||
@@ -59,8 +60,8 @@ formPanel
|
||||
set::width('1/2'),
|
||||
inputGroup
|
||||
(
|
||||
select(set::name('product'), set::value($fields['product']['default']), set::items($fields['product']['options'])),
|
||||
isset($fields['branch']) && $type != 'story' ? select(set::name('branch'), set::items($fields['branch']['options']), set::value($fields['branch']['default'])) : null,
|
||||
picker(setID('product'), set::name('product'), set::value($fields['product']['default']), set::items($fields['product']['options'])),
|
||||
isset($fields['branch']) && $type != 'story' ? picker(setID('branch'), set::name('branch'), set::items($fields['branch']['options']), set::value($fields['branch']['default'])) : null,
|
||||
),
|
||||
set::required(true),
|
||||
),
|
||||
@@ -80,10 +81,10 @@ formPanel
|
||||
span
|
||||
(
|
||||
set::id('moduleIdBox'),
|
||||
picker(set::name('module'), set::items($fields['module']['options']), set::value($fields['module']['default']), set::required(true)),
|
||||
picker(setID('module'), set::name('module'), set::items($fields['module']['options']), set::value($fields['module']['default']), set::required(true)),
|
||||
),
|
||||
empty($fields['module']['options']) ? btn(set::url($this->createLink('tree', 'browse', "rootID=$productID&view=story¤tModuleID=0&branch=$branch")), setClass('primary'), set('data-toggle', 'modal'), $lang->tree->manage) : null,
|
||||
empty($fields['module']['options']) ? btn(set('data-on', 'click'), set('data-call', 'loadProductModules'), set('data-params', $productID), setClass('refresh'), icon('refresh')) : null,
|
||||
count($fields['module']['options']) == 1 ? btn(set::url($this->createLink('tree', 'browse', "rootID=$productID&view=story¤tModuleID=0&branch=$branch")), setClass('primary'), set('data-toggle', 'modal'), $lang->tree->manage) : null,
|
||||
count($fields['module']['options']) == 1 ? btn(set('data-on', 'click'), set('data-call', 'loadProductModules'), set('data-params', $productID), setClass('refresh'), icon('refresh')) : null,
|
||||
)
|
||||
),
|
||||
),
|
||||
@@ -99,6 +100,7 @@ formPanel
|
||||
set::id('branchBox'),
|
||||
picker
|
||||
(
|
||||
setID('branches_0'),
|
||||
set::name('branches[0]'),
|
||||
set::items($fields['branches']['options']),
|
||||
set::value($fields['branches']['default']),
|
||||
@@ -116,7 +118,7 @@ formPanel
|
||||
inputGroup
|
||||
(
|
||||
set::id('moduleIdBox'),
|
||||
picker(set::name('modules[0]'), set::items($fields['modules']['options']), set::value($fields['modules']['default']), set::required(true))
|
||||
picker(setID('modules_0'), set::name('modules[0]'), set::items($fields['modules']['options']), set::value($fields['modules']['default']), set::required(true))
|
||||
),
|
||||
),
|
||||
formGroup
|
||||
@@ -125,7 +127,7 @@ formPanel
|
||||
inputGroup
|
||||
(
|
||||
set::id('planIdBox'),
|
||||
picker(set::name('plans[0]'), set::items($fields['plans']['options']), set::value($fields['plans']['default']))
|
||||
picker(setID('plans_0'), set::name('plans[0]'), set::items($fields['plans']['options']), set::value($fields['plans']['default']))
|
||||
),
|
||||
),
|
||||
count($branches) > 1 ? formGroup
|
||||
@@ -156,7 +158,7 @@ formPanel
|
||||
span
|
||||
(
|
||||
set::id('planIdBox'),
|
||||
picker(set::name('plan'), set::items($fields['plan']['options']), set::value($fields['plan']['default'])),
|
||||
picker(setID('plan'), set::name('plan'), set::items($fields['plan']['options']), set::value($fields['plan']['default'])),
|
||||
),
|
||||
empty($fields['plan']['options']) ? btn(set::url($this->createLink('productplan', 'create', "productID=$productID&branch=$branch")), set('data-toggle', 'modal'), set::title($lang->productplan->create), icon('plus')) : null,
|
||||
empty($fields['plan']['options']) ? btn(setClass('refresh'), set('data-toggle', 'modal'), set::title($lang->refresh), set('data-on', 'click'), set('data-call', 'loadProductPlans'), set('data-params', $productID), icon('refresh')) : null,
|
||||
@@ -221,14 +223,14 @@ formPanel
|
||||
inputGroup
|
||||
(
|
||||
set::id('assignedToBox'),
|
||||
picker(set::name('assignedTo'), set::items($fields['assignedTo']['options']), set::value($fields['assignedTo']['value']))
|
||||
picker(setID('assignedTo'), set::name('assignedTo'), set::items($fields['assignedTo']['options']), set::value($fields['assignedTo']['value']))
|
||||
)
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
set::width('1/4'),
|
||||
set::label($lang->story->source),
|
||||
picker(set::name('source'), set::items($fields['source']['options']), set::value($fields['source']['value']))
|
||||
picker(setID('source'), set::name('source'), set::items($fields['source']['options']), set::value($fields['source']['value']))
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
@@ -237,23 +239,28 @@ formPanel
|
||||
input(set::name('sourceNote'), set::value($fields['sourceNote']['value']))
|
||||
),
|
||||
) : null,
|
||||
formGroup
|
||||
formRow
|
||||
(
|
||||
set::width('1/2'),
|
||||
set::label($lang->story->reviewedBy),
|
||||
set::required($forceReview),
|
||||
inputGroup
|
||||
set::hidden($forceReview && $needReview),
|
||||
formGroup
|
||||
(
|
||||
set::id('reviewerBox'),
|
||||
picker
|
||||
set::width('1/2'),
|
||||
set::label($lang->story->reviewedBy),
|
||||
set::required($forceReview),
|
||||
inputGroup
|
||||
(
|
||||
set::name('reviewer[]'),
|
||||
set::multiple(true),
|
||||
set::items($fields['reviewer']['options']),
|
||||
set::value($fields['reviewer']['default']),
|
||||
set::id('reviewerBox'),
|
||||
picker
|
||||
(
|
||||
setID('reviewer'),
|
||||
set::name('reviewer[]'),
|
||||
set::multiple(true),
|
||||
set::items($fields['reviewer']['options']),
|
||||
set::value($fields['reviewer']['default']),
|
||||
),
|
||||
),
|
||||
$forceReview ? null : formHidden('needNotReview', 1),
|
||||
),
|
||||
$forceReview ? null : formHidden('needNotReview', 1),
|
||||
),
|
||||
isset($fields['URS']) ? formRow
|
||||
(
|
||||
@@ -263,7 +270,7 @@ formPanel
|
||||
set::label($lang->story->requirement),
|
||||
inputGroup
|
||||
(
|
||||
span(setClass('URSBox'), picker(set::name('URS[]'), set::items($fields['URS']['options']), set::value($fields['URS']['value']))),
|
||||
span(setClass('URSBox'), picker(setID('URS'), set::name('URS[]'), set::items($fields['URS']['options']), set::value($fields['URS']['value']))),
|
||||
btn(set('data-on', 'click'), set('data-call', 'loadURS'), set('data-params', 'allURS'), $lang->story->loadAllStories),
|
||||
)
|
||||
),
|
||||
@@ -293,6 +300,7 @@ formPanel
|
||||
formGroup
|
||||
(
|
||||
set::width('1/2'),
|
||||
setID($fields['region']['title']),
|
||||
set::label($fields['region']['title']),
|
||||
set::name('region'),
|
||||
set::items($fields['region']['options']),
|
||||
@@ -324,7 +332,7 @@ formPanel
|
||||
inputGroup
|
||||
(
|
||||
$lang->story->category,
|
||||
picker(set::name('category'), set::items($fields['category']['options']), set::value($fields['category']['default'])),
|
||||
picker(setID('category'), set::name('category'), set::items($fields['category']['options']), set::value($fields['category']['default'])),
|
||||
$lang->story->pri,
|
||||
priPicker(set::name('pri'), set::items($fields['pri']['options']), set::value($fields['pri']['default'])),
|
||||
$lang->story->estimateAB,
|
||||
@@ -357,10 +365,14 @@ formPanel
|
||||
formGroup
|
||||
(
|
||||
set::label($lang->story->mailto),
|
||||
set::name('mailto[]'),
|
||||
set::control(array('type' => 'picker', 'multiple' => true)),
|
||||
set::items($fields['mailto']['options']),
|
||||
set::value($fields['mailto']['default']),
|
||||
picker
|
||||
(
|
||||
setID('mailto'),
|
||||
set::name('mailto[]'),
|
||||
set::items($fields['mailto']['options']),
|
||||
set::value($fields['mailto']['default']),
|
||||
set::multiple(true),
|
||||
),
|
||||
),
|
||||
formGroup
|
||||
(
|
||||
@@ -383,12 +395,7 @@ isset($fields['branches']) && $type == 'story' ? formRow
|
||||
inputGroup
|
||||
(
|
||||
set::id('branchBox'),
|
||||
picker
|
||||
(
|
||||
set::name('branches[%i%]'),
|
||||
set::items($fields['branches']['options']),
|
||||
set::value($fields['branches']['default']),
|
||||
)
|
||||
div(setID('branches'), setClass('form-group-wrapper')),
|
||||
),
|
||||
),
|
||||
formGroup
|
||||
@@ -398,7 +405,7 @@ isset($fields['branches']) && $type == 'story' ? formRow
|
||||
inputGroup
|
||||
(
|
||||
set::id('moduleIdBox'),
|
||||
picker(set::name('modules[%i%]'), set::items($fields['modules']['options']), set::value($fields['modules']['default']))
|
||||
div(setID('modules'), setClass('form-group-wrapper')),
|
||||
),
|
||||
),
|
||||
formGroup
|
||||
@@ -407,7 +414,7 @@ isset($fields['branches']) && $type == 'story' ? formRow
|
||||
inputGroup
|
||||
(
|
||||
set::id('planIdBox'),
|
||||
picker(set::name('plans[%i%]'), set::items($fields['plans']['options']), set::value($fields['plans']['default']))
|
||||
div(setID('plans'), setClass('form-group-wrapper')),
|
||||
),
|
||||
),
|
||||
formGroup
|
||||
|
||||
@@ -251,7 +251,7 @@ detailBody
|
||||
set::id('planIdBox'),
|
||||
picker(setID('plan'), set::name($multiplePlan ? 'plan[]' : 'plan'), set::items($plans), set::value($story->plan), set::multiple($multiplePlan)),
|
||||
),
|
||||
empty($plans) ? btn(set::url($this->createLink('productplan', 'create', "productID={$story->product}&branch={$story->branch}")), set('data-toggle', 'modal'), icon('cog')) : null,
|
||||
empty($plans) ? btn(set::url($this->createLink('productplan', 'create', "productID={$story->product}&branch={$story->branch}")), set('data-toggle', 'modal'), icon('plus')) : null,
|
||||
empty($plans) ? btn(set('data-on', 'click'), set('data-call', 'loadProductPlans'), set('data-params', $story->product), setClass('refresh'), icon('refresh')) : null,
|
||||
)
|
||||
),
|
||||
|
||||
@@ -551,7 +551,7 @@ class tree extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
$optionMenu = $this->tree->getOptionMenu($rootID, $viewType, $rootModuleID, $branch, $extra);
|
||||
$optionMenu = $this->tree->getOptionMenu($rootID, $viewType, $rootModuleID, (int)$branch, $extra);
|
||||
}
|
||||
|
||||
if(strpos($extra, 'excludeModuleID') !== false)
|
||||
|
||||
@@ -134,9 +134,9 @@ class treeModel extends model
|
||||
* @param string $grade
|
||||
* @param string $divide /|>
|
||||
* @access public
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
public function getOptionMenu($rootID, $type = 'story', $startModule = 0, $branch = 0, $param = 'nodeleted', $grade = 'all', $divide = '/')
|
||||
public function getOptionMenu(int $rootID, string $type = 'story', int $startModule = 0, int|array $branch = 0, string $param = 'nodeleted', string $grade = 'all', string $divide = '/'): array
|
||||
{
|
||||
if(empty($branch) and !is_array($branch)) $branch = 0;
|
||||
if(commonModel::isTutorialMode())
|
||||
|
||||
Reference in New Issue
Block a user