mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-16 23:00:51 +03:00
Компонент Media
* В процессе, часть функционала может не работать
This commit is contained in:
parent
4378e82de3
commit
0637039a77
|
@ -693,10 +693,10 @@ class ActionAjax extends Action {
|
|||
$sTemplate='';
|
||||
foreach($aMediaItems as $oMediaItem) {
|
||||
$oViewer->Assign('oMediaItem',$oMediaItem);
|
||||
$sTemplate.=$oViewer->Fetch('modals/modal.upload_image.gallery.item.tpl');
|
||||
$sTemplate.=$oViewer->Fetch('components/uploader/uploader-file.tpl');
|
||||
}
|
||||
|
||||
$this->Viewer_AssignAjax('sTemplate',$sTemplate);
|
||||
$this->Viewer_AssignAjax('html',$sTemplate);
|
||||
|
||||
/**
|
||||
* Дополнительно загружам превью
|
||||
|
@ -712,7 +712,7 @@ class ActionAjax extends Action {
|
|||
}
|
||||
$aTargetItems=$this->Media_GetTargetItemsByFilter($aFilter);
|
||||
$oViewer->Assign('aTargetItems',$aTargetItems);
|
||||
$this->Viewer_AssignAjax('sTemplatePreview',$oViewer->Fetch('modals/modal.upload_image.preview.tpl'));
|
||||
//$this->Viewer_AssignAjax('sTemplatePreview',$oViewer->Fetch('components/media/preview.tpl'));
|
||||
}
|
||||
|
||||
protected function EventMediaLoadPreviewItems() {
|
||||
|
@ -740,7 +740,7 @@ class ActionAjax extends Action {
|
|||
$aTargetItems=$this->Media_GetTargetItemsByFilter($aFilter);
|
||||
$oViewer=$this->Viewer_GetLocalViewer();
|
||||
$oViewer->Assign('aTargetItems',$aTargetItems);
|
||||
$this->Viewer_AssignAjax('sTemplatePreview',$oViewer->Fetch('modals/modal.upload_image.preview.tpl'));
|
||||
$this->Viewer_AssignAjax('sTemplatePreview',$oViewer->Fetch('components/media/preview.tpl'));
|
||||
}
|
||||
|
||||
protected function EventMediaSubmitInsert() {
|
||||
|
@ -866,7 +866,7 @@ class ActionAjax extends Action {
|
|||
$oViewer=$this->Viewer_GetLocalViewer();
|
||||
$oViewer->Assign('oMediaItem',$mResult);
|
||||
|
||||
$sTemplateFile=$oViewer->Fetch('modals/modal.upload_image.gallery.item.tpl');
|
||||
$sTemplateFile=$oViewer->Fetch('components/uploader/uploader-file.tpl');
|
||||
|
||||
$this->Viewer_AssignAjax('sTemplateFile',$sTemplateFile);
|
||||
} else {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/**
|
||||
* Работа с медиа файлами
|
||||
*
|
||||
*
|
||||
* @module ls/media
|
||||
*
|
||||
*
|
||||
* @license GNU General Public License, version 2
|
||||
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
||||
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
||||
|
@ -13,7 +13,7 @@ var ls = ls || {};
|
|||
ls.media = (function ($) {
|
||||
/**
|
||||
* Дефолтные опции
|
||||
*
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
var _defaults = {
|
||||
|
@ -46,12 +46,12 @@ ls.media = (function ($) {
|
|||
uploadButton: '.js-media-link-upload-button'
|
||||
},
|
||||
info: {
|
||||
self: '.js-media-item-info',
|
||||
self: '.js-media-info',
|
||||
remove: '.js-media-item-info-remove',
|
||||
create_preview: '.js-media-item-info-create-preview',
|
||||
remove_preview: '.js-media-item-info-remove-preview',
|
||||
sizes: 'select[name=size]',
|
||||
empty: '.js-media-item-info-empty'
|
||||
empty: '.js-media-info-empty'
|
||||
},
|
||||
buttons_insert: '.js-media-insert-button',
|
||||
button_insert: '.js-media-insert',
|
||||
|
@ -80,10 +80,6 @@ ls.media = (function ($) {
|
|||
save_data_file: aRouter['ajax'] + "media/save-data-file/",
|
||||
upload_link: aRouter['ajax'] + "media/upload-link/"
|
||||
},
|
||||
// HTML
|
||||
html: {
|
||||
progress: '<div class="progress"><div class="progress-value js-progress-value"></div><span class="progress-info js-progress-info">0%</span></div>'
|
||||
},
|
||||
// Дефолтная высота списка файлов
|
||||
file_list_max_height: 354
|
||||
};
|
||||
|
@ -101,8 +97,7 @@ ls.media = (function ($) {
|
|||
this.options = $.extend(true, {}, _defaults, options);
|
||||
|
||||
this.elements = {
|
||||
uploadArea: $(this.options.selectors.gallery.upload_area),
|
||||
uploadInput: $(this.options.selectors.gallery.upload_input),
|
||||
uploader: $('#media-uploader'),
|
||||
buttonsInsert: $(this.options.selectors.buttons_insert),
|
||||
buttonInsert: $(this.options.selectors.button_insert),
|
||||
buttonInsertPhotoset: $(this.options.selectors.button_insert_photoset),
|
||||
|
@ -128,47 +123,11 @@ ls.media = (function ($) {
|
|||
}
|
||||
};
|
||||
|
||||
this.setMode('insert');
|
||||
|
||||
this.options.target_tmp = this.options.target_tmp ? this.options.target_tmp : $.cookie('media_target_tmp_' + this.options.target_type);
|
||||
if ( ! this.options.target_id && ! this.options.target_tmp ) {
|
||||
ls.media.generateTargetTmp(this.options.target_type);
|
||||
}
|
||||
|
||||
this.elements.buttonsInsert.prop('disabled', true);
|
||||
this.elements.link.uploadButton.prop('disabled', true);
|
||||
this.elements.info.empty.show();
|
||||
|
||||
// Настройки загрузчика
|
||||
this.options.fileupload.url = this.options.fileupload.url || this.options.routers.upload;
|
||||
this.options.fileupload.dropZone = this.options.fileupload.dropZone || this.elements.uploadArea;
|
||||
this.options.fileupload.formData = $.extend({}, this.options.fileupload.formData || {}, {
|
||||
security_ls_key: LIVESTREET_SECURITY_KEY,
|
||||
target_type: this.options.target_type,
|
||||
target_id: this.options.target_id,
|
||||
target_tmp: this.options.target_tmp
|
||||
this.elements.uploader.lsUploader({
|
||||
autoload: false
|
||||
});
|
||||
|
||||
$.each(this.options.fileupload.formData, function(k, v) {
|
||||
if (v === null) this.options.fileupload.formData[k] = '';
|
||||
}.bind(this));
|
||||
|
||||
this.elements.uploadInput.fileupload(this.options.fileupload);
|
||||
|
||||
this.elements.uploadInput.bind({
|
||||
fileuploadadd: function(e, data) {
|
||||
ls.media.addPreload(data);
|
||||
},
|
||||
fileuploaddone: function(e, data) {
|
||||
ls.media[data.result.bStateError ? 'onUploadError' : 'onUploadDone'](data.context, data.result);
|
||||
},
|
||||
fileuploadprogress: function(e, data) {
|
||||
var percent = parseInt(data.loaded / data.total * 100, 10);
|
||||
|
||||
data.context.find('.' + this.options.classes.progress.value).height( percent + '%' );
|
||||
data.context.find('.' + this.options.classes.progress.info).text( percent + '%' );
|
||||
}.bind(this)
|
||||
});
|
||||
this.activateInfoBlock( 'insert' );
|
||||
|
||||
// Ивенты вставки в редактор
|
||||
this.elements.buttonInsert.on('click', function () {
|
||||
|
@ -190,9 +149,10 @@ ls.media = (function ($) {
|
|||
|
||||
// Перемещение галереи из одного таба в другой
|
||||
$('.js-tab-show-gallery').on('tabactivate', function(event, tab) {
|
||||
$('#upload-gallery-image').appendTo($('#' + tab.options.target).find('.modal-content'));
|
||||
ls.media.setMode($(event.target).data('mediaMode'));
|
||||
});
|
||||
this.elements.uploader.appendTo( $( '#' + tab.options.target ).find( '.modal-content' ) );
|
||||
this.elements.uploader.lsUploader( 'getElement', 'list' ).lsUploaderFileList( 'clearSelected' );
|
||||
this.activateInfoBlock( $(event.target).data('mediaMode') );
|
||||
}.bind(this));
|
||||
|
||||
// Сохранение настроек файла
|
||||
$('.js-media-detail-area .js-input-title').on('blur', function(e) {
|
||||
|
@ -219,7 +179,7 @@ ls.media = (function ($) {
|
|||
this.options.target_id='';
|
||||
this.options.target_tmp='';
|
||||
ls.media.generateTargetTmp(this.options.target_type);
|
||||
this.clearSelected();
|
||||
this.elements.gallery.fileList.lsUploaderFileList( 'clearSelected' );
|
||||
this.elements.gallery.fileList.empty();
|
||||
this.markAsEmpty();
|
||||
}.bind(this));
|
||||
|
@ -236,10 +196,9 @@ ls.media = (function ($) {
|
|||
|
||||
// Вставка медиа ссылки в текст
|
||||
this.elements.link.insertButton.on('click', function() {
|
||||
var sTitle = this.elements.link.title.val(),
|
||||
var sTitle = ls.utils.escapeHtml( this.elements.link.title.val() ),
|
||||
sTextInsert;
|
||||
|
||||
sTitle=ls.utils.escapeHtml(sTitle);
|
||||
if ($('.js-media-link-settings-image').is(':visible')) {
|
||||
var sAlign = this.elements.link.align.val();
|
||||
sAlign = sAlign == 'center' ? 'class="image-center"' : 'align="' + sAlign + '"';
|
||||
|
@ -260,7 +219,7 @@ ls.media = (function ($) {
|
|||
} else {
|
||||
this.insertTextToEditor(data.sText);
|
||||
this.elements.modal.modal('hide');
|
||||
this.loadImageList(); // обновляем список файлов
|
||||
this.elements.gallery.fileList.lsUploaderFileList( 'load' );
|
||||
}
|
||||
}.bind(this), {
|
||||
// TODO: Fix validation
|
||||
|
@ -270,14 +229,6 @@ ls.media = (function ($) {
|
|||
});
|
||||
}.bind(this));
|
||||
|
||||
// Удаление файла
|
||||
this.elements.info.remove.on('click', function(e) {
|
||||
if (confirm('Удалить текущий файл?')) {
|
||||
ls.media.removeActiveFile();
|
||||
}
|
||||
e.preventDefault();
|
||||
}.bind(this));
|
||||
|
||||
// Создание превью из файла
|
||||
this.elements.info.create_preview.on('click', function(e) {
|
||||
ls.media.createPreviewActiveFile();
|
||||
|
@ -291,11 +242,9 @@ ls.media = (function ($) {
|
|||
}.bind(this));
|
||||
|
||||
// После показа модального подгружаем контент
|
||||
this.elements.modal.on('modalaftershow',function(){
|
||||
this.loadImageList();
|
||||
this.elements.modal.on('modalaftershow', function() {
|
||||
this.elements.uploader.lsUploader( 'getElement', 'list' ).lsUploaderFileList( 'load' );
|
||||
}.bind(this));
|
||||
|
||||
this.bindFileEvents();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -364,24 +313,26 @@ ls.media = (function ($) {
|
|||
/**
|
||||
* Устанавливает текущий режим вставки медиа файлов
|
||||
*/
|
||||
this.setMode = function(mode) {
|
||||
this.mode = mode;
|
||||
this.showSettingsMode();
|
||||
this.resizeFileList();
|
||||
this.activateInfoBlock = function( name ) {
|
||||
var blocks = $( '.js-media-info-block' ).hide();
|
||||
|
||||
console.log(blocks)
|
||||
|
||||
blocks.filter( '[data-type=' + name + ']' ).show();
|
||||
};
|
||||
|
||||
/**
|
||||
* Показывает блок с информацией об активном файле
|
||||
*
|
||||
*
|
||||
* @param {Object} item Выделенный файл
|
||||
*/
|
||||
this.showSettingsMode = function(item) {
|
||||
this.hideSettingsMode();
|
||||
|
||||
/* Показываем только если есть выделенные элементы */
|
||||
if (this.getSelected().length) {
|
||||
if (this.elements.gallery.fileList.lsUploaderFileList( 'getSelectedFiles' ).length) {
|
||||
$('#media-settings-mode-' + this.mode).show();
|
||||
item = item || this.getActive();
|
||||
item = item || this.elements.gallery.fileList.lsUploaderFileList( 'getActiveFile' );
|
||||
|
||||
/* Выставляем настройки по вставке медиа */
|
||||
this.elements.info.sizes.find('option:not([value=original])').remove();
|
||||
|
@ -401,48 +352,11 @@ ls.media = (function ($) {
|
|||
$('.js-media-settings-mode').hide();
|
||||
};
|
||||
|
||||
/**
|
||||
* Удаление активного файла
|
||||
*/
|
||||
this.removeActiveFile = function() {
|
||||
var item = this.getActive();
|
||||
|
||||
return item.length ? this.removeFile(item.data('mediaId')) : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Удаление файла
|
||||
*
|
||||
* @param {Number} id
|
||||
*/
|
||||
this.removeFile = function(id) {
|
||||
var _this = this;
|
||||
|
||||
ls.ajax.load(this.options.routers.remove_file, { id: id }, function(result) {
|
||||
if (result.bStateError) {
|
||||
ls.msg.error(null, result.sMsg);
|
||||
} else {
|
||||
$(_this.options.selectors.gallery.file + '[data-media-id=' + id + ']').fadeOut(500, function() {
|
||||
$(this).remove();
|
||||
|
||||
if (itemNext = _this.searchNextSelected()) {
|
||||
_this.setActive(itemNext, true);
|
||||
} else {
|
||||
_this.hideDetail();
|
||||
}
|
||||
|
||||
if ($(_this.options.selectors.gallery.file).length === 0) _this.markAsEmpty();
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Создание превью из активного файла
|
||||
*/
|
||||
this.createPreviewActiveFile = function() {
|
||||
var item = this.getActive();
|
||||
var item = this.elements.gallery.fileList.lsUploaderFileList( 'getActiveFile' );
|
||||
|
||||
return item.length ? this.createPreviewFile(item.data('mediaId')) : false;
|
||||
};
|
||||
|
@ -477,7 +391,7 @@ ls.media = (function ($) {
|
|||
* Удаление превью у активного файла
|
||||
*/
|
||||
this.removePreviewActiveFile = function() {
|
||||
var item = this.getActive();
|
||||
var item = this.elements.gallery.fileList.lsUploaderFileList( 'getActiveFile' );
|
||||
|
||||
return item.length ? this.removePreviewFile(item.data('mediaId')) : false;
|
||||
};
|
||||
|
@ -504,20 +418,6 @@ ls.media = (function ($) {
|
|||
}
|
||||
}.bind(this));
|
||||
};
|
||||
/**
|
||||
* Подгрузка списка файлов
|
||||
*/
|
||||
this.loadImageList = function() {
|
||||
this.clearSelected();
|
||||
this.elements.gallery.fileList.empty().addClass( ls.options.classes.states.loading );
|
||||
|
||||
ls.ajax.load(this.options.routers.load_gallery, { target_type: this.options.target_type, target_id: this.options.target_id, target_tmp: this.options.target_tmp }, function(result) {
|
||||
this.elements.gallery.fileList.removeClass( ls.options.classes.states.loading ).html(result.sTemplate);
|
||||
this[result.sTemplate ? 'markAsNotEmpty' : 'markAsEmpty']();
|
||||
|
||||
this.renderPreviewItems(result.sTemplatePreview);
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
this.loadPreviewItems = function() {
|
||||
ls.ajax.load(this.options.routers.load_preview_items, { target_type: this.options.target_type, target_id: this.options.target_id, target_tmp: this.options.target_tmp }, function(result) {
|
||||
|
@ -529,149 +429,6 @@ ls.media = (function ($) {
|
|||
$('#tab-media-preview').find('.modal-content').html(sTemplatePreview);
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
this.generateTargetTmp = function(type) {
|
||||
ls.ajax.load(this.options.routers.generate_target_tmp, { type: type }, function(result) {
|
||||
if (result.sTmpKey) this.options.target_tmp = result.sTmpKey;
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Индикация загрузки изображения
|
||||
*/
|
||||
this.addPreload = function(data) {
|
||||
this.markAsNotEmpty();
|
||||
data.context = $('<li class="media-gallery-list-item">' + this.options.html.progress + '</li>');
|
||||
this.elements.gallery.fileList.prepend(data.context);
|
||||
};
|
||||
|
||||
/**
|
||||
* Выделение изображений
|
||||
*/
|
||||
this.bindFileEvents = function() {
|
||||
this.elements.gallery.fileList.on('click', this.options.selectors.gallery.file, function(e){
|
||||
var item = $(e.currentTarget);
|
||||
var allowMany = (this.mode == 'create-photoset' || e.ctrlKey || e.metaKey);
|
||||
|
||||
if (item.hasClass(ls.options.classes.states.active)) {
|
||||
/* Снимаем выделение с текущего */
|
||||
item.removeClass(ls.options.classes.states.active).removeClass(this.options.classes.selected);
|
||||
|
||||
/* Делаем активным другой выделенный элемент */
|
||||
if (itemNext = this.searchNextSelected(item)) {
|
||||
this.setActive(itemNext,true);
|
||||
} else {
|
||||
this.hideDetail();
|
||||
}
|
||||
} else {
|
||||
/* Делаем текущим и показываем детальную информацию */
|
||||
this.setActive(item,allowMany);
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
/**
|
||||
* Помечает галерею как пустую
|
||||
*/
|
||||
this.markAsEmpty = function() {
|
||||
this.elements.gallery.self.addClass('is-empty');
|
||||
};
|
||||
|
||||
/**
|
||||
* Помечает галерею как не пустую
|
||||
*/
|
||||
this.markAsNotEmpty = function() {
|
||||
this.elements.gallery.self.removeClass('is-empty');
|
||||
};
|
||||
|
||||
/**
|
||||
* Завершение загрузки файла
|
||||
*/
|
||||
this.onUploadDone = function(context, response) {
|
||||
var item = $($.trim(response.sTemplateFile));
|
||||
|
||||
context.replaceWith(item);
|
||||
this.setSelected(item, true);
|
||||
};
|
||||
|
||||
/**
|
||||
* Помечаем файл как ошибочный (глюк при загрузке)
|
||||
*/
|
||||
this.onUploadError = function(context, response) {
|
||||
ls.msg.error(response.sMsgTitle, response.sMsg);
|
||||
context.find('.' + this.options.classes.progress.value).height(0);
|
||||
context.find('.' + this.options.classes.progress.info).text('ERROR');
|
||||
};
|
||||
|
||||
/**
|
||||
* Ищет файл для выделения
|
||||
*/
|
||||
this.searchNextSelected = function() {
|
||||
var item = $(this.options.selectors.gallery.file + '.' + this.options.classes.selected + ':first');
|
||||
|
||||
return item.length === 0 ? false : item;
|
||||
};
|
||||
|
||||
/**
|
||||
* Помечает файл как активный
|
||||
*
|
||||
* @param {Object} item Помечаемый файл
|
||||
* @param {Boolean} allowMany Выделение нескольких файлов
|
||||
*/
|
||||
this.setActive = function(item, allowMany) {
|
||||
$(this.options.selectors.gallery.file + '.' + ls.options.classes.states.active).removeClass(ls.options.classes.states.active);
|
||||
item.addClass(ls.options.classes.states.active);
|
||||
this.setSelected(item, allowMany);
|
||||
this.showDetail(item);
|
||||
this.resizeFileList();
|
||||
};
|
||||
|
||||
/**
|
||||
* Получает активный файл
|
||||
*
|
||||
* @return {Object} Активный файл
|
||||
*/
|
||||
this.getActive = function() {
|
||||
return $(this.options.selectors.gallery.file + '.' + ls.options.classes.states.active);
|
||||
};
|
||||
|
||||
/**
|
||||
* Выделяет файл
|
||||
*
|
||||
* @param {Object} item Выделяемый файл
|
||||
* @param {Boolean} allowMany Выделение нескольких файлов
|
||||
*/
|
||||
this.setSelected = function(item, allowMany) {
|
||||
if ( ! allowMany ) {
|
||||
this.getSelected().removeClass(this.options.classes.selected);
|
||||
}
|
||||
|
||||
item.addClass(this.options.classes.selected);
|
||||
this.elements.buttonsInsert.prop('disabled', false);
|
||||
this.elements.info.empty.hide();
|
||||
|
||||
/* Если нет еще нет активного элемента, то делаем активным текущий */
|
||||
if (this.getActive().length === 0) {
|
||||
this.setActive(item, allowMany);
|
||||
}
|
||||
};
|
||||
|
||||
this.clearSelected = function() {
|
||||
this.getSelected().removeClass(this.options.classes.selected);
|
||||
this.getActive().removeClass(ls.options.classes.states.active);
|
||||
this.hideDetail();
|
||||
}
|
||||
/**
|
||||
* Получает выделенные файлы
|
||||
*
|
||||
* @return {Array} Список выделенных файлов
|
||||
*/
|
||||
this.getSelected = function() {
|
||||
return $(this.options.selectors.gallery.file + '.' + this.options.classes.selected);
|
||||
};
|
||||
|
||||
/**
|
||||
* Сохраняет настройки файла
|
||||
*
|
||||
|
@ -679,7 +436,7 @@ ls.media = (function ($) {
|
|||
* @param {String} value Значение переменной
|
||||
*/
|
||||
this.saveDataFile = function(name, value) {
|
||||
var item = this.getActive();
|
||||
var item = this.elements.gallery.fileList.lsUploaderFileList( 'getActiveFile' );
|
||||
|
||||
if (item.length) {
|
||||
var id = item.data('mediaId');
|
||||
|
@ -695,35 +452,12 @@ ls.media = (function ($) {
|
|||
};
|
||||
|
||||
/**
|
||||
* Показывает общую информацию о файле
|
||||
*/
|
||||
this.showDetail = function(item) {
|
||||
$('.js-media-detail-preview').attr('src', item.data('mediaPreview'));
|
||||
$('.js-media-detail-name').html(item.data('mediaFileName'));
|
||||
$('.js-media-detail-date').html(item.data('mediaDateAdd'));
|
||||
$('.js-media-detail-dimensions').html(item.data('mediaWidth') + '×' + item.data('mediaHeight'));
|
||||
$('.js-media-detail-file-size').html(parseInt(item.data('mediaFileSize') / 1024) + 'kB');
|
||||
$('.js-media-detail-area .js-input-title').val(item.data('mediaDataTitle'));
|
||||
$('.js-media-detail-area').show();
|
||||
|
||||
if (item.data('mediaRelationIsPreview')) {
|
||||
$('.js-media-item-info-create-preview').hide();
|
||||
$('.js-media-item-info-remove-preview').show();
|
||||
} else {
|
||||
$('.js-media-item-info-create-preview').show();
|
||||
$('.js-media-item-info-remove-preview').hide();
|
||||
}
|
||||
|
||||
this.showSettingsMode(item);
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
this.hideDetail = function() {
|
||||
$('.js-media-detail-area').hide();
|
||||
this.elements.buttonsInsert.prop('disabled', true);
|
||||
this.elements.info.empty.show();
|
||||
this.elements.info.self.lsUploaderInfo( 'empty' );
|
||||
this.hideSettingsMode();
|
||||
this.resizeFileList();
|
||||
};
|
||||
|
@ -732,7 +466,7 @@ ls.media = (function ($) {
|
|||
* Вставка файлов в редактор
|
||||
*/
|
||||
this.insert = function(url, params) {
|
||||
var items = this.getSelected();
|
||||
var items = this.elements.uploader.lsUploader( 'getElement', 'list' ).lsUploaderFileList( 'getSelectedFiles' );
|
||||
|
||||
if ( ! items.length ) return false;
|
||||
|
||||
|
@ -769,7 +503,8 @@ ls.media = (function ($) {
|
|||
infoHeight = this.elements.info.self.outerHeight();
|
||||
|
||||
this.elements.gallery.fileList.css({
|
||||
'min-height' : fileListHeight <= infoHeight || ( fileListHeight > this.options.file_list_max_height && fileListHeight > infoHeight ) ? infoHeight : this.options.file_list_max_height
|
||||
// 'min-height' : fileListHeight <= infoHeight || ( fileListHeight > this.options.file_list_max_height && fileListHeight > infoHeight ) ? infoHeight : this.options.file_list_max_height
|
||||
'min-height' : 30
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -1665,6 +1665,56 @@ return array(
|
|||
)
|
||||
),
|
||||
|
||||
|
||||
/**
|
||||
* Загрузкчик файлов
|
||||
*/
|
||||
'uploader' => array(
|
||||
'actions' => array(
|
||||
'remove' => '___common.remove___'
|
||||
),
|
||||
|
||||
'info' => array(
|
||||
'empty' => 'Выберите файл'
|
||||
)
|
||||
),
|
||||
|
||||
|
||||
/**
|
||||
* Загрузка изображений
|
||||
*/
|
||||
'media' => array(
|
||||
'title' => 'Загрузка медиа-файлов',
|
||||
|
||||
'nav' => array(
|
||||
'insert' => 'Вставить',
|
||||
'photoset' => 'Создать фотосет',
|
||||
'url' => 'Вставить по ссылке',
|
||||
'preview' => 'Превью',
|
||||
)
|
||||
),
|
||||
|
||||
'uploadimg' => 'Вставка изображения',
|
||||
'uploadimg_from_pc' => 'С компьютера',
|
||||
'uploadimg_from_link' => 'Из интернета',
|
||||
'uploadimg_file' => 'Файл',
|
||||
'uploadimg_file_error' => 'Невозможно обработать файл, проверьте тип и размер файла',
|
||||
'uploadimg_url' => 'Ссылка на изображение',
|
||||
'uploadimg_url_error_type' => 'Файл не является изображением',
|
||||
'uploadimg_url_error_read' => 'Невозможно прочитать внешний файл',
|
||||
'uploadimg_url_error_size' => 'Размер файла превышает максимальный в 500кБ',
|
||||
'uploadimg_url_error' => 'Невозможно обработать внешний файл',
|
||||
'uploadimg_align' => 'Выравнивание',
|
||||
'uploadimg_align_no' => 'нет',
|
||||
'uploadimg_align_left' => 'слева',
|
||||
'uploadimg_align_right' => 'справа',
|
||||
'uploadimg_align_center' => 'по центру',
|
||||
'uploadimg_submit' => 'Загрузить',
|
||||
'uploadimg_link_submit_load' => 'Загрузить',
|
||||
'uploadimg_link_submit_paste' => 'Вставить как ссылку',
|
||||
'uploadimg_title' => 'Описание',
|
||||
|
||||
|
||||
/**
|
||||
* Настройки
|
||||
*/
|
||||
|
@ -1734,28 +1784,6 @@ return array(
|
|||
* Поиск по тегам
|
||||
*/
|
||||
'tag_title' => 'Поиск по тегам',
|
||||
/**
|
||||
* Загрузка изображений
|
||||
*/
|
||||
'uploadimg' => 'Вставка изображения',
|
||||
'uploadimg_from_pc' => 'С компьютера',
|
||||
'uploadimg_from_link' => 'Из интернета',
|
||||
'uploadimg_file' => 'Файл',
|
||||
'uploadimg_file_error' => 'Невозможно обработать файл, проверьте тип и размер файла',
|
||||
'uploadimg_url' => 'Ссылка на изображение',
|
||||
'uploadimg_url_error_type' => 'Файл не является изображением',
|
||||
'uploadimg_url_error_read' => 'Невозможно прочитать внешний файл',
|
||||
'uploadimg_url_error_size' => 'Размер файла превышает максимальный в 500кБ',
|
||||
'uploadimg_url_error' => 'Невозможно обработать внешний файл',
|
||||
'uploadimg_align' => 'Выравнивание',
|
||||
'uploadimg_align_no' => 'нет',
|
||||
'uploadimg_align_left' => 'слева',
|
||||
'uploadimg_align_right' => 'справа',
|
||||
'uploadimg_align_center' => 'по центру',
|
||||
'uploadimg_submit' => 'Загрузить',
|
||||
'uploadimg_link_submit_load' => 'Загрузить',
|
||||
'uploadimg_link_submit_paste' => 'Вставить как ссылку',
|
||||
'uploadimg_title' => 'Описание',
|
||||
/**
|
||||
* Toolbar
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/**
|
||||
* Media
|
||||
*/
|
||||
|
||||
.modal-upload-image .modal-content { min-height: 300px; }
|
||||
.modal-upload-image .grid-row { background: #222; }
|
||||
|
||||
.modal-upload-image-pane { overflow: hidden; }
|
||||
|
||||
|
||||
/* Nav */
|
||||
.media-nav { float: left; width: 160px; padding-top: 15px; }
|
||||
.media-nav li { float: none; }
|
||||
.media-nav li a { float: none; display: block; padding: 10px 15px; color: #eee; }
|
||||
.media-nav li a:hover { background: #2a2a2a; }
|
||||
.media-nav li.active a { background: #333; }
|
||||
|
||||
|
||||
/* Content */
|
||||
.modal-upload-image-content { min-height: 300px; margin-left: 160px; background: #fff; border-left: 1px solid #eee; }
|
|
@ -49,107 +49,3 @@
|
|||
*/
|
||||
.modal-upload-image { max-width: 1200px; border: none; }
|
||||
|
||||
.modal-upload-image .modal-content { min-height: 300px; }
|
||||
.modal-upload-image .grid-row { background: #222; }
|
||||
|
||||
.modal-upload-image-pane { overflow: hidden; }
|
||||
|
||||
/* Nav */
|
||||
.modal-upload-image-nav { float: left; width: 160px; padding-top: 15px; }
|
||||
.modal-upload-image-nav li a { display: block; padding: 10px 15px; color: #eee; }
|
||||
.modal-upload-image-nav li a:hover { background: #2a2a2a; }
|
||||
.modal-upload-image-nav li.active a { background: #333; }
|
||||
|
||||
/* Content */
|
||||
.modal-upload-image-content { min-height: 300px; margin-left: 160px; background: #fff; border-left: 1px solid #eee; }
|
||||
|
||||
/**
|
||||
* Gallery
|
||||
*/
|
||||
.media-gallery-content { overflow: hidden; min-height: 150px; }
|
||||
|
||||
/* Upload area */
|
||||
.form-input-file.form-input-file-media {
|
||||
display: block;
|
||||
border: 3px dashed #eee;
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
padding: 20px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* File list */
|
||||
.media-gallery-list { overflow: auto; width: 68%; margin-right: 2%; max-height: 354px; float: left; }
|
||||
|
||||
.media-gallery-list-item {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
border: 3px solid transparent;
|
||||
padding: 1px;
|
||||
float: left;
|
||||
margin: 0 10px 10px 0;
|
||||
}
|
||||
.media-gallery-list-item img { vertical-align: top; width: 100px; height: 100px; }
|
||||
.media-gallery-list-item:hover { border-color: #eee; }
|
||||
|
||||
/* Empty */
|
||||
.media-gallery.is-empty .media-gallery-content { display: none; }
|
||||
.media-gallery.is-empty .form-input-file.form-input-file-media { padding-top: 150px; padding-bottom: 150px; margin-bottom: 0; }
|
||||
|
||||
/* Progress bar */
|
||||
.media-gallery-list-item .progress {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.media-gallery-list-item .progress-info {
|
||||
background: #000;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
padding: 2px 4px;
|
||||
border-radius: 2px;
|
||||
position: relative;
|
||||
}
|
||||
.media-gallery-list-item .progress-value {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100px;
|
||||
background: #84F76F;
|
||||
}
|
||||
|
||||
/* Selected */
|
||||
.media-gallery-list-item.is-selected { border-color: #D5CE3D; }
|
||||
|
||||
/* Active */
|
||||
.media-gallery-list-item.is-selected.active { border-color: #7979FC; }
|
||||
.media-gallery-list-item.is-selected.active .media-gallery-list-item-checkbox { background: #7979FC; }
|
||||
|
||||
/* Checkbox */
|
||||
.media-gallery-list-item input { display: none; }
|
||||
.media-gallery-list-item.is-selected .media-gallery-list-item-checkbox { display: none; position: absolute; right: 0; bottom: 0; width: 20px; height: 20px; background: #D5CE3D; cursor: pointer; }
|
||||
.media-gallery-list-item.is-selected input:checked + .media-gallery-list-item-checkbox { background: #000; }
|
||||
|
||||
/* Info */
|
||||
.media-gallery-item-info { width: 30%; float: left; padding: 20px; background: #fafafa; }
|
||||
.media-gallery-item-info ul li { margin-bottom: 5px; }
|
||||
.media-gallery-item-info h3 { font-size: 18px; font-weight: 400; margin-bottom: 10px; color: #000; }
|
||||
|
||||
.media-gallery-item-info-image { margin-bottom: 10px; }
|
||||
|
||||
.media-gallery-list,
|
||||
.media-gallery-item-info {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.media-item-info-empty { text-align: center; color: #aaa; }
|
||||
|
||||
/* Note */
|
||||
.modal-upload-image-note { margin-bottom: 20px; }
|
|
@ -343,9 +343,7 @@ jQuery(document).ready(function($){
|
|||
/**
|
||||
* Медиа файлы
|
||||
*/
|
||||
//ls.media.init();
|
||||
|
||||
|
||||
ls.media.init();
|
||||
/**
|
||||
* Стена
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
{* Массив со значениями для селекта Выравнивание *}
|
||||
{$aSelectImageAlign = [
|
||||
[ 'value' => '', 'text' => $aLang.uploadimg_align_no ],
|
||||
[ 'value' => 'left', 'text' => $aLang.uploadimg_align_left ],
|
||||
[ 'value' => 'right', 'text' => $aLang.uploadimg_align_right ],
|
||||
[ 'value' => 'center', 'text' => $aLang.uploadimg_align_center ]
|
||||
]}
|
||||
|
||||
{$aTargetParams = $LS->Media_GetTargetTypeParams( $sMediaTargetType )}
|
||||
|
||||
<div class="grid-row">
|
||||
{* Боковое меню *}
|
||||
{include 'components/nav/nav.tabs.tpl' sName='media' sClasses='media-nav' aItems=[
|
||||
[ 'name' => 'insert', 'pane' => 'tab-media-insert', 'text' => {lang name='media.nav.insert'}, 'classes' => 'js-tab-show-gallery active', 'attributes' => 'data-media-mode="insert"' ],
|
||||
[ 'name' => 'photoset', 'pane' => 'tab-media-photoset', 'text' => {lang name='media.nav.photoset'}, 'classes' => 'js-tab-show-gallery', 'attributes' => 'data-media-mode="photoset"' ],
|
||||
[ 'name' => 'url', 'pane' => 'tab-media-url', 'text' => {lang name='media.nav.url'} ],
|
||||
[ 'name' => 'preview', 'pane' => 'tab-media-preview', 'text' => {lang name='media.nav.preview'}, 'is_enabled' => $aTargetParams.allow_preview ]
|
||||
]}
|
||||
|
||||
{* Содержимое табов *}
|
||||
<div data-type="tab-panes" class="modal-upload-image-content">
|
||||
{include './pane.insert.tpl' isActive=true}
|
||||
{include './pane.url.tpl'}
|
||||
{include './pane.photoset.tpl'}
|
||||
{include './pane.preview.tpl'}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,19 @@
|
|||
{extends './pane.tpl'}
|
||||
|
||||
{block 'media_pane_options' append}
|
||||
{$id = 'tab-media-insert'}
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_content'}
|
||||
{include './uploader/uploader.tpl'
|
||||
attributes = 'id="media-uploader"'
|
||||
classes = 'js-media-gallery'
|
||||
targetParams = $aTargetParams
|
||||
targetType = $sMediaTargetType
|
||||
targetId = $sMediaTargetId
|
||||
targetTmp = $sMediaTargetTmp}
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_footer' prepend}
|
||||
<button type="submit" class="button button--primary js-media-insert-button js-media-insert">Вставить</button>
|
||||
{/block}
|
|
@ -0,0 +1,9 @@
|
|||
{extends './pane.tpl'}
|
||||
|
||||
{block 'media_pane_options' append}
|
||||
{$id = 'tab-media-photoset'}
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_footer' prepend}
|
||||
<button type="submit" class="button button--primary js-media-insert-button js-media-insert-photoset">Создать фотосет</button>
|
||||
{/block}
|
|
@ -0,0 +1,23 @@
|
|||
{extends './pane.tpl'}
|
||||
|
||||
{block 'media_pane_options' append}
|
||||
{$id = 'tab-media-preview'}
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_content'}
|
||||
{if $aTargetItems}
|
||||
{foreach $aTargetItems as $oTarget}
|
||||
<p class="mb-20">
|
||||
<a href="#" class="button" onclick="ls.media.removePreviewFile({$oTarget->getMediaId()}); return false;">Удалить превью</a>
|
||||
</p>
|
||||
|
||||
{$aPreview = $oTarget->getPreviewImageItemsWebPath()}
|
||||
|
||||
{foreach $aPreview as $sPreviewFile}
|
||||
<img src="{$sPreviewFile}" alt=""><br>
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
{else}
|
||||
Превью можно <a href="#" onclick="jQuery('.js-tab-show-gallery').first().click(); return false;">выбрать из галереи</a>.
|
||||
{/if}
|
||||
{/block}
|
|
@ -0,0 +1,13 @@
|
|||
{block 'media_pane_options'}
|
||||
{$id = $smarty.local.id}
|
||||
{/block}
|
||||
|
||||
<div id="{$id}" data-type="tab-pane" class="tab-pane modal-upload-image-pane" {if $smarty.local.isActive}style="display: block;"{/if}>
|
||||
<div class="modal-content">
|
||||
{block 'media_pane_content'}{/block}
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
{block 'media_pane_footer'}{/block}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,36 @@
|
|||
{extends './pane.tpl'}
|
||||
|
||||
{block 'media_pane_options' append}
|
||||
{$id = 'tab-media-url'}
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_content'}
|
||||
<form method="POST" action="" enctype="multipart/form-data" class="js-media-link-form">
|
||||
{* Ссылка *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'url'
|
||||
sValue = 'http://'
|
||||
sLabel = 'Ссылка'}
|
||||
|
||||
{* Описание *}
|
||||
{include 'components/field/field.text.tpl'
|
||||
sName = 'title'
|
||||
sLabel = $aLang.uploadimg_title}
|
||||
|
||||
<div style="display: none;" class="js-media-link-settings-image">
|
||||
<p><img src="" width="200" class="js-media-link-settings-image-preview"></p>
|
||||
|
||||
{* Выравнивание *}
|
||||
{include 'components/field/field.select.tpl'
|
||||
sName = 'align'
|
||||
sClasses = 'width-200'
|
||||
sLabel = $aLang.uploadimg_align
|
||||
aItems = $aSelectImageAlign}
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
|
||||
{block 'media_pane_footer' prepend}
|
||||
<button type="submit" class="button button--primary js-media-link-insert-button">Вставить как ссылку</button>
|
||||
<button type="submit" class="button button--primary js-media-link-upload-button">Загрузить и вставить</button>
|
||||
{/block}
|
|
@ -0,0 +1,46 @@
|
|||
{extends 'components/uploader/uploader.tpl'}
|
||||
|
||||
{block 'uploader_aside' append}
|
||||
{* Основные настройки *}
|
||||
<div class="uploader-info-block js-media-info-block" data-type="insert" style="display: none;">
|
||||
<h3>Опции вставки</h3>
|
||||
|
||||
{* Выравнивание *}
|
||||
{include 'components/field/field.select.tpl'
|
||||
sName = 'align'
|
||||
sLabel = $aLang.uploadimg_align
|
||||
aItems = $aSelectImageAlign}
|
||||
|
||||
{* Размер *}
|
||||
{$selectImageSizes = [ [ 'value' => 'original', 'text' => 'Оригинал' ] ]}
|
||||
|
||||
{foreach Config::Get('module.media.image.sizes') as $aSize}
|
||||
{$selectImageSizes[] = [
|
||||
'value' => "{$aSize.w}x{$aSize.h}{if $aSize.crop}crop{/if}",
|
||||
'text' => "{$aSize.w} × {if $aSize.h}{$aSize.h}{else}*{/if}"
|
||||
]}
|
||||
{/foreach}
|
||||
|
||||
{include 'components/field/field.select.tpl'
|
||||
sName = 'size'
|
||||
sLabel = 'Размер'
|
||||
sSelectedValue = $_aRequest.blog_category
|
||||
aItems = $selectImageSizes}
|
||||
</div>
|
||||
|
||||
{* Опции фотосета *}
|
||||
<div class="uploader-info-block js-media-info-block" data-type="photoset" style="display: none;">
|
||||
<h3>Опции фотосета</h3>
|
||||
|
||||
{* Показывать ленту с превьюшками *}
|
||||
{include 'components/field/field.checkbox.tpl'
|
||||
sName = 'use_thumbs'
|
||||
bChecked = true
|
||||
sLabel = 'Показывать ленту с превьюшками'}
|
||||
|
||||
{* Показывать описания фотографий *}
|
||||
{include 'components/field/field.checkbox.tpl'
|
||||
sName = 'show_caption'
|
||||
sLabel = 'Показывать описания фотографий'}
|
||||
</div>
|
||||
{/block}
|
|
@ -6,120 +6,13 @@
|
|||
|
||||
{extends 'components/modal/modal.tpl'}
|
||||
|
||||
{block name='modal_id'}modal-image-upload{/block}
|
||||
{block name='modal_class'}modal-upload-image js-modal-default{/block}
|
||||
{block name='modal_title'}Добавить медиа-файл{/block}
|
||||
{block name='modal_attributes'}data-modal-center="false"{/block}
|
||||
{block 'modal_id'}modal-image-upload{/block}
|
||||
{block 'modal_class'}modal-upload-image js-modal-default{/block}
|
||||
{block 'modal_title'}{lang name='media.title'}{/block}
|
||||
{block 'modal_attributes'}data-modal-center="false"{/block}
|
||||
|
||||
{block name='modal_content_after'}
|
||||
{* Массив со значениями для селекта Выравнивание *}
|
||||
{$aSelectImageAlign = [
|
||||
[ 'value' => '', 'text' => $aLang.uploadimg_align_no ],
|
||||
[ 'value' => 'left', 'text' => $aLang.uploadimg_align_left ],
|
||||
[ 'value' => 'right', 'text' => $aLang.uploadimg_align_right ],
|
||||
[ 'value' => 'center', 'text' => $aLang.uploadimg_align_center ]
|
||||
]}
|
||||
|
||||
{$aTargetParams=$LS->Media_GetTargetTypeParams($sMediaTargetType)}
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function($){
|
||||
ls.media.init({
|
||||
target_params: {json var=$aTargetParams},
|
||||
target_type: {json var=$sMediaTargetType},
|
||||
target_id: {json var=$sMediaTargetId},
|
||||
target_tmp: {json var=$sMediaTargetTmp}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="grid-row">
|
||||
{* Боковое меню *}
|
||||
<ul class="modal-upload-image-nav" data-type="tabs">
|
||||
<li data-type="tab" data-tab-target="tab-media-insert" data-media-mode="insert" class="active js-tab-show-gallery"><a href="#">Вставить</a></li>
|
||||
<li data-type="tab" data-tab-target="tab-media-create-photoset" data-media-mode="create-photoset" class="js-tab-show-gallery"><a href="#">Создать фотосет</a></li>
|
||||
<li data-type="tab" data-tab-target="tab-media-link"><a href="#">Вставить по ссылке</a></li>
|
||||
{if $aTargetParams.allow_preview}
|
||||
<li data-type="tab" data-tab-target="tab-media-preview"><a href="#">Превью</a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
{* Контент *}
|
||||
<div data-type="tab-panes" class="modal-upload-image-content">
|
||||
{**
|
||||
* Загрузка
|
||||
*}
|
||||
<div id="tab-media-insert" data-type="tab-pane" class="tab-pane modal-upload-image-pane" style="display: block">
|
||||
<div class="modal-content">
|
||||
{include file='modals/modal.upload_image.gallery.tpl'}
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="button button--primary js-media-insert-button js-media-insert">Вставить</button>
|
||||
<button type="button" class="button" data-type="modal-close">{$aLang.common.cancel}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{**
|
||||
* Ссылка
|
||||
*}
|
||||
<form method="POST" action="" enctype="multipart/form-data" id="tab-media-link" onsubmit="return false;" data-type="tab-pane" class="tab-pane modal-upload-image-pane js-media-link-form">
|
||||
<div class="modal-content">
|
||||
{* Ссылка *}
|
||||
{include file='components/field/field.text.tpl'
|
||||
sName = 'url'
|
||||
sValue = 'http://'
|
||||
sLabel = 'Ссылка'}
|
||||
|
||||
{* Описание *}
|
||||
{include file='components/field/field.text.tpl'
|
||||
sName = 'title'
|
||||
sLabel = $aLang.uploadimg_title}
|
||||
|
||||
<div style="display: none;" class="js-media-link-settings-image">
|
||||
<p><img src="" width="200" class="js-media-link-settings-image-preview"></p>
|
||||
|
||||
{* Выравнивание *}
|
||||
{include file='components/field/field.select.tpl'
|
||||
sName = 'align'
|
||||
sClasses = 'width-200'
|
||||
sLabel = $aLang.uploadimg_align
|
||||
aItems = $aSelectImageAlign}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="button button--primary js-media-link-insert-button">Вставить как ссылку</button>
|
||||
<button type="submit" class="button button--primary js-media-link-upload-button">Загрузить и вставить</button>
|
||||
<button type="button" class="button" data-type="modal-close">{$aLang.common.cancel}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
{**
|
||||
* Фотосет
|
||||
*}
|
||||
<div id="tab-media-create-photoset" data-type="tab-pane" class="tab-pane modal-upload-image-pane">
|
||||
<div class="modal-content"></div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="button button--primary js-media-insert-button js-media-insert-photoset">Создать фотосет</button>
|
||||
<button type="button" class="button" data-type="modal-close">{$aLang.common.cancel}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{**
|
||||
* Превью
|
||||
*}
|
||||
<div id="tab-media-preview" data-type="tab-pane" class="tab-pane modal-upload-image-pane">
|
||||
<div class="modal-content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{block 'modal_content_after'}
|
||||
{include 'components/media/media.tpl'}
|
||||
{/block}
|
||||
|
||||
{block name='modal_footer'}{/block}
|
||||
{block 'modal_footer'}{/block}
|
Loading…
Reference in a new issue