function getPositions()
 {
     $path = JPATH_SITE;
     $lang = JFactory::getLanguage();
     $clientId = 0;
     $state = 1;
     $templates = array_keys(CANVASAdminLayout::getTemplates($clientId, $state));
     $templateGroups = array();
     // Add positions from templates
     foreach ($templates as $template) {
         $options = array();
         $positions = CANVASAdminLayout::getTplPositions($clientId, $template);
         if (is_array($positions)) {
             foreach ($positions as $position) {
                 $text = CANVASAdminLayout::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']';
                 $options[] = CANVASAdminLayout::createOption($position, $text);
             }
         }
         $templateGroups[$template] = CANVASAdminLayout::createOptionGroup(ucfirst($template), $options);
     }
     // Add custom position to options
     $customGroupText = JText::_('CANVAS_LAYOUT_CUSTOM_POSITION');
     $customPositions = CANVASAdminLayout::getDbPositions($clientId);
     $templateGroups[$customGroupText] = CANVASAdminLayout::createOptionGroup($customGroupText, $customPositions);
     $multiple = $this->toBoolean((string) $this->element['multiple']);
     $disabled = $this->toBoolean((string) $this->element['disabled']);
     return JHtml::_('select.groupedlist', $templateGroups, $this->name, array('list.attr' => ($multiple ? ' multiple="multiple" size="10"' : '') . ($disabled ? 'disabled="disabled"' : '')));
 }