296 lines
13 KiB
PHTML
296 lines
13 KiB
PHTML
<?php
|
|
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
?>
|
|
<form id="serviceRemovalForm" action="<?php echo $this->baseUrl('/service/delete' . $this->domainIdParam);?>" method="POST">
|
|
<input type="hidden" id="ids" name="ids[]" value="" />
|
|
<input type="hidden" id="service_removal_forgery_protection_token" name="forgery_protection_token" value="" />
|
|
</form>
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
Jsw.namespace('Smb.Views.Apps');
|
|
Smb.Views.Apps.startUpdate = function(packageId) {
|
|
Jsw.redirectPost(
|
|
'/app-update/update' +
|
|
'/resourceId/' + '<?php echo $this->service['resourceId'] . $this->domainIdParam ?>' +
|
|
(packageId ? '/packageId/' + packageId : '')
|
|
);
|
|
};
|
|
|
|
Smb.Views.Apps.removeService = function (resourceId, rootService) {
|
|
Jsw.messageBox.show({
|
|
type: Jsw.messageBox.TYPE_YESNO,
|
|
subtype: Jsw.messageBox.SUBTYPE_DELETE,
|
|
text: rootService
|
|
? <?php echo $this->jsLmsg('buttonUninstallApplicationConfirmationTitle')?>
|
|
: <?php echo $this->jsLmsg('buttonUninstallServiceConfirmationTitle')?>,
|
|
onYesClick: function () {
|
|
var form = document.getElementById('serviceRemovalForm');
|
|
form.querySelector('#service_removal_forgery_protection_token').value = document.getElementById('forgery_protection_token').content;
|
|
form.querySelector('#ids').value = resourceId;
|
|
form.submit();
|
|
},
|
|
});
|
|
};
|
|
|
|
Jsw.onReady(function() {
|
|
var getToolsPanel = function() {
|
|
var tools = [
|
|
<?php if ($this->service['rootService']): ?>
|
|
{
|
|
componentType: 'Jsw.SmallButton',
|
|
title: <?php echo $this->jsLmsg('buttonDetailedApplicationInfo') ?>,
|
|
addCls: 'sb-app-info',
|
|
href: '/service/info/resourceId/' + '<?php echo $this->service['resourceId']; ?>' + '<?php echo $this->domainIdParam?>'
|
|
},
|
|
<?php endif; ?>
|
|
{
|
|
componentType: 'Jsw.SmallButton',
|
|
title: <?php echo $this->jsLmsg('buttonChangeSettings') ?>,
|
|
addCls: 'sb-app-configure',
|
|
href: '/service/configure/resourceId/' + '<?php echo $this->service['resourceId']; ?>' + '<?php echo $this->domainIdParam?>'
|
|
},
|
|
{
|
|
componentType: 'Jsw.SmallButton',
|
|
title: <?php echo $this->jsLmsg('buttonUninstallApplication') ?>,
|
|
addCls: 'sb-app-delete',
|
|
handler: function(event) {
|
|
Smb.Views.Apps.removeService(
|
|
<?php echo $this->jsEscape($this->service['resourceId']); ?>,
|
|
<?php echo ($this->service['rootService'] ? 'true' : 'false') ?>
|
|
);
|
|
}
|
|
}
|
|
];
|
|
|
|
return tools;
|
|
};
|
|
|
|
var firstColumnItems = (function() {
|
|
var firstColumnItems = [];
|
|
<?php if ($this->generalInfo): ?>
|
|
var sectionGeneralFields = [];
|
|
<?php if (array_key_exists('installationUrl', $this->generalInfo)): ?>
|
|
sectionGeneralFields.push({
|
|
componentType: 'Jsw.form.DisplayField',
|
|
fieldLabel: <?php echo $this->jsLmsg('installedAt'); ?>,
|
|
value: <?php echo $this->jsEscape($this->generalInfo['installationUrl']); ?>
|
|
});
|
|
<?php endif; ?>
|
|
|
|
<?php if (array_key_exists('users', $this->generalInfo) && 0 < count($this->generalInfo['users'])): ?>
|
|
<?php if (1 === count($this->generalInfo['users'])): ?>
|
|
<?php $currentUser = current($this->generalInfo['users']); ?>
|
|
sectionGeneralFields.push({
|
|
componentType: 'Jsw.form.DisplayField',
|
|
fieldLabel: <?php echo $this->jsLmsg('userName'); ?>,
|
|
value: '<a href="' + Jsw.prepareUrl('/user/edit/id/' + <?php echo $this->jsEscape($currentUser->id); ?>)
|
|
+ '">'
|
|
+ <?php echo $this->jsEscape($currentUser->contactName); ?>
|
|
+ '</a>'
|
|
});
|
|
<?php else: ?>
|
|
sectionGeneralFields.push({
|
|
componentType: 'Jsw.form.DisplayField',
|
|
fieldLabel: <?php echo $this->jsLmsg('users'); ?>,
|
|
value: <?php echo $this->jsEscape(count($this->generalInfo['users'])); ?>
|
|
});
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
|
|
<?php if (array_key_exists('forceUpdates', $this->generalInfo)): ?>
|
|
sectionGeneralFields.push({
|
|
componentType: 'Jsw.form.DisplayField',
|
|
fieldLabel: <?php echo $this->jsLmsg('forceUpdates'); ?>,
|
|
value: '<img src="<?php echo $this->skinUrl('/icons/16/plesk/' . ($this->generalInfo['forceUpdates'] ? 'on.png' : 'subscription-status-suspended.png')) ?>"> '
|
|
+ <?php echo ($this->generalInfo['forceUpdates']) ? $this->jsLmsg('forceUpdatesOn') : $this->jsLmsg('forceUpdatesOff'); ?>
|
|
<?php if ($this->automaticUpdatesSettingChangeable): ?>
|
|
+ ' <a data-method="post" href="' + Jsw.prepareUrl('/service/updates'
|
|
+ <?php if ($this->generalInfo['forceUpdates']): ?> '/enable/0' <?php else: ?> '/enable/1' <?php endif; ?>
|
|
+ '/resourceId/' + <?php echo $this->jsEscape($this->service['resourceId']); ?>
|
|
+ <?php echo $this->jsEscape($this->domainIdParam); ?>)
|
|
+ '">' + <?php echo ($this->generalInfo['forceUpdates'])
|
|
? $this->jsLmsg('stopAutomaticUpdates') : $this->jsLmsg('allowAutomaticUpdates') ?>
|
|
+ '</a>'
|
|
<?php endif; ?>
|
|
});
|
|
<?php endif; ?>
|
|
|
|
firstColumnItems.push({
|
|
componentType: 'Jsw.Panel',
|
|
'title': <?php echo $this->jsLmsg('generalSectionTitle') ?>,
|
|
cls: 'form-box',
|
|
items: sectionGeneralFields
|
|
});
|
|
<?php endif; ?>
|
|
|
|
<?php if ($this->settingsInfo): ?>
|
|
var sectionSettingsFields = [];
|
|
<?php foreach ($this->settingsInfo as $setting): ?>
|
|
sectionSettingsFields.push({
|
|
componentType: 'Jsw.form.DisplayField',
|
|
fieldLabel: <?php echo $this->jsEscape($setting['label']); ?>,
|
|
value:
|
|
<?php if (is_array($setting['value'])): ?>
|
|
<?php
|
|
$value = '';
|
|
foreach ($setting['value'] as $val) {
|
|
if ('' !== $value) {
|
|
$value .= '<br>';
|
|
}
|
|
$value .= Plesk_Base_Utils_String::safeForJs($this->escape($val));
|
|
}
|
|
?>
|
|
'<?php echo $value; ?>'
|
|
<?php elseif ($setting['bool']): ?>
|
|
<?php echo $this->jsHtml($this->switchState('true' == $setting['value'])); ?>
|
|
<?php elseif (isset($setting['password']) && $setting['password']): ?>
|
|
'<span id="applicationAdminPasswordText__<?php echo $setting['id'] ?>" style="display:none;">' + <?php echo $this->jsEscape($setting['value']); ?> + '</span>'
|
|
+ ' <a href="#" id="applicationAdminPasswordToggle__<?php echo $setting['id'] ?>" class="toggler application-password-toggle">'
|
|
+ <?php echo $this->jsLmsg('showPassword') ?>
|
|
+ '</a>'
|
|
<?php else: ?>
|
|
<?php echo $this->jsEscape($setting['value']); ?>
|
|
<?php endif; ?>
|
|
});
|
|
|
|
<?php endforeach; ?>
|
|
|
|
firstColumnItems.push({
|
|
componentType: 'Jsw.Panel',
|
|
'title': <?php echo $this->jsLmsg('settingsSectionTitle') ?>,
|
|
cls: 'form-box',
|
|
items: sectionSettingsFields
|
|
});
|
|
<?php endif; ?>
|
|
|
|
return firstColumnItems;
|
|
}());
|
|
|
|
var secondColumnItems = (function() {
|
|
var secondColumnItems = [];
|
|
<?php if ($this->servicesInfo): ?>
|
|
var sectionServices = [];
|
|
<?php foreach ($this->servicesInfo as $service): ?>
|
|
<?php if ($service['singular']): ?>
|
|
sectionServices.push({
|
|
componentType: 'Jsw.Hint',
|
|
hint:
|
|
'<div class="form-row"><div class="field-name">' +
|
|
<?php echo $this->jsEscape($service['name']); ?> +
|
|
'</div><div class="field-value">' +
|
|
<?php echo $this->jsHtml($this->accessState(0 < $service['count'])); ?>
|
|
<?php if (0 < $service['count']): ?>
|
|
<?php if ($service['configurable']): ?>
|
|
+ ' <a href="' + Jsw.prepareUrl('/service/configure/resourceId/'
|
|
+ <?php echo $this->jsEscape($service['resourceId']); ?>)
|
|
+ '">[' + <?php echo $this->jsLmsg('serviceConfigure') ?> + ']</a>'
|
|
<?php endif; ?>
|
|
+ ' <a href="#" onClick="Smb.Views.Apps.removeService(\''
|
|
+ <?php echo $this->jsEscape($service['resourceId']); ?> + '\', false)">'
|
|
+ '[' + <?php echo $this->jsLmsg('serviceUninstall') ?> + ']</a>'
|
|
<?php else: ?>
|
|
+ ' <a href="' + Jsw.prepareUrl('/service/install/resourceId/'
|
|
+ <?php echo $this->jsEscape($this->service['resourceId']); ?> + '/metaId/'
|
|
+ <?php echo $this->jsEscape($service['metaId']); ?>)
|
|
+ '">[' + <?php echo $this->jsLmsg('serviceInstall') ?> + ']</a>'
|
|
<?php endif; ?>
|
|
+ '</div></div>'
|
|
});
|
|
<?php endif; ?>
|
|
<?php endforeach; ?>
|
|
|
|
if (sectionServices.length) {
|
|
secondColumnItems.push({
|
|
componentType: 'Jsw.Panel',
|
|
'title': <?php echo $this->jsLmsg('servicesSectionTitle') ?>,
|
|
cls: 'form-box',
|
|
items: sectionServices
|
|
});
|
|
}
|
|
<?php endif; ?>
|
|
|
|
<?php foreach ($this->entryPoints as $entryPoint): ?>
|
|
var sectionEntryPointUrls = [];
|
|
<?php foreach ($entryPoint['urls'] as $url): ?>
|
|
sectionEntryPointUrls.push({
|
|
componentType: 'Jsw.Hint',
|
|
hint: '<a href="' + Jsw.prepareUrl(<?php echo $this->jsEscape($url['href']); ?>) + '" target="_blank">'
|
|
+ <?php echo $this->jsEscape($url['description']); ?>
|
|
+ '</a>'
|
|
});
|
|
<?php endforeach; ?>
|
|
<?php if (0 == count($entryPoint['urls'])): ?>
|
|
sectionEntryPointUrls.push({
|
|
componentType: 'Jsw.Hint',
|
|
hint: <?php echo $this->jsLmsg('noEntryPointsHint'); ?>
|
|
});
|
|
<?php endif; ?>
|
|
|
|
secondColumnItems.push({
|
|
componentType: 'Jsw.Panel',
|
|
'title': <?php echo $this->jsEscape($entryPoint['label']) ?>,
|
|
cls: 'form-box',
|
|
items: sectionEntryPointUrls
|
|
});
|
|
<?php endforeach; ?>
|
|
|
|
return secondColumnItems;
|
|
}());
|
|
|
|
new Jsw.Container({
|
|
renderTo: 'main',
|
|
items: [
|
|
new Jsw.Hint({
|
|
hint: <?php echo $this->jsEscape($this->pageHint); ?>
|
|
}),
|
|
|
|
new Jsw.SmallTools({
|
|
operations: getToolsPanel()
|
|
}),
|
|
|
|
new Jsw.layout.TwoColumns({
|
|
items: [
|
|
new Jsw.Container({
|
|
items: firstColumnItems
|
|
}),
|
|
new Jsw.Container({
|
|
items: secondColumnItems
|
|
})
|
|
]
|
|
})
|
|
|
|
<?php foreach ($this->servicesInfo as $service):
|
|
if ($service['singular']) {
|
|
continue;
|
|
}
|
|
$getSubserviceInstancesList = $this->getSubserviceInstancesList;
|
|
echo ', ' . $this->partial('service/index/subservice.phtml', array(
|
|
'subserviceInstancesList' => $getSubserviceInstancesList($this->service['resourceId'], $service['metaId']),
|
|
'registryResourceId' => $this->service['resourceId'],
|
|
'apsMetaId' => $service['metaId'],
|
|
'serviceName' => $service['name'],
|
|
));
|
|
endforeach; ?>
|
|
]
|
|
});
|
|
|
|
document.querySelectorAll('.application-password-toggle').forEach(function (element) {
|
|
// use POST method for links with data-method="post"
|
|
element.addEventListener('click', function (event) {
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
var elementId = event.target.id.split("__");
|
|
var txtElement = document.getElementById('applicationAdminPasswordText__' + elementId[1]);
|
|
if (txtElement.style.display !== 'none') {
|
|
txtElement.style.display = 'none';
|
|
event.target.innerHTML = <?php echo $this->jsLmsg('showPassword') ?>;
|
|
} else {
|
|
txtElement.style.display = ''
|
|
event.target.innerHTML = <?php echo $this->jsLmsg('hidePassword') ?>;
|
|
}
|
|
});
|
|
});
|
|
});
|
|
//]]>
|
|
</script>
|