diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js index dc4eea503..9db2d27e9 100755 --- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js +++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js @@ -533,7 +533,7 @@ app.controller('listChildDomainsMain', function ($scope, $http, $timeout) { }; - $scope.initConvert = function(virtualHost){ + $scope.initConvert = function (virtualHost) { $scope.domainName = virtualHost; }; @@ -5784,4 +5784,143 @@ app.controller('installMagentoCTRL', function ($scope, $http, $timeout) { }; -}); \ No newline at end of file +}); + +/* Java script code to git tracking */ +app.controller('manageGIT', function ($scope, $http, $timeout, $window) { + + $scope.cyberpanelLoading = true; + $scope.gitTracking = true; + $scope.gitEnable = true; + + var statusFile; + + $scope.fetchFolderDetails = function () { + + $scope.cyberpanelLoading = false; + + url = "/websites/fetchFolderDetails"; + + + var data = { + domain: $("#domain").text(), + folder: $scope.folder + + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + function ListInitialDatas(response) { + $scope.cyberpanelLoading = true; + + if (response.data.status === 1) { + if (response.data.repo === 1) { + $scope.gitTracking = true; + $scope.gitEnable = false; + } else { + $scope.gitTracking = false; + $scope.gitEnable = true; + } + } else { + new PNotify({ + title: 'Operation Failed!', + text: response.data.error_message, + type: 'error' + }); + } + + + } + + function cantLoadInitialDatas(response) { + $scope.cyberpanelLoading = true; + new PNotify({ + title: 'Operation Failed!', + text: 'Could not connect to server, please refresh this page.', + type: 'error' + }); + + + } + + }; + + function getCreationStatus() { + + url = "/websites/installWordpressStatus"; + + var data = { + statusFile: statusFile + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + + function ListInitialDatas(response) { + + + if (response.data.abort === 1) { + + if (response.data.installStatus === 1) { + + $scope.cyberpanelLoading = true; + $scope.installationDetailsForm = true; + $scope.installationProgress = false; + $scope.goBackDisable = false; + + $("#installProgress").css("width", "100%"); + $scope.installPercentage = "100"; + $scope.currentStatus = response.data.currentStatus; + $timeout.cancel(); + + } else { + + $scope.cyberpanelLoading = true; + $scope.installationDetailsForm = true; + $scope.installationProgress = false; + $scope.goBackDisable = false; + + $scope.currentStatus = response.data.error_message; + + $("#installProgress").css("width", "0%"); + $scope.installPercentage = "0"; + $scope.goBackDisable = false; + + } + + } else { + $("#installProgress").css("width", response.data.installationProgress + "%"); + $scope.installPercentage = response.data.installationProgress; + $scope.currentStatus = response.data.currentStatus; + $timeout(getCreationStatus, 1000); + } + + } + + function cantLoadInitialDatas(response) { + + $scope.cyberpanelLoading = true; + $scope.installationDetailsForm = true; + $scope.installationProgress = false; + $scope.goBackDisable = false; + + } + + + } + +}); +/* Java script code to git tracking ends here */ \ No newline at end of file diff --git a/websiteFunctions/templates/websiteFunctions/manageGIT.html b/websiteFunctions/templates/websiteFunctions/manageGIT.html index c0debbc16..c4220583f 100755 --- a/websiteFunctions/templates/websiteFunctions/manageGIT.html +++ b/websiteFunctions/templates/websiteFunctions/manageGIT.html @@ -14,26 +14,31 @@ -
+

- {% trans "Manage and track folders via Git for " %} {{ domainName }}. + {% trans "Manage and track folders via Git for " %} {{ domainName }}.

-
- -
- -
+
+ +
+
- - + + +

{% trans "This folder does not have Git tracking, click below to initiate a repository and start tracking files." %}

+ +
diff --git a/websiteFunctions/urls.py b/websiteFunctions/urls.py index 4e0b9a62e..2765eaae6 100755 --- a/websiteFunctions/urls.py +++ b/websiteFunctions/urls.py @@ -120,6 +120,7 @@ urlpatterns = [ ### Manage GIT url(r'^(?P(.*))/manageGIT$', views.manageGIT, name='manageGIT'), + url(r'^fetchFolderDetails$', views.fetchFolderDetails, name='fetchFolderDetails'), ## Catch all for domains url(r'^(?P(.*))/(?P(.*))$', views.launchChild, name='launchChild'), diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py index 786cbcce3..dbaa51c35 100755 --- a/websiteFunctions/views.py +++ b/websiteFunctions/views.py @@ -723,5 +723,13 @@ def manageGIT(request, domain): wm = WebsiteManager(domain) return wm.manageGIT(request, userID) + except KeyError: + return redirect(loadLoginPage) + +def fetchFolderDetails(request): + try: + userID = request.session['userID'] + wm = WebsiteManager() + return wm.fetchFolderDetails(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) \ No newline at end of file diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 847fa3337..e7302a339 100755 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -2789,7 +2789,6 @@ StrictHostKeyChecking no except BaseException as msg: return HttpResponse(str(msg)) - def startSync(self, userID=None, data=None): try: @@ -2851,7 +2850,6 @@ StrictHostKeyChecking no json_data = json.dumps(data_ret) return HttpResponse(json_data) - def convertDomainToSite(self, userID=None, request=None): try: @@ -2881,7 +2879,6 @@ StrictHostKeyChecking no return ACLManager.loadError() website = Websites.objects.get(domain=self.domain) - externalApp = website.externalApp folders = ['/home/%s' % (self.domain), '/home/vmail/%s' % (self.domain)] @@ -2895,3 +2892,62 @@ StrictHostKeyChecking no {'domainName': self.domain, 'folders': folders}) except BaseException as msg: return HttpResponse(str(msg)) + + def folderCheck(self): + domainPath = '/home/%s' % (self.domain) + vmailPath = '/home/vmail/%s' % (self.domain) + + if self.folder == domainPath: + return 1 + + if self.folder == vmailPath: + return 1 + + website = Websites.objects.get(domain=self.domain) + + for database in website.databases_set.all(): + basePath = '/var/lib/mysql/' + dbPath = '%s%s' % (basePath, database.dbName) + + if self.folder == dbPath: + return 1 + + return 0 + + def fetchFolderDetails(self, userID=None, data=None): + try: + + currentACL = ACLManager.loadedACL(userID) + admin = Administrator.objects.get(pk=userID) + + self.domain = data['domain'] + self.folder = data['folder'] + + if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1: + pass + else: + return ACLManager.loadErrorJson('status', 0) + + if self.folderCheck(): + pass + else: + return ACLManager.loadErrorJson() + + + gitPath = '%s/.git' % (self.folder) + + command = 'ls -la %s' % (gitPath) + + if ProcessUtilities.outputExecutioner(command).find('No such file or directory') > -1: + data_ret = {'status': 1, 'repo': 0} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + else: + data_ret = {'status': 1, 'repo': 1} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + except BaseException as msg: + data_ret = {'status': 0, 'installStatus': 0, 'error_message': str(msg)} + json_data = json.dumps(data_ret) + return HttpResponse(json_data)
Folder