コード例 #1
0
ファイル: Default.php プロジェクト: arcavias/arcavias-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_view)) {
         if (($pos = $view->param('l-pos')) !== null && ($pid = $view->param('d-product-id')) !== null) {
             if ($pos < 1) {
                 $start = 0;
                 $size = 2;
             } else {
                 $start = $pos - 1;
                 $size = 3;
             }
             $filter = $this->_getProductListFilterByParam($view->get('stageParams', array()));
             $filter->setSlice($start, $size);
             $total = null;
             $controller = Controller_Frontend_Factory::createController($this->_getContext(), 'catalog');
             $products = $controller->getProductList($filter, $total, array('text'));
             if (($count = count($products)) > 1) {
                 $listPos = array_search($pid, array_keys($products));
                 $target = $view->config('client/html/catalog/detail/url/target');
                 $controller = $view->config('client/html/catalog/detail/url/controller', 'catalog');
                 $action = $view->config('client/html/catalog/detail/url/action', 'detail');
                 $config = $view->config('client/html/catalog/detail/url/config', array());
                 if ($listPos > 0 && ($product = reset($products)) !== false) {
                     $param = array('a-name' => $product->getName(), 'd-product-id' => $product->getId(), 'l-pos' => $listPos - 1);
                     $view->navigationPrev = $view->url($target, $controller, $action, $param, array(), $config);
                 }
                 if ($listPos < $count - 1 && ($product = end($products)) !== false) {
                     $param = array('a-name' => $product->getName(), 'd-product-id' => $product->getId(), 'l-pos' => $listPos + 1);
                     $view->navigationNext = $view->url($target, $controller, $action, $param, array(), $config);
                 }
             }
         }
         $this->_view = $view;
     }
     return $this->_view;
 }
コード例 #2
0
ファイル: Default.php プロジェクト: Bananamoon/aimeos-core
 /**
  * Returns the URL to the update page.
  *
  * @param MW_View_Interface $view View object
  * @param array $params Parameters that should be part of the URL
  * @param array $config Default URL configuration
  * @return string URL string
  */
 protected function _getUrlUpdate(MW_View_Interface $view, array $params, array $config)
 {
     $target = $view->config('client/html/checkout/update/url/target');
     $cntl = $view->config('client/html/checkout/update/url/controller', 'checkout');
     $action = $view->config('client/html/checkout/update/url/action', 'update');
     $config = $view->config('client/html/checkout/update/url/config', $config);
     return $view->url($target, $cntl, $action, $params, array(), $config);
 }
コード例 #3
0
ファイル: Default.php プロジェクト: arcavias/arcavias-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_cache)) {
         $products = array();
         $context = $this->_getContext();
         $config = $context->getConfig();
         if (isset($view->listCurrentCatItem)) {
             /** client/html/catalog/list/promo/size
              * The maximum number of products that should be shown in the promotion section
              *
              * Each product list can render a list of promoted products on
              * top if there are any products associated to that category whose
              * list type is "promotion". This option limits the maximum number
              * of products that are displayed. It takes only effect if more
              * promotional products are added to this category than the set
              * value.
              *
              * @param integer Number of promotion products
              * @since 2014.03
              * @category User
              * @category Developer
              */
             $size = $config->get('client/html/catalog/list/promo/size', 6);
             $domains = $config->get('client/html/catalog/list/domains', array('media', 'price', 'text'));
             $manager = MShop_Factory::createManager($context, 'catalog/list');
             $search = $manager->createSearch(true);
             $expr = array($search->compare('==', 'catalog.list.parentid', $view->listCurrentCatItem->getId()), $search->compare('==', 'catalog.list.domain', 'product'), $search->compare('==', 'catalog.list.type.code', 'promotion'), $search->getConditions());
             $search->setConditions($search->combine('&&', $expr));
             $sort = array($search->sort('+', 'catalog.list.parentid'), $search->sort('+', 'catalog.list.siteid'), $search->sort('+', 'catalog.list.position'));
             $search->setSortations($sort);
             $search->setSlice(0, $size);
             $result = $manager->searchRefItems($search, $domains);
             if (isset($result['product'])) {
                 $products = $result['product'];
             }
         }
         if (!empty($products) && $config->get('client/html/catalog/list/stock/enable', true) === true) {
             $stockTarget = $config->get('client/html/catalog/stock/url/target');
             $stockController = $config->get('client/html/catalog/stock/url/controller', 'catalog');
             $stockAction = $config->get('client/html/catalog/stock/url/action', 'stock');
             $stockConfig = $config->get('client/html/catalog/stock/url/config', array());
             $productIds = array_keys($products);
             sort($productIds);
             $params = array('s-product-id' => implode(' ', $productIds));
             $view->promoStockUrl = $view->url($stockTarget, $stockController, $stockAction, $params, array(), $stockConfig);
         }
         $this->_addMetaItem($products, 'product', $this->_expire, $this->_tags);
         $this->_addMetaList(array_keys($products), 'product', $this->_expire);
         $view->promoItems = $products;
         $this->_cache = $view;
     }
     $expire = $this->_expires($this->_expire, $expire);
     $tags = array_merge($tags, $this->_tags);
     return $this->_cache;
 }
コード例 #4
0
ファイル: Default.php プロジェクト: Bananamoon/aimeos-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_cache)) {
         $products = array();
         $context = $this->_getContext();
         $config = $context->getConfig();
         if (isset($view->listCurrentCatItem)) {
             /** client/html/catalog/list/promo/size
              * The maximum number of products that should be shown in the promotion section
              *
              * Each product list can render a list of promoted products on
              * top if there are any products associated to that category whose
              * list type is "promotion". This option limits the maximum number
              * of products that are displayed. It takes only effect if more
              * promotional products are added to this category than the set
              * value.
              *
              * @param integer Number of promotion products
              * @since 2014.03
              * @category User
              * @category Developer
              */
             $size = $config->get('client/html/catalog/list/promo/size', 6);
             $domains = $config->get('client/html/catalog/list/domains', array('media', 'price', 'text'));
             $total = null;
             $catId = $view->listCurrentCatItem->getId();
             $controller = Controller_Frontend_Factory::createController($context, 'catalog');
             $filter = $controller->createIndexFilterCategory($catId, 'relevance', '+', 0, $size, 'promotion');
             $products = $controller->getIndexItems($filter, $domains, $total);
         }
         if (!empty($products) && $config->get('client/html/catalog/list/stock/enable', true) === true) {
             $stockTarget = $config->get('client/html/catalog/stock/url/target');
             $stockController = $config->get('client/html/catalog/stock/url/controller', 'catalog');
             $stockAction = $config->get('client/html/catalog/stock/url/action', 'stock');
             $stockConfig = $config->get('client/html/catalog/stock/url/config', array());
             $productIds = array_keys($products);
             sort($productIds);
             $params = array('s_prodid' => implode(' ', $productIds));
             $view->promoStockUrl = $view->url($stockTarget, $stockController, $stockAction, $params, array(), $stockConfig);
         }
         $this->_addMetaItem($products, 'product', $this->_expire, $this->_tags);
         $this->_addMetaList(array_keys($products), 'product', $this->_expire);
         $view->promoItems = $products;
         $this->_cache = $view;
     }
     $expire = $this->_expires($this->_expire, $expire);
     $tags = array_merge($tags, $this->_tags);
     return $this->_cache;
 }
コード例 #5
0
ファイル: Default.php プロジェクト: arcavias/arcavias-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_cache)) {
         $context = $this->_getContext();
         $params = $context->getSession()->get('arcavias/catalog/detail/params/last', array());
         $target = $view->config('client/html/catalog/detail/url/target');
         $controller = $view->config('client/html/catalog/detail/url/controller', 'catalog');
         $action = $view->config('client/html/catalog/detail/url/action', 'detail');
         $config = $view->config('client/html/catalog/detail/url/config', array());
         $view->standardParams = $this->_getClientParams($view->param());
         $view->standardBackUrl = $view->url($target, $controller, $action, $params, array(), $config);
         $view->standardBasket = Controller_Frontend_Factory::createController($context, 'basket')->get();
         $this->_cache = $view;
     }
     return $this->_cache;
 }
コード例 #6
0
ファイル: Default.php プロジェクト: arcavias/arcavias-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_view)) {
         $config = $this->_getContext()->getConfig();
         /** client/html/catalog/count/enable
          * Enables or disables displaying product counts in the catalog filter
          *
          * This configuration option allows shop owners to display product
          * counts in the catalog filter or to disable fetching product count
          * information.
          *
          * The product count information is fetched via AJAX and inserted via
          * Javascript. This allows to cache parts of the catalog filter by
          * leaving out such highly dynamic content like product count which
          * changes with used filter parameter.
          *
          * @param boolean Value of "1" to display product counts, "0" to disable them
          * @since 2014.03
          * @category User
          * @category Developer
          * @see client/html/catalog/count/url/target
          * @see client/html/catalog/count/url/controller
          * @see client/html/catalog/count/url/action
          * @see client/html/catalog/count/url/config
          */
         if ($config->get('client/html/catalog/count/enable', true) == true) {
             /** client/html/catalog/count/url/target
              * Destination of the URL where the controller specified in the URL is known
              *
              * The destination can be a page ID like in a content management system or the
              * module of a software development framework. This "target" must contain or know
              * the controller that should be called by the generated URL.
              *
              * @param string Destination of the URL
              * @since 2014.03
              * @category Developer
              * @see client/html/catalog/count/url/controller
              * @see client/html/catalog/count/url/action
              * @see client/html/catalog/count/url/config
              */
             $target = $config->get('client/html/catalog/count/url/target');
             /** client/html/catalog/count/url/controller
              * Name of the controller whose action should be called
              *
              * In Model-View-Controller (MVC) applications, the controller contains the methods
              * that create parts of the output displayed in the generated HTML page. Controller
              * names are usually alpha-numeric.
              *
              * @param string Name of the controller
              * @since 2014.03
              * @category Developer
              * @see client/html/catalog/count/url/target
              * @see client/html/catalog/count/url/action
              * @see client/html/catalog/count/url/config
              */
             $controller = $config->get('client/html/catalog/count/url/controller', 'catalog');
             /** client/html/catalog/count/url/action
              * Name of the action that should create the output
              *
              * In Model-View-Controller (MVC) applications, actions are the methods of a
              * controller that create parts of the output displayed in the generated HTML page.
              * Action names are usually alpha-numeric.
              *
              * @param string Name of the action
              * @since 2014.03
              * @category Developer
              * @see client/html/catalog/count/url/target
              * @see client/html/catalog/count/url/controller
              * @see client/html/catalog/count/url/config
              */
             $action = $config->get('client/html/catalog/count/url/action', 'count');
             /** client/html/catalog/count/url/config
              * Associative list of configuration options used for generating the URL
              *
              * You can specify additional options as key/value pairs used when generating
              * the URLs, like
              *
              *  client/html/<clientname>/url/config = array( 'absoluteUri' => true )
              *
              * The available key/value pairs depend on the application that embeds the e-commerce
              * framework. This is because the infrastructure of the application is used for
              * generating the URLs. The full list of available config options is referenced
              * in the "see also" section of this page.
              *
              * @param string Associative list of configuration options
              * @since 2014.03
              * @category Developer
              * @see client/html/catalog/count/url/target
              * @see client/html/catalog/count/url/controller
              * @see client/html/catalog/count/url/action
              * @see client/html/url/config
              */
             $config = $config->get('client/html/catalog/count/url/config', array());
             $params = $this->_getClientParams($view->param(), array('f'));
             $view->filterCountUrl = $view->url($target, $controller, $action, $params, array(), $config);
         }
         $this->_view = $view;
     }
     return $this->_view;
 }
コード例 #7
0
ファイル: Default.php プロジェクト: arcavias/arcavias-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_cache)) {
         $config = $this->_getContext()->getConfig();
         /** client/html/catalog/detail/stock/enable
          * Enables or disables displaying product stock levels in product detail view
          *
          * This configuration option allows shop owners to display product
          * stock levels for each product in the detail views or to disable
          * fetching product stock information.
          *
          * The stock information is fetched via AJAX and inserted via Javascript.
          * This allows to cache product items by leaving out such highly
          * dynamic content like stock levels which changes with each order.
          *
          * @param boolean Value of "1" to display stock levels, "0" to disable displaying them
          * @since 2014.03
          * @category User
          * @category Developer
          * @see client/html/catalog/list/stock/enable
          * @see client/html/catalog/stock/url/target
          * @see client/html/catalog/stock/url/controller
          * @see client/html/catalog/stock/url/action
          * @see client/html/catalog/stock/url/config
          */
         if (isset($view->detailProductItem) && $config->get('client/html/catalog/detail/stock/enable', true) === true) {
             $stockTarget = $config->get('client/html/catalog/stock/url/target');
             $stockController = $config->get('client/html/catalog/stock/url/controller', 'catalog');
             $stockAction = $config->get('client/html/catalog/stock/url/action', 'stock');
             $stockConfig = $config->get('client/html/catalog/stock/url/config', array());
             $prodIds = array_keys($view->detailProductItem->getRefItems('product', null, 'default'));
             array_unshift($prodIds, $view->detailProductItem->getId());
             $params = array('s-product-id' => $prodIds);
             $view->basketStockUrl = $view->url($stockTarget, $stockController, $stockAction, $params, array(), $stockConfig);
             $view->basketProductIds = $prodIds;
         }
         $view->basketParams = $this->_getClientParams($view->param());
         $this->_cache = $view;
     }
     return $this->_cache;
 }
コード例 #8
0
ファイル: Default.php プロジェクト: Bananamoon/aimeos-core
 /**
  * Returns the URL to the update page.
  *
  * @param MW_View_Interface $view View object
  * @param array $params Parameters that should be part of the URL
  * @param array $config Default URL configuration
  * @return string URL string
  */
 protected function _getUrlUpdate(MW_View_Interface $view, array $params, array $config)
 {
     /** client/html/checkout/update/url/target
      * Destination of the URL where the controller specified in the URL is known
      *
      * The destination can be a page ID like in a content management system or the
      * module of a software development framework. This "target" must contain or know
      * the controller that should be called by the generated URL.
      *
      * @param string Destination of the URL
      * @since 2014.03
      * @category Developer
      * @see client/html/checkout/update/url/controller
      * @see client/html/checkout/update/url/action
      * @see client/html/checkout/update/url/config
      */
     $target = $view->config('client/html/checkout/update/url/target');
     /** client/html/checkout/update/url/controller
      * Name of the controller whose action should be called
      *
      * In Model-View-Controller (MVC) applications, the controller contains the methods
      * that create parts of the output displayed in the generated HTML page. Controller
      * names are usually alpha-numeric.
      *
      * @param string Name of the controller
      * @since 2014.03
      * @category Developer
      * @see client/html/checkout/update/url/target
      * @see client/html/checkout/update/url/action
      * @see client/html/checkout/update/url/config
      */
     $cntl = $view->config('client/html/checkout/update/url/controller', 'checkout');
     /** client/html/checkout/update/url/action
      * Name of the action that should create the output
      *
      * In Model-View-Controller (MVC) applications, actions are the methods of a
      * controller that create parts of the output displayed in the generated HTML page.
      * Action names are usually alpha-numeric.
      *
      * @param string Name of the action
      * @since 2014.03
      * @category Developer
      * @see client/html/checkout/update/url/target
      * @see client/html/checkout/update/url/controller
      * @see client/html/checkout/update/url/config
      */
     $action = $view->config('client/html/checkout/update/url/action', 'update');
     /** client/html/checkout/update/url/config
      * Associative list of configuration options used for generating the URL
      *
      * You can specify additional options as key/value pairs used when generating
      * the URLs, like
      *
      *  client/html/<clientname>/url/config = array( 'absoluteUri' => true )
      *
      * The available key/value pairs depend on the application that embeds the e-commerce
      * framework. This is because the infrastructure of the application is used for
      * generating the URLs. The full list of available config options is referenced
      * in the "see also" section of this page.
      *
      * @param string Associative list of configuration options
      * @since 2014.03
      * @category Developer
      * @see client/html/checkout/update/url/target
      * @see client/html/checkout/update/url/controller
      * @see client/html/checkout/update/url/action
      * @see client/html/url/config
      */
     $config = $view->config('client/html/checkout/update/url/config', $config);
     return $view->url($target, $cntl, $action, $params, array(), $config);
 }
コード例 #9
0
ファイル: Default.php プロジェクト: Bananamoon/aimeos-core
 /**
  * Sets the necessary parameter values in the view.
  *
  * @param MW_View_Interface $view The view object which generates the HTML output
  * @param array &$tags Result array for the list of tags that are associated to the output
  * @param string|null &$expire Result variable for the expiration date of the output (null for no expiry)
  * @return MW_View_Interface Modified view object
  */
 protected function _setViewParams(MW_View_Interface $view, array &$tags = array(), &$expire = null)
 {
     if (!isset($this->_cache)) {
         $context = $this->_getContext();
         $basketCntl = Controller_Frontend_Factory::createController($context, 'basket');
         $view->standardBasket = $basketCntl->get();
         $bTarget = $view->config('client/html/basket/standard/url/target');
         $bCntl = $view->config('client/html/basket/standard/url/controller', 'basket');
         $bAction = $view->config('client/html/basket/standard/url/action', 'index');
         $bConfig = $view->config('client/html/basket/standard/url/config', array());
         /** client/html/checkout/standard/url/target
          * Destination of the URL where the controller specified in the URL is known
          *
          * The destination can be a page ID like in a content management system or the
          * module of a software development framework. This "target" must contain or know
          * the controller that should be called by the generated URL.
          *
          * @param string Destination of the URL
          * @since 2014.03
          * @category Developer
          * @see client/html/checkout/standard/url/controller
          * @see client/html/checkout/standard/url/action
          * @see client/html/checkout/standard/url/config
          */
         $cTarget = $view->config('client/html/checkout/standard/url/target');
         /** client/html/checkout/standard/url/controller
          * Name of the controller whose action should be called
          *
          * In Model-View-Controller (MVC) applications, the controller contains the methods
          * that create parts of the output displayed in the generated HTML page. Controller
          * names are usually alpha-numeric.
          *
          * @param string Name of the controller
          * @since 2014.03
          * @category Developer
          * @see client/html/checkout/standard/url/target
          * @see client/html/checkout/standard/url/action
          * @see client/html/checkout/standard/url/config
          */
         $cCntl = $view->config('client/html/checkout/standard/url/controller', 'checkout');
         /** client/html/checkout/standard/url/action
          * Name of the action that should create the output
          *
          * In Model-View-Controller (MVC) applications, actions are the methods of a
          * controller that create parts of the output displayed in the generated HTML page.
          * Action names are usually alpha-numeric.
          *
          * @param string Name of the action
          * @since 2014.03
          * @category Developer
          * @see client/html/checkout/standard/url/target
          * @see client/html/checkout/standard/url/controller
          * @see client/html/checkout/standard/url/config
          */
         $cAction = $view->config('client/html/checkout/standard/url/action', 'index');
         /** client/html/checkout/standard/url/config
          * Associative list of configuration options used for generating the URL
          *
          * You can specify additional options as key/value pairs used when generating
          * the URLs, like
          *
          *  client/html/<clientname>/url/config = array( 'absoluteUri' => true )
          *
          * The available key/value pairs depend on the application that embeds the e-commerce
          * framework. This is because the infrastructure of the application is used for
          * generating the URLs. The full list of available config options is referenced
          * in the "see also" section of this page.
          *
          * @param string Associative list of configuration options
          * @since 2014.03
          * @category Developer
          * @see client/html/checkout/standard/url/target
          * @see client/html/checkout/standard/url/controller
          * @see client/html/checkout/standard/url/action
          * @see client/html/url/config
          */
         $cConfig = $view->config('client/html/checkout/standard/url/config', array());
         /** client/html/checkout/standard/url/step-active
          * Name of the checkout process step to jump to if no previous step requires attention
          *
          * The checkout process consists of several steps which are usually
          * displayed one by another to the customer. If the data of a step
          * is already available, then that step is skipped. The active step
          * is the one that is displayed if all other steps are skipped.
          *
          * If one of the previous steps misses some data the customer has
          * to enter, then this step is displayed first. After providing
          * the missing data, the whole series of steps are tested again
          * and if no other step requests attention, the configured active
          * step will be displayed.
          *
          * The order of the steps is determined by the order of sub-parts
          * that are configured for the checkout client.
          *
          * @param string Name of the confirm standard HTML client
          * @since 2014.07
          * @category Developer
          * @category User
          * @see client/html/checkout/standard/default/subparts
          */
         $default = $view->config('client/html/checkout/standard/url/step-active', 'summary');
         /** client/html/checkout/standard/onepage
          * Shows all named checkout subparts at once for a one page checkout
          *
          * Normally, the checkout process is divided into several steps for entering
          * addresses, select delivery and payment options as well as showing the
          * summary page. This enables dependencies between two steps like showing
          * delivery options based on the address entered by the customer. Furthermore,
          * this is good way to limit the amount of information displayed which is
          * preferred by mobile users.
          *
          * Contrary to that, a one page checkout displays all information on only
          * one page and customers get an immediate overview of which information
          * they have to enter and what options they can select from. This is an
          * advantage if only a very limited amount of information must be entered
          * or if there are almost no options to choose from and no dependencies
          * between exist.
          *
          * Using this config options, shop developers are able to define which
          * checkout subparts are combined to a one page view. Simply add the names
          * of all checkout subparts to the list. Available checkout subparts for
          * a one page checkout are:
          * * address
          * * delivery
          * * payment
          * * summary
          *
          * @param array List of checkout subparts name
          * @since 2015.05
          * @category Developer
          */
         $onepage = $view->config('client/html/checkout/standard/onepage', array());
         $onestep = array_shift($onepage);
         // keep the first one page step
         $steps = (array) $context->getConfig()->get($this->_subPartPath, $this->_subPartNames);
         $steps = array_diff($steps, $onepage);
         // remove all remaining steps in $onepage
         // use first step if default step isn't available
         $default = !in_array($default, $steps) ? reset($steps) : $default;
         $current = $view->param('c_step', $default);
         // use $onestep if current step isn't available due to one page layout
         $current = !in_array($current, $steps) ? $onestep : $current;
         $cpos = $cpos = array_search($current, $steps);
         if (!isset($view->standardStepActive) || ($apos = array_search($view->standardStepActive, $steps)) !== false && $cpos !== false && $cpos < $apos) {
             $view->standardStepActive = $current;
         }
         $activeStep = $view->standardStepActive;
         $view->standardSteps = $steps;
         $step = null;
         do {
             $lastStep = $step;
         } while (($step = array_shift($steps)) !== null && $step !== $activeStep);
         if ($lastStep !== null) {
             $param = array('c_step' => $lastStep);
             $view->standardUrlBack = $view->url($cTarget, $cCntl, $cAction, $param, array(), $cConfig);
         } else {
             $view->standardUrlBack = $view->url($bTarget, $bCntl, $bAction, array(), array(), $bConfig);
         }
         if (!isset($view->standardUrlNext) && ($nextStep = array_shift($steps)) !== null) {
             $param = array('c_step' => $nextStep);
             $view->standardUrlNext = $view->url($cTarget, $cCntl, $cAction, $param, array(), $cConfig);
         }
         // don't overwrite $view->standardUrlNext so order step URL is used
         $this->_cache = $view;
     }
     return $this->_cache;
 }