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"' : ''))); }