public function getInput($fieldValue = null) { if (!$this->isPublished()) { return ""; } if (JUDirectoryHelper::getListingSubmitType($this->listing_id) == 'submit' && $this->canSubmit() || JUDirectoryHelper::getListingSubmitType($this->listing_id) == 'edit' && $this->canEdit()) { $disabled = false; } else { $disabled = true; } $document = JFactory::getDocument(); $rootCat = JUDirectoryFrontHelperCategory::getRootCategory(); JText::script('COM_JUDIRECTORY_TOTAL_CATS_OVER_MAXIMUM_N_CATS'); JText::script('COM_JUDIRECTORY_CATEGORY_X_ALREADY_EXIST'); $app = JFactory::getApplication(); // getParams by cat_id if possible if (isset($this->listing) && $this->listing->cat_id) { $params = JUDirectoryHelper::getParams($this->listing->cat_id); } else { $params = JUDirectoryHelper::getParams(null, $this->listing_id); } $db = JFactory::getDbo(); $listingId = $this->listing_id; $listingObject = JUDirectoryHelper::getListingById($listingId); $secondaryCatIds = $secondaryCatIdsStr = ""; // Edit listing, but not valid data -> $fieldValue = user selected categories if ($fieldValue && !empty($fieldValue['main'])) { $categoryId = (int) $fieldValue['main']; if ($fieldValue['secondary']) { $secondaryCatIdsStr = $fieldValue['secondary']; $secondaryCatIds = explode(",", $secondaryCatIdsStr); } $query = $db->getQuery(true); $query->select("c.id, c.parent_id"); $query->from("#__judirectory_categories AS c"); $query->select("field_group.id AS fieldgroup_id, field_group.name AS fieldgroup_name"); $query->join("LEFT", "#__judirectory_fields_groups AS field_group ON (field_group.id = c.fieldgroup_id AND field_group.published = 1)"); $query->where("c.id = " . $categoryId); $db->setQuery($query); $mainCategory = $db->loadObject(); } elseif ($listingId) { $categories = $this->value; foreach ($categories as $category) { if ($category->main == 1) { $mainCategory = $category; $query = $db->getQuery(true); $query->select("field_group.id, field_group.name"); $query->from("#__judirectory_fields_groups AS field_group"); $query->join("", "#__judirectory_categories AS c on c.fieldgroup_id = field_group.id"); $query->where("c.id = " . $mainCategory->id); $query->where("field_group.published = 1"); $db->setQuery($query); $fieldGroup = $db->loadObject(); if (is_object($fieldGroup)) { $mainCategory->fieldgroup_name = $fieldGroup->name; $mainCategory->fieldgroup_id = $fieldGroup->id; } else { $mainCategory->fieldgroup_name = null; $mainCategory->fieldgroup_id = null; } } else { $secondaryCatIds[] = $category->id; } } if ($secondaryCatIds) { $secondaryCatIdsStr = implode(",", $secondaryCatIds); } } elseif ($app->input->getInt('cat_id')) { $categoryId = $app->input->getInt('cat_id'); $mainCategory = JUDirectoryHelper::getCategoryById($categoryId); $query = "SELECT id, name FROM #__judirectory_fields_groups WHERE id= " . $mainCategory->fieldgroup_id . " AND published = 1"; $db->setQuery($query); $fieldGroup = $db->loadObject(); if (is_object($fieldGroup)) { $mainCategory->fieldgroup_name = $fieldGroup->name; $mainCategory->fieldgroup_id = $fieldGroup->id; } else { $mainCategory->fieldgroup_name = null; $mainCategory->fieldgroup_id = null; } } else { $mainCategory = new stdClass(); $mainCategory->id = ''; $mainCategory->parent_id = $rootCat->id; $mainCategory->fieldgroup_name = null; $mainCategory->fieldgroup_id = null; } $document->addStyleSheet(JUri::root() . "components/com_judirectory/fields/" . $this->folder . "/core_categories.css"); if (!$disabled) { $document->addScript(JUri::root() . "components/com_judirectory/fields/" . $this->folder . "/core_categories.js"); if (JUDirectoryHelper::isJoomla3x()) { $jsIsJoomla3x = 1; } else { $jsIsJoomla3x = 0; } $script = "jQuery(document).ready(function(\$){\n\t\t\t\t\t\t\t\t\$('.category_selection').listingChangeCategory({\n\t\t\t\t\t\t\t\t\tlisting_id: '" . $listingId . "',\n\t\t\t\t\t\t\t\t\tis_joomla_3x: '" . $jsIsJoomla3x . "',\n\t\t\t\t\t\t\t\t\tmain_cat_id: '" . $mainCategory->id . "',\n\t\t\t\t\t\t\t\t\tfieldgroup_id: '" . $mainCategory->fieldgroup_id . "',\n\t\t\t\t\t\t\t\t\tfieldgroup_name : '" . $mainCategory->fieldgroup_name . "',\n\t\t\t\t\t\t\t\t\tmax_cats : " . (int) $params->get("max_cats_per_listing", 0) . "\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});"; $document->addScriptDeclaration($script); } $this->addAttribute("class", "categories", "input"); $this->addAttribute("class", $this->getInputClass(), "input"); $this->setVariable('mainCategory', $mainCategory); $this->setVariable('secondaryCatIds', $secondaryCatIds); $this->setVariable('listingObject', $listingObject); $this->setVariable('disabled', $disabled); $this->setVariable('secondaryCatIdsStr', $secondaryCatIdsStr); $this->setVariable('rootCat', $rootCat); $this->setVariable('params', $params); return $this->fetch('input.php', __CLASS__); }