Charles Bradbeer Posted April 9, 2020 Share Posted April 9, 2020 Hi, I am having some issues with making a clone of the "My Products & Services" (clientarea.php?action=services) page. I have created a orderstatus.php & orderstatus.tpl page with what seems like the working/correct details but the table shows as blank? Im sure it is an easy to fix thing but I cannot get my head around it! Here is the two files I am using: orderstatus.php: <?php define("CLIENTAREA",true); //define("FORCESSL",true); // Uncomment to force the page to use https:// require("init.php"); $ca = new WHMCS_ClientArea(); $ca->setPageTitle("Your Order Status"); $ca->requireLogin(); // Uncomment this line to require a login to access this page $ca->initPage(); //$ca->requireLogin(); // Uncomment this line to require a login to access this page # To assign variables to the template system use the following syntax. # These can then be referenced using {$variablename} in the template. $ca->assign('variablename', $value); # Define the template filename to be used without the .tpl extension $ca->setTemplate('orderstatus'); $ca->output(); ?> orderstatus.tpl page: {include file="$template/includes/tablelist.tpl" tableName="ServicesList" filterColumn="4" noSortColumns="0"} <script type="text/javascript"> jQuery(document).ready( function () { var table = jQuery('#tableServicesList').removeClass('hidden').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').addClass('hidden'); }); </script> <div class="table-container clearfix"> <table id="tableServicesList" class="table table-list hidden"> <thead> <tr> <th></th> <th class="text-left">{$LANG.orderproduct}</th> <th>{$LANG.clientareaaddonpricing}</th> <th>{$LANG.clientareahostingnextduedate}</th> <th>{$LANG.clientareastatus}</th> <th class="responsive-edit-button" style="display: none;"></th> </tr> </thead> <tbody> {foreach key=num item=service from=$services} <tr onclick="clickableSafeRedirect(event, 'clientarea.php?action=productdetails&id={$service.id}', false)"> <td class="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()}"/> {elseif !$service.isActive} <img src="{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png" data-toggle="tooltip" title="{lang key='sslState.sslInactiveService'}"> {/if} </td> <td><strong>{$service.product}</strong>{if $service.domain}<br /><a href="http://{$service.domain}" target="_blank">{$service.domain}</a>{/if}</td> <td class="text-center" data-order="{$service.amountnum}">{$service.amount}<br />{$service.billingcycle}</td> <td class="text-center"><span class="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="responsive-edit-button" style="display: none;"> <a href="clientarea.php?action=productdetails&id={$service.id}" class="btn btn-block btn-info"> {$LANG.manageproduct} </a> </td> </tr> {/foreach} </tbody> </table> <div class="text-center" id="tableLoading"> <p><i class="fas fa-spinner fa-spin"></i> {$LANG.loading}</p> </div> </div> All I need the orderstatus.php page to show is the details as the default page, then I can work with changing it from there. Hopefully, someone can help me! Thank you :) 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted April 9, 2020 Share Posted April 9, 2020 20 minutes ago, Charles Bradbeer said: I have created a orderstatus.php & orderstatus.tpl page with what seems like the working/correct details but the table shows as blank? Im sure it is an easy to fix thing but I cannot get my head around it! you will need to query the database to get this client's services... normally, you would do that in a hook, but as it's a custom.php file, you can do it in there instead. https://developers.whmcs.com/advanced/db-interaction/ 19 minutes ago, Charles Bradbeer said: All I need the orderstatus.php page to show is the details as the default page, then I can work with changing it from there. oh that's all? 🙂 0 Quote Link to comment Share on other sites More sharing options...
Charles Bradbeer Posted April 12, 2020 Author Share Posted April 12, 2020 On 9/04/2020 at 4:00 PM, brian! said: you will need to query the database to get this client's services... normally, you would do that in a hook, but as it's a custom.php file, you can do it in there instead. https://developers.whmcs.com/advanced/db-interaction/ oh that's all? 🙂 Hi, I have added it in: <?php use WHMCS\Database\Capsule; define("CLIENTAREA",true); //define("FORCESSL",true); // Uncomment to force the page to use https:// require("init.php"); $ca = new WHMCS_ClientArea(); $ca->setPageTitle("Your Order Status"); $ca->requireLogin(); // Uncomment this line to require a login to access this page $ca->initPage(); //$ca->requireLogin(); // Uncomment this line to require a login to access this page # To assign variables to the template system use the following syntax. # These can then be referenced using {$variablename} in the template. $ca->assign('variablename', $value); # Define the template filename to be used without the .tpl extension $ca->setTemplate('orderstatus'); $ca->output(); ?> But it still doesn't work? I'm definitely doing something wrong ;/ 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted April 14, 2020 Share Posted April 14, 2020 I can see that you've added... On 12/04/2020 at 15:59, Charles Bradbeer said: use WHMCS\Database\Capsule; to the code, which is a good start - but it isn't enough, you will still need to query the database - that could be by using various methods including capsule, class model or GetClientsProducts API. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.