Changeset 267

Show
Ignore:
Timestamp:
02/15/07 00:59:48 (1 year ago)
Author:
mikey
Message:

refactored net.stubbles.websites.*: less classes, better code

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/config/xml/pages/conf/index.xml

    r264 r267  
    22<xj:configuration 
    33    xmlns:xj="http://xjconf.net/XJConf" 
    4     xmlns="http://stubbles.net/websites/xml"> 
     4    xmlns="http://stubbles.net/websites"> 
    55  <page> 
    6     <skin>default</skin> 
    7     <element type="_test.TestXMLPageElement" /> 
     6    <properties> 
     7      <property name="skin">default</property> 
     8    </properties> 
     9    <element type="_test.TestXMLPageElement" name="Test" /> 
    810  </page> 
    911</xj:configuration> 
  • trunk/config/xml/pages/memphis/index.xml

    r263 r267  
    22<xj:configuration 
    33    xmlns:xj="http://xjconf.net/XJConf" 
    4     xmlns="http://stubbles.net/websites/memphis"> 
    5   <page title="Home"
    6     <element source="static/index.html" type="net.stubbles.websites.memphis.stubSimpleHTMLMemphisPageElement" /> 
     4    xmlns="http://stubbles.net/websites"> 
     5  <page
     6    <memphisElement source="static/index.html" type="net.stubbles.websites.memphis.stubSimpleHTMLMemphisPageElement" /> 
    77  </page> 
    88</xj:configuration> 
  • trunk/config/xml/pages/txt/main_index.xml

    r264 r267  
    2121      <stub:lang name="en_UK">Das ist ein "british english" Text.</stub:lang> 
    2222    </stub:langselect> 
    23     <div><p><ixsl:value-of select="/document/foo" /></p></div> 
     23    <div><p><ixsl:value-of select="/document/Test/foo" /></p></div> 
    2424    <p>foo</p> 
    2525  </part> 
  • trunk/src/main/php/_test/TestXMLPageElement.php

    r264 r267  
    22/** 
    33 * Example class for a xml page element. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
    77 * @subpackage  websites_xml 
    88 */ 
    9 stubClassLoader::load('net.stubbles.websites.xml.stubXMLPageElement'); 
     9stubClassLoader::load('net.stubbles.websites.stubBasePageElement', 
     10                      'net.stubbles.websites.xml.stubXMLPageElement' 
     11); 
    1012/** 
    1113 * Example class for a xml page element. 
    12  *  
     14 * 
    1315 * @package     stubbles 
    1416 * @subpackage  websites_xml 
    1517 */ 
    16 class TestXMLPageElement extends stubBaseObject implements stubXMLPageElement 
     18class TestXMLPageElement extends stubBasePageElement implements stubXMLPageElement 
    1719{ 
    1820    /** 
     
    2426     * @param  stubXMLStreamWriter  $document  the document to write the result as xml into 
    2527     */ 
    26     public function process(stubRequest $request, stubSession $session, stubResponse $response, stubXMLStreamWriter $document
     28    public function process(stubRequest $request, stubSession $session, stubResponse $response
    2729    { 
    28         $document->writeElement('foo', array(), 'Hello World!'); 
     30        return array('foo' => 'Hello World!'); 
    2931    } 
    3032} 
  • trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisPageElement.php

    r263 r267  
    22/** 
    33 * Interface for a memphis page element. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
    77 * @subpackage  websites_memphis 
    88 */ 
    9 stubClassLoader::load('net.stubbles.ipo.request.stubRequest', 
    10                       'net.stubbles.ipo.session.stubSession', 
    11                       'net.stubbles.ipo.response.stubBaseResponse' 
    12 ); 
     9stubClassLoader::load('net.stubbles.websites.stubPageElement'); 
    1310/** 
    1411 * Interface for a memphis page element. 
    15  *  
     12 * 
    1613 * @package     stubbles 
    1714 * @subpackage  websites_memphis 
    1815 */ 
    19 interface stubMemphisPageElement 
     16interface stubMemphisPageElement extends stubPageElement 
    2017{ 
    2118    /** 
     
    2522     */ 
    2623    public function setSource($source); 
    27      
     24 
    2825    /** 
    2926     * returns the source of the element 
    30      *  
     27     * 
    3128     * @return  string 
    3229     */ 
    3330    public function getSource(); 
    34      
    35     /** 
    36      * processes the page element 
    37      *  
    38      * Please note that an element should catch all exceptions and wrap them  
    39      * into the response! 
    40      * 
    41      * @param  stubRequest   $request   the request data 
    42      * @param  stubSession   $session   current session 
    43      * @param  stubResponse  $response  contains response data 
    44      */ 
    45     public function process(stubRequest $request, stubSession $session, stubResponse $response); 
    4631} 
    4732?> 
  • trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisPageProcessor.php

    r263 r267  
    22/** 
    33 * Processor for memphis pages. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
     
    1111                      'net.stubbles.ipo.session.stubSession', 
    1212                      'net.stubbles.ipo.response.stubBaseResponse', 
    13                       'net.stubbles.websites.memphis.stubMemphisPageFactory' 
     13                      'net.stubbles.websites.stubPageFactory' 
    1414); 
    1515/** 
    1616 * Processor for memphis pages. 
    17  *  
     17 * 
    1818 * @package     stubbles 
    1919 * @subpackage  websites_memphis 
     
    4242     * the factory that creates the page instance 
    4343     * 
    44      * @var  stubMemphisPageFactory 
     44     * @var  stubPageFactory 
    4545     */ 
    4646    protected $pageFactory; 
    47      
     47 
    4848    /** 
    4949     * constructor 
     
    5757        $this->session     = $session; 
    5858        $this->response    = new stubBaseResponse(); 
    59         $this->pageFactory = new stubMemphisPageFactory(stubXJConfLoader::getInstance()); 
     59        $this->pageFactory = new stubPageFactory(stubXJConfLoader::getInstance()); 
    6060    } 
    61      
     61 
    6262    /** 
    6363     * processes the request 
    64      *  
     64     * 
    6565     * @return  stubProcessor 
    6666     */ 
     
    7575            $pageName = 'index'; 
    7676        } 
    77          
     77 
    7878        try { 
    7979            $page = $this->pageFactory->getPage(stubConfig::getConfigPath() . '/xml/pages/memphis/' . $pageName . '.xml'); 
     
    8282            return $this; 
    8383        } 
    84          
    85         $page->process($this->request, $this->session, $this->response); 
     84 
     85        $elements = $page->getElements(); 
     86        foreach ($elements as $name => $element) { 
     87            $element->process($this->request, $this->session, $this->response); 
     88        } 
     89 
    8690        return $this; 
    8791    } 
    88      
     92 
    8993    /** 
    9094     * returns the created response 
  • trunk/src/main/php/net/stubbles/websites/memphis/stubSimpleHTMLMemphisPageElement.php

    r263 r267  
    22/** 
    33 * Class that represents an page element. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
    77 * @subpackage  websites_memphis 
    88 */ 
    9 stubClassLoader::load('net.stubbles.ipo.request.stubRequest', 
    10                       'net.stubbles.ipo.session.stubSession', 
    11                       'net.stubbles.ipo.response.stubBaseResponse', 
     9stubClassLoader::load('net.stubbles.websites.stubBasePageElement', 
    1210                      'net.stubbles.websites.memphis.stubMemphisPageElement' 
    1311); 
    1412/** 
    1513 * Class that represents an page element. 
    16  *  
     14 * 
    1715 * @package     stubbles 
    1816 * @subpackage  websites_memphis 
    1917 */ 
    20 class stubSimpleHTMLMemphisPageElement extends stubBaseObject implements stubMemphisPageElement 
     18class stubSimpleHTMLMemphisPageElement extends stubBasePageElement implements stubMemphisPageElement 
    2119{ 
    2220    /** 
     
    2624     */ 
    2725    protected $source = ''; 
    28      
     26 
    2927    /** 
    3028     * set the source of the element 
     
    3634        $this->source = $source; 
    3735    } 
    38      
     36 
    3937    /** 
    4038     * returns the source of the element 
    41      *  
     39     * 
    4240     * @return  string 
    4341     */ 
     
    4644        return $source; 
    4745    } 
    48      
     46 
    4947    /** 
    5048     * processes the page element 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLPageElement.php

    r266 r267  
    22/** 
    33 * Interface for a xml page element. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
    77 * @subpackage  websites_xml 
    88 */ 
    9 stubClassLoader::load('net.stubbles.ipo.request.stubRequest', 
    10                       'net.stubbles.ipo.session.stubSession', 
    11                       'net.stubbles.ipo.response.stubBaseResponse' 
    12 ); 
     9stubClassLoader::load('net.stubbles.websites.stubPageElement'); 
    1310/** 
    1411 * Interface for a xml page element. 
    15  *  
     12 * 
    1613 * @package     stubbles 
    1714 * @subpackage  websites_xml 
    1815 */ 
    19 interface stubXMLPageElement 
     16interface stubXMLPageElement extends stubPageElement 
    2017{ 
    21     /** 
    22      * processes the page element 
    23      * 
    24      * @param  stubRequest          $request   the request data 
    25      * @param  stubSession          $session   current session 
    26      * @param  stubResponse         $response  contains response data 
    27      * @param  stubXMLStreamWriter  $document  the document to write the result as xml into 
    28      */ 
    29     public function process(stubRequest $request, stubSession $session, stubResponse $response, stubXMLStreamWriter $document); 
     18    // intentionally empty 
    3019} 
    3120?> 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php

    r264 r267  
    22/** 
    33 * Default processor delivered by stubbles. 
    4  *  
     4 * 
    55 * @author      Frank Kleine <mikey@stubbles.net> 
    66 * @package     stubbles 
     
    1111                      'net.stubbles.ipo.session.stubSession', 
    1212                      'net.stubbles.ipo.response.stubBaseResponse', 
    13                       'net.stubbles.websites.xml.stubXMLPageFactory', 
     13                      'net.stubbles.websites.stubPageFactory', 
    1414                      'net.stubbles.util.validators.stubRegexValidator', 
    15                       'net.stubbles.xml.stubDomXMLStreamWriter' 
     15                      'net.stubbles.xml.stubDomXMLStreamWriter', 
     16                      'net.stubbles.xml.serializer.stubXMLSerializer' 
    1617); 
    1718/** 
    1819 * Default processor delivered by stubbles. 
    19  *  
     20 * 
    2021 * @package     stubbles 
    2122 * @subpackage  websites_xml 
    2223 * @todo        use a stubXMLStreamWriterFactory to create a stubXMLStreamWriter 
    23  * @todo        think about how to get the skin information from  
     24 * @todo        think about how to get the skin information from 
    2425 *              stubXMLPageDocument into the stubXMLPagePostInterceptor 
    2526 */ 
     
    4445     */ 
    4546    protected $response; 
    46      
     47 
    4748    /** 
    4849     * constructor 
     
    5758        $this->response    = new stubBaseResponse(); 
    5859    } 
    59      
     60 
    6061    /** 
    6162     * processes the request 
    62      *  
     63     * 
    6364     * @return  stubProcessor 
    6465     * @todo    think about putting default values into the result document 
     
    7475            $pageName = 'index'; 
    7576        } 
    76          
     77 
    7778        $xmlStreamWriter = new stubDomXMLStreamWriter(); 
    7879        $xmlStreamWriter->writeStartElement('document'); 
    79          
    80         $xmlPageFactory = new stubXMLPageFactory(stubXJConfLoader::getInstance()); 
    81         $page = $xmlPageFactory->getPage(stubConfig::getConfigPath() . '/xml/pages/conf/' . $pageName . '.xml'); 
    82         $page->process($this->request, $this->session, $this->response, $xmlStreamWriter); 
    83          
     80        $xmlSerializer = new stubXMLSerializer(); 
     81 
     82        $pageFactory = new stubPageFactory(stubXJConfLoader::getInstance()); 
     83        $page = $pageFactory->getPage(stubConfig::getConfigPath() . '/xml/pages/conf/' . $pageName . '.xml'); 
     84        $elements = $page->getElements(); 
     85        foreach ($elements as $name => $element) { 
     86            $data = $element->process($this->request, $this->session, $this->response); 
     87            $xmlSerializer->serialize($data, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 
     88        } 
     89 
     90 
    8491        $xmlStreamWriter->writeEndElement();  // end document 
    8592        $this->response->replaceData($xmlStreamWriter->asXML()); 
    86          
     93 
    8794        return $this; 
    8895    } 
    89      
     96 
    9097    /** 
    9198     * returns the created response