This commit is contained in:
wangyidong
2024-05-30 13:29:12 +08:00
parent 6c1500552f
commit b23222b09b
3 changed files with 90 additions and 55 deletions
+3 -3
View File
@@ -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
View File
@@ -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');
}
+24 -41
View File
@@ -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'),