~ubuntu-branches/ubuntu/wily/phabricator/wily

1 by Richard Sellam
Import upstream version 0~git20141023
1
<?php
2
3
final class NuanceSourceEditController extends NuanceController {
4
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
5
  public function handleRequest(AphrontRequest $request) {
1 by Richard Sellam
Import upstream version 0~git20141023
6
    $can_edit = $this->requireApplicationCapability(
7
      NuanceSourceManageCapability::CAPABILITY);
8
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
9
    $viewer = $this->getViewer();
10
11
    $sources_uri = $this->getApplicationURI('source/');
12
13
    $source_id = $request->getURIData('id');
1 by Richard Sellam
Import upstream version 0~git20141023
14
    $is_new = !$source_id;
15
16
    if ($is_new) {
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
17
      $source = NuanceSource::initializeNewSource($viewer);
18
19
      $type = $request->getURIData('type');
20
      $map = NuanceSourceDefinition::getAllDefinitions();
21
22
      if (empty($map[$type])) {
23
        return new Aphront404Response();
24
      }
25
26
      $source->setType($type);
27
      $cancel_uri = $sources_uri;
1 by Richard Sellam
Import upstream version 0~git20141023
28
    } else {
29
      $source = id(new NuanceSourceQuery())
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
30
        ->setViewer($viewer)
1 by Richard Sellam
Import upstream version 0~git20141023
31
        ->withIDs(array($source_id))
32
        ->requireCapabilities(
33
          array(
34
            PhabricatorPolicyCapability::CAN_VIEW,
35
            PhabricatorPolicyCapability::CAN_EDIT,
36
          ))
37
        ->executeOne();
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
38
      if (!$source) {
39
        return new Aphront404Response();
40
      }
41
      $cancel_uri = $source->getURI();
1 by Richard Sellam
Import upstream version 0~git20141023
42
    }
43
44
    $definition = NuanceSourceDefinition::getDefinitionForSource($source);
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
45
    $definition->setActor($viewer);
1 by Richard Sellam
Import upstream version 0~git20141023
46
47
    $response = $definition->buildEditLayout($request);
48
    if ($response instanceof AphrontResponse) {
49
      return $response;
50
    }
51
    $layout = $response;
52
53
    $crumbs = $this->buildApplicationCrumbs();
0.15.4 by Richard Sellam
Import upstream version 0~git20150613
54
    $crumbs->addTextCrumb(pht('Sources'), $sources_uri);
55
56
    if ($is_new) {
57
      $crumbs->addTextCrumb(pht('New'));
58
    } else {
59
      $crumbs->addTextCrumb($source->getName(), $cancel_uri);
60
      $crumbs->addTextCrumb(pht('Edit'));
61
    }
62
1 by Richard Sellam
Import upstream version 0~git20141023
63
    return $this->buildApplicationPage(
64
      array(
65
        $crumbs,
66
        $layout,
67
      ),
68
      array(
69
        'title' => $definition->getEditTitle(),
70
      ));
71
  }
72
}