public function display($tpl = null) { $document = JFactory::getDocument(); $layoutName = $this->getLayout(); if (!$layoutName) { $layoutName = JRequest::getWord('layout', 'default'); } $this->assignRef('layoutName', $layoutName); $format = JRequest::getWord('format'); JLoader::register('VirtueMartCart', JPATH_VM_SITE . '/helpers/cart.php'); $cart = VirtueMartCart::getCart(); $this->assignRef('cart', $cart); $this->prepareContinueLink(); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); }
public function display($tpl = null) { $document = JFactory::getDocument(); $layoutName = $this->getLayout(); if (!$layoutName) { $layoutName = vRequest::getCmd('layout', 'default'); } $this->assignRef('layoutName', $layoutName); $format = vRequest::getCmd('format'); if (!class_exists('VirtueMartCart')) { require VMPATH_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); $this->assignRef('cart', $cart); $this->prepareContinueLink(); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); }
public function display($tpl = null) { $document = JFactory::getDocument(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); /* Set the helper path */ $this->addHelperPath(JPATH_VM_ADMINISTRATOR . DS . 'helpers'); //Load helpers $this->loadHelper('image'); $vendorId = JRequest::getInt('vendorid', 1); $vendorModel = VmModel::getModel('vendor'); $vendorModel->setId(1); $vendor = $vendorModel->getVendor(); //$this->assignRef('vendor',$vendor); $categoryModel = VmModel::getModel('category'); $categoryId = JRequest::getInt('virtuemart_category_id', 0); $this->assignRef('categoryModel', $categoryModel); // $categoryId = 0; //The idea is that you can choose a parent catgory, this value should come from the joomla view parameter stuff $category = $categoryModel->getCategory($categoryId); //if($category->children) $categoryModel->addImages($category->children); $cache = JFactory::getCache('com_virtuemart', 'callback'); $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId); //$category->children = $categoryModel->getChildCategoryList($vendorId, $categoryId); $categoryModel->addImages($category->children, 1); if (VmConfig::get('enable_content_plugin', 0)) { // add content plugin // $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->category_description; if (!class_exists('JParameter')) { require JPATH_LIBRARIES . DS . 'joomla' . DS . 'html' . DS . 'parameter.php'; } $params = new JParameter(''); if (JVM_VERSION === 2) { $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.category', &$category, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $product->text $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayTitle = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->beforeDisplayContent = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayContent = trim(implode("\n", $res)); } else { $results = $dispatcher->trigger('onPrepareContent', array(&$category, &$params, 0)); } $category->category_description = $category->text; } //Add the category name to the pathway // $pathway->addItem(strip_tags($category->category_name)); //Todo what should be shown up? // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $c->virtuemart_category_id)); } } else { if (!empty($category->category_name)) { $pathway->addItem(strip_tags($category->category_name, JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $category->virtuemart_category_id))); } else { $pathway->addItem(strip_tags(JText::_('COM_VIRTUEMART_CATEGORY_TOP_LEVEL'), JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $category->virtuemart_category_id))); } } $this->assignRef('category', $category); /* Set the titles */ if ($category->category_name) { $document->setTitle($category->category_name); } else { $menus = JFactory::getApplication()->getMenu(); $menu = $menus->getActive(); if (!empty($menu)) { if (!class_exists('JParameter')) { require JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'html' . DS . 'parameter.php'; } $menu_params = new JParameter($menu->params); } if (empty($menu) || !$menu_params->get('page_title')) { $document->setTitle($vendor->vendor_store_name); $category->category_name = $vendor->vendor_store_name; } else { $category->category_name = $menu_params->get('page_title'); } } //Todo think about which metatags should be shown in the categories view if ($category->metadesc) { $document->setDescription($category->metadesc); } else { $document->setDescription($category->category_description); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } //if ($mainframe->getCfg('MetaTitle') == '1') { $document->setMetaData('title', strip_tags($category->category_name)); //Maybe better category_name //} if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if ($category->customtitle) { $title = strip_tags($category->customtitle); } else { $title = strip_tags($category->category_name); } if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); parent::display($tpl); }
/** * Displays the view, collects needed data for the different layouts * * @author Max Milbers */ function display($tpl = null) { $this->useSSL = tsmConfig::get('useSSL', 0); $this->useXHTML = false; tsmConfig::loadJLang('com_virtuemart_shoppers', TRUE); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $layoutName = $this->getLayout(); if ($layoutName == 'login') { parent::display($tpl); return; } if (empty($layoutName) or $layoutName == 'default') { $layoutName = vRequest::getCmd('layout', 'edit'); if ($layoutName == 'default') { $layoutName = 'edit'; } $this->setLayout($layoutName); } $this->_model = tmsModel::getModel('user'); //$this->_model->setCurrent(); //without this, the administrator can edit users in the FE, permission is handled in the usermodel, but maybe unsecure? $editor = JFactory::getEditor(); $virtuemart_user_id = vRequest::getInt('virtuemart_user_id', false); if ($virtuemart_user_id and is_array($virtuemart_user_id)) { $virtuemart_user_id = $virtuemart_user_id[0]; } $this->_model->setId($virtuemart_user_id); $this->userDetails = $this->_model->getUser(); $this->address_type = vRequest::getCmd('addrtype', 'BT'); $new = false; if (vRequest::getInt('new', '0') == 1) { $new = true; } if ($new) { $virtuemart_userinfo_id = 0; } else { $virtuemart_userinfo_id = vRequest::getString('virtuemart_userinfo_id', 0); } $userFields = null; if (!class_exists('VirtueMartCart')) { require VMPATH_SITE . DS . 'helpers' . DS . 'cart.php'; } $this->cart = VirtueMartCart::getCart(); $task = vRequest::getCmd('task', ''); if (($this->cart->_fromCart or $this->cart->getInCheckOut()) && empty($virtuemart_userinfo_id)) { //New Address is filled here with the data of the cart (we are in the cart) $fieldtype = $this->address_type . 'address'; $this->cart->prepareAddressFieldsInCart(); $userFields = $this->cart->{$fieldtype}; } else { if ($task == 'addST') { $this->address_type = 'ST'; } if (!$new and empty($virtuemart_userinfo_id)) { $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id(); vmdebug('Try to get $virtuemart_userinfo_id by type BT', $virtuemart_userinfo_id); } $userFields = $this->_model->getUserInfoInUserFields($layoutName, $this->address_type, $virtuemart_userinfo_id, false); if (!$new && empty($userFields[$virtuemart_userinfo_id])) { $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id(); vmdebug('$userFields by getBTuserinfo_id', $userFields); } $userFields = $userFields[$virtuemart_userinfo_id]; } $this->virtuemart_userinfo_id = $virtuemart_userinfo_id; $this->assignRef('userFields', $userFields); if ($layoutName == 'edit') { if ($this->_model->getId() == 0 && $this->_cuid == 0) { $button_lbl = tsmText::_('COM_VIRTUEMART_REGISTER'); } else { $button_lbl = tsmText::_('COM_VIRTUEMART_SAVE'); } $this->assignRef('button_lbl', $button_lbl); $this->lUser(); $this->shopper($userFields); $this->payment(); $this->lOrderlist(); $this->lVendor(); } $stTask = 'addST'; if ($task == 'editaddresscart') { $stTask = 'editaddresscart'; } $this->_lists['shipTo'] = ShopFunctionsF::generateStAddressList($this, $this->_model, $stTask); $this->assignRef('lists', $this->_lists); $this->assignRef('editor', $editor); if ($layoutName == 'mailregisteruser') { $vendorModel = tmsModel::getModel('vendor'); // $vendorModel->setId($this->_userDetails->virtuemart_vendor_id); $vendor = $vendorModel->getVendor(); $this->assignRef('vendor', $vendor); } if ($layoutName == 'editaddress') { $layoutName = 'edit_address'; $this->setLayout($layoutName); } if (!$this->userDetails->JUser->get('id')) { $corefield_title = tsmText::_('COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT'); } else { $corefield_title = tsmText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); } if ($this->cart->_fromCart or $this->cart->getInCheckOut()) { $pathway->addItem(tsmText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } else { //$pathway->addItem(vmText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'), JRoute::_('index.php?option=com_virtuemart&view=user&&layout=edit')); } $pathway_text = tsmText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); if (!$this->userDetails->JUser->get('id')) { if ($this->cart->_fromCart or $this->cart->getInCheckOut()) { if ($this->address_type == 'BT') { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); } else { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } else { if ($this->address_type == 'BT') { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); $title = tsmText::_('COM_VIRTUEMART_REGISTER'); } else { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } } else { if ($this->address_type == 'BT') { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL'); } else { $vmfield_title = tsmText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } vmJsApi::vmValidator($this->userDetails->JUser->guest); $this->add_product_link = ""; $this->manage_link = ""; if (ShopFunctionsF::isFEmanager()) { $mlnk = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&manage=1'; $this->manage_link = $this->linkIcon($mlnk, 'JACTION_MANAGE', 'new', false, false, true, true); } if (ShopFunctionsF::isFEmanager('product.edit')) { $aplnk = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&view=product&view=product&task=edit&virtuemart_product_id=0&manage=1'; $this->add_product_link = $this->linkIcon($aplnk, 'COM_VIRTUEMART_PRODUCT_ADD_PRODUCT', 'new', false, false, true, true); } $document = JFactory::getDocument(); $document->setTitle($pathway_text); $pathway->additem($pathway_text); $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); $this->assignRef('page_title', $pathway_text); $this->assignRef('corefield_title', $corefield_title); $this->assignRef('vmfield_title', $vmfield_title); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); }
/** * Displays the view, collects needed data for the different layouts * * Okey I try now a completly new idea. * We make a function for every tab and the display is getting the right tabs by an own function * putting that in an array and after that we call the preparedataforlayoutBlub * * @author Oscar van Eijk * @author Max Milbers */ function display($tpl = null) { $useSSL = VmConfig::get('useSSL', 0); $useXHTML = true; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $layoutName = $this->getLayout(); // vmdebug('layout by view '.$layoutName); if (empty($layoutName) or $layoutName == 'default') { $layoutName = JRequest::getWord('layout', 'edit'); if ($layoutName == 'default') { $layoutName = 'edit'; } $this->setLayout($layoutName); } if (empty($this->fTask)) { $ftask = 'saveUser'; $this->assignRef('fTask', $ftask); } if (!class_exists('ShopFunctions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'; } // vmdebug('my layoutname',$layoutName); if ($layoutName == 'login') { parent::display($tpl); return; } if (!class_exists('VirtuemartModelUser')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'; } $this->_model = new VirtuemartModelUser(); // $this->_model->setCurrent(); //without this, the administrator can edit users in the FE, permission is handled in the usermodel, but maybe unsecure? $editor = JFactory::getEditor(); //the cuid is the id of the current user $this->_currentUser = JFactory::getUser(); $this->_cuid = $this->_lists['current_id'] = $this->_currentUser->get('id'); $this->assignRef('userId', $this->_cuid); $this->_userDetails = $this->_model->getUser(); $this->assignRef('userDetails', $this->_userDetails); $address_type = JRequest::getWord('addrtype', 'BT'); $this->assignRef('address_type', $address_type); $new = false; if (JRequest::getInt('new', '0') == 1) { $new = true; } if ($new) { $virtuemart_userinfo_id = 0; } else { $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0', ''); } $this->assignRef('virtuemart_userinfo_id', $virtuemart_userinfo_id); $userFields = null; if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) && empty($virtuemart_userinfo_id)) { //New Address is filled here with the data of the cart (we are in the cart) if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); $fieldtype = $address_type . 'address'; $cart->prepareAddressDataInCart($address_type, $new); $userFields = $cart->{$fieldtype}; $task = JRequest::getWord('task', ''); } else { $userFields = $this->_model->getUserInfoInUserFields($layoutName, $address_type, $virtuemart_userinfo_id); if (!$new && empty($userFields[$virtuemart_userinfo_id])) { $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id(); // vmdebug('Try to get $virtuemart_userinfo_id by type BT', $virtuemart_userinfo_id); } $userFields = $userFields[$virtuemart_userinfo_id]; $task = 'editaddressST'; } //print_r( $userFields); $this->assignRef('userFields', $userFields); if ($layoutName == 'edit') { if ($this->_model->getId() == 0 && $this->_cuid == 0) { $button_lbl = JText::_('COM_VIRTUEMART_REGISTER'); } else { $button_lbl = JText::_('COM_VIRTUEMART_SAVE'); } $this->assignRef('button_lbl', $button_lbl); $this->lUser(); $this->shopper($userFields); $this->payment(); $this->lOrderlist(); $this->lVendor(); } $this->_lists['shipTo'] = ShopFunctions::generateStAddressList($this, $this->_model, $task); if ($this->_openTab < 0) { $_paneOffset = array(); } else { if (__VM_USER_USE_SLIDERS) { $_paneOffset = array('startOffset' => $this->_openTab, 'startTransition' => 1, 'allowAllClose' => true); } else { $_paneOffset = array('startOffset' => $this->_openTab); } } // Implement the Joomla panels. If we need a ShipTo tab, make it the active one. // In tmpl/edit.php, this is the 4th tab (0-based, so set to 3 above) jimport('joomla.html.pane'); $pane = JPane::getInstance(__VM_USER_USE_SLIDERS ? 'Sliders' : 'Tabs', $_paneOffset); $this->assignRef('lists', $this->_lists); $this->assignRef('editor', $editor); $this->assignRef('pane', $pane); if ($layoutName == 'mailregisteruser') { $vendorModel = VmModel::getModel('vendor'); // $vendorModel->setId($this->_userDetails->virtuemart_vendor_id); $vendor = $vendorModel->getVendor(); $this->assignRef('vendor', $vendor); } if ($layoutName == 'editaddress') { $layoutName = 'edit_address'; $this->setLayout($layoutName); } if (!$this->userDetails->JUser->get('id')) { $corefield_title = JText::_('COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT'); } else { $corefield_title = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); } if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } else { //$pathway->addItem(JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'), JRoute::_('index.php?option=com_virtuemart&view=user&&layout=edit')); } $pathway_text = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); if (!$this->userDetails->JUser->get('id')) { if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); $title = JText::_('COM_VIRTUEMART_REGISTER'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } $add_product_link = ""; if (!class_exists('Permissions')) { require JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'permissions.php'; } if (!Permissions::getInstance()->isSuperVendor() or Vmconfig::get('multix', 'none') !== 'none') { $add_product_link = JRoute::_('/index.php?option=com_virtuemart&tmpl=component&view=product&view=product&task=edit&virtuemart_product_id=0'); $add_product_link = $this->linkIcon($add_product_link, 'COM_VIRTUEMART_PRODUCT_ADD_PRODUCT', 'new', false, false, true, true); } $this->assignRef('add_product_link', $add_product_link); $document = JFactory::getDocument(); $document->setTitle($pathway_text); $pathway->additem($pathway_text); $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); $this->assignRef('page_title', $pathway_text); $this->assignRef('corefield_title', $corefield_title); $this->assignRef('vmfield_title', $vmfield_title); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); parent::display($tpl); }
/** * Collect all data to show on the template * * @author RolandD, Max Milbers */ function display($tpl = null) { //TODO get plugins running // $dispatcher = JDispatcher::getInstance(); // $limitstart = JRequest::getVar('limitstart', 0, '', 'int'); VmConfig::loadJLang('com_virtuemart', true); $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); $document = JFactory::getDocument(); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $task = JRequest::getCmd('task'); if (!class_exists('VmImage')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'; } // Load the product //$product = $this->get('product'); //Why it is sensefull to use this construction? Imho it makes it just harder $product_model = VmModel::getModel('product'); $this->assignRef('product_model', $product_model); $virtuemart_product_idArray = JRequest::getVar('virtuemart_product_id', 0); if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) { $virtuemart_product_id = (int) $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = (int) $virtuemart_product_idArray; } $quantityArray = JRequest::getVar('quantity', array()); //is sanitized then JArrayHelper::toInteger($quantityArray); $quantity = 1; if (!empty($quantityArray[0])) { $quantity = $quantityArray[0]; } $product = $product_model->getProduct($virtuemart_product_id, TRUE, TRUE, TRUE, $quantity); if (!class_exists('shopFunctionsF')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'; } $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (empty($product->slug)) { //Todo this should be redesigned to fit better for SEO $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND')); $categoryLink = ''; if (!$last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id) { $categoryLink = '&virtuemart_category_id=' . $last_category_id; } if (VmConfig::get('handle_404', 1)) { $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR, '404', 'Not found'); } return; } if (!empty($product->customfields)) { foreach ($product->customfields as $k => $custom) { if (!empty($custom->layout_pos)) { $product->customfieldsSorted[$custom->layout_pos][] = $custom; unset($product->customfields[$k]); } } $product->customfieldsSorted['normal'] = $product->customfields; unset($product->customfields); } $product->event = new stdClass(); $product->event->afterDisplayTitle = ''; $product->event->beforeDisplayContent = ''; $product->event->afterDisplayContent = ''; if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($product, 'productdetails', 'product_desc'); } $product_model->addImages($product); $this->assignRef('product', $product); if (isset($product->min_order_level) && (int) $product->min_order_level > 0) { $min_order_level = $product->min_order_level; } else { $min_order_level = 1; } $this->assignRef('min_order_level', $min_order_level); if (isset($product->step_order_level) && (int) $product->step_order_level > 0) { $step_order_level = $product->step_order_level; } else { $step_order_level = 1; } $this->assignRef('step_order_level', $step_order_level); // Load the neighbours if (VmConfig::get('product_navigation', 1)) { $product->neighbours = $product_model->getNeighborProducts($product); } // Load the category $category_model = VmModel::getModel('category'); shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id); if ($category_model) { $category = $category_model->getCategory($product->virtuemart_category_id); $category_model->addImages($category, 1); $this->assignRef('category', $category); //Seems we dont need this anylonger, destroyed the breadcrumb if ($category->parents) { foreach ($category->parents as $c) { if (is_object($c) and isset($c->category_name)) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } else { vmdebug('Error, parent category has no name, breadcrumb maybe broken, category', $c); } } } $category->children = $category_model->getChildCategoryList($product->virtuemart_vendor_id, $product->virtuemart_category_id); $category_model->addImages($category->children, 1); } if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { // Set Canonic link $document->addHeadLink($product->canonical, 'canonical', 'rel', ''); } $pathway->addItem(strip_tags($product->product_name)); // Set the titles // $document->setTitle should be after the additem pathway if ($product->customtitle) { $document->setTitle(strip_tags($product->customtitle)); } else { $document->setTitle(strip_tags(($category->category_name ? $category->category_name . ' : ' : '') . $product->product_name)); } $ratingModel = VmModel::getModel('ratings'); $allowReview = $ratingModel->allowReview($product->virtuemart_product_id); $this->assignRef('allowReview', $allowReview); $showReview = $ratingModel->showReview($product->virtuemart_product_id); $this->assignRef('showReview', $showReview); if ($showReview) { $review = $ratingModel->getReviewByProduct($product->virtuemart_product_id); $this->assignRef('review', $review); $rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id); $this->assignRef('rating_reviews', $rating_reviews); } $showRating = $ratingModel->showRating($product->virtuemart_product_id); $this->assignRef('showRating', $showRating); if ($showRating) { $vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id); $this->assignRef('vote', $vote); $rating = $ratingModel->getRatingByProduct($product->virtuemart_product_id); $this->assignRef('rating', $rating); } $allowRating = $ratingModel->allowRating($product->virtuemart_product_id); $this->assignRef('allowRating', $allowRating); // Check for editing access // @todo build edit page if (!class_exists('Permissions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'; } //if (Permissions::getInstance()->check("admin,storeadmin")) { $perm = Permissions::getInstance(); $admin = $perm->check("admin"); if (!$admin) { vmdebug('No admin'); } $storeadmin = $perm->check("admin,storeadmin"); if (!$storeadmin) { vmdebug('No $storeadmin'); } $superVendor = $perm->isSuperVendor(); if (!$superVendor) { vmdebug('No $superVendor'); } if ($admin or $perm->isSuperVendor() == $product->virtuemart_vendor_id and $storeadmin) { $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id; $edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false); } else { $edit_link = ""; } $this->assignRef('edit_link', $edit_link); // todo: atm same form for "call for price" and "ask a question". Title of the form should be different $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component', FALSE); $this->assignRef('askquestion_url', $askquestion_url); // Load the user details $user = JFactory::getUser(); $this->assignRef('user', $user); // More reviews link $uri = JURI::getInstance(); $uri->setVar('showall', 1); $uristring = vmURI::getCleanUrl(); $this->assignRef('more_reviews', $uristring); if ($product->metadesc) { $document->setDescription($product->metadesc); } if ($product->metakey) { $document->setMetaData('keywords', $product->metakey); } if ($product->metarobot) { $document->setMetaData('robots', $product->metarobot); } if ($mainframe->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $product->product_name); //Maybe better product_name } if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $product->metaauthor); } $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); $productDisplayShipments = array(); $productDisplayPayments = array(); if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments)); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments)); $this->assignRef('productDisplayPayments', $productDisplayPayments); $this->assignRef('productDisplayShipments', $productDisplayShipments); if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout); shopFunctionsF::addProductToRecent($virtuemart_product_id); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); if (JRequest::getCmd('layout', 'default') == 'notify') { $this->setLayout('notify'); } //Added by Seyi Awofadeju to catch notify layout parent::display($tpl); }
public function display($tpl = null) { $show_prices = tsmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); if (!class_exists('shopFunctionsF')) { require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'; } $document = JFactory::getDocument(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); if (!class_exists('VmImage')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php'; } // set search and keyword if ($keyword = vRequest::getString('keyword', false)) { //uword('keyword', false, ' ,-,+,.,_')) { $pathway->addItem($keyword); //$title .=' ('.$keyword.')'; } //$search = vRequest::uword('keyword', null); $this->searchcustom = ''; $this->searchCustomValues = ''; //if (!empty($keyword)) { $this->getSearchCustom(); $search = $keyword; /*} else { $keyword =''; $search = NULL; }*/ $this->assignRef('keyword', $keyword); $this->assignRef('search', $search); $menus = $app->getMenu(); $menu = $menus->getActive(); if (!empty($menu->id)) { ShopFunctionsF::setLastVisitedItemId($menu->id); } else { if ($itemId = vRequest::getInt('Itemid', false)) { ShopFunctionsF::setLastVisitedItemId($itemId); } } $virtuemart_manufacturer_id = vRequest::getInt('virtuemart_manufacturer_id', -1); if ($virtuemart_manufacturer_id === -1 and !empty($menu->query['virtuemart_manufacturer_id'])) { $virtuemart_manufacturer_id = $menu->query['virtuemart_manufacturer_id']; vRequest::setVar('virtuemart_manufacturer_id', $virtuemart_manufacturer_id); } $this->categoryId = vRequest::getInt('virtuemart_category_id', -1); if ($this->categoryId === -1 and !empty($menu->query['virtuemart_category_id'])) { $this->categoryId = $menu->query['virtuemart_category_id']; vRequest::setVar('virtuemart_category_id', $this->categoryId); } else { if ($this->categoryId === -1 and $virtuemart_manufacturer_id === -1) { $this->categoryId = ShopFunctionsF::getLastVisitedCategoryId(); } } $this->setCanonicalLink($tpl, $document, $this->categoryId, $virtuemart_manufacturer_id); if (($this->categoryId === -1 or $this->categoryId === 0) and $virtuemart_manufacturer_id) { $this->categoryId = 0; $catType = 'manufacturer'; $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType); } $categoryModel = tmsModel::getModel('category'); $productModel = tmsModel::getModel('product'); if ($this->categoryId === -1) { $this->categoryId = 0; } $vendorId = 1; $category = $categoryModel->getCategory($this->categoryId); if (!isset($menu->query['showproducts'])) { $menu->query['showproducts'] = 1; } $this->showproducts = vRequest::getInt('showproducts', $menu->query['showproducts']); if (!empty($category)) { $vendorId = $category->virtuemart_vendor_id; if ($this->showproducts) { //if(empty($category->category_layout) or $category->category_layout != 'categories') { // Load the products in the given category $this->products = $productModel->getItemList(); //$products = $productModel->getProductsInCategory($this->categoryId); $productModel->addImages($this->products, tsmConfig::get('prodimg_browse', 1)); } //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers if (!empty($this->categoryId) and $this->categoryId !== -1 and (empty($category->slug) or !$category->published)) { if (empty($category->slug)) { vmInfo(tsmText::_('COM_VIRTUEMART_CAT_NOT_FOUND')); } else { if ($category->virtuemart_id !== 0 and !$category->published) { vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $this->categoryId); } } //Fallback $categoryLink = ''; if ($category->category_parent_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id; } else { $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (!$last_category_id or $this->categoryId == $last_category_id) { $last_category_id = vRequest::getInt('virtuemart_category_id', false); } if ($last_category_id and $this->categoryId != $last_category_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id; } } if (tsmConfig::get('handle_404', 1)) { $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR, '404', 'Not found'); } return; } shopFunctionsF::setLastVisitedCategoryId($this->categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags(tsmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } } $categoryModel->addImages($category, 1); if (!isset($menu->query['showcategory'])) { $menu->query['showcategory'] = 1; } $this->showcategory = vRequest::getInt('showcategory', $menu->query['showcategory']); //$this->showcategory = vRequest::getInt('showcategory',true); if ($this->showcategory) { //if($category->category_layout == 'categories' or ($this->categoryId >0 and $virtuemart_manufacturer_id <1)){ $category->children = $categoryModel->getChildCategoryList($vendorId, $this->categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir); $categoryModel->addImages($category->children, 1); } else { $category->children = false; } if (tsmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description'); } if ($category->metadesc) { $document->setDescription($category->metadesc); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if (empty($category->category_template)) { $category->category_template = tsmConfig::get('categorytemplate'); } if (!empty($menu->query['categorylayout'])) { //if(!empty($menu->query['categorylayout']) and $menu->query['virtuemart_category_id']==$this->categoryId){ $category->category_layout = $menu->query['categorylayout']; } $productsLayout = tsmConfig::get('productsublayout', 'products'); if (empty($productsLayout)) { $productsLayout = 'products'; } $this->productsLayout = empty($menu->query['productsublayout']) ? $productsLayout : $menu->query['productsublayout']; shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); } else { //Backward compatibility if (!isset($category)) { $category = new stdClass(); $category->category_name = ''; $category->category_description = ''; $category->haschildren = false; } } $this->assignRef('category', $category); // Set the titles if (!empty($category->customtitle)) { $title = strip_tags($category->customtitle); } elseif (!empty($category->category_name)) { $title = strip_tags($category->category_name); } else { $title = $this->setTitleByJMenu($app); } $title = tsmText::_($title); if (vRequest::getInt('error')) { $title .= ' ' . tsmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } if (!empty($keyword)) { $title .= ' (' . strip_tags(htmlspecialchars_decode($keyword)) . ')'; } if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0])) { $title .= ' ' . $this->products[0]->mf_name; } $document->setTitle($title); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0]) and isset($category->category_name)) { $category->category_name = $this->products[0]->mf_name; } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } parent::display($tpl); }
public function display($tpl = null) { $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $document = JFactory::getDocument(); $layoutName = $this->getLayout(); if (!$layoutName) { $layoutName = JRequest::getWord('layout', 'default'); } $this->assignRef('layoutName', $layoutName); $format = JRequest::getWord('format'); if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); $this->assignRef('cart', $cart); //Why is this here, when we have view.raw.php if ($format == 'raw') { $cart->prepareCartViewData(); JRequest::setVar('layout', 'mini_cart'); $this->setLayout('mini_cart'); $this->prepareContinueLink(); } /* if($layoutName=='edit_coupon'){ $cart->prepareCartViewData(); $this->lSelectCoupon(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'),JRoute::_('index.php?option=com_virtuemart&view=cart')); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); } else */ if ($layoutName == 'select_shipment') { if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); $this->lSelectShipment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart')); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); } else { if ($layoutName == 'select_payment') { /* Load the cart helper */ // $cartModel = VmModel::getModel('cart'); $this->lSelectPayment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart')); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); } else { if ($layoutName == 'order_done') { $this->lOrderDone(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_THANKYOU')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_THANKYOU')); } else { if ($layoutName == 'default') { $cart->prepareCartViewData(); $cart->prepareAddressRadioSelection(); $this->prepareContinueLink(); $this->lSelectCoupon(); $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $this->assignRef('currencyDisplay', $currencyDisplay); $totalInPaymentCurrency = $this->getTotalInPaymentCurrency(); $checkoutAdvertise = $this->getCheckoutAdvertise(); if ($cart && !VmConfig::get('use_as_catalog', 0)) { $cart->checkout(false); } if ($cart->getDataValidated()) { $pathway->addItem(JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $document->setTitle(JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $text = JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); $checkout_task = 'confirm'; } else { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $text = JText::_('COM_VIRTUEMART_CHECKOUT_TITLE'); $checkout_task = 'checkout'; } $this->assignRef('checkout_task', $checkout_task); $this->checkPaymentMethodsConfigured(); $this->checkShipmentMethodsConfigured(); if ($cart->virtuemart_shipmentmethod_id) { $shippingText = JText::_('COM_VIRTUEMART_CART_CHANGE_SHIPPING'); } else { $shippingText = JText::_('COM_VIRTUEMART_CART_EDIT_SHIPPING'); } $this->assignRef('select_shipment_text', $shippingText); if ($cart->virtuemart_paymentmethod_id) { $paymentText = JText::_('COM_VIRTUEMART_CART_CHANGE_PAYMENT'); } else { $paymentText = JText::_('COM_VIRTUEMART_CART_EDIT_PAYMENT'); } $this->assignRef('select_payment_text', $paymentText); if (!VmConfig::get('use_as_catalog')) { $checkout_link_html = '<a class="vm-button-correct" href="javascript:document.checkoutForm.submit();" ><span>' . $text . '</span></a>'; } else { $checkout_link_html = ''; } $this->assignRef('checkout_link_html', $checkout_link_html); } } } } //dump ($cart,'cart'); $useSSL = VmConfig::get('useSSL', 0); $useXHTML = true; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $this->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency); $this->assignRef('checkoutAdvertise', $checkoutAdvertise); // @max: quicknirty $cart->setCartIntoSession(); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); // vmdebug('my cart ',$cart); parent::display($tpl); }
public function display($tpl = null) { $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $document = JFactory::getDocument(); $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere //vmJsApi::jPrice(); $layoutName = $this->getLayout(); if (!$layoutName) { $layoutName = JRequest::getWord('layout', 'default'); } $this->assignRef('layoutName', $layoutName); $format = vRequest::getCmd('format'); if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); //$cart->getCartPrices(); $this->assignRef('cart', $cart); // this has been moved because of payment cart layout: the cart content is always displayed if (!class_exists('CurrencyDisplay')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php'; } $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $this->assignRef('currencyDisplay', $currencyDisplay); //Why is this here, when we have view.raw.php if ($format == 'raw') { $cart->prepareCartViewData(); JRequest::setVar('layout', 'mini_cart'); $this->setLayout('mini_cart'); $this->prepareContinueLink(); } /* if($layoutName=='edit_coupon'){ $cart->prepareCartViewData(); $this->lSelectCoupon(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'),JRoute::_('index.php?option=com_virtuemart&view=cart')); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTCOUPON')); } else */ if ($layoutName == 'select_shipment') { $cart->prepareCartViewData(); if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); $this->lSelectShipment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); } else { if ($layoutName == 'select_payment') { /* Load the cart helper */ // $cartModel = VmModel::getModel('cart'); $cart->prepareCartViewData(); $this->lSelectPayment(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); } else { if ($layoutName == 'order_done') { VmConfig::loadJLang('com_virtuemart_shoppers', TRUE); $this->lOrderDone(); $pathway->addItem(JText::_('COM_VIRTUEMART_CART_THANKYOU')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_THANKYOU')); } else { VmConfig::loadJLang('com_virtuemart_shoppers', TRUE); $cart->prepareCartViewData(); if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($cart->vendor, 'vendor', 'vendor_terms_of_service'); } $cart->prepareAddressRadioSelection(); $this->prepareContinueLink(); $this->lSelectCoupon(); $totalInPaymentCurrency = $this->getTotalInPaymentCurrency(); $checkoutAdvertise = $this->getCheckoutAdvertise(); if (!$cart->_inCheckOut and !VmConfig::get('use_as_catalog', 0)) { $cart->checkout(false); } if ($cart->getDataValidated()) { if ($this->cart->_inConfirm) { $pathway->addItem(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU')); $document->setTitle(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU')); $text = vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM'); $this->checkout_task = 'cancel'; } else { $pathway->addItem(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $document->setTitle(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $text = vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); $this->checkout_task = 'confirm'; } } else { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $document->setTitle(JText::_('COM_VIRTUEMART_CART_OVERVIEW')); $text = JText::_('COM_VIRTUEMART_CHECKOUT_TITLE'); $this->checkout_task = 'checkout'; } if (VmConfig::get('oncheckout_opc', 1)) { if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $this->lSelectShipment(); $this->lSelectPayment(); } else { $this->checkPaymentMethodsConfigured(); $this->checkShipmentMethodsConfigured(); } if ($cart->virtuemart_shipmentmethod_id) { $shippingText = JText::_('COM_VIRTUEMART_CART_CHANGE_SHIPPING'); } else { $shippingText = JText::_('COM_VIRTUEMART_CART_EDIT_SHIPPING'); } $this->assignRef('select_shipment_text', $shippingText); if ($cart->virtuemart_paymentmethod_id) { $paymentText = JText::_('COM_VIRTUEMART_CART_CHANGE_PAYMENT'); } else { $paymentText = JText::_('COM_VIRTUEMART_CART_EDIT_PAYMENT'); } $this->assignRef('select_payment_text', $paymentText); if (!VmConfig::get('use_as_catalog')) { //$checkout_link_html = '<a name="'.$checkout_task.'" class="vm-button-correct" href="javascript:document.checkoutForm.submit();" ><span>' . $text . '</span></a>'; $checkout_link_html = '<br><button name="' . $this->checkout_task . '" id="checkoutFormSubmit" class="vm-button-correct" ><span>' . $text . '</span></button>'; } else { $checkout_link_html = ''; } $this->assignRef('checkout_link_html', $checkout_link_html); $layoutName = $this->cart->layout; //set order language $lang = JFactory::getLanguage(); $order_language = $lang->getTag(); $this->assignRef('order_language', $order_language); } } } //dump ($cart,'cart'); $useSSL = VmConfig::get('useSSL', 0); $useXHTML = false; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $this->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency); $this->assignRef('checkoutAdvertise', $checkoutAdvertise); // @max: quicknirty $cart->setCartIntoSession(); //$this->setLayout($this->cart->layout); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); //We never want that the cart is indexed $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); if ($this->cart->_inConfirm) { vmInfo('COM_VIRTUEMART_IN_CONFIRM'); } if ($this->cart->layoutPath) { $this->addTemplatePath($this->cart->layoutPath); } parent::display($tpl); }
public function display($tpl = null) { $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $document = JFactory::getDocument(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); if (!class_exists('VmImage')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'image.php'; } $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); // set search and keyword if ($keyword = vmRequest::uword('keyword', false, ' ,-,+,.,_')) { $pathway->addItem($keyword); //$title .=' ('.$keyword.')'; } //$search = VmRequest::uword('keyword', null); $this->searchcustom = ''; $this->searchcustomvalues = ''; if (!empty($keyword)) { $this->searchcustom = $this->getSearchCustom(); $search = $keyword; } else { $keyword = ''; $search = NULL; } $this->assignRef('search', $search); $this->assignRef('keyword', $keyword); $categoryId = JRequest::getInt('virtuemart_category_id', false); $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', false); if ($categoryId === false and $virtuemart_manufacturer_id === false) { $categoryId = ShopFunctionsF::getLastVisitedCategoryId(); $catType = 'category'; $this->setCanonicalLink($tpl, $document, $categoryId, $catType); } else { if ($categoryId === false and $virtuemart_manufacturer_id) { $catType = 'manufacturer'; $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType); } else { $catType = 'category'; $this->setCanonicalLink($tpl, $document, $categoryId, $catType); } } if ($categoryId !== -1) { $vendorId = 1; $category = $categoryModel->getCategory($categoryId); } if (!empty($category)) { if (empty($category->category_layout) or $category->category_layout != 'category') { // Load the products in the given category $ids = $productModel->sortSearchListQuery(TRUE, $categoryId); $perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row; $this->assignRef('perRow', $perRow); $pagination = $productModel->getPagination($perRow); $this->assignRef('vmPagination', $pagination); $products = $productModel->getProducts($ids); //$products = $productModel->getProductsInCategory($categoryId); $productModel->addImages($products, 1); $this->assignRef('products', $products); if ($products) { $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); foreach ($products as $product) { $product->stock = $productModel->getStockIndicator($product); } } $ratingModel = VmModel::getModel('ratings'); $showRating = $ratingModel->showRating(); $this->assignRef('showRating', $showRating); $orderByList = $productModel->getOrderByList($categoryId); $this->assignRef('orderByList', $orderByList); // Add feed links if ($products && VmConfig::get('feed_cat_published', 0) == 1) { $link = '&format=feed&limitstart='; $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs); } if (!class_exists('Permissions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'; } $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); } //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers if (!empty($categoryId) and $categoryId !== -1 and (empty($category->slug) or !$category->published)) { if (empty($category->slug)) { vmInfo(JText::_('COM_VIRTUEMART_CAT_NOT_FOUND')); } else { if ($category->virtuemart_id !== 0 and !$category->published) { vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $categoryId); } } //Fallback $categoryLink = ''; if ($category->category_parent_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id; } else { $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (!$last_category_id or $categoryId == $last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id and $categoryId != $last_category_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id; } } $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE)); return; } shopFunctionsF::setLastVisitedCategoryId($categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } } $categoryModel->addImages($category, 1); $cache = JFactory::getCache('com_virtuemart', 'callback'); $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir); $categoryModel->addImages($category->children, 1); if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description'); } if ($category->metadesc) { $document->setDescription($category->metadesc); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); } else { //Backward compatibility if (!isset($category)) { $category = new stdClass(); $category->category_name = ''; $category->category_description = ''; $category->haschildren = false; } } $this->assignRef('category', $category); // Set the titles if (!empty($category->customtitle)) { $title = strip_tags($category->customtitle); } elseif (!empty($category->category_name)) { $title = strip_tags($category->category_name); } else { $title = $this->setTitleByJMenu($app); } if (JRequest::getInt('error')) { $title .= ' ' . JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } if (!empty($keyword)) { $title .= ' (' . $keyword . ')'; } if ($virtuemart_manufacturer_id and !empty($products[0])) { $title .= ' ' . $products[0]->mf_name; } $document->setTitle($title); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if (JRequest::getInt('virtuemart_manufacturer_id') and !empty($products[0]) and isset($category->category_name)) { $category->category_name = $products[0]->mf_name; } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } parent::display($tpl); }
public function display($tpl = null) { $document = JFactory::getDocument(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); /* Set the helper path */ $this->addHelperPath(JPATH_VM_ADMINISTRATOR . DS . 'helpers'); //Load helpers $this->loadHelper('image'); $vendorId = JRequest::getInt('vendorid', 1); $vendorModel = VmModel::getModel('vendor'); $vendorModel->setId(1); $vendor = $vendorModel->getVendor(); //$this->assignRef('vendor',$vendor); $categoryModel = VmModel::getModel('category'); $categoryId = JRequest::getInt('virtuemart_category_id', 0); $this->assignRef('categoryModel', $categoryModel); // $categoryId = 0; //The idea is that you can choose a parent catgory, this value should come from the joomla view parameter stuff $category = $categoryModel->getCategory($categoryId); //if($category->children) $categoryModel->addImages($category->children); $cache = JFactory::getCache('com_virtuemart', 'callback'); $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId); //$category->children = $categoryModel->getChildCategoryList($vendorId, $categoryId); $categoryModel->addImages($category->children, 1); //Add the category name to the pathway // $pathway->addItem(strip_tags($category->category_name)); //Todo what should be shown up? // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $c->virtuemart_category_id)); } } else { if (!empty($category->category_name)) { $pathway->addItem(strip_tags($category->category_name, JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $category->virtuemart_category_id))); } else { $pathway->addItem(strip_tags(JText::_('COM_VIRTUEMART_CATEGORY_TOP_LEVEL'), JRoute::_('index.php?option=com_virtuemart&view=categories&virtuemart_category_id=' . $category->virtuemart_category_id))); } } $this->assignRef('category', $category); /* Set the titles */ if ($category->category_name) { $document->setTitle($category->category_name); } else { $menus =& JSite::getMenu(); $menu = $menus->getActive(); if (!empty($menu)) { if (!class_exists('JParameter')) { require JPATH_VM_LIBRARIES . DS . 'joomla' . DS . 'html' . DS . 'parameter.php'; } $menu_params = new JParameter($menu->params); } if (empty($menu) || !$menu_params->get('page_title')) { $document->setTitle($vendor->vendor_store_name); $category->category_name = $vendor->vendor_store_name; } else { $category->category_name = $menu_params->get('page_title'); } } //Todo think about which metatags should be shown in the categories view if ($category->metadesc) { $document->setDescription($category->metadesc); } else { $document->setDescription($category->category_description); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } //if ($mainframe->getCfg('MetaTitle') == '1') { $document->setMetaData('title', strip_tags($category->category_name)); //Maybe better category_name //} if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if ($category->customtitle) { $title = strip_tags($category->customtitle); } else { $title = strip_tags($category->category_name); } if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); parent::display($tpl); }
/** * Collect all data to show on the template * * @author RolandD, Max Milbers */ function display($tpl = null) { //TODO get plugins running // $dispatcher = JDispatcher::getInstance(); // $limitstart = JRequest::getVar('limitstart', 0, '', 'int'); $this->show_prices = VmConfig::get('show_prices', 1); if ($this->show_prices == 1) { JLoader::register('calculationHelper', JPATH_VM_ADMINISTRATOR . '/helpers/calculationh.php'); } $document = JFactory::getDocument(); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); $task = JRequest::getCmd('task'); JLoader::register('VmImage', JPATH_VM_ADMINISTRATOR . '/helpers/image.php'); // Load the product //$product = $this->get('product'); //Why it is sensefull to use this construction? Imho it makes it just harder $this->product_model = VmModel::getModel('product'); $virtuemart_product_idArray = JRequest::getVar('virtuemart_product_id', 0); if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) { $virtuemart_product_id = (int) $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = (int) $virtuemart_product_idArray; } $quantityArray = JRequest::getVar('quantity', array()); //is sanitized then JArrayHelper::toInteger($quantityArray); $quantity = 1; if (!empty($quantityArray[0])) { $quantity = $quantityArray[0]; } $onlyPublished = true; // set unpublished product when it's editable by its owner for preview if ($canEdit = ShopFunctions::can('edit', 'product')) { $onlyPublished = false; } $product = $this->product_model->getProduct($virtuemart_product_id, TRUE, TRUE, $onlyPublished, $quantity); if ($product && $canEdit) { JLoader::register('Permissions', JPATH_VM_ADMINISTRATOR . '/helpers/permissions.php'); $vendor = Permissions::getInstance()->isSuperVendor(); if ($vendor > 1 && $product->virtuemart_vendor_id !== $vendor) { $product = null; } elseif (!$product->published) { $app->enqueueMessage(JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_STATUS') . ' : ' . JText::_('COM_VIRTUEMART_UNPUBLISHED'), 'warning'); } } $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (empty($product->slug)) { //Todo this should be redesigned to fit better for SEO $app->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND')); $categoryLink = ''; if (!$last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id) { $categoryLink = '&virtuemart_category_id=' . $last_category_id; } if (VmConfig::get('handle_404', 1)) { $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR, '404', 'Not found'); } return; } if (!empty($product->customfields)) { foreach ($product->customfields as $k => $custom) { if (!empty($custom->layout_pos)) { $product->customfieldsSorted[$custom->layout_pos][] = $custom; unset($product->customfields[$k]); } } $product->customfieldsSorted['normal'] = $product->customfields; unset($product->customfields); } $product->event = new stdClass(); $product->event->afterDisplayTitle = ''; $product->event->beforeDisplayContent = ''; $product->event->afterDisplayContent = ''; if (VmConfig::get('enable_content_plugin', 0)) { // add content plugin // $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $product->text = $product->product_desc; // jimport( 'joomla.html.parameter' ); // $params = new JParameter(''); $params = new JRegistry(); $product->event = new stdClass(); $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.productdetails', &$product, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $product->text $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->afterDisplayTitle = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->beforeDisplayContent = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->afterDisplayContent = trim(implode("\n", $res)); $product->product_desc = $product->text; } $this->product_model->addImages($product); if (isset($product->min_order_level) && (int) $product->min_order_level > 0) { $this->min_order_level = $product->min_order_level; } else { $this->min_order_level = 1; } if (isset($product->step_order_level) && (int) $product->step_order_level > 0) { $this->step_order_level = $product->step_order_level; } else { $this->step_order_level = 1; } // Load the neighbours if (VmConfig::get('product_navigation', 1)) { $product->neighbours = $this->product_model->getNeighborProducts($product); } // Product vendor multiX if ($multix = Vmconfig::get('multix', 'none') === 'admin') { $vendor_model = VmModel::getModel('vendor'); $this->vendor = $vendor_model->getVendor($product->virtuemart_vendor_id); } else { $this->vendor = null; } // echo 'multi'.$multix; // Load the category $category_model = VmModel::getModel('category'); shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id); $catTitle = array(); if ($category_model) { $category = $category_model->getCategory($product->virtuemart_category_id); $category_model->addImages($category, 1); $this->assignRef('category', $category); //Seems we dont need this anylonger, destroyed the breadcrumb if ($category->parents) { foreach ($category->parents as $c) { if (is_object($c) and isset($c->category_name)) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); $catTitle[] = $c->category_name; } else { vmdebug('Error, parent category has no name, breadcrumb maybe broken, category', $c); } } } $vendorId = JRequest::getInt('virtuemart_vendor_id', null); $category->children = $category_model->getChildCategoryList($vendorId, $product->virtuemart_category_id); $category_model->addImages($category->children, 1); } if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { // Set Canonic link $document->addHeadLink($product->canonical, 'canonical', 'rel', ''); } $uri = JURI::getInstance(); //$pathway->addItem(JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), $uri->toString(array('path', 'query', 'fragment'))); $pathway->addItem(strip_tags($product->product_name)); // Set the titles // $document->setTitle should be after the additem pathway if ($product->customtitle) { $document->setTitle(strip_tags($product->customtitle)); } else { $document->setTitle(($catTitle ? implode(" / ", $catTitle) . ' / ' : '') . $product->product_name); } $ratingModel = VmModel::getModel('ratings'); $this->allowReview = $ratingModel->allowReview($product->virtuemart_product_id); $this->showReview = $ratingModel->showReview($product->virtuemart_product_id); if ($this->showReview) { $this->review = $ratingModel->getReviewByProduct($product->virtuemart_product_id); $this->rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id); } $this->showRating = $ratingModel->showRating($product->virtuemart_product_id); if ($this->showRating) { $this->vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id); $this->rating = $ratingModel->getRatingByProduct($product->virtuemart_product_id); } $this->allowRating = $ratingModel->allowRating($product->virtuemart_product_id); // todo: atm same form for "call for price" and "ask a question". Title of the form should be different $this->askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component', FALSE); // Load the user details $this->user = JFactory::getUser(); // More reviews link $uri = JURI::getInstance(); $uri->setVar('showall', 1); $uristring = $uri->toString(); $this->more_reviews = $uristring; if ($product->metadesc) { $document->setDescription($product->metadesc); } if ($product->metakey) { $document->setMetaData('keywords', $product->metakey); } if ($product->metarobot) { $document->setMetaData('robots', $product->metarobot); } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $product->product_name); //Maybe better product_name } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $product->metaauthor); } $this->showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $productDisplayShipments = array(); $productDisplayPayments = array(); JLoader::register('vmPSPlugin', JPATH_VM_PLUGINS . 'vmpsplugin.php'); JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments)); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments)); $this->productDisplayPayments = $productDisplayPayments; $this->productDisplayShipments = $productDisplayShipments; if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } $this->product = $product; shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout); shopFunctionsF::addProductToRecent($virtuemart_product_id); $this->currency = CurrencyDisplay::getInstance(); if (JRequest::getCmd('layout', 'default') == 'notify') { $this->setLayout('notify'); } //Added by Seyi Awofadeju to catch notify layout parent::display($tpl); }
public function display($tpl = null) { $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { JLoader::register('calculationHelper', JPATH_VM_ADMINISTRATOR . '/helpers/calculationh.php'); } $this->assignRef('show_prices', $show_prices); // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); $document = JFactory::getDocument(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); JLoader::register('VmImage', JPATH_VM_ADMINISTRATOR . '/helpers/image.php'); $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); $search = JRequest::getvar('keyword', null); if ($search !== null) { $searchcustom = $this->getSearchCustom(); } $this->assignRef('keyword', $keyword); $this->assignRef('search', $search); $categoryId = JRequest::getInt('virtuemart_category_id', ShopFunctionsF::getLastVisitedCategoryId()); $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', 0); $this->setCanonicalLink($tpl, $document, $categoryId); // $vendorId = JRequest::getInt('virtuemart_vendor_id', 1); $vendorId = JRequest::getInt('virtuemart_vendor_id', null); // Load the products in the given category $products = $productModel->getProductsInCategory($categoryId, $vendorId); $productModel->addImages($products, 1); $this->assignRef('products', $products); if ($products) { $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); foreach ($products as $product) { $product->stock = $productModel->getStockIndicator($product); } } $ratingModel = VmModel::getModel('ratings'); $showRating = $ratingModel->showRating(); $this->assignRef('showRating', $showRating); $orderByList = $productModel->getOrderByList($categoryId); $this->assignRef('orderByList', $orderByList); // Add feed links if ($products && VmConfig::get('feed_cat_published', 0) == 1) { $link = '&format=feed&limitstart='; $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs); } JLoader::register('Permissions', JPATH_VM_ADMINISTRATOR . '/helpers/permissions.php'); $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); //set this after the $categoryId definition $paginationAction = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $categoryId, FALSE); $this->assignRef('paginationAction', $paginationAction); shopFunctionsF::setLastVisitedCategoryId($categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); if ($categoryId !== -1) { $vendorId = JRequest::getInt('virtuemart_vendor_id', 1); $category = $categoryModel->getCategory($categoryId); } $perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row; $this->assignRef('perRow', $perRow); $pagination = $productModel->getPagination($perRow); $this->assignRef('vmPagination', $pagination); if (!empty($category)) { if (!empty($categoryId) and $categoryId !== -1 and (empty($category->slug) or !$category->published)) { if (empty($category->slug)) { vmInfo(JText::_('COM_VIRTUEMART_CAT_NOT_FOUND')); } else { if ($category->virtuemart_id !== 0 and !$category->published) { vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $categoryId); //return false; } } $categoryLink = ''; if ($category->category_parent_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id; } else { $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (!$last_category_id or $categoryId == $last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id and $categoryId != $last_category_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id; } } $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE)); return; } //No redirect here, category id = 0 means show ALL categories! note by Max Milbers /* if(empty($category->virtuemart_vendor_id) && $search == null ) { $app -> enqueueMessage(JText::_('COM_VIRTUEMART_CATEGORY_NOT_FOUND')); $app -> redirect( 'index.php'); }*/ // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } } $categoryModel->addImages($category, 1); $cache = JFactory::getCache('com_virtuemart', 'callback'); $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId); $categoryModel->addImages($category->children, 1); if (VmConfig::get('enable_content_plugin', 0)) { // add content plugin // $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $params = new JRegistry(); $category->event = new stdClass(); $category->catid = $category->virtuemart_category_id; $category->id = null; $category->title = $category->category_name; $category->text = $category->category_description; $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.category', &$category, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $product->text $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayTitle = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->beforeDisplayContent = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayContent = trim(implode("\n", $res)); $category->category_description = $category->text; $category->category_name = $category->title; } if ($category->metadesc) { $document->setDescription($category->metadesc); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); } else { //Backward compatibility if (!isset($category)) { $category = new stdClass(); $category->category_name = ''; $category->category_description = ''; $category->haschildren = false; } } $this->assignRef('category', $category); // Set the titles if (!empty($category->customtitle)) { $title = strip_tags($category->customtitle); } elseif (!empty($category->category_name)) { $title = strip_tags($category->category_name); } else { $title = $this->setTitleByJMenu($app); } if (JRequest::getInt('error')) { $title .= ' ' . JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } if (!empty($keyword)) { $title .= ' (' . $keyword . ')'; } if ($virtuemart_manufacturer_id and !empty($products[0])) { $title .= ' ' . $products[0]->mf_name; } $document->setTitle($title); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if (JRequest::getInt('virtuemart_manufacturer_id') and !empty($products[0]) and isset($category->category_name)) { $category->category_name = $products[0]->mf_name; } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } // set search and keyword if ($keyword = vmRequest::uword('keyword', '0', ' ,-,+,.,_')) { $pathway->addItem($keyword); //$title .=' ('.$keyword.')'; } parent::display($tpl); }
/** * Collect all data to show on the template * * @author RolandD, Max Milbers */ function display($tpl = null) { //TODO get plugins running // $dispatcher = JDispatcher::getInstance(); // $limitstart = JRequest::getVar('limitstart', 0, '', 'int'); $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); $document = JFactory::getDocument(); /* add javascript for price and cart */ vmJsApi::jPrice(); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $task = JRequest::getCmd('task'); /* Set the helper path */ $this->addHelperPath(JPATH_VM_ADMINISTRATOR . DS . 'helpers'); //Load helpers $this->loadHelper('image'); /* Load the product */ // $product = $this->get('product'); //Why it is sensefull to use this construction? Imho it makes it just harder $product_model = VmModel::getModel('product'); $this->assignRef('product_model', $product_model); $virtuemart_product_idArray = JRequest::getInt('virtuemart_product_id', 0); if (is_array($virtuemart_product_idArray)) { $virtuemart_product_id = $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = $virtuemart_product_idArray; } $product = $product_model->getProduct($virtuemart_product_id); // vmSetStartTime('customs'); // for($k=0;$k<count($product->customfields);$k++){ // $custom = $product->customfields[$k]; if (!empty($product->customfields)) { foreach ($product->customfields as $k => $custom) { if (!empty($custom->layout_pos)) { $product->customfieldsSorted[$custom->layout_pos][] = $custom; unset($product->customfields[$k]); } } $product->customfieldsSorted['normal'] = $product->customfields; unset($product->customfields); } // vmTime('Customs','customs'); // vmdebug('my second $product->customfields',$product->customfields); $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (empty($product->slug)) { //Todo this should be redesigned to fit better for SEO $mainframe->enqueueMessage(JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND')); $categoryLink = ''; if (!$last_category_id) { $last_category_id = JRequest::getInt('virtuemart_category_id', false); } if ($last_category_id) { $categoryLink = '&virtuemart_category_id=' . $last_category_id; } $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404')); return; } $product->event = new stdClass(); $product->event->afterDisplayTitle = ''; $product->event->beforeDisplayContent = ''; $product->event->afterDisplayContent = ''; if (VmConfig::get('enable_content_plugin', 0)) { // add content plugin // $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $product->text = $product->product_desc; jimport('joomla.html.parameter'); $params = new JParameter(''); if (JVM_VERSION === 2) { $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.productdetails', &$product, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $product->text $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->afterDisplayTitle = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->beforeDisplayContent = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.productdetails', &$product, &$params, 0)); $product->event->afterDisplayContent = trim(implode("\n", $res)); } else { $results = $dispatcher->trigger('onPrepareContent', array(&$product, &$params, 0)); } $product->product_desc = $product->text; } $product_model->addImages($product); $this->assignRef('product', $product); if (isset($product->min_order_level) && (int) $product->min_order_level > 0) { $min_order_level = $product->min_order_level; } else { $min_order_level = 1; } $this->assignRef('min_order_level', $min_order_level); // Load the neighbours $product->neighbours = $product_model->getNeighborProducts($product); // if(!empty($product->neighbours) && is_array($product->neighbours) && !empty($product->neighbours[0]))$product_model->addImages($product->neighbours); // $product->related = $product_model->getRelatedProducts($virtuemart_product_id); // if(!empty($product->related) && is_array($product->related) && !empty($product->related[0]))$product_model->addImages($product->related); // Load the category $category_model = VmModel::getModel('category'); // Get the category ID if (is_array($product->categories)) { if (in_array($last_category_id, $product->categories)) { $virtuemart_category_id = $last_category_id; } else { $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', 0); } if ($virtuemart_category_id == 0) { if (array_key_exists('0', $product->categories)) { $virtuemart_category_id = $product->categories[0]; } } } else { $virtuemart_category_id = JRequest::getInt('virtuemart_category_id', 0); } $product->virtuemart_category_id = $virtuemart_category_id; shopFunctionsF::setLastVisitedCategoryId($virtuemart_category_id); if ($category_model) { $category = $category_model->getCategory($virtuemart_category_id); $category_model->addImages($category, 1); $this->assignRef('category', $category); if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id)); } } $vendorId = 1; $category->children = $category_model->getChildCategoryList($vendorId, $virtuemart_category_id); $category_model->addImages($category->children, 1); } if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { // Set Canonic link $document->addHeadLink(JRoute::_($product->canonical, true, -1), 'canonical', 'rel', ''); } $uri = JURI::getInstance(); //$pathway->addItem(JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), $uri->toString(array('path', 'query', 'fragment'))); $pathway->addItem(strip_tags($product->product_name)); // Set the titles // $document->setTitle should be after the additem pathway if ($product->customtitle) { $document->setTitle(strip_tags($product->customtitle)); } else { $document->setTitle(strip_tags(($category->category_name ? $category->category_name . ' : ' : '') . $product->product_name)); } $ratingModel = VmModel::getModel('ratings'); $allowReview = $ratingModel->allowReview($product->virtuemart_product_id); $this->assignRef('allowReview', $allowReview); $showReview = $ratingModel->showReview($product->virtuemart_product_id); $this->assignRef('showReview', $showReview); if ($showReview) { $review = $ratingModel->getReviewByProduct($product->virtuemart_product_id); $this->assignRef('review', $review); $rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id); $this->assignRef('rating_reviews', $rating_reviews); } $showRating = $ratingModel->showRating($product->virtuemart_product_id); $this->assignRef('showRating', $showRating); if ($showRating) { $vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id); $this->assignRef('vote', $vote); $rating = $ratingModel->getRatingByProduct($product->virtuemart_product_id); $this->assignRef('rating', $rating); } $allowRating = $ratingModel->allowRating($product->virtuemart_product_id); $this->assignRef('allowRating', $allowRating); // Check for editing access // @todo build edit page if (!class_exists('Permissions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'; } //if (Permissions::getInstance()->check("admin,storeadmin")) { $perm = Permissions::getInstance(); $admin = $perm->check("admin"); if (!$admin) { vmdebug('No admin'); } $storeadmin = $perm->check("admin,storeadmin"); if (!$storeadmin) { vmdebug('No $storeadmin'); } $superVendor = $perm->isSuperVendor(); if (!$superVendor) { vmdebug('No $superVendor'); } if ($admin or $perm->isSuperVendor() == $product->virtuemart_vendor_id and $storeadmin) { $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id; $edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false); } else { $edit_link = ""; } $this->assignRef('edit_link', $edit_link); // todo: atm same form for "call for price" and "ask a question". Title of the form should be different $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id . '&tmpl=component'); $this->assignRef('askquestion_url', $askquestion_url); // Load the user details $user = JFactory::getUser(); $this->assignRef('user', $user); // More reviews link $uri = JURI::getInstance(); $uri->setVar('showall', 1); $uristring = $uri->toString(); $this->assignRef('more_reviews', $uristring); if ($product->metarobot) { $document->setMetaData('robots', $product->metarobot); } if ($mainframe->getCfg('MetaTitle') == '1') { // $document->setMetaData('title', $product->product_name); //Maybe better product_name $document->setMetaData('title', $product->customtitle); //Utilizzato il titolo custom compilato in automatico durante l'import } if ($mainframe->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $product->metaauthor); } if ($product->metadesc) { $document->setDescription($product->metadesc); } if ($product->metakey) { $document->setMetaData('keywords', $product->metakey); } $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); $productDisplayShipments = array(); $productDisplayPayments = array(); if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments)); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments)); $this->assignRef('productDisplayPayments', $productDisplayPayments); $this->assignRef('productDisplayShipments', $productDisplayShipments); if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_layout, $product->layout); shopFunctionsF::addProductToRecent($virtuemart_product_id); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); if (JRequest::getCmd('layout', 'default') == 'notify') { $this->setLayout('notify'); } //Added by Seyi Awofadeju to catch notify layout parent::display($tpl); }
public function display($tpl = null) { $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); $document = JFactory::getDocument(); // add javascript for price and cart vmJsApi::jPrice(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); /* Set the helper path */ $this->addHelperPath(JPATH_VM_ADMINISTRATOR . DS . 'helpers'); //Load helpers $this->loadHelper('image'); $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); $categoryId = JRequest::getInt('virtuemart_category_id', false); $vendorId = 1; $category = $categoryModel->getCategory($categoryId); $categoryModel->addImages($category, 1); $perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row; // $categoryModel->setPerRow($perRow); $this->assignRef('perRow', $perRow); //No redirect here, category id = 0 means show ALL categories! note by Max Milbers /* if(empty($category->virtuemart_vendor_id) && $search == null ) { $app -> enqueueMessage(JText::_('COM_VIRTUEMART_CATEGORY_NOT_FOUND')); $app -> redirect( 'index.php'); }*/ // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags($c->category_name), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id)); } } // static $counter = 0; // static $counter2 = 0; //if($category->children) $categoryModel->addImages($category->children); $categoryModel->addImages($category, 1); $cache = JFactory::getCache('com_virtuemart', 'callback'); $category->children = $cache->call(array('VirtueMartModelCategory', 'getChildCategoryList'), $vendorId, $categoryId); // self::$categoryTree = self::categoryListTreeLoop($selectedCategories, $cid, $level, $disabledFields); // vmTime('end loop categoryListTree '.$counter); $categoryModel->addImages($category->children, 1); if (VmConfig::get('enable_content_plugin', 0)) { // add content plugin // $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->category_description; if (!class_exists('JParameter')) { require JPATH_LIBRARIES . DS . 'joomla' . DS . 'html' . DS . 'parameter.php'; } $params = new JParameter(''); if (JVM_VERSION === 2) { $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.category', &$category, &$params, 0)); // More events for 3rd party content plugins // This do not disturb actual plugins, because we don't modify $product->text $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayTitle = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->beforeDisplayContent = trim(implode("\n", $res)); $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.category', &$category, &$params, 0)); $category->event->afterDisplayContent = trim(implode("\n", $res)); } else { $results = $dispatcher->trigger('onPrepareContent', array(&$category, &$params, 0)); } $category->category_description = $category->text; } $this->assignRef('category', $category); // Set Canonic link if (!empty($tpl)) { $format = $tpl; } else { $format = JRequest::getWord('format', 'html'); } if ($format == 'html') { $document->addHeadLink(JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $categoryId), 'canonical', 'rel', ''); } // Set the titles if ($category->customtitle) { $title = strip_tags($category->customtitle); } elseif ($category->category_name) { $title = strip_tags($category->category_name); } else { $menus = $app->getMenu(); $menu = $menus->getActive(); if ($menu) { $title = $menu->title; } // $title = $this->params->get('page_title', ''); // Check for empty title and add site name if param is set if (empty($title)) { $title = $app->getCfg('sitename'); } elseif ($app->getCfg('sitename_pagetitles', 0) == 1) { $title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title); } elseif ($app->getCfg('sitename_pagetitles', 0) == 2) { $title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename')); } } if (JRequest::getInt('error')) { $title .= ' ' . JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } // set search and keyword if ($keyword = vmRequest::uword('keyword', '', ' ')) { $pathway->addItem($keyword); $title .= ' (' . $keyword . ')'; } $search = JRequest::getvar('keyword', null); if ($search !== null) { $searchcustom = $this->getSearchCustom(); } $this->assignRef('keyword', $keyword); $this->assignRef('search', $search); // Load the products in the given category $products = $productModel->getProductsInCategory($categoryId); $productModel->addImages($products, 1); $this->assignRef('products', $products); foreach ($products as $product) { $product->stock = $productModel->getStockIndicator($product); } $ratingModel = VmModel::getModel('ratings'); $showRating = $ratingModel->showRating(); $this->assignRef('showRating', $showRating); $virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id', 0); if ($virtuemart_manufacturer_id and !empty($products[0])) { $title .= ' ' . $products[0]->mf_name; } $document->setTitle($title); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if (JRequest::getInt('virtuemart_manufacturer_id') and !empty($products[0])) { $category->category_name = $products[0]->mf_name; } $pagination = $productModel->getPagination($perRow); $this->assignRef('vmPagination', $pagination); $orderByList = $productModel->getOrderByList($categoryId); $this->assignRef('orderByList', $orderByList); // $productRelatedManufacturerList = $productModel->getProductRelatedManufacturerList($categoryId); // $this->assignRef('productRelatedManufacturerList', $productRelatedManufacturerList); //$sortOrderButton = $productModel->getsortOrderButton(); //$this->assignRef('sortOrder', $sortOrderButton); if ($category->metadesc) { $document->setDescription($category->metadesc); } if ($category->metakey) { $document->setMetaData('keywords', $category->metakey); } if ($category->metarobot) { $document->setMetaData('robots', $category->metarobot); } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $category->metaauthor); } if ($products) { $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); } if (!class_exists('Permissions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php'; } $showBasePrice = Permissions::getInstance()->check('admin'); //todo add config settings $this->assignRef('showBasePrice', $showBasePrice); //set this after the $categoryId definition $paginationAction = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $categoryId); $this->assignRef('paginationAction', $paginationAction); shopFunctionsF::setLastVisitedCategoryId($categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); parent::display($tpl); }
public function display($tpl = null) { $show_prices = VmConfig::get('show_prices', 1); if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php'; } } $this->assignRef('show_prices', $show_prices); if (!class_exists('shopFunctionsF')) { require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'; } $document = JFactory::getDocument(); $app = JFactory::getApplication(); $pathway = $app->getPathway(); if (!class_exists('VmImage')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php'; } // set search and keyword if ($keyword = vRequest::getString('keyword', false)) { //uword('keyword', false, ' ,-,+,.,_')) { $pathway->addItem($keyword); //$title .=' ('.$keyword.')'; } //$search = vRequest::uword('keyword', null); $this->searchcustom = ''; $this->searchCustomValues = ''; //if (!empty($keyword)) { $this->getSearchCustom(); $search = $keyword; /*} else { $keyword =''; $search = NULL; }*/ $this->assignRef('keyword', $keyword); $this->assignRef('search', $search); $menus = $app->getMenu(); $menu = $menus->getActive(); if (!empty($menu->id)) { ShopFunctionsF::setLastVisitedItemId($menu->id); } else { if ($itemId = vRequest::getInt('Itemid', false)) { ShopFunctionsF::setLastVisitedItemId($itemId); } } $virtuemart_manufacturer_id = vRequest::getInt('virtuemart_manufacturer_id', -1); if ($virtuemart_manufacturer_id === -1 and !empty($menu->query['virtuemart_manufacturer_id'])) { $virtuemart_manufacturer_id = $menu->query['virtuemart_manufacturer_id']; vRequest::setVar('virtuemart_manufacturer_id', $virtuemart_manufacturer_id); } $this->categoryId = vRequest::getInt('virtuemart_category_id', -1); if ($this->categoryId === -1 and !empty($menu->query['virtuemart_category_id'])) { $this->categoryId = $menu->query['virtuemart_category_id']; vRequest::setVar('virtuemart_category_id', $this->categoryId); } else { if ($this->categoryId === -1 and $virtuemart_manufacturer_id === -1) { $this->categoryId = ShopFunctionsF::getLastVisitedCategoryId(); } } $this->setCanonicalLink($tpl, $document, $this->categoryId, $virtuemart_manufacturer_id); if (($this->categoryId === -1 or $this->categoryId === 0) and $virtuemart_manufacturer_id) { $this->categoryId = 0; $catType = 'manufacturer'; $this->setCanonicalLink($tpl, $document, $virtuemart_manufacturer_id, $catType); } $categoryModel = VmModel::getModel('category'); $productModel = VmModel::getModel('product'); if ($this->categoryId === -1) { $this->categoryId = 0; } $vendorId = 1; $category = $categoryModel->getCategory($this->categoryId); if (!isset($menu->query['showproducts'])) { $menu->query['showproducts'] = 1; } $this->showproducts = vRequest::getInt('showproducts', $menu->query['showproducts']); if (!empty($category)) { $vendorId = $category->virtuemart_vendor_id; if ($this->showproducts) { //if(empty($category->category_layout) or $category->category_layout != 'categories') { // Load the products in the given category $ids = $productModel->sortSearchListQuery(TRUE, $this->categoryId); $this->perRow = empty($category->products_per_row) ? VmConfig::get('products_per_row', 3) : $category->products_per_row; $this->vmPagination = $productModel->getPagination($this->perRow); $ratingModel = VmModel::getModel('ratings'); $this->showRating = $ratingModel->showRating(); $productModel->withRating = $this->showRating; $this->orderByList = $productModel->getOrderByList($this->categoryId); $this->products = $productModel->getProducts($ids); //$products = $productModel->getProductsInCategory($this->categoryId); $imgAmount = VmConfig::get('prodimg_browse', 1); $productModel->addImages($this->products, $imgAmount); if ($this->products) { $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); $display_stock = VmConfig::get('display_stock', 1); $showCustoms = VmConfig::get('show_pcustoms', 1); if ($display_stock or $showCustoms) { if (!$showCustoms) { foreach ($this->products as $i => $productItem) { $productItem->stock = $productModel->getStockIndicator($productItem); } } else { shopFunctionsF::sortLoadProductCustomsStockInd($this->products, $productModel); } } // add javascript for price and cart, need even for quantity buttons, so we need it almost anywhere vmJsApi::jPrice(); } // Add feed links if ($this->showproducts and $this->products && VmConfig::get('feed_cat_published', 0) == 1) { $link = '&format=feed&limitstart='; $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss', FALSE), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom', FALSE), 'alternate', 'rel', $attribs); } $user = JFactory::getUser(); $this->showBasePrice = (vmAccess::manager() or vmAccess::isSuperVendor()); } //No redirect here, for category id = 0 means show ALL categories! note by Max Milbers if (!empty($this->categoryId) and $this->categoryId !== -1 and (empty($category->slug) or !$category->published)) { if (empty($category->slug)) { vmInfo(vmText::_('COM_VIRTUEMART_CAT_NOT_FOUND')); } else { if ($category->virtuemart_id !== 0 and !$category->published) { vmInfo('COM_VIRTUEMART_CAT_NOT_PUBL', $category->category_name, $this->categoryId); } } //Fallback $categoryLink = ''; if ($category->category_parent_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $category->category_parent_id; } else { $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); if (!$last_category_id or $this->categoryId == $last_category_id) { $last_category_id = vRequest::getInt('virtuemart_category_id', false); } if ($last_category_id and $this->categoryId != $last_category_id) { $categoryLink = '&view=category&virtuemart_category_id=' . $last_category_id; } } if (VmConfig::get('handle_404', 1)) { $app->redirect(JRoute::_('index.php?option=com_virtuemart' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR, '404', 'Not found'); } return; } shopFunctionsF::setLastVisitedCategoryId($this->categoryId); shopFunctionsF::setLastVisitedManuId($virtuemart_manufacturer_id); // Add the category name to the pathway if ($category->parents) { foreach ($category->parents as $c) { $pathway->addItem(strip_tags(vmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } } $catImgAmount = VmConfig::get('catimg_browse', 1); $categoryModel->addImages($category, $catImgAmount); if (!isset($menu->query['showcategory'])) { $menu->query['showcategory'] = 1; } $this->showcategory = vRequest::getInt('showcategory', $menu->query['showcategory']); //$this->showcategory = vRequest::getInt('showcategory',true); if ($this->showcategory) { //if($category->category_layout == 'categories' or ($this->categoryId >0 and $virtuemart_manufacturer_id <1)){ $category->children = $categoryModel->getChildCategoryList($vendorId, $this->categoryId, $categoryModel->getDefaultOrdering(), $categoryModel->_selectedOrderingDir); $categoryModel->addImages($category->children, $catImgAmount); } else { $category->children = false; } if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($category, 'category', 'category_description'); } $metadesc = ''; $metakey = ''; $metarobot = ''; if (isset($menu->params)) { $metadesc = $menu->params->get('menu-meta_description'); $metakey = $menu->params->get('menu-meta_keywords'); $metarobot = $menu->params->get('robots'); } if ($category->metadesc) { $metadesc = $category->metadesc; } if ($category->metakey) { $metakey = $category->metakey; } if ($category->metarobot) { $metarobot = $category->metarobot; } $document->setDescription($metadesc); $document->setMetaData('keywords', $metakey); $document->setMetaData('robots', $metarobot); if ($app->getCfg('MetaAuthor') == '1' and !empty($category->metaauthor)) { $document->setMetaData('author', $category->metaauthor); } if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } if (!empty($menu->query['categorylayout'])) { //if(!empty($menu->query['categorylayout']) and $menu->query['virtuemart_category_id']==$this->categoryId){ $category->category_layout = $menu->query['categorylayout']; } $productsLayout = VmConfig::get('productsublayout', 'products'); if (empty($productsLayout)) { $productsLayout = 'products'; } $this->productsLayout = empty($menu->query['productsublayout']) ? $productsLayout : $menu->query['productsublayout']; shopFunctionsF::setVmTemplate($this, $category->category_template, 0, $category->category_layout); } else { //Backward compatibility if (!isset($category)) { $category = new stdClass(); $category->category_name = ''; $category->category_description = ''; $category->haschildren = false; } } $this->assignRef('category', $category); // Set the titles if (!empty($category->customtitle)) { $title = strip_tags($category->customtitle); } elseif (!empty($category->category_name)) { $title = strip_tags($category->category_name); } else { $title = $this->setTitleByJMenu($app); } $title = vmText::_($title); if (vRequest::getInt('error')) { $title .= ' ' . vmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); } if (!empty($keyword)) { $title .= ' (' . strip_tags(htmlspecialchars_decode($keyword)) . ')'; } if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0])) { $title .= ' ' . $this->products[0]->mf_name; } $document->setTitle($title); // Override Category name when viewing manufacturers products !IMPORTANT AFTER page title. if ($virtuemart_manufacturer_id > 0 and !empty($this->products[0]) and isset($category->category_name)) { $category->category_name = $this->products[0]->mf_name; } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $title); } parent::display($tpl); }
/** * Collect all data to show on the template * * @author RolandD, Max Milbers */ function display($tpl = null) { $show_prices = VmConfig::get('show_prices', 1); $this->assignRef('show_prices', $show_prices); $document = JFactory::getDocument(); $app = JFactory::getApplication(); $menus = $app->getMenu(); $menu = $menus->getActive(); if (!empty($menu->id)) { ShopFunctionsF::setLastVisitedItemId($menu->id); } else { if ($itemId = vRequest::getInt('Itemid', false)) { ShopFunctionsF::setLastVisitedItemId($itemId); } } $pathway = $app->getPathway(); $task = vRequest::getCmd('task'); if (!class_exists('VmImage')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php'; } // Load the product //$product = $this->get('product'); //Why it is sensefull to use this construction? Imho it makes it just harder $product_model = VmModel::getModel('product'); $this->assignRef('product_model', $product_model); $virtuemart_product_idArray = vRequest::getInt('virtuemart_product_id', 0); if (is_array($virtuemart_product_idArray) and count($virtuemart_product_idArray) > 0) { $virtuemart_product_id = (int) $virtuemart_product_idArray[0]; } else { $virtuemart_product_id = (int) $virtuemart_product_idArray; } $quantityArray = vRequest::getInt('quantity', array()); //is sanitized then $quantity = 1; if (!empty($quantityArray[0])) { $quantity = $quantityArray[0]; } $ratingModel = VmModel::getModel('ratings'); $product_model->withRating = $this->showRating = $ratingModel->showRating($virtuemart_product_id); $product = $product_model->getProduct($virtuemart_product_id, TRUE, TRUE, TRUE, $quantity); if (!class_exists('shopFunctionsF')) { require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'; } $last_category_id = shopFunctionsF::getLastVisitedCategoryId(); $customfieldsModel = VmModel::getModel('Customfields'); if ($product->customfields) { if (!class_exists('vmCustomPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php'; } $customfieldsModel->displayProductCustomfieldFE($product, $product->customfields); } if (empty($product->slug)) { //Todo this should be redesigned to fit better for SEO $app->enqueueMessage(vmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND')); $categoryLink = ''; if (!$last_category_id) { $last_category_id = vRequest::getInt('virtuemart_category_id', false); } if ($last_category_id) { $categoryLink = '&virtuemart_category_id=' . $last_category_id; } if (VmConfig::get('handle_404', 1)) { $app->redirect(JRoute::_('index.php?option=com_virtuemart&view=category' . $categoryLink . '&error=404', FALSE)); } else { JError::raise(E_ERROR, '404', 'Not found'); } return; } $isCustomVariant = false; if (!empty($product->customfields)) { foreach ($product->customfields as $k => $custom) { if ($custom->field_type == 'C' and $custom->virtuemart_product_id != $virtuemart_product_id) { $isCustomVariant = $custom; } if (!empty($custom->layout_pos)) { $product->customfieldsSorted[$custom->layout_pos][] = $custom; } else { $product->customfieldsSorted['normal'][] = $custom; } unset($product->customfields); } } $product->event = new stdClass(); $product->event->afterDisplayTitle = ''; $product->event->beforeDisplayContent = ''; $product->event->afterDisplayContent = ''; if (VmConfig::get('enable_content_plugin', 0)) { shopFunctionsF::triggerContentPlugin($product, 'productdetails', 'product_desc'); } $product_model->addImages($product); if (isset($product->min_order_level) && (int) $product->min_order_level > 0) { $this->min_order_level = $product->min_order_level; } else { $this->min_order_level = 1; } if (isset($product->step_order_level) && (int) $product->step_order_level > 0) { $this->step_order_level = $product->step_order_level; } else { $this->step_order_level = 1; } // Load the neighbours if (VmConfig::get('product_navigation', 1)) { $product->neighbours = $product_model->getNeighborProducts($product); } $this->assignRef('product', $product); if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) { $manModel = VmModel::getModel('manufacturer'); $mans = array(); // Gebe die Hersteller aus foreach ($this->product->virtuemart_manufacturer_id as $manufacturer_id) { $manufacturer = $manModel->getManufacturer($manufacturer_id); $manModel->addImages($manufacturer, 1); $mans[] = $manufacturer; } $this->product->manufacturers = $mans; } // Load the category $category_model = VmModel::getModel('category'); shopFunctionsF::setLastVisitedCategoryId($product->virtuemart_category_id); if ($category_model) { $category = $category_model->getCategory($product->virtuemart_category_id); $category_model->addImages($category, 1); $this->assignRef('category', $category); //Seems we dont need this anylonger, destroyed the breadcrumb if ($category->parents) { foreach ($category->parents as $c) { if (is_object($c) and isset($c->category_name)) { $pathway->addItem(strip_tags(vmText::_($c->category_name)), JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $c->virtuemart_category_id, FALSE)); } else { vmdebug('Error, parent category has no name, breadcrumb maybe broken, category', $c); } } } $category->children = $category_model->getChildCategoryList($product->virtuemart_vendor_id, $product->virtuemart_category_id); $category_model->addImages($category->children, 1); } $pathway->addItem(strip_tags(html_entity_decode($product->product_name, ENT_QUOTES))); if (!empty($tpl)) { $format = $tpl; } else { $format = vRequest::getCmd('format', 'html'); } if ($format == 'html') { // remove joomla canonical before adding it foreach ($document->_links as $k => $array) { if ($array['relation'] == 'canonical') { unset($document->_links[$k]); break; } } // Set Canonic link if ($isCustomVariant !== false and !empty($isCustomVariant->usecanonical) and !empty($product->product_parent_id)) { $parent = $product_model->getProduct($product->product_parent_id); $document->addHeadLink($parent->canonical, 'canonical', 'rel', ''); } else { $document->addHeadLink($product->canonical, 'canonical', 'rel', ''); } } else { if ($format == 'pdf') { defined('K_PATH_IMAGES') or define('K_PATH_IMAGES', VMPATH_ROOT); } } // Set the titles // $document->setTitle should be after the additem pathway if ($product->customtitle) { $document->setTitle(strip_tags(html_entity_decode($product->customtitle, ENT_QUOTES))); } else { $document->setTitle(strip_tags(html_entity_decode(($category->category_name ? vmText::_($category->category_name) . ' : ' : '') . $product->product_name, ENT_QUOTES))); } $this->allowReview = $ratingModel->allowReview($product->virtuemart_product_id); $this->showReview = $ratingModel->showReview($product->virtuemart_product_id); $this->rating_reviews = ''; if ($this->showReview) { $this->review = $ratingModel->getReviewByProduct($product->virtuemart_product_id); $this->rating_reviews = $ratingModel->getReviews($product->virtuemart_product_id); } if ($this->showRating) { $this->vote = $ratingModel->getVoteByProduct($product->virtuemart_product_id); } $this->allowRating = $ratingModel->allowRating($product->virtuemart_product_id); $superVendor = vmAccess::isSuperVendor(); if ($superVendor == 1 or $superVendor == $product->virtuemart_vendor_id or $superVendor) { $edit_link = JURI::root() . 'index.php?option=com_virtuemart&tmpl=component&manage=1&view=product&task=edit&virtuemart_product_id=' . $product->virtuemart_product_id; $this->edit_link = $this->linkIcon($edit_link, 'COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT', 'edit', false, false); } else { $this->edit_link = ""; } // Load the user details $this->user = JFactory::getUser(); // More reviews link $uri = JURI::getInstance(); $uri->setVar('showall', 1); $uristring = vmURI::getCleanUrl(); $this->assignRef('more_reviews', $uristring); if ($product->metadesc) { $document->setDescription(strip_tags(html_entity_decode($product->metadesc, ENT_QUOTES))); } else { $document->setDescription(strip_tags(html_entity_decode($product->product_name, ENT_QUOTES)) . " " . $category->category_name . " " . strip_tags(html_entity_decode($product->product_s_desc, ENT_QUOTES))); } if ($product->metakey) { $document->setMetaData('keywords', $product->metakey); } if ($product->metarobot) { $document->setMetaData('robots', $product->metarobot); } if ($app->getCfg('MetaTitle') == '1') { $document->setMetaData('title', $product->product_name); //Maybe better product_name } if ($app->getCfg('MetaAuthor') == '1') { $document->setMetaData('author', $product->metaauthor); } $user = JFactory::getUser(); $showBasePrice = (vmAccess::manager() or vmAccess::isSuperVendor()); $this->assignRef('showBasePrice', $showBasePrice); $productDisplayShipments = array(); $productDisplayPayments = array(); if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayShipment', array($product, &$productDisplayShipments)); $returnValues = $dispatcher->trigger('plgVmOnProductDisplayPayment', array($product, &$productDisplayPayments)); $this->assignRef('productDisplayPayments', $productDisplayPayments); $this->assignRef('productDisplayShipments', $productDisplayShipments); if (empty($category->category_template)) { $category->category_template = VmConfig::get('categorytemplate'); } shopFunctionsF::setVmTemplate($this, $category->category_template, $product->product_template, $category->category_product_layout, $product->layout); shopFunctionsF::addProductToRecent($virtuemart_product_id); $currency = CurrencyDisplay::getInstance(); $this->assignRef('currency', $currency); if (vRequest::getCmd('layout', 'default') == 'notify') { $this->setLayout('notify'); } //Added by Seyi Awofadeju to catch notify layout VmConfig::loadJLang('com_virtuemart'); vmJsApi::chosenDropDowns(); //This must be loaded after the customfields are rendered (they may need to overwrite the handlers) if (VmConfig::get('jdynupdate', TRUE) or $app->isAdmin()) { vmJsApi::jDynUpdate(); } if ($show_prices == '1') { if (!class_exists('calculationHelper')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'calculationh.php'; } vmJsApi::jPrice(); } parent::display($tpl); }
public function display($tpl = null) { $app = JFactory::getApplication(); $this->prepareContinueLink(); if (VmConfig::get('use_as_catalog', 0)) { vmInfo('This is a catalogue, you cannot access the cart'); $app->redirect($this->continue_link); } $pathway = $app->getPathway(); $document = JFactory::getDocument(); $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); $layoutName = $this->getLayout(); if (!$layoutName) { $layoutName = vRequest::getCmd('layout', 'default'); } $this->assignRef('layoutName', $layoutName); $format = vRequest::getCmd('format'); if (!class_exists('VirtueMartCart')) { require VMPATH_SITE . DS . 'helpers' . DS . 'cart.php'; } $this->cart = VirtueMartCart::getCart(); $this->cart->prepareVendor(); //Why is this here, when we have view.raw.php if ($format == 'raw') { vRequest::setVar('layout', 'mini_cart'); $this->setLayout('mini_cart'); $this->prepareContinueLink(); } if ($layoutName == 'select_shipment') { $this->cart->prepareCartData(); $this->lSelectShipment(); $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); $document->setTitle(vmText::_('COM_VIRTUEMART_CART_SELECTSHIPMENT')); } else { if ($layoutName == 'select_payment') { $this->cart->prepareCartData(); $this->lSelectPayment(); $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); $document->setTitle(vmText::_('COM_VIRTUEMART_CART_SELECTPAYMENT')); } else { if ($layoutName == 'order_done') { VmConfig::loadJLang('com_virtuemart_shoppers', true); $this->lOrderDone(); $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_THANKYOU')); $document->setTitle(vmText::_('COM_VIRTUEMART_CART_THANKYOU')); } else { VmConfig::loadJLang('com_virtuemart_shoppers', true); $this->renderCompleteAddressList(); if (!class_exists('VirtueMartModelUserfields')) { require VMPATH_ADMIN . DS . 'models' . DS . 'userfields.php'; } $userFieldsModel = VmModel::getModel('userfields'); $userFieldsCart = $userFieldsModel->getUserFields('cart', array('captcha' => true, 'delimiters' => true), array('delimiter_userinfo', 'user_is_vendor', 'username', 'password', 'password2', 'agreed', 'address_type')); $this->userFieldsCart = $userFieldsModel->getUserFieldsFilled($userFieldsCart, $this->cart->cartfields); if (!class_exists('CurrencyDisplay')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'currencydisplay.php'; } $currencyDisplay = CurrencyDisplay::getInstance($this->cart->pricesCurrency); $this->assignRef('currencyDisplay', $currencyDisplay); $customfieldsModel = VmModel::getModel('Customfields'); $this->assignRef('customfieldsModel', $customfieldsModel); $this->lSelectCoupon(); $totalInPaymentCurrency = $this->getTotalInPaymentCurrency(); $checkoutAdvertise = $this->getCheckoutAdvertise(); if ($this->cart->getDataValidated()) { if ($this->cart->_inConfirm) { $pathway->addItem(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU')); $document->setTitle(vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM_MNU')); $text = vmText::_('COM_VIRTUEMART_CANCEL_CONFIRM'); $this->checkout_task = 'cancel'; } else { $pathway->addItem(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $document->setTitle(vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU')); $text = vmText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); $this->checkout_task = 'confirm'; } } else { $pathway->addItem(vmText::_('COM_VIRTUEMART_CART_OVERVIEW')); $document->setTitle(vmText::_('COM_VIRTUEMART_CART_OVERVIEW')); $text = vmText::_('COM_VIRTUEMART_CHECKOUT_TITLE'); $this->checkout_task = 'checkout'; } $this->checkout_link_html = '<button type="submit" id="checkoutFormSubmit" name="' . $this->checkout_task . '" value="1" class="vm-button-correct" ><span>' . $text . '</span> </button>'; if (VmConfig::get('oncheckout_opc', 1)) { if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } JPluginHelper::importPlugin('vmshipment'); JPluginHelper::importPlugin('vmpayment'); $this->lSelectShipment(); $this->lSelectPayment(); } else { $this->checkPaymentMethodsConfigured(); $this->checkShipmentMethodsConfigured(); } if ($this->cart->virtuemart_shipmentmethod_id) { $shippingText = vmText::_('COM_VIRTUEMART_CART_CHANGE_SHIPPING'); } else { $shippingText = vmText::_('COM_VIRTUEMART_CART_EDIT_SHIPPING'); } $this->assignRef('select_shipment_text', $shippingText); if ($this->cart->virtuemart_paymentmethod_id) { $paymentText = vmText::_('COM_VIRTUEMART_CART_CHANGE_PAYMENT'); } else { $paymentText = vmText::_('COM_VIRTUEMART_CART_EDIT_PAYMENT'); } $this->assignRef('select_payment_text', $paymentText); $this->cart->prepareAddressFieldsInCart(); $layoutName = $this->cart->layout; //set order language $lang = JFactory::getLanguage(); $order_language = $lang->getTag(); $this->assignRef('order_language', $order_language); } } } $this->useSSL = VmConfig::get('useSSL', 0); $this->useXHTML = false; $this->assignRef('totalInPaymentCurrency', $totalInPaymentCurrency); $this->assignRef('checkoutAdvertise', $checkoutAdvertise); shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); //We never want that the cart is indexed $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); if ($this->cart->_inConfirm) { vmInfo('COM_VIRTUEMART_IN_CONFIRM'); } if ($this->cart->layoutPath) { $this->addTemplatePath($this->cart->layoutPath); } $current = JFactory::getUser(); $this->allowChangeShopper = false; if (VmConfig::get('oncheckout_change_shopper')) { if ($current->authorise('core.admin', 'com_virtuemart') or $current->authorise('vm.user', 'com_virtuemart')) { $this->allowChangeShopper = true; } else { $adminID = JFactory::getSession()->get('vmAdminID', false); if ($adminID) { $adminIdUser = JFactory::getUser($adminID); if ($adminIdUser->authorise('core.admin', 'com_virtuemart') or $adminIdUser->authorise('vm.user', 'com_virtuemart')) { $this->allowChangeShopper = true; } } } } parent::display($tpl); }
/** * Displays the view, collects needed data for the different layouts * * Okey I try now a completly new idea. * We make a function for every tab and the display is getting the right tabs by an own function * putting that in an array and after that we call the preparedataforlayoutBlub * * @author Oscar van Eijk * @author Max Milbers * * Original code from: \components\com_virtuemart\views\user\view.html.php * */ function display($tpl = null) { $useSSL = VmConfig::get('useSSL', 0); $useXHTML = true; $this->assignRef('useSSL', $useSSL); $this->assignRef('useXHTML', $useXHTML); $mainframe = JFactory::getApplication(); $pathway = $mainframe->getPathway(); $layoutName = $this->getLayout(); if (!defined('OPC_IN_REGISTRATION_MODE')) { define('OPC_IN_REGISTRATION_MODE', 1); } require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'language.php'; OPCLang::loadLang(); $this->loadOPC(); // vmdebug('layout by view '.$layoutName); if (empty($layoutName) or $layoutName == 'default') { $layoutName = JRequest::getWord('layout', 'edit'); if ($layoutName == 'default') { $layoutName = 'edit'; } $this->setLayout($layoutName); } if (empty($this->fTask)) { $ftask = 'saveUser'; $this->assignRef('fTask', $ftask); } if (!class_exists('ShopFunctions')) { require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php'; } // vmdebug('my layoutname',$layoutName); if ($layoutName == 'login') { parent::display($tpl); return; } if (!class_exists('VirtuemartModelUser')) { require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'user.php'; } $this->_model = new VirtuemartModelUser(); // $this->_model->setCurrent(); //without this, the administrator can edit users in the FE, permission is handled in the usermodel, but maybe unsecure? $editor = JFactory::getEditor(); //the cuid is the id of the current user $this->_currentUser = JFactory::getUser(); $this->_cuid = $this->_lists['current_id'] = $this->_currentUser->get('id'); $this->assignRef('userId', $this->_cuid); $this->_userDetails = $this->_model->getUser(); $this->assignRef('userDetails', $this->_userDetails); $address_type = JRequest::getWord('addrtype', 'BT'); $this->assignRef('address_type', $address_type); //New Address is filled here with the data of the cart (we are in the cart) if (!class_exists('VirtueMartCart')) { require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'; } $cart = VirtueMartCart::getCart(); $new = false; if (JRequest::getInt('new', '0') == 1) { $new = true; } if ($new) { $virtuemart_userinfo_id = 0; } else { $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0', ''); if (empty($virtuemart_userinfo_id)) { require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'mini.php'; $umodel = OPCmini::getModel('user'); //new VirtuemartModelUser(); $uid = JFactory::getUser()->id; $userDetails = $umodel->getUser(); $virtuemart_userinfo_id = $umodel->getBTuserinfo_id(); } } $this->assignRef('virtuemart_userinfo_id', $virtuemart_userinfo_id); $userFields = null; if ((strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) && empty($virtuemart_userinfo_id)) { $fieldtype = $address_type . 'address'; if (method_exists($cart, 'prepareAddressDataInCart')) { $cart->prepareAddressDataInCart($address_type, $new); } if (method_exists($cart, 'prepareAddressFieldsInCart')) { $cart->prepareAddressFieldsInCart(); } $userFields = $cart->{$fieldtype}; $task = JRequest::getWord('task', ''); } else { $userFields = $this->_model->getUserInfoInUserFields($layoutName, $address_type, $virtuemart_userinfo_id); if (!$new && empty($userFields[$virtuemart_userinfo_id])) { $virtuemart_userinfo_id = $this->_model->getBTuserinfo_id(); // vmdebug('Try to get $virtuemart_userinfo_id by type BT', $virtuemart_userinfo_id); } $userFields = $userFields[$virtuemart_userinfo_id]; $task = 'editaddressST'; } require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'loader.php'; /* if (!class_exists('VirtueMartCart')) require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); $this->cart = VirtueMartCart::getCart(); */ $OPCloader = new OPCloader(); OPCloader::setRegType(); $action_url = JURI::root(true) . '/index.php?option=com_onepage&view=opc&controller=opc&task=opcregister&nosef=1'; require_once JPATH_SITE . DS . 'components' . DS . 'com_onepage' . DS . 'helpers' . DS . 'javascript.php'; OPCJavascript::getJavascript($this, $OPCloader, false, $action_url, 'com_onepage', 'opcregister'); $OPCloader->customizeFieldsPerOPCConfig($userFields); OPCloader::loadJavascriptFiles($this); $op_formvars = OPCloader::getFormVars($this); /* foreach ($userFields['fields'] as $key=>$val) { if (isset($val['formcode'])) { $val['formcode'] .= $html; break; } } */ $this->assignRef('userFields', $userFields); if ($layoutName == 'edit') { if ($this->_model->getId() == 0 && $this->_cuid == 0) { $button_lbl = JText::_('COM_VIRTUEMART_REGISTER'); } else { $button_lbl = JText::_('COM_VIRTUEMART_SAVE'); } $this->assignRef('button_lbl', $button_lbl); $this->lUser(); if (JVM_VERSION <= 2) { $this->shopper($userFields); } else { $this->shopper3($userFields); } $this->payment(); $this->lOrderlist(); $this->lVendor(); } $this->_lists['shipTo'] = $this->generateStAddressList($this, $this->_model, $task, $cart); if ($this->_openTab < 0) { $_paneOffset = array(); } else { if (defined('__VM_USER_USE_SLIDERS')) { $_paneOffset = array('startOffset' => $this->_openTab, 'startTransition' => 1, 'allowAllClose' => true); } else { $_paneOffset = array('startOffset' => $this->_openTab); } } // Implement the Joomla panels. If we need a ShipTo tab, make it the active one. // In tmpl/edit.php, this is the 4th tab (0-based, so set to 3 above) jimport('joomla.html.pane'); $pane = OPCPane::getInstance(defined('__VM_USER_USE_SLIDERS') ? 'Sliders' : 'Tabs', $_paneOffset); $this->assignRef('lists', $this->_lists); $this->assignRef('editor', $editor); $this->assignRef('pane', $pane); if ($layoutName == 'mailregisteruser') { $vendorModel = VmModel::getModel('vendor'); // $vendorModel->setId($this->_userDetails->virtuemart_vendor_id); $vendor = $vendorModel->getVendor(); $this->assignRef('vendor', $vendor); } if ($layoutName == 'editaddress') { $layoutName = 'edit_address'; $this->setLayout($layoutName); } if (!$this->userDetails->JUser->get('id')) { $corefield_title = JText::_('COM_VIRTUEMART_USER_CART_INFO_CREATE_ACCOUNT'); } else { $corefield_title = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); } if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) { $pathway->addItem(JText::_('COM_VIRTUEMART_CART_OVERVIEW'), JRoute::_('index.php?option=com_virtuemart&view=cart', FALSE)); } else { //$pathway->addItem(JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'), JRoute::_('index.php?option=com_virtuemart&view=user&&layout=edit')); } $pathway_text = JText::_('COM_VIRTUEMART_YOUR_ACCOUNT_DETAILS'); if (!$this->userDetails->JUser->get('id')) { if (strpos($this->fTask, 'cart') || strpos($this->fTask, 'checkout')) { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_EDIT_BILLTO_LBL'); $title = JText::_('COM_VIRTUEMART_REGISTER'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } } else { if ($address_type == 'BT') { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_LBL'); } else { $vmfield_title = JText::_('COM_VIRTUEMART_USER_FORM_ADD_SHIPTO_LBL'); } } $add_product_link = ""; require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'mini.php'; if (OPCmini::isSuperVendor()) { $add_product_link = JRoute::_('/index.php?option=com_virtuemart&tmpl=component&view=product&view=product&task=edit&virtuemart_product_id=0'); $add_product_link = $this->linkIcon($add_product_link, 'COM_VIRTUEMART_PRODUCT_ADD_PRODUCT', 'new', false, false, true, true); } $this->assignRef('add_product_link', $add_product_link); $document = JFactory::getDocument(); $document->setTitle($pathway_text); $pathway->additem($pathway_text); $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET'); $this->assignRef('page_title', $pathway_text); $this->assignRef('corefield_title', $corefield_title); $this->assignRef('vmfield_title', $vmfield_title); // if ($onlyindex) return JURI::root(true).'/index.php'; shopFunctionsF::setVmTemplate($this, 0, 0, $layoutName); require_once JPATH_SITE . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'removemsgs.php'; OPCremoveMsgs::removeMsgs($cart); $jsvalidator = $OPCloader->getJSValidatorScript($this); $op_userfields = $OPCloader->getBTfields($this); $registration_html = $OPCloader->getRegistrationHhtml($this); require_once JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_onepage' . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'commonhtml.php'; $reg_html = OPCCommonHtml::getFormVarsRegistration($OPCloader); $op_formvars = $reg_html . $jsvalidator; $op_userfields .= $op_formvars; $onsubmit = $op_onclick = $OPCloader->getJSValidator($this); $op_onclick = ' onclick="' . $op_onclick . '" '; ob_start(); //parent::display($tpl); include_once JPATH_OPC . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'registration_templates.php'; $html = ob_get_clean(); //$html = str_replace('"com_virtuemart"', '"com_onepage"', $html); //$html = str_replace('=com_virtuemart', '=com_onepage', $html); $this->getActions($html); $html = $OPCloader->addListeners($html); echo $html; $extras = $OPCloader->getExtras($this); echo $extras; }