source: trunk/workflow/inc/class.workflow_smarty.inc.php @ 1227

Revision 1227, 5.5 KB checked in by viani, 15 years ago (diff)

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