14 files changed +341
-19
lines changed Original file line number Diff line number Diff line change 2358
2358
'PhabricatorEditEngineSelectCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEngineSelectCommentAction.php',
2359
2359
'PhabricatorEditEngineTokenizerCommentAction' => 'applications/transactions/commentaction/PhabricatorEditEngineTokenizerCommentAction.php',
2360
2360
'PhabricatorEditField' => 'applications/transactions/editfield/PhabricatorEditField.php',
2361
+ 'PhabricatorEditPage' => 'applications/transactions/editengine/PhabricatorEditPage.php',
2361
2362
'PhabricatorEditType' => 'applications/transactions/edittype/PhabricatorEditType.php',
2362
2363
'PhabricatorEditor' => 'infrastructure/PhabricatorEditor.php',
2363
2364
'PhabricatorElasticFulltextStorageEngine' => 'applications/search/fulltextstorage/PhabricatorElasticFulltextStorageEngine.php',
6872
6873
'PhabricatorEditEngineSelectCommentAction' => 'PhabricatorEditEngineCommentAction',
6873
6874
'PhabricatorEditEngineTokenizerCommentAction' => 'PhabricatorEditEngineCommentAction',
6874
6875
'PhabricatorEditField' => 'Phobject',
6876
+ 'PhabricatorEditPage' => 'Phobject',
6875
6877
'PhabricatorEditType' => 'Phobject',
6876
6878
'PhabricatorEditor' => 'Phobject',
6877
6879
'PhabricatorElasticFulltextStorageEngine' => 'PhabricatorFulltextStorageEngine',
Original file line number Diff line number Diff line change @@ -624,11 +624,11 @@ protected function getEditRoutePattern($base = null) {
624
624
'(?P<id>[0-9]\d*)/)? ' .
625
625
'(?: ' .
626
626
'(?: ' .
627
- '(?P<editAction>parameters|nodefault|nocreate|nomanage|comment) ' .
627
+ '(?P<editAction>parameters|nodefault|nocreate|nomanage|comment)/ ' .
628
628
'| ' .
629
- '(?:form/(?P<formKey>[^/]+)) ' .
629
+ '(?:form/(?P<formKey>[^/]+)/)?(?:page/(?P<pageKey>[^/]+)/)? ' .
630
630
') ' .
631
- '/ )? ' ;
631
+ ')? ' ;
632
632
}
633
633
634
634
protected function getQueryRoutePattern ($ base = null ) {
Original file line number Diff line number Diff line change @@ -13,12 +13,30 @@ public function handleRequest(AphrontRequest $request) {
13
13
$ drequest = $ this ->getDiffusionRequest ();
14
14
$ repository = $ drequest ->getRepository ();
15
15
16
+ $ edit_uri = $ this ->getRepositoryControllerURI ($ repository , 'edit/ ' );
17
+
16
18
if (!$ repository ->canAllowDangerousChanges ()) {
17
- return new Aphront400Response ();
19
+ if ($ repository ->isSVN ()) {
20
+ return $ this ->newDialog ()
21
+ ->setTitle (pht ('Not in Danger ' ))
22
+ ->appendParagraph (
23
+ pht (
24
+ 'It is not possible for users to push any dangerous changes ' .
25
+ 'to a Subversion repository. Pushes to a Subversion repository ' .
26
+ 'can always be reverted and never destroy data. ' ))
27
+ ->addCancelButton ($ edit_uri );
28
+ } else {
29
+ return $ this ->newDialog ()
30
+ ->setTitle (pht ('Unprotectable Repository ' ))
31
+ ->appendParagraph (
32
+ pht (
33
+ 'This repository can not be protected from dangerous changes ' .
34
+ 'because Phabricator does not control what users are allowed ' .
35
+ 'to push to it. ' ))
36
+ ->addCancelButton ($ edit_uri );
37
+ }
18
38
}
19
39
20
- $ edit_uri = $ this ->getRepositoryControllerURI ($ repository , 'edit/ ' );
21
-
22
40
if ($ request ->isFormPost ()) {
23
41
$ xaction = id (new PhabricatorRepositoryTransaction ())
24
42
->setTransactionType (PhabricatorRepositoryTransaction::TYPE_DANGEROUS )
Original file line number Diff line number Diff line change @@ -85,6 +85,48 @@ protected function getCreateNewObjectPolicy() {
85
85
DiffusionCreateRepositoriesCapability::CAPABILITY );
86
86
}
87
87
88
+ protected function newPages ($ object ) {
89
+ $ panels = DiffusionRepositoryManagementPanel::getAllPanels ();
90
+
91
+ $ pages = array ();
92
+ $ uris = array ();
93
+ foreach ($ panels as $ panel_key => $ panel ) {
94
+ $ panel ->setRepository ($ object );
95
+
96
+ $ uris [$ panel_key ] = $ panel ->getPanelURI ();
97
+
98
+ $ page = $ panel ->newEditEnginePage ();
99
+ if (!$ page ) {
100
+ continue ;
101
+ }
102
+ $ pages [] = $ page ;
103
+ }
104
+
105
+ $ basics_key = DiffusionRepositoryBasicsManagementPanel::PANELKEY ;
106
+ $ basics_uri = $ uris [$ basics_key ];
107
+
108
+ $ more_pages = array (
109
+ id (new PhabricatorEditPage ())
110
+ ->setKey ('encoding ' )
111
+ ->setLabel (pht ('Text Encoding ' ))
112
+ ->setViewURI ($ basics_uri )
113
+ ->setFieldKeys (
114
+ array (
115
+ 'encoding ' ,
116
+ )),
117
+ id (new PhabricatorEditPage ())
118
+ ->setKey ('extensions ' )
119
+ ->setLabel (pht ('Extensions ' ))
120
+ ->setIsDefault (true ),
121
+ );
122
+
123
+ foreach ($ more_pages as $ page ) {
124
+ $ pages [] = $ page ;
125
+ }
126
+
127
+ return $ pages ;
128
+ }
129
+
88
130
protected function buildCustomEditFields ($ object ) {
89
131
$ viewer = $ this ->getViewer ();
90
132
Original file line number Diff line number Diff line change @@ -13,6 +13,13 @@ public function getManagementPanelOrder() {
13
13
return 1100 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'publish ' ,
19
+ 'autoclose ' ,
20
+ );
21
+ }
22
+
16
23
protected function buildManagementPanelActions () {
17
24
$ repository = $ this ->getRepository ();
18
25
$ viewer = $ this ->getViewer ();
@@ -22,7 +29,7 @@ protected function buildManagementPanelActions() {
22
29
$ repository ,
23
30
PhabricatorPolicyCapability::CAN_EDIT );
24
31
25
- $ actions_uri = $ repository -> getPathURI ( ' edit/actions/ ' );
32
+ $ actions_uri = $ this -> getEditPageURI ( );
26
33
27
34
return array (
28
35
id (new PhabricatorActionView ())
Original file line number Diff line number Diff line change @@ -13,6 +13,12 @@ public function getManagementPanelOrder() {
13
13
return 800 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'automationBlueprintPHIDs ' ,
19
+ );
20
+ }
21
+
16
22
protected function buildManagementPanelActions () {
17
23
$ repository = $ this ->getRepository ();
18
24
$ viewer = $ this ->getViewer ();
@@ -24,7 +30,7 @@ protected function buildManagementPanelActions() {
24
30
25
31
$ can_test = $ can_edit && $ repository ->canPerformAutomation ();
26
32
27
- $ automation_uri = $ repository -> getPathURI ( ' edit/automation/ ' );
33
+ $ automation_uri = $ this -> getEditPageURI ( );
28
34
$ test_uri = $ repository ->getPathURI ('edit/testautomation/ ' );
29
35
30
36
return array (
Original file line number Diff line number Diff line change @@ -13,6 +13,15 @@ public function getManagementPanelOrder() {
13
13
return 100 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'name ' ,
19
+ 'callsign ' ,
20
+ 'shortName ' ,
21
+ 'description ' ,
22
+ );
23
+ }
24
+
16
25
protected function buildManagementPanelActions () {
17
26
$ repository = $ this ->getRepository ();
18
27
$ viewer = $ this ->getViewer ();
@@ -22,10 +31,10 @@ protected function buildManagementPanelActions() {
22
31
$ repository ,
23
32
PhabricatorPolicyCapability::CAN_EDIT );
24
33
25
- $ edit_uri = $ repository -> getPathURI ( ' manage/ ' );
34
+ $ edit_uri = $ this -> getEditPageURI ( );
26
35
$ activate_uri = $ repository ->getPathURI ('edit/activate/ ' );
27
36
$ delete_uri = $ repository ->getPathURI ('edit/delete/ ' );
28
- $ encoding_uri = $ repository -> getPathURI ( ' edit/ encoding/ ' );
37
+ $ encoding_uri = $ this -> getEditPageURI ( ' encoding ' );
29
38
$ dangerous_uri = $ repository ->getPathURI ('edit/dangerous/ ' );
30
39
31
40
if ($ repository ->isTracked ()) {
Original file line number Diff line number Diff line change @@ -13,6 +13,14 @@ public function getManagementPanelOrder() {
13
13
return 1000 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'defaultBranch ' ,
19
+ 'trackOnly ' ,
20
+ 'autocloseOnly ' ,
21
+ );
22
+ }
23
+
16
24
protected function buildManagementPanelActions () {
17
25
$ repository = $ this ->getRepository ();
18
26
$ viewer = $ this ->getViewer ();
@@ -22,7 +30,7 @@ protected function buildManagementPanelActions() {
22
30
$ repository ,
23
31
PhabricatorPolicyCapability::CAN_EDIT );
24
32
25
- $ branches_uri = $ repository -> getPathURI ( ' edit/branches/ ' );
33
+ $ branches_uri = $ this -> getEditPageURI ( );
26
34
27
35
return array (
28
36
id (new PhabricatorActionView ())
Original file line number Diff line number Diff line change @@ -98,4 +98,42 @@ final protected function newTimeline() {
98
98
return $ this ->controller ->newTimeline ($ this ->getRepository ());
99
99
}
100
100
101
+ final public function getPanelURI () {
102
+ $ repository = $ this ->getRepository ();
103
+ $ key = $ this ->getManagementPanelKey ();
104
+ return $ repository ->getPathURI ("manage/ {$ key }/ " );
105
+ }
106
+
107
+ final public function newEditEnginePage () {
108
+ $ field_keys = $ this ->getEditEngineFieldKeys ();
109
+ if (!$ field_keys ) {
110
+ return null ;
111
+ }
112
+
113
+ $ key = $ this ->getManagementPanelKey ();
114
+ $ label = $ this ->getManagementPanelLabel ();
115
+ $ panel_uri = $ this ->getPanelURI ();
116
+
117
+ return id (new PhabricatorEditPage ())
118
+ ->setKey ($ key )
119
+ ->setLabel ($ label )
120
+ ->setViewURI ($ panel_uri )
121
+ ->setFieldKeys ($ field_keys );
122
+ }
123
+
124
+ protected function getEditEngineFieldKeys () {
125
+ return array ();
126
+ }
127
+
128
+ protected function getEditPageURI ($ page = null ) {
129
+ if ($ page === null ) {
130
+ $ page = $ this ->getManagementPanelKey ();
131
+ }
132
+
133
+ $ repository = $ this ->getRepository ();
134
+ $ id = $ repository ->getID ();
135
+ return "/diffusion/editpro/ {$ id }/page/ {$ page }/ " ;
136
+ }
137
+
138
+
101
139
}
Original file line number Diff line number Diff line change @@ -13,6 +13,14 @@ public function getManagementPanelOrder() {
13
13
return 300 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'policy.view ' ,
19
+ 'policy.edit ' ,
20
+ 'policy.push ' ,
21
+ );
22
+ }
23
+
16
24
protected function buildManagementPanelActions () {
17
25
$ repository = $ this ->getRepository ();
18
26
$ viewer = $ this ->getViewer ();
@@ -22,7 +30,7 @@ protected function buildManagementPanelActions() {
22
30
$ repository ,
23
31
PhabricatorPolicyCapability::CAN_EDIT );
24
32
25
- $ edit_uri = $ repository -> getPathURI ( ' manage/ ' );
33
+ $ edit_uri = $ this -> getEditPageURI ( );
26
34
27
35
return array (
28
36
id (new PhabricatorActionView ())
Original file line number Diff line number Diff line change @@ -13,6 +13,12 @@ public function getManagementPanelOrder() {
13
13
return 700 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'stagingAreaURI ' ,
19
+ );
20
+ }
21
+
16
22
protected function buildManagementPanelActions () {
17
23
$ repository = $ this ->getRepository ();
18
24
$ viewer = $ this ->getViewer ();
@@ -22,7 +28,7 @@ protected function buildManagementPanelActions() {
22
28
$ repository ,
23
29
PhabricatorPolicyCapability::CAN_EDIT );
24
30
25
- $ staging_uri = $ repository -> getPathURI ( ' edit/staging/ ' );
31
+ $ staging_uri = $ this -> getEditPageURI ( );
26
32
27
33
return array (
28
34
id (new PhabricatorActionView ())
Original file line number Diff line number Diff line change @@ -13,6 +13,13 @@ public function getManagementPanelOrder() {
13
13
return 900 ;
14
14
}
15
15
16
+ protected function getEditEngineFieldKeys () {
17
+ return array (
18
+ 'symbolLanguages ' ,
19
+ 'symbolRepositoryPHIDs ' ,
20
+ );
21
+ }
22
+
16
23
protected function buildManagementPanelActions () {
17
24
$ repository = $ this ->getRepository ();
18
25
$ viewer = $ this ->getViewer ();
@@ -22,7 +29,7 @@ protected function buildManagementPanelActions() {
22
29
$ repository ,
23
30
PhabricatorPolicyCapability::CAN_EDIT );
24
31
25
- $ symbols_uri = $ repository -> getPathURI ( ' edit/symbols/ ' );
32
+ $ symbols_uri = $ this -> getEditPageURI ( );
26
33
27
34
return array (
28
35
id (new PhabricatorActionView ())
0 commit comments