Ребят, пытаюсь настроить рандомные смайлики в ComboBox редактора.
На 3.6 просто установив в админке все смайлы с одним и тем же индексом (например 0), рамндомизация происходила автоматом.
Пересмотрел всё, (misc, functions_editor...), все запросы в базу отредактировал: теперь они с учитыванием категории смайлов, правильно (то есть рандомно) выдают смайлы, соблюдая очерёдность категорий смайлов.
При открытии окна (показать все смайлики) и в расширенном режиме, всё как надо. Но именно в меню смайликов, в панели редактора, однозначно что-то кэшируется.
Установил хак phpkd_aqr_2_0_0. Искал и в нём.... даже проставил парочку echo, вижу каждый раз проходит тут:
PHP Code:
// ....
// SQL query
if ($totalsmilies > 0)
{
if ($vbulletin->options['phpkd_aqr_wysiwyg_smtotal'] > 0)
{
$show['wysiwygsmilies'] = true;
// smilie dropdown menu
$vBeditJs['smilie_options_array'] = array();
$i = 0;
while ($smilie = $vbulletin->db->fetch_array($smilies))
{
if (empty($prevcategory))
{
$prevcategory = $smilie['category'];
}
if ($i++ < $vbulletin->options['phpkd_aqr_wysiwyg_smtotal'])
{
$vBeditJs['smilie_options_array']["$smilie[category]"][] = "\t\t'$smilie[smilieid]' : new Array('" . addslashes_js($smilie['smiliepath']) . "', '" . addslashes_js($smilie['smilietext']) . "', '" . addslashes_js($smilie['title']) . "')";
}
else
{
$vBeditJs['smilie_options_array']["$prevcategory"][] = "\t\t'more' : '" . addslashes_js($vbphrase['show_all_smilies']) . "'\n";
break;
}
$prevcategory = $smilie['category'];
}
foreach (array_keys($vBeditJs['smilie_options_array']) AS $category)
{
$vBeditJs['smilie_options_array']["$category"] = "\t'" . addslashes_js($category) . "' : {\n" . implode(",\n", $vBeditJs['smilie_options_array']["$category"]) . "}";
}
$vBeditJs['smilie_options_array'] = "\n" . implode(",\n", $vBeditJs['smilie_options_array']);
}
То есть $vBeditJs['smilie_options_array'] каждый раз разный. Но с.ка в менюшке ничего не меняется.
Если переставлю очерёдность категорий в админке, меныется. Потом пару раз перезагружу страничку, какая-то очередь устаканивается и всё, потом выдаёт в одной и той же очерёдности.
Всё начиналось с прикола, но уже дело принципа.
В JS почти не разбираюсь (во фронте вообще), читать кое-как и то как дело доходит до сугубо веб прибамбасов приходится гуглить.
ВОПРОС: где сие может кэшироваться?? Как найти? Я так понимаю, кэшируется именно где-то в JS, не через php и не в базе (там есть где-то build_datastore('smiliecache', '', 1); но я уже закомментил, в базе (datastore) smiliecache более не возникает).
Есть template по названию "editor_clientscript", но там всё закомментировано, и ссылка на clientscript/vbulletin_textedit.js но там я мало что понял....
В общем, если кто знает или не лень посмотреть, буду благодарен!