Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/view/DiffusionCloneURIView.php
12242 views
1
<?php
2
3
4
final class DiffusionCloneURIView extends AphrontView {
5
6
private $repository;
7
private $repositoryURI;
8
private $displayURI;
9
10
public function setRepository(PhabricatorRepository $repository) {
11
$this->repository = $repository;
12
return $this;
13
}
14
15
public function getRepository() {
16
return $this->repository;
17
}
18
19
public function setRepositoryURI(PhabricatorRepositoryURI $repository_uri) {
20
$this->repositoryURI = $repository_uri;
21
return $this;
22
}
23
24
public function getRepositoryURI() {
25
return $this->repositoryURI;
26
}
27
28
public function setDisplayURI($display_uri) {
29
$this->displayURI = $display_uri;
30
return $this;
31
}
32
33
public function getDisplayURI() {
34
return $this->displayURI;
35
}
36
37
public function render() {
38
$viewer = $this->getViewer();
39
40
require_celerity_resource('diffusion-icons-css');
41
42
Javelin::initBehavior('select-content');
43
44
$uri_id = celerity_generate_unique_node_id();
45
46
$display = $this->getDisplayURI();
47
48
$input = javelin_tag(
49
'input',
50
array(
51
'id' => $uri_id,
52
'type' => 'text',
53
'value' => $display,
54
'class' => 'diffusion-clone-uri',
55
'readonly' => 'true',
56
));
57
58
$uri = $this->getRepositoryURI();
59
switch ($uri->getEffectiveIOType()) {
60
case PhabricatorRepositoryURI::IO_READ:
61
$io_icon = 'fa-eye';
62
$io_tip = pht('Read-Only');
63
break;
64
case PhabricatorRepositoryURI::IO_READWRITE:
65
$io_icon = 'fa-download';
66
$io_tip = pht('Read / Write');
67
break;
68
default:
69
$io_icon = 'fa-cloud';
70
$io_tip = pht('External');
71
break;
72
}
73
74
$io = id(new PHUIButtonView())
75
->setTag('a')
76
->setColor(PHUIButtonView::GREY)
77
->setIcon($io_icon)
78
->setHref('#')
79
->addSigil('select-content')
80
->addSigil('has-tooltip')
81
->setMetadata(
82
array(
83
'tip' => $io_tip,
84
'selectID' => $uri_id,
85
));
86
87
switch ($uri->getEffectiveIOType()) {
88
case PhabricatorRepositoryURI::IO_READ:
89
case PhabricatorRepositoryURI::IO_READWRITE:
90
switch ($uri->getBuiltinProtocol()) {
91
case PhabricatorRepositoryURI::BUILTIN_PROTOCOL_SSH:
92
$auth_uri = id(new PhabricatorSSHKeysSettingsPanel())
93
->setViewer($viewer)
94
->setUser($viewer)
95
->getPanelURI();
96
$auth_tip = pht('Manage SSH Keys');
97
$auth_disabled = false;
98
break;
99
default:
100
$auth_uri = id(new DiffusionSetPasswordSettingsPanel())
101
->setViewer($viewer)
102
->setUser($viewer)
103
->getPanelURI();
104
$auth_tip = pht('Manage Password');
105
$auth_disabled = false;
106
break;
107
}
108
break;
109
default:
110
$auth_disabled = true;
111
$auth_tip = pht('External');
112
$auth_uri = '#';
113
break;
114
}
115
116
$credentials = id(new PHUIButtonView())
117
->setTag('a')
118
->setColor(PHUIButtonView::GREY)
119
->setIcon('fa-key')
120
->setTooltip($auth_tip)
121
->setHref($auth_uri)
122
->setDisabled($auth_disabled);
123
124
$cells = array();
125
$cells[] = phutil_tag('td', array(), $input);
126
$cells[] = phutil_tag('th', array(), $io);
127
$cells[] = phutil_tag('th', array(), $credentials);
128
129
$row = phutil_tag('tr', array(), $cells);
130
131
return phutil_tag(
132
'table',
133
array(
134
'class' => 'diffusion-clone-uri-table',
135
),
136
$row);
137
}
138
139
}
140
141