diff --git a/application/frontend/components/media/README.md b/application/frontend/components/media/README.md deleted file mode 100644 index fec84231..00000000 --- a/application/frontend/components/media/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Компонент media - -Загрузка/управление медиа-файлами для последующей вставки в редактор (компонент editor). \ No newline at end of file diff --git a/application/frontend/components/media/component.json b/application/frontend/components/media/component.json deleted file mode 100644 index 9a6d94e6..00000000 --- a/application/frontend/components/media/component.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "media", - "version": "1.0.0", - "dependencies": { - "modal": "*", - "tabs": "*", - "uploader": "*" - }, - "templates": { - "content": "media-content.tpl", - "media": "media.tpl", - "pane.insert": "panes/pane.insert.tpl", - "pane.photoset": "panes/pane.photoset.tpl", - "pane.preview": "panes/pane.preview.tpl", - "pane": "panes/pane.tpl", - "pane.url": "panes/pane.url.tpl", - "uploader-block.insert.image": "uploader/uploader-block.insert.image.tpl", - "uploader-block.photoset": "uploader/uploader-block.photoset.tpl", - "uploader": "uploader/uploader.tpl" - }, - "scripts": { - "media": "js/media.js" - }, - "styles": { - "media": "css/media.css" - } -} \ No newline at end of file diff --git a/application/frontend/components/media/css/media.css b/application/frontend/components/media/css/media.css deleted file mode 100644 index 39270f50..00000000 --- a/application/frontend/components/media/css/media.css +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Media - */ - -.ls-modal.ls-media { - max-width: 1130px; - border: none; - background: #222; -} - -/* Nav */ -.ls-media-nav .ls-tab-list { - width: 160px; - padding-top: 15px; -} -.ls-media-nav .ls-tab { - padding: 10px 15px; - background: #222; - color: #eee; -} -.ls-media-nav .ls-tab:hover { - background: #2a2a2a; -} -.ls-media-nav .ls-tab.active { - background: #333; -} - -/* Panes */ -.ls-media-nav .ls-tabs-panes { - overflow: hidden; - margin-left: 160px; - background: #fff; -} - -/* Content */ -.ls-media-pane-content { - min-height: 300px; - padding: 15px; -} - -/* Footer */ -.ls-media-pane-footer { - padding: 15px; - background: #fafafa; - border-top: 1px solid #eee; - text-align: right; -} \ No newline at end of file diff --git a/application/frontend/components/media/js/media.js b/application/frontend/components/media/js/media.js deleted file mode 100644 index b896c41e..00000000 --- a/application/frontend/components/media/js/media.js +++ /dev/null @@ -1,351 +0,0 @@ -/** - * Media - * - * @module ls/media - * - * @license GNU General Public License, version 2 - * @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com} - * @author Denis Shakhov - * - * TODO: Фильтрация файлов по типу при переключении табов - */ - -(function($) { - "use strict"; - - $.widget( "livestreet.lsMedia", $.livestreet.lsComponent, { - /** - * Дефолтные опции - */ - options: { - // Редактор к которому привязано текущее окно - editor: $(), - - // Ссылки - urls: { - // Вставка файла - insert: aRouter.ajax + 'media/submit-insert/', - // Вставка фотосета - photoset: aRouter.ajax + 'media/submit-create-photoset', - // Загрузка файла по ссылке - url_upload: aRouter.ajax + 'media/upload-link/', - // Вставка файла по ссылке - url_insert: aRouter.ajax + 'media/upload-insert/' - }, - - // Селекторы - selectors: { - nav: '.js-media-nav', - uploader: '.js-media-uploader', - block: '.js-media-info-block', - blocks: '.js-media-uploader .js-media-info-block', - insert_submit: '.js-media-insert-submit', - photoset_submit: '.js-media-photoset-submit', - url: { - form: '.js-media-url-form', - url: '.js-media-url-form-url', - block_container: '.js-media-url-settings-blocks', - blocks: '.js-media-url-settings-blocks .js-media-info-block', - submit_upload: '.js-media-url-submit-upload', - submit_insert: '.js-media-url-submit-insert', - image_preview: '.js-media-url-image-preview' - } - }, - - uploader_options: {}, - - params: {} - }, - - /** - * Конструктор - * - * @constructor - * @private - */ - _create: function () { - this._super(); - - // Получаем редактор - ! this.option( 'editor' ).length && this.option( 'editor', $( '#' + this.element.data( 'media-editor') ) ); - - // Иниц-ия загрузчика - this.elements.uploader.lsUploader( $.extend( {}, this.option( 'uploader_options' ), { - autoload: false, - params: { - security_ls_key: LIVESTREET_SECURITY_KEY - }, - filebeforeactivate: this._onFileBeforeActivate.bind( this ) - })); - - this._list = this.elements.uploader.lsUploader( 'getElement', 'list' ); - this._originalTargetType = this.elements.uploader.lsUploader( 'option', 'params.target_type' ); - - // Табы - this.elements.nav.lsTabs({ - tabactivate: this._onTabActivate.bind( this ) - }); - - // Иниц-ия модального окна - this.element.lsModal({ - aftershow: this.reload.bind( this ) - }); - - // - // INSERT - // - - this._on( this.elements.insert_submit, { click: '_onInsertSubmit' } ); - this._on( this.elements.photoset_submit, { click: '_onPhotosetSubmit' } ); - - // - // INSERT FROM URL - // - - this._on( this.elements.url.type, { click: 'onUrlTypeChange' } ); - this._on( this.elements.url.url, { keyup: 'onUrlChange', change: 'onUrlChange' } ); - this._on( this.elements.url.submit_upload, { click: this.urlInsert.bind( this, true ) } ); - this._on( this.elements.url.submit_insert, { click: this.urlInsert.bind( this, false ) } ); - }, - - /** - * - */ - _onInsertSubmit: function( event ) { - this.insertSelectedFiles( 'insert', this.getSettings() ); - }, - - /** - * - */ - _onPhotosetSubmit: function( event ) { - this.insertSelectedFiles( 'photoset', this.getSettings() ); - }, - - /** - * - */ - _onFileBeforeActivate: function( event, data ) { - this.activateInfoBlock( data.element ); - }, - - /** - * - */ - _onTabActivate: function( event, data ) { - var type = data.element.data( 'media-name' ); - - this.moveUploader( data ); - - if ( type === 'photoset' ) { - this._list.lsUploaderFileList( 'option', 'multiselect_ctrl', false ); - this.elements.uploader.lsUploader( 'filterFilesByType', [ '1' ] ); - } - - if ( type === 'url' ) { - this.disableUrlButtons( ! this.elements.url.url.val()); - } - }, - - /** - * Перемещение uploader'а из одного таба в другой - */ - moveUploader: function( tab ) { - this.resetUploader(); - - // Перемещение - if ( tab.element.hasClass( 'js-tab-show-gallery' ) ) { - this.elements.uploader - .lsUploader( 'resetFilter' ) - .lsUploader( 'unselectAll' ) - .lsUploader( 'setTargetTypeFilter', 'uploaded' ) - .appendTo( this.getPaneContent( tab ) ); - } - }, - - /** - * - */ - resetUploader: function() { - this._list.lsUploaderFileList( 'option', 'params.target_type', this._originalTargetType ); - this._list.lsUploaderFileList( 'option', 'multiselect_ctrl', true ); - }, - - /** - * - */ - getPaneContent: function( tab ) { - return tab.getPane().find( '.js-media-pane-content' ); - }, - - /** - * - */ - show: function() { - this.element.lsModal( 'show' ); - }, - - /** - * - */ - hide: function() { - this.element.lsModal( 'hide' ); - }, - - /** - * - */ - getSettings: function() { - return this.elements.blocks - .filter( ':visible' ) - .find( 'form' ) - .serializeJSON(); - }, - - /** - * - */ - insertSelectedFiles: function( url, params ) { - this.insertFiles( url, params, this.elements.uploader.lsUploader( 'getSelectedFiles' ) ); - }, - - /** - * Вставляет выделенные файлы в редактор - */ - insertFiles: function( url, params, files ) { - if ( ! files.length ) return; - - // Формируем список ID файлов - var ids = $.map( files, function ( file ) { - return $( file ).lsUploaderFile( 'getProperty', 'id' ); - }); - - this._load( url, $.extend( true, {}, { ids: ids }, params || {} ), function( response ) { - this.option( 'editor' ).lsEditor( 'insert', response.sTextResult ); - this.element.lsModal( 'hide' ); - }); - }, - - /** - * - */ - activateInfoBlock: function( file ) { - this.elements.blocks.hide(); - - // Показываем блок настроек только для активного типа файла - this.elements.blocks - .filter( '[data-type=' + this.getActiveTabName() + ']' ) - .filter( '[data-filetype=' + file.lsUploaderFile( 'getProperty', 'type' ) + ']' ) - .show(); - - // Обновляем настройки - if ( this.getActiveTabName() == 'insert' && file.lsUploaderFile( 'getProperty', 'type' ) == '1' ) { - var block = this.elements.blocks.filter('.js-media-info-block-image-options'); - var sizes = block.find( 'select[name=size]' ); - - sizes.find( 'option:not([value=original])' ).remove(); - sizes.append($.map( file.data('mediaImageSizes'), function ( v, k ) { - // Расчитываем пропорциональную высоту изображения - var height = v.h || parseInt( v.w * file.lsUploaderFile( 'getProperty', 'height' ) / file.lsUploaderFile( 'getProperty', 'width' ) ); - - return ''; - }).join( '' )); - } - - // TODO: Add hook - }, - - /** - * - */ - reload: function() { - this.elements.uploader.lsUploader( 'reload' ); - }, - - /** - * - */ - getActiveTab: function() { - return this.elements.nav.lsTabs( 'getActiveTab' ); - }, - - /** - * - */ - getActiveTabName: function() { - return this.getActiveTab().data( 'media-name' ); - }, - - // - // INSERT FROM URL - // - - /** - * - */ - onUrlTypeChange: function ( event ) { - this.elements.url.blocks.hide(); - this.elements.url.blocks.filter( '[data-filetype=' + this.elements.url.type.val() + ']' ).show(); - this.elements.url.url.val( '' ); - this.elements.url.image_preview.hide().empty(); - }, - - /** - * - */ - onUrlChange: function ( event ) { - var _this = this, - url = this.elements.url.url.val(); - - this.disableUrlButtons( ! url); - - $('', { - src: url, - style: 'max-width: 50%', - error: function () { - _this.elements.url.image_preview.hide().empty(); - }, - load: function () { - _this.elements.url.image_preview.show().html( $( this ) ); - } - }); - }, - - /** - * - */ - disableUrlButtons: function ( disable ) { - this.elements.url.submit_insert.prop( 'disabled', disable ); - this.elements.url.submit_upload.prop( 'disabled', disable ); - }, - - /** - * - */ - urlInsert: function ( upload ) { - var upload = upload || false, - params = $.extend( - {}, - { upload: upload }, - this.elements.url.form.serializeJSON(), - this.elements.url.blocks.filter( ':visible' ).find('form').serializeJSON(), - this.elements.uploader.lsUploader( 'option', 'params' ) - ); - - this.disableUrlButtons(true); - - this._load( 'url_upload', params, function ( response ) { - this.option( 'editor' ).lsEditor( 'insert', response.sText ); - this.element.lsModal( 'hide' ); - this.reload(); - }, { - // TODO: Fix validation - validate: false, - submitButton: this.elements.url[ upload ? 'submit_upload' : 'submit_insert' ], - onComplete: function () { - this.disableUrlButtons(false); - }.bind(this) - }); - } - }); -})(jQuery); \ No newline at end of file diff --git a/application/frontend/components/media/media-content.tpl b/application/frontend/components/media/media-content.tpl deleted file mode 100644 index 6add8ef7..00000000 --- a/application/frontend/components/media/media-content.tpl +++ /dev/null @@ -1,11 +0,0 @@ -{** - * Media content - *} - -
- {component 'tabs' classes='ls-media-nav js-media-nav' mods='align-left' tabs=[ - [ 'text' => {lang 'media.nav.insert'}, 'body' => {component 'media' template='pane.insert'}, 'classes' => 'js-tab-show-gallery', 'attributes' => [ 'data-media-name' => 'insert' ] ], - [ 'text' => {lang 'media.nav.photoset'}, 'body' => {component 'media' template='pane.photoset'}, 'classes' => 'js-tab-show-gallery', 'attributes' => [ 'data-media-name' => 'photoset' ] ], - [ 'text' => {lang 'media.nav.url'}, 'body' => {component 'media' template='pane.url'}, 'attributes' => [ 'data-media-name' => 'url' ] ] - ]} -
\ No newline at end of file diff --git a/application/frontend/components/media/media.tpl b/application/frontend/components/media/media.tpl deleted file mode 100644 index 5bf5ed77..00000000 --- a/application/frontend/components/media/media.tpl +++ /dev/null @@ -1,13 +0,0 @@ -{** - * Загрузка медиа-файлов - *} - -{extends 'Component@modal.modal'} - -{block 'modal_options' append} - {$classes = "$classes ls-media js-modal-media"} - {$title = {lang name='media.title'}} - {$options = array_merge( $options|default:[], [ 'center' => 'false' ] )} - {$showFooter = false} - {$body = {component 'media' template='content'}} -{/block} \ No newline at end of file diff --git a/application/frontend/components/media/panes/pane.insert.tpl b/application/frontend/components/media/panes/pane.insert.tpl deleted file mode 100644 index bbc1b5a7..00000000 --- a/application/frontend/components/media/panes/pane.insert.tpl +++ /dev/null @@ -1,22 +0,0 @@ -{extends './pane.tpl'} - -{block 'media_pane_options' append} - {$id = 'tab-media-insert'} -{/block} - -{block 'media_pane_content'} - {component 'media' template='uploader' - attributes = [ 'id' => 'media-uploader' ] - classes = 'js-media-uploader' - targetParams = $aTargetParams - targetType = $sMediaTargetType - targetId = $sMediaTargetId - targetTmp = $sMediaTargetTmp} -{/block} - -{block 'media_pane_footer' prepend} - {component 'button' - mods = 'primary' - classes = 'js-media-insert-submit' - text = {lang name='media.insert.submit'}} -{/block} \ No newline at end of file diff --git a/application/frontend/components/media/panes/pane.photoset.tpl b/application/frontend/components/media/panes/pane.photoset.tpl deleted file mode 100644 index 0406e9ad..00000000 --- a/application/frontend/components/media/panes/pane.photoset.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{extends './pane.tpl'} - -{block 'media_pane_options' append} - {$id = 'tab-media-photoset'} -{/block} - -{block 'media_pane_footer' prepend} - {component 'button' - mods = 'primary' - classes = 'js-media-photoset-submit' - text = {lang name='media.photoset.submit'}} -{/block} \ No newline at end of file diff --git a/application/frontend/components/media/panes/pane.preview.tpl b/application/frontend/components/media/panes/pane.preview.tpl deleted file mode 100644 index b2ae1987..00000000 --- a/application/frontend/components/media/panes/pane.preview.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{extends './pane.tpl'} - -{block 'media_pane_options' append} - {$id = 'tab-media-preview'} -{/block} - -{block 'media_pane_content'} - {if $aTargetItems} - {foreach $aTargetItems as $oTarget} -

- Удалить превью -

- - {$aPreview = $oTarget->getPreviewImageItemsWebPath()} - - {foreach $aPreview as $sPreviewFile} -
- {/foreach} - {/foreach} - {else} - Превью можно выбрать из галереи. - {/if} -{/block} \ No newline at end of file diff --git a/application/frontend/components/media/panes/pane.tpl b/application/frontend/components/media/panes/pane.tpl deleted file mode 100644 index 162f9091..00000000 --- a/application/frontend/components/media/panes/pane.tpl +++ /dev/null @@ -1,11 +0,0 @@ -{block 'media_pane_options'} - {component_define_params params=[ 'id' ]} -{/block} - -
- {block 'media_pane_content'}{/block} -
- - \ No newline at end of file diff --git a/application/frontend/components/media/panes/pane.url.tpl b/application/frontend/components/media/panes/pane.url.tpl deleted file mode 100644 index c79091ce..00000000 --- a/application/frontend/components/media/panes/pane.url.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{extends './pane.tpl'} - -{block 'media_pane_options' append} - {$id = 'tab-media-url'} -{/block} - -{block 'media_pane_content'} -
- {* Типы файлов *} - {* TODO: Add hook *} - {*component 'field' template='select' - name = 'filetype' - label = 'Type' - inputClasses = 'ls-width-300 js-media-url-type' - items = [ - [ 'value' => '1', 'text' => 'Image' ] - ]*} - - {* Ссылка *} - {component 'field' template='text' - name = 'url' - inputClasses = 'js-media-url-form-url' - label = {lang 'media.url.fields.url.label'}} -
- - - -
- {component 'media' template='uploader-block.insert.image' useSizes=false} -
-{/block} - -{block 'media_pane_footer' prepend} - {component 'button' - mods = 'primary' - classes = 'js-media-url-submit-insert' - text = {lang 'media.url.submit_insert'}} - - {component 'button' - mods = 'primary' - classes = 'js-media-url-submit-upload' - text = {lang 'media.url.submit_upload'}} -{/block} \ No newline at end of file diff --git a/application/frontend/components/media/uploader/uploader-block.insert.image.tpl b/application/frontend/components/media/uploader/uploader-block.insert.image.tpl deleted file mode 100644 index 2794d4d3..00000000 --- a/application/frontend/components/media/uploader/uploader-block.insert.image.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{** - * Опции вставки - * - * @param boolean $useSizes - *} - -{component_define_params params=[ 'useSizes' ]} - -{capture 'block_content'} -
- {* Выравнивание *} - {component 'field' template='select' - name = 'align' - label = {lang name='media.image_align.title'} - items = [ - [ 'value' => '', 'text' => {lang name='media.image_align.no'} ], - [ 'value' => 'left', 'text' => {lang name='media.image_align.left'} ], - [ 'value' => 'right', 'text' => {lang name='media.image_align.right'} ], - [ 'value' => 'center', 'text' => {lang name='media.image_align.center'} ] - ]} - - {* Размер *} - {if $useSizes|default:true} - {component 'field' template='select' - name = 'size' - label = {lang name='media.insert.settings.fields.size.label'} - items = [[ 'value' => 'original', 'text' => {lang name='media.insert.settings.fields.size.original'} ]]} - {/if} -
-{/capture} - -{component 'uploader' template='block' - title = {lang 'media.insert.settings.title'} - content = $smarty.capture.block_content - classes = 'js-media-info-block js-media-info-block-image-options' - attributes = [ 'data-type' => 'insert', 'data-filetype' => '1' ]} \ No newline at end of file diff --git a/application/frontend/components/media/uploader/uploader-block.photoset.tpl b/application/frontend/components/media/uploader/uploader-block.photoset.tpl deleted file mode 100644 index ed734b15..00000000 --- a/application/frontend/components/media/uploader/uploader-block.photoset.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{** - * Опции фотосета - *} - -{capture 'block_content'} -
- {* Показывать ленту с превьюшками *} - {component 'field' template='checkbox' - name = 'use_thumbs' - checked = true - label = {lang name='media.photoset.settings.fields.use_thumbs.label'}} - - {* Показывать описания фотографий *} - {component 'field' template='checkbox' - name = 'show_caption' - label = {lang name='media.photoset.settings.fields.show_caption.label'}} -
-{/capture} - -{component 'uploader' template='block' - title = {lang 'media.photoset.settings.title'} - content = $smarty.capture.block_content - classes = 'js-media-info-block' - attributes = [ 'data-type' => 'photoset', 'data-filetype' => '1' ]} \ No newline at end of file diff --git a/application/frontend/components/media/uploader/uploader.tpl b/application/frontend/components/media/uploader/uploader.tpl deleted file mode 100644 index c9ed6140..00000000 --- a/application/frontend/components/media/uploader/uploader.tpl +++ /dev/null @@ -1,19 +0,0 @@ -{extends 'Component@uploader.uploader'} - -{block 'uploader_options' append} - {component_define_params params=[ 'targetType', 'targetId', 'targetTmp' ]} - - {$attributes = array_merge( $attributes|default:[], [ - 'data-param-target_type' => {json var=$targetType}, - 'data-param-target_id' => {json var=$targetId}, - 'data-param-target_tmp' => {json var=$targetTmp} - ])} -{/block} - -{block 'uploader_aside' append} - {* Основные настройки *} - {component 'media' template='uploader-block.insert.image'} - - {* Опции фотосета *} - {component 'media' template='uploader-block.photoset'} -{/block} \ No newline at end of file diff --git a/framework b/framework index f8f411f8..753410e0 160000 --- a/framework +++ b/framework @@ -1 +1 @@ -Subproject commit f8f411f865e78f77a1f63bb687023247fab36425 +Subproject commit 753410e04acd92c1c3e5c25b74970b47412f8731