Jump to content

[Blesta 3.2.1-3.5.1] Universal Module Workaround: Show Service Fields At Client Panel


Rodrigo

Recommended Posts

Hello,

As other users reported in the forum, this issue is making troubles for services that doesn't have proper provisioning modules.

By doing the following changes, a Tab will appear at client's manage service page, showing all the service fields that have the public_ tag on their name.

Instructions:
1. Open components/modules/universal_module/universal_module.php
Find:

        private function isUrl($str) {
                return preg_match("#^\S+://\S+\.\S+.+$#", $str);
        }

Add After:
 

         /**
         * Returns all tabs to display to a client when managing a service whose
         * package uses this module
         *
         * @param stdClass $package A stdClass object representing the selected package
         * @return array An array of tabs in the format of method => title. Example: array('methodName' => "Title", 'methodName2' => "Title2")
         */
        public function getClientTabs($package) {
                return array(
                        'moreinfo' => array('name' => "More Info", 'icon' => "fa fa-gears")
                );
        }
    /**
     * The More Info tab
     *
     * @param stdClass $package A stdClass object representing the current package
         * @param stdClass $service A stdClass object representing the current service
         * @param array $get Any GET parameters
         * @param array $post Any POST parameters
         * @param array $files Any FILES parameters
         * @return string The string representing the contents of this tab
     */
    public function moreinfo($package, $service, array $get=null, array $post=null, array $files=null) {
         $row = $this->getModuleRow($package->module_row);
         $out = '';
         $servicefields = array();
         foreach ($row->meta as $key=>$value ) {
              if (strpos($key, "service_field_name") !== false) {
                // Here we match the service field label with their key and value
                foreach($service->fields as $field) {
                  if($field->key == $value) {
                     $name = 'service_field_label_' . str_replace('service_field_name_', '', $key);
                     $servicefields[] = array("label" => $row->meta->$name,
                                              "key" => $value,
                                              "value" => $field->value); 
                  }
                }
              }
         }

         foreach($servicefields as $field) {
            // Filter out for showing only public fields
            if(strpos($field['key'], "public_") === 0 ) {
              $out .= "<p><b>". $field['label'] . ":</b> " . $field['value'] . "</p>"; 
            }
         }
         return "<h4>Service Information</h4><br />" . $out ;
  
    }

2. Make sure that the service fields that you want to show to the client start with "public_" prefix

Preview
Setting up public service fields
tPabmS2.png

Service fields being shown on client's "Manage Service" page
7U6tKr2.png

Download drop-in replacement file (if you don't want to manually add the above lines) (Only for Blesta 3.2.1): universal_module.php

Caution:

  • This file will be overwritten if you update Blesta and the Tab will disappear (there is no other risk or any service data loss).
  • If you change the service field name of a existing field, the data will not be preserved (bug?)

 

EDIT: This still works for Blesta 3.5.1. I'm not sure if it's still needed, but I'm already using it for my production blesta website so there's no way back  :lol:

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...
  • 3 months later...
  • 3 months later...

i use that codes, but there are nothing seem on home page. to detail page not problem, but home page downslide not working. You can check screen shot

 

I still did not solve this problem . Surely , I think we see a little detail about this issue

Link to comment
Share on other sites

  • 2 years later...
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...