Example #1
0
 function editar($id = NULL)
 {
     $imagem = $_FILES['icone'];
     if ($this->input->post('submit')) {
         $dados = $this->input->post();
     } elseif ($id) {
         $dados['site'] = $this->Sites_model->obter($id);
         $dados['templates'] = montar_assoc($this->db->select('id, titulo')->where('site_id', $id)->get('cms_templates')->result_array());
     }
     // Validação
     $this->form_validation->set_rules('site[titulo]', 'Título', 'trim|required');
     $this->form_validation->set_rules('site[url]', 'Url', 'trim|required');
     if ($this->form_validation->run()) {
         // Salva o icone do site
         if (strlen($imagem['name']) > 0) {
             $img = $imagem;
             $img['name'] = $dados['site']['id'] . '.png';
             $ok = MY_Utils::redimensionar_imagem($imagem, $this->path . $img['name'], 16, 16);
             if ($ok) {
                 $dados['site']['icone'] = $img['name'];
             }
         }
         $id = $this->Sites_model->salvar($dados['site']);
         redirect('sites');
     } else {
         $dados['erro'] = validation_errors();
     }
     $this->load->view('sites_editar', $dados);
 }
Example #2
0
 /**
  * Redimensiona e salva as imagens
  */
 function salvar_imagens($noticia_id, $imagens, $path, $path_temporario)
 {
     $site_path = SERVERPATH . $path;
     foreach ($imagens as $imagem) {
         // Se a imagem existe
         if (is_file($imagem['arquivo'])) {
             // Paths
             $imagem['dir'] = $imagem['dir'] ? $imagem['dir'] : 'noticias/' . $noticia_id;
             $path = $site_path . $imagem['dir'];
             // Se não existir e não conseguir criar o path, erro!
             if (!is_dir($site_path . 'noticias') && !mkdir($site_path . 'noticias')) {
                 throw new Exception('Não foi possível criar o diretório(' . $site_path . 'noticias) para as imagens.');
             }
             if (!is_dir($path) && !mkdir($path)) {
                 throw new Exception('Não foi possível criar o diretório(' . $path . ') para as imagens.');
             }
             $path .= '/';
             // Quebra o nome da imagem e a extensão
             $nome_imagem = array_pop(explode('/', $imagem['arquivo']));
             $array = explode('.', $nome_imagem);
             array_pop($array);
             $nome_imagem = implode('.', $array);
             $ext = MY_Utils::obter_extensao_imagem($imagem['arquivo']);
             $nome_imagem = MY_Utils::removeSpecialChars($nome_imagem);
             // Redimensiona a imagem
             $img = array('name' => $nome_imagem . '.' . ($ext ? $ext : 'jpg'), 'tmp_name' => $imagem['arquivo']);
             if (!MY_Utils::redimensionar_imagem($img, $path . $img['name'], $this->image_h, $this->image_w)) {
                 throw new Exception('Não foi possível redimensionar a imagem: ' . $img['name']);
             }
             // Redimensiona a miniatura da imagem
             $img_thumb = array('name' => 'thumb_' . $nome_imagem . '.' . $ext, 'tmp_name' => $imagem['arquivo']);
             if (!MY_Utils::redimensionar_imagem($img_thumb, $path . $img_thumb['name'], $this->thumb_h, $this->thumb_w)) {
                 throw new Exception('Não foi possível redimensionar a miniatura: ' . $img_thumb['name']);
             }
             // Confere se gravou certo as imagens
             if (!is_file($path . $img['name'])) {
                 throw new Exception('Não foi possível armazenar a imagem: ' . $path . $img['name']);
             } else {
                 if (!is_file($path . $img_thumb['name'])) {
                     throw new Exception('Não foi possível armazenar a imagem: ' . $path . $img['name']);
                 } else {
                     // Se a imagem em questão for capa, tira a capa anterior
                     if ($imagem['capa'] == 1) {
                         $imagem['capa'] = 1;
                         $where = array('capa' => 1, 'noticia_id' => $noticia_id);
                         if (!$this->db->update('cms_noticias_imagens', array('capa' => 0), $where)) {
                             throw new Exception('Não foi possível trocar imagem capa.');
                         }
                     } else {
                         $imagem['capa'] = 0;
                     }
                     // Tudo ok, salva na base
                     $dados_img = array('noticia_id' => $noticia_id, 'criado_por' => $this->usuario_id, 'arquivo' => $img['name'], 'arquivo_thumb' => $img_thumb['name'], 'credito' => $imagem['credito'], 'legenda' => $imagem['legenda'], 'dir' => $imagem['dir'], 'capa' => $imagem['capa']);
                     if (!$this->db->insert('cms_noticias_imagens', $dados_img)) {
                         throw new Exception('Não foi possível salvar os dados da imagem.');
                     }
                 }
             }
             // Apaga a imagem temporária
             if (!unlink($imagem['arquivo'])) {
                 throw new Exception('Não foi possível remover a imagem temporária: ' . $nome_imagem . '.' . $ext);
             }
         } else {
             if ($imagem['id']) {
                 if ($imagem['capa'] == 1) {
                     $imagem['capa'] = 1;
                 } else {
                     $imagem['capa'] = 0;
                 }
                 // Atualiza crédito/legenda/capa
                 $dados_img = array('noticia_id' => $noticia_id, 'criado_por' => $this->usuario_id, 'credito' => $imagem['credito'], 'legenda' => $imagem['legenda'], 'capa' => $imagem['capa']);
                 if (!$this->db->update('cms_noticias_imagens', $dados_img, array('id' => $imagem['id']))) {
                     throw new Exception('Não foi possível salvar os dados da imagem.');
                 }
             } else {
                 throw new Exception('Não foi possível obter a imagem: ' . $imagem['arquivo']);
             }
         }
     }
     // Chegando aqui sem dar Exception, está tudo OK ;)
 }
Example #3
0
    function editar($id = null)
    {
        // Array de dados para a view
        $dados = array();
        // Carrega a model
        $this->load->model('Produtos_model');
        // Obtém os dados
        if ($this->input->post('submit')) {
            // se tem post, obtém do formulário
            $dados = $this->input->post();
        } elseif ((int) $id > 0) {
            // se tem id, obtém da base
            $dados['registro'] = $produto = $this->Produtos_model->obter($id);
        }
        // Se tem post, salva os dados
        if ($this->input->post('submit')) {
            // Validação
            $this->form_validation->set_rules('registro[categoria_id]', 'Categoria', 'trim|required');
            $this->form_validation->set_rules('registro[tipo_id]', 'Tipo', 'trim|required');
            $this->form_validation->set_rules('registro[titulo]', 'Título', 'trim|required');
            $this->form_validation->set_rules('registro[ativo]', 'Ativo', 'trim|required');
            if ($this->form_validation->run()) {
                $dados['registro']['link'] = str_replace('-', '_', MY_Utils::removeSpecialChars(strtolower(utf8_decode($dados['registro']['titulo']))));
                $dados['registro']['link'] = preg_replace('/_{2,}/', '_', $dados['registro']['link']);
                // Converte tudo pra maiusculo
                foreach ($dados['registro'] as $k => $valor) {
                    $dados['registro'][$k] = strtoupper($valor);
                }
                // Salva o produto
                $dados['registro']['id'] = $ok = $this->Produtos_model->salvar($dados['registro']);
                // Salva os componentes do kit
                if ($dados['registro']['tipo_id'] == '2') {
                    // Produtos componentes do kit
                    $componentes = array();
                    if ($dados['registro']['tipo_id'] == '2') {
                        foreach ($dados['produto_id'] as $k => $valor) {
                            $componentes[] = array('produto_id' => $dados['registro']['id'], 'componente_id' => $valor, 'quantidade' => $dados['produto_quantidade'][$k]);
                        }
                    }
                    $this->Default_model->set_table_name('site_produtos_kits');
                    $this->Default_model->remover($dados['registro']['id'], 'produto_id');
                    foreach ($componentes as $componente) {
                        $this->Default_model->salvar($componente);
                    }
                }
                $dados['registro']['id'] = $ok;
                $path_destino_imagens = SERVERPATH . $this->path . $dados['registro']['id'] . '/';
                // Se existe procede, se não exibe erro!
                if (is_dir(SERVERPATH . $this->path . $dados['registro']['id']) || mkdir(SERVERPATH . $this->path . $dados['registro']['id'])) {
                    if ($ok) {
                        // Obtém as imagens do diretório temporário:
                        $imagens_temporarias = glob("{$this->path_temporario}{*.*}", GLOB_BRACE);
                        // percorre o array de img temp
                        if (is_array($imagens_temporarias) && count($imagens_temporarias) > 0) {
                            foreach ($imagens_temporarias as $img) {
                                // Redimensiona a imagem
                                $imagem = array('name' => generate_url(current(explode('.', basename($img)))) . '.' . MY_Utils::obter_extensao_imagem($img), 'tmp_name' => $img);
                                MY_Utils::redimensionar_imagem($imagem, $path_destino_imagens . $imagem['name'], 1280, 1280);
                                // Redimensiona a miniatura
                                $imagem_thumb = array('name' => generate_url(current(explode('.', basename($img)))) . '_thumb.' . MY_Utils::obter_extensao_imagem($img), 'tmp_name' => $img);
                                MY_Utils::redimensionar_imagem($imagem_thumb, $path_destino_imagens . $imagem_thumb['name'], 168, 168);
                                if (strlen($dados['registro']['foto_capa']) == 0) {
                                    $dados['registro']['foto_capa'] = $imagem_thumb['name'];
                                    $ok = $this->Produtos_model->salvar($dados['registro']);
                                }
                                // Apaga a imagem temporária
                                if (!unlink($img)) {
                                    $dados['erro'] = 'Não foi possível apagar a imagem temporária ' . $img . '.';
                                }
                                $cont++;
                            }
                        }
                        // Apaga o diretório temporário
                        if (!rmdir($this->path_temporario)) {
                            $dados['erro'] = 'Não foi possível apagar o diretório temporário.';
                        }
                        redirect('site/produtos');
                    } else {
                        $dados['erro'] = 'Não foi possível salvar o registro.';
                    }
                } else {
                    $dados['erro'] = 'Não foi possível criar o diretório destino das imagens.';
                }
            } else {
                if (rtrim(trim(strip_tags(validation_errors()))) == 'Unable to access an error message corresponding to your field name.') {
                    $dados['erro'] = 'O título deve ser único. Este título já está em uso.';
                } else {
                    $dados['erro'] = validation_errors();
                }
            }
        }
        $dados['path'] = $this->path;
        $dados['path_temporario'] = $this->path_temporario;
        // Definição dos campos
        // Codigo
        $campos = array();
        $campo = array();
        $campo['id'] = 'id';
        $campo['name'] = 'registro[id]';
        $campo['tamanho'] = 2;
        $campo['type'] = 'text';
        $campo['label'] = 'Código';
        $campo['placeholder'] = 'Código do produto';
        $campo['value'] = $dados['registro']['id'];
        if ((int) $dados['registro']['id'] == 0) {
            $campo['attrs'] = 'readonly';
        }
        $campos[] = $campo;
        // Tipo
        $campo = array();
        $tipos = array();
        $this->Default_model->set_table_name('site_produtos_tipos');
        $arr_aux = $this->Default_model->listar();
        foreach ($arr_aux as $tipo) {
            $tipos[$tipo['id']] = $tipo['titulo'];
        }
        $campo['id'] = 'tipo_id';
        $campo['name'] = 'registro[tipo_id]';
        $campo['tamanho'] = 2;
        $campo['type'] = 'dropdown';
        $campo['label'] = 'Tipo';
        $campo['placeholder'] = 'Tipo de produto';
        $campo['value'] = $dados['registro']['tipo_id'];
        $campo['options'] = $tipos;
        $campo['required'] = true;
        //$campo['attrs'] = 'readonly';
        //$campo['hidden'] = 'true';
        $campos[] = $campo;
        // Nome do produto
        $campo = array();
        $campo['id'] = 'titulo';
        $campo['name'] = 'registro[titulo]';
        $campo['tamanho'] = 5;
        $campo['type'] = 'text';
        $campo['label'] = 'Nome';
        $campo['placeholder'] = 'Nome do produto';
        $campo['value'] = $dados['registro']['titulo'];
        $campo['required'] = true;
        $campos[] = $campo;
        // Categoria
        $campo = array();
        $categorias = array();
        $arr_aux = $this->Produtos_model->listar_categorias();
        foreach ($arr_aux as $categoria) {
            $categorias[$categoria['id']] = $categoria['titulo'];
        }
        $campo['id'] = 'categoria_id';
        $campo['name'] = 'registro[categoria_id]';
        $campo['tamanho'] = 3;
        $campo['type'] = 'dropdown';
        $campo['label'] = 'Categoria';
        $campo['placeholder'] = 'Categoria do produto';
        $campo['value'] = $dados['registro']['categoria_id'];
        $campo['options'] = $categorias;
        $campo['required'] = true;
        $campos[] = $campo;
        // Marca do produto
        $campo = array();
        $campo['id'] = 'marca';
        $campo['name'] = 'registro[marca]';
        $campo['tamanho'] = 3;
        $campo['type'] = 'text';
        $campo['label'] = 'Marca';
        $campo['placeholder'] = 'Marca do produto';
        $campo['value'] = $dados['registro']['titulo'];
        $campo['autocomplete'] = 'autocomplete_marca';
        $campos[] = $campo;
        // Descrição do produto
        $campo = array();
        $campo['id'] = 'descricao';
        $campo['name'] = 'registro[descricao]';
        $campo['tamanho'] = 9;
        $campo['type'] = 'text';
        $campo['label'] = 'Descrição';
        $campo['placeholder'] = 'Descrição do produto';
        $campo['value'] = $dados['registro']['descricao'];
        $campos[] = $campo;
        // Valor do produto
        $campo = array();
        $campo['id'] = 'valor_compra';
        $campo['name'] = 'registro[valor_compra]';
        $campo['tamanho'] = 4;
        $campo['type'] = 'number';
        $campo['label'] = 'Valor de compra';
        $campo['placeholder'] = 'Valor de compra do produto';
        $campo['value'] = $dados['registro']['valor_compra'];
        $campo['attrs'] = 'pattern="^\\d+(\\.|\\,)\\d{2}$" step="any"';
        $campo['required'] = true;
        $campo['pre'] = '<span class="input-group-addon">R$</span>';
        $campos[] = $campo;
        // Promoção
        $campo = array();
        $campo['id'] = 'promocao';
        $campo['name'] = 'registro[promocao]';
        $campo['tamanho'] = 2;
        $campo['type'] = 'dropdown';
        $campo['label'] = 'Promoção';
        $campo['placeholder'] = 'Produto em promoção';
        $campo['value'] = $dados['registro']['promocao'];
        $campo['options'] = array('0' => 'Não', '1' => 'Sim');
        $campos[] = $campo;
        // Vigencia da Promoção
        $campo = array();
        $campo['id'] = 'promocao_inicio';
        $campo['name'] = 'registro[promocao_inicio]';
        $campo['tamanho'] = 3;
        $campo['type'] = 'date';
        $campo['label'] = 'Promoção de';
        $campo['placeholder'] = 'Produto em promoção a partir de';
        $campo['value'] = $dados['registro']['promocao_inicio'];
        if ((int) $dados['registro']['promocao'] != 1) {
            $campo['attrs'] = 'readonly display';
        }
        $campos[] = $campo;
        // Vigencia da Promoção
        $campo = array();
        $campo['id'] = 'promocao_fim';
        $campo['name'] = 'registro[promocao_fim]';
        $campo['tamanho'] = 3;
        $campo['type'] = 'date';
        $campo['label'] = 'Promoção até';
        $campo['placeholder'] = 'Produto em promoção até';
        $campo['value'] = $dados['registro']['promocao_fim'];
        if ((int) $dados['registro']['promocao'] != 1) {
            $campo['attrs'] = 'readonly disabled';
        }
        $campos[] = $campo;
        // Valor de venda minimo do produto
        $campo = array();
        $campo['id'] = 'valor_venda_minimo';
        $campo['name'] = 'registro[valor_venda_minimo]';
        $campo['tamanho'] = 4;
        $campo['type'] = 'number';
        $campo['label'] = 'Valor mínimo p/ venda';
        $campo['placeholder'] = 'Valor de venda mínimo do produto';
        $campo['value'] = $dados['registro']['valor_venda_minimo'];
        $campo['attrs'] = 'pattern="^\\d+(\\.|\\,)\\d{2}$" step="any"';
        $campo['required'] = true;
        $campo['pre'] = '<span class="input-group-addon">R$</span>';
        $campos[] = $campo;
        // Valor de venda do produto
        $campo = array();
        $campo['id'] = 'valor_venda';
        $campo['name'] = 'registro[valor_venda]';
        $campo['tamanho'] = 4;
        $campo['type'] = 'number';
        $campo['label'] = 'Valor venda atual';
        $campo['placeholder'] = 'Valor de venda do produto';
        $campo['value'] = $dados['registro']['valor_venda'];
        $campo['attrs'] = 'pattern="^\\d+(\\.|\\,)\\d{2}$" step="any"';
        $campo['required'] = true;
        $campo['pre'] = '<span class="input-group-addon">R$</span>';
        $campos[] = $campo;
        // Ativo
        $campo = array();
        $campo['id'] = 'ativo';
        $campo['name'] = 'registro[ativo]';
        $campo['tamanho'] = 4;
        $campo['type'] = 'dropdown';
        $campo['label'] = 'Ativo';
        $campo['placeholder'] = 'Situação do produto';
        $campo['value'] = $dados['registro']['ativo'];
        $campo['options'] = array('1' => 'Sim', '0' => 'Não');
        $campo['required'] = true;
        $campos[] = $campo;
        // Fotos do produto
        /*
        $campo = array();
        $campo['id'] = 'imagens';
        $campo['tamanho'] = 12;
        $campo['type'] = 'multi_upload';
        $campo['foto_capa'] = true;
        $campo['value'] = $campo['foto_capa'];
        $campos[] = $campo;
        */
        // Produtos
        $campo = array();
        $campo['id'] = 'produtos';
        $campo['name'] = 'registro[produtos]';
        $campo['tamanho'] = 12;
        $campo['type'] = 'subdetail';
        $campo['label'] = 'Produtos';
        $campo['colunas'] = array('id' => array('titulo' => 'Código', 'attr' => array('data-identifier="true"', 'data-type="numeric"', 'data-order="desc"', 'width="10%"')), 'titulo' => array('titulo' => 'Nome', 'attr' => array('width="50%"')), 'valor_compra' => array('titulo' => 'Valor compra', 'attr' => array('data-type="numeric"', 'width="10%"')), 'valor_venda_minimo' => array('titulo' => 'Valor venda mínimo', 'attr' => array('data-type="numeric"', 'width="10%"')), 'valor_venda' => array('titulo' => 'Valor venda atual', 'attr' => array('data-type="numeric"', 'width="10%"')), 'quantidade' => array('titulo' => 'Quantidade', 'attr' => array('data-type="numeric"', 'width="10%"')), 'acoes' => array('titulo' => 'Ações', 'attr' => array('data-formatter="commands"', 'data-sortable="false"', 'width="10%"')));
        $campo['colunas_editaveis'] = array('quantidade');
        $campo['json'] = 'ajax_listar_produtos';
        $componentes = array();
        if ($dados['registro']['id']) {
            $componentes = $this->Produtos_model->kit_obter_componentes($dados['registro']['id']);
        }
        $cols = array();
        if ($componentes && is_array($componentes) && count($componentes) > 0) {
            foreach ($componentes as $componente) {
                $prod = $this->Produtos_model->obter($componente['componente_id']);
                $coluna = array();
                $coluna[] = '<td>' . $prod['id'] . '<input type="hidden" name="produto_id[]" value="' . $prod['id'] . '"/></td>';
                $coluna[] = '<td>' . $prod['titulo'] . '</td>';
                $coluna[] = '<td>R$ ' . str_replace('.', ',', $prod['valor_compra']) . '</td>';
                $coluna[] = '<td>R$ ' . str_replace('.', ',', $prod['valor_venda_minimo']) . '</td>';
                $coluna[] = '<td>R$ ' . str_replace('.', ',', $prod['valor_venda']) . '</td>';
                $coluna[] = '<td><input type="number" name="produto_quantidade[]" pattern="^\\d+(\\.|\\,)\\d{2}$" step="any" value="' . $componente['quantidade'] . '" class="input_quantidade"/></td>';
                $coluna[] = '<td><button class="btn btn-danger bt_remover" title="Remover"><i class="fa fa-trash"></i></button></td>';
                $cols[] = $coluna;
            }
        }
        $campo['value'] = $cols;
        $campo['required'] = true;
        if ($dados['registro']['tipo_id'] != '2') {
            $campo['hidden'] = true;
        }
        $campos[] = $campo;
        // Campos do formulário
        $dados['campos'] = $campos;
        // Adiciona JS
        $dados['custom_js'] = <<<HTML
\$('body').on('change', '#tipo_id', function()
{
  if ( \$(this).val() == 1 )
  {
    \$('#campo_produtos').hide(100);
  }
  else
  {
    \$('#campo_produtos').show(100);
  }
});

\$('body').on('change', '#promocao', function()
{
  if ( \$(this).val() == 1 )
  {
    // habilita campo de
    \$('#promocao_inicio').removeAttr('readonly');
    \$('#promocao_inicio').removeAttr('disabled');
    \$(\$('#promocao_inicio').parent().children()[0]).append('<span class="required">*</span>')
    // habilita campo ate
    \$('#promocao_fim').removeAttr('readonly');
    \$('#promocao_fim').removeAttr('disabled');
    \$(\$('#promocao_fim').parent().children()[0]).append('<span class="required">*</span>')
  }
  else
  {
    // desabilita campo de
    \$('#promocao_inicio').attr('readonly', true);
    \$('#promocao_inicio').attr('disabled', true);
    \$(\$(\$('#promocao_inicio').parent().children()[0]).children()[0]).remove()
    // desabilita campo ate
    \$('#promocao_fim').attr('readonly', true);
    \$('#promocao_fim').attr('disabled', true);
    \$(\$(\$('#promocao_fim').parent().children()[0]).children()[0]).remove()
  }
});

\$('#bt_add_produto').click(function(event)
{
    event.preventDefault();

    \$('body').append('<div id="add_produto_subdetail" class="modal">\\
    <div class="modal-dialog">\\
        <div class="modal-content">\\
            <div class="modal-header">\\
                <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">\\
                <span aria-hidden="true">×</span></button>\\
                <h4 class="modal-title">Adicionar componente do kit</h4>\\
            </div>\\
            <div class="modal-body">\\
                <div class="input-group">\\
<span class="input-group-addon"><i class="fa fa-search"></i></span>\\
<input type="text" id="busca_produto" class="form-control" name="busca[produto]" placeholder="Nome do produto" title="Pesquise aqui pelo nome do produto" value="" autofocus>\\
  </div>\\
                <br>\\
                <table class="zebra">\\
                    <thead>\\
                        <tr>\\
                            <th style="width:10px">Código</th>\\
                            <th style="width:50%">Nome</th>\\
                            <th style="width:10%">Valor compra</th>\\
                            <th style="width:10%">Valor venda mínimo</th>\\
                            <th style="width:10%">Valor venda atual</th>\\
                            <th style="width:10%">Açoes</th>\\
                        </tr>\\
                    </thead>\\
                    <tbody id="subdetail_produtos_adicionar">\\
                    </tbody>\\
                </table>\\
            </div>\\
            <div class="modal-footer">\\
                <button type="button" class="btn btn-danger pull-right" data-dismiss="modal">Fechar</button>\\
            </div>\\
        </div>\\
    </div>\\
</div>');
    \$('#add_produto_subdetail.modal').show(100);

    var ajax_interval = 0;
    \$('body').on('keyup', '#busca_produto', function()
    {
        var busca = \$(this).val();
        //loading
        \$('#subdetail_produtos_adicionar').html('<tr><td colspan="6"><div style="width:100%;padding:25px 0px;text-align:center"><i class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></i></div></td></tr>');
        if ( busca.length >= 3 )
        {
            var ids = new Array();

            // começa a contar o tempo
            clearInterval(ajax_interval);

            // 500ms após o usuário parar de digitar a função é chamada  
            ajax_interval = window.setTimeout(function()
            {
                ids.push('%id%');
                \$('#subdetail_produtos td input[type="hidden"]').each(function(index, element)
                {
                    ids.push(\$(element).val());
                });

                \$.ajax(
                {
                    type: 'POST',
                    url: '%url_ajax%',
                    data: {busca:busca,ids:ids},
                    success: function(data)
                    {
                        \$('#subdetail_produtos_adicionar').html(data);
                    }
                });
            }, 500);
        }
        else
        {
            \$('#subdetail_produtos_adicionar').html('<tr><td colspan="6">Digite pelo menos 3 caracteres.</td></tr>');
        }
    });

    \$('#busca_produto').focus();
});

var primeiraVez = true;
\$('body').on('click', '.bt_add', function()
{
    // Obtém os valores
    var _valor_compra = +\$('#valor_compra').val();
    var _valor_venda_minimo = +\$('#valor_venda_minimo').val();
    var _valor_venda = +\$('#valor_venda').val();
    if ( primeiraVez )
    {
        primeiraVez = false;

        // Zera
        _valor_compra = 0;
        _valor_venda_minimo = 0;
        _valor_venda = 0;
    }

    var id = \$(\$(this).parent().parent().children()[0]).html().trim();
    var titulo = \$(\$(this).parent().parent().children()[1]).html().trim();
    var valor_compra = \$(\$(this).parent().parent().children()[2]).html().trim();
    var valor_venda_minimo = \$(\$(this).parent().parent().children()[3]).html().trim();
    var valor_venda = \$(\$(this).parent().parent().children()[4]).html().trim();

    \$('#subdetail_produtos').append('<tr>\\
        <td>'+id+'<input type="hidden" name="produto_id[]" value="'+id+'"/></td>\\
        <td>'+titulo+'</td>\\
        <td>'+valor_compra+'</td>\\
        <td>'+valor_venda_minimo+'</td>\\
        <td>'+valor_venda+'</td>\\
        <td><input type="number" name="produto_quantidade[]" pattern="^\\d+(\\.|\\,)\\d{2}\$" step="any" class="input_quantidade" value="1"/>\\
</td>\\
        <td><button class="btn btn-danger bt_remover" title="Remover"><i class="fa fa-trash"></i></button></td>\\
    </tr>');

    \$(this).parent().parent().remove();
    //\$('#add_produto_subdetail .modal-footer button').click();

    // Atualiza os valores
    \$('#valor_compra').val((_valor_compra + +valor_compra.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda_minimo').val((_valor_venda_minimo + +valor_venda_minimo.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda').val((_valor_venda + +valor_venda.replace('R\$ ', '').replace(',', '.')).toFixed(2));
});

\$('body').on('click', '.bt_remover', function(event)
{
    event.preventDefault();
    \$(this).parent().parent().remove();

    // Dados do produto
    var valor_compra = \$(\$(this).parent().parent().children()[2]).html().trim();
    var valor_venda_minimo = \$(\$(this).parent().parent().children()[3]).html().trim();
    var valor_venda = \$(\$(this).parent().parent().children()[4]).html().trim();

    // Valores atuais
    var _valor_compra = \$('#valor_compra').val();
    var _valor_venda_minimo = \$('#valor_venda_minimo').val();
    var _valor_venda = \$('#valor_venda').val();

    // Atualiza os valores
    \$('#valor_compra').val((_valor_compra - +valor_compra.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda_minimo').val((_valor_venda_minimo - +valor_venda_minimo.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda').val((_valor_venda - +valor_venda.replace('R\$ ', '').replace(',', '.')).toFixed(2));
});

\$('body').on('keyup', '.input_quantidade', function(event)
{
    // Dados do produto
    var valor_compra = \$(\$(this).parent().parent().children()[2]).html().trim();
    var valor_venda_minimo = \$(\$(this).parent().parent().children()[3]).html().trim();
    var valor_venda = \$(\$(this).parent().parent().children()[4]).html().trim();
console.log(\$(this));

    // Valores atuais
    var _valor_compra = \$('#valor_compra').val();
    var _valor_venda_minimo = \$('#valor_venda_minimo').val();
    var _valor_venda = \$('#valor_venda').val();

    // Atualiza os valores
    \$('#valor_compra').val((_valor_compra + +valor_compra.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda_minimo').val((_valor_venda_minimo + +valor_venda_minimo.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda').val((_valor_venda + +valor_venda.replace('R\$ ', '').replace(',', '.')).toFixed(2));
});

\$('body').on('change', '.input_quantidade', function(event)
{
    // Dados do produto
    var valor_compra = \$(\$(this).parent().parent().children()[2]).html().trim();
    var valor_venda_minimo = \$(\$(this).parent().parent().children()[3]).html().trim();
    var valor_venda = \$(\$(this).parent().parent().children()[4]).html().trim();
console.log(\$(this));

    // Valores atuais
    var _valor_compra = \$('#valor_compra').val();
    var _valor_venda_minimo = \$('#valor_venda_minimo').val();
    var _valor_venda = \$('#valor_venda').val();

    // Atualiza os valores
    \$('#valor_compra').val((_valor_compra + +valor_compra.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda_minimo').val((_valor_venda_minimo + +valor_venda_minimo.replace('R\$ ', '').replace(',', '.')).toFixed(2));
    \$('#valor_venda').val((_valor_venda + +valor_venda.replace('R\$ ', '').replace(',', '.')).toFixed(2));
});

\$('#titulo').focus();
HTML;
        $dados['custom_js'] = str_replace('%id%', $id, $dados['custom_js']);
        $dados['custom_js'] = str_replace('%url_ajax%', base_url('site/produtos/ajax_listar_produtos'), $dados['custom_js']);
        $dados['custom_js'] = str_replace('%url_ajax_precos%', base_url('site/produtos/ajax_precos'), $dados['custom_js']);
        parent::load_view($dados);
    }
Example #4
0
 function editar($id = null)
 {
     $img_banner = $_FILES['img_banner'];
     // Se for edição, obtém os dados "antigos"
     if (strlen($id) > 0) {
         $banner = $this->Banners_model->obter($id);
         // Catrgoria
         $categoria = $this->Banners_model->obter_categoria($banner['categoria_id']);
     }
     // Coluna ordem
     if (strlen($banner['ordem']) == 0) {
         // Obtém a maior ordem e soma 10
         $max_ordem = $this->Banners_model->max_ordem($banner['categoria_id']);
         $banner['ordem'] = $max_ordem + 10;
     }
     // Se não for submit
     if (!$this->input->post('submit')) {
         // Se não tem ID (inserção): obtém o próximo id da sequence
         $banner['id'] = is_null($banner['id']) ? $this->Banners_model->proximo_id() : $banner['id'];
     }
     // Se tem post, valida os dados
     if ($this->input->post('submit')) {
         $dados = $this->input->post();
         $banner = $this->input->post('banner');
         // Catrgoria
         $categoria = $this->Banners_model->obter_categoria($banner['categoria_id']);
         // Quem postou o banner
         $banner['usuario_id'] = (int) $this->session->userdata('usuario_id');
         // Validação
         $this->form_validation->set_rules('banner[categoria_id]', 'Categoria', 'trim|required');
         $this->form_validation->set_rules('banner[ativo]', 'Ativo', 'trim|required');
         // Se não tem erros
         if ($this->form_validation->run()) {
             $ok = false;
             if (is_dir($this->path . $banner['categoria_id']) || mkdir($this->path . $banner['categoria_id'])) {
                 // Banner OLD
                 $banner_old = $this->Banners_model->obter($banner['id']);
                 // Se foi enviado um banner, armazena-o
                 if (strlen($img_banner['tmp_name']) > 0) {
                     $imagem = array('name' => generate_url(current(explode('.', $img_banner['name']))) . '.jpg', 'tmp_name' => $img_banner['tmp_name']);
                     @unlink($this->path . $banner_old['img_banner']);
                     // Redimensiona a imagem
                     $ok = MY_Utils::redimensionar_imagem($imagem, $this->path . $banner['categoria_id'] . '/' . $imagem['name'], $categoria['largura'], $categoria['altura']);
                     if (strlen($categoria['largura_miniatura']) > 0 && strlen($categoria['altura_miniatura']) > 0) {
                         $ok = MY_Utils::redimensionar_imagem($imagem, $this->path . $banner['categoria_id'] . '/thumb_' . $imagem['name'], $categoria['largura_miniatura'], $categoria['altura_miniatura'], false);
                         if ($ok) {
                             $banner['img_thumb'] = $banner['categoria_id'] . '/thumb_' . $imagem['name'];
                         }
                     }
                     // Apaga a imagem temporária
                     @unlink($imagem['tmp_name']);
                     if ($ok) {
                         $banner['img_banner'] = $banner['categoria_id'] . '/' . $imagem['name'];
                     }
                 } else {
                     if (strlen($banner_old['img_banner']) > 0) {
                         $banner['img_banner'] = $banner_old['img_banner'];
                     }
                     if ($banner_old['categoria_id'] != $banner['categoria_id'] && is_file($this->path . $banner_old['img_banner'])) {
                         // Copia banner
                         copy($this->path . $banner_old['img_banner'], $this->path . $banner['categoria_id'] . '/' . $banner['img_banner'] . '.jpg');
                         unlink($this->path . $banner_old['img_banner']);
                         $banner['img_banner'] = $banner['categoria_id'] . '/' . $banner['img_banner'] . '.jpg';
                     }
                 }
                 if (strlen($banner['img_banner']) > 0) {
                     list($img_width, $img_height) = getImageSize($this->path . $banner['img_banner']);
                     $voltar_para_cortar = false;
                     if ($dados['imageW']) {
                         $targ_w = $categoria['largura'] > 0 ? $categoria['largura'] : $img_width;
                         $targ_h = $categoria['altura'] > 0 ? $categoria['altura'] : $img_height;
                         $jpeg_quality = 72;
                         $src = $this->path . $banner['img_banner'];
                         $img_r = imageCreateFromJpeg($src);
                         $dst_r = imageCreateTrueColor($targ_w, $targ_h);
                         $ok = imageCopyResampled($dst_r, $img_r, 0, 0, $dados['imageX'], $dados['imageY'], $targ_w, $targ_h, $dados['imageW'], $dados['imageH']);
                         $ok = imagejpeg($dst_r, $src, $jpeg_quality);
                     } elseif ($categoria['largura'] > 0 || $categoria['largura'] > 0) {
                         if ($categoria['largura'] != $img_width || $categoria['altura'] != $img_height) {
                             $voltar_para_cortar = true;
                         }
                     }
                 } else {
                     $dados['erros'][] = 'Você precisa enviar ao menos uma imagem.';
                 }
                 // Salva o registro
                 $id = $this->Banners_model->salvar($banner);
                 if ($id) {
                     if ($voltar_para_cortar) {
                         redirect('banners/editar/' . $id);
                     } else {
                         redirect('banners');
                     }
                 } else {
                     $dados['erros'][] = 'Desculpe, mas não foi possível salvar o registro. Tente novamente.';
                 }
             } else {
                 $dados['erros'][] = 'Desculpe, mas não foi possível criar pasta para armazenar a imagem. Tente novamente.';
             }
         } else {
             $dados['erros'][] = 'Desculpe, mas não foi possível inserir o registo.';
             $dados['erros'][] = validation_errors();
         }
     }
     $dados['banner'] = $banner;
     $dados['categoria'] = $categoria;
     $dados['categorias'] = $this->Banners_model->listar_categorias($this->site_id);
     $dados['site_id'] = $this->site_id;
     $dados['path'] = $this->path;
     $dados['site_dir'] = $this->session->userdata('site_dir');
     $this->load->view('banners_editar', $dados);
 }