public function __invoke(Attachment $attachment)
 {
     $folder = "uploads/entities/" . $attachment->getEntityName() . '/' . $attachment->getEntityId();
     $filePath = dirname(__DIR__) . "/../../../../../public/" . $folder;
     $grid = new Grid();
     $grid->setHasEntity(false);
     $grid->addColumn(new GridColumn('file', "Arquivo", 50));
     $grid->addColumn(new GridColumn('title', "Título"));
     $grid->addColumn(new GridColumn('type', "Tipo"));
     $grid->addColumn(new GridColumn('path', "Caminho"));
     $grid->addColumn(new GridColumn('size', "Tamanho"));
     $gridData = array();
     if (is_dir($filePath)) {
         $dir = opendir($filePath);
         while ($read = readdir($dir)) {
             if ($read != '.' && $read != '..') {
                 $fileName = $filePath . '/' . $read;
                 $path = $this->view->basePath($folder . '/' . $read);
                 $pathInfo = pathinfo($path);
                 $mimeType = $pathInfo['extension'];
                 $fileSize = number_format(filesize($fileName) / 1048576, 2) . ' MB';
                 $gridData[] = array('file' => "<a href=\"javascript:popupImage('{$path}');\">\n                                       <img src='{$path}' title='Clique para ampliar' width='50' height='50'/>\n                                   </a>", 'title' => $pathInfo['basename'], 'type' => strtoupper($mimeType), 'path' => $path, 'size' => $fileSize, GridColumn::GRID_IDENTITY_COLUMN_DEFAULT => $attachment->getEntityId(), 'attachment' => $pathInfo['basename']);
             }
         }
         $grid->setData($gridData);
     }
     $route = $this->getCurrentRoute();
     $grid->hideDefaultGridActions(true);
     $grid->addGridAction(new GridAction(GridAction::GRID_ACTION_DELETE_ID, "Excluir anexo", $route, 'removeattachment', "fa-trash-o"));
     $grid->setIdentityColumns(array(GridColumn::GRID_IDENTITY_COLUMN_DEFAULT, 'attachment'));
     return $this->view->GridHelper($grid);
 }
Example #2
0
 /**
  * Primerio oter todos os atributos da classe de forma automática;
  * Depois, obter todos atributos que possuem annotações que serão utilizadas;
  * Estes atributos serão gerados na grid. 
  * 
  * @param \Dataware\Entity\Grid $grid
  */
 private function makeGridColumnsByEntity(Grid $grid)
 {
     if (strlen($grid->getEntity()) > 0) {
         $annotationBuilder = new AnnotationBuilder();
         $formEspecification = $annotationBuilder->getFormSpecification($grid->getEntity());
         foreach ($formEspecification['elements'] as $element) {
             if (strlen($element['spec']['options']['label']) > 0) {
                 // É possível a partir do tipo, conseguir descobrir o alinhamento dos registros.
                 $gridColumn = new GridColumn($element['spec']['name'], $element['spec']['options']['label']);
                 $grid->addColumn($gridColumn);
             }
         }
     }
 }