/**
  * get theme breadcrumb
  *
  * @param array $models
  * @param array $columns
  * @return  string
  */
 public function getBreadcrumb($models = [], $columns = [])
 {
     $transAndRoute = $this->getTransRouteParam($models, $columns);
     $modelTrans = $transAndRoute['trans'];
     $modelRoute = $transAndRoute['route'];
     $breadcrumbs = '<ul class="page-breadcrumb breadcrumb">';
     // admin dashboard
     if (!is_null(app()->getProvider(config('laravel-modules-core.packages.laravel-dashboard-module')))) {
         $breadcrumbs .= $this->getDashboardBreadcrumb();
     }
     // if admin dashboard index return
     if (strpos($this->route_name, 'dashboard') !== false) {
         $breadcrumbs .= '</ul>';
         return $breadcrumbs;
     }
     $breadcrumbs .= '<li>';
     $parent_text = strpos($this->route_name, 'index') !== false ? trans($this->module_name . $this->route_name, $modelTrans) : trans($this->module_name . $this->index_route_name, $modelTrans);
     if (strpos($this->route_name, 'index') !== false) {
         $breadcrumbs .= $parent_text;
     } else {
         if (Route::has($this->index_route_name)) {
             $hackedRoute = isset($modelRoute['id']) && routeHackable($this->index_route_name) ? $this->index_route_name . '#####' . $modelRoute['id'] : $this->index_route_name;
             $route = hasPermission($hackedRoute) ? lmbRoute($this->index_route_name, $modelRoute) : 'javascript:;';
             $breadcrumbs .= '<a href="' . $route . '">' . $parent_text . '</a><i class="fa fa-circle"></i>';
         }
     }
     $breadcrumbs .= '</li>';
     if (strpos($this->route_name, 'index') === false) {
         $breadcrumbs .= '<li> <span class="active"> ' . trans($this->module_name . $this->route_name, $modelTrans) . '</span> </li>';
     }
     $breadcrumbs .= '</ul>';
     return $breadcrumbs;
 }
 /**
  * get operation buttons
  *
  * @param \Illuminate\Support\Collection $model
  * @param string $currentPage
  * @param boolean $isPublishable
  * @param \Illuminate\Support\Collection|null $relatedModel
  * @param string $modelRouteRegex
  * @return string
  */
 function getOps($model, $currentPage, $isPublishable = false, $relatedModel = null, $modelRouteRegex = '')
 {
     $routeName = snake_case(class_basename($model));
     $routeParams = ['id' => $model->id];
     if (!is_null($relatedModel)) {
         $routeName = snake_case(class_basename($relatedModel)) . '.' . $routeName;
         $routeParams = ['id' => $relatedModel->id, $modelRouteRegex => $model->id];
     }
     $ops = Form::open(['method' => 'DELETE', 'url' => lmbRoute("admin.{$routeName}.destroy", $routeParams), 'style' => 'margin:0', 'id' => "destroy_form_{$model->id}"]);
     // edit buton
     if ($currentPage !== 'edit') {
         $hackedRoute = !is_null($relatedModel) && routeHackable("admin.{$routeName}.show") ? "admin.{$routeName}.show#####" . $relatedModel->id : "admin.{$routeName}.edit";
         if ($routeName === 'user' && $model->id === Sentinel::getUser()->id || hasPermission($hackedRoute)) {
             $ops .= '<a href="' . lmbRoute("admin.{$routeName}.edit", $routeParams) . '" class="btn btn-sm btn-outline yellow margin-right-10">';
             $ops .= '<i class="fa fa-pencil"></i>';
             $ops .= '<span class="hidden-xs">';
             $ops .= trans('laravel-modules-core::admin.ops.edit');
             $ops .= '</span>';
             $ops .= '</a>';
         }
     }
     // show buton
     if ($currentPage !== 'show') {
         $hackedRoute = !is_null($relatedModel) && routeHackable("admin.{$routeName}.show") ? "admin.{$routeName}.show#####" . $relatedModel->id : "admin.{$routeName}.show";
         if ($routeName === 'user' && $model->id === Sentinel::getUser()->id || hasPermission($hackedRoute)) {
             $ops .= '<a href="' . lmbRoute("admin.{$routeName}.show", $routeParams) . '" class="btn btn-sm btn-outline green margin-right-10">';
             $ops .= '<i class="fa fa-search"></i>';
             $ops .= '<span class="hidden-xs">';
             $ops .= trans('laravel-modules-core::admin.ops.show');
             $ops .= '</span>';
             $ops .= '</a>';
         }
     }
     // silme butonu
     $hackedRoute = !is_null($relatedModel) && routeHackable("admin.{$routeName}.destroy") ? "admin.{$routeName}.destroy#####" . $relatedModel->id : "admin.{$routeName}.destroy";
     if (hasPermission($hackedRoute)) {
         if ($routeName !== 'user' || $model->id !== Sentinel::getUser()->id) {
             $ops .= '<button type="submit" onclick="bootbox.confirm( \'' . trans('laravel-modules-core::admin.ops.destroy_confirmation') . '\', function(r){if(r) $(\'#destroy_form_' . $model->id . '\').submit();}); return false;" class="btn btn-sm red btn-outline margin-right-10">';
             $ops .= '<i class="fa fa-trash"></i>';
             $ops .= '<span class="hidden-xs">';
             $ops .= trans('laravel-modules-core::admin.ops.destroy');
             $ops .= '</span>';
             $ops .= '</button>';
         }
     }
     // yayınlama veya yayından kaldırma butonu
     if ($isPublishable) {
         // yayından kaldırma
         if ($model->is_publish) {
             $hackedRoute = !is_null($relatedModel) && routeHackable("admin.{$routeName}.notPublish") ? "admin.{$routeName}.notPublish#####" . $relatedModel->id : "admin.{$routeName}.notPublish";
             if (hasPermission($hackedRoute)) {
                 $ops .= '<a href="' . lmbRoute("admin.{$routeName}.notPublish", $routeParams) . '" class="btn btn-sm btn-outline purple margin-right-10">';
                 $ops .= '<i class="fa fa-times"></i>';
                 $ops .= '<span class="hidden-xs">';
                 $ops .= trans('laravel-modules-core::admin.ops.not_publish');
                 $ops .= '</span>';
                 $ops .= '</a>';
             }
         } else {
             $hackedRoute = !is_null($relatedModel) && routeHackable("admin.{$routeName}.publish") ? "admin.{$routeName}.publish#####" . $relatedModel->id : "admin.{$routeName}.publish";
             if (hasPermission($hackedRoute)) {
                 $ops .= '<a href="' . lmbRoute("admin.{$routeName}.publish", $routeParams) . '" class="btn btn-sm btn-outline blue margin-right-10">';
                 $ops .= '<i class="fa fa-bullhorn"></i>';
                 $ops .= '<span class="hidden-xs">';
                 $ops .= trans('laravel-modules-core::admin.ops.publish');
                 $ops .= '</span>';
                 $ops .= '</a>';
             }
         }
     }
     $ops .= Form::close();
     return $ops;
 }
 /**
  * Generate a URL to a named route.
  *
  * @param  string  $name
  * @param  array   $parameters
  * @return string
  */
 function routeHack($name, $parameters = [])
 {
     if (is_null($name) || !routeHackable($name)) {
         return $name;
     }
     $hacked = $name;
     if (count($parameters) > 0) {
         $hacked .= '#####' . $parameters['id'];
     }
     return $hacked;
 }