Skip to content

Commit 39d68f3

Browse files
committed
add integration guide about vanilla javscript standalone button
1 parent fb51691 commit 39d68f3

File tree

2 files changed

+80
-12
lines changed

2 files changed

+80
-12
lines changed

docs/integration.md

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,32 +172,61 @@ If you are going to use filemanager independently, meaning set the value of an i
172172
Domain can be specified in the second parameter(optional, but will be required when developing on Windows mechines) :
173173

174174
```javascript
175-
var domain = "{{ url() }}";
176-
$('#lfm').filemanager('image', {prefix: domain});
175+
var route_prefix = "url-to-filemanager";
176+
$('#lfm').filemanager('image', {prefix: route_prefix});
177177
```
178178

179179
## JavaScript integration
180180
In case you are developing javascript application and you want dynamically to trigger filemanager popup, you can create function like this. It doesn't rely on jQuery.
181181

182182

183183
```javascript
184-
var lfm = function(options, cb) {
185-
186-
var route_prefix = (options && options.prefix) ? options.prefix : '/laravel-filemanager';
184+
var lfm = function(id, type, options) {
185+
let button = document.getElementById(id);
186+
187+
button.addEventListener('click', function () {
188+
var route_prefix = (options && options.prefix) ? options.prefix : '/laravel-filemanager';
189+
var target_input = document.getElementById(button.getAttribute('data-input'));
190+
var target_preview = document.getElementById(button.getAttribute('data-preview'));
191+
192+
window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600');
193+
window.SetUrl = function (items) {
194+
var file_path = items.map(function (item) {
195+
return item.url;
196+
}).join(',');
197+
198+
// set the value of the desired input to image url
199+
target_input.value = file_path;
200+
target_input.dispatchEvent(new Event('change'));
201+
202+
// clear previous preview
203+
target_preview.innerHtml = '';
204+
205+
// set or change the preview image src
206+
items.forEach(function (item) {
207+
let img = document.createElement('img')
208+
img.setAttribute('style', 'height: 5rem')
209+
img.setAttribute('src', item.thumb_url)
210+
target_preview.appendChild(img);
211+
});
187212

188-
window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600');
189-
window.SetUrl = cb;
190-
}
213+
// trigger change event
214+
target_preview.dispatchEvent(new Event('change'));
215+
};
216+
});
217+
};
191218
```
192219

193220
And use it like this:
194221

195222
```javascript
196-
lfm({type: 'image', prefix: 'prefix'}, function(url, path) {
197-
198-
});
223+
var route_prefix = "url-to-filemanager";
224+
lfm('lfm', 'image', {prefix: route_prefix});
225+
lfm('lfm2', 'file', {prefix: route_prefix});
199226
```
200227

228+
The first parameter is id, the second parameter is the type of laravel filemanager(which ).
229+
201230
## Embed file manager
202231

203232
```html

src/views/demo.blade.php

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,46 @@
118118
</script>
119119
<script>
120120
$('#lfm').filemanager('image', {prefix: route_prefix});
121-
$('#lfm2').filemanager('file', {prefix: route_prefix});
121+
// $('#lfm').filemanager('file', {prefix: route_prefix});
122+
</script>
123+
124+
<script>
125+
var lfm = function(id, type, options) {
126+
let button = document.getElementById(id);
127+
128+
button.addEventListener('click', function () {
129+
var route_prefix = (options && options.prefix) ? options.prefix : '/laravel-filemanager';
130+
var target_input = document.getElementById(button.getAttribute('data-input'));
131+
var target_preview = document.getElementById(button.getAttribute('data-preview'));
132+
133+
window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600');
134+
window.SetUrl = function (items) {
135+
var file_path = items.map(function (item) {
136+
return item.url;
137+
}).join(',');
138+
139+
// set the value of the desired input to image url
140+
target_input.value = file_path;
141+
target_input.dispatchEvent(new Event('change'));
142+
143+
// clear previous preview
144+
target_preview.innerHtml = '';
145+
146+
// set or change the preview image src
147+
items.forEach(function (item) {
148+
let img = document.createElement('img')
149+
img.setAttribute('style', 'height: 5rem')
150+
img.setAttribute('src', item.thumb_url)
151+
target_preview.appendChild(img);
152+
});
153+
154+
// trigger change event
155+
target_preview.dispatchEvent(new Event('change'));
156+
};
157+
});
158+
};
159+
160+
lfm('lfm2', 'file', {prefix: route_prefix});
122161
</script>
123162

124163
<link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.8/summernote.css" rel="stylesheet">

0 commit comments

Comments
 (0)