Skip to content

Commit 91178d7

Browse files
committed
Add support for creating files via file manager
1 parent 5567269 commit 91178d7

File tree

7 files changed

+181
-4
lines changed

7 files changed

+181
-4
lines changed

app/Http/Controllers/Server/ServerController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,16 @@ public function getAddFile(Request $request, $uuid)
122122
{
123123
$server = Models\Server::getByUUID($uuid);
124124
$this->authorize('add-files', $server);
125+
$node = Models\Node::find($server->node);
126+
127+
Javascript::put([
128+
'server' => collect($server->makeVisible('daemonSecret'))->only(['uuid', 'uuidShort', 'daemonSecret', 'username']),
129+
'node' => collect($node)->only('fqdn', 'scheme', 'daemonListen'),
130+
]);
125131

126132
return view('server.files.add', [
127133
'server' => $server,
128-
'node' => Models\Node::find($server->node),
134+
'node' => $node,
129135
'directory' => (in_array($request->get('dir'), [null, '/', ''])) ? '' : trim($request->get('dir'), '/') . '/',
130136
]);
131137
}

public/themes/pterodactyl/js/frontend/files/editor.js

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,26 @@
1818
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1919
// SOFTWARE.
2020
$(document).ready(function () {
21-
$('.server-files').addClass('active');
2221
const Editor = ace.edit('editor');
2322
const Modelist = ace.require('ace/ext/modelist')
2423

2524
Editor.setTheme('ace/theme/chrome');
26-
Editor.getSession().setMode(Modelist.getModeForPath(Pterodactyl.stat.name).mode);
2725
Editor.getSession().setUseWrapMode(true);
2826
Editor.setShowPrintMargin(false);
2927

28+
if (typeof Pterodactyl !== 'undefined' && typeof Pterodactyl.stat !== 'undefined') {
29+
Editor.getSession().setMode(Modelist.getModeForPath(Pterodactyl.stat.name).mode);
30+
}
31+
3032
Editor.commands.addCommand({
3133
name: 'save',
3234
bindKey: {win: 'Ctrl-S', mac: 'Command-S'},
3335
exec: function(editor) {
34-
save();
36+
if ($('#save_file').length) {
37+
save();
38+
} else if ($('#create_file').length) {
39+
create();
40+
}
3541
},
3642
readOnly: false
3743
});
@@ -41,6 +47,51 @@ $(document).ready(function () {
4147
save();
4248
});
4349

50+
$('#create_file').on('click', function (e) {
51+
e.preventDefault();
52+
create();
53+
});
54+
55+
$('#aceMode').on('change', event => {
56+
Editor.getSession().setMode('ace/mode/' + $('#aceMode').val());
57+
});
58+
59+
function create() {
60+
if (_.isEmpty($('#file_name').val())) {
61+
$.notify({
62+
message: 'No filename was passed.'
63+
}, {
64+
type: 'danger'
65+
});
66+
return;
67+
}
68+
$('#create_file').html('<i class="fa fa-spinner fa fa-spin"></i> Creating File').addClass('disabled');
69+
$.ajax({
70+
type: 'POST',
71+
url: Router.route('server.files.save', { server: Pterodactyl.server.uuidShort }),
72+
headers: {
73+
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content'),
74+
},
75+
data: {
76+
file: $('#file_name').val(),
77+
contents: Editor.getValue()
78+
}
79+
}).done(function (data) {
80+
window.location.replace(Router.route('server.files.edit', {
81+
server: Pterodactyl.server.uuidShort,
82+
file: $('#file_name').val(),
83+
}));
84+
}).fail(function (jqXHR) {
85+
$.notify({
86+
message: jqXHR.responseText
87+
}, {
88+
type: 'danger'
89+
});
90+
}).always(function () {
91+
$('#create_file').html('Create File').removeClass('disabled');
92+
});
93+
}
94+
4495
function save() {
4596
var fileName = $('input[name="file"]').val();
4697
$('#save_file').html('<i class="fa fw-fw fa-spinner fa-spin"></i> Saving File').addClass('disabled');

public/themes/pterodactyl/vendor/select2/select2.full.min.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/themes/pterodactyl/vendor/select2/select2.min.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/lang/en/server.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
'save' => 'Save File',
2323
'return' => 'Return to File Manager',
2424
],
25+
'add' => [
26+
'header' => 'New File',
27+
'header_sub' => 'Create a new file on your server.',
28+
'name' => 'File Name',
29+
'create' => 'Create File',
30+
],
2531
],
2632
'config' => [
2733
'startup' => [

resources/lang/en/strings.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@
4949
'primary' => 'Primary',
5050
'make_primary' => 'Make Primary',
5151
'none' => 'None',
52+
'cancel' => 'Cancel',
5253
];

0 commit comments

Comments
 (0)