Commit 4aa53048f3879dcb3a2495346a3ee1db9cc35c32
1 parent
b6725ed0
Exists in
master
and in
7 other branches
Inclusão de função de ordenação na edição da árvore do catálogo
Showing
6 changed files
with
138 additions
and
5 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/admin.php
@@ -313,6 +313,38 @@ function i3GeoAdminInsertUnico($pdo,$tabela,$data,$colTemp,$colId){ | @@ -313,6 +313,38 @@ function i3GeoAdminInsertUnico($pdo,$tabela,$data,$colTemp,$colId){ | ||
313 | return "UPDATE ID "; | 313 | return "UPDATE ID "; |
314 | } | 314 | } |
315 | } | 315 | } |
316 | +function i3GeoAdminOrdena($pdo,$ordem,$tabela,$colunaid){ | ||
317 | + global $esquemaadmin; | ||
318 | + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | ||
319 | + $arr = array(); | ||
320 | + $n = count($ordem) + 1; | ||
321 | + for($i = 1; $i < $n; $i++){ | ||
322 | + $arr[$ordem[$i - 1]] = $i; | ||
323 | + } | ||
324 | + $str_ids = implode(',', array_keys($arr)); | ||
325 | + $str_when_then = ""; | ||
326 | + foreach($arr as $id => $ordem) { | ||
327 | + $str_when_then .= sprintf(" WHEN " . $colunaid . " = %d THEN %s ", | ||
328 | + $id, | ||
329 | + $ordem // note, you'd sanitize this if from user input | ||
330 | + ); | ||
331 | + } | ||
332 | + //whitespace + appends included in example for readability | ||
333 | + $template = "UPDATE '".$esquemaadmin . $tabela."' " | ||
334 | + . " SET 'ordem' = CASE " | ||
335 | + . " %s " | ||
336 | + . " END " | ||
337 | + . " WHERE " . $colunaid . " IN (%s);"; | ||
338 | + $sql = sprintf($template, $str_when_then, $str_ids); | ||
339 | + | ||
340 | + try { | ||
341 | + $resultado = $pdo->query($sql); | ||
342 | + } catch (PDOException $e) { | ||
343 | + return false; | ||
344 | + } | ||
345 | + i3GeoAdminInsertLog($pdo,$sql,array()); | ||
346 | + return true; | ||
347 | +} | ||
316 | //$logTransacoes vem do ms_configura.php | 348 | //$logTransacoes vem do ms_configura.php |
317 | //ver tambem classe_metaestat.php | 349 | //ver tambem classe_metaestat.php |
318 | function i3GeoAdminInsertLog($pdo,$sql,$data=array()){ | 350 | function i3GeoAdminInsertLog($pdo,$sql,$data=array()){ |
admin1/catalogo/menus/grupos/exec.php
@@ -34,7 +34,8 @@ include_once (dirname ( __FILE__ ) . "/../../../../admin/php/login.php"); | @@ -34,7 +34,8 @@ include_once (dirname ( __FILE__ ) . "/../../../../admin/php/login.php"); | ||
34 | $funcoesEdicao = array ( | 34 | $funcoesEdicao = array ( |
35 | "ADICIONAR", | 35 | "ADICIONAR", |
36 | "ALTERAR", | 36 | "ALTERAR", |
37 | - "EXCLUIR" | 37 | + "EXCLUIR", |
38 | + "ORDENA" | ||
38 | ); | 39 | ); |
39 | if (in_array ( strtoupper ( $funcao ), $funcoesEdicao )) { | 40 | if (in_array ( strtoupper ( $funcao ), $funcoesEdicao )) { |
40 | if (verificaOperacaoSessao ( "admin/html/arvore" ) === false) { | 41 | if (verificaOperacaoSessao ( "admin/html/arvore" ) === false) { |
@@ -46,6 +47,31 @@ include (dirname ( __FILE__ ) . "/../../../../admin/php/conexao.php"); | @@ -46,6 +47,31 @@ include (dirname ( __FILE__ ) . "/../../../../admin/php/conexao.php"); | ||
46 | 47 | ||
47 | $funcao = strtoupper ( $funcao ); | 48 | $funcao = strtoupper ( $funcao ); |
48 | switch ($funcao) { | 49 | switch ($funcao) { |
50 | + case "ORDENA" : | ||
51 | + $ordem = explode(" ",$ordem); | ||
52 | + //verifica se existe a mesma quantidade de registros no banco e na lista de ids | ||
53 | + $dados = pegaDados ( "SELECT ordem from ".$esquemaadmin."i3geoadmin_n1 WHERE id_menu = $id_menu", $dbh, false ); | ||
54 | + if(count($dados) != count($ordem)){ | ||
55 | + header ( "HTTP/1.1 500 erro numero de registros nao batem" ); | ||
56 | + exit (); | ||
57 | + } | ||
58 | + //verifica se os ids existem no mesmo nivel | ||
59 | + $dados = pegaDados ( "SELECT ordem from ".$esquemaadmin."i3geoadmin_n1 WHERE id_menu = $id_menu AND id_n1 IN (" . implode(",",$ordem). ")", $dbh, false ); | ||
60 | + if(count($dados) != count($ordem)){ | ||
61 | + header ( "HTTP/1.1 500 erro ids nao batem" ); | ||
62 | + exit (); | ||
63 | + } | ||
64 | + | ||
65 | + $retorna = i3GeoAdminOrdena($dbhw,$ordem,i3geoadmin_n1,"id_n1"); | ||
66 | + $dbhw = null; | ||
67 | + $dbh = null; | ||
68 | + if ($retorna === false) { | ||
69 | + header ( "HTTP/1.1 500 erro ao ordenar" ); | ||
70 | + exit (); | ||
71 | + } | ||
72 | + retornaJSON ( $retorna ); | ||
73 | + exit(); | ||
74 | + break; | ||
49 | case "ADICIONAR" : | 75 | case "ADICIONAR" : |
50 | $novo = adicionar( $id_grupo, $id_menu, $publicado, $n1_perfil, $ordem, $dbhw ); | 76 | $novo = adicionar( $id_grupo, $id_menu, $publicado, $n1_perfil, $ordem, $dbhw ); |
51 | if ($novo === false) { | 77 | if ($novo === false) { |
admin1/catalogo/menus/grupos/execraiz.php
@@ -34,7 +34,8 @@ include_once (dirname ( __FILE__ ) . "/../../../../admin/php/login.php"); | @@ -34,7 +34,8 @@ include_once (dirname ( __FILE__ ) . "/../../../../admin/php/login.php"); | ||
34 | $funcoesEdicao = array ( | 34 | $funcoesEdicao = array ( |
35 | "ADICIONAR", | 35 | "ADICIONAR", |
36 | "ALTERAR", | 36 | "ALTERAR", |
37 | - "EXCLUIR" | 37 | + "EXCLUIR", |
38 | + "ORDENA" | ||
38 | ); | 39 | ); |
39 | if (in_array ( strtoupper ( $funcao ), $funcoesEdicao )) { | 40 | if (in_array ( strtoupper ( $funcao ), $funcoesEdicao )) { |
40 | if (verificaOperacaoSessao ( "admin/html/arvore" ) === false) { | 41 | if (verificaOperacaoSessao ( "admin/html/arvore" ) === false) { |
@@ -46,6 +47,31 @@ include (dirname ( __FILE__ ) . "/../../../../admin/php/conexao.php"); | @@ -46,6 +47,31 @@ include (dirname ( __FILE__ ) . "/../../../../admin/php/conexao.php"); | ||
46 | 47 | ||
47 | $funcao = strtoupper ( $funcao ); | 48 | $funcao = strtoupper ( $funcao ); |
48 | switch ($funcao) { | 49 | switch ($funcao) { |
50 | + case "ORDENA" : | ||
51 | + $ordem = explode(" ",$ordem); | ||
52 | + //verifica se existe a mesma quantidade de registros no banco e na lista de ids | ||
53 | + $dados = pegaDados ( "SELECT ordem from ".$esquemaadmin."i3geoadmin_raiz WHERE nivel = 0 AND id_menu = $id_menu", $dbh, false ); | ||
54 | + if(count($dados) != count($ordem)){ | ||
55 | + header ( "HTTP/1.1 500 erro numero de registros nao batem" ); | ||
56 | + exit (); | ||
57 | + } | ||
58 | + //verifica se os ids existem no mesmo nivel | ||
59 | + $dados = pegaDados ( "SELECT ordem from ".$esquemaadmin."i3geoadmin_raiz WHERE nivel = 0 AND id_menu = $id_menu AND id_raiz IN (" . implode(",",$ordem). ")", $dbh, false ); | ||
60 | + if(count($dados) != count($ordem)){ | ||
61 | + header ( "HTTP/1.1 500 erro ids nao batem" ); | ||
62 | + exit (); | ||
63 | + } | ||
64 | + | ||
65 | + $retorna = i3GeoAdminOrdena($dbhw,$ordem,i3geoadmin_raiz,"id_raiz"); | ||
66 | + $dbhw = null; | ||
67 | + $dbh = null; | ||
68 | + if ($retorna === false) { | ||
69 | + header ( "HTTP/1.1 500 erro ao ordenar" ); | ||
70 | + exit (); | ||
71 | + } | ||
72 | + retornaJSON ( $retorna ); | ||
73 | + exit(); | ||
74 | + break; | ||
49 | case "ADICIONAR" : | 75 | case "ADICIONAR" : |
50 | if (empty ( $id_tema ) || empty ( $id_menu )) { | 76 | if (empty ( $id_tema ) || empty ( $id_menu )) { |
51 | header ( "HTTP/1.1 500 erro nos parametros" ); | 77 | header ( "HTTP/1.1 500 erro nos parametros" ); |
admin1/catalogo/menus/grupos/index.js
@@ -53,14 +53,21 @@ i3GEOadmin.grupos = { | @@ -53,14 +53,21 @@ i3GEOadmin.grupos = { | ||
53 | ); | 53 | ); |
54 | i3GEOadmin.grupos.listaRaiz(json["raiz"],opcoesPerfil,json["temas"]); | 54 | i3GEOadmin.grupos.listaRaiz(json["raiz"],opcoesPerfil,json["temas"]); |
55 | i3GEOadmin.grupos.listaNos(json["grupos"],opcoesPerfil,json["tiposGrupos"]); | 55 | i3GEOadmin.grupos.listaNos(json["grupos"],opcoesPerfil,json["tiposGrupos"]); |
56 | + //torna os paineis ordenavies | ||
56 | i3GEOadmin.grupos.ondeNos.sortable({ | 57 | i3GEOadmin.grupos.ondeNos.sortable({ |
57 | update: function( event, ui ) { | 58 | update: function( event, ui ) { |
58 | var data = i3GEOadmin.grupos.ondeNos.sortable('toArray', {attribute: "data-id"}); | 59 | var data = i3GEOadmin.grupos.ondeNos.sortable('toArray', {attribute: "data-id"}); |
59 | - console.info(data); | 60 | + i3GEOadmin.grupos.ordenaNos(data); |
61 | + } | ||
62 | + }); | ||
63 | + i3GEOadmin.grupos.ondeRaiz.sortable({ | ||
64 | + update: function( event, ui ) { | ||
65 | + var data = i3GEOadmin.grupos.ondeRaiz.sortable('toArray', {attribute: "data-id"}); | ||
66 | + i3GEOadmin.grupos.ordenaRaiz(data); | ||
60 | } | 67 | } |
61 | }); | 68 | }); |
62 | - i3GEOadmin.grupos.ondeRaiz.sortable(); | ||
63 | 69 | ||
70 | + //faz com que seja mostrado um icone de ordenamento no mouseover | ||
64 | $('.panel').hover( | 71 | $('.panel').hover( |
65 | function(){ | 72 | function(){ |
66 | $(this).find('.move').fadeIn(400); | 73 | $(this).find('.move').fadeIn(400); |
@@ -423,6 +430,46 @@ i3GEOadmin.grupos = { | @@ -423,6 +430,46 @@ i3GEOadmin.grupos = { | ||
423 | } | 430 | } |
424 | ); | 431 | ); |
425 | }, | 432 | }, |
433 | + ordenaNos: function(data){ | ||
434 | + i3GEOadmin.core.modalAguarde(true); | ||
435 | + $.post( | ||
436 | + "exec.php?funcao=ordena", | ||
437 | + "id_menu=" + i3GEOadmin.grupos.id_menu + "&ordem=" + data.join(" ") | ||
438 | + ) | ||
439 | + .done( | ||
440 | + function(data, status){ | ||
441 | + i3GEOadmin.core.modalAguarde(false); | ||
442 | + i3GEOadmin.core.iconeAguarde(i3GEOadmin.grupos.ondeNos); | ||
443 | + i3GEOadmin.grupos.lista(); | ||
444 | + } | ||
445 | + ) | ||
446 | + .fail( | ||
447 | + function(data){ | ||
448 | + i3GEOadmin.core.modalAguarde(false); | ||
449 | + i3GEOadmin.core.mostraErro(data.status + " " +data.statusText); | ||
450 | + } | ||
451 | + ); | ||
452 | + }, | ||
453 | + ordenaRaiz: function(data){ | ||
454 | + i3GEOadmin.core.modalAguarde(true); | ||
455 | + $.post( | ||
456 | + "execraiz.php?funcao=ordena", | ||
457 | + "id_menu=" + i3GEOadmin.grupos.id_menu + "&ordem=" + data.join(" ") | ||
458 | + ) | ||
459 | + .done( | ||
460 | + function(data, status){ | ||
461 | + i3GEOadmin.core.modalAguarde(false); | ||
462 | + i3GEOadmin.core.iconeAguarde(i3GEOadmin.grupos.ondeNos); | ||
463 | + i3GEOadmin.grupos.lista(); | ||
464 | + } | ||
465 | + ) | ||
466 | + .fail( | ||
467 | + function(data){ | ||
468 | + i3GEOadmin.core.modalAguarde(false); | ||
469 | + i3GEOadmin.core.mostraErro(data.status + " " +data.statusText); | ||
470 | + } | ||
471 | + ); | ||
472 | + }, | ||
426 | editarSubGrupos: function(id,titulo){ | 473 | editarSubGrupos: function(id,titulo){ |
427 | //muda a url para que o usuario possa voltar pelo botao do navegador | 474 | //muda a url para que o usuario possa voltar pelo botao do navegador |
428 | var u = window.location.origin | 475 | var u = window.location.origin |
admin1/catalogo/menus/grupos/index.php
@@ -90,7 +90,9 @@ $nome_menu = filter_var ( $_GET ["nome_menu"], FILTER_SANITIZE_STRING ); | @@ -90,7 +90,9 @@ $nome_menu = filter_var ( $_GET ["nome_menu"], FILTER_SANITIZE_STRING ); | ||
90 | </a> | 90 | </a> |
91 | | 91 | |
92 | <a class="collapsed in" role="button" data-toggle="collapse" href="#body-formRaiz-{{id_raiz}}" | 92 | <a class="collapsed in" role="button" data-toggle="collapse" href="#body-formRaiz-{{id_raiz}}" |
93 | - aria-expanded="false" aria-controls="#body-formRaiz-{{id_raiz}}"> {{{nome_tema}}} </a> | 93 | + aria-expanded="false" aria-controls="#body-formRaiz-{{id_raiz}}"> {{{nome_tema}}} |
94 | + <i class="material-icons move" style="color: gray; display:none;">swap_vert</i> | ||
95 | + </a> | ||
94 | </h3> | 96 | </h3> |
95 | </div> | 97 | </div> |
96 | <div class="panel-body panel-collapse collapse" id="body-formRaiz-{{id_raiz}}"> | 98 | <div class="panel-body panel-collapse collapse" id="body-formRaiz-{{id_raiz}}"> |