예제 #1
0
 /**
  * Breadcrumb::display()
  *
  * Genera el breadcrumb
  *
  * @return string
  */
 public function display($icon = '')
 {
     $this->_jobs();
     do {
         $crumb = current($this->_path);
         if (next($this->_path) && !empty($crumb['title'])) {
             prev($this->_path);
             $html[] = "<li>" . "<i class='fa fa-{$icon}'></i>" . DwHtml::link($crumb['url'], $crumb['title']) . "</li>" . PHP_EOL;
         } elseif (!empty($crumb['title'])) {
             $html[] = "<li class='active'><i class='fa fa-{$icon}'></i> <a href='javascript: void(0)'>{$crumb['title']}</a></li>" . PHP_EOL;
         }
     } while (next($this->_path));
     self::reset();
     if (is_null($this->attrs['separator'])) {
         return "<ol class='{$this->attrs['class_ul']}'>" . implode('', $html) . '</ol>' . PHP_EOL;
     } else {
         return "<ol class='{$this->attrs['class_ul']}'>" . implode("<li class='{$this->attrs['class_separator']}'><a href='javascript: void(0)'>{$this->attrs['separator']}</a></li>" . PHP_EOL, $html) . '</ol>' . PHP_EOL;
     }
 }
예제 #2
0
 /**
  * Método para paginar resultados utilizando el método find_all_by_sql de los modelos <br>
  *
  * Retorna un PageObject que tiene los siguientes atributos: <br>
  * next: numero de pagina siguiente, si no hay pagina siguiente entonces es false <br>
  * prev: numero de pagina anterior, si no hay pagina anterior entonces es false <br>
  * current: numero de pagina actual <br>
  * total: total de paginas que se pueden mostrar <br>
  * items: array de items de la pagina <br>
  * counter: Número que lleva el conteo de la página <br>
  * size: Total de registros <br>
  * per_page: cantidad de elementos por pagina <br>
  *
  *
  * @param string $model modelo
  * @param string $sql consulta sql
  * @return stdClass
  */
 public static function paginate_by_sql($model, $sql)
 {
     $params = Util::getParams(func_get_args());
     $page_number = isset($params['page']) ? Filter::get($params['page'], 'numeric') : 1;
     //Numero de la página
     $per_page = isset($params['per_page']) ? Filter::get($params['per_page'], 'numeric') : DATAGRID;
     //Datos por página
     $counter = $page_number > 1 ? $page_number * $per_page - ($per_page - 1) : 1;
     //Determino el contador para utilizarlo en la vista
     $start = $per_page * ($page_number - 1);
     //Determino el offset
     $page = new stdClass();
     //Instancia del objeto contenedor de pagina
     $total_items = $model->count_by_sql("SELECT COUNT(*) FROM ({$sql}) AS t");
     //Se cuentan los registros
     $page->items = $model->find_all_by_sql($model->limit($sql, "offset: {$start}", "limit: {$per_page}"));
     //Se efectua la búsqueda
     //Se efectuan los cálculos para las paginas
     $page->next = $start + $per_page < $total_items ? $page_number + 1 : false;
     $page->prev = $page_number > 1 ? $page_number - 1 : false;
     $page->current = $page_number;
     $page->total_page = ceil($total_items / $per_page);
     if ($page->total_page < $page_number && $total_items > 0) {
         $page->prev = false;
         $url = Router::get('route');
         $url = explode('pag', $url);
         $url = trim($url[0], '/');
         DwMessage::error('La página solicitada no se encuentra en el paginador.  <br />' . DwHtml::link($url, 'Regresar a la página 1'));
     }
     $page->counter = $total_items >= $counter ? $counter : 1;
     $page->size = $total_items;
     $page->per_page = $per_page;
     return $page;
 }
예제 #3
0
 /**
  * Método para listar los items en el backend
  */
 public static function getItems()
 {
     $route = trim(Router::get('route'), '/');
     $html = '';
     foreach (self::$_items as $menu => $items) {
         $html .= '<div id="sub-menu-' . DwUtils::getSlug($menu) . '" class="subnav hidden">' . PHP_EOL;
         $html .= '<ul class="nav nav-pills">' . PHP_EOL;
         if (array_key_exists($menu, self::$_items)) {
             foreach (self::$_items[$menu] as $item) {
                 if (!APP_OFFICE && $item->id == Menu::SUCURSAL) {
                     continue;
                 }
                 $active = ($item->url == $route or $item->url == 'principal') ? 'active' : null;
                 $submenu = $item->getListadoSubmenuPorPerfil(self::$_entorno, self::$_perfil, $item->id);
                 if ($submenu) {
                     $html .= '<li class="' . $active . 'dropdown">';
                     $html .= DwHtml::link($item->url, ' <b class="fa fa-' . $main->icono . '"></b>' . $item->menu, array('class' => 'dropdown-toggle', 'role' => "button", "data-toggle" => "dropdown"), $item->icono);
                     $html .= '<ul class="dropdown-menu" role="menu">';
                     foreach ($submenu as $tmp) {
                         $html .= '<li>' . DwHtml::link($tmp->url, $tmp->menu, null, $tmp->icono) . '</li>' . PHP_EOL;
                     }
                     $html .= '</ul>' . PHP_EOL;
                     $html .= '</li>' . PHP_EOL;
                 } else {
                     $html .= '<li class="' . $active . '">' . DwHtml::link($item->url, $item->menu, null, $item->icono) . '</li>' . PHP_EOL;
                 }
             }
         }
         $html .= '</ul>' . PHP_EOL;
         $html .= '</div>' . PHP_EOL;
     }
     return $html;
 }
예제 #4
0
 /**
  * Método para crear un botón para imprimir reportes
  * @param type $path Ruta del controlador del módulo de reporte
  * @param type $file Tipos de formato de reporte
  * @param type $title (opcional) Titulo del botón
  * @param type $text (opcional) Texto a mostrar en el botón
  * @return type
  */
 public static function report($path, $files = 'html', $title = '', $text = '')
 {
     $path = '/reporte/' . trim($path, '/') . '/';
     //Verifico los tipos de archivo para llevar un orden específico
     $types = array();
     //Verifico si tiene el formato de impresora fiscal
     if (preg_match("/\\bticket\\b/i", $files)) {
         $types[] = 'ticket';
     }
     //Verifico si tiene el formato html
     if (preg_match("/\\bhtml\\b/i", $files)) {
         $types[] = 'html';
     }
     //Verifico si tiene el formato pdf
     if (preg_match("/\\bpdf\\b/i", $files)) {
         $types[] = 'pdf';
     }
     //Verifico si tiene el formato xls
     if (preg_match("/\\bxls\\b/i", $files)) {
         $types[] = 'xls';
     }
     //Verifico si tiene el formato xlsx
     if (preg_match("/\\bxlsx\\b/i", $files)) {
         $types[] = 'xlsx';
     }
     //Verifico si tiene el formato doc
     if (preg_match("/\\bdoc\\b/i", $files)) {
         $types[] = 'doc';
     }
     //Verifico si tiene el formato docx
     if (preg_match("/\\bdocx\\b/i", $files)) {
         $types[] = 'docx';
     }
     //Verifico si tiene el formato xml
     if (preg_match("/\\bxml\\b/i", $files)) {
         $types[] = 'xml';
     }
     //Verifico si tiene el formato docx
     if (preg_match("/\\bcsv\\b/i", $files)) {
         $types[] = 'csv';
     }
     //Uno los tipos
     $files = join('|', $types);
     $attrs = array();
     $attrs['class'] = 'btn-info js-report no-load';
     $attrs['title'] = 'Imprimir reporte';
     $attrs['data-report-title'] = empty($title) ? 'Imprimir reporte' : $title;
     $attrs['data-report-format'] = $files;
     if (empty($text)) {
         return DwHtml::button($path, '', $attrs, 'print');
     } else {
         return DwHtml::button($path, strtoupper($text), $attrs, 'print');
     }
 }
예제 #5
0
 /**
  * Método para renderizar el menú para el frontend
  */
 public static function frontend()
 {
     $route = trim(Router::get('route'), '/');
     $html = '';
     if (self::$_main) {
         $html .= '<ul class="nav navbar-nav">' . PHP_EOL;
         foreach (self::$_main as $main) {
             $active = $main->url == $route ? 'active' : null;
             if (empty(self::$_items[$main->menu])) {
                 $html .= '<li class="' . $active . '">' . DwHtml::link($main->url, $main->menu, NULL, $main->icono, FALSE) . '</li>' . PHP_EOL;
             } else {
                 $text = $main->menu . '<b class="caret"></b>';
                 $html .= '<li class="dropdown">';
                 $html .= DwHtml::link('#', $text, array('class' => 'dropdown-toggle', 'data-toggle' => 'dropdown'), NULL, FALSE);
                 $html .= '<ul class="dropdown-menu">';
                 foreach (self::$_items[$main->menu] as $item) {
                     $active = $item->url == $route ? 'active' : null;
                     $html .= '<li class="' . $active . '">' . DwHtml::link($item->url, $item->menu, NULL, $item->icon, FALSE) . '</li>';
                 }
                 $html .= '</ul>';
                 $html .= '</li>';
             }
         }
         $html .= '</ul>' . PHP_EOL;
     }
     return $html;
 }
예제 #6
0
 /**
  * Método para crear un botón para imprimir reportes
  * @param type $path Ruta del controlador del módulo de reporte
  * @param type $file Tipos de formato de reporte
  * @param type $title (opcional) Titulo del botón
  * @param type $text (opcional) Texto a mostrar en el botón
  * @return type
  */
 public static function report($path, $files = 'html', $title = '', $text = '')
 {
     $path = '/reporte/' . trim($path, '/') . '/';
     $attrs = array();
     $attrs['class'] = 'btn-info js-report no-ajax';
     $attrs['title'] = 'Imprimir reporte';
     $attrs['data-report-title'] = empty($title) ? 'Imprimir reporte' : $title;
     $attrs['data-report-format'] = $files;
     if (empty($text)) {
         return DwHtml::button($path, '', $attrs, 'fa-print');
     } else {
         return DwHtml::button($path, strtoupper($text), $attrs, 'fa-print');
     }
 }