* Fix bug #50362.
This commit is contained in:
@@ -83,10 +83,10 @@ class fixer extends baseFixer
|
||||
{
|
||||
global $config, $app;
|
||||
|
||||
if($config->edition != 'open' && empty($app->installing))
|
||||
if($config->edition != 'open' && empty($app->installing))
|
||||
{
|
||||
$moduleName = $moduleName ? $moduleName : $app->getModuleName();
|
||||
$methodName = $methodName ? $moduleName : $app->getMethodName();
|
||||
$moduleName = $app->getModuleName();
|
||||
$methodName = $app->getMethodName();
|
||||
|
||||
$flow = $app->control->loadModel('workflow')->getByModule($moduleName);
|
||||
if(!$flow) return parent::get($fields);
|
||||
|
||||
+63
-11
@@ -1,18 +1,70 @@
|
||||
window.toggleCopy = function(toggle)
|
||||
function syncModule()
|
||||
{
|
||||
$('.form-group.copy').toggleClass('hidden', toggle);
|
||||
productID = $('[name=allProduct]').val();
|
||||
moduleID = $('[name=productModule]').val();
|
||||
|
||||
$.getJSON($.createLink('tree', 'ajaxGetSonModules', 'moduleID=' + moduleID + '&rootID=' + productID + '&type=story'), function(modules)
|
||||
{
|
||||
if(modules.length == 0)
|
||||
{
|
||||
zui.Modal.alert(noSubmodule);
|
||||
return false;
|
||||
}
|
||||
|
||||
let $lastFormRow = $('.form-row .row-module').last().closest('.form-row');
|
||||
let $lastBranch = $lastFormRow.find('.picker-box [name^=branch]');
|
||||
let $cloneFormRow = $lastFormRow.clone().addClass('copy');
|
||||
let $branchPicker = null;
|
||||
if($lastBranch.length > 0)
|
||||
{
|
||||
$branchPicker = $lastBranch.zui('picker');
|
||||
$cloneFormRow.find('.picker-box').removeAttr('id').removeAttr('data-zui-picker').empty();
|
||||
}
|
||||
|
||||
$.each(modules, function(key, module)
|
||||
{
|
||||
$('.form-row:not(.copyBox) .row-module').each(function()
|
||||
{
|
||||
moduleName = $(this).find('input[id^=modules]').val();
|
||||
if(moduleName == module.name) modules[key] = null;
|
||||
})
|
||||
});
|
||||
|
||||
$.each(modules, function(key, module)
|
||||
{
|
||||
if(module)
|
||||
{
|
||||
$('.form-row:not(.copyBox):not(.sonModule):not(.copy)').first().before($cloneFormRow.prop('outerHTML'));
|
||||
|
||||
let $copy = $('.form-row.copy').last();
|
||||
let $branch = $copy.find('.picker-box');
|
||||
|
||||
$copy.find('input[id^=modules]').val(module.name);
|
||||
$copy.find('input[id^=shorts]').val(module.short);
|
||||
if($branch.length > 0) new zui.Picker($branch, $branchPicker.options);
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
$(document).ready(function()
|
||||
function syncProduct(obj)
|
||||
{
|
||||
toggleCopy(true);
|
||||
});
|
||||
link = $.createLink('tree', 'ajaxGetOptionMenu', 'rootID=' + obj.value + "&viewType=" + viewType + "&branch=all&rootModuleID=0&returnType=json");
|
||||
$.getJSON(link, function(modules)
|
||||
{
|
||||
let $picker = $('[name=productModule]').zui('picker');
|
||||
let items = [];
|
||||
if(obj.value)
|
||||
{
|
||||
$.each(modules, function(key, value){ items.push({'value': key, 'text': value}); });
|
||||
}
|
||||
|
||||
window.syncProductOrProject = function(obj, type)
|
||||
$picker.render({items: items})
|
||||
$picker.$.setValue('');
|
||||
})
|
||||
}
|
||||
|
||||
window.toggleCopy = function()
|
||||
{
|
||||
if(type == 'product') viewType = 'story';
|
||||
if(type == 'project') viewType = 'task';
|
||||
|
||||
const rootID = $(obj).find('input.pick-value').val();
|
||||
const link = $.createLink('tree', 'ajaxGetOptionMenu', 'rootID=' + rootID + "&viewType=" + viewType + "&branch=all&rootModuleID=0&returnType=json");
|
||||
$('.form-row.copyBox').toggleClass('hidden');
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@ declare(strict_types=1);
|
||||
namespace zin;
|
||||
|
||||
jsVar('rootID', $root->id);
|
||||
jsVar('+viewType', $viewType);
|
||||
jsVar('viewType', $viewType);
|
||||
jsVar('noSubmodule', $lang->tree->noSubmodule);
|
||||
|
||||
$manageTitle = $lang->tree->manageChild;
|
||||
if(strpos($viewType, 'doc') !== false)
|
||||
@@ -34,27 +35,20 @@ $maxOrder = 0;
|
||||
$moduleRows = array();
|
||||
if($viewType == 'story' && $allProduct)
|
||||
{
|
||||
$moduleRows[] = formGroup
|
||||
$moduleRows[] = formRow
|
||||
(
|
||||
setClass('copyBox hidden'),
|
||||
formGroup
|
||||
(
|
||||
setClass('copy hidden'),
|
||||
inputGroup
|
||||
(
|
||||
setClass('row-module'),
|
||||
picker
|
||||
(
|
||||
set::name('allProduct'),
|
||||
set::items($allProduct),
|
||||
set::required(true),
|
||||
set::onchange("syncProductOrProject(this, 'product')")
|
||||
),
|
||||
picker
|
||||
(
|
||||
setClass('col-short'),
|
||||
set::name('productModule'),
|
||||
set::items($productModules)
|
||||
)
|
||||
picker(set::name("allProduct"), set::items($allProduct), on::change("syncProduct(e.target)")),
|
||||
picker(set::name("productModule"), set::items(array())),
|
||||
btn(setID('copyModule'), on::click("syncModule"), icon('copy'))
|
||||
)
|
||||
);
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
foreach($sons as $son)
|
||||
@@ -63,6 +57,7 @@ foreach($sons as $son)
|
||||
|
||||
$moduleRows[] = formRow
|
||||
(
|
||||
setClass('sonModule'),
|
||||
formGroup
|
||||
(
|
||||
inputGroup
|
||||
@@ -76,9 +71,8 @@ foreach($sons as $son)
|
||||
set::value($son->name),
|
||||
set::placeholder($placeholder)
|
||||
),
|
||||
picker
|
||||
empty($branches) ? null : picker
|
||||
(
|
||||
setClass(empty($branches) ? 'hidden' : ''),
|
||||
set::name("branch[id$son->id]"),
|
||||
set::items($branches),
|
||||
set::value($son->branch),
|
||||
@@ -101,10 +95,7 @@ foreach($sons as $son)
|
||||
set::control('hidden')
|
||||
)
|
||||
),
|
||||
batchActions
|
||||
(
|
||||
set::actionClass('action-group child-hidden')
|
||||
)
|
||||
batchActions(set::actionClass('action-group child-hidden'))
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -127,15 +118,14 @@ for($i = 0; $i < \tree::NEW_CHILD_COUNT; $i ++)
|
||||
input
|
||||
(
|
||||
setClass('col-module'),
|
||||
set::name("modules[$i]"),
|
||||
set::name("modules[]"),
|
||||
set::type('input'),
|
||||
set::value(''),
|
||||
set::placeholder($placeholder)
|
||||
),
|
||||
picker
|
||||
empty($branches) ? null : picker
|
||||
(
|
||||
setClass(empty($branches) ? 'hidden' : ''),
|
||||
set::name("branch[$i]"),
|
||||
set::name("branch[]"),
|
||||
set::items($branches),
|
||||
set::value($initBranch),
|
||||
set::required(true)
|
||||
@@ -143,15 +133,12 @@ for($i = 0; $i < \tree::NEW_CHILD_COUNT; $i ++)
|
||||
input
|
||||
(
|
||||
setClass('col-short'),
|
||||
set::name("shorts[$i]"),
|
||||
set::name("shorts[]"),
|
||||
set::type('input'),
|
||||
set::placeholder($lang->tree->short)
|
||||
)
|
||||
),
|
||||
batchActions
|
||||
(
|
||||
set::actionClass('action-group')
|
||||
)
|
||||
batchActions(set::actionClass('action-group'))
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -260,16 +247,12 @@ div
|
||||
(
|
||||
setClass('pb-4'),
|
||||
set::title($manageTitle),
|
||||
$viewType == 'story' && $allProduct && $canBeChanged ? to::headingActions
|
||||
to::headingActions
|
||||
(
|
||||
btn
|
||||
(
|
||||
set::size('sm'),
|
||||
set::type('primary'),
|
||||
set::url('javascript:toggleCopy()'),
|
||||
$lang->tree->syncFromProduct
|
||||
)
|
||||
) : null,
|
||||
($viewType == 'story' && $allProduct && $canBeChanged) ? btn(setClass('primary'), set::size('sm'), $lang->tree->syncFromProduct, on::click('toggleCopy')) : null,
|
||||
($viewType == 'feedback' && common::hasPriv('feedback', 'syncProduct') && !isset($syncConfig[$rootID])) ? btn(setClass('primary'), set::size('sm'), set::url(createLink('feedback', 'syncProduct', "productID=$rootID&module=feedback&parent=$parent")), setData('toggle', 'modal'), $lang->tree->syncProductModule) : null,
|
||||
($viewType == 'ticket' && common::hasPriv('ticket', 'syncProduct') && !isset($syncConfig[$rootID])) ? btn(setClass('primary'), set::size('sm'), set::url(createLink('ticket', 'syncProduct', "productID=$rootID&parent=$parent")), setData('toggle', 'modal'), $lang->tree->syncProductModule) : null
|
||||
),
|
||||
div
|
||||
(
|
||||
setClass('flex'),
|
||||
|
||||
Reference in New Issue
Block a user