Cara Menambah Login Button di Product Service WHMCS

Admin

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-services

    use 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&amp;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

Related Post

Leave a Comment