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 | |
---|
12 | require_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 | */ |
---|
21 | class 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 | ?> |
---|