Changeset 292

Show
Ignore:
Timestamp:
02/23/07 16:02:18 (1 year ago)
Author:
mikey
Message:

added net.stubbles.websites.xml.stubXMLResponse

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/docroot/xml.php

    r279 r292  
    2525        $processor   = new stubXMLProcessor($request, $session, $pageFactory); 
    2626        $postInterceptor = new stubXMLPagePostInterceptor(); 
    27         $postInterceptor->setRequest($request); 
    2827        $response = $processor->process()->getResponse(); 
    2928        $postInterceptor->setResponse($response); 
  • trunk/src/main/php/net/stubbles/websites/stubXJConfPageFactory.php

    r279 r292  
    1010                      'net.stubbles.util.xjconf.stubXJConfLoader', 
    1111                      'net.stubbles.websites.stubPageConfigurationException', 
    12                       'net.stubbles.websites.stubPageFactory' 
     12                      'net.stubbles.websites.stubPageFactory', 
     13                      'net.stubbles.stubFactory' 
    1314); 
    1415XJConfLoader::load('DefinitionParser', 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLPagePostInterceptor.php

    r276 r292  
    1111                      'net.stubbles.xml.xsl.util.stubXSLImageDimensions', 
    1212                      'net.stubbles.xml.stubXMLXIncludeStreamWrapper', 
    13                       'net.stubbles.xml.stubDomXMLStreamWriter' 
     13                      'net.stubbles.xml.stubDomXMLStreamWriter', 
     14                      'net.stubbles.stubFactory' 
    1415); 
    1516/** 
     
    1819 * @package     stubbles 
    1920 * @subpackage  websites_xml 
    20  * @Inject(stubRequest:stubResponse) 
    21  * @todo        enable using different skins (needs an idea how to transport  
    22  *              the skin information from the page configuration to this class 
     21 * @Inject(stubResponse) 
    2322 * @todo        make <xsl:import href="copy.xsl"/> work if loaded from a star file 
    2423 *              in master.xsl and masterXInclude.xsl 
     
    2827class stubXMLPagePostInterceptor extends stubBaseObject implements stubPostInterceptor 
    2928{ 
    30     /** 
    31      * request data 
    32      * 
    33      * @var  stubRequest 
    34      */ 
    35     protected $request; 
    3629    /** 
    3730     * response data 
     
    6255        stubXMLXIncludeStreamWrapper::setXSLProcessor($xslProcessor); 
    6356    } 
    64      
    65     /** 
    66      * set the request object 
    67      * 
    68      * @param  stubRequest  $request 
    69      */ 
    70     public function setRequest(stubRequest $request) 
    71     { 
    72         $this->request = $request; 
    73     } 
    74      
     57 
    7558    /** 
    7659     * set the response object 
     
    9275        $xslProcessor->registerCallback('image', $this->callbacks['image']); 
    9376        $xslProcessor->importXSLStylesheet(DOMDocument::load(stubFactory::getResourceURI('xsl/master.xsl'))); 
    94         if ($this->request->hasValue('page') == true) { 
    95             $pageName = $this->request->getValidatedValue(new stubRegexValidator('([a-zA-Z0-9_])*'), 'page'); 
    96             if (null == $pageName || file_exists(stubConfig::getConfigPath() . '/xml/pages/conf/' . $pageName . '.xml') == false) { 
    97                 $pageName = 'index'; 
    98             } 
     77         
     78        $page = $this->response->getPage(); 
     79        $xslProcessor->setParameter('', 'page', $page->getProperty('name')); 
     80        if ($page->hasProperty('skin') == true) { 
     81            $skin = $page->getProperty('skin'); 
    9982        } else { 
    100             $pageName = 'index'; 
     83            $skin = 'default'; 
    10184        } 
    102         $xslProcessor->setParameter('', 'page', $pageName); 
    103         $xslProcessor->setXMLDocument(DOMDocument::load(stubConfig::getConfigPath() . '/xml/pages/skin/default.xml')); 
     85        $xslProcessor->setXMLDocument(DOMDocument::load(stubConfig::getConfigPath() . '/xml/pages/skin/' . $skin . '.xml')); 
    10486        $resultXSL = $xslProcessor->transformToDoc(); 
    10587        $resultXSL->xinclude(); 
     88         
    10689        // now we use the created xsl to transform the xml document created by the application 
    10790        $xslProcessor = new stubXSLProcessor(); 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php

    r280 r292  
    88 */ 
    99stubClassLoader::load('net.stubbles.websites.processors.stubAbstractProcessor', 
     10                      'net.stubbles.websites.xml.stubXMLResponse', 
    1011                      'net.stubbles.ipo.response.stubBaseResponse', 
    1112                      'net.stubbles.util.validators.stubRegexValidator', 
     
    1819 * @package     stubbles 
    1920 * @subpackage  websites_xml 
    20  * @todo        think about how to get the skin information from 
    21  *              stubPage into the stubXMLPagePostInterceptor 
    2221 */ 
    2322class stubXMLProcessor extends stubAbstractProcessor 
     
    3332    { 
    3433        parent::__construct($request, $session, $pageFactory); 
    35         $this->response = new stubBaseResponse(); 
     34        $this->response = new stubXMLResponse(new stubBaseResponse()); 
    3635    } 
    3736 
     
    5554        $xmlStreamWriter = $this->createXMLStreamWriter(); 
    5655        $page            = $this->pageFactory->getPage('conf/' . $pageName); 
     56        $page->setProperty('name', $pageName); 
     57        $this->response->setPage($page); 
    5758        $elements        = $page->getElements(); 
    5859        $xmlStreamWriter->writeStartElement('document'); 
  • trunk/src/test/php/net/stubbles/websites/WebsitesTestSuite.php

    r289 r292  
    3434        // xml tests 
    3535        $this->addTestFile($dir . '/xml/stubXMLProcessorTestCase.php'); 
     36        $this->addTestFile($dir . '/xml/stubXMLResponseTestCase.php'); 
    3637    } 
    3738} 
  • trunk/src/test/php/net/stubbles/websites/xml/stubXMLProcessorTestCase.php

    r287 r292  
    1010Mock::generate('stubRequest'); 
    1111Mock::generate('stubSession'); 
    12 Mock::generate('stubPage'); 
    1312Mock::generate('stubPageElement'); 
    1413Mock::generate('stubPageFactory'); 
     
    8786     * mocked page configuration instance 
    8887     * 
    89      * @var  SimpleMock 
     88     * @var  stubPage 
    9089     */ 
    91     protected $mockPage; 
     90    protected $page; 
    9291     
    9392    /** 
     
    104103        $this->xmlProcessor->setXMLStreamWriter($this->mockXMLStreamWriter); 
    105104        $this->xmlProcessor->setXMLSerializer($this->mockXMLSerializer); 
    106         $this->mockPage = new MockstubPage(); 
    107         $this->mockPageFactory->setReturnValue('getPage', $this->mockPage); 
     105        $this->page = new stubPage(); 
     106        $this->mockPageFactory->setReturnValue('getPage', $this->page); 
    108107    } 
    109108     
     
    114113    { 
    115114        $this->mockRequest->setReturnValue('hasValue', false); 
    116         $this->mockPage->setReturnValue('getElements', array()); 
    117115        $this->mockPageFactory->expectOnce('getPage', array('conf/index')); 
    118116        $this->mockXMLStreamWriter->expectOnce('writeStartElement', array('document')); 
     
    137135        $response = $this->xmlProcessor->getResponse(); 
    138136        $pageElement1 = new MockstubPageElement(); 
     137        $pageElement1->setReturnValue('getName', 'foo'); 
    139138        $pageElement1->setReturnValue('process', 'foo'); 
    140         $pageElement1->expectOnce('process', array($this->mockRequest, $this->mockSession, $response)); 
     139        $pageElement1->expectOnce('process'); 
    141140        $pageElement2 = new MockstubPageElement(); 
     141        $pageElement2->setReturnValue('getName', 'bar'); 
    142142        $pageElement2->setReturnValue('process', 'bar'); 
    143         $pageElement2->expectOnce('process', array($this->mockRequest, $this->mockSession, $response)); 
    144         $this->mockPage->setReturnValue('getElements', array('foo' => $pageElement1, 'bar' => $pageElement2)); 
     143        $pageElement2->expectOnce('process'); 
     144        $this->page->addElement($pageElement1); 
     145        $this->page->addElement($pageElement2); 
    145146        $this->mockXMLStreamWriter->expectOnce('writeStartElement', array('document')); 
    146147        $this->mockXMLStreamWriter->expectOnce('writeEndElement'); 
     
    164165        $this->mockPageFactory->expectOnce('getPage', array('conf/baz')); 
    165166        $this->mockPageFactory->setReturnValue('hasPage', true); 
    166         $this->mockPage->setReturnValue('getElements', array()); 
    167167        $this->xmlProcessor->process(); 
    168168    }