# Media Picker The media picker formfield allows you to upload/delete/select files directly from the media-manager. You can customize the behaviour with the following options: ```php { "max": 10, "min": 0, "expanded": true, "show_folders": true, "show_toolbar": true, "allow_upload": true, "allow_move": true, "allow_delete": true, "allow_create_folder": true, "allow_rename": true, "allow_crop": true, "allowed": [], "hide_thumbnails": false, "quality": 90, "watermark": { "source": "...", "position": "top-left", "x": 0, "y": 0 } } ```
Name Description Type Default
base_path The start path relative to the filesystem String /bread-slug/
rename Rename uploaded files to a given string/expression String Original name
delete_files

Delete files if the BREAD entry is deleted.

Use with caution!

bool false
show_as_images Shows stored data as images when browsing bool false
min The minimum amount of files that can be selected int 0
max

The maximum amount of files that can be selected.

0 means infinite

int 0
expanded If the media-picker should be expanded by default bool true
show_folders Show subfolders bool true
show_toolbar Shows/hides the whole toolbar bool false
allow_upload Allow users to upload new files bool true
allow_move Allow users to move files/folders bool true
allow_delete Allow users to delete files bool true
allow_create_folder Allow users to create new folders bool true
allow_rename

Allow users to rename files.

Use with caution!

bool true
allow_crop Allow users to crop images bool true
hide_thumbnails Hides known thumbnails and shows them as children of the parent image bool true
quality Sets the quality of uploaded images and thumbnails int 90
allowed

The allowed types to be uploaded/selected.

Empty object means all types.

Files with other types won't be displayed.

Object []
### Allowed types If you want your users to only be able to upload specific file-types you can do so by passing an object with mime-types to the \`allowed\` prop, for example: ```text ["image", "audio", "video"] ``` or ```text ["image/jpeg", "image/png", "image/bmp"] ``` ### Expressions The `base_path` and `rename` can contain the following placeholders: * `{pk}` the primary-key of the entry \(only for `base_path`\) * `{uid}` the user-id of the current logged-in user * `{date:format}` the current date in the format defined in `format`. For example `{date:d.m.Y}` * `{random:10}` random string with N characters So a `base_path` can, for example, look like the following: ```text { "base_path": "/my-bread/{pk}/{date:Y}/{date:m}/" } ``` ### Watermark A watermark can be added to uploaded images. To do so, you need to define a `source` property relative to Voyagers storage-disk. There are a few optional arguments you can use: **position** the position where the watermark is placed. Can be: - top-left (default) - top - top-right - left - center - right - bottom-left - bottom - bottom-right **x** Relative offset to the position on the x-axis. Defaults to 0 **y** Relative offset to the position on the y-axis. Defaults to 0 **size** the size (in percent) of the watermark relative to the image. Defaults to 15 ### Thumbnails You can generate thumbnails for each uploaded image. A thumbnail can be one of three types: #### Fit Fit combines cropping and resizing to find the best way to generate a thumbnail matching your dimensions. You have to pass `width` and can pass `height` and `position`. An example for `fit` would be: ``` { "thumbnails": [ { "type": "fit", "name": "fit-500", "width": 500, // Required "height": 500, // Optional "position": "center" // Optional. Refer to http://image.intervention.io/api/fit } ] } ``` #### Crop Crop an image by given dimensions and position. You have to pass `width` and `height` and can pass `x` and `y`. An example for `crop` would be: ``` { "thumbnails": [ { "type": "crop", "name": "crop-500-500", "width": 500, // Required "height": 500, // Required "x": 50, // Optional. Left offset "y": 50, // Optional. Top offset } ] } ``` #### Resize Resize the image to the given dimensions. You have to pass `width` and/or `height`. Some examples for `resize`: ``` { "thumbnails": [ // Width will be 500px, height will be calculated based on the aspect-ratio { "type": "resize", "name": "resize-500", "width": 500, "upsize": true, // Optional. Set to false to prevent upsizing }, // Resizes the image to 500x500px { "type": "resize", "name": "resize-500-500", "width": 500, "height": 500 }, // Height will be 500px, width will be auto-calculated { "type": "resize", "name": "resize-500", "width": null, "height": 500 } ] } ``` A watermark can also be inserted into each thumbnail. Just define the [watermark-options](#watermark) on the parent and set `watermark` to `true` for each thumbnail you want to insert the watermark to.