Jump to content


Popular Content

Showing content with the highest reputation since 01/13/21 in all areas

  1. 2 points
  2. 2 points
    isn't it a criminal offence to ever ask WHMCS for an ETA on anything? 😜 even if they won't say officially, I would have thought the answer would be years - it will just have a long slow death like Modern, where at some point it will no longer receive updates and at a later point, not even be shipped - I assume when they think most users are using 21 rather than Six, or if newer features become more difficult to include with Six. that said, the release notes mentioned, back in 2019, that the Staff Noticeboard was deprecated and no longer going to be shipped in future versions - yet here we are 18 months later with v8.1 and it's still getting shipped.... so the docs saying something is going to happen is no guarantee that it will. yeah, that's not a bad time frame - I was thinking v9... but then that starts a whole new discussion about how many v8 major versions there are going to be before v9 and nobody knows the answer to that. anyway, I hope it's going to be a while as the 21 template design looks awful to my eyes.
  3. 1 point
    <input pattern="{literal}[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}${/literal}" type="email" name="email" id="email" class="field form-control" placeholder="Email Address" required> Please try this. Here is the excerpt from the Smarty documentation explaining what literal does:
  4. 1 point
    I'm so sorry because Δ± forgot to initialize the page using $ca->initPage() πŸ˜„
  5. 1 point
    yes. βœ… if you wanted to do this without any coding (e.g hook), then I would put the validation within the custom field as regex... that would add the field to the registration page (and also checkout in the cart), and unless the invite code is entered correctly, e.g 'brian' (case sensitive - so 'Brian' woudn't be valid). an error message will be shown. if you wanted to allow multiple different invite codes to be valid, then you can add a list of valid options to the regex.. /^(tom|dick|harry)$/ or if you wanted to make it case-insensitive, e.g so haRrY would be valid, then it would be... /^(tom|dick|harry)$/i ... though you probably shouldn't need to use that as you likely want what is entered to be exact as the valid code(s). I think there is only one downside to this solution - but that would only apply if this "Invite Code" custom field was added after existing clients had already registered - they would be unable to edit their profile because the IC field wouldn't have been set for them, but it's required and they won't know what the valid code is/are.... the hook below should fix by injecting the code into the field if it doesn't exist - additionally, it converts the text field to a password to hide the code (though it could be viewed from the browser source code if they want to). <?php # Inject Invite Code Into Client Profiles Hook # Written by brian! function client_profiles_invite_code_hook($vars) { $customfields = $vars['customfields']; $invitefield = "Invite Code"; $invitecode = "123456789012345"; foreach ($customfields as $key => $field) { if ($field['name'] == $invitefield && empty($field['value'])) { $customfields[$key]['input'] = str_replace("text","password",$field['input']); $customfields[$key]['input'] = str_replace('value=""','value="'.$invitecode.'"',$customfields[$key]['input']); } } return array("customfields" => $customfields); } add_hook("ClientAreaPageProfile", 1, "client_profiles_invite_code_hook"); the only two lines you should need to change is the $invitefield and $invitecode variables - the first is the name of your custom field; the second is a valid invite code value. there could be a further issue if you changed the invite code after a user had registered - because they would have an existing value that had become invalid and would then be unable to edit their profile.... that's fixable though, as would be pulling the valid values from the database if you really had to - but i'm trying to keep this simple for now until you get your head around how this might work.
  6. 1 point
    Personally I can't believe something like that got enough attention it was implemented, but things many of us wanted went ignored. Did that have a lot of users saying it was wanted? I also find it absurd to remove it while it can be so easily bypassed. πŸ˜‰
  7. 1 point
    first thought would be to tell them to reset it themselves from the client area. πŸ™‚ in v8, admins can't change users passwords directly - a feature that I can't believe there was a feature request opened for demanding that the option be removed. πŸ™„ I can only think of two options if you don't want the client to have any involvement in the process... login as owner. buy the Change User Password addon for $25 USD one-time. as others have said, you shouldn't need to buy a third party addon to do this - at some point, WHMCS will likely have to put the feature back (possibly why the addon is one-time because they suspect the same too), but that doesn't help you now.
  8. 1 point
    Login as Owner Change Password (https://youdomain.com/whmcs/user/password)
  9. 1 point
    Brian. I would like to say the following to you. You are a brilliant Man and thank you for contributing so much here. I've came across so many threads where your advice has resolved issues I had. Thank you so much. I hope you have a brilliant and prosperous year ahead.
  10. 1 point
    Regards, this time I leave you a small script that we did for my company a few months ago to add the whois (see domain information) to whmcs. I clarify that I did not see this published anywhere, this was an old whmcs function, but for some reason it was removed in the new versions, in theory it was something we came up with to do for https://cangurohosting.com. To explain a bit, the operation is based on using the WHMCS own api to perform the whois. The code works perfectly with the default whmcs template. if you want to add it in a custom template it should work fine in your template, and if that is not the case then you need to fix it on your own for your own whmcs. DEMO: To implement, you simply create the file verificar-whois.php in the root directory of your whmcs installation. verificar-whois.php <?php require_once 'init.php'; $dominio = $_POST['dominio']; $command = 'DomainWhois'; $postData = array('domain' => $dominio); $results = localAPI($command, $postData); $whois = $results["whois"]; echo '<pre style="overflow: unset !important;font-size: 11px !important;text-align: left; white-space: normal;">' . $whois . '</pre>'; ?> Then go to the active template of your shopping cart in use: /templates/orderforms/standard_cart Open file: domainregister.tpl Find the line with the following content: {lang key='orderForm.domainIsUnavailable' You must comment or remove this entire line of code: <p class="domain-unavailable domain-checker-unavailable">{lang key='orderForm.domainIsUnavailable'}</p> Then you should paste the following code below: <p class="domain-unavailable domain-checker-unavailable alert alert-danger"><strong>{lang key='orderForm.domainIsUnavailable'} </strong> no estΓ‘ disponible <a href="#WhoisModal" class="BotonSolicitarWhoisOpenModal btn-danger btn-sm btn">Ver InformaciΓ³n (Whois) de este dominio.</a> <script> var elDominio = ""; setInterval(function(){ if( $('div#DomainSearchResults div#searchDomainInfo.domain-checker-result-headline div#primaryLookupResult.domain-lookup-result p.domain-unavailable.domain-checker-unavailable.alert.alert-danger').is(":visible") ) { elDominio = $('div#DomainSearchResults div#searchDomainInfo.domain-checker-result-headline div#primaryLookupResult.domain-lookup-result p.domain-unavailable.domain-checker-unavailable.alert.alert-danger strong')[0].innerHTML; } }, 100); /* buscar boton modal */ $( ".BotonSolicitarWhoisOpenModal" ).click(function() { $('.InfoHeader-Whois').html(elDominio); $("#WhoisModal").modal("show"); $.ajax({ url: '/verificar-whois.php', type: 'post', async: true, crossDomain: true, data: { dominio: elDominio }, success: function( data, response){ $('.DatosWhois').html( data ); } }); // by cangurohosting.com }); </script> <!-- Modal --> <div class="modal fade" id="WhoisModal" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header" style="text-align: left !important;"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title" >Informacion WHOIS para el dominio: <span class="InfoHeader-Whois"></span></h4> </div> <div class="modal-body"> <div class="DatosWhois"><div class="loader-whois"></div> <span>Cargando..</span></div> </div> <div class="modal-footer" style="text-align: right !important;"> <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button> </div> </div> </div> </div> the code has some paragraphs in Spanish, you can edit as you like. I hope you serve them and they like it. Sorry if my English is not very good. πŸ™‚ I hope you understand me.
  11. 1 point
    quickest way for now would be to edit the header-nav.tpl template and after <ul class="nav navbar-nav">, put... <li class="lr_tooltip"> <span class="lr_tooltiptext">New Project</span> <a href="addonmodules.php?module=project_management#" onclick="createnewproject();return false"><i class="fas fa-plus"></i></a> </li> that will give you a + on the menu... click it once to go to the PM page; then click it again and it will open the New Project window.
  12. 1 point
    either define it in your ordering /. product group settings or add &carttpl=standard_cart in a cart URL
  13. 1 point
    they couldn't afford me! πŸ’΅ the above domain pricing table fix still works in v8.1 - noPagination=true .... as does the jQuery change on domain-register.tpl - both tested on Six, 21 & Standard_cart... if you're using custom carts and/or themes, then it may or may not work.
  14. 1 point
    I see all, I read all... I try my best not to feel obliged to answer all. 😎 you would only need to check logged in status if what you were removing was shown to both logged in and not logged in users.... generally, you just use $client = Menu::context('client'); and then check it's value to see whether the current user is logged in or not...
  15. 1 point
    not a simple way. πŸ™‚ you could minimise the whole Categories sidebar on page load if that helps (they will see the sidebar animated close) - it would be a variation of the hook I posted in the thread below... <?php # Minimise Cart Categories Sidebar Hook # Written by brian! function minimise_cart_categories_sidebar_hook($vars) { if ($vars['inShoppingCart']) { return <<<HTML <script> jQuery(function(){ jQuery('div[menuItemName="Categories"]').find('i[class~="fa-chevron-up"]').click(); }); </script> HTML; } } add_hook("ClientAreaHeaderOutput", 1, "minimise_cart_categories_sidebar_hook"); as written, it should minimise the sidebar on all cart pages - if you need to be more selective when to minimise, then you should follow the original hook and define a list of templates where the minimising should be allowed.
  16. 1 point
    My name is Christian and I want to start a small hosting company soon. Currently, I still have to change some things about the appearance of WHMCS so that my offer complies with German laws. I hope that I can get some help and suggestions here in the community. Until then with kind regards Christian
  17. 1 point
    its resolving and showing fav icon so i'm guessing their wordpress themes broken! Their client area still works at https://myworks.software/account/clientarea.php
  18. 1 point
    Someone thinking of me? oh...
  19. 1 point
    bear in mind that $includeTime and $applyClientDateFormat are meant to be replaced by boolean flags, e.g they are going to be true or false, so I think your code should really be... $blog["postdate"] = fromMySQLDate($decodedata[$key]["postdate"],true,true); if you don't want to include the time in the output, it would be false, true.
  20. 1 point
    you'd have to find a variable that effectively only exists for a client - name wouldn't be an option as that should exist for everyone.... firstname might not, but I think the way to go might be client_id... {if $client_id}this is a client{else}this is a guest{/if}
  21. 1 point
    The new gtag.js script from Google supports the older UA as well as the new GA4. A simple module to integrate this in WHMCS would be very useful.
  22. 1 point
    <?php add_hook('ClientAdd', 1, function($vars) { $results = localAPI('AffiliateActivate', array('userid' => $vars['client_id'])); });
  23. 1 point
    I think you could argue that is a bug - because even if domain registrations etc were disabled in the settings, that panel would still appear - it's creation is not conditional on any setting, which it really should be (to match other elements of the page). so fixing this via settings might not be an option - CSS in a custom.css file should work - either is twenty-one/css/custom.css or similarly within a child theme of 21. .action-icon-btns:nth-last-child(1) .col-lg:nth-last-child(3) { display: none !important;} the other way would be to modify the homepage.tpl template in a child theme. I think if all you want to do is just remove this one panel, then using CSS should be sufficient - but if you're thinking of editing more content, then I would go down the child-theme route and make your modifications in that.
  24. 1 point
    Hi @SwiftModders LLC, Thanks for your message, I've let the relevant people know this is needed.
  25. 1 point
    yep - can confirm it works. after a bit of back and forth until i gave evidence their module was over riding the default. To be honest the first few SH reps kept suggesting for to get my developer and that they didn't "use WHMCS" Annoyingly i spent $$ to bump my ticket to get an "average reply" At the same time i logged a ticket on their github for the module and their actual dev was super quick to fix FYI their github is @ https://github.com/SynergyWholesale/WHMCS-Domains-Module
  26. 1 point
    also, take a look at the post below in case you think some of your users might need to be both users and contacts.
  27. 1 point
    HTML or WP? looks like the HTML version might not have been updated for a few months, WP has - either way, best to check you're using the latest release for your WHMCS installed version. you could rename the relevant eco templates, and copy the Six versions over and test again - if it works, then use them for now; if not, delete and rename the eco templates back to their original filenames. also, check if there is an online demo for eco where you can reach this page feature.
  28. 1 point
    Why even have dist.states.json if it isn't used? That seems... Stupid πŸ˜…
  29. 1 point
    No it isn't set as the active template in the general settings. The default cart is Standard Cart, all products are set to use the default. Then I am loading the child theme using the browser variable carttpl= It appears to effect checkout.tpl only, all other files I have tested work correctly within the child theme. I didn't test the child theme prior to v8.1 as I created and used a fully customized version of Standard Cart. Thanks.
  30. 1 point
    yes - I can't imagine that there is anything in v8.1 that would break it... Six & 21 screenshots from v8.1 below... it's just a case of working out what you want to indent, whether to include icons and coding accordingly.
  31. 1 point
    Are you using any provisioning module for WP via WHMCS ? - https://www.softaculous.com/docs/developers/whmcs-auto-install-module/ With all cPanel and DA we provision WP along with DDoS Protection, , Litespeed , Proactive defense mechanism along with Antivirus & Malware cleaner other than the usual WP hardening processes With AWS provisioning we add extra layer of security using our managed DNS WHMCS hosted with cPanel servers and as for WP it's with cPanel / DA (OVH / Psychz Servers) / AWS
  32. 1 point
    AutoVM Plus is coming! platform Options list: * Pay as you go service. * Create VAPP, cluster, resources by client! * Discover VMs, Storages, Clusters, VAPPs, Datacenters, and Networks automatically! * Support VSAN. * VMware High Availability. * Support OAuth service. * Run Bash/Batch, Python or any scripts after VM installation. * Full log service. * Manage IPs by the platform. * Distributed switch. * Support Multitasks! * Task management * VM bandwidth monitoring system. * Template customization. * Storage DRS * VM HTML console * Clone the existing VM by client! * Create custom management control panel by the API * ...
  33. 1 point
    Please give it some love πŸ™‚ https://requests.whmcs.com/topic/allow-stateregion-overrides
  34. 1 point
    Thank you @rezafaza How to align icons correctly in the forms please?
  35. 1 point
    can orders be suspended? accounts can be, not sure about orders. so you have Continuous Invoice Generation disabled ?? https://docs.whmcs.com/Invoicing_Setup#Continuous_Invoice_Generation if a service has been suspended, you should be able to see it from the Product/Services link in the Client tab of the admin area - either filter on the suspended status or you can add status=suspended to that URL (which will change dependent upon your Friendly URL settings).
  36. 1 point
    there is no file to edit to change a link in the navbar - well I suppose technically you could edit navbar.tpl if you knew what you were doing, but there's no point. what you need to do is create a new .php file in /includes/hooks, call it kblinks.php (or whatever), and then paste the following code into it. <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar) { if (!is_null($primaryNavbar->getChild('Knowledgebase'))) { $primaryNavbar->getChild('Knowledgebase') ->setURI('https://www.google.com'); } if (!is_null($primaryNavbar->getChild('Support'))) { $primaryNavbar->getChild('Support') ->getChild('Knowledgebase') ->setURI('https://www.google.com'); } }); the first half is for the navbar kb link when the client is NOT logged in; the second half is for when they are.
  37. 1 point
    with regards to menu 1, if you wanted to remove the children for everyone (those links exist for both clients and non-clients), you could use the following... <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaSecondarySidebar', 1, function(MenuItem $secondarySidebar) { if (!is_null($secondarySidebar->getChild('Support'))) { $secondarySidebar->getChild('Support') ->removeChild('Announcements') ->removeChild('Knowledgebase') ->removeChild('Downloads') ->removeChild('Network Status') ->removeChild('Open Ticket'); } }); if you wanted to only remove these links in the client area, but keep them elsewhere, you could use the following... <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaSecondarySidebar', 1, function(MenuItem $secondarySidebar) { $client = Menu::context('client'); if (!is_null($client)) { if (!is_null($secondarySidebar->getChild('Support'))) { $secondarySidebar->getChild('Support') ->removeChild('Announcements') ->removeChild('Knowledgebase') ->removeChild('Downloads') ->removeChild('Network Status') ->removeChild('Open Ticket'); } } }); for menu 2, it's similar to the above - just go through the view source of the page to find the names of the menuitemname you want to remove and add them to a hook. for 3, that's a template edit - take a look at the <!-- Shopping Cart --> section of six/header.tpl
  38. 0 points
    RANT INCOMING! I'm SO frustrated with this stupid template system! There HAS to be a stupid bug somewhere! I noticed that the common.tpl file checks first to see if there is an existing custom.css file and if there is, it will load it. BUUUTT it doesn't load it on every page EVEN IF the file does actually exists. It's SO FREAKING annoying! And yet it wont load when choosing your domain options but WILL load on the product selection?? What the hell??
  39. 0 points
    I've migrated my WHMCS from a cPanel panel to Plesk. The problem now is that I can't see the orders but they are on the database. Any idea of how to solve it?
  40. 0 points
    We recently received a notification from Stripe that an action was required in our Stripe account to lodge a SAQ-D self assessment to remain PCI compliant. This came as a surprise because it was our understanding that WHMCS v8.1 uses Stripe Elements, which supports a simplified PCI compliance. When I questioned Stripe about this I received the following response... Can anyone shed more light on the WHMCS PCI compliance situation and if the Stripe gateway in WHMCS really is using Stripe Elements? I was basing my understanding on this blog article, however there seems to be a disconnect between this article and what Stripe is saying: https://blog.whmcs.com/133563/feature-spotlight-stripe-in-whmcs-78 Cheers John
  • 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