пятница, 11 июля 2008 г.

URL Rewrite - .NET

Столкнулся с необходимостью сделать ЧПУ (человеко-понятные урл`ы) на .NET`е.
Первым под руку попался компонент urlrewriting.net. Всё было ок, пока не выяснилось, что PostBack`и не работают - не передается информация и IsPostBack=false. Поковырялся... и нашел другой компонент - urlrewriter.net - он работал сразу, только вот ссылку в поле формы action не ту писал (а точнее вообще не писал, но хоть работало). Долго копал интернет - оказалось есть "чистый" способ.

Оговорюсь - сайт на C# ASP.NET 2.0.

Делаем в корне сайта папку App_Browsers. Создаем файл Form.browser с содержимым:

<browsers>

<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="FormRewriterControlAdapter" />
</controlAdapters>
</browser>

</browsers>


далее в папке App_Code создаем файл FormRewriter.cs с содержимым:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

///
/// Summary description for FormRewriter
///

public class FormRewriterControlAdapter : System.Web.UI.Adapters.ControlAdapter
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter : HtmlTextWriter
{
public RewriteFormHtmlTextWriter(HtmlTextWriter writer) : base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
HttpContext Context;
Context = HttpContext.Current;
if (Context.Items["ActionAlreadyWritten"] == null)
{
value = Context.Request.RawUrl;
Context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}



Пояснение простое:
1 - это обработчик для разных браузеров
2 - это код, который подменяет тег action у формы.

И PostBack теперь правильно работает...

пятница, 21 марта 2008 г.

Drupal 5.7 | Модуль Poll - мой патч для анонимных голосующих

Родной модуль имел тупую систему фильтрации для анонимов - по ip! Я исправил.

Используется куки, плюс задержка между повторными голосованиями - это должно спасать от флуда.

drupal-5.7-poll-update.zip

Drupal - Закачка файлов - изменение настройки размера

Всё просто. в корне файл .htaccess , в конец добавить:

php_value upload_max_filesize 40M
php_value post_max_size 40M

правда получается в 2 раза меньше... но работает!

понедельник, 3 марта 2008 г.

PHP. Лого на загружаемое изображение.

Вот пример функции, которая вставляет лого (png с прозрачностью) в изображение. Внимание! Скрипт должен запускаться с правами на chmod и удаление файлов.


// вставляет лого в пикчу
//$logo_img - полный путь до лого в формате png с прозрачностью
//$img - полный путь к обрабатываемому изображению
function SetLogo($logo_img ,$img)
{

$info = @getimagesize($img);

//проверка расширения и доступности файла
if (!$info)
return -1;

switch( $info[2])
{
case "2": //jpg
$srcImage = @ImageCreateFromJPEG($img);
break;

case "1"://gif
$srcImage = ImageCreateFromGIF($img);
break;

case "3"://png
$srcImage = ImageCreateFromPNG($img);
break;

default:
return -1;
break;
}

$logoImage = ImageCreateFromPNG($logo_img);
if (!$logoImage)
return -1;

$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);

$logoWidth = ImageSX($logoImage);
$logoHeight = ImageSY($logoImage);

imageAlphaBlending($logoImage, false);
imageSaveAlpha($logoImage, true);

$trcolor = ImageColorAllocate($logoImage, 255, 255, 255);
ImageColorTransparent($logoImage , $trcolor);

$logo_inserted=false;

if (($srcWidth>$logoWidth) && ($srcHeight>$logoHeight))
$logo_inserted=imagecopy($srcImage, $logoImage, $srcWidth - $logoWidth, $srcHeight - $logoHeight, 0, 0, $logoWidth, $logoHeight);

if ($logo_inserted)
{

@chmod($img, 0777);
if (@unlink($img))
{

switch( $info[2])
{
case "2"://jpg
ImageJPEG($srcImage, $img, 100);
break;

case "1"://gif
ImageGIF($srcImage, $img);
break;

case "3"://png
ImagePNG($srcImage, $img);
break;

}
}
}

@ImageDestroy($srcImage);
}
?>

суббота, 16 февраля 2008 г.

Drupal 5. TinyMCE

Нужно скачать и установить модуль TinyMCE и сам редактор.
Редактор нужно положить в каталог modules/tinymce/tinymce.
Теперь обязательно на странице ?q=admin/user/access поставьте какой-нибудь роли возможность пользоватся tinymce (иначе не смежете сделать следующий шаг).
Потом в настройках нужно создать профиль для этого редактора (это не страшно, просто настраивается какие возможности он будет иметь) и поставить кучу галочек в разделе Buttons and Plugins.
Так же посмотрите другие разделы...

В результате будет возможность использовать визуальный редактор:

Drupal 5. Вкусный набор добавочных модулей.

Мой (да и вообще общепризнанный) набор модулей для Друпала:


  • Views - позволяет настраивать вывод информации о содержании (ноды).


  • CCK (Content Construction Kit) - мега вещь! Дает возможность создавать новые типы полей у типов содержания.


  • WebForm - Возможность создавать веб-формы (опросники, формы).


  • jQuery_update - Обновление. (Кроме распаковки в каталог modules нужно файл jquery.js положить поверх старого в каталог misc)


  • viewfield - Улучшение для модуля views.


  • contemplate - Улучшение шаблонизации. Можно для ноды делать свой шаблон. Так же дает возможность использовать файлы-шаблоны по типу: node-тип_ноды-поле.tpl.php.


  • taxonomy_redirect - дает возможность изменить ссылки таксономии.


  • admin_menu -Добавляет к админке вверх popup меню для быстрой навигации.


  • pathauto - Автоматически создаёт читаемые ссылки на ноду.




Чуть позже опишу пример использования CCK+Views для создания каталога продукции.

пятница, 15 февраля 2008 г.

Drupal 5. Установка и русский язык.

Пишу себе памятку :-)

Нужно:
- сам друпал- Сайт друпала (пока лучше брать 5-ую версию, т.к. под неё много модулей-дополнений)
- русский язык- для версии 5.3

1. создаём базу даных (utf-8)
2. распаковываем архив друпала
3. распаковать "русский" в каталог друпала (поверх)
4. теперь уже стартуем инсталляцию - просто открываем сайт в браузере.
5. Выбрать "Русский Drupal" и язык "Русский"
6. По умолчанию в русской версии создаёт сразу админскую запись- имя: admin, пароль: admin. Не забудьте сменить !!!

подробно - тут

вторник, 12 февраля 2008 г.

Lay`s - я победил систему :-)

Уря!
Пришла супер флешка!



Минусы:
  • Нет лого Lay`s
  • 128Mb
Плюсы:
  • Ошейник
  • USB-удлиннитель
А самое главное - это моя первая USB-флешка. Типа фишка - я не купил, а выйграл :)

Способ победы - 3 карточки акции... в 3 часа ночи...