add missing function

This commit is contained in:
usmannasir
2025-04-04 15:13:57 +05:00
parent 867d5abea9
commit 2ad810d628
5 changed files with 10417 additions and 1587 deletions

View File

@@ -2674,111 +2674,25 @@ app.controller('listWebsites', function ($scope, $http, $window) {
// Call it immediately // Call it immediately
$scope.getFurtherWebsitesFromDB(); $scope.getFurtherWebsitesFromDB();
$scope.showWPSites = function(index) { $scope.showWPSites = function(domain) {
$scope.selectedWebsite = $scope.WebSitesList[index]; var url = '/websites/fetchWPDetails';
var data = {
domain: domain
};
if (!$scope.selectedWebsite.wp_sites) { $http({
var url = '/websites/fetchWPDetails'; method: 'POST',
var data = { url: url,
domain: $scope.selectedWebsite.domain, data: $.param(data),
websiteName: $scope.selectedWebsite.domain headers: {
}; 'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRFToken': getCookie('csrftoken')
$http({ }
method: 'POST', }).then(function(response) {
url: url, alert(JSON.stringify(response.data, null, 2));
data: $.param(data), }).catch(function(error) {
headers: { alert('Error fetching WordPress sites: ' + JSON.stringify(error));
'Content-Type': 'application/x-www-form-urlencoded', });
'X-CSRFToken': getCookie('csrftoken')
}
}).then(function(response) {
console.log('WP Details Response:', response);
// Check if response is HTML (login page)
if (typeof response.data === 'string' && response.data.includes('<!DOCTYPE html>')) {
console.log('Received HTML response, redirecting to login');
window.location.href = '/login';
return;
}
if (response.data && response.data.status === 1) {
try {
// If single site, wrap in array
var sites = Array.isArray(response.data.data) ? response.data.data : [response.data.data];
$scope.selectedWebsite.wp_sites = sites.map(function(site) {
return {
id: site.id || $scope.selectedWebsite.domain,
title: site.title || site.domain || $scope.selectedWebsite.domain,
url: site.url || 'http://' + $scope.selectedWebsite.domain,
version: site.version || 'Unknown',
phpVersion: site.php_version || 'Unknown',
theme: site.theme || 'Unknown',
activePlugins: site.active_plugins || 0,
searchIndex: site.search_index === 'enabled',
debugging: site.debugging === 'enabled',
passwordProtection: site.password_protection === 'enabled',
maintenanceMode: site.maintenance_mode === 'enabled'
};
});
$scope.selectedWebsite.showWPSites = true;
} catch (e) {
console.error('Error processing WordPress data:', e);
// Create default site on error
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
}
} else {
// Create default site if no data
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
}
}).catch(function(error) {
console.error('WP Details Error:', error);
// Create default site on error
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
});
} else {
$scope.selectedWebsite.showWPSites = !$scope.selectedWebsite.showWPSites;
}
}; };
$scope.visitSite = function(url) { $scope.visitSite = function(url) {
@@ -6648,111 +6562,25 @@ app.controller('manageAliasController', function ($scope, $http, $timeout, $wind
} }
$scope.showWPSites = function(index) { $scope.showWPSites = function(domain) {
$scope.selectedWebsite = $scope.WebSitesList[index]; var url = '/websites/fetchWPDetails';
if (!$scope.selectedWebsite.wp_sites) {
var url = '/websites/fetchWPDetails';
var data = { var data = {
domain: $scope.selectedWebsite.domain, domain: domain
websiteName: $scope.selectedWebsite.domain
}; };
$http({ $http({
method: 'POST', method: 'POST',
url: url, url: url,
data: $.param(data), data: $.param(data),
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRFToken': getCookie('csrftoken') 'X-CSRFToken': getCookie('csrftoken')
} }
}).then(function(response) { }).then(function(response) {
console.log('WP Details Response:', response); alert(JSON.stringify(response.data, null, 2));
}).catch(function(error) {
// Check if response is HTML (login page) alert('Error fetching WordPress sites: ' + JSON.stringify(error));
if (typeof response.data === 'string' && response.data.includes('<!DOCTYPE html>')) { });
console.log('Received HTML response, redirecting to login');
window.location.href = '/login';
return;
}
if (response.data && response.data.status === 1) {
try {
// If single site, wrap in array
var sites = Array.isArray(response.data.data) ? response.data.data : [response.data.data];
$scope.selectedWebsite.wp_sites = sites.map(function(site) {
return {
id: site.id || $scope.selectedWebsite.domain,
title: site.title || site.domain || $scope.selectedWebsite.domain,
url: site.url || 'http://' + $scope.selectedWebsite.domain,
version: site.version || 'Unknown',
phpVersion: site.php_version || 'Unknown',
theme: site.theme || 'Unknown',
activePlugins: site.active_plugins || 0,
searchIndex: site.search_index === 'enabled',
debugging: site.debugging === 'enabled',
passwordProtection: site.password_protection === 'enabled',
maintenanceMode: site.maintenance_mode === 'enabled'
};
});
$scope.selectedWebsite.showWPSites = true;
} catch(e) {
console.error('Error processing WordPress data:', e);
// Create default site on error
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
}
} else {
// Create default site if no data
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
}
}).catch(function(error) {
console.error('WP Details Error:', error);
// Create default site on error
$scope.selectedWebsite.wp_sites = [{
id: $scope.selectedWebsite.domain,
title: $scope.selectedWebsite.domain,
url: 'http://' + $scope.selectedWebsite.domain,
version: 'Unknown',
phpVersion: 'Unknown',
theme: 'Unknown',
activePlugins: 0,
searchIndex: false,
debugging: false,
passwordProtection: false,
maintenanceMode: false
}];
$scope.selectedWebsite.showWPSites = true;
});
} else {
$scope.selectedWebsite.showWPSites = !$scope.selectedWebsite.showWPSites;
}
}; };
$scope.updateSetting = function(wp, setting) { $scope.updateSetting = function(wp, setting) {

View File

@@ -101,7 +101,7 @@
<span ng-bind="web.admin" style="text-transform: none"></span> <span ng-bind="web.admin" style="text-transform: none"></span>
</div> </div>
<div class="col-md-3 content-box-header"> <div class="col-md-3 content-box-header">
<i class="p fa fa-wordpress btn-icon text-muted" ng-click="showWPSites($index)" <i class="p fa fa-wordpress btn-icon text-muted" ng-click="showWPSites(web.domain)"
data-toggle="tooltip" data-placement="right" title="Show WordPress Sites">&emsp;</i> data-toggle="tooltip" data-placement="right" title="Show WordPress Sites">&emsp;</i>
<span ng-if="web.wp_sites && web.wp_sites.length > 0" style="text-transform: none"> <span ng-if="web.wp_sites && web.wp_sites.length > 0" style="text-transform: none">
{$ web.wp_sites.length $} WordPress Sites {$ web.wp_sites.length $} WordPress Sites

View File

@@ -51,6 +51,7 @@ urlpatterns = [
path('AddWPsiteforRemoteBackup', views.AddWPsiteforRemoteBackup, name='AddWPsiteforRemoteBackup'), path('AddWPsiteforRemoteBackup', views.AddWPsiteforRemoteBackup, name='AddWPsiteforRemoteBackup'),
path('UpdateRemoteschedules', views.UpdateRemoteschedules, name='UpdateRemoteschedules'), path('UpdateRemoteschedules', views.UpdateRemoteschedules, name='UpdateRemoteschedules'),
path('ScanWordpressSite', views.ScanWordpressSite, name='ScanWordpressSite'), path('ScanWordpressSite', views.ScanWordpressSite, name='ScanWordpressSite'),
path('fetchWPDetails', views.fetchWPDetails, name='fetchWPDetails'),
# AddPlugin # AddPlugin
path('ConfigurePlugins', views.ConfigurePlugins, name='ConfigurePlugins'), path('ConfigurePlugins', views.ConfigurePlugins, name='ConfigurePlugins'),

View File

@@ -1840,5 +1840,14 @@ def Dockersitehome(request, dockerapp):
userID = request.session['userID'] userID = request.session['userID']
wm = WebsiteManager(dockerapp) wm = WebsiteManager(dockerapp)
return wm.Dockersitehome(request, userID, None) return wm.Dockersitehome(request, userID, None)
except KeyError:
return redirect(loadLoginPage)
def fetchWPDetails(request):
try:
userID = request.session['userID']
data = json.loads(request.body)
wm = WebsiteManager()
return wm.fetchWPSitesForDomain(userID, data)
except KeyError: except KeyError:
return redirect(loadLoginPage) return redirect(loadLoginPage)

File diff suppressed because it is too large Load Diff