require_once JPATH_ADMINISTRATOR . '/components/com_templates/helpers/templates.php';
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
$clientId = $this->item->client_id;
$state = $this->state->get('filter.state');
$templates = array_keys(ModulesHelper::getTemplates($clientId, $state));
$templateGroups = array();
// Add an empty value to be able to deselect a module position
$option = ModulesHelper::createOption();
$templateGroups[''] = ModulesHelper::createOptionGroup('', array($option));
// Add positions from templates
$isTemplatePosition = false;
foreach ($templates as $template) {
    $options = array();
    $positions = TemplatesHelper::getPositions($clientId, $template);
    foreach ($positions as $position) {
        $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']';
        $options[] = ModulesHelper::createOption($position, $text);
        if (!$isTemplatePosition && $this->item->position === $position) {
            $isTemplatePosition = true;
        }
    }
    $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options);
}
// Add custom position to options
$customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION');
$editPositions = true;
$customPositions = ModulesHelper::getPositions($clientId, $editPositions);
$templateGroups[$customGroupText] = ModulesHelper::createOptionGroup($customGroupText, $customPositions);
// Build field
$attr = array('id' => 'jform_position', 'list.select' => $this->item->position, 'list.attr' => 'class="chzn-custom-value input-xlarge" ' . 'data-custom_group_text="' . $customGroupText . '" ' . 'data-no_results_text="' . JText::_('COM_MODULES_ADD_CUSTOM_POSITION') . '" ' . 'data-placeholder="' . JText::_('COM_MODULES_TYPE_OR_SELECT_POSITION') . '" ');
echo JHtml::_('select.groupedlist', $templateGroups, 'jform[position]', $attr);
示例#2
0
 /**
  * Display a batch widget for the module position selector.
  *
  * @param   integer  $clientId          The client ID.
  * @param   integer  $state             The state of the module (enabled, unenabled, trashed).
  * @param   string   $selectedPosition  The currently selected position for the module.
  *
  * @return  string   The necessary positions for the widget.
  *
  * @since   2.5
  */
 public static function positions($clientId, $state = 1, $selectedPosition = '')
 {
     require_once JPATH_ADMINISTRATOR . '/components/com_templates/helpers/templates.php';
     $templates = array_keys(ModulesHelper::getTemplates($clientId, $state));
     $templateGroups = array();
     // Add an empty value to be able to deselect a module position
     $option = ModulesHelper::createOption();
     $templateGroups[''] = ModulesHelper::createOptionGroup('', array($option));
     // Add positions from templates
     $isTemplatePosition = false;
     foreach ($templates as $template) {
         $options = array();
         $positions = TemplatesHelper::getPositions($clientId, $template);
         if (is_array($positions)) {
             foreach ($positions as $position) {
                 $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']';
                 $options[] = ModulesHelper::createOption($position, $text);
                 if (!$isTemplatePosition && $selectedPosition === $position) {
                     $isTemplatePosition = true;
                 }
             }
         }
         $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options);
     }
     // Add custom position to options
     $customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION');
     $editPositions = true;
     $customPositions = ModulesHelper::getPositions($clientId, $editPositions);
     $templateGroups[$customGroupText] = ModulesHelper::createOptionGroup($customGroupText, $customPositions);
     return $templateGroups;
 }
JHtml::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_modules/helpers/html');
$clientId = $this->item->client_id;
$appliedPosition = JRequest::getVar('position', '');
$templates = array_keys(ModulesHelper::getTemplates($clientId));
$templateGroups = array();
// Add an empty value to be able to deselect a module position
$option = ModulesHelper::createOption();
$templateGroups[''] = ModulesHelper::createOptionGroup('', array($option));
// Add positions from templates
$isTemplatePosition = false;
foreach ($templates as $template) {
    $options = array();
    $positions = TemplatesHelper::getPositions($clientId, $template);
    foreach ($positions as $position) {
        $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']';
        $options[] = ModulesHelper::createOption($position, $text);
        if (!$isTemplatePosition && $this->item->position === $position) {
            $isTemplatePosition = true;
        }
    }
    $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options);
}
// Add custom position to options
$customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION');
if (!empty($this->item->position) && !$isTemplatePosition) {
    $option = ModulesHelper::createOption($this->item->position);
    $templateGroups[$customGroupText] = ModulesHelper::createOptionGroup($customGroupText, array($option));
}
// Build field
$attr = array('id' => 'jform_position', 'list.select' => $appliedPosition);
echo JHtml::_('select.groupedlist', $templateGroups, 'jform[position]', $attr);