Перейти к контенту

Замена механизма проверки использования только заглавных букв в назван


Рекомендуемые сообщения

Решение только для тех у кого правильно выставлена локаль

Здесь приведено решение для 2.2.х и 2.3.х, оно так же может быть портировано на 2.1.х или 1.х, но я этого не сделал :D

 

Изменяются 3 файла:

./sources/ipsclass.php

./sources/action_public/xmlout.php

./sources/classes/post/class_post.php

 

Инструкция собственно:

Добавляем новый механизм преобразования заглавных букв в строчные. Для этого редактируется файл ./sources/ipsclass.php

Перед

	/*-------------------------------------------------------------------------*/
// Calculate max post size
/*-------------------------------------------------------------------------*/

function math_get_post_max_size()
{

 

Добавить:

	function chartoupper( $matches )
{
	return strtoupper( $matches[0] );  
}

function clean_topic_title($t)
{
	if ( $t[0] != '^' ) 
	{
		$makeSyntaxisCheck = true;
		$lowTitle = strtolower( $t );

		if ( $t !== $lowTitle)
		{
			$t = $lowTitle;
			$t[0] = strtoupper( $t[0] );

			if ( $makeSyntaxisCheck )
			{
					$t = preg_replace_callback( '/[.?!]+(\s+)?([a-zа-я])/', array( &$this, 'chartoupper' ), $t ); 
			}
		}   
	} else {
		$t = substr( $t, 1 );				
	}

	return $t;			
}

 

Теперь необходимо заменить старое преобразование на новое.

а) ./sources/action_public/xmlout.php - быстрое редактирование названия топика (AJAX) - ищем

				$name = ucwords(strtolower($name));

 

Меняем на

				//$name = ucwords(strtolower($name));
			$name = $this->ipsclass->clean_topic_title($name);

 

б) ./sources/classes/post/class_post.php - создание темы, редактирование темы - ищем

			$title = ucwords(strtolower($title));

 

Меняем на

			//$title = ucwords(strtolower($title));
		$title = $this->ipsclass->clean_topic_title($title);

 

Собственно все.

 

А так же пояснения

В новом механизме есть фильтр позволяющий расставлять правильно заглавные буквы после знаков препинания (.!?). Отвечает за него переменная в методе $makeSyntaxisCheck.

 

Если данная переменная равна true то механизм работает так:

Исходный текст: ПРЕВЕД! МЕДВЕД. КАГ ДЕЛА?

После того как отработал механизм: Превед! Медвед. Каг дела?

 

Если переменная равна false то механизм работает так:

Исходный текст: ПРЕВЕД! МЕДВЕД. КАГ ДЕЛА?

После того как отработал механизм: Превед! медвед. каг дела?

 

А что делать если мне надо выделить слово или я использую название в тексте, которое должно писаться большими буквами (н-р аббревиатура).

Для этого перед заголовком надо поставить знак ^. В этом случае происходит отключение механизма преобразования, и заголовок остается таким как его указал автор.

Исходный текст: Превед, Медвед! Любишь IP.Board?

После того как отработал механизм: Превед, Медвед! Любишь IP.Board?

Ссылка на комментарий
Поделиться на других сайтах

фильтр позволяющий расставлять правильно заглавные буквы после знаков препинания (.!?).

Я правильно понял, что если обычный юзер, не знающий про волшебную крышечку, решит создать топик с поздравлением меня (FatCat) с днем рождения (ДР), получится: "С Др Fatcat"?

 

ИМХО, проще и эффективней пару раз устроить показательную порку за кирпич на капслоке, чем исправлять косяки искореженного текста...

Ссылка на комментарий
Поделиться на других сайтах

GiV вдохновился)))

а как же зло от регулярок?

и еще идея - фтопку крышечку, игнорировать только то, что взято в кавычки

example

СТУДЕНЧЕСКИЙ СОЮЗ "МИРЭА" -> Студенческий союз "МИРЭА"

Ссылка на комментарий
Поделиться на других сайтах

Я правильно понял, что если обычный юзер, не знающий про волшебную крышечку, решит создать топик с поздравлением меня (FatCat) с днем рождения (ДР), получится: "С Др Fatcat"?

Потому кавычка и введена.

 

Идея фильтровать только ЗАГЛАВНЫЕ ТЕМЫ была, но как то красивого метода не пришло в голову как ее решить без регулярок. Потому и добавил крышку.

 

а как же зло от регулярок?

Зло, но тут без них получился бы очень огромный анализатор, который по скорости был бы аналогичен регуляркам (собственно он и был изначально написан, но отлаживать забодало). Так что из двух зол выбрал то которое красивее.

 

Про кавычки тоже думал, FatCat показал почему кавычки не жизнеспособны.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...

Хорошо, что я нашел эту тему :D Вот такая странность обнаружилась на форуме: заглавные буквы в названии тем, если они не первые в слове, сами изменяются в нижний регистр. Например: я создал тему "Общие вопросы по MacOS", рядом создал еще одну тему "WinXP x64 на виртуалке VMware", в итоге обе темы названы вот так: Общие вопросы по Macos и Winxp x64 на виртуалке Vmware. Обратите внимание на подчеркнутые слова - у них в верхнем регистре остались только первые буквы, другие опустились ;) И еще кое-что: в музыкальном подфоруме есть тема "Вышел новый альбом Atb", сколько я не пытался исправить Atb на ATB - ничего не происходит. Ладно уж названия программных продуктов, это еще куда не шло, чего уж там, но ATB - это инициалы, и это уж слишком. Может быть другим юзерам это как-то нормально, но лично меня это бесит.

Самое интересное: я пытаюсь отредактировать нормально, а ничего не происодит :) Еще глюк происходит, если заглавная буква стоит после скобки, например: Драйвера для Winxp (vista), а я в названии темы писал: Драйвера для WinXP (Vista). слова, в которых форум делает ошибку, так же подчеркнуты.

 

Сначала я думал, что проблемы с настройкой, перешерстил - ничего не нашел. Щас попробывал изложенный выше пример - не помогло. Как избавится от такого глюка?

Ссылка на комментарий
Поделиться на других сайтах

Сначала я думал, что проблемы с настройкой, перешерстил - ничего не нашел.

Не нашли настройку в АЦ?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.