diff --git a/module/project/ui/common.field.php b/module/project/ui/common.field.php index 70ae158ba8..9d8b93d8b3 100644 --- a/module/project/ui/common.field.php +++ b/module/project/ui/common.field.php @@ -44,20 +44,22 @@ if($hasCode) $fields->field('PM')->control('picker')->items(data('PMUsers')); +$isLongTime = data('copyProject') ? data('copyProject.end') == LONG_TIME : data('project.end') == LONG_TIME; $fields->field('begin') ->label($lang->project->planDate) + ->checkbox(array('text' => $lang->project->longTime, 'name' => 'longTime', 'checked' => $isLongTime)) ->required() ->control('inputGroup') ->itemBegin('begin')->control('datePicker')->placeholder($lang->project->begin)->value(data('project.begin') ? data('project.begin') : date('Y-m-d'))->required(true)->itemEnd() ->item(array('control' => 'span', 'text' => '-')) - ->itemBegin('end')->control('datePicker')->placeholder($lang->project->end)->required(true)->value(data('project.end')) + ->itemBegin('end')->control('datePicker')->placeholder($lang->project->end)->required(true)->value(data('project.end'))->className('end-picker')->disabled($isLongTime) ->menu(array('items' => jsRaw('window.getDateMenu'))) ->itemEnd() ->tip(' ') ->tipProps(array('id' => 'dateTip')) ->tipClass('text-warning hidden'); -$fields->field('days')->label($lang->project->days . $lang->project->daysUnit)->control('input'); +$fields->field('days')->label($lang->project->days . $lang->project->daysUnit)->control('input')->hidden($isLongTime); $fields->field('productsBox') ->width('full') diff --git a/module/project/ui/create.html.php b/module/project/ui/create.html.php index 3b37a1e3b5..2864459772 100644 --- a/module/project/ui/create.html.php +++ b/module/project/ui/create.html.php @@ -65,6 +65,7 @@ formGridPanel on::click('[name=name], [name=code], [name=end], [name=days], [data-name="parent"] .pick *', 'removeTips'), on::click('[type=submit]', 'removeAllTips'), on::change('[name=hasProduct]', 'changeType'), + on::change('[name=longTime]')->do('$("[name=end]").zui("datePicker").render({disabled: $(target).prop("checked")}); $("[data-name=days]").toggleClass("hidden",$(target).prop("checked"));'), on::change('[name=future]', 'toggleBudget'), on::change('[name=begin], [name=end]', 'computeWorkDays'), on::change('[name^=products]', 'toggleStageBy'), diff --git a/module/project/ui/edit.html.php b/module/project/ui/edit.html.php index 2083a79a9e..c972be9c5a 100644 --- a/module/project/ui/edit.html.php +++ b/module/project/ui/edit.html.php @@ -59,6 +59,7 @@ formGridPanel ) ), on::change('[name=hasProduct]', 'changeType'), + on::change('[name=longTime]')->do('$("[name=end]").zui("datePicker").render({disabled: $(target).prop("checked")}); $("[data-name=days]").toggleClass("hidden",$(target).prop("checked"));'), on::change('[name=future]', 'toggleBudget'), on::change('[name=begin], [name=end]', 'computeWorkDays'), on::change('[name=parent], [name=budget]', 'checkBudget'), diff --git a/module/project/zen.php b/module/project/zen.php index 91452a13c9..a2da1cd986 100755 --- a/module/project/zen.php +++ b/module/project/zen.php @@ -20,8 +20,8 @@ class projectZen extends project protected function prepareCreateExtras(object $postData): object|false { $project = $postData->setDefault('status', 'wait') - ->setIF($this->post->delta == 999, 'end', LONG_TIME) - ->setIF($this->post->delta == 999, 'days', 0) + ->setIF($this->post->longTime, 'end', LONG_TIME) + ->setIF($this->post->longTime, 'days', 0) ->setIF($this->post->acl == 'open', 'whitelist', '') ->setIF(!isset($_POST['whitelist']), 'whitelist', '') ->setIF($this->post->multiple != 'on', 'multiple', '0') @@ -83,8 +83,8 @@ class projectZen extends project ->setDefault('lastEditedBy', $this->app->user->account) ->setDefault('lastEditedDate', helper::now()) ->setDefault('days', '0') - ->setIF($this->post->delta == 999, 'end', LONG_TIME) - ->setIF($this->post->delta == 999, 'days', 0) + ->setIF($this->post->longTime, 'end', LONG_TIME) + ->setIF($this->post->longTime, 'days', 0) ->setIF($this->post->future, 'budget', 0) ->setIF($this->post->budget != 0, 'budget', round((float)$this->post->budget, 2)) ->join('whitelist', ',')