diff --git a/pinc/ProjectState.inc b/pinc/ProjectState.inc index ec3bbe0a8..30c6826a8 100644 --- a/pinc/ProjectState.inc +++ b/pinc/ProjectState.inc @@ -6,7 +6,7 @@ class ProjectState public readonly string $name, public readonly string $medium_label, public readonly string $label, - public readonly int $forum, + public readonly ?int $forum, public readonly string $phase, public readonly string $star_metal ) { @@ -231,6 +231,18 @@ function declare_project_states(array $rounds, array $pools): void '' )); + // for "parking" a project + + define("PROJ_PARKED", "project_parked"); + ProjectStates::add_state(new ProjectState( + PROJ_PARKED, + _("Project Parked"), + _("Project Parked"), + SiteConfig::get()->parked_projects_forum_idx, + 'PARKED', + '' + )); + // for the 'deletion' of a project define("PROJ_DELETE", "project_delete"); diff --git a/pinc/ProjectTransition.inc b/pinc/ProjectTransition.inc index 27abc74bd..82d61dd25 100644 --- a/pinc/ProjectTransition.inc +++ b/pinc/ProjectTransition.inc @@ -1158,6 +1158,29 @@ function create_project_transitions(): array ] ); + // ----------------------------------------------------------------------------- + // Transitions to PROJ_PARKED. + + foreach (ProjectStates::get_states() as $from_state) { + if (in_array($from_state, [PROJ_NEW, PROJ_DELETE, PROJ_PARKED, PROJ_COMPLETE, PROJ_SUBMIT_PG_POSTED])) { + continue; + } + + $project_transitions[] = new ProjectTransition( + $from_state, + PROJ_PARKED, + 'site_manager', + [ + 'project_restriction' => null, + 'action_name' => _('Park Project'), + 'confirmation_question' => _('Are you sure you want to park this project?'), + 'detour' => null, + 'settings_template' => "modifieddate=''", + 'collateral_actions' => null, + ] + ); + } + // ----------------------------------------------------------------------------- // Transitions to PROJ_DELETE. @@ -1189,6 +1212,7 @@ function create_project_transitions(): array ] ); } + return $project_transitions; } diff --git a/pinc/SiteConfig.inc b/pinc/SiteConfig.inc index b2dcffb06..4460f32ba 100644 --- a/pinc/SiteConfig.inc +++ b/pinc/SiteConfig.inc @@ -59,6 +59,7 @@ class SiteConfig public ?int $posted_projects_forum_idx; public ?int $deleted_projects_forum_idx; public ?int $completed_projects_forum_idx; + public ?int $parked_projects_forum_idx; public ?int $post_processing_forum_idx; public ?int $teams_forum_idx;