Packages

  • Nette
    • Application
      • Application\Diagnostics
      • Application\Responses
      • Application\Routers
      • Application\UI
    • Caching
      • Caching\Storages
    • ComponentModel
    • Config
    • Database
      • Database\Diagnostics
      • Database\Drivers
      • Database\Reflection
      • Database\Table
    • DI
    • Diagnostics
    • Forms
      • Forms\Controls
      • Forms\Rendering
    • Http
    • Iterators
    • Latte
      • Latte\Macros
    • Loaders
    • Localization
    • Mail
    • Reflection
    • Security
    • Templating
    • Utils
  • NetteModule
  • None
  • PHP

Classes

  • MicroPresenter
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4:  * This file is part of the Nette Framework (http://nette.org)
  5:  *
  6:  * Copyright (c) 2004, 2011 David Grudl (http://davidgrudl.com)
  7:  *
  8:  * For the full copyright and license information, please view
  9:  * the file license.txt that was distributed with this source code.
 10:  * @package NetteModule
 11:  */
 12: 
 13: 
 14: 
 15: /**
 16:  * Micro presenter.
 17:  *
 18:  * @author     David Grudl
 19:  * @package NetteModule
 20:  */
 21: class MicroPresenter extends NObject implements IPresenter
 22: {
 23:     /** @var IDIContainer */
 24:     private $context;
 25: 
 26:     /** @var NPresenterRequest */
 27:     private $request;
 28: 
 29: 
 30: 
 31:     /**
 32:      * @param  NPresenterRequest
 33:      * @return IPresenterResponse
 34:      */
 35:     public function run(NPresenterRequest $request)
 36:     {
 37:         $this->request = $request;
 38: 
 39:         $httpRequest = $this->context->httpRequest;
 40:         if (!$httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) {
 41:             $refUrl = clone $httpRequest->getUrl();
 42:             $url = $this->context->router->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath()));
 43:             if ($url !== NULL && !$httpRequest->getUrl()->isEqual($url)) {
 44:                 return new NRedirectResponse($url, IHttpResponse::S301_MOVED_PERMANENTLY);
 45:             }
 46:         }
 47: 
 48:         $params = $request->getParams();
 49:         if (!isset($params['callback'])) {
 50:             return;
 51:         }
 52:         $params['presenter'] = $this;
 53:         $response = callback($params['callback'])->invokeNamedArgs($params);
 54: 
 55:         if (is_string($response)) {
 56:             $response = array($response, array());
 57:         }
 58:         if (is_array($response)) {
 59:             if ($response instanceof SplFileInfo) {
 60:                 $response = $this->createTemplate('NFileTemplate')
 61:                     ->setParams($response[1])->setFile($response[0]);
 62:             } else {
 63:                 $response = $this->createTemplate('NTemplate')
 64:                     ->setParams($response[1])->setSource($response[0]);
 65:             }
 66:         }
 67:         if ($response instanceof ITemplate) {
 68:             return new NTextResponse($response);
 69:         } else {
 70:             return $response;
 71:         }
 72:     }
 73: 
 74: 
 75: 
 76:     /**
 77:      * Template factory
 78:      * @param  string
 79:      * @param  callback
 80:      * @return ITemplate
 81:      */
 82:     public function createTemplate($class = NULL, $latteFactory = NULL)
 83:     {
 84:         $template = $class ? new $class : new NFileTemplate;
 85: 
 86:         $template->setParams($this->request->getParams());
 87:         $template->presenter = $this;
 88:         $template->context = $context = $this->context;
 89:         $url = $context->httpRequest->getUrl();
 90:         $template->baseUrl = rtrim($url->getBaseUrl(), '/');
 91:         $template->basePath = rtrim($url->getBasePath(), '/');
 92: 
 93:         $template->registerHelperLoader('NTemplateHelpers::loader');
 94:         $template->setCacheStorage($context->templateCacheStorage);
 95:         $template->onPrepareFilters[] = create_function('$template', 'extract(NCFix::$vars['.NCFix::uses(array('latteFactory'=>$latteFactory,'context'=> $context)).'], EXTR_REFS);
 96:             $template->registerFilter($latteFactory ? $latteFactory() : new NLatteFilter);
 97:         ');
 98:         return $template;
 99:     }
100: 
101: 
102: 
103:     /**
104:      * Redirects to another URL.
105:      * @param  string
106:      * @param  int HTTP code
107:      * @return void
108:      */
109:     public function redirectUrl($url, $code = IHttpResponse::S302_FOUND)
110:     {
111:         return new NRedirectResponse($url, $code);
112:     }
113: 
114: 
115: 
116:     /**
117:      * Throws HTTP error.
118:      * @param  int HTTP error code
119:      * @param  string
120:      * @return void
121:      * @throws NBadRequestException
122:      */
123:     public function error($code, $message = NULL)
124:     {
125:         throw new NBadRequestException($message, $code);
126:     }
127: 
128: 
129: 
130:     /**
131:      * @return IRequest
132:      */
133:     public function getRequest()
134:     {
135:         return $this->request;
136:     }
137: 
138: 
139: 
140:     /********************* services ****************d*g**/
141: 
142: 
143: 
144:     /**
145:      * Gets the context.
146:      * @return Presenter  provides a fluent interface
147:      */
148:     public function setContext(IDIContainer $context)
149:     {
150:         $this->context = $context;
151:         return $this;
152:     }
153: 
154: 
155: 
156:     /**
157:      * Gets the context.
158:      * @return IDIContainer
159:      */
160:     final public function getContext()
161:     {
162:         return $this->context;
163:     }
164: 
165: }
166: 
Nette Framework 2.0beta1 (for PHP 5.2) API API documentation generated by ApiGen 2.3.0