Пример #1
0
 /**
  * @param array $links
  *
  * @return $this|self
  */
 private function setSchema(array $links = []) : self
 {
     $this->schema = new HtmlContainer('<script>');
     $this->schema->addAttribute('type', 'application/ld+json');
     $content = ['@context' => 'http://schema.org', '@type' => 'BreadcrumbList', 'itemListElement' => []];
     $uri = clone self::request()->getUri();
     $count = 1;
     foreach ($links as $url => $link) {
         $content['itemListElement'][] = ['@type' => 'ListItem', 'position' => $count, 'item' => ['@id' => $uri->setPath($url)->get(false), 'name' => $link]];
         $count++;
     }
     $this->schema->setContent(json_encode($content));
     $this->add($this->schema);
     return $this;
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function render()
 {
     if ($this->responsive) {
         $div = new HtmlElement('<div>');
         $div->addClass('table-responsive');
         $div->setContent(parent::render());
         return $div->render();
     } else {
         return parent::render();
     }
 }
Пример #3
0
 /**
  * @param int $page
  * @param string $display
  *
  * @return HtmlElement
  */
 private function getLi(int $page, string $display = null) : HtmlElement
 {
     $li = new HtmlElement('<li>');
     $url = call_user_func($this->argsCallback, $this, $page);
     if ($page == $this->current) {
         $li->addClass($display ? 'disabled' : 'active');
     }
     if ($this->current == $page) {
         $li->setContent('<span href="' . $url . '">' . ($display ?: $page) . '</span>');
     } else {
         $li->setContent('<a href="' . $url . '">' . ($display ?: $page) . '</a>');
     }
     if ($this->current - 1 == $page) {
         $li->addAttribute('rel', 'prev');
     }
     if ($this->current + 1 == $page) {
         $li->addAttribute('rel', 'next');
     }
     return $li;
 }
Пример #4
0
 /**
  * Add Css file inclusion
  *
  * @param string $javascript
  * @param array $attributes
  * @param bool $footer
  *
  * @return $this|self
  */
 public function addJs(string $javascript, array $attributes = [], bool $footer = true) : self
 {
     $meta = new HtmlElement('<script>');
     $meta->addAttribute('type', 'text/javascript');
     $meta->addAttributes($attributes);
     if (substr($javascript, -3) == '.js' || substr($javascript, 0, 2) == '//' || substr($javascript, 0, 4) == 'http') {
         list($path, $hash) = $this->getAssetData($javascript);
         if ($hash) {
             $meta->addAttribute('name', str_replace(['.js', '.', '/', ':'], ['', '_', '_', '_'], $javascript));
         }
         $meta->addAttribute('src', $path);
     } else {
         $meta->setContent($javascript);
     }
     if ($footer) {
         $this->footer->add($meta);
     } else {
         $this->head->add($meta);
     }
     // add a preload header
     if ($meta->getAttribute('src') && $footer) {
         $preload = new HtmlElement('<link>');
         $preload->addAttributes(['as' => 'script', 'href' => $meta->getAttribute('src'), 'rel' => 'preload']);
         $this->head->add($preload);
     }
     return $this;
 }
Пример #5
0
 /**
  * {@inheritdoc}
  */
 public function setContent($content) : parent
 {
     $this->field->setContent($content);
     return $this;
 }
Пример #6
0
 /**
  * @return string
  */
 public function render()
 {
     if (sizeof($this->data)) {
         // append row actions
         foreach ($this->rowActions as $i => $rowAction) {
             $this->add((new Column('row_action_' . $i, ''))->addRenderer(new RowActionRenderer($rowAction))->addClass('row-action')->setHideable(false));
         }
         foreach ($this->data as $row) {
             $tr = new HtmlContainer('<tr>');
             if (sizeof($this->thead->elements)) {
                 /** @var Column $column */
                 foreach ($this->thead->elements as $column) {
                     if ($column->isVisible() && $column->isRenderable()) {
                         $td = new HtmlElement('<td>');
                         $td->addClass($column->getClasses());
                         $content = $row[$column->getId()] ?? '';
                         if ($column->getRenderer()) {
                             foreach ($column->getRenderer() as $renderer) {
                                 $content = $renderer($content, $column, $this->getPrimaryValues($row), $row);
                             }
                         }
                         $td->setContent((string) $content);
                         $tr->add($td);
                     }
                 }
             } else {
                 foreach ($row as $col) {
                     $tr->add(new HtmlElement('<td>', $col));
                 }
             }
             if ($this->rowRenderers) {
                 foreach ($this->rowRenderers as $callback) {
                     $tr = call_user_func($callback, $tr, $row, $this);
                 }
             }
             $this->tbody->add($tr);
         }
     } else {
         $this->tbody->add((new HtmlContainer('<tr>'))->add((new HtmlElement('<td>'))->addAttribute('colspan', (string) sizeof($this->getVisibleColumns()))->setContent(self::trans('html.table/noResult'))->addClass('text-center')));
     }
     $return = parent::render();
     return $return;
 }
Пример #7
0
 /**
  * @return string
  */
 public function render()
 {
     $this->element->setContent(json_encode($this->data));
     return $this->element->render();
 }