X7ROOT File Manager
Current Path:
/home/gfecatvj/sites/restate/platform/core/media/resources/assets/js
home
/
gfecatvj
/
sites
/
restate
/
platform
/
core
/
media
/
resources
/
assets
/
js
/
📁
..
📁
App
📄
integrate.js
(3.68 KB)
📄
jquery.addMedia.js
(5.65 KB)
📄
media.js
(17.75 KB)
Editing: media.js
import {MediaConfig} from './App/Config/MediaConfig'; import {Helpers} from './App/Helpers/Helpers'; import {MediaService} from './App/Services/MediaService'; import {FolderService} from './App/Services/FolderService'; import {UploadService} from './App/Services/UploadService'; import {ActionsService} from './App/Services/ActionsService'; import {EditorService} from './integrate'; class MediaManagement { constructor() { this.MediaService = new MediaService(); this.UploadService = new UploadService(); this.FolderService = new FolderService(); this.$body = $('body'); } init() { Helpers.resetPagination(); this.setupLayout(); this.handleMediaList(); this.changeViewType(); this.changeFilter(); this.search(); this.handleActions(); this.UploadService.init(); this.handleModals(); this.scrollGetMore(); } setupLayout() { /** * Sidebar */ let $current_filter = $('.js-rv-media-change-filter[data-type="filter"][data-value="' + Helpers.getRequestParams().filter + '"]'); $current_filter.closest('li') .addClass('active') .closest('.dropdown').find('.js-rv-media-filter-current').html('(' + $current_filter.html() + ')'); let $current_view_in = $('.js-rv-media-change-filter[data-type="view_in"][data-value="' + Helpers.getRequestParams().view_in + '"]'); $current_view_in.closest('li') .addClass('active') .closest('.dropdown').find('.js-rv-media-filter-current').html('(' + $current_view_in.html() + ')'); if (Helpers.isUseInModal()) { $('.rv-media-footer').removeClass('hidden'); } /** * Sort */ $('.js-rv-media-change-filter[data-type="sort_by"][data-value="' + Helpers.getRequestParams().sort_by + '"]') .closest('li') .addClass('active'); /** * Details pane */ let $mediaDetailsCheckbox = $('#media_details_collapse'); $mediaDetailsCheckbox.prop('checked', MediaConfig.hide_details_pane || false); setTimeout(() => { $('.rv-media-details').removeClass('hidden'); }, 300); $mediaDetailsCheckbox.on('change', event => { event.preventDefault(); MediaConfig.hide_details_pane = $(event.currentTarget).is(':checked'); Helpers.storeConfig(); }); $(document).off('click', 'button[data-dismiss-modal]').on('click', 'button[data-dismiss-modal]', event => { let modal = $(event.currentTarget).data('dismiss-modal'); $(modal).modal('hide'); }); } handleMediaList() { let _self = this; /*Ctrl key in Windows*/ let ctrl_key = false; /*Command key in MAC*/ let meta_key = false; /*Shift key*/ let shift_key = false; $(document).on('keyup keydown', (e) => { /*User hold ctrl key*/ ctrl_key = e.ctrlKey; /*User hold command key*/ meta_key = e.metaKey; /*User hold shift key*/ shift_key = e.shiftKey; }); _self.$body .off('click', '.js-media-list-title').on('click', '.js-media-list-title', event => { event.preventDefault(); let $current = $(event.currentTarget); if (shift_key) { let firstItem = _.first(Helpers.getSelectedItems()); if (firstItem) { let firstIndex = firstItem.index_key; let currentIndex = $current.index(); $('.rv-media-items li').each((index, el) => { if (index > firstIndex && index <= currentIndex) { $(el).find('input[type=checkbox]').prop('checked', true); } }); } } else { if (!ctrl_key && !meta_key) { $current.closest('.rv-media-items').find('input[type=checkbox]').prop('checked', false); } } let $lineCheckBox = $current.find('input[type=checkbox]'); $lineCheckBox.prop('checked', true); ActionsService.handleDropdown(); _self.MediaService.getFileDetails($current.data()); }) .on('dblclick', '.js-media-list-title', event => { event.preventDefault(); let data = $(event.currentTarget).data(); if (data.is_folder === true) { Helpers.resetPagination(); _self.FolderService.changeFolder(data.id); } else { if (!Helpers.isUseInModal()) { ActionsService.handlePreview(); } else if (Helpers.getConfigs().request_params.view_in !== 'trash') { let selectedFiles = Helpers.getSelectedFiles(); if (_.size(selectedFiles) > 0) { EditorService.editorSelectFile(selectedFiles); } } } }) .on('dblclick', '.js-up-one-level', event => { event.preventDefault(); let count = $('.rv-media-breadcrumb .breadcrumb li').length; $('.rv-media-breadcrumb .breadcrumb li:nth-child(' + (count - 1) + ') a').trigger('click'); }) .on('contextmenu', '.js-context-menu', event => { if (!$(event.currentTarget).find('input[type=checkbox]').is(':checked')) { $(event.currentTarget).trigger('click'); } }) .on('click contextmenu', '.rv-media-items', (e) => { if (!_.size(e.target.closest('.js-context-menu'))) { $('.rv-media-items input[type="checkbox"]').prop('checked', false); $('.rv-dropdown-actions').addClass('disabled'); _self.MediaService.getFileDetails({ icon: 'far fa-image', nothing_selected: '', }); } }) ; } changeViewType() { let _self = this; _self.$body.off('click', '.js-rv-media-change-view-type .btn').on('click', '.js-rv-media-change-view-type .btn', event => { event.preventDefault(); let $current = $(event.currentTarget); if ($current.hasClass('active')) { return; } $current.closest('.js-rv-media-change-view-type').find('.btn').removeClass('active'); $current.addClass('active'); MediaConfig.request_params.view_type = $current.data('type'); if ($current.data('type') === 'trash') { $(document).find('.js-insert-to-editor').prop('disabled', true); } else { $(document).find('.js-insert-to-editor').prop('disabled', false); } Helpers.storeConfig(); if (typeof RV_MEDIA_CONFIG.pagination != 'undefined') { if (typeof RV_MEDIA_CONFIG.pagination.paged != 'undefined') { RV_MEDIA_CONFIG.pagination.paged = 1; } } _self.MediaService.getMedia(true, false); }); $('.js-rv-media-change-view-type .btn[data-type="' + Helpers.getRequestParams().view_type + '"]').trigger('click'); this.bindIntegrateModalEvents(); } changeFilter() { let _self = this; _self.$body.off('click', '.js-rv-media-change-filter').on('click', '.js-rv-media-change-filter', event => { event.preventDefault(); if (!Helpers.isOnAjaxLoading()) { let $current = $(event.currentTarget); let $parent = $current.closest('ul'); let data = $current.data(); MediaConfig.request_params[data.type] = data.value; if (data.type === 'view_in') { MediaConfig.request_params.folder_id = 0; if (data.value === 'trash') { $(document).find('.js-insert-to-editor').prop('disabled', true); } else { $(document).find('.js-insert-to-editor').prop('disabled', false); } } $current.closest('.dropdown').find('.js-rv-media-filter-current').html('(' + $current.html() + ')'); Helpers.storeConfig(); MediaService.refreshFilter(); Helpers.resetPagination(); _self.MediaService.getMedia(true); $parent.find('> li').removeClass('active'); $current.closest('li').addClass('active'); } }); } search() { let _self = this; $('.input-search-wrapper input[type="text"]').val(Helpers.getRequestParams().search || ''); _self.$body.off('submit', '.input-search-wrapper').on('submit', '.input-search-wrapper', event => { event.preventDefault(); MediaConfig.request_params.search = $(event.currentTarget).find('input[type="text"]').val(); Helpers.storeConfig(); Helpers.resetPagination(); _self.MediaService.getMedia(true); }) } handleActions() { let _self = this; _self.$body .off('click', '.rv-media-actions .js-change-action[data-type="refresh"]').on('click', '.rv-media-actions .js-change-action[data-type="refresh"]', event => { event.preventDefault(); Helpers.resetPagination(); let ele_options = typeof window.rvMedia.$el !== 'undefined' ? window.rvMedia.$el.data('rv-media') : undefined; if (typeof ele_options !== 'undefined' && ele_options.length > 0 && typeof ele_options[0].selected_file_id !== 'undefined') { _self.MediaService.getMedia(true, true); } else { _self.MediaService.getMedia(true, false); } }) .off('click', '.rv-media-items li.no-items').on('click', '.rv-media-items li.no-items', event => { event.preventDefault(); $('.rv-media-header .rv-media-top-header .rv-media-actions .js-dropzone-upload').trigger('click'); }) .off('submit', '.form-add-folder').on('submit', '.form-add-folder', event => { event.preventDefault(); let $input = $(event.currentTarget).find('input[type=text]'); let folderName = $input.val(); _self.FolderService.create(folderName); $input.val(''); return false; }) .off('click', '.js-change-folder').on('click', '.js-change-folder', event => { event.preventDefault(); let folderId = $(event.currentTarget).data('folder'); Helpers.resetPagination(); _self.FolderService.changeFolder(folderId); }) .off('click', '.js-files-action').on('click', '.js-files-action', event => { event.preventDefault(); ActionsService.handleGlobalAction($(event.currentTarget).data('action'), () => { Helpers.resetPagination(); _self.MediaService.getMedia(true); }); }) ; } handleModals() { let _self = this; /*Rename files*/ _self.$body.on('show.bs.modal', '#modal_rename_items', () => { ActionsService.renderRenameItems(); }); _self.$body.off('submit', '#modal_rename_items .form-rename').on('submit', '#modal_rename_items .form-rename', event => { event.preventDefault(); let items = []; let $form = $(event.currentTarget); $('#modal_rename_items .form-control').each((index, el) => { let $current = $(el); let data = $current.closest('.form-group').data(); data.name = $current.val(); items.push(data); }); ActionsService.processAction({ action: $form.data('action'), selected: items }, res => { if (!res.error) { $form.closest('.modal').modal('hide'); _self.MediaService.getMedia(true); } else { $('#modal_rename_items .form-group').each((index, el) => { let $current = $(el); if (_.includes(res.data, $current.data('id'))) { $current.addClass('has-error'); } else { $current.removeClass('has-error'); } }); } }); }); /*Delete files*/ _self.$body.off('submit', '.form-delete-items').on('submit', '.form-delete-items', event => { event.preventDefault(); let items = []; let $form = $(event.currentTarget); _.each(Helpers.getSelectedItems(), (value) => { items.push({ id: value.id, is_folder: value.is_folder, }) }); ActionsService.processAction({ action: $form.data('action'), selected: items }, res => { $form.closest('.modal').modal('hide'); if (!res.error) { _self.MediaService.getMedia(true); } }); }); /*Empty trash*/ _self.$body.off('submit', '#modal_empty_trash .rv-form').on('submit', '#modal_empty_trash .rv-form', event => { event.preventDefault(); let $form = $(event.currentTarget); ActionsService.processAction({ action: $form.data('action') }, () => { $form.closest('.modal').modal('hide'); _self.MediaService.getMedia(true); }); }); if (MediaConfig.request_params.view_in === 'trash') { $(document).find('.js-insert-to-editor').prop('disabled', true); } else { $(document).find('.js-insert-to-editor').prop('disabled', false); } this.bindIntegrateModalEvents(); } checkFileTypeSelect(selectedFiles) { if (typeof window.rvMedia.$el !== 'undefined') { let firstItem = _.first(selectedFiles); let ele_options = window.rvMedia.$el.data('rv-media'); if (typeof ele_options !== 'undefined' && typeof ele_options[0] !== 'undefined' && typeof ele_options[0].file_type !== 'undefined' && firstItem !== 'undefined' && firstItem.type !== 'undefined') { if (!ele_options[0].file_type.match(firstItem.type)) { return false; } else { if (typeof ele_options[0].ext_allowed !== 'undefined' && $.isArray(ele_options[0].ext_allowed)) { if ($.inArray(firstItem.mime_type, ele_options[0].ext_allowed) == -1) { return false; } } } } } return true; } bindIntegrateModalEvents() { let $main_modal = $('#rv_media_modal'); let _self = this; $main_modal.off('click', '.js-insert-to-editor').on('click', '.js-insert-to-editor', event => { event.preventDefault(); let selectedFiles = Helpers.getSelectedFiles(); if (_.size(selectedFiles) > 0) { window.rvMedia.options.onSelectFiles(selectedFiles, window.rvMedia.$el); if (_self.checkFileTypeSelect(selectedFiles)) { $main_modal.find('.close').trigger('click'); } } }); $main_modal.off('dblclick', '.js-media-list-title').on('dblclick', '.js-media-list-title', event => { event.preventDefault(); if (Helpers.getConfigs().request_params.view_in !== 'trash') { let selectedFiles = Helpers.getSelectedFiles(); if (_.size(selectedFiles) > 0) { window.rvMedia.options.onSelectFiles(selectedFiles, window.rvMedia.$el); if (_self.checkFileTypeSelect(selectedFiles)) { $main_modal.find('.close').trigger('click'); } } } else { ActionsService.handlePreview(); } }); } static setupSecurity() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); } // Scroll get more media scrollGetMore() { let _self = this; $('.rv-media-main .rv-media-items').bind('DOMMouseScroll mousewheel', (e) => { if (e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0) { let loadMore; if ($(e.currentTarget).closest('.media-modal').length > 0) { loadMore = $(e.currentTarget).scrollTop() + $(e.currentTarget).innerHeight() / 2 >= $(e.currentTarget)[0].scrollHeight - 450; } else { loadMore = $(e.currentTarget).scrollTop() + $(e.currentTarget).innerHeight() >= $(e.currentTarget)[0].scrollHeight - 150; } if (loadMore) { if (typeof RV_MEDIA_CONFIG.pagination != 'undefined' && RV_MEDIA_CONFIG.pagination.has_more) { _self.MediaService.getMedia(false, false, true); } } } }); } } $(document).ready(() => { window.rvMedia = window.rvMedia || {}; MediaManagement.setupSecurity(); new MediaManagement().init(); });
Upload File
Create Folder