Skip to content
Snippets Groups Projects
Select Git revision
  • bce9e295f3c5e556069d3b18cf8ff06252d7a28f
  • deploy/production default
  • deploy/test
3 results

SprintApplication.php

Blame
  • SprintApplication.php 7.13 KiB
    <?php
    /**
     * @author Michael Peters
     * @author Christopher Johnson
     * @license GPL version 3
     */
    
    final class SprintApplication extends PhabricatorApplication {
    
      public function getName() {
        return pht('Sprint');
      }
    
      public function getBaseURI() {
          return '/project/sprint/';
      }
    
      public function getIconName() {
        return 'fa-puzzle-piece';
      }
    
      public function getShortDescription() {
        return 'Build Sprints';
      }
    
      public function getEventListeners() {
        return array(
          new BurndownActionMenuEventListener(),
        );
      }
    
      public function getRoutes() {
        $enable_board = PhabricatorEnv::getEnvConfig('sprint.enable-sprint-board');
        if ($enable_board == true) {
          return array(
            // this is the default application route controller
              '/project/sprint/' => array(
                  '' => 'SprintListController',
                // these are forked controllers for the Sprint Board
                  'board/(?P<projectID>[1-9]\d*)/' => array(
                      'edit/(?:(?P<id>\d+)/)?'
                      => 'SprintBoardColumnEditController',
                      'hide/(?:(?P<id>\d+)/)?'
                      => 'SprintBoardColumnHideController',
                      'column/(?:(?P<id>\d+)/)?'
                      => 'SprintBoardColumnDetailController',
                      'import/'
                      => 'SprintBoardImportController',
                      'reorder/'
                      => 'SprintBoardReorderController',
                  ),
                // these allow task creation and editing from a Sprint Board
                  'board/task/edit/(?P<id>[1-9]\d*)/'
                  => 'SprintBoardTaskEditController',
                  'board/task/create/'
                  => 'SprintBoardTaskEditController',
                  'board/batch/'
                  => 'SprintBoardBatchEditController',
                // these are for board filters and column queries
                  'board/(?P<id>[1-9]\d*)/'.
                  '(?P<filter>filter/)?'.
                  '(?:query/(?P<queryKey>[^/]+)/)?'
                  => 'SprintBoardViewController',
                // these are native Sprint application controllers
                  'burn/(?P<id>\d+)/' => 'SprintDataViewController',
                  'profile/(?P<id>[1-9]\d*)/'
                  => 'SprintProjectProfileController',
                  'report/list/' => 'SprintListController',
                  'report/history/' => 'SprintHistoryController',
                  'report/(?:(?P<view>\w+)/)?' => 'SprintReportController',
                  'view/(?P<id>\d+)/' => 'SprintDataViewController',
                // all routes following point to default controllers
                  'archive/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectArchiveController',
                  $this->getEditRoutePattern('edit/')
                  => 'PhabricatorProjectEditController',
                  'feed/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectFeedController',
                  'icon/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectEditIconController',
                  'members/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectMembersEditController',
                  'members/(?P<id>[1-9]\d*)/remove/'
                  => 'PhabricatorProjectMembersRemoveController',
                  'move/(?P<id>[1-9]\d*)/' => 'SprintBoardMoveController',
                  'picture/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectEditPictureController',
                  'update/(?P<id>[1-9]\d*)/(?P<action>[^/]+)/'
                  => 'PhabricatorProjectUpdateController',
              ),
            // primary tag route override
              '/tag/' => array(
                  '(?P<slug>[^/]+)/' => 'SprintProjectViewController',
                  '(?P<slug>[^/]+)/board/' => 'SprintBoardViewController',
              ),
          );
        } else {
          return array(
            // this is the default application route controller
              '/project/sprint/' => array(
                  '' => 'SprintListController',
                  'board/(?P<projectID>[1-9]\d*)/' => array(
                      'edit/(?:(?P<id>\d+)/)?'
                      => 'PhabricatorProjectBoardColumnEditController',
                      'hide/(?:(?P<id>\d+)/)?'
                      => 'PhabricatorProjectBoardColumnHideController',
                      'column/(?:(?P<id>\d+)/)?'
                      => 'PhabricatorProjectBoardColumnDetailController',
                      'import/'
                      => 'PhabricatorProjectBoardImportController',
                      'reorder/'
                      => 'PhabricatorProjectBoardReorderController',
                  ),
                // these are for board filters and column queries
                  'board/(?P<id>[1-9]\d*)/'.
                  '(?P<filter>filter/)?'.
                  '(?:query/(?P<queryKey>[^/]+)/)?'
                  => 'PhabricatorProjectBoardViewController',
                // these are native Sprint application controllers
                  'burn/(?P<id>\d+)/' => 'SprintDataViewController',
                  'profile/(?P<id>[1-9]\d*)/'
                  => 'SprintProjectProfileController',
                  'report/list/' => 'SprintListController',
                  'report/history/' => 'SprintHistoryController',
                  'report/(?:(?P<view>\w+)/)?' => 'SprintReportController',
                  'view/(?P<id>\d+)/' => 'SprintDataViewController',
                // all routes following point to default controllers
                  'archive/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectArchiveController',
                  'details/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectEditDetailsController',
                  'feed/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectFeedController',
                  'icon/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectEditIconController',
                  'members/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectMembersEditController',
                  'members/(?P<id>[1-9]\d*)/remove/'
                  => 'PhabricatorProjectMembersRemoveController',
                  'move/(?P<id>[1-9]\d*)/' => 'SprintBoardMoveController',
                  'picture/(?P<id>[1-9]\d*)/'
                  => 'PhabricatorProjectEditPictureController',
                  'update/(?P<id>[1-9]\d*)/(?P<action>[^/]+)/'
                  => 'PhabricatorProjectUpdateController',
              ),
          );
        }
      }
    
      protected function getCustomCapabilities() {
        return array(
            SprintDefaultViewCapability::CAPABILITY => array(
                'caption' => pht(
                    'Default view policy for newly created sprints.'),
            ),
            ProjectCreateProjectsCapability::CAPABILITY => array(),
            ProjectCanLockProjectsCapability::CAPABILITY => array(
                'default' => PhabricatorPolicies::POLICY_ADMIN,
            ),
            ManiphestDefaultViewCapability::CAPABILITY => array(
                'caption' => pht('Default view policy for newly created tasks.'),
            ),
            ManiphestDefaultEditCapability::CAPABILITY => array(
                'caption' => pht('Default edit policy for newly created tasks.'),
            ),
            ManiphestEditStatusCapability::CAPABILITY => array(),
            ManiphestEditAssignCapability::CAPABILITY => array(),
            ManiphestEditPoliciesCapability::CAPABILITY => array(),
            ManiphestEditPriorityCapability::CAPABILITY => array(),
            ManiphestEditProjectsCapability::CAPABILITY => array(),
            ManiphestBulkEditCapability::CAPABILITY => array(),
        );
      }
    }