Jump to content


Popular Content

Showing content with the highest reputation since 10/20/19 in all areas

  1. 9 points
    in v8, the summary stats were removed from the admin display - e.g Pending Orders, Overdue Invoices and Tickets Awaiting Reply - the simple hook below adds them back to the output in a similar location (top of the page)... <?php # Stats Info Bar for v8 Blend # Written by brian! use WHMCS\Database\Capsule; use WHMCS\Billing\Invoice; function admin_v8_infobar_hook($vars) { $pendingstatuslist = Capsule::table('tblorderstatuses')->where('showpending','1')->pluck('title'); $pendingorders = Capsule::table('tblorders')->whereIn('status',$pendingstatuslist)->count(); $overdueinvoices = Invoice::overdue()->count(); $awaitingreplylist = Capsule::table('tblticketstatuses')->where('showawaiting','1')->pluck('title'); $ticketsawaiting = Capsule::table('tbltickets')->whereIn('status',$awaitingreplylist)->count(); $headerreturn = '<div style="margin: 0; padding: 5px; background-color: #1a4d80; display: block; width: 100%; max-height: 20px;"> <div style="text-align: center; color: #fff; font-size: .8em; margin: 0;"> <a href="orders.php?status=Pending" style="color: #fff;"><span style="font-weight: 700; color: #fc0;">'.$pendingorders.'</span> '.AdminLang::trans('stats.pendingorders').'</a> | <a href="invoices.php?status=Overdue" style="color: #fff;"><span style="font-weight: 700; color: #fc0;">'.$overdueinvoices.'</span> '.AdminLang::trans('stats.overdueinvoices').'</a> | <a href="supporttickets.php" style="color: #fff;"><span style="font-weight: 700; color: #fc0;">'.$ticketsawaiting.'</span> '.AdminLang::trans('stats.ticketsawaitingreply').'</a> </div> </div>'; return $headerreturn; } add_hook("AdminAreaHeaderOutput",1,"admin_v8_infobar_hook"); this was originally written for v8.0.0 betas, but the code has now been updated for v8.0.1 (where the $sidebarstats array no longer exists and the values now have to be calculated from database queries).
  2. 6 points
    i've posted the hook for the admin info bar in the thread below - should work on both v8.0.0 and v8.0.1 ๐Ÿ™‚
  3. 5 points
    I've seen there's a feature request submitted 7 years ago about bulk auto recalculate. I know you can do that from phpMyAdmin or with a script but enough is enough. <? /** * Bulk Auto Recalculate Client Domain & Products/Services * * @writtenby Kian * */ use WHMCS\Database\Capsule; add_hook('AdminAreaHeaderOutput', 1, function($vars) { if ($vars['filename'] == 'clientssummary' AND $_GET['userid'] AND in_array($_GET['kata'], array('bulkAutoRecalculateP', 'bulkAutoRecalculateD'))) { $adminUsername = ''; // Optional for WHMCS 7.2 and later if ($_GET['kata'] == 'bulkAutoRecalculateP') { foreach(Capsule::table('tblhosting')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientProduct', array('serviceid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } elseif ($_GET['kata'] == 'bulkAutoRecalculateD') { foreach (Capsule::table('tbldomains')->where('userid', '=', $_GET['userid'])->pluck('id') as $v) { localAPI('UpdateClientDomain', array('domainid' => $v, 'autorecalc' => true), $adminUsername); } header('Location: clientssummary.php?userid=' . $_GET['userid']); die(); } } return <<<HTML <script> $(document).ready(function(){ $('[href*="affiliates.php?action=edit&id="], [href*="clientssummary.php?userid="][href*="&activateaffiliate=true&token="]').closest('li').after(('<li><a href="#" id="kata_BulkAutoRecalculate"><i class="fas fa-fw fa-sliders-h" style="width:16px;text-align:center;"></i> Bulk Auto Recalculate</a></li>')); $('#kata_BulkAutoRecalculate').on('click', function(e){ e.preventDefault(); $('#modalAjaxTitle').html('Bulk Auto Recalculate'); $('#modalAjaxBody').html('<div class="container col-md-12"><div class="row"><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-box fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Products/Services</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateP" class="btn btn-info btn-block">Recalculate Now ยป</a></p></div></div></div><div class="col-md-6 text-center"><div class="panel panel-default"><div class="panel-body"><p><i class="fas fa-globe fa-5x"></i></p><p><small>Auto Recalculate Customer\'s <strong>Domains</strong></small></p><p><a href="clientssummary.php?userid={$_GET['userid']}&kata=bulkAutoRecalculateD" class="btn btn-info btn-block">Recalculate Now ยป</a></p></div></div></div></div></div>'); $('#modalAjax .modal-submit').addClass('hidden'); $('#modalAjaxLoader').hide(); $('#modalAjax .modal-dialog').addClass('modal-lg'); $('#modalAjax').modal('show'); }) }) </script> HTML; });
  4. 4 points
    Although it seems small but for us the users every extra action we need to do is important. Please bring back the fixed search box as I am sure every one is using it many times everyday. Thank You Giora
  5. 4 points
    Hi everyone! Since I spend most of my time during the day on the WHMCS admin dashboard, answering tickets, activating services, following up with stuff, etc. I wanted to keep eye strain to a minimum, so I recently created this CSS file to turn our admin area into a dark look and feel. ------- Today, I'd like to share with you steps to achieve that. The file is compatible with Blend theme of v7.9.2 of WHMCS, I haven't tested it on the other versions yet. The process is pretty simple and straightforward IF YOU HAVEN'T MADE ANY CUSTOMIZATIONS to your Blend theme already. So just download the attached file (blend-dark.zip) and extract it anywhere in your computer. Next, open the folder and then the "images" folder to locate the (logo-dark.psd) file to edit it by placing your own logo there. Then save it as "logo-dark.gif" replacing the already existing file. Now you should end up with a file tree like this ... blend |__ css | |__ admin-dark.css | | |__ images | |__ logo-dark.gif | |__ logo-dark.psd | |__ header.tpl Now back top and compress your "blend" folder ... Name it something memorable, like "blend-2222.zip" in this example. Next navigate to the "admin" folder inside your WHMCS installation, and open the "templates" folder (based on your customizations, the "admin" folder name may differ, so this here presumes the default setting). /path/to/whmcs/admin/templates/ Next make sure to ZIP and backup your current Blend theme folder (name it something like "blend-original.zip). Next, upload the "blend-2222.zip" you compressed earlier to the "templates" folder and unzip it, and you should be all set and ready! If you have any notes or additions, please feel free to add! Also, any mistakes or errors are unintentional, please feel free to share and highlight them. Wishing everyone a good day! - Mohamed
  6. 4 points
    $38.14 + 18% = $45 if the tax is inclusive, then the price already contains the tax... so if the price were $118, the tax would be $18 and the subtotal $100 https://docs.whmcs.com/Tax/VAT#Inclusive.2FExclusive_Tax Tax Amount = ( Item Price / ( 100 + Tax Rate ) ) x Tax Rate Tax Amount = ( 45 / ( 100 + 18 ) ) x 18 = 6.86
  7. 3 points
    Hi all, I'm pleased to confirm that v8.0.2 addressed the issue related to domain sync Next Due Dates and an improvement to the reporting when an invalid domain is encountered: CORE-15468 - Correct reporting of Domain Sync Next Due Dates CORE-15461 - Provide context for Invalid Domain errors in Domain Sync Thank you for reporting those issues.
  8. 3 points
    don't worry - everyone's having a collective migraine trying to get their heads around this nonsense. ๐Ÿค• the session cart array no longer exists, so every $smarty.session.cart solution that's ever been posted will now fail... oh what fun. ๐Ÿ™„
  9. 3 points
    methinks he was being sarcastic - as the three of us all posted in that now-deleted (sorry hidden!) thread... which, for the benefit of others, is worth mentioning that it was started at the beginning of August (2 months ago)...
  10. 3 points
    it is possible to add the details back with a hook (i'm still tidying up the CSS and testing on other devices)... it's probably also worth mentioning that from my limited texting of the GA so far, the blend theme from v7.10.2 still appears to work on v8 - if you still want to use the old layout in the short-term.... if updating to v8 and wanting to use the old theme, then uploading the old blend folder from a v7.10.2 download to the /admin/templates folder, e.g call it blend7 (don't overwrite the existing v8 blend theme as those changes would get overwritten during an update) - then you can switch themes in the "My Account" section. from a quick test, there is a missing language string in the help menu, and the setup title as been changed - but if you correct those with Admin Language Overrides, then it looks like this... <?php $_ADMINLANG['setup']['title'] = "Setup"; $_ADMINLANG['help']['support'] = "Get Help"; Mass Mail is called Email Campaigns now, but the URL hasn't changed... intellisearch still works... some of the sidebar icons might be missing, but I suspect that's caused more by the v8 dev being a fresh install rather than an updated v7 with previously existing v7 image files. i'm still working on other solutions to fix the hideous v8 menu system...
  11. 3 points
    For v8 I really would like WHMCS to separate the market connect files, that includes the languages and the module. Have it as a separated download or installation. MarketConnect is a very different customer target to the original WHMCS clients. I surely don't need uploading and upgrading all those extra files for something I have no interested on using. I also paid the non-branded version but I see that lately WHMCS keeps renaming more and more files to whmcs.ext, in particular CSS and JS on the frontend. Personally I think this defeats the remove the branding option license. Its undesired for most installations as bots and spammers constantly scan WHMCS installations. This is not going to protect against security but I don't think it's a great idea to expose the WHMCS name on every single file. It also looks sloppy from the developing naming side. In the past WHMCS used more generic names for files which was a better fit because naming something WHMCS.js does not really tell me anything about what that file does and its purpose either. Files should be named based on what they do. Changes like this require almost no effort on WHMCS part or their development team and it would at least improve something. WHMCS is getting huge and I seriously think there are so many redundant files and things that most people don't need. It's not about saving space, but just being more efficient. I don't need thousands of files living on a production server that I will never use.
  12. 3 points
    Hello @WHMCS Sachin Thanks for letting us be more open to share our ideas.๐Ÿ˜„ Al WHMCS users like this software a lot, so even that we know that software belongs to WHMCS, we would like to have it with our branded name on it, so my suggestion is that app could import our company name (that already exists on WHMCS admin>Setup>General settings) And display that name on app somewhere, on top or not, it is up to WHMCS where would be more convenient during developing , my print suggestion bellow. PS: this option to show company name could be also optional, so this mean if a user do not want to see their company name there , he\she could go to app settings and disable it with tick on\off so every one will be happy. Personally I think having a possibility to see our company name on APP make, make us feel like ...this is our app too, also perhaps could be users that have several WHMCS installations, so when they switch from one to another they could know easily on what installation is ๐Ÿ‘Œ
  13. 3 points
    I think you've really overcomplicated this by using multiple hooks and the way you're using each of them - it can be simplified to something more clearer... in fact, it could be reduced far more than i'm going to post here as i'm trying to keep it understandable for all. to a certain extent, that bit is fine... i'd argue that removing the affiliates link for everyone, then wanting to add it back just for clients, is a little silly - just remove it for non-clients. i'm not sure that you have going from that screenshot. you have to be careful because just one character wrong and it won't necessarily throw an error, the hook just won't work. out of the box, I don't think that Lagom does anything kinky with the navbars (other than to split the primary / secondary locations) - using hooks on them should still work... and i'm speaking as someone who was generously given a Lagom developers license by a client. ๐Ÿ˜Ž one way I would write that hook would be... <?php add_hook('ClientAreaPrimaryNavbar', 1, function($primaryNavbar) { $client = Menu::context('client'); # remove for all if (!is_null($primaryNavbar->getChild('Home'))) { $primaryNavbar->removeChild('Home'); } # remove for non-clients if (is_null($client) && !is_null($primaryNavbar->getChild('Store'))) { $primaryNavbar->removeChild('Store'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Affiliates'))) { $primaryNavbar->removeChild('Affiliates'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Knowledgebase'))) { $primaryNavbar->removeChild('Knowledgebase'); } if (is_null($client) && !is_null($primaryNavbar->getChild('Announcements'))) { $primaryNavbar->removeChild('Announcements'); } # add for non-clients if (is_null($client)) { $primaryNavbar->addChild('hosting')->setLabel(Lang::trans('Hosting'))->setOrder(11); if (!is_null($primaryNavbar->getChild('hosting'))) { $primaryNavbar->getChild('hosting')->addChild('sharedhosting')->setLabel(Lang::trans('Shared Hosting'))->setURI('cart.php?gid=1')->setOrder(1); $primaryNavbar->getChild('hosting')->addChild('wordpresshosting')->setLabel(Lang::trans('WordPress Hosting'))->setURI('cart.php?gid=34')->setOrder(2); } $primaryNavbar->addChild('ecommerce')->setLabel(Lang::trans('Ecommerce Hosting'))->setOrder(12); if (!is_null($primaryNavbar->getChild('ecommerce'))) { $primaryNavbar->getChild('ecommerce')->addChild('ecommerce1')->setLabel(Lang::trans('CS-Cart Hosting'))->setURI('cart.php?gid=36')->setOrder(1); $primaryNavbar->getChild('ecommerce')->addChild('ecommerce2')->setLabel(Lang::trans('Magento Hosting'))->setOrder(2); } $primaryNavbar->addChild('vps')->setLabel(Lang::trans('Virtual Private Servers'))->setOrder(13); if (!is_null($primaryNavbar->getChild('vps'))) { $primaryNavbar->getChild('vps')->addChild('vps1')->setLabel(Lang::trans('VPS Cloud Shared'))->setURI('cart.php?gid=33')->setOrder(1); $primaryNavbar->getChild('vps')->addChild('vps2')->setLabel(Lang::trans('VPS Cloud Dedicated'))->setURI('cart.php?gid=31')->setOrder(2); } $primaryNavbar->addChild('dedicated')->setLabel(Lang::trans('Dedicated Servers'))->setURI('cart.php?gid=14')->setOrder(14); $primaryNavbar->addChild('cscart')->setLabel(Lang::trans('CS-Cart'))->setOrder(15); if (!is_null($primaryNavbar->getChild('cscart'))) { $primaryNavbar->getChild('cscart')->addChild('cscartlicenses')->setLabel(Lang::trans('CS-Cart Licenses'))->setURI('cart.php?gid=2')->setOrder(1); $primaryNavbar->getChild('cscart')->addChild('cscarthosting')->setLabel(Lang::trans('CS-Cart Hosibg'))->setURI('cart.php?gid=36')->setOrder(2); } } # add for clients only if (!is_null($client)) { $primaryNavbar->addChild('kb')->setLabel(Lang::trans('knowledgebasetitle'))->setURI('knowledgebase.php')->setOrder(50); } }); possibly an oversight on your part, but the magento child doesn't contain a link. in terms of how to add menu items for logged in users, i've done that at the end of the above hook where i've added a kb link back in for clients only. if you mean Services/Domains/Billing/Support, and removing them entirely/individually, then you don't really need to check whether the user is logged in or not - the same as you don't need to (though I do in the above hook) check that the client is not logged in when removing the "Store" link... it doesn't matter because only non-clients see the store link, clients don't (at least out of the box)... as an aside, you could nuke them with about 4 lines of code if you had to - but there are only four elements to remove, so let's not be deploying weapons of mass destruction for something so small. โ˜ข๏ธ note this quick method works because these default navbar children have unique names - if you had a situation where a link exists in both logged non-logged navbars (home being the obvious example), and you wanted to change their links depending on client logged in status, then under those circumstances, you would check first whether they were logged in or not... but I think for your purpose, you won't have to. so if you wanted to remove the Services tab for logged in users... if (!is_null($primaryNavbar->getChild('Services'))) { $primaryNavbar->removeChild('Services'); } that works because it checks to see of the parent exists, and only if it does, does it try to remove it - so for a non-client, it wouldn't get past the if statement. for kb, see above; for affiliates, I solved the issue by only removing it for non-logged in users - for new menu items, see above (re: kb and how I added the non-logged in parents with their kids).
  14. 3 points
    Hi Mohamed, <?php function admin_custom_css_hook($vars) { $currenttemplate = $vars['template']; if ($currenttemplate == "blend" ) { $head_return = ''; $head_return = '<link href="templates/blend/css/admin-dark.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $(document).ready(function() { $(\'.header .logo img\').attr(\'src\', \'templates/blend/images/logo-dark.gif\'); }) </script>'; return $head_return; } } add_hook("AdminAreaHeadOutput",1,"admin_custom_css_hook"); there was two bugs in the original hook - first, it was changing the logos on the marketconnect pages with your logo(!)... i've fixed that by being more accurate with the logo .css reference in the hook. the second bug is when you look at admin pages that appear to be in a subdirectory (due to Friendly URL settings), e.g the setup pages for notifications, security settings etc, the logo is broken - that's purely down to the path to the image being wrong... I suspect that would be fixed by either expanding the hook for those conditions or referencing the replacement image with a full URL rather than a relative path.
  15. 3 points
    why? are they going to have a survey or a vote on what to add ?? (even if they did, how many users would vote??) no - they will already know what's going to change, and the user base will either have to like it or lump it.
  16. 3 points
    then you take @baymax's query and change the where statement... UPDATE tblclients SET groupid='new-group-ID' WHERE email LIKE '%@hotmail.com';
  17. 3 points
    maybe this query if all 60 clients are in the same group currently. UPDATE tblclients SET groupid='new-group-ID' WHERE groupid='current-group-ID'; Replace the parts in green.
  18. 3 points
    You can try this hook: https://github.com/Jetserver/WHMCS-Reply-Above-This-Line
  19. 3 points
    then you wouldn't use this hook, you would instead use ClientAreaProductDetailsOutput hook and specify what output occurs with specific service(s). <?php add_hook('ClientAreaProductDetailsOutput', 1, function($service) { $serviceID = $service['service']->Id; if ($serviceID == '600') { $output .= '<div class="alert alert-success" role="alert"><div class="row"><div class="col-sm-1"><i class="fab fa-whmcs fa-3x"></i></div><div class="col-sm-11">Welcome to WHMCS!<br><small>buy the addon!</small></div></div></div>'; } if ($output) { return $output; } }); it's worth noting that the location of this specific hook output is determined by the Smarty template and not the hook itself - if you were displaying MarketConnect banners on that page, it would display below them. if you have an unpaid/overdue invoice, then there is a default alert shown at the top of the page... ... but that output is specified in the template itself and only triggered if/when hardcoded conditions are passed to the template. if you wanted to output your alert elsewhere on the page, you would be looking at either editing the template to define exactly where the output should be (you could still trigger it, and specify it's content, with a hook), or using another output hook, containing JS to specify the exact location of the output (though can be difficult depending on where you want to output).
  20. 3 points
    Pretty simple to treat it like a typical config file in a lot of software. custom.css.txt (with a note to rename it)
  21. 3 points
    I was just about to suggest the same thing. ๐Ÿ™‚
  22. 3 points
    One thing to note is that WHMCS will redirect from contact.php to submitticket.php (your specific department) if you select a ticket department under WHMCS admin > setup > general settings > mail > Presales Form Destination
  23. 3 points
    don't be shy - i'm volunteering you (and your coding colleagues) for a week or two in Houston - all expenses paid by WHMCS. โœˆ๏ธ
  24. 3 points
    if there is no functionality or automation needed, then i'd still stick with using the Email Registrar idea - but remember that this registrar module code isn't encrypted and therefore can be duplicated and modified. ๐Ÿ˜‰ to duplicate the registrar, all you should need to do is... copy the "email" folder in /modules/registrars - for the sake of argument, paste the duplicated folder and call it "brian" - still in /modules/registrars/ go into the duplicate folder, e.g brian, and rename email.php to brian.php - for consistency keep the folder and filenames the same (and just one word). edit the brian.php file and replace occurrences of "email_" with "brian_" (there should be 6)... these functions need to be unique, so if email registrar is active, and this duplicate is active, you will get errors - so you have to rename the functions. edit the Friendly name line of code to differentiate this from the default email registrar... "FriendlyName" => array("Type" => "System", "Value"=>"Email Notifications (Brian Registrar 1)"), ... so you know which registrar this is to be used with... optionally change the logo. repeat as necessary for other registrars. on the Domain Registrars page, you will now have 2 different email registrars... and in a client's domain profile, it will be available as an option... in your case, what I would probably suggest is that you don't use the original Email Registrar module if you are going to rename it (e.g give it the name of a registrar) because a WHMCS update would probably overwrite any changes that you make to the module - so just use the duplicates that you make and the updater shouldn't touch them.
  25. 3 points
    then buy the Client Notifications addon! ๐Ÿ™„ <?php add_hook('ClientAreaHomepage', 1, function($vars) { return '<div class="alert alert-success"><div class="row"><div class="col-sm-1"><i class="fab fa-whmcs fa-3x"></i></div><div class="col-sm-11">Welcome to WHMCS!<br><small>buy the addon!</small></div></div></div>'; }); you could always log into their demo if you want to steal their div layout code, but you'd likely have to copy and adapt their css too.
  26. 3 points
    you might want to share what the solution was in case others read this thread in the future.
  27. 3 points
    I ran into an issue with this hook today - it works fine on a product linked to cPanel, but with other products it shows a blank page. with the assistance of sentq, I was able to tweak it to work correctly. <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaPrimarySidebar', 1, function(MenuItem $primarySidebar) { $service = Menu::context('service'); $domain = $service->domain; $servertype = $service->product->servertype; # Not cPanel, no links added if ($servertype!="cpanel"){ return; } if (!is_null($primarySidebar->getChild('Service Details Actions'))) { $primarySidebar->getChild('Service Details Actions') ->getChild('Login to cPanel') ->setUri('http://'.$domain.'/cpanel'); $primarySidebar->getChild('Service Details Actions') ->getChild('Login to Webmail') ->setUri('http://'.$domain.'/webmail'); } });
  28. 2 points
    not from settings. the default email templates would be available in the /resources/sql/install/tblemailtemplates.data.sql file - so you could either replace all of them, or individually copy the content of a specific email template.
  29. 2 points
    I am also sad to see this has been removed - so have to spend even more time implementing customisation to fix what wasn't broken. Another example of WHMCS team not bothering to listen to users - and simply doing what they want instead......
  30. 2 points
    OK, Ive been using WHMCS 8.0 for over a day now and the click to view search in the top right corner is driving me mad. It needs to be visible always. The way it seems to autohide sometimes when im trying to use it causes a loss of productivity. (try selecting text in it from right to left - like your going to then paste over it) and the search box hides itself.. Arrrhh.. Surely im not the only one?
  31. 2 points
    in the description, if the image files are uploaded locally to your WHMCS install... <img src="assets/img/sandwich.jpg"> <br> <b>Enjoy our delicious sandwiches!</b> don't add https:// or http:// into the image URL (the colon will cause issues) - if they're remotely hosted images, you can use... <img src="//domain.com/assets/img/sandwich.jpg"> for local images, you can to upload the images via ftp / cPanel file manager etc -and then reference their URLs in the description.
  32. 2 points
    and so it looks on my website now. ๐Ÿ™‚
  33. 2 points
    also covered here in this thread... as you can see from the above thread, Tom's working on a commercial version of this - so possibly that will cover this issue too. i'm not testing the app, but I would have thought that you might need to check user agents in the hook, or find another way to detect mobiles/tablets etc and not notify on those occasions... or limit the notifications per admin user for x minutes.
  34. 2 points
    Check out https://www.supportpal.com/integrations/whmcs-integration & https://docs.supportpal.com/current/WHMCS+Integration I've used it myself in a past life and it practically looks the same as WHMCS support its all nicely embedded in and has a similar look and feel as WHMCS Support Tickets, as an admin you would answer the tickets from the SupportPal UI
  35. 2 points
    it might be worth putting this in a GitHub and adding a link to it in Marketplace - who knows what's going to happen to Blend after v8, but that's going to be many months away at best.
  36. 2 points
    there be the question - the trick is knowing which template is generating the output. ๐Ÿ˜• so if this is a cPanel product, then it's going to be /modules/servers/cpanel/templates/overview.tpl and specifically... <input type="button" onclick="popupWindow('whois.php?domain={$domain}','whois',650,420);return false;" value="{$LANG.whoisinfo}" class="btn btn-info btn-sm" /> it's worth noting... https://docs.whmcs.com/Working_with_Module_Templates so you can duplicate this overview template and move it to the active template folder (and then edit it to make your changes) - which means that during an update, WHMCS shouldn't overwrite it - if you modify the original version in the cPanel folder, it likely will.
  37. 2 points
    Hi, Please check the screenshot, the number shown should be the Proforma Invoice number and even when the Proforma Invoice is changed to Tax Invoice after payment this number remains the same as Proforma. Hope this helps...
  38. 2 points
    two options (at least when using Six) - you can either remove them using action hooks.... https://docs.whmcs.com/Editing_Client_Area_Menus https://docs.whmcs.com/Client_Area_Navigation_Menus_Cheatsheet ... or you can hide them with CSS (added to css/custom.css in your active template folder)... #Primary_Navbar-Services-View_Available_Addons, #Secondary_Sidebar-My_Services_Actions-View_Available_Addons {display:none;}
  39. 2 points
    take a look at some of the @ThemeMetro templates... https://marketplace.whmcs.com/index.php/group/ThemeMetro
  40. 2 points
    It is with great pleasure to announce that all of our themes and order forms along with Croster are now fully updated for WHMCS 7.10.0 and available for download. Croster 1.4 changelog New Features: Added number of member show in Team Listing section. Added Dark Mode color scheme. Added client credit balance alert in client area homepage. Promotion banner and cookies consent are available in multi language. Multiple invoice layouts. Payment logos and custom html code in footer. Client area login page customization with more styles. Improvements & Bug fixed: Added option to enable/disable promotion banner date counter functionality. By default it is disabled, after upgrade if you wish can enable it. Text Editor section issue, now use full bootstrap ui in this also available dark background and added some more text color, tables and font size. By default hoverable menu has been removed due to causing issue in touch screen display. If you still want can enable from Croster Panel. Removed h1 from all sections title to avoid issue in multiple h1 tag in SEO. CSS improvement for boost loading speed. Market connect page navigation bar improvement. Important bug in licensing. Payment method page bug. invoice payment by credit card page layout issue. Multiple VPS hosting plans and FAQs section in same page issue. Market Connect VPN services order issue. Description duplicate issue in Web Hosting Plan section when product descriptions not as per recommended format. Primary menu scrolling issue in left layout by laptop touch pad. Product group pricing is not showing in breakdown if monthly break down is enable from whmcs settings. Improved call to action section. Client area and Croster default order form visibility improvements. Coming Soon.. We are still working on Single Page Checkout order form and hopeful to release in upcoming weeks. We are bound to update our themes as per WHMCS latest version ASAP so we had no choice to skip it until Single Page Checkout order form gets ready.
  41. 2 points
    Yes we gave up on this , just like we gave up on many other errors or un-wanted features , still not fixed, after all the years passed ๐Ÿ˜ž Also new errors now, with the new update/s, just going to live with it ,until we can find a better billing solution, for now we re stuck with WHMCS & the cPanel clan.
  42. 2 points
    I checked the link https://www.example.com/path/to/whmcs/vendor/composer/LICENSE , but with my billing url link + vendor/composer/LICENSE, that was recommended by an email I received today to view the 'license' document but it returned a 404 Category Not Found message. So I assume that means my system is not affected by this issue described in the link below. If that is correct, I would 'highly' recommend that the security advisory page be updated to include the results if there is no issue. However, if this response 404 Category Not Found display means my billing has an issue, please let me know. https://docs.whmcs.com/Security_Advisory_2020-01-28
  43. 2 points
    Getting the feeling I'm the only one seeing my posts here. ๐Ÿ˜‰
  44. 2 points
    There's no such a thing in WHMCS. It took me weeks to find a workaround followed by months of frustration while coding but I gave up. I'd rather kiss the ugliest camel in the world.
  45. 2 points
    It was 8 years ago when my PHP skills were abominable. If it's my code for sure it contains at least 3 bugs and a malware per line and should be taken down from Marketplace ๐Ÿค—
  46. 2 points
    6- MS Exchange calendar (or Google equivalent). You can also configure it to send you reminders, set an alarm on your phone, send an email etc. That's how I remember my gf birthday ๐Ÿ˜˜
  47. 2 points
    I would agree with that - i've always kept personal and business domains/accounts well away from WHMCS.
  48. 2 points
    It was due to a problem with the hotfix. I got the following reply from WHMCS: Issue has been fixed now.
  49. 2 points
    there will be at least two short-term ways to do it... edit the code in the above template. edit scripts.min.js (where there URL is defined). method 2 implies that you should be able to do it via a hook (which would be a better long-term solution), but i've not been able to get it working yet... besides, now that v7.7.1 is released, I suspect there won't be any more updates, apart from hotfixes, until May 2019 and so no harm in editing the template or js files. so if you want to edit the template... {if $service.sslStatus} {if $service.sslStatus->getClass() eq "ssl-state ssl-inactive"}<a href="cart.php?gid=11">{/if}<img src="{$service.sslStatus->getImagePath()}" data-toggle="tooltip" title="{$service.sslStatus->getTooltipContent()}" />{if $service.sslStatus->getClass() eq "ssl-state ssl-inactive"}</a>{/if} {elseif !$service.isActive} <img src="{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png" data-toggle="tooltip" title="{lang key='sslState.sslInactiveService'}"> {/if} alternatively, in scripts.js (not used by WHMCS), you can change... jQuery(document).on('click', '.ssl-state.ssl-inactive', function(e) { e.preventDefault(); window.location.href = WHMCS.utils.getRouteUrl('/ssl-purchase'); }); to... jQuery(document).on('click', '.ssl-state.ssl-inactive', function(e) { e.preventDefault(); var gidvalue="11"; window.location.href = "cart.php?gid=" + gidvalue; }); minify/compress it and save it as /templates/six/js/scripts.min.js - or if you're familiar with the minified files, you could edit scripts.min.js directly... either method should work, there is no need to do both! it's probably easier to use the template edit, but I posted the js solution because it was the first one that I wrote for this and it seems a shame to let it go to waste if others want to use or improve upon it (e.g the basis of a hook).
  50. 2 points
    one of the WHMCS guys, e.g @WHMCS John, @WHMCS Nate etc, may want to comment on this, but i'm not convinced the documentation on this is 100% correct (yes I was shocked too! ) I don't think that's true for v6 or later that the language name is being taken from the filename - it's certainly true for v5.3.14 as i've just tested it, but failed on v6.2.2... in v7.2.3, i'm seeing the same as @bagfuloz. i'm not sure if any of that is valid in v7 - i've set the above variable to fr_FR in hindi.php and it's still showing en_GB in $locales (which is the array used for the localised name shown in the language menu) - on multiple browsers, with cleared browser and template caches... even if you totally remove the line from the file, the language file still works (contrary to what it says should happen in the docs)... it looks to me like $locales is hard-coded and not taking the locales from the language files. as also specified in the docs, both files are utf-8 encoded without BOM (though even with BOM it still works). the only way I could think to fix this is to use a modified version of the hook I posted in the thread below... <?php /** * Change Hindi Language Localised Name * @author brian! */ function locales_hook($vars) { $mylocal = $vars['locales']; foreach ($mylocal as $key => $value) { if ($value["language"] == "hindi") { $mylocal[$key]["localisedName"] = "เคนเคฟเค‚เคฆเฅ€"; } } $activelocale = $vars['activeLocale']; if ($activelocale["language"] == "hindi") { $activelocale["localisedName"] = "เคนเคฟเค‚เคฆเฅ€"; } return array("locales" => $mylocal, "activeLocale" => $activelocale); } add_hook("ClientAreaPage", 1, "locales_hook"); ?> either the documentation is wrong, or this has been a bug since v6... or i'm missing something obvious as I assume users shouldn't need to use a hook to do something like this.. (though these days, any excuse WHMCS can find to require hooks to be used for the most trivial of things is seemingly enabled by default!)
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated