Halo sobat hosterbyte, berikut ini adalah hook untuk menambahkan login button pada pages Product Service WHMCS. Untuk contoh tampilannya seperti berikut
- Buat file hook dengan nama AutoLoginToAnyPanelFromMyServices.php dengan lokasi
folder-whmcs/include/hooksCopy kode berikut<?php/**
* Auto-Login to cPanel/Plesk from My Services
*
* @package WHMCS
* @copyright Katamaze
* @link https://katamaze.com
* @author Davide Mantenuto <[email protected]>
*/// IMPORTANT! The hook requires changes to two template files. Read the following for instructions
// https://github.com/Katamaze/WHMCS-Free-Action-Hooks/blob/master/README.md#cpanel–plesk-login-button-in-my-servicesuse WHMCS\Database\Capsule;
add_hook(‘ClientAreaPage’, 1, function($vars)
{
if ($vars[‘filename’] == ‘clientarea’ AND $_GET[‘action’] == ‘services’ AND $_SESSION[‘uid’])
{
$productIDs = Capsule::select(Capsule::raw(‘SELECT t1.id, t2.type FROM tblhosting AS t1 LEFT JOIN tblservers AS t2 ON t1.server = t2.id WHERE t1.userid = ‘ . $_SESSION[‘uid’] . ‘ AND t1.server != “0” AND t1.domainstatus IN (“Active”, “Suspended”) AND t1.username != “” AND t1.password != “” AND t2.type != “”‘));foreach ($productIDs as $v)
{
$output[‘kt_autologin’][$v->id] = $v;
}return $output;
}
elseif ($vars[‘filename’] == ‘clientarea’ AND $_GET[‘action’] == ‘productdetails’ AND $_GET[‘id’] AND $_GET[‘autologin’])
{
$product = Capsule::select(Capsule::raw(‘SELECT t2.type FROM tblhosting AS t1 LEFT JOIN tblservers AS t2 ON t1.server = t2.id WHERE t1.id = ‘ . $_GET[‘id’] . ‘ AND t1.server != “0” AND t1.domainstatus IN (“Active”, “Suspended”) AND t1.username IS NOT NULL AND t1.password IS NOT NULL AND t2.type IS NOT NULL LIMIT 1’))[0];switch ($product->type)
{
case ‘cpanel’: header(‘Location: clientarea.php?action=productdetails&id=’ . $_GET[‘id’] . ‘&dosinglesignon=1’); die(); break;
}
}
});add_hook(‘ClientAreaHeadOutput’, 1, function($vars)
{
if ($vars[‘filename’] == ‘clientarea’ AND $_GET[‘action’] == ‘productdetails’ AND $_GET[‘id’] AND $_GET[‘autologin’])
{
return <<<HTML
<style>
body {
visibility:hidden;
}
</style>
<script type=”text/javascript”>
$(document).ready(function() {
$(“#domain form”).removeAttr(‘target’);
$(“#domain form”).submit();
});
</script>
HTML;
}
}); - Cari file clientareaproducts.tpl pada folderwhmcs/templetes/{namafolder-template}/
Note : jangan lupa backup file asli sebelum dilakukan editing - ganti isinya dengan kode berikut{include file=”$template/includes/tablelist.tpl” tableName=”ServicesList” filterColumn=”4″ noSortColumns=”0″}<script>
jQuery(document).ready(function() {
var table = jQuery(‘#tableServicesList’).show().DataTable();{if $orderby == ‘product’}
table.order([1, ‘{$sort}’], [4, ‘asc’]);
{elseif $orderby == ‘amount’ || $orderby == ‘billingcycle’}
table.order(2, ‘{$sort}’);
{elseif $orderby == ‘nextduedate’}
table.order(3, ‘{$sort}’);
{elseif $orderby == ‘domainstatus’}
table.order(4, ‘{$sort}’);
{/if}
table.draw();
jQuery(‘#tableLoading’).hide();
});
</script><div class=”table-container clearfix”>
<table id=”tableServicesList” class=”table table-list w-hidden”>
<thead>
<tr>
<th></th>
<th>{lang key=’orderproduct’}</th>
<th>{lang key=’clientareaaddonpricing’}</th>
<th>{lang key=’clientareahostingnextduedate’}</th>
<th>{lang key=’clientareastatus’}</th>
<th> Login Panel </th>
</tr>
</thead>
<tbody>
{foreach $services as $service}
<tr onclick=”clickableSafeRedirect(event, ‘clientarea.php?action=productdetails&id={$service.id}’, false)”>
<td class=”py-0 text-center{if $service.sslStatus} ssl-info{/if}” data-element-id=”{$service.id}” data-type=”service”{if $service.domain} data-domain=”{$service.domain}”{/if}>
{if $service.sslStatus}
<img src=”{$service.sslStatus->getImagePath()}” data-toggle=”tooltip” title=”{$service.sslStatus->getTooltipContent()}” class=”{$service.sslStatus->getClass()}” width=”25″>
{elseif !$service.isActive}
<img src=”{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png” data-toggle=”tooltip” title=”{lang key=’sslState.sslInactiveService’}” width=”25″>
{/if}
</td>
<td><strong>{$service.product}</strong>{if $service.domain}<br /><a href=”http://{$service.domain}” target=”_blank”>{$service.domain}</a>{else}<br />-{/if}</td>
<td class=”text-center” data-order=”{$service.amountnum}”>{$service.amount} <small class=”text-muted”>{$service.billingcycle}</small></td>
<td class=”text-center”><span class=”w-hidden”>{$service.normalisedNextDueDate}</span>{$service.nextduedate}</td>
<td class=”text-center”><span class=”label status status-{$service.status|strtolower}”>{$service.statustext}</span></td>
<td class=”text-center”>
{if $kt_autologin[$service.id]}
<div class=”btn-group btn-group-sm plesk-login” style=”width:60px;”>
<a href=”clientarea.php?action=productdetails&id={$service.id}&autologin=1″ target=”_blank” class=”btn btn-primary btn-xs” alt=”Click to Login Panel” title=”Click to Login Panel” style=”padding: 2px 5px;”><i class=”fa fa-sign-in fa-fw” aria-hidden=”true”></i></a>
</div>
{/if}
</td>
</tr>{/foreach}
</tbody>
</table>
<div class=”text-center” id=”tableLoading”>
<p><i class=”fas fa-spinner fa-spin”></i> {lang key=’loading’}</p>
</div>
</div> - Kemudian Save
- Dan lihat hasilnya
Selamat mencoba
- Referensi :
https://github.com/Katamaze/WHMCS-Action-Hook-Factory#cpanel–plesk-login-button-in-my-services