Skip to content
This repository was archived by the owner on Sep 23, 2023. It is now read-only.

Commit 99e1dff

Browse files
committed
delete.php: Use FormLayout
1 parent bc3e798 commit 99e1dff

File tree

2 files changed

+72
-49
lines changed

2 files changed

+72
-49
lines changed

delete.php

Lines changed: 69 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,80 @@
1111
die( '<p>You are not allowed to delete this wiki.</p>' );
1212
}
1313

14-
if ( !isset( $_POST['confirm' ] ) ) {
15-
$patches = format_patch_list( $wikiData['patchList'], $wikiData['branch'] );
16-
$linkedTasks = format_linked_tasks( $wikiData['linkedTaskList'] );
17-
$creator = $wikiData[ 'creator' ] ?? '';
14+
if ( !$wikiData['deleted'] ) {
15+
if ( !isset( $_POST['confirm' ] ) ) {
16+
$patches = format_patch_list( $wikiData['patchList'], $wikiData['branch'] );
17+
$linkedTasks = format_linked_tasks( $wikiData['linkedTaskList'] );
18+
$creator = $wikiData[ 'creator' ] ?? '';
1819

19-
echo '<table class="wikis">' .
20-
'<tr>' .
21-
'<th>Wiki</th>' .
22-
'<th>Patches<br /><em>✓=Merged ✗=Abandoned</em></th>' .
23-
'<th>Linked tasks<br /><em>✓=Resolved ✗=Declined/Invalid</em></th>' .
24-
'<th>Time</th>' .
25-
( $useOAuth ? '<th>Creator</th>' : '' ) .
26-
'</tr>' .
27-
'<tr>' .
28-
'<td data-label="Wiki" class="wiki"><a href="wikis/' . $wiki . '/w" title="' . $wiki . '">' . substr( $wiki, 0, 10 ) . '</a></td>' .
29-
'<td data-label="Patches" class="patches">' . $patches . '</td>' .
30-
'<td data-label="Linked tasks" class="linkedTasks">' . $linkedTasks . '</td>' .
31-
'<td data-label="Time" class="date">' . date( 'Y-m-d H:i:s', $wikiData[ 'created' ] ) . '</td>' .
32-
( $useOAuth ? '<td data-label="Creator">' . ( $creator ? user_link( $creator ) : '?' ) . '</td>' : '' ) .
33-
'</tr>' .
34-
'</table>';
20+
echo '<table class="wikis">' .
21+
'<tr>' .
22+
'<th>Wiki</th>' .
23+
'<th>Patches<br /><em>✓=Merged ✗=Abandoned</em></th>' .
24+
'<th>Linked tasks<br /><em>✓=Resolved ✗=Declined/Invalid</em></th>' .
25+
'<th>Time</th>' .
26+
( $useOAuth ? '<th>Creator</th>' : '' ) .
27+
'</tr>' .
28+
'<tr>' .
29+
'<td data-label="Wiki" class="wiki"><a href="wikis/' . $wiki . '/w" title="' . $wiki . '">' . substr( $wiki, 0, 10 ) . '</a></td>' .
30+
'<td data-label="Patches" class="patches">' . $patches . '</td>' .
31+
'<td data-label="Linked tasks" class="linkedTasks">' . $linkedTasks . '</td>' .
32+
'<td data-label="Time" class="date">' . date( 'Y-m-d H:i:s', $wikiData[ 'created' ] ) . '</td>' .
33+
( $useOAuth ? '<td data-label="Creator">' . ( $creator ? user_link( $creator ) : '?' ) . '</td>' : '' ) .
34+
'</tr>' .
35+
'</table>';
3536

36-
echo '<form method="POST">' .
37-
'<p>Are you sure you want to delete this wiki?</p>' .
38-
'<p>This cannot be undone.</p>' .
39-
new OOUI\ButtonInputWidget( [
40-
'type' => 'submit',
41-
'name' => 'confirm',
42-
'label' => 'Delete',
43-
'flags' => [ 'primary', 'destructive' ]
44-
] ) .
45-
new OOUI\HiddenInputWidget( [
46-
'name' => 'csrf_token',
47-
'value' => get_csrf_token(),
48-
] ) .
49-
'</form>';
50-
die();
51-
}
37+
echo new OOUI\FormLayout( [
38+
'method' => 'POST',
39+
'items' => [
40+
new OOUI\FieldsetLayout( [
41+
'label' => new OOUI\HtmlSnippet(
42+
'<br>Are you sure you want to delete this wiki? This cannot be undone.'
43+
),
44+
'items' => array_filter( [
45+
new OOUI\FieldLayout(
46+
new OOUI\ButtonInputWidget( [
47+
'type' => 'submit',
48+
'name' => 'confirm',
49+
'label' => 'Delete',
50+
'flags' => [ 'primary', 'destructive' ]
51+
] ),
52+
[
53+
'label' => ' ',
54+
'align' => 'inline',
55+
]
56+
),
57+
new OOUI\FieldLayout(
58+
new OOUI\HiddenInputWidget( [
59+
'name' => 'csrf_token',
60+
'value' => get_csrf_token(),
61+
] )
62+
),
63+
] )
64+
] )
65+
]
66+
] );
5267

53-
if ( !isset( $_POST['csrf_token'] ) || !check_csrf_token( $_POST['csrf_token'] ) ) {
54-
die( "Invalid session." );
55-
}
68+
} else {
69+
if ( !isset( $_POST['csrf_token'] ) || !check_csrf_token( $_POST['csrf_token'] ) ) {
70+
die( "Invalid session." );
71+
}
72+
73+
ob_implicit_flush( true );
5674

57-
ob_implicit_flush( true );
75+
echo '<div class="consoleLog">';
76+
$error = delete_wiki( $wiki );
77+
echo '</div>';
5878

59-
echo '<div class="consoleLog">';
60-
$error = delete_wiki( $wiki );
61-
echo '</div>';
79+
if ( $error ) {
80+
die( '<p>Error deleting wiki:<br>' . htmlentities( $error ) . '</p>' );
81+
}
82+
83+
// Refresh wiki data
84+
$wikiData = get_wiki_data( $wiki );
85+
}
86+
}
6287

63-
if ( $error ) {
64-
die( '<p>Error deleting wiki:<br>' . htmlentities( $error ) . '</p>' );
65-
} else {
88+
if ( $wikiData['deleted'] ) {
6689
echo '<p>Wiki deleted.</p>';
6790
}

includes.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ function shell( $cmd ) : ?string {
305305
return $error ? null : $process->getOutput();
306306
}
307307

308-
function delete_wiki( string $wiki ) : int {
308+
function delete_wiki( string $wiki ) : ?string {
309309
global $mysqli;
310310

311311
$wikiData = get_wiki_data( $wiki );
@@ -318,7 +318,7 @@ function delete_wiki( string $wiki ) : int {
318318
'PATCHDEMO' => __DIR__,
319319
'WIKI' => $wiki
320320
], __DIR__ . '/deletewiki.sh' );
321-
$error = shell_echo( $cmd );
321+
$errorCode = shell_echo( $cmd );
322322

323323
foreach ( $wikiData['announcedTasks'] as $task ) {
324324
// TODO: Deduplicate server/serverPath with variables in new.php
@@ -343,7 +343,7 @@ function delete_wiki( string $wiki ) : int {
343343
$stmt->execute();
344344
$stmt->close();
345345

346-
return $error;
346+
return $errorCode ? 'Delete script failed.' : null;
347347
}
348348

349349
$requestCache = [];

0 commit comments

Comments
 (0)