model); jsVar('labelClass', $config->project->labelClass); jsVar('longTime', $lang->project->longTime); jsVar('weekend', $config->execution->weekend); jsVar('multiBranchProducts', $multiBranchProducts); jsVar('errorSameProducts', $lang->project->errorSameProducts); jsVar('beginLessThanParent', $lang->project->beginLessThanParent); jsVar('endGreatThanParent', $lang->project->endGreatThanParent); jsVar('ignore', $lang->project->ignore); jsVar('unLinkProductTip', $lang->project->unLinkProductTip); jsVar('allProducts', $allProducts); jsVar('branchGroups', $branchGroups); jsVar('programTip', $lang->program->tips); jsVar('projectID', $project->id); jsVar('from', $from); jsVar('LONG_TIME', LONG_TIME); $labelClass = $config->project->labelClass[$model]; $delta = $project->end == LONG_TIME ? 999 : (strtotime($project->end) - strtotime($project->begin)) / 3600 / 24 + 1; $checkDeltaChecked = jsCallback()->do(<<<'JS' const beginDate = new Date($('[name=begin]').zui('datePicker').$.value); const endDate = new Date($('[name=end]').zui('datePicker').$.value); const days = parseInt((endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000)) + 1; if(parseInt($('input[name=delta]:checked').val()) != 999) $('[name=delta]').prop('checked', false); if($('#delta' + days).length > 0 && days != 999) $('#delta' + days).prop('checked', true); JS ); formPanel ( to::heading ( div ( setClass('panel-title text-lg'), $title, btn ( set::id('project-model'), setClass("$labelClass h-5 px-2"), zget($lang->project->modelList, $model, '') ) ) ), on::change('[name=delta]', 'computeEndDate'), formHidden('parent', $project->parent), formHidden('model', $project->model), formHidden('hasProduct', $project->hasProduct), formGroup ( set::width('1/2'), set::name('name'), set::value($project->name), set::label($lang->project->name) ), (isset($config->setCode) && $config->setCode == 1) ? formGroup ( set::width('1/2'), set::name('code'), set::value($project->code), set::label($lang->project->code) ) : null, formGroup ( set::width('1/4'), set::label($lang->project->PM), picker ( set::name('PM'), set::value($project->PM), set::items($PMUsers) ) ), formRow ( formGroup ( set::width('1/2'), set::label($lang->project->planDate), set::required(true), inputGroup ( on::change('[name=end], [name=begin]', $checkDeltaChecked), datePicker ( set::name('begin'), set('id', 'begin'), set::value($project->begin), set::placeholder($lang->project->begin), set::required(true) ), $lang->project->to, datePicker ( set::name('end'), set('id', 'end'), set::value($project->end != LONG_TIME ? $project->end : ''), set::placeholder($lang->project->end), set::required(true), set::disabled($project->end == LONG_TIME) ) ) ), formGroup ( set::width('1/2'), setClass('items-center'), radioList ( set::name('delta'), set::value($delta), set::inline(true), set::items($lang->project->endList) ) ) ), formGroup ( set::label($lang->project->desc), editor(set::name('desc'), html($project->desc)) ), formRow ( set::id('aclList'), formGroup ( set::name('acl'), set::label($lang->project->acl), set::control('radioList'), set::items($lang->project->aclList), $programID ? set::items($lang->project->subAclList) : set::items($lang->project->aclList), on::change()->toggleClass('.whitelistBox', 'hidden', "\$element.find('[name=acl]:checked').val() === 'open'"), set::value($project->acl) ) ), formGroup ( setClass('whitelistBox' . ($project->acl == 'open' ? ' hidden' : '')), set::width('1/2'), set::label($lang->whitelist), picker ( set::name('whitelist[]'), set::value($project->whitelist), set::items($users), set::multiple(true) ) ) ); setPageData('title', $title); render();