Проверка на максимальную длину названия темы в Vanilla

Среда, 12 ноября 2008 г.
Проверка на максимальную длину названия темы в Vanilla

Форум Vanilla, конечно, довольно интересный и очень удобный, но ещё достаточно сыроват. Поэтому приходится некоторые ошибки по ходу находить и самому править. Собственно обнаружилась ошибка в проверке на максимальную длину названия темы в Vanilla. Описываемая ошибка у меня проявилась в версии 1.1.5a.

Итак в файле [путь к форуму]/appg/settings.php есть такой параметр $Configuration['MAX_TOPIC_WORD_LENGTH'], который вероятно и должен отвечать за максимальную длину названия темы. Но как не менял я этот параметр - результат был один и тот же: ограничение всегда было в 100 символов.

Стоит сказать, что определил-то я это не сразу :). Ошибка показывается, не как обычно что-то вроде “Превышено ограничение в N символов”, а показывается на сколько символов длина заголовка превышает ограничение, поэтому у меня число было всегда разным, а перевод был не правильным: "Заголовок темы превышает N символов". Я перевел для себя так (см. файл [путь к форуму]/languages/[название языка]/definitions.php):

$Context->Dictionary['ErrInputLength'] = '//1 слишком длинный. Сократите его на //2 символ(а, ов).';

Но собственно к ошибке с проверкой длинны. Раз ограничение всегда было одно - в 100 символов, значит оно где-то жестко прописано, вместо того, чтобы использовать наш параметр. Порывшись в исходниках, обнаружилось проблемное место. Итак, чтобы исправить этот глюк открываем файл [путь к форуму]/library/Vanilla/Vanilla.Class.DiscussionManager.php и заменяем в нём строку 448:

Validate($this->Context->GetDefinition('DiscussionTopicLower'), 1, $Name, 100, '', $this->Context);

на строку:

Validate($this->Context->GetDefinition('DiscussionTopicLower'), 1, $Name, $this->Context->Configuration['MAX_TOPIC_WORD_LENGTH'], '', $this->Context);

Теперь проверка на длину строки будет работать корректно.

В шаблоне также ограничение на длину прописано жестко, то есть параметр maxlength=”100″. Заменим его. Открываем файл [путь к форуму]/themes/discussion_form.php и заменяем в нем:

<input id="txtTopic" type="text" name="Name" class="DiscussionBox" maxlength="100" value="'.$Discussion->Name.'" />

на

<input id="txtTopic" type="text" name="Name" class="DiscussionBox" maxlength="'.$this->Context->Configuration['MAX_TOPIC_WORD_LENGTH'].'" value="'.$Discussion->Name.'" />

Вот теперь вроде бы всё. Ошибка исправлена полностью.

PS Много информациии по Vanilla вы найдете здесь: Русскоязычное сообщество Vanilla forum.

Рубрика: Web-мастеринг | Тэги:
Оставить комментарий
Не регистрировать/аноним
Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.
(обязательно)