Быстрый лёгкий надёжный форумный движок
Вы не вошли.
выглядит ужасно
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Ни чего не понимаю
Хочу разделить ячейки цветовой таблицы пустым пространстром в 1 пиксел.
Выходит либо вообще без пустого пространства, либо 2 пиксела.
При включеном border-collapse:collapse; вообще разделительные границы исчезают.
--------
UP
Разобрался.
Вот:
Редактировался Visman (2010-09-19 09:08:37)
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
А вот и смайлы:
Осталось только набить кучу новых смайлов для провеки отображения большого их числа
--------
UP
Какое преобразование бб-кодов и имен файлов для смайлов нужно делать до их размешщение в массивы, чтобы не было глюков?
Пример текущих массивов в яваскрипте
var bbcode_sm_img = new Array('smile.png','neutral.png','sad.png','big_smile.png','yikes.png','wink.png','hmm.png','tongue.png','lol.png','mad.png','roll.png','cool.png');
var bbcode_sm_txt = new Array(':)',':|',':(',':D',':o',';)',':/',':P',':lol:',':mad:',':rolleyes:',':cool:');
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Наблюдаю у себя странность при цитировании.
Курсор после цитирования встает не после [ /quote], а на столько символов левее ], сколько строк процитировано.
Что за глюк?
Работает этот код:
...
// Moz support
else if (msgfield.selectionStart || msgfield.selectionStart == '0')
{
var startPos = msgfield.selectionStart;
var endPos = msgfield.selectionEnd;
msgfield.value = msgfield.value.substring(0, startPos) + open + msgfield.value.substring(startPos, endPos) + close + msgfield.value.substring(endPos, msgfield.value.length);
if (startPos == endPos && open == '')
{
msgfield.selectionStart = startPos + close.length;
msgfield.selectionEnd = endPos + close.length;
}
else
{
msgfield.selectionStart = startPos + open.length;
msgfield.selectionEnd = endPos + open.length;
}
msgfield.focus();
}
...
P.S. Если текст выделен в окне ответа, то он остается выделенным правильно.
------
Хм.
Глюк только в Опере
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
хз. но видимо это зависит от *.selection*. попробуй вывести алертом эти значения в опере и в фэйрфоксе. в чем разница?
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Почему сделано так:
Когда один пользователь другому отправляет письмо через форум в поле From указываются реквизиты форума, а поле Reply-To реальные данные юзера, которые и позволяют ответить отправителю напрямую?
Хитрый план!?
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Заметил, что в версии 1.4 в отличие от 1.2 смайлы выравниваются со строкой по верхнему краю, а не по низу.
Как исправить?
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Обнаружил, что моя реализация вывода окошек с цветами и смайлами в IE6 глючит
Они позицируются относительно начала документа.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Почему селект просвечивает сквозь div-слой?
У дива - style="z-index: 101;"
---------
Глюк наблюдается в IE6
Редактировался Visman (2010-11-03 17:52:12)
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
обе проблемы широко известны. первая решается добавление position: relative куда надо, вторая не решается никак.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
вторая вроде решается, где-то видел
Offline
Решают, заменяя стандартный селект на эмуляцию. Это же капец, а не решение.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Первую проблему решал добавлением кода для IE (окошки у меня позицировались изначально скриптом):
function getposOffset(overlay, offsettype)
{
if (document.selection && document.selection.createRange)
{
var box = overlay.getBoundingClientRect();
var body = document.body;
var docElem = document.documentElement;
var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
var clientTop = docElem.clientTop || body.clientTop || 0;
var clientLeft = docElem.clientLeft || body.clientLeft || 0;
var top = box.top + scrollTop - clientTop;
var left = box.left + scrollLeft - clientLeft;
return (offsettype=='left')? Math.round(left) : Math.round(top);
} else
{
var totaloffset=(offsettype=='left')? overlay.offsetLeft : overlay.offsetTop;
var parentEl=overlay.offsetParent;
totaloffset=(offsettype=='left')? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
return totaloffset;
}
}
На IE6 работает, на 7, 8, 9 - не знаю
По второй проблеме нашел такое предложение:
1. прячем select
Самое простое решение — поставить селектам (всем или пересекающимся с дивом) css свойство visibility: hidden;
Разумеется искать все селекты и ставить каждому из них свойство не нужно. Достаточно определить css класс:.noselect select { visibility: hidden; }
и добавить этот класс к области над которыми окажется див.
Стиль display: none; в этом случае не подходит — может «поползти» верстка страницы.
Но логика работы его мне не понятна
Не ясно мне, как это может скрывать селекты при открытом диве и проявлять их при его закрытии.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Вопрос:
На сколько операция замены подстроки в базе ресурсозатратна?
UPDATE table SET field = REPLACE(field, 'что_меняем', 'на_что_меняем')
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Вопрос по кэшированию:
Имеет ли смысл кэшировать цензурируемые слова, чтобы убрать один запрос к базе?
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Эээ. Они же сейчас в файле?
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
artoodetoo, где?
function censor_words($text)
{
global $db;
static $search_for, $replace_with;
// If not already built in a previous call, build an array of censor words and their replacement text
if (!isset($search_for))
{
$result = $db->query('SELECT search_for, replace_with FROM '.$db->prefix.'censoring') or error('Unable to fetch censor word list', __FILE__, __LINE__, $db->error());
$num_words = $db->num_rows($result);
$search_for = array();
for ($i = 0; $i < $num_words; ++$i)
{
list($search_for[$i], $replace_with[$i]) = $db->fetch_row($result);
$search_for[$i] = '/(?<=\W)('.str_replace('\*', '\w*?', preg_quote($search_for[$i], '/')).')(?=\W)/i';
}
}
if (!empty($search_for))
$text = substr(preg_replace($search_for, $replace_with, ' '.$text.' '), 1, -1);
return $text;
}
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
На этом хостинге, например, нагрузка на БД лимитириуется, а на дисковые операции нет. Поэтому снижение нагрузки на БД всегда смысл. Главное, чтобы этот кеш подключался только когда он нужен.
Offline
hcs, если цензура включена, то ф-ия работает при каждом запросе к страницам форума (темы и сообщения).
Между прочем в PunBB 1.3 кэширование применено
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
По кэшированию цензурируемых слов нужно вопрос поднять на fluxbb.org.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Visman, надо же
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Народ, у меня склероз, не помню куда стрелка должна показывать при сортировке списка.
Так правильно по убыванию кол-ва сообщений?
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
↓
Offline
Кто-нибудь пробовал включить подробный вывод по запросам в базе?
Добавляю в коммон строку define('PUN_SHOW_QUERIES', 1);
Результата нема
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline