Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kid1194/frappe-better-attach-control

A small plugin for Frappe that adds the support of customizations to the attach control.
https://github.com/kid1194/frappe-better-attach-control

attachment erpnext erpnext-customization file-upload frappe frappe-attachments frappe-framework javascript uploads

Last synced: 4 months ago
JSON representation

A small plugin for Frappe that adds the support of customizations to the attach control.

Awesome Lists containing this project

README

        

# Frappe Better Attach Control

A small plugin for Frappe that adds customization to the attach control.
It supports RTL layout and dark mode out of the box.

⚠️ **v2 is still in BETA stage** ⚠️

![v2 Beta17](https://img.shields.io/badge/v2_Beta17-2024/06/13-green?style=plastic)

**Apologies in advance for any problem or bug you face with this module.**
**Please report any problem or bug you face so it can be fixed.**

---


Better Attach Control



Better Attach Control



Better Attach Control

---

### Status
- **Desk**: 🔵 Testing
- **Web Form**: 🔵 Testing

---

### Special Thanks
**A simple display of gratitude and appreciation to those who provided helped and kind support.**
#### Version 2
- [![MohsinAli](https://img.shields.io/badge/MohsinAli-Debug_%7C_Test_%7C_Fix-ff0000?style=plastic)](https://github.com/mohsinalimat)
- [![Robert C](https://img.shields.io/badge/Robert_C-Debug_%7C_Test-orange?style=plastic)](https://github.com/robert1112)
- [![NirajRegmi](https://img.shields.io/badge/NirajRegmi-Debug_%7C_Test-orange?style=plastic)](https://github.com/NirajRegmi)
- [![galaxlabs](https://img.shields.io/badge/galaxlabs-Enhancement-blue?style=plastic)](https://github.com/galaxlabs)
#### Version 1
- [![CA. B.C.Chechani](https://img.shields.io/badge/CA._B.C.Chechani-Debug_%7C_Test-blue?style=plastic)](https://github.com/chechani)

---

### Table of Contents
- [Requirements](#requirements)
- [Setup](#setup)
- [Install](#install)
- [Update](#update)
- [Uninstall](#uninstall)
- [Usage](#usage)
- [Available Field Options](#available-field-options)
- [Available JavaScript Methods](#available-javascript-methods)
- [Supported Fields](#supported-fields)
- [Issues](#issues)
- [License](#license)

---

### Requirements
- Frappe >= v12.0.0

---

### Setup

⚠️ **Do not forget to replace [sitename] with the name of your site in all commands.** ⚠️

#### Install
1. Go to bench directory

```
cd ~/frappe-bench
```

2. Get plugin from Github

*(Required only once)*

```
bench get-app https://github.com/kid1194/frappe-better-attach-control
```

3. Build plugin

*(Required only once)*

```
bench build --app frappe_better_attach_control
```

4. Install plugin on a specific site

```
bench --site [sitename] install-app frappe_better_attach_control
```

5. Check the [usage](#usage) section below

#### Update
1. Go to app directory

```
cd ~/frappe-bench/apps/frappe_better_attach_control
```

2. Get updates from Github

```
git pull
```

3. Go to bench directory

```
cd ~/frappe-bench
```

4. Build plugin

```
bench build --app frappe_better_attach_control
```

5. Update a specific site

```
bench --site [sitename] migrate
```

6. (Optional) Restart bench to clear cache

```
bench restart
```

#### Uninstall
1. Go to bench directory

```
cd ~/frappe-bench
```

2. Uninstall plugin from a specific site

```
bench --site [sitename] uninstall-app frappe_better_attach_control
```

3. Remove plugin from bench

```
bench remove-app frappe_better_attach_control
```

4. (Optional) Restart bench to clear cache

```
bench restart
```

---

### Usage
1. Go to Customization > Customize Form
2. Enter the form doctype (Ex: 'User')
3. Scroll down to the fields area
4. Create an **Attach** or **Attach Image** field or edit an existing custom field
5. Inside the field's **Options** property, add the options you want as a JSON string.

Ex: ```{"allowed_file_types": [".jpg", ".png", ".gif"]}```

##### ⚠️ Remember
You can't modify the original fields of a doctype, so create a new field or clone and modify the entire doctype.

---

### Available Field Options
| Option | Description |
| :--- | :--- |
| **dialog_title** | Upload dialog title to be displayed ️(🔶Frappe >= v14.0.0).

🔹Example: ```"Upload Images"```
🔹Default: ```"Upload"``` |
| **upload_notes** | Upload text to be displayed.

🔹Example: ```"Only images and videos, with maximum size of 2MB, are allowed to be uploaded"```
🔹Default: ```""``` |
| **disable_auto_save** | Disable form auto save after upload.

🔹Default: ```false``` |
| **disable_file_browser** | Disable file browser uploads.

⚠️ *(File browser is always disabled in Web Form)*

🔹Default: ```false``` |
| **allow_multiple** | Allow multiple uploads.

⚠️ *(Field value is a JSON array of files url)*

🔹Default: ```false``` |
| **max_file_size** | Maximum file size (in bytes) that is allowed to be uploaded.

🔹Example: ```2048``` for ```2KB```
🔹Default: ```Value of maximum file size in Frappe's settings``` |
| **allowed_file_types** | Array of allowed file types (mimes) or extensions to upload. Prefix escaped RegExp string types with ```$```.

⚠️ *(File extensions must have a leading dot ".")*
⚠️ *(RegExp string types will not be used to in HTML accept attribute)*

🔹Example: ```["image/*", "video/*", ".pdf", ".doc", "$audio\/([a-z]+)"]```
🔹Default: ```null``` or ```["image/*"]``` |
| **max_number_of_files** | Maximum number of files allowed to be uploaded if multiple upload is allowed.

⚠️ *(Bypassing the maximum attachments of doctype might not work)*

🔹Example: ```4```
🔹Default: ```Value of maximum attachments set for the doctype``` |
| **crop_image_aspect_ratio** | Crop aspect ratio for images (🔶Frappe >= v14.0.0).

🔹Example: ```1``` or ```16/9``` or ```4/3```
🔹Default: ```null``` |
| **as_public** | Force uploads to be saved in public folder by default.

🔹Default: ```false``` |
| **allowed_filename** | Only allow files that match a specific file name to be uploaded.

🔹Example: (String)```"picture.png"``` or (RegExp String)```"/picture\-([0-9]+)\.png/"```
🔹Default: ```null``` |
| **allow_reload** | Allow reloading attachments (🔶Frappe >= v13.0.0).

🔶 Affect the visibility of the reload button.🔶

🔹Default: ```true``` |
| **allow_remove** | Allow removing and clearing attachments.

🔶 Affect the visibility of the remove and clear buttons.🔶

🔹Default: ```true``` |
| **users** 🔴 | Array of custom options for a specific user or group of users.

🔹Example: ```[{"for": "Guest", "disabled": true}, {"for": ["Administrator", "user"], "allow_multiple": true}]```
🔹Default: ```null``` |
| **roles** 🔴 | Array of custom options for a specific role or group of roles.
⚠️ *(Custom options for users is prioritized over roles.)*

🔹Example: ```[{"for": ["Administrator", "System"], "allow_multiple": true}]```
🔹Default: ```null``` |

🔴 New - 🔵 Changed

---

### Available JavaScript Methods
| Method | Description |
| :--- | :--- |
| **toggle_auto_save(enable: Boolean !Optional)** 🔵 | Enable/Disable form auto save after upload. |
| **toggle_reload(allow: Boolean !Optional)** | Allow/Deny reloading attachments and toggle the reload button (🔶Frappe >= v13.0.0). |
| **toggle_remove(allow: Boolean !Optional)** | Allow/Deny removing and clearing attachments and toggle the clear and remove buttons. |
| **set_options(options: JSON Object)** | Set or change the plugin options. |

🔴 New - 🔵 Changed

---

### Supported Fields
- Attach
- Attach Image

---

### Issues
If you find bug in the plugin, please create a [bug report](https://github.com/kid1194/frappe-better-attach-control/issues/new?assignees=kid1194&labels=bug&template=bug_report.md&title=%5BBUG%5D) and let us know about it.

---

### License
This repository has been released under the [MIT License](https://github.com/kid1194/frappe-better-attach-control/blob/main/LICENSE).