p.s. Может кому-то пригодится выложу его (за основу брал ActiveFileField и дописал нужное).
<?phpclass DHTMLX extends CHTML{ public static function activeFileFieldExtended($model,$attribute,$htmlOptions=array()) { self::resolveNameID($model,$attribute,$htmlOptions); if (!empty($model->$attribute)) $existFile = self::tag('br') . self::hiddenField(str_replace($attribute, $attribute.'ExistFile', $htmlOptions['name']),CHtml::encode($model->$attribute) ,array('id'=>self::ID_PREFIX.str_replace($attribute, $attribute.'ExistFile', $htmlOptions['id']))) . self::checkBox(str_replace($attribute, $attribute.'ExistFileDelete', $htmlOptions['name']), false, array('id'=>self::ID_PREFIX.str_replace($attribute, $attribute.'ExistFileDelete', $htmlOptions['id']))) . self::label('delete?',self::ID_PREFIX.str_replace($attribute, $attribute.'ExistFileDelete', $htmlOptions['id'])) . self::link(CHtml::encode(basename($model->$attribute)),CHtml::encode($model->$attribute)); else $existFile = ''; ; // add a hidden field so that if a model only has a file field, we can // still use isset($_POST[$modelClass]) to detect if the input is submitted return self::hiddenField($htmlOptions['name'],'',array('id'=>self::ID_PREFIX.$htmlOptions['id'])) . self::activeInputField('file',$model,$attribute,$htmlOptions) . $existFile; }}
тут немного говнокодистее :)
bearman, свойству объекта присваиваю новый путь как относительный для веб-сайта. Во вьюхе у меня по нему строится элемент, который состоит из файлового поля, ссылки на картинку и чекбокса для удаления. Создаётся как унаследованный метод от стандартного ActiveFileField из CHTML
Указывается стандартно:
<div class="simple"> <?php echo DHtmlX::activeLabelEx($model,'image'); ?> <?php echo DHtmlX::activeFileFieldExtended($model,'image'); ?> </div>
а выглядит вот так:
bearman, NutZ,
вы будете выступать для Neval как заказчики?
p.s. Наперёд бросаю свой метод (выбрал тот, который мне не до конца нравится, много вложенных ифов, но в котором было минимум кодогенерации) :)
public function actionUpdate() { $model=$this->loadNews(); if(isset($_POST['AdminNews'])) { $model->attributes=$_POST['AdminNews']; $model->image=CUploadedFile::getInstance($model,'image'); $valid = $model->validate(); if (!empty($model->imageExistFile) && !empty($model->imageExistFileDelete) ) { $this->deleteExistingFile($model->imageExistFile) ; } if(!empty($model->image) && !$model->hasErrors('image')) { $this->deleteExistingFile($model->imageExistFile); $filename = Yii::app()->user->id . '_' . substr(md5($model->image->getName()), 27, 5); $savePath = FileHelpers::getUniqueFileName('../images/b/', $filename .'.'.$model->image->getExtensionName(), $model->image->getExtensionName()); $model->image->saveAs('../images/tmp/' . $savePath); $model->image= '/images/tmp/' . $savePath; } else { $model->image=$model->imageExistFile; } if ($valid) { if (!empty($model->image)) { $imagePath = basename($model->image); FileHelpers::copyFile('../'.$model->image, '../images/b/' . $imagePath); $image = Yii::app()->image->load('../images/b/' . $imagePath); $image->resize(100, 100, Image::WIDTH); $image->save('../images/s/' . $imagePath); $image = Yii::app()->image->load('../images/b/' . $imagePath); $image->resize(300, 500, Image::WIDTH); $image->save('../images/b/' . $imagePath); FileHelpers::removeFile('../images/tmp/', $imagePath); $model->image = $imagePath; } $model->save(false); $this->redirect(array('/news')); } } $this->render('update',array('model'=>$model)); }
Присоединяюсь к просьбе, если ТС считает, что программеры на СЕ телепаты, то как вариант, можно тоже предложить прочитать правильное решение из наших голов напрямую, минуя форум :)
В привате, по крайней мере, украинском, вроде бы Visa Internet - 7 баксов/год. Или что-то поменялось?
update: сейчас глянул - открытие 2 уе, обслуживание 5 уе в год.
stroydomen, вы не совсем поняли высказывание. Имеется в виду, что траффик там собирается с поисковых машин, а потом уже его можно монетезировать контекстом.
А то что вы описали в чистом виде называется арбитражем (покупаем в контексте посетителя за рупь, а отправляем его назад за 2), тему используют, но такой "выжатый" траф нелюбим системами контекстной рекламы и они борются с этим тем или иным способом.
Dreammaker добавил 26.10.2009 в 21:24
Кстати, сразу не заметил. Если это конечная цена клика для площадки, а не для рамблера, то хватайтесь руками и ногами - вполне достойная на нынешний момент цена клика. Впрочем, даже и рубль как бид (а не цена для рекламодателя) при хороших объёмах траффика и хорошем CTR - вполне терпимо.
можно и только текстом - всё зависит от конкуренции.
p.s. Уточню, на собственном опыте говорю.
продать душу? :)
А если серъезно, то можно монетезировать, объемы зависят от тематики и фантазии вебмастера.
Мальчик чем-то напоминает Юру Демидовича, так и хочется подпеть "Волшебный кролик!" :)
угу, циферки более обтекаемые стали :)
update: судя по статистике, опять стало как-то непонятно считать, так что объявление о технических работах всё ещё в силе.