Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 7f8e391

Browse files
committed
use component instead so we can use it under any vue instance
1 parent c0dfaab commit 7f8e391

File tree

9 files changed

+19324
-19154
lines changed

9 files changed

+19324
-19154
lines changed

README.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ return [
145145

146146
#### - Simple
147147
- visit `http://127.0.0.1:8000/media`
148-
- open `views/vendor/MediaManager/bulma/media.blade.php` and make any changes you may need ex.**"use bootstrap instead of bulma"**
148+
- open `views/vendor/MediaManager/bulma/media.blade.php` and make any changes you may need.
149+
+ if you need to use different css framework ex."bootstrap", you'll have to edit the components as well.
149150

150151
#### - Advanced
151152
- install javascript dependencies
@@ -161,17 +162,26 @@ npm install vue dropzone keycode vue-tippy vue2-filters vue-lightbox vuemit
161162
> ***Or Use another Framework***
162163
>
163164
> - duplicate `views/vendor/MediaManager/bulma` and rename it to the framework you want ex.`bootstrap`
164-
> - duplicate `assets/vendor/MediaManager/js/components/bulma-notif` and rename it to the framework you want ex.`bootstrap-notif`
165+
> - duplicate `assets/vendor/MediaManager/js/components/bulma` and rename it to the framework you want ex.`bootstrap`
165166
> - duplicate `assets/vendor/MediaManager/sass/bulma` and rename it to the framework you want ex.`bootstrap`
166167
> - set `MIX_MM_FRAMEWORK` to the framework name ex.`MIX_MM_FRAMEWORK=bootstrap`
167168
> - start editing the new files.
168169
> - run `npm run watch` to compile your `js/css` files.
169170
>
170171
> after you are done, maybe you can send me a PR so everyone else can benefit from it :trophy:
171172
173+
- at last, simply add this one liner to your main js file
174+
175+
```js
176+
require('./../vendor/MediaManager/js/media')
177+
178+
new Vue({
179+
el: '#app'
180+
})
181+
```
182+
172183
## ToDo "ANY HELP IS APPRECIATED"
173184

174185
* [ ] Add Support To Other Css Frameworks.
175-
* [ ] Add Support For Editors "tinymce / Ckeditor/ etc".
186+
* [ ] Add Support For Editors usage "tinymce / Ckeditor/ etc".
176187
* [ ] Fix `sortBy:size` To Work Properly With (kb vs Mb).
177-
* [ ] Turn into component instead.

src/Commands/MMAppend.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ public function handle()
5050
$mix_file = base_path('webpack.mix.js');
5151
$search = 'MediaManager';
5252
if (File::exists($mix_file) && !str_contains(File::get($mix_file), $search)) {
53-
$data = "\n// Media-Manager\nmix.js('resources/assets/vendor/MediaManager/js/media.js', 'public/assets/vendor/MediaManager/script.js')\n\t.sass('resources/assets/vendor/MediaManager/sass/' + process.env.MIX_MM_FRAMEWORK + '/media.scss', 'public/assets/vendor/MediaManager/style.css')\n\t.version();";
53+
$data = "\n// Media-Manager\nmix.sass('resources/assets/vendor/MediaManager/sass/' + process.env.MIX_MM_FRAMEWORK + '/media.scss', 'public/assets/vendor/MediaManager/style.css')\n\t.version();";
5454

5555
File::append($mix_file, $data);
56-
$this->comment("['mix.js(..).sass(..).version()'] added to [webpack.mix.js]");
56+
$this->comment("['mix.sass(..).version()'] added to [webpack.mix.js]");
5757
}
5858

5959
// fw

src/dist/script.daa3bdffc9cae53e5d3a.js renamed to src/dist/app.894d6569187ababe687c.js

Lines changed: 18809 additions & 18667 deletions
Large diffs are not rendered by default.

src/resources/assets/js/bootstrap_modal.js

100755100644
File mode changed.

src/resources/assets/js/script.js renamed to src/resources/assets/js/components/bulma/media.vue

Lines changed: 50 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
1-
new Vue({
1+
<template></template>
2+
3+
<script>
4+
/* external classes */
5+
// is-warning
6+
// is-danger
7+
// field
8+
// has-addons
9+
// fa-plus
10+
// fa-minus
11+
// fa fa-angle-double-right
12+
// fa fa-angle-double-left
13+
14+
export default {
215
name: 'media-manager',
3-
el: '#app',
4-
data: {
5-
files: [],
6-
folders: [],
7-
directories: [],
8-
filterdList: [],
9-
bulkList: [],
10-
showBy: undefined,
11-
currentFilterName: undefined,
12-
selectedFile: undefined,
13-
searchItemsCount: undefined,
14-
searchFor: undefined
16+
data() {
17+
return {
18+
files: [],
19+
folders: [],
20+
directories: [],
21+
filterdList: [],
22+
bulkList: [],
23+
showBy: undefined,
24+
currentFilterName: undefined,
25+
selectedFile: undefined,
26+
searchItemsCount: undefined,
27+
searchFor: undefined
28+
}
1529
},
1630
computed: {
1731
allFiles() {
@@ -97,9 +111,9 @@ new Vue({
97111
98112
// when modal isnt visible
99113
if (!$('#new_folder_modal').is(':visible') &&
100-
!$('#move_file_modal').is(':visible') &&
101-
!$('#rename_file_modal').is(':visible') &&
102-
!$('#confirm_delete_modal').is(':visible')) {
114+
!$('#move_file_modal').is(':visible') &&
115+
!$('#rename_file_modal').is(':visible') &&
116+
!$('#confirm_delete_modal').is(':visible')) {
103117
104118
// when search is not focused
105119
if (!$('.input').is(':focus')) {
@@ -261,15 +275,15 @@ new Vue({
261275
262276
// bulk select
263277
$('#blk_slct').click(function() {
264-
$(this).toggleClass(errorClass)
278+
$(this).toggleClass('is-danger')
265279
$('#upload, #new_folder, #refresh, #rename').parent().hide()
266280
$(this).closest('.field').toggleClass('has-addons')
267281
$('#blk_slct_all').fadeIn()
268282
269283
// reset when toggled off
270284
if (!manager.isBulkSelecting()) {
271285
$('#upload, #new_folder, #refresh, #rename').parent().show()
272-
if ($('#blk_slct_all').hasClass(warningClass)) {
286+
if ($('#blk_slct_all').hasClass('is-warning')) {
273287
$('#blk_slct_all').trigger('click')
274288
}
275289
$('#blk_slct_all').hide()
@@ -289,13 +303,13 @@ new Vue({
289303
if (manager.bulkList == 0) {
290304
// if no search query
291305
if (!manager.searchFor) {
292-
$(this).addClass(warningClass)
306+
$(this).addClass('is-warning')
293307
manager.bulkList = manager.allFiles.slice(0)
294308
}
295309
296310
// if found search items
297311
if (manager.searchItemsCount) {
298-
$(this).addClass(warningClass)
312+
$(this).addClass('is-warning')
299313
$('#files li').each(function() {
300314
$(this).trigger('click')
301315
})
@@ -307,10 +321,10 @@ new Vue({
307321
manager.bulkList = []
308322
manager.clearSelected()
309323
310-
if ($(this).hasClass(warningClass)) {
311-
$(this).removeClass(warningClass)
324+
if ($(this).hasClass('is-warning')) {
325+
$(this).removeClass('is-warning')
312326
} else {
313-
$(this).addClass(warningClass)
327+
$(this).addClass('is-warning')
314328
$('#files li').each(function() {
315329
$(this).trigger('click')
316330
})
@@ -319,11 +333,11 @@ new Vue({
319333
320334
// if NO search + having bulk items < all items
321335
else if (!manager.searchFor && manager.bulkItemsCount < manager.allItemsCount) {
322-
if ($(this).hasClass(warningClass)) {
323-
$(this).removeClass(warningClass)
336+
if ($(this).hasClass('is-warning')) {
337+
$(this).removeClass('is-warning')
324338
manager.bulkList = []
325339
} else {
326-
$(this).addClass(warningClass)
340+
$(this).addClass('is-warning')
327341
manager.bulkList = manager.allFiles.slice(0)
328342
}
329343
@@ -332,7 +346,7 @@ new Vue({
332346
333347
// otherwise
334348
else {
335-
$(this).removeClass(warningClass)
349+
$(this).removeClass('is-warning')
336350
manager.bulkList = []
337351
manager.clearSelected()
338352
}
@@ -345,7 +359,7 @@ new Vue({
345359
// toggle styling
346360
var toggle_text = $(this).find('span').not('.icon')
347361
348-
if ($(this).hasClass(warningClass)) {
362+
if ($(this).hasClass('is-warning')) {
349363
$(this).find('.fa').removeClass('fa-plus').addClass('fa-minus')
350364
toggle_text.text('Select Non')
351365
} else {
@@ -605,7 +619,7 @@ new Vue({
605619
606620
/* Bulk */
607621
isBulkSelecting() {
608-
return $('#blk_slct').hasClass(errorClass)
622+
return $('#blk_slct').hasClass('is-danger')
609623
},
610624
IsInBulkList(file) {
611625
return this.bulkList.includes(file)
@@ -621,7 +635,7 @@ new Vue({
621635
this.bulkList.splice(this.bulkList.indexOf(file), 1)
622636
623637
// normal single selction behavior
624-
if (!$('#blk_slct_all').hasClass(warningClass)) {
638+
if (!$('#blk_slct_all').hasClass('is-warning')) {
625639
// select prev item
626640
if (this.bulkItemsCount) {
627641
this.selectedFile = this.bulkList[this.bulkItemsCount - 1]
@@ -704,9 +718,9 @@ new Vue({
704718
fileTypeIs(item, val) {
705719
if (val == 'text') {
706720
if (!item.type.includes('folder') &&
707-
!item.type.includes('image') &&
708-
!item.type.includes('video') &&
709-
!item.type.includes('audio')) {
721+
!item.type.includes('image') &&
722+
!item.type.includes('video') &&
723+
!item.type.includes('audio')) {
710724
return true
711725
}
712726
} else {
@@ -881,7 +895,7 @@ new Vue({
881895
882896
if (val == 0 && this.isBulkSelecting()) {
883897
var toggle_text = $('#blk_slct_all').find('span').not('.icon')
884-
$('#blk_slct_all').removeClass(warningClass)
898+
$('#blk_slct_all').removeClass('is-warning')
885899
$('#blk_slct_all').find('.fa').removeClass('fa-minus').addClass('fa-plus')
886900
toggle_text.text('Select All')
887901
}
@@ -933,5 +947,5 @@ new Vue({
933947
}
934948
}
935949
}
936-
})
937-
950+
}
951+
</script>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
$.ajaxSetup({
2+
cache: false,
3+
headers: {
4+
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
5+
}
6+
})
7+
8+
/* Vue */
9+
window.Vue = require('vue')
10+
11+
/* Libs */
12+
window.EventHub = require('vuemit')
13+
window.keycode = require('keycode')
14+
window.dropzone = require('dropzone')
15+
Vue.use(require('vue-tippy'))
16+
Vue.use(require('vue2-filters'))
17+
18+
/* Components */
19+
import VueLightbox from 'vue-lightbox'
20+
Vue.component('Lightbox', VueLightbox)
21+
22+
/* BS Modal */
23+
require('./bootstrap_modal')

src/resources/assets/js/media.js

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,4 @@
1-
$.ajaxSetup({
2-
cache: false,
3-
headers: {
4-
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
5-
}
6-
})
1+
require('./dependencies')
72

8-
/* Vue */
9-
window.Vue = require('vue')
10-
11-
/* Libs */
12-
window.EventHub = require('vuemit')
13-
window.keycode = require('keycode')
14-
window.dropzone = require('dropzone')
15-
Vue.use(require('vue-tippy'))
16-
Vue.use(require('vue2-filters'))
17-
18-
/* Components */
19-
Vue.component('MyNotification', require('./components/' + process.env.MIX_MM_FRAMEWORK + '-notif.vue'))
20-
import VueLightbox from 'vue-lightbox'
21-
Vue.component('Lightbox', VueLightbox)
22-
23-
/* BS Modal */
24-
require('./bootstrap_modal')
25-
26-
/* Logic */
27-
require('./script')
3+
Vue.component('MediaManager', require('./components/' + process.env.MIX_MM_FRAMEWORK + '/media.vue'))
4+
Vue.component('MyNotification', require('./components/' + process.env.MIX_MM_FRAMEWORK + '/notifs.vue'))

0 commit comments

Comments
 (0)