Мультизагрузка изображений

Простой (самый простой) способ реализовать мультизагрузку картинок.

В шаблоне правим window_load_img.tpl, делаем массив img_file[] и дописываем multiple
<input type="file" name="img_file[]" id="img_file" value="" class="input-text input-width-full" multiple />


И ActionAjax.class.php, вот функция EventUploadImage() целиком
	/**
	 * Загрузка изображения
	 *
	 */
	protected function EventUploadImage() {
		/**
		 * Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
		 * Это позволяет избежать ошибок в некоторых браузерах, например, Opera
		 */
		$this->Viewer_SetResponseAjax('jsonIframe',false);
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}
		$sFile=null;
                
                
                if (isPost('img_url') && $_REQUEST['img_url']!='' && $_REQUEST['img_url']!='http://') {
                        /**
                         * Загрузка файла по URl
                         */
                        $sFile=$this->Topic_UploadTopicImageUrl($_REQUEST['img_url'],$this->oUserCurrent);
                        switch (true) {
                                case is_string($sFile):

                                        break;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_READ):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_read'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_SIZE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_size'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_TYPE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_type'),$this->Lang_Get('error'));
                                        return;

                                default:
                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error'),$this->Lang_Get('error'));
                                        return;
                        }

                        if ($sFile) {                        
                                $sText=$this->Image_BuildHTML($sFile, $_REQUEST);
                        }

                } else {

                        foreach ($_FILES['img_file'] as $k=>$v){
                           if(is_array($v)){
                               foreach ($v as $sk=>$sv){ 
                                        $arr[$sk][$k]=$sv;
                                }
                               }
                            }

                        $sText = "";

                        foreach ($arr as $_FILES['img_file']) {

                                /**
                                 * Был выбран файл с компьютера и он успешно зугрузился?
                                 */
                                if (is_uploaded_file($_FILES['img_file']['tmp_name'])) {

                                        if(!$sFile=$this->Topic_UploadTopicImageFile($_FILES['img_file'],$this->oUserCurrent)) {
                                                $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_file_error'),$this->Lang_Get('error'));
                                                return;
                                        }
                                        /**
                                         * Если файл успешно загружен, формируем HTML вставки и возвращаем в ajax ответе
                                         */
                                        if ($sFile) {
                                                $sText.=$this->Image_BuildHTML($sFile, $_REQUEST);
                                        }

                                }	

                        } //foreach

                }

		$this->Viewer_AssignAjax('sText',$sText);		
		
	}


такие дела

TinyMCE plugin для платного модуля Lite image (от netlanc)

Купил модуль Lite image (от netlanc) и столкнулся с проблемой, что пользователи сильно пугаются, когда видят куски кода в редакторе + сам редактор искожает код после редактирования страницы. Использую TinyMCE. Наш посетитель это домохозяйки.

Lite image создаёт теги <fotoblock> и <sliderblock>.

Собственно была задача в редакторе TinyMCE обернуть генерируемый код модулем Lite image в понятный вид для пользователей + чтоб они не могли нарушить сам код фото-блоков и слайдер-блоков + чтоб пользователи могли без проблем блок переместить или скопировать.

плагин для tinymce называется fotoblock.

скачать можно dl.dropbox.com/u/624913/static/tinymce/fotoblock.zip
просто разворачиваете архив в папке plugins (tinymce) а точнее в LS эта папка находится: engine/lib/external/tinymce-jq/plugins/

далее правим настройки самого tinymce в файле engine/lib/internal/template/js/settings.js
где в строке plugins добавляем fotoblock.

у меня эта строчка теперь выглядет так
plugins: "lseditor,safari,inlinepopups,media,pagebreak,autoresize,fotoblock",


чистим кеш и наслаждаемся.

+ небольшой фикс для lite image. в файле image.js

310 строка
заменить
var tplfb = '&lt;fotoblock&gt;' + tplimg + '&lt;/fotoblock&gt;';

на
var tplfb = '<fotoblock>' + tplimg + '</fotoblock>';


364 строка
заменить
var tplfb = '&lt;sliderblock&gt;' + tplimg + '&lt;/sliderblock&gt;';

на
var tplfb = '<sliderblock>' + tplimg + '</sliderblock>';

Плагин "Lite image (multiupload)" - v0.3 for LS1.0 + фото-блоки + фото-слайдер

Плагин мультизагрузки изображений в топики теперь и для LS 1.0.
При загрузке создается основное изображение и превью. Совместим с markItUp и tinyMCE.

Теперь плагин умеет не только загружать изображения, но и собирать на их основе фото-блоки и слайдеры. На одной странице можно создавать несколько слайдеров или фото-блоков.
Новый функционал — фото-блоки и фото-слайдер можно повертеть в руках тут

Liteimage (multiupload) 0.2 (обновление)

В новой верии, по желаниям телезрителей ;) в конфиг плагина вынесен большой размер изображения. Также профикшен баг с атрибутами ссылок.

А еще добавлены новые плюшки, а именно:

  • добавление изображений в текст топика автоматически после загрузки, изображения будут добвляться в то место где стоял курсор, либо в конец, если поле текста еще не получало фокус
  • добавление группы изображений отмеченных чекбоксами (пока без функционала фотоблоков)

  • добавление изображению описания ! ВАЖНО! если Вы добавили изображение в текст а потом внесли для него описание — нужно будет стереть код изображения из текста и добавить снова
  • изменение размеров превью и основного изображения ! ВАЖНО! при изменении размеров обязательно отмечать чекбокс изменяемого изображения.

Немного скринов