source: branches/1.2/workflow/inc/class.workflow_smarty.inc.php @ 1349

Revision 1349, 5.5 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • 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                $smartyDirectory = isset($_SESSION['phpgw_info']['workflow']['vfs_basedir']) ?
83                        $_SESSION['phpgw_info']['workflow']['vfs_basedir'] . '/workflow/smarty':
84                        $GLOBALS['phpgw_info']['server']['files_dir'] . '/workflow/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                        'main' => $smartyDirectory,
95                        'template' => array(
96                                "{$documentRoot}/workflow/templates/{$templateSet}",
97                                "{$documentRoot}/workflow/templates/default"
98                        ),
99                        'compile' => $smartyDirectory . '/compile',
100                        'config' => $smartyDirectory . '/config',
101                        'cache' => $smartyDirectory . '/cache'
102                );
103
104                /* if necessary, create the directories */
105                if (!is_dir($directories['main']))
106                        foreach ($directories as $key => $dir)
107                                if ($key != 'template')
108                                        if (!is_dir($dir))
109                                                @mkdir($dir,0770);
110
111                /* setup the Smarty configuration */
112                $this->template_dir = $directories['template'];
113                $this->compile_dir = $directories['compile'];
114                $this->config_dir = $directories['config'];
115                $this->cache_dir = $directories['cache'];
116                $this->plugins_dir[] = $documentRoot . '/workflow/inc/smarty/module_plugins';
117
118                if ($createHeader)
119                        $this->setHeader(workflow_smarty::SHOW_HEADER | workflow_smarty::SHOW_NAVIGATION_BAR | workflow_smarty::SHOW_FOOTER);
120        }
121
122   /**
123         * Define os elementos do template padrão, do ExpressoLivre, que serão exibidos
124         * @param int $config Um inteiro que representa quais os elementos que serão exibidos
125         * @param string $applicationTitle O título da aplicação, opcional (valor padrão: Workflow)
126         * @return void
127         * @access public
128         */
129        public function setHeader($config, $applicationTitle = 'Workflow')
130        {
131                $this->showHeader = (bool) ($config & workflow_smarty::SHOW_HEADER);
132                $this->showNavigationBar = (bool) ($config & workflow_smarty::SHOW_NAVIGATION_BAR);
133                $this->showFooter = (bool) ($config & workflow_smarty::SHOW_FOOTER);
134                $this->showHeader = $this->showHeader || $this->showNavigationBar;
135
136                $GLOBALS['phpgw_info']['flags']['app_header'] = $applicationTitle;
137                $GLOBALS['phpgw_info']['flags'] = array(
138                        'noheader' => true,
139                        'nonavbar' => true,
140                        'currentapp' => 'workflow'
141                );
142
143                $this->createHeader();
144        }
145
146   /**
147         * Cria o cabeçalho de acordo com os elementos selecionados
148         * @return void
149         * @access private
150         */
151        private function createHeader()
152        {
153                /* get the header code */
154                if ($this->showHeader)
155                {
156                        ob_start();
157                        $GLOBALS['phpgw']->common->phpgw_header();
158                        if ($this->showNavigationBar)
159                                parse_navbar();
160                        $this->expressoHeader = ob_get_contents();
161                        ob_end_clean();
162                }
163
164                /* get the footer code */
165                if ($this->showFooter)
166                {
167                        ob_start();
168                        $GLOBALS['phpgw']->common->phpgw_footer();
169                        $this->expressoFooter = ob_get_contents();
170                        ob_end_clean();
171                }
172        }
173}
174?>
Note: See TracBrowser for help on using the repository browser.