All pastes #929961 Raw Edit

Untitled

public text v1 · immutable
·published 2008-03-06 04:49 UTC
rendered paste body
<?php

require 'Structures/DataGrid.php';

class Account_OrdersView extends MVC_View_DOM {

    public function render( MVC_Request $p_oRequest ) {

        $_SESSION['menu_id'] = 100;

        $this->loadTemplate( 'orders' );

        // Instanciation du DataGrid
        $datagrid = new Structures_DataGrid(10);
        $datagrid->setDefaultSort( array('creation_date' => 'DESC') );

        // Libell�s des ent�tes de colonnes � associer aux champs de la BDD
        $l_asFieldsLabel = array(
            'creation_date' => 'Date de la commande',
            'number' => 'N� de la commande',
            'product' => 'D�signation'
        );

        // Param�trage de la source de donn�es
        $options = array(
            'dsn' => MVC::$config['DB_DataObject']['database'],
            'generate_columns' => true,
            'fields' => array_keys($l_asFieldsLabel),
            'labels' => $l_asFieldsLabel
        );

        // Attachement d'une requ�te SQL comme source de donn�es
        $test = $datagrid->bind(
            'SELECT
                id,
		creation_date,
                number,
                product
            FROM orders
            WHERE partner_id = ' . $_SESSION['partner']['siret'],
            $options,
            DATAGRID_SOURCE_MDB2
        );

        if ( !empty($datagrid->recordSet) ) {

            $l_asRowAttributes = array(
                'class' => 'order',
                'title' => 'cliquez pour afficher / cacher le d�tail de cette commande',
                'onclick' => 'showHideInfo(this);',
                'onmouseover' => 'highlightRow(this);',
                'onmouseout' => 'unHighlightRow(this);'
            );

            // Param�trage du rendu des donn�es
            $l_oHtmlTable = $datagrid->getRenderer();
            $l_oHtmlTable->setTableAttribute('class', 'blue');
            $l_oHtmlTable->setTableAttribute('title', '�tat de vos commandes');
            $l_oHtmlTable->setOptions( array(
                    'sortIconASC'  => '&#160;&#160;<span style="color:#fff;">&#8743;</span>',
                    'sortIconDESC' => '&#160;&#160;<span style="color:#fff;">&#8744;</span>',
                    'sortingResetsPaging' => false,
                    'evenRowAttributes' => $l_asRowAttributes,
                    'oddRowAttributes' => $l_asRowAttributes,
                )
            );

            // Ajout du tableau pagin� dans le template
            $this->addContent( $this->getNodes('//h1')->item(0),
                $datagrid->getOutput() .
                '<div id="navbar">' .
                $datagrid->getOutput(
                    DATAGRID_RENDER_PAGER,
                    array(
                        'pagerOptions' => array(
                            'prevImg'     => '<img src="arrow_previous.gif"/>',
                            'nextImg'     => '<img src="arrow_next.gif"/>',
                            'altPrev'     => 'aller � la page pr�c�dente',
                            'altPage'     => 'aller � la page ',
                            'altNext'     => 'aller � la page suivante',
                            'separator'   => '.',
                            'spacesBeforeSeparator' => 1,
                            'spacesAfterSeparator' => 1,
                            'curPageLinkClassName' => 'current_page_link'
                        )
                    )
                ) .
                '</div>'
            );

            // Ajout d'informations suppl�mentaires dans le tableau
            //
            // Ent�te du tableau :
            // - rattachement des �l�ments du tableau au libell� avec
            // l'attribut "scope"
            // - Ajout d'un attribut "title" aux liens situ�s dans les ent�tes de
            // colonnes.
            $l_iIndex = 1;
            $l_asHeaderTitles = array(
                1 => 'date de la commande',
                'num�ro de la commande',
                'rubrique de la commande',
            );
            foreach (array_values($l_asFieldsLabel) as $l_sLabel) {
                $this->setNodeAttribute('//thead/tr/th[' . $l_iIndex . ']', array('scope' => 'col', 'title' => $l_asHeaderTitles[$l_iIndex]));
                $this->setNodeAttribute('//thead/tr/th[' . $l_iIndex . ']/a', 'title', 'cliquez pour trier vos commandes par "' . $l_sLabel . '"');
                ++$l_iIndex;
            }

            // Insertion des supports de chaque commande � l'endroit appropri� dans
            // le template
            //
            // Instanciation d'un DataObject orders_supports et param�trage des
            // donn�es � r�cup�rer.
            $l_oOrderSupport = MVC_Model_DAO::factory('orders_supports');
            $l_oOrderSupport->keys('order_id');
            $l_oOrderSupport->selectAdd();
            $l_oOrderSupport->selectAdd('name, quantity, download_file');

            // R�cup�ration et affichage des supports de chaque commande
            $l_iIndex = 1;
            foreach ( $datagrid->recordSet as $l_asOrder ) {

                // "Vidage" du DataObject et r�cup�ration des supports pour la
                // commande courante
                $l_oOrderSupport->clear();
                $l_oOrderSupport->whereAdd();
                $l_oOrderSupport->whereAdd('order_id = ' . $l_asOrder['id']);
                $l_iSupportCount = $l_oOrderSupport->find();

                // Contruction d'une nouvelle ligne de tableau contenant la liste
                // des supports
                $l_sHtmlCode = sprintf(
                    '<tr class="order_detail"><td colspan="3">Cette commande contient le%1$s support%1$s suivant%1$s :<lu>',
                    $l_iSupportCount > 1 ? 's' : ''
                );
                while ( $l_oOrderSupport->fetch() ) {
                    $l_sHtmlCode .= '<li>';
                    /*if ( !empty($l_oOrderSupport->download_file) ) {
                        $l_sHtmlCode .= '<a href="pdf/' . $l_oOrderSupport->download_file . '"';
                        if ( preg_match( '/\.pdf$/i', $l_oOrderSupport->download_file ) ) $l_sHtmlCode .= ' target="_blank"';
                        $l_sHtmlCode .= ' class="arrow_link">' .  $l_oOrderSupport->quantity . ' ' . $l_oOrderSupport->name . '</a>';
                    }
                    else*/
                        $l_sHtmlCode .= $l_oOrderSupport->quantity . ' ' . $l_oOrderSupport->name;
                    $l_sHtmlCode .= '</li>';
                }
                $l_sHtmlCode .= '</lu></td></tr>';

                // Ajout de la nouvelle ligne dans le tableau, juste en-dessous de
                // la ligne contenant les infos de la commande courante
                $this->addContent( $this->getNodes('//tbody/tr[' . $l_iIndex . ']')->item(0), $l_sHtmlCode );
                $l_iIndex += 2;
            }
        }
        else
            $this->addContent( $this->getNodes('//h1')->item(0), '<p>Aucune commande pass�e ou en cours.</p>' );

        return $this->toString();
    }
}

?>