|
@@ -0,0 +1,110 @@
|
|
|
|
|
+<?php
|
|
|
|
|
+
|
|
|
|
|
+namespace App\Core\Datatables;
|
|
|
|
|
+
|
|
|
|
|
+class Datatables {
|
|
|
|
|
+
|
|
|
|
|
+ private $classObject;
|
|
|
|
|
+
|
|
|
|
|
+ public function __construct($objectType) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static function getTable($class, $baseUrl, $list = true){
|
|
|
|
|
+
|
|
|
|
|
+ $header = "";
|
|
|
|
|
+ $headerItems = $class::_listable;
|
|
|
|
|
+
|
|
|
|
|
+ // If the class do not have a _datatables property.
|
|
|
|
|
+ // Avoid it from dying
|
|
|
|
|
+ try{
|
|
|
|
|
+ $headerItems = $class::_datatables;
|
|
|
|
|
+ }catch(\Error $e){
|
|
|
|
|
+ $headerItems = $class::_listable;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ foreach($headerItems as $element){
|
|
|
|
|
+ $header .= "<th data-field='$element' ";
|
|
|
|
|
+ if(!in_array($element, $class::_orderable)){
|
|
|
|
|
+ $header .= "data-orderable='false'";
|
|
|
|
|
+ }
|
|
|
|
|
+ $header .= ">".\Lang::getString($element, $baseUrl)."</th>\n";
|
|
|
|
|
+ }
|
|
|
|
|
+ $content = "";
|
|
|
|
|
+
|
|
|
|
|
+ if($list){
|
|
|
|
|
+ $content = <<<EOL
|
|
|
|
|
+ <table class='table datatable' data-src="/$baseUrl/table?selective=true" style="width: 100%">
|
|
|
|
|
+ <thead>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ $header
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </thead>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ EOL;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $content = <<<EOL
|
|
|
|
|
+ <table class='table datatable' data-src="/$baseUrl/table?selective=false" style="width: 100%">
|
|
|
|
|
+ <thead>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ $header
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </thead>
|
|
|
|
|
+ </table>
|
|
|
|
|
+ EOL;
|
|
|
|
|
+ }
|
|
|
|
|
+ return $content;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static function getActionMenu($id, $urlBase, $actions = []) {
|
|
|
|
|
+
|
|
|
|
|
+ $content = "";
|
|
|
|
|
+
|
|
|
|
|
+ if($actions){
|
|
|
|
|
+ $content = <<<EOL
|
|
|
|
|
+ <div class="dropdown">
|
|
|
|
|
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
|
|
|
+ Ações
|
|
|
|
|
+ </button>
|
|
|
|
|
+ <ul class="dropdown-menu">
|
|
|
|
|
+ EOL;
|
|
|
|
|
+ foreach($actions as $key => $action){
|
|
|
|
|
+ $content .= self::formatMenuItem($id, $urlBase, $key, $action, \Lang::getString($key, $urlBase));
|
|
|
|
|
+ }
|
|
|
|
|
+ $content.= <<<EOL
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ EOL;
|
|
|
|
|
+
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $content = <<<EOL
|
|
|
|
|
+ <div class="dropdown">
|
|
|
|
|
+ <button class="btn btn-secondary dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
|
|
|
+ Ações
|
|
|
|
|
+ </button>
|
|
|
|
|
+ <ul class="dropdown-menu">
|
|
|
|
|
+ <li><a class="dropdown-item" href="$urlBase/$id/edit">Editar</a></li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ EOL;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return $content;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private static function formatMenuItem($id, $urlBase, $key, $action, $label = ''){
|
|
|
|
|
+ $content = "<li><a class='dropdown-item' href='$action'>$label</a></li>";
|
|
|
|
|
+ $content = str_replace('{id}', $id, $content);
|
|
|
|
|
+ $content = str_replace('{base}', $urlBase, $content);
|
|
|
|
|
+ $content = str_replace('{action}', $key, $content);
|
|
|
|
|
+ return $content;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static function getSelectMenu($id) {
|
|
|
|
|
+ $content = <<<EOL
|
|
|
|
|
+ <button class="btn btn-secondary btn-sm" data-id='$id'> Selecionar </button>
|
|
|
|
|
+ EOL;
|
|
|
|
|
+ return $content;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|