source: branches/2.2/workflow/inc/class.workflow_smarty.inc.php @ 3167

Revision 3167, 5.5 KB checked in by viani, 14 years ago (diff)

Ticket #1135 - Merged r1990:3166 from /trunk/workflow into /branches/2.2/workflow

  • Property svn:executable set to *
Line 
1<?php
2/**************************************************************************\
3* eGroupWare                                                               *
4* http://www.egroupware.org                                                *
5* --------------------------------------------                             *
6*  This program is free software; you can redistribute it and/or modify it *
7*  under the terms of the GNU General Public License as published by the   *
8*  Free Software Foundation; either version 2 of the License, or (at your  *
9*  option) any later version.                                              *
10\**************************************************************************/
11
12require_once 'smarty/Smarty.class.php';
13
14/**
15 * Classe para utilizar o Smarty na criação de interfaces do módulo.
16 * @package Workflow
17 * @author Sidnei Augusto Drovetto Jr. - drovetto@gmail.com
18 * @license http://www.gnu.org/copyleft/gpl.html GPL
19 */
20class workflow_smarty extends Smarty
21{
22        /**
23         * Valor usado para indicar a exibição do cabeçalho
24         * @name SHOW_HEADER
25         */
26        const SHOW_HEADER = 1;
27
28        /**
29         * Valor usado para indicar a exibição da barra de navegação
30         * @name SHOW_NAVIGATION_BAR
31         */
32        const SHOW_NAVIGATION_BAR = 2;
33
34        /**
35         * Valor usado para indicar a exibição do rodapé
36         * @name SHOW_FOOTER
37         */
38        const SHOW_FOOTER = 4;
39
40        /**
41         * @var string $expressoHeader Cabeçalho do Expresso.
42         * @access public
43         */
44        public $expressoHeader = '';
45
46        /**
47         * @var string $expressoFooter Rodapé do Expresso.
48         * @access public
49         */
50        public $expressoFooter = '';
51
52        /**
53         * @var bool $showHeader Indicador de exibição do rodapé
54         * @access private
55         */
56        private $showHeader = true;
57
58        /**
59         * @var bool $showNavigationBar Indicador de exibição da barra de navegação (se utilizado, o cabeçalho também será exibido)
60         * @access private
61         */
62        private $showNavigationBar = true;
63
64        /**
65         * @var bool $showFooter Indicador de exibição do rodapé
66         * @access private
67         */
68        private $showFooter = true;
69
70   /**
71         * Construtor da classe workflow_smarty
72         * @param bool $createHeader Indica que o cabeçalho/rodapé devem ser "criados" na criação do objeto (se true, irá criar: cabeçalho, barra de navegação e rodapé)
73         * @return object
74         * @access public
75         */
76        function workflow_smarty($createHeader = true)
77        {
78                $this->Smarty();
79
80                /* define some directories */
81                $workflowHomeDirectory = isset($_SESSION['phpgw_info']['workflow']['vfs_basedir']) ?
82                        $_SESSION['phpgw_info']['workflow']['vfs_basedir'] . '/workflow':
83                        $GLOBALS['phpgw_info']['server']['files_dir'] . '/workflow';
84                $smartyDirectory = $workflowHomeDirectory . '/smarty';
85                $templateSet = isset($_SESSION['phpgw_info']['workflow']['server']['template_set']) ?
86                        $_SESSION['phpgw_info']['workflow']['server']['template_set'] :
87                        $GLOBALS['phpgw_info']['server']['template_set'];
88                $documentRoot = isset($_SESSION['phpgw_info']['workflow']['server_root']) ?
89                        $_SESSION['phpgw_info']['workflow']['server_root'] :
90                        $_SERVER['DOCUMENT_ROOT'] . $GLOBALS['phpgw_info']['server']['webserver_url'];
91
92                /* list of directories used by the Smarty Template Engine */
93                $directories = array(
94                        'home' => $workflowHomeDirectory,
95                        'main' => $smartyDirectory,
96                        'template' => array(
97                                "{$documentRoot}/workflow/templates/{$templateSet}",
98                                "{$documentRoot}/workflow/templates/default"
99                        ),
100                        'compile' => $smartyDirectory . '/compile',
101                        'config' => $smartyDirectory . '/config',
102                        'cache' => $smartyDirectory . '/cache'
103                );
104
105                /* if necessary, create the directories */
106                if (!is_dir($directories['main']))
107                        foreach ($directories as $key => $dir)
108                                if ($key != 'template')
109                                        if (!is_dir($dir))
110                                                @mkdir($dir,0770);
111
112                /* setup the Smarty configuration */
113                $this->template_dir = $directories['template'];
114                $this->compile_dir = $directories['compile'];
115                $this->config_dir = $directories['config'];
116                $this->cache_dir = $directories['cache'];
117                $this->plugins_dir[] = $documentRoot . '/workflow/inc/smarty/module_plugins';
118
119                if ($createHeader)
120                        $this->setHeader(workflow_smarty::SHOW_HEADER | workflow_smarty::SHOW_NAVIGATION_BAR | workflow_smarty::SHOW_FOOTER);
121        }
122
123   /**
124         * Define os elementos do template padrão, do ExpressoLivre, que serão exibidos
125         * @param int $config Um inteiro que representa quais os elementos que serão exibidos
126         * @param string $applicationTitle O título da aplicação, opcional (valor padrão: Workflow)
127         * @return void
128         * @access public
129         */
130        public function setHeader($config, $applicationTitle = 'Workflow')
131        {
132                $this->showHeader = (bool) ($config & workflow_smarty::SHOW_HEADER);
133                $this->showNavigationBar = (bool) ($config & workflow_smarty::SHOW_NAVIGATION_BAR);
134                $this->showFooter = (bool) ($config & workflow_smarty::SHOW_FOOTER);
135                $this->showHeader = $this->showHeader || $this->showNavigationBar;
136
137                $GLOBALS['phpgw_info']['flags']['app_header'] = $applicationTitle;
138                $GLOBALS['phpgw_info']['flags'] = array(
139                        'noheader' => true,
140                        'nonavbar' => true,
141                        'currentapp' => 'workflow'
142                );
143
144                $this->createHeader();
145        }
146
147   /**
148         * Cria o cabeçalho de acordo com os elementos selecionados
149         * @return void
150         * @access private
151         */
152        private function createHeader()
153        {
154                /* get the header code */
155                if ($this->showHeader)
156                {
157                        ob_start();
158                        $GLOBALS['phpgw']->common->phpgw_header();
159                        if ($this->showNavigationBar)
160                                parse_navbar();
161                        $this->expressoHeader = ob_get_contents();
162                        ob_end_clean();
163                }
164
165                /* get the footer code */
166                if ($this->showFooter)
167                {
168                        ob_start();
169                        $GLOBALS['phpgw']->common->phpgw_footer();
170                        $this->expressoFooter = ob_get_contents();
171                        ob_end_clean();
172                }
173        }
174}
175?>
Note: See TracBrowser for help on using the repository browser.