dmitrybubyakin / nova-medialibrary-field

Laravel Nova field for managing the Spatie media library
MIT License
265 stars 61 forks source link

Кропилка, добить функционал + бага #29

Closed ghost closed 4 years ago

ghost commented 5 years ago

Очень хотелось бы видеть доп функционал кропилки в виде ограничения пропорциями сторон изображения. Например в свойствах принимать либо коэфф типа 1.33(3) или 16:10

Также хотелось бы, чтобы кропилка по умолчанию выбирала всё изображение целиком. Так как приходится постоянно дотягивать края, и ели (бага) зажатая мышь уходит за пределы попапа с кропом то попап сворачивается.

ghost commented 4 years ago

@dmitrybubyakin в планах? на какие даты или сроки? менеджеры прям за грудки трясут =)

dmitrybubyakin commented 4 years ago

@h-zone сейчас там работают все конфиги, которые есть в cropperjs. Могу еще несколько кнопок добавить, если в них есть смысл, как раз думаю насчет aspectRation image

dmitrybubyakin commented 4 years ago

@h-zone ты сейчас уже можешь пользоваться (кстати, топ фича - работает на edit/create). Думаю в субботу релиз будет, как документацию напишу

ghost commented 4 years ago

@dmitrybubyakin мне надо отконфига задать пропорцию с по умоланию растянутой коробкой по максимальной стороне выбранной пропорции, чтобы осталось только таскать коробку по вертикали или горизонтали.

dmitrybubyakin commented 4 years ago

@h-zone тут можно это сделать? https://fengyuanchen.github.io/cropperjs/

ghost commented 4 years ago

@dmitrybubyakin только счас добрался. плохая дока по ->cropable() не ясно, какой conversion ему указывать... новый создать? если да, то это, честно говоря лишнее.

ghost commented 4 years ago

коротко-говоря нужны демо-сборки. счас собрал и не могу добавить изображение

FireShot Screen Capture #027 - 'ClientArea' - clientarea_h

dmitrybubyakin commented 4 years ago

@h-zone conversion для crop нужно указывать. spatie/laravel-medialibrary именно так и работает

ghost commented 4 years ago

на скрине - панель с филдом

ghost commented 4 years ago
Medialibrary::make( __( 'Images' ), 'service_images', NovaMedia::class )
->mediaOnIndex( 3 )
->croppable('crop')
->accept( 'image/jpeg', 'image/gif', 'image/png' )
->sortable()
->attachUsing( function ( HasMedia $model, UploadedFile $file, string $collectionName, string $diskName, string $fieldUuid )
{
    if ($model instanceof TransientModel) {
        $collectionName = $fieldUuid;
    }
    $fileAdder = $model->addMedia($file);
    $fileAdder->usingFileName( Str::random( 32 ) . '.' . pathinfo( $file->getClientOriginalName(), PATHINFO_EXTENSION ) );
    $fileAdder->toMediaCollection($collectionName, $diskName);
} )

всё верно делаю?

dmitrybubyakin commented 4 years ago

@h-zone Medialibrary::make( __( 'Images' ), 'service_images', NovaMedia::class ) - 3 параметр теперь $diskName

ghost commented 4 years ago

@dmitrybubyakin даже вот так в другом ресурсе, использующем медиа нет кнопки "создать" (политик/гейтов нет). Medialibrary::make( __( 'Images' ), 'service_images', 'yos' ); (yos=yandex object storage) до апа всё работало, естессно

ghost commented 4 years ago

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

ghost commented 4 years ago

если не сложно - покажи свою модельку, которую использовал для работы с филдом. это бы объяснило многое.

dmitrybubyakin commented 4 years ago
<?php declare(strict_types=1);

namespace App;

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use Spatie\MediaLibrary\Models\Media;

class Post extends Model implements HasMedia
{
    use HasMediaTrait;

    protected $guarded = [];

    public function registerMediaCollections(): void
    {
        $this->addMediaCollection('preview')->singleFile();
    }

    public function registerMediaConversions(Media $media = null): void
    {
        $this->addMediaConversion('preview')->width(368)->height(232);

        $this->addMediaConversion('cropped');
    }
}
ghost commented 4 years ago

не помогло, у меня так же, только вместо preview -> thumb . не могу создавать изображения, - нет кнопки "создать". есть идеи где рыть?

dmitrybubyakin commented 4 years ago

@h-zone скинь скрин страницы (если что, создать можно на edit/create, на details нельзя)

ghost commented 4 years ago

не могу скинуть всю страницу. комм.тайна и нда. может как-то в приват выйти возможно?

ghost commented 4 years ago

Последнее, чо надо решить:

  1. А где в деталях кнопка "добавить изображение" ?

  2. Категорически прошу кнопку aspectRatio при маунте vue-компоненты сделать нажатой при указанных initialAspectRatio или aspectRatio. в противном случае это free-режим.

  3. Изменение viewMode результата не даёт

БОЛЬШОЕ Спасибо за компоненту!

dmitrybubyakin commented 4 years ago

@h-zone

https://github.com/dmitrybubyakin/nova-medialibrary-field#attachondetails

image

Насчет 2 и 3 детальнее и если можно, со скринами желаемого результата

ghost commented 4 years ago

@dmitrybubyakin

  1. реально нет кнопок в details FireShot Screen Capture #029 - 'ClientArea' - clientarea_h

Это говорит о том, что не все нюансы выложены в инструкции по установке. вероятно чего-то у меня нет, чо есть у тебя.

2 и 3: файл dmitrybubyakin/nova-medialibrary-field/resources/js/components/Medialibrary/Modals/Cropper.vue в кропилке, параметрами указываю aspectRatio и гружу вертикальную фото.

dmitrybubyakin commented 4 years ago

@h-zone image

Это точно используется?

ghost commented 4 years ago

@h-zone image

Это точно используется?

нет конечно, - пиши на русском инструкцию.

а вообще, есть смысл использовать алгоритм onlyOnDetail и другие аналогичные методы... из которых после своего кода дёргаешь parent::onlyOnDetail()

dmitrybubyakin commented 4 years ago

а вообще, есть смысл использовать алгоритм onlyOnDetail и другие аналогичные методы... из которых после своего кода дёргаешь parent::onlyOnDetail()

Нет. Другие цели здесь