Commit ca5cf2f6cf18c4db98bb38b771614c45a9b65f8c
1 parent
fba462a8
Exists in
master
and in
7 other branches
V6 - inclusão de opção no formulário de upload de shapefile para criar automatic…
…amente o mapfile de visualização. O mapfile é criado e registrado no editor de mapfiles
Showing
8 changed files
with
77 additions
and
22 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/editormapfile.php
@@ -23,7 +23,7 @@ Este programa é distribuído na expectativa de que seja útil | @@ -23,7 +23,7 @@ Este programa é distribuído na expectativa de que seja útil | ||
23 | porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | 23 | porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita |
24 | de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | 24 | de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. |
25 | Consulte a Licença Pública Geral do GNU para mais detalhes. | 25 | Consulte a Licença Pública Geral do GNU para mais detalhes. |
26 | -Você deve ter recebido uma cópia da Licença Pública Geral do | 26 | +Você deve ter recebido uma copia da Licença Pública Geral do |
27 | GNU junto com este programa; se não, escreva para a | 27 | GNU junto com este programa; se não, escreva para a |
28 | Free Software Foundation, Inc., no endereço | 28 | Free Software Foundation, Inc., no endereço |
29 | 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | 29 | 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. |
@@ -36,7 +36,7 @@ Parametros: | @@ -36,7 +36,7 @@ Parametros: | ||
36 | 36 | ||
37 | O parâmetro principal é "funcao", que define qual operação será executada, por exemplo, editormapfile.php?funcao=pegaMapfiles | 37 | O parâmetro principal é "funcao", que define qual operação será executada, por exemplo, editormapfile.php?funcao=pegaMapfiles |
38 | 38 | ||
39 | -Cada operação possuí seus próprios parâmetros, que devem ser enviados também na requisição da operação. | 39 | +Cada operação possuí seus proprios parâmetros, que devem ser enviados também na requisição da operação. |
40 | 40 | ||
41 | */ | 41 | */ |
42 | include_once(dirname(__FILE__)."/login.php"); | 42 | include_once(dirname(__FILE__)."/login.php"); |
@@ -82,6 +82,13 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){ | @@ -82,6 +82,13 @@ if(in_array(strtoupper($funcao),$funcoesEdicao)){ | ||
82 | } | 82 | } |
83 | } | 83 | } |
84 | error_reporting(0); | 84 | error_reporting(0); |
85 | +//define o parametro de output do resultado da funcao | ||
86 | +//algumas funcoes podem ser inseridas com include em outros programas | ||
87 | +//nesse caso, defina output como "retorno" | ||
88 | +//caso contrario sera definido como json | ||
89 | +if(empty($output)){ | ||
90 | + $output = "json"; | ||
91 | +} | ||
85 | //faz a busca da função que deve ser executada | 92 | //faz a busca da função que deve ser executada |
86 | switch (strtoupper($funcao)) | 93 | switch (strtoupper($funcao)) |
87 | { | 94 | { |
@@ -112,9 +119,14 @@ switch (strtoupper($funcao)) | @@ -112,9 +119,14 @@ switch (strtoupper($funcao)) | ||
112 | {JSON} | 119 | {JSON} |
113 | */ | 120 | */ |
114 | case "CRIARNOVOMAP": | 121 | case "CRIARNOVOMAP": |
115 | - retornaJSON(criarNovoMap()); | ||
116 | - exit; | ||
117 | - break; | 122 | + $resultado = criarNovoMap(); |
123 | + if($output == "retorno"){ | ||
124 | + return $resultado; | ||
125 | + }else{ | ||
126 | + retornaJSON($resultado); | ||
127 | + exit; | ||
128 | + } | ||
129 | + break; | ||
118 | 130 | ||
119 | case "DOWNLOADGVP": | 131 | case "DOWNLOADGVP": |
120 | if(file_exists($locaplic."/temas/".$codigoMap.".gvp")){ | 132 | if(file_exists($locaplic."/temas/".$codigoMap.".gvp")){ |
@@ -219,7 +231,7 @@ switch (strtoupper($funcao)) | @@ -219,7 +231,7 @@ switch (strtoupper($funcao)) | ||
219 | /* | 231 | /* |
220 | Valor: LIMPARCACHEMAPFILE | 232 | Valor: LIMPARCACHEMAPFILE |
221 | 233 | ||
222 | - Apaga o diretório contendo o cache de um tema (mapfile) | 234 | + Apaga o diret�rio contendo o cache de um tema (mapfile) |
223 | 235 | ||
224 | Parametros: | 236 | Parametros: |
225 | 237 | ||
@@ -256,7 +268,7 @@ switch (strtoupper($funcao)) | @@ -256,7 +268,7 @@ switch (strtoupper($funcao)) | ||
256 | 268 | ||
257 | Exclui um mapfile. | 269 | Exclui um mapfile. |
258 | 270 | ||
259 | - Só é possível excluir se o mapfile não estiver vinculado a nenhum tema ou nó da árvore de temas | 271 | + S� é possível excluir se o mapfile não estiver vinculado a nenhum tema ou n� da árvore de temas |
260 | 272 | ||
261 | Parametros: | 273 | Parametros: |
262 | 274 | ||
@@ -310,7 +322,7 @@ switch (strtoupper($funcao)) | @@ -310,7 +322,7 @@ switch (strtoupper($funcao)) | ||
310 | 322 | ||
311 | maporigem {string} - nome completo do arquivo mapfile que contem o layer que será utilizado para alterar o original | 323 | maporigem {string} - nome completo do arquivo mapfile que contem o layer que será utilizado para alterar o original |
312 | 324 | ||
313 | - nomelayer {string} - código do layer em mapfile que será utilizado para atualizar codigoMap | 325 | + nomelayer {string} - c�digo do layer em mapfile que será utilizado para atualizar codigoMap |
314 | 326 | ||
315 | Retorno: | 327 | Retorno: |
316 | 328 | ||
@@ -344,7 +356,7 @@ switch (strtoupper($funcao)) | @@ -344,7 +356,7 @@ switch (strtoupper($funcao)) | ||
344 | 356 | ||
345 | Cria um novo layer em um mapfile | 357 | Cria um novo layer em um mapfile |
346 | 358 | ||
347 | - O novo layer receberá um nome aleatório, que pode ser modificado posteriormente. Por default, esse novo layer será do tipo linear | 359 | + O novo layer receberá um nome aleat�rio, que pode ser modificado posteriormente. Por default, esse novo layer será do tipo linear |
348 | 360 | ||
349 | Parametros: | 361 | Parametros: |
350 | 362 | ||
@@ -1170,12 +1182,15 @@ function sobeDesce() | @@ -1170,12 +1182,15 @@ function sobeDesce() | ||
1170 | removeCabecalho($mapfile); | 1182 | removeCabecalho($mapfile); |
1171 | return "ok"; | 1183 | return "ok"; |
1172 | } | 1184 | } |
1185 | +//essa funcao e usada tambem por i3geo/ferramentas/upload/upload.php | ||
1173 | function criarNovoMap() | 1186 | function criarNovoMap() |
1174 | { | 1187 | { |
1175 | - global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat; | 1188 | + global $nome,$codigo,$locaplic,$it,$en,$es,$esquemaadmin,$metaestat,$tipoLayer,$data; |
1176 | $arq = $locaplic."/temas/".$codigo.".map"; | 1189 | $arq = $locaplic."/temas/".$codigo.".map"; |
1177 | - if(!file_exists($arq)) | ||
1178 | - { | 1190 | + if(!file_exists($arq)){ |
1191 | + if(empty($tipoLayer)){ | ||
1192 | + $tipoLayer = "line"; | ||
1193 | + } | ||
1179 | $dados[] = "MAP"; | 1194 | $dados[] = "MAP"; |
1180 | $dados[] = "SYMBOLSET ../symbols/simbolosv6.sym"; | 1195 | $dados[] = "SYMBOLSET ../symbols/simbolosv6.sym"; |
1181 | $dados[] = 'FONTSET "../symbols/fontes.txt"'; | 1196 | $dados[] = 'FONTSET "../symbols/fontes.txt"'; |
@@ -1184,12 +1199,15 @@ function criarNovoMap() | @@ -1184,12 +1199,15 @@ function criarNovoMap() | ||
1184 | $dados[] = ' TEMPLATE "none.htm"'; | 1199 | $dados[] = ' TEMPLATE "none.htm"'; |
1185 | if(!empty($metaestat) && $metaestat == "SIM"){ | 1200 | if(!empty($metaestat) && $metaestat == "SIM"){ |
1186 | $dados[] = ' CONNECTIONTYPE POSTGIS'; | 1201 | $dados[] = ' CONNECTIONTYPE POSTGIS'; |
1187 | - $dados[] = " TYPE polygon"; | 1202 | + $tipoLayer = "polygon"; |
1203 | + } | ||
1204 | + $dados[] = " TYPE ".$tipoLayer; | ||
1205 | + if(empty($data)){ | ||
1206 | + $dados[] = ' DATA ""'; | ||
1188 | } | 1207 | } |
1189 | else{ | 1208 | else{ |
1190 | - $dados[] = " TYPE line"; | 1209 | + $dados[] = ' DATA "'.$data.'"'; |
1191 | } | 1210 | } |
1192 | - $dados[] = ' DATA ""'; | ||
1193 | $dados[] = ' METADATA'; | 1211 | $dados[] = ' METADATA'; |
1194 | $dados[] = ' TEMA "'.$nome.'"'; | 1212 | $dados[] = ' TEMA "'.$nome.'"'; |
1195 | $dados[] = ' CLASSE "SIM"'; | 1213 | $dados[] = ' CLASSE "SIM"'; |
@@ -1207,6 +1225,9 @@ function criarNovoMap() | @@ -1207,6 +1225,9 @@ function criarNovoMap() | ||
1207 | $dados[] = ' STYLE'; | 1225 | $dados[] = ' STYLE'; |
1208 | $dados[] = ' COLOR 0 0 0'; | 1226 | $dados[] = ' COLOR 0 0 0'; |
1209 | $dados[] = ' SIZE 12'; | 1227 | $dados[] = ' SIZE 12'; |
1228 | + if($tipoLayer == "point"){ | ||
1229 | + $dados[] = " SYMBOL 'ponto'"; | ||
1230 | + } | ||
1210 | $dados[] = ' END'; | 1231 | $dados[] = ' END'; |
1211 | $dados[] = ' END'; | 1232 | $dados[] = ' END'; |
1212 | $dados[] = "END"; | 1233 | $dados[] = "END"; |
css/geral.css
@@ -181,7 +181,7 @@ select option:hover { | @@ -181,7 +181,7 @@ select option:hover { | ||
181 | .aplicar | 181 | .aplicar |
182 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} | 182 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} |
183 | .digitar | 183 | .digitar |
184 | -{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(250,250,250); font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} | 184 | +{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(180,180,180); height:17px; font-size: 12px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
185 | .digitarOver | 185 | .digitarOver |
186 | { | 186 | { |
187 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; | 187 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; |
css/i3geo6.css
@@ -176,7 +176,7 @@ font-size: 13px; | @@ -176,7 +176,7 @@ font-size: 13px; | ||
176 | .aplicar | 176 | .aplicar |
177 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} | 177 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} |
178 | .digitar | 178 | .digitar |
179 | -{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(250,250,250); font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} | 179 | +{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(180,180,180); height:17px; font-size: 12px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
180 | .digitarOver | 180 | .digitarOver |
181 | { | 181 | { |
182 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; | 182 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; |
css/i3geo6.css.php
@@ -176,7 +176,7 @@ font-size: 13px; | @@ -176,7 +176,7 @@ font-size: 13px; | ||
176 | .aplicar | 176 | .aplicar |
177 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} | 177 | {visibility:visible;color: #2F4632;background:rgb(240,240,240);text-align: center;font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px;border-style:outset;border-width:2px;border-color:#cc0000;cursor:pointer;z-index:1000;} |
178 | .digitar | 178 | .digitar |
179 | -{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(250,250,250); font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} | 179 | +{box-shadow:1px 1px 3px 0px lightgray;margin:0px;color:#426252;background-color:white;border:1px solid rgb(180,180,180); height:17px; font-size: 12px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
180 | .digitarOver | 180 | .digitarOver |
181 | { | 181 | { |
182 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; | 182 | margin:0px;color:#426252;background-color:#F6F6F6;border:1px solid rgb(250,250,250);font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif; |
ferramentas/upload/dicionario.js
1 | //+$trad(1,i3GEOF.upload.dicionario)+ | 1 | //+$trad(1,i3GEOF.upload.dicionario)+ |
2 | i3GEOF.upload.dicionario = { | 2 | i3GEOF.upload.dicionario = { |
3 | 1: [{ | 3 | 1: [{ |
4 | - pt:"pasta no servidor onde os dados<br>serão armazenados (obrigatório)", | 4 | + pt:"Pasta no servidor onde os dados serão armazenados (obrigatório se você estiver utilizando o formulário dentro do sistema de administração)", |
5 | en:"", | 5 | en:"", |
6 | es:"", | 6 | es:"", |
7 | it:"" | 7 | it:"" |
@@ -55,7 +55,7 @@ i3GEOF.upload.dicionario = { | @@ -55,7 +55,7 @@ i3GEOF.upload.dicionario = { | ||
55 | it:"" | 55 | it:"" |
56 | }], | 56 | }], |
57 | 10: [{ | 57 | 10: [{ |
58 | - pt:"", | 58 | + pt:"Marque para criar o arquivo de configuração (mapfile) e visualizar os dados no mapa interativo (você poderá editar esse arquivo posteriormente no editor de mapfiles)", |
59 | en:"", | 59 | en:"", |
60 | es:"", | 60 | es:"", |
61 | it:"" | 61 | it:"" |
ferramentas/upload/index.js
@@ -108,8 +108,10 @@ i3GEOF.upload = { | @@ -108,8 +108,10 @@ i3GEOF.upload = { | ||
108 | '<p class="paragrafo" >shx: <br><input type="file" size=22 name="i3GEOuploadshx" style="top:0px;left:0px;cursor:pointer;"></p>' + | 108 | '<p class="paragrafo" >shx: <br><input type="file" size=22 name="i3GEOuploadshx" style="top:0px;left:0px;cursor:pointer;"></p>' + |
109 | '<p class="paragrafo" >dbf: <br><input type="file" size=22 name="i3GEOuploaddbf" style="top:0px;left:0px;cursor:pointer;"></p>'; | 109 | '<p class="paragrafo" >dbf: <br><input type="file" size=22 name="i3GEOuploaddbf" style="top:0px;left:0px;cursor:pointer;"></p>'; |
110 | if(i3GEO.parametros.editor === "sim"){ | 110 | if(i3GEO.parametros.editor === "sim"){ |
111 | - ins += '<p class="paragrafo" >'+$trad(1,i3GEOF.upload.dicionario)+':<br><input class=digitar type="text" size=45 name="dirDestino" id="dirDestino" style="top:0px;left:0px;cursor:pointer;">'; | ||
112 | - ins += " <img onclick='i3GEO.util.navegadorDir(\"dirDestino\",false,false,false,true);' src='"+i3GEO.configura.locaplic+"/imagens/ic_zoom.png' style='cursor:pointer;position :relative;top:2px'/></p>"; | 111 | + ins += '<p class="paragrafo" >'+$trad(1,i3GEOF.upload.dicionario)+':<br>' + |
112 | + '<input class=digitar type="text" size=45 name="dirDestino" id="dirDestino" style="top:0px;left:0px;cursor:pointer;">' + | ||
113 | + " <img onclick='i3GEO.util.navegadorDir(\"dirDestino\",false,false,false,true);' src='"+i3GEO.configura.locaplic+"/imagens/ic_zoom.png' style='cursor:pointer;position :relative;top:2px'/></p>" + | ||
114 | + '<p class="paragrafo" ><input type=checkbox name=i3GEOuploadCriaMapfile id=i3GEOuploadCriaMapfile /> '+$trad(10,i3GEOF.upload.dicionario); | ||
113 | } | 115 | } |
114 | ins += '<p class="paragrafo" >'+$trad(2,i3GEOF.upload.dicionario)+': ' + | 116 | ins += '<p class="paragrafo" >'+$trad(2,i3GEOF.upload.dicionario)+': ' + |
115 | ' <select id=tipo name=tipo >' + | 117 | ' <select id=tipo name=tipo >' + |
ferramentas/upload/upload.php
@@ -20,6 +20,7 @@ if (ob_get_level() == 0) ob_start(); | @@ -20,6 +20,7 @@ if (ob_get_level() == 0) ob_start(); | ||
20 | <head> | 20 | <head> |
21 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> | 21 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> |
22 | <link rel="stylesheet" type="text/css" href="../../css/geral.css" /> | 22 | <link rel="stylesheet" type="text/css" href="../../css/geral.css" /> |
23 | +<script src="../../classesjs/classe_util.js"></script> | ||
23 | <title></title> | 24 | <title></title> |
24 | </head> | 25 | </head> |
25 | <body bgcolor="white" style="background-color:white;text-align:left;"> | 26 | <body bgcolor="white" style="background-color:white;text-align:left;"> |
@@ -75,6 +76,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])) | @@ -75,6 +76,7 @@ if (isset($_FILES['i3GEOuploadshp']['name'])) | ||
75 | 76 | ||
76 | echo "<p class='paragrafo' >Arquivo enviado.</p>"; | 77 | echo "<p class='paragrafo' >Arquivo enviado.</p>"; |
77 | echo "<p class='paragrafo'>Nome: ".$dirmap."/".$nomePrefixo.".shp </p>"; | 78 | echo "<p class='paragrafo'>Nome: ".$dirmap."/".$nomePrefixo.".shp </p>"; |
79 | + //nesse caso o formulario de upload esta sendo executado de dentro de um mapa interativo, por isso o mapfile ja existe | ||
78 | if(isset($map_file)){ | 80 | if(isset($map_file)){ |
79 | echo "<p class='paragrafo' >Adicionando tema...</p>"; | 81 | echo "<p class='paragrafo' >Adicionando tema...</p>"; |
80 | ob_flush(); | 82 | ob_flush(); |
@@ -126,6 +128,36 @@ if (isset($_FILES['i3GEOuploadshp']['name'])) | @@ -126,6 +128,36 @@ if (isset($_FILES['i3GEOuploadshp']['name'])) | ||
126 | echo "<b><p class='paragrafo' >Tema criado!!! Redesenhando o mapa."; | 128 | echo "<b><p class='paragrafo' >Tema criado!!! Redesenhando o mapa."; |
127 | echo "<script>window.scrollTo(0,10000);window.parent.i3GEO.atualiza()</script>"; | 129 | echo "<script>window.scrollTo(0,10000);window.parent.i3GEO.atualiza()</script>"; |
128 | } | 130 | } |
131 | + elseif($i3GEOuploadCriaMapfile == "on"){ | ||
132 | + //verifica se o usuario marcou a opcao de cria mapfile | ||
133 | + //nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera | ||
134 | + //ser criado e registrado no sistema | ||
135 | + $nome = $nomePrefixo; | ||
136 | + $codigo = $nomePrefixo; | ||
137 | + $it = $nomePrefixo; | ||
138 | + $en = $nomePrefixo; | ||
139 | + $es = $nomePrefixo; | ||
140 | + $sfileObj = ms_newShapefileObj($dirmap."/".$nomePrefixo.".shp", -1); | ||
141 | + if(!isset($tipo) || $tipo == ""){ | ||
142 | + $tipo = $sfileObj->type; | ||
143 | + } | ||
144 | + if ($tipo == 1){ | ||
145 | + $tipoLayer = "point"; | ||
146 | + } | ||
147 | + if ($tipo == 3){ | ||
148 | + $tipoLayer = "line"; | ||
149 | + } | ||
150 | + if ($tipo == 5){ | ||
151 | + $tipoLayer = "polygon"; | ||
152 | + } | ||
153 | + $funcao = "CRIARNOVOMAP"; | ||
154 | + $output = "retorno"; | ||
155 | + $data = $dirmap."/".$nomePrefixo.".shp"; | ||
156 | + include_once($locaplic."/admin/php/editormapfile.php"); | ||
157 | + echo "<b><p class='paragrafo' >Criado!!!<br>"; | ||
158 | + echo "Para editar clique: <a href='../../admin/html/editormapfile.html' target=_blank >".$nomePrefixo."</a>"; | ||
159 | + echo "<script>window.scrollTo(0,10000);i3GEO.util.insereCookie('I3GEOletraAdmin','".$nomePrefixo."');</script>"; | ||
160 | + } | ||
129 | } | 161 | } |
130 | else | 162 | else |
131 | { | 163 | { |