Skip to content

4.82.20

Compare
Choose a tag to compare
@butschster butschster released this 11 Mar 08:05
· 972 commits to master since this release

Changed

  • Добавлен колбек на сохранение файлов (читать в документации)

      AdminFormElement::images('some_images', "Some Label")
              ...
          ->setSaveCallback(function ($file, $path, $filename, $settings) use ($id) {
              $result = $youimage;
                  
              return ['path' => $result['url'], 'value' => $result['path|url']];
          }),
  • Исправлена проблема с заменой контроллера для раздела для Laravel версии > 5.2

  • Перенос интерфейсов SleepingOwl\Admin\Contracts\RepositoryInterface и SleepingOwl\Admin\Contracts\TreeRepositoryInterface в директорию SleepingOwl\Admin\Contracts\Repositories

  • Замена название директории src\Repository в src\Repositories

  • Добавлена поддержка Laravel 5.4

  • В конструктор класса раздела добавлен еще один обязательный параметр Application $app

    public function __construct(\Illuminate\Contracts\Foundation\Application $app, $class)
    {
        ...
    }
  • Исправлена проблема с использованием Policy в классах разделов.

  • Глобальный рефакторинг и структурирование кода.

    • Класс шаблона теперь ответчает за отображение хлебных крошек, meta и навгации

    • Класс Admin стал более системным и центральным. В него вынесены регистрируемые сервис провайдеры и алиасы
      сервис контейнеров.
      43e24a7

      Алиасы для сервис контейнеров

      [
          'sleeping_owl' => ['SleepingOwl\Admin\Admin', 'SleepingOwl\Admin\Contracts\AdminInterface'],
          'sleeping_owl.template' => ['SleepingOwl\Admin\Contracts\Template\TemplateInterface'],
          'sleeping_owl.breadcrumbs' => ['SleepingOwl\Admin\Contracts\Template\Breadcrumbs'],
          'sleeping_owl.widgets' => ['SleepingOwl\Admin\Contracts\Widgets\WidgetsRegistryInterface', 'SleepingOwl\Admin\Widgets\WidgetsRegistry'],
          'sleeping_owl.message' => ['SleepingOwl\Admin\Widgets\Messages\MessageStack'],
          'sleeping_owl.navigation' => ['SleepingOwl\Admin\Navigation', 'SleepingOwl\Admin\Contracts\Navigation\NavigationInterface'],
          'sleeping_owl.wysiwyg' => ['SleepingOwl\Admin\Wysiwyg\Manager', 'SleepingOwl\Admin\Contracts\Wysiwyg\WysiwygMangerInterface'],
          'sleeping_owl.meta' => ['assets.meta', 'SleepingOwl\Admin\Contracts\Template\MetaInterface', 'SleepingOwl\Admin\Templates\Meta'],
      ]
  • Структурирование интерфейсов.

    SleepingOwl\Admin\Contracts\ColumnInterface -> SleepingOwl\Admin\Contracts\Display\ColumnInterface`
    SleepingOwl\Admin\Contracts\DisplayInterface -> SleepingOwl\Admin\Contracts\Display\DisplayInterface
    SleepingOwl\Admin\Contracts\ActionInterface -> SleepingOwl\Admin\Contracts\Display\Extension\ActionInterface
    SleepingOwl\Admin\Contracts\ColumnFilterInterface -> SleepingOwl\Admin\Contracts\Display\Extension\ColumnFilterInterface
    SleepingOwl\Admin\Contracts\FilterInterface -> SleepingOwl\Admin\Contracts\Display\Extension\FilterInterface
    SleepingOwl\Admin\Contracts\NamedColumnInterface -> SleepingOwl\Admin\Contracts\Display\NamedColumnInterface
    SleepingOwl\Admin\Contracts\FormButtonsInterface -> SleepingOwl\Admin\Contracts\Form\FormButtonsInterface
    SleepingOwl\Admin\Contracts\FormElementInterface -> SleepingOwl\Admin\Contracts\Form\FormElementInterface
    SleepingOwl\Admin\Contracts\FormInterface -> SleepingOwl\Admin\Contracts\Form\FormInterface
  • Переделана инициализация хлебных крошек
    Для лучшей совместимости было принято решение об отказе от сервис провайдера DaveJamesMiller\Breadcrumbs\ServiceProvider, т.к.
    при испльзовании этого сервис провайдера была проблема с использованием пакета в своем приложении.
    Для использования пакета в своем приложении вы должны подключать самостоятельно сервис провайдер DaveJamesMiller\Breadcrumbs\ServiceProvider
    и регистрировать при необходимости фасад.

  • Вынос логики роутов отдельных компонентов из анонимных функций в контроллеры для возможности кеширования роутов.

  • Phpunit version ~4.1 -> ~5.0

  • Полностью переработал принцип работы с различными типами репозиториев, которые используются для построения дерева.

    Теперь за каждый тип дерева отвечает отдельный класс, https://github.com/LaravelRUS/SleepingOwlAdmin/tree/development/src/Display/Tree Это позволяет нам полностью отвязать TreeRepository от конкретного пакета построения дерева и использовать свои реализации.

    Для поддержки своего типа дерева необходимо добавить свой класс, для удобства его можно наследовать от SleepingOwl\Admin\Display\Tree\NestedsetType и реализовать те методы, которые он попросит. В случае @Lunatig будет выглядеть как-то так:

    <?php
    
    namespace Admin\Tree;
    
    use Illuminate\Database\Eloquent\Model;
    use SleepingOwl\Admin\Display\Tree\BaumNodeType;
    
    /**
     * @see https://github.com/etrepat/baum
     */
    class CustomBaumNodeType extends BaumNodeType
    {
        /**
         * Get tree structure.
         *
         * @param \Illuminate\Database\Eloquent\Collection $collection
         *
         * @return mixed
         */
        public function getTree(\Illuminate\Database\Eloquent\Collection $collection)
        {
            return $collection->toSortedHierarchy();
        }
    }

    А дальше при инициализации DisplayTree мы указываем этот класс

    AdminDisplay::tree(\Admin\Tree\CustomBaumNodeType::class)->...

Added

  • Collection SleepingOwl\Admin\Form\FormElementsCollection

  • Collection SleepingOwl\Admin\Display\DisplayTabsCollection

  • Collection SleepingOwl\Admin\Display\ExtensionCollection

  • Interface SleepingOwl\Admin\Contracts\WithModel

  • Admin Element Factories

    // Display Column Filters
    'sleeping_owl.column_filter' => SleepingOwl\Admin\Contracts\Display\DisplayColumnFilterFactoryInterface::class;
    
    // Displays
    'sleeping_owl.display' => SleepingOwl\Admin\Contracts\Display\DisplayFactoryInterface::class;
    
    // Display Columns
    'sleeping_owl.table.column' => SleepingOwl\Admin\Contracts\Display\DisplayColumnFactoryInterface::class;
    
    // Display ColumnEditables
    'sleeping_owl.table.column.editable' => SleepingOwl\Admin\Contracts\Display\DisplayColumnEditableFactoryInterface::class;
    
    // Display Filters
    'sleeping_owl.display.filter' => SleepingOwl\Admin\Contracts\Display\DisplayFilterFactoryInterface::class;
    
    // Forms
    'sleeping_owl.form' => SleepingOwl\Admin\Contracts\Form\FormFactoryInterface::class;
    
    // Form Elements
    'sleeping_owl.form.element' => SleepingOwl\Admin\Contracts\Form\FormElementFactoryInterface::class;

Issues