+0.04
Рейтинг
0.10
Сила

Можно ли сделать валидацию загружки фото к топику?

Мне нужно чтобы к каждому топику пользователь обязательно загружал фото для того, чтобы у каждого топика была превьюшка.
Прочитал Тему по валидации, но там вроде описывается только применительно к обычным полям а не к загрузке фото. Можно ли как то это использовать? и если да, то как?

PS пробовал прописать правило для этого поля

<input type="file" id="photoset-upload-file" name="Filedata" />

но не вышло. Валидатор считает поле пустым

        $this->aValidateRules[] = array(
            'photoset-upload-file', 'required',
            'allowEmpty' => false,
            'on' => array('topic')
        );	

изменить оформление кнопки загрузить фото в фотосете

Господа, кто сталкивался откликнитесь пожалуйста.
нужно заменить блок загрузки фото(1) на обычную кнопку(2)

в чем собственно проблема
кнопка вставляется днамически в /lib/exeternal/swfupload/swfupload.js

// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
SWFUpload.prototype.getFlashHTML = function () {
	// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
	return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload"><param name="wmode" value="opaque"></param>',
				'',
				'<param name="movie" value="', this.settings.flash_url, '"></param>',
				'<param name="quality" value="high"></param>',
				'<param name="menu" value="false"></param>',
				'<param name="allowScriptAccess" value="always"></param>',
				'<param name="flashvars" value="' + this.getFlashVars() + '"></param>',
				'</object>'].join("");
};
увидев class=«swfupload» я обрадовался и побежал прописывать класс .swfupload { ляля: траляля; } в buttons.css и половину проблемы это действительно решило — конпка стала синей. Но к тексту кнопки стили НЕ приминились. поковыряв движок еще немного я нашел вот это в main.js
// Button Settings
			button_placeholder_id : "start-upload",
			button_width: 122,
			button_height: 30,
			button_text : '<span class="swfupload-text">'+ls.lang.get('topic_photoset_upload_choose')+'</span>',
			<strong>button_text_style : '.swfupload-text {  color: #000; font-size: 14px;  text-align:center; }',</strong>
			button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
			button_text_left_padding: 6,
			button_text_top_padding: 3,
			button_cursor: SWFUpload.CURSOR.HAND,


посмотрев на button_text_style я подумал что все гениальное просто, заменил color: #000; на #fff; и решил что проблема решена. но не тут то было.Стили не применились.Естественно я чистил и кеш браузера и папки _tmp _run и отключил кеширование в движке. но все безрезультатно. пробовал вообще убрать span и прописать стили в .swfupload но тоже не помогло.
Что еще можно предпринять?

Снова ajax, нужна помощь с кодом.

Всем привет, снова нужна помощь.
Решил попробовать перевести на аякс поиск топиков по тегам.
Столкнулся с какой то странной ошибкой.
Если я передаю переменную $aTopics ($oViewer->Assign('aTopics',$aTopics);) в шаблон то ничего не работает. Если не передаю, то все отрабатывается но естественно я не вижу топики которые должны быть.
При этом если убрать ajax и сделать как обычный эвент по клику, то все прекрасно работает и топики выводятся.

Может быть кто то натолкнет на решение или хотя бы подскажет в какую сторону смотреть.

topic.js
ls.topic = (function ($) {

    this.searchByTag = function(idTag, idTab) { 

		var url = aRouter['filter']+idTab+'/'+'ajax-search-by-tag/';
		var params = {idTag: idTag};
		ls.ajax(url, params, function(result){
			if (result.bStateError) {
				$('#topic-list-search').hide();
				$('#topic-list-original').show();
			} else {
				$('#topic-list-original').hide();
				$('#topic-list-search').html(result.sText).show();
			}
		});
	};


Экшн
/**
	 * Отображение топиков по тегам
	 *
	 */
	protected function EventAjaxSearchByTag() {

		 // Получаем тег из УРЛа
		$this->Viewer_SetResponseAjax('json');
                $sTagId = getRequestStr('idTag', null, 'post');  // Тег по которому ищем.

		 // Получаем список топиков
                 //1 и 100 количество страниц и топиков на страницу
		$aResult = $this->Topic_GetTopicsByTag($sTagId, 1,100)); 
		$aTopics = $aResult['collection']; 

		/**
		 * Вызов хуков
		 */
		//$this->Hook_Run('topics_list_show',array('aTopics'=>$aTopics));
		/**
		 * Загружаем переменные в шаблон
		 */
                $oViewer=$this->Viewer_GetLocalViewer();
		$oViewer->Assign('aTopics',$aTopics);
		$this->Viewer_AssignAjax('sText',$oViewer->Fetch("topic_list.tpl"));

Как правильно обрабатывать свои поля в шаблоне чтобы не выскакивало hacking Attempt? (ValidateSendForm)

Всем привет.
Мне понадобилось добавить некоторый функционал в настройки профиля пользователя. Все делал по образу и подобию вкладки профиль

Порядок действий:
1.прописал дополнительную вкладку в файле menu_settings.tpl.
2 скопировал шаблон вкладки профиля actions/settings/profile.tpl под другим именем, вырезал оттуда ненужные поля и добавил свое поле.
3. Создал в ActionSettings событие Event и его обработку.

И вот теперь собственно вопрос: при нажатии кнопки сохранить вываливается ошибка Hacking Attempt.
проблема в следующей строчке.без нее работает.
if (isPost('submit_settings_save')) {
$this->Security_ValidateSendForm();

Как заставить работать код с ней?