Jump to content

Abdy

Blesta Developers
  • Posts

    407
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by Abdy

  1. We've already created a task for that CORE-3791
  2. I just tried it and indeed it's a MySQL error. SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\xA4\xA0' for column 'details' at row 1
  3. Abdy

    Custom Smart Search

    You can change Smart Search to another one, clicking on the magnifying glass icon.
  4. Abdy

    Custom Smart Search

    I think the best way to implement your own custom search is by using events and not a route. To implement it using events you need to register the event in the *_plugin.php file as in the following example: In this example we register the search() function from the AdminMain controller. class SearchPlugin extends Plugin { // ... public function customSearch($event) { $params = $event->getParams(); if (isset($params['options'])) { $params['options'] += [ $params['base_uri'] . 'plugin/search/admin_main/search/' => 'Custom Search' ]; } $event->setParams($params); } public function getEvents() { return [ [ 'event' => 'Navigation.getSearchOptions', 'callback' => ['this', 'customSearch'] ] ]; } } Now we need to create the AdminMain controller and implement the search() method, which will perform the search: <?php class AdminMain extends AppController { public function preAction() { parent::preAction(); $this->requireLogin(); // Load the languages, models, components // and helpers needed by this controller. } public function index() { // There is nothing to see here $this->redirect($this->base_uri); } public function search() { // Restore structure view location of the admin portal $this->structure->setDefaultView(APPDIR); $this->structure->setView(null, $this->orig_structure_view); // Set page title $this->structure->set('page_title', 'My Custom Search'); // Implement your amazing code here to do the search! if ($this->isAjax()) { return $this->renderAjaxWidgetIfAsync( isset($this->post['search']) ? null : isset($this->get['search']) ); } } }
  5. Abdy

    header-footer

    You can add custom css and js files in both header and footer by adding them in the /app/views/client/bootstrap/structure.pdt file.
  6. I don't understand what is exactly the issue, could you please elaborate a little more on what the problem is?
  7. I think it is not necessary to use events for what you are looking for, from the addService() function you can add a condition that if the configurable option exists, a support ticket is created. The addService() function is automatically executed by the cron task when the invoice related to the service has been paid in full. Here's a quick example, assuming that the configurable option for the extra service is named "migration_service": public function addService( $package, array $vars = null, $parent_package = null, $parent_service = null, $status = 'pending' ) { ... if (isset($vars['configoptions']['migration_service'])) { // Create support ticket Loader::loadModels($this, ['SupportManager.SupportManagerTickets']); $ticket = $this->SupportManagerTickets->add([ 'department_id' => 1, 'staff_id' => 1, 'client_id' => 1, 'summary' => 'Subject', 'priority' => 'critical', 'status' => 'open' ]); // Add reply if (!is_null($ticket)) { $this->SupportManagerTickets->addReply($ticket, [ 'client_id' => 1, 'contact_id' => 1, 'type' => 'reply', 'details' => 'Reply text' ]); } } ... }
  8. Try using Loader::loadModels($this, ['SupportManager.SupportManagerTickets']); This is due to $this->uses() is not accessible from a module.
  9. Abdy

    CONFIGURABLE OPTIONS

    You can use add-ons instead of configurable options. Add-ons can have different terms than the main package. Here's a quick example, I created an add-on package for a one time cost of $200. This package belongs to a package group of the Add-on type named Additional Services. I assigned the Hosting package group as a parent of the Additional Services package group. At the moment of adding a new service, regardless of the term of the parent package, the add-on "Migration Service" can be added, even though the parent package is monthly and the add-on is one time.
  10. You can change the price of a service for each user individually, modifying the service and overriding the price with the new price for that user in specific.
  11. The "Log In" definition can be located on /language/xx_xx/app_controller.php
  12. This usually happens when some definitions are missing from the language pack in use, Blesta does not come by default with a dropdown called "Billing" in the navigation bar. Maybe this one is being added by a third party plugin? If you are using a third party plugin, you may need to update the language files of that plugin. However, you can find the language definitions from the navigation bar on the /language/xx_xx/navigation.php file, where xx_xx is the language pack you are using.
  13. Abdy

    too many email sending

    All these emails are being sent duplicate to the same email address?
  14. Check if the automation tasks are enabled for the Mass Mailer plugin on Settings > Company > Automation in the Plugin tab.
  15. The navigation menu can be found on /app/views/client/bootstrap/structure.pdt, in this file is available the $logged_in variable, which allows you to know if a user has logged in or not. <?php if ($this->Html->ifSet($logged_in)) { ?> <!-- The user is logged in: navmenu1 --> <?php } else { ?> <!-- The user is not logged in: navmenu2 --> <?php } ?>
  16. No, the API is able to return the results in a JSON object if desired, but not receive a JSON object as a request body.
  17. Are the packages also priced in USD? You also need to check the USD option on your order forms settings (Packages > Order Forms > Edit) after adding a new currency.
  18. First of all you need to add a user to the API, which can be done at Settings > System > API Access, once the user is added the key will be shown along with the user. Keep in mind that API users differ from staff users.
  19. Apparently this bug has already been reported in the CyberPanel GitHub repository as the problem occurs even in the official WHMCS module. https://github.com/usmannasir/cyberpanel/issues/47 I am surprised that they introduce non backward compatible changes to API in a minor update. Apparently they're not using semantic versioning.
  20. You can modify the module to trim the word "test" in the username, or generate a random username if the word "test" is detected in the domain. This way the module can create the account.
  21. This is not a limitation of Blesta, it is a limitation of cPanel itself. You cannot create an account in cPanel that starts with "test".
  22. I think the logo image could be encoded in Base64 and saved as a company setting in the database. Probably a very large image could affect performance, so before encoding, it should be resized and perhaps compressed. Although I don't know if it can affect performance in a real-life scenario.
  23. Everyone who requested a refund received it within 24 hours. I'm really sorry about what happened and promise to reward the people involved as an apology. Everyone who received a refund, will still receive the license (perk) they originally purchased when the module gets released for free. I don't want to make the same mistake again, so this time I'd rather not give a release date. I take responsibility for the mistake I made and I hope to be able to amend my mistake soon and make my best effort to never repeat it again. I don't want to use this as an excuse, I take full responsibility for the mistake I made, but I think I owe everyone an explanation. The development of the module started in the last week of November 2017, but because I had several projects and tasks to do for other clients, I had no more time available in my schedule to develop the module on my own. So I decided to hire a full-time PHP developer in the first week of December to take over the development of the module. However, for reasons unknown to me, the last week of December my developer quit, causing development to stop. I personally like to make code that not only works, but is also visually beautiful, trying my best to follow the development standards and follow good coding practices. However, I couldn't find another developer that met my criteria, because very few developers are familiar with Blesta. Because of this I started working on the module on my own during the weekends to prevent development from stopping completely, but it still ended up being delayed considerably. Having already finished some of the biggest projects I had, last week I resumed the development of the module again, at half time. Also, last week I got a new developer who will be able to help me in the development. During this time I decided to make some changes. The final release of the module will not be called cPanel Extended, as I try to avoid confusion with the ModulesGarden module. In addition, the module will not be released under the CyanDark brand, as I am working on a new site specifically dedicated to sell only Blesta related products. With a development team independent of the CyanDark's team to avoid problems. This is one of the most popular modules that I have, and I promise you that I will not let the module die, soon I will publish more news about the progress of development, but I prefer not to give an ETA at the moment, to avoid problems. Anyway, I give you my sincere apologies and I hope you can pardon me for my mistake.
×
×
  • Create New...