Predvoditelev.RU

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

12 Ноябрь 2008, 18:04

Проверка на максимальную длину названия темы в 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.'" />

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

Полезные ссылки

Русскоязычное сообщество Vanilla forum

———————–

Продолжаю изучать заработок на блогах. Сегодня зарегистрировался в системе ProfitBLOG.

This entry no have comments... but you can be first.

Leave a Reply