Skip to content

Commit f3ab590

Browse files
committed
add codemirror
1 parent 4aec290 commit f3ab590

File tree

3 files changed

+145
-0
lines changed

3 files changed

+145
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
{% load i18n %}
2+
<!doctype html>
3+
<html lang="en">
4+
<head>
5+
<title>{% trans "Editing File - CyberPanel" %}</title>
6+
<!-- Required meta tags -->
7+
<meta charset="utf-8">
8+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
9+
10+
{% load static %}
11+
12+
13+
<!-- Bootstrap CSS -->
14+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
15+
<link rel="stylesheet" href="{% static 'filemanager/images/fonts/css/font-awesome.min.css' %}">
16+
<link rel="stylesheet" href="{% static 'filemanager/css/fileManager.css' %}">
17+
18+
19+
<!-- Angular JS -->
20+
21+
<script src = "https://code.angularjs.org/1.6.5/angular.min.js"></script>
22+
<script src="{% static 'filemanager/js/fileManager.js' %}"></script>
23+
24+
<!-- Fix for old browsers -->
25+
<script src="{% static 'filemanager/js/es5-shim.min.js' %}"></script>
26+
<script src="{% static 'filemanager/js/es5-sham.min.js' %}"></script>
27+
<script src="{% static 'filemanager/js/jquery-1.8.3.min.js' %}"></script>
28+
<script src="{% static 'filemanager/js/console-sham.js' %}"></script>
29+
30+
31+
32+
<!-- HTML Editor Include -->
33+
34+
</head>
35+
<body ng-app="fileManager" ng-controller="fileManagerCtrl">
36+
37+
<!--- navigation bar ---->
38+
39+
<nav id="navBar" class="navbar navbar-expand-lg navbar-light bg-light">
40+
<div class="header-logo">
41+
<a href="#"><img src="{% static 'filemanager/images/fileManager.png' %}"> <span style="display: none" id="domainNameInitial">{{ domainName }}</span></a>
42+
</div>
43+
<!--- second bar ---->
44+
45+
<div class="">
46+
<div class="flex-wrap">
47+
<!--div class="text-white h4 mt-5 mx-10">
48+
{% trans " File Manager" %}
49+
</div-->
50+
<ul class="nav mr-10">
51+
<li id="editFile" class="nav-item" >
52+
<a onclick="return false;" ng-click="showHTMLEditorModal()" class="nav-link point-events" href="#"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> {{ fileName }}</a>
53+
</li>
54+
</ul>
55+
</div>
56+
</div>
57+
58+
<!--- second bar ends ---->
59+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
60+
<ul class="navbar-nav mr-auto">
61+
62+
</ul>
63+
</div>
64+
</nav>
65+
66+
<!--- navigation bar ends ---->
67+
68+
69+
70+
<!--- File Manager body ---->
71+
72+
<div class="row">
73+
74+
<div class="col-sm-12">
75+
<div class="mb-3 mt-30 mx-10" style="min-height: 30rem;">
76+
<div class="">
77+
{{ content }}
78+
</div>
79+
</div>
80+
</div>
81+
82+
</div>
83+
84+
<!--- File Manager body ends ---->
85+
86+
<!-- Optional JavaScript -->
87+
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
88+
89+
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
90+
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
91+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
92+
93+
94+
<script src="https://cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/alertify.min.js"></script>
95+
96+
<!-- CSS -->
97+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/css/alertify.min.css"/>
98+
<!-- Default theme -->
99+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/css/themes/default.min.css"/>
100+
<!-- Semantic UI theme -->
101+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/css/themes/semantic.min.css"/>
102+
<!-- Bootstrap theme -->
103+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/css/themes/bootstrap.min.css"/>
104+
105+
</body>
106+
</html>

filemanager/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
url(r'^changePermissions$',views.changePermissions, name='changePermissions'),
77
url(r'^controller$',views.controller, name='controller'),
88
url(r'^downloadFile$',views.downloadFile, name='downloadFile'),
9+
url(r'^editFile$', views.editFile, name='editFile'),
910
url(r'^(?P<domain>(.*))$', views.loadFileManagerHome, name='loadFileManagerHome'),
1011

1112
]

filemanager/views.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,41 @@ def upload(request):
165165

166166
except KeyError:
167167
return redirect(loadLoginPage)
168+
169+
def editFile(request):
170+
try:
171+
userID = request.session['userID']
172+
admin = Administrator.objects.get(pk=userID)
173+
from urllib.parse import quote
174+
from django.utils.encoding import iri_to_uri
175+
176+
domainName = request.GET.get('domainName')
177+
fileName = request.GET.get('fileName')
178+
179+
currentACL = ACLManager.loadedACL(userID)
180+
181+
if ACLManager.checkOwnership(domainName, admin, currentACL) == 1:
182+
pass
183+
else:
184+
return ACLManager.loadError()
185+
186+
domainName = domainName
187+
website = Websites.objects.get(domain=domainName)
188+
189+
pathCheck = '/home/%s' % (domainName)
190+
191+
fm = FM(request, {})
192+
193+
if fileName.find(pathCheck) == -1 or fileName.find('..') > -1:
194+
return fm.ajaxPre(0, 'Not allowed.')
195+
196+
command = 'cat ' + fm.returnPathEnclosed(fileName)
197+
content = ProcessUtilities.outputExecutioner(command, website.externalApp)
198+
199+
if ACLManager.checkOwnership(domainName, admin, currentACL) == 1:
200+
return render(request, 'filemanager/editFile.html', {'domainName': domainName, 'fileName': fileName, 'content': content})
201+
else:
202+
return ACLManager.loadError()
203+
204+
except KeyError:
205+
return redirect(loadLoginPage)

0 commit comments

Comments
 (0)