Form = new FormHelper(); $this->Html = new HtmlHelper(); parent::__construct(); } /** * Retorna um link habilitado p/ gerar popups com comentarios * @param $id * @param $nome * @return html */ function commentPopUp($fk, $model) { $l = ''; $l .= $this->Icons->mk('comment', 'Comentários') . ''; return $l; } /** * Retorna um link habilitado p/ insrir comentarios * @param $id * @param $nome * @return html */ function commentADDPopUp($fk, $model) { $dialog_id = 'commentAddPopUpDialog'; $form_id = 'comment_add_form'; $l = ''; $l .= $this->Icons->mk('comment_add', 'Comentários') . ''; return $l; } /** * Retorna um link habilitado para gerar popup de criação de chamado. * * @param type $model * @param type $fk * @return string */ function chamadoPopUp($model = false, $fk = false) { $params = ''; if ($model && $fk) { $params = "'$model', $fk"; } else { $params = "false, false"; } $l = ''; return $l; } /** * CHECKLIST * * 1) Usar o metodo dialogLink p/ criar a chamada * 2) O link deve ter a URL do formulario que sera chamado no parametro lang * 3) Chamar este metodo p/ gerar o form com submit via ajax * 4) O id do formulario tem que ser o mesmo do param $form_id * 5) O formulario deve ter o parametro onsubmit="return dialog_ajax_form() ou uma custom" * * @param $link_selector - selector que vai receber o evento onclick * @param $titulo - titulo do box * @param $dialog_id - id do box * @param $form_id - id do formulario * @param $update_id - id da div que encapsula o elemento a ser atualizado * @param $update_url - url para buscar as atualizacoes * !! parametros abaixo devem ser usados caso haja mais de 1 formulario com dilog na pagina * @param $dialog_funcao_nome - nome da funcao do dialod * @param $form_funcao_nome - nome da funcao do formulario * @return javascript */ function dialogAjaxForm($titulo, $dialog_id, $form_id, $update_id, $update_url, $dialog_funcao_nome = null, $form_funcao_nome = null, $width = '450') { $r = 'function ' . (!$form_funcao_nome ? 'dialog_ajax_form' : $form_funcao_nome) . '() { // esvazia o box $("#' . $dialog_id . ' div.conteudo").find("input[type=submit]").parent("div").html("enviando..."); $.post($("#' . $form_id . '").attr("action"), $("#' . $form_id . '").serialize(), function(data) { // esvazia o box $("#' . $dialog_id . ' div.conteudo").html(\'

' . $this->Icons->img('loadingAnimation.gif', 'carregando') . '
\'); if(data.status == "success") { // fecha o dialog $("#' . $dialog_id . '").dialog("close"); // atualiza a listagem $("#' . $update_id . '").html(\'


' . $this->Icons->img('loadingAnimation.gif', 'carregando') . '
\'); $.get("' . $this->Html->url($update_url) . '", function(data) { $("#' . $update_id . '").html(data); }); } else { $("#' . $dialog_id . ' div.conteudo").html(data.output); } }, "json"); return false; } '; $d = $this->dialogForm($titulo, $dialog_id, false, $dialog_funcao_nome, $width); // coloca o atributo onsubmit para chamar a funcao ajax no formulario return $d[0] . ''; } /** * Para funcionar, esta funcao precisa que a URL que sera usada * na chamada ajax seja colocada no atributo lang do elemento $link_selector * * @param $link_selector - selector que vai receber o evento onclick * @param $titulo - titulo do box * @param $dialog_id - id do box * @param $js_block - flag p/ indicar se eh p/ retornar com tag '; } else { return array('
', $r); } } /** * Funcao que gera um link para chamar os formularios em ajax * @param $texto * @param $url * @param $funcao_nome * @return */ function dialogLink($texto, $url, $funcao_nome = null, $linkAcoes = false, $classe = null) { $class = ''; if ($linkAcoes) { $class = ' button'; } if ($classe) { $class = " $classe"; } $id = 'id' . Util::uniqueKey(); $r = '
'; $r .= $texto; $r .= ''; return $r; } /** * * @param $url * @return */ function location($url) { $r = "window.location.href='$url/' + $(this).val()"; return $r; } /** * Inclui o JS datepicker-pt-BR e depois injeta a chamada do datepicker * utilizando a classe .date-picker * * @important Os valores 1:15:15 servem para solucionar o problema do * horário de verão! * @param $inicio - data yyyy-mm-dd * @param $termino - data yyyy-mm-dd * @return */ function datePicker($inicio = NOW, $termino = null) { $minDate = ''; $maxDate = ''; // so funciona o new date se der explode na data no firefox if ($inicio) { $ini = explode('-', $inicio); $ini[1] = $ini[1] - 1; $minDate = "minDate: new Date({$ini[0]},{$ini[1]},{$ini[2]},1,15,15), "; } if ($termino) { $ter = explode('-', $termino); $ter[1] = $ter[1] - 1; $maxDate = "maxDate: new Date({$ter[0]},{$ter[1]},{$ter[2]},1,15,15), "; } $content = '$(".date-picker").datepicker("destroy"); $(".date-picker").datepicker({ changeMonth: true, changeYear: true, showOn: "both", yearRange: "1930:2030", ' . $minDate . ' ' . $maxDate . ' buttonImage: "' . CARIBE_STATIC . 'img/cal.gif", buttonImageOnly: true, duration: "normal", showAnim: "blind" });'; return $this->jsBlock($content); } /** * Monta javascript necessario p/ fazer a busca por ajax * @param $return * @param $front * @return */ function cep($value = null, $front = false, $tipoEndereco = false) { $aId = 'link' . date('his') . rand(); $url = $this->Html->url("/enderecos/cep"); $r = ''; $r .= '
'; $r .= ''; $r .= ''; $r .= ''; $r .= ' '; $r .= ''; $r .= '
'; $r .= $this->jsBlock('$("#' . $aId . '").click( function(){ var cep = $("#busca-cep' . ($tipoEndereco ? "-$tipoEndereco" : '') . '").val(); if(cep != "") { $("#resultado-cep' . ($tipoEndereco ? "-$tipoEndereco" : '') . '").html(\'

' . $this->Icons->img('loadingAnimation.gif', 'carregando') . '\'); var url = "' . $url . '/" + cep + "/' . $tipoEndereco . '"; $.post(url, function(data){ $("#resultado-cep' . ($tipoEndereco ? "-$tipoEndereco" : '') . '").html(data); }); } return false; }); '); return $r; } /** * Cria um bloco js e injeta javascript no meio * @param $content * @return */ function jsBlock($content) { return ''; } /** * Cria base para scripts jquery. * Garante que o script so sera executado apos * o carreganmento do DOM * @param $content * @return */ function docReady($content) { return '$(function() { ' . $content . ' } );'; } /** * Metodo para validação de dados do formulario via ajax * @param String $id * @param String $btn * @return string */ function validateModelItens($id, $btn) { $js = ''; return $js; } /** * Cria um dialog pronto p/ uso * @param string $id * @return string */ function newDialog($id = 'newDialog') { return << SCRIPT; } } ?>