Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб webMCR 2.4

редактор этот кособокий убирать надо. Поставили бы тот, который на первых версиях был.
Только хтмл, только хардкор,
Ну или BB коды.



:eek:
С настройками групп тоже беда.
1. Варнинг, который не пропадает никогда.
2. Параметры группы не меняются.
Посмотреть вложение 9524


Из-за этого редактора мне приходится добавлять новости через БД. Мне конечно не так сложно, но нужно же исправлять, для удобства..

Давай ты установишь себе денвер и на нем уже запустишь свой WebMCR с сайта. Тогда и посмотрим проблема в движке или хостинге.
 
Давай ты установишь себе денвер и на нем уже запустишь свой WebMCR с сайта. Тогда и посмотрим проблема в движке или хостинге.

В ****у Денвер.
Я не на одном хосте испробовал webmcr, везде одни и те же проблемы.
 
Я не на одном хосте испробовал webmcr, везде одни и те же проблемы.
Ну так предоставь площадку для тестов, если уверен, что дело не в кавычках. Проблему повторить не удалось.

Параметры группы не меняются.
Версия была скачана неделю назад? см. сообщение

редактор этот кособокий убирать надо
В редакторе есть функция вывода исходного кода как и раньше. Но можно удалить редактор - style/news/news_add.html - удалить 2 строчки tinymce

магические кавычки - выключены. php нормальной версии.
слишком поверхностный ответ. Можно номер версии, мб адрес хостера.
 
@martyanov12, у тебя что, не получилось привязать Сашка к WebMCR?, ты серьезно?

Нет. Связать худо-бедно у меня вышло. Только есть одно "но". У меня основная CMS - xenForo, и мне надо чтобы remember_key в таблице паролей xenForo сошелся со сгенерированным лаунчером кодом. Вроде видит, а шифрует как-то не так.
В xenForo я полагаю SHA1+SHA256+SALT, только вот черт его знает...


UPDATED.
Все оказалось проще. Фикс кривой, поставил основные файлы (они уже настроены были).
 
Поставил новую версию и задался вопросом: "Где менять меню сверху? Раньше в индексе все было, а сейчас где?" Изрыл все что можно, но не нашел...
 
Поставил новую версию и задался вопросом: "Где менять меню сверху? Раньше в индексе все было, а сейчас где?" Изрыл все что можно, но не нашел...

instruments/menu_items.php
 
Ну так предоставь площадку для тестов, если уверен, что дело не в кавычках. Проблему повторить не удалось.

Версия была скачана неделю назад? см. сообщение

В редакторе есть функция вывода исходного кода как и раньше. Но можно удалить редактор - style/news/news_add.html - удалить 2 строчки tinymce

слишком поверхностный ответ. Можно номер версии, мб адрес хостера.

Благодарю. Решил все проблемы.
Попробуй добавить в .htacess
Код:
php_flag magic_quotes_gpc Off

помогло.
 
До этого стояла WEBMCR 2.1, перешел на 2.15, но есть одна проблема... Регистрируюсь - Регистрация завершена Подтвердите ваш почтовый адрес, чтобы разблокировать все действия с аккаунтом - подтвердил, а зайти не могу, пишет Пользователь с таким именем или e-mail'ом не существует
 
тема на 155 страниц
На днях основной теме исполнился год, время летит :)

Рад, что многим проект пригодился за этот год. Всем добра.

@seand, см. здесь . При переходе на новую версию старый конфиг был удален?
 
Решил проблему, действительно конфиг)
Осталась еще одна, ссылки в верхней панели не рабочие, .ru/go/control - 404
 
NC22, кстати используй этот код в своем редакторе под новости, и все будет лучше оформлены новости чем городить 10001 и 1 тег <p> в каждое новое предложение.
PHP:
Код выполнен в виде одного небольшого класса2, выровненный HTML можно получить при помощи нескольких строк:
 
$align = new alignedXHTML;
$align->SPACER = "  "; // устанавливаем отступ по два пробела
$align->SKIPTAGS = array('a', 'img', 'span', 'sup'); // эти теги трогать не будем
// допустим, ранее сформированный HTML-код хранится в переменной $html
$aligned_html = $align->parse($html); // получили выровненный HTML
Класс будет правильно работать при соблюдении следующих условий:
 
количество открывающих тегов равно количеству закрывающих (т.е. код корректный)
одиночный тег всегда имеет слэш прямо перед закрывающей скобкой (<br/> или <br />, но не <br>)
Последнее требование является частью стандарта XHTML, поэтому в итоге класс получил название alignedXHTML.
 
Основным недостатком рассматриваемого способа является его сравнительно низкое быстродействие: обработка 100 Кб HTML-кода на сервере, обслуживающем webew.ru, занимает порядка 0.05 сек. Видимо, упирается здесь всё в низкую производительность PHP (сам код подвергался достаточно тщательной оптимизации), и тут уж ничего не поделаешь3.
 
Далее приводится непосредственно сам код.
 
class alignedXHTML
    {
    public $SPACER;
    public $OFFSET;
    public $SKIPTAGS;
    function parse($xhtml)
        {
        if (is_null($this->SPACER)) {$this->SPACER = "\t"; }
        if (is_null($this->OFFSET)) {$this->OFFSET = 0; }
        if (is_null($this->SKIPTAGS)) {
            $this->SKIPTAGS = array('a', 'span', 'img', 'sup', 'sub');
            }
        /*
        Теги <textarea>, <pre> и <script> - особенные, и с ними
        придется попотеть.
        Нужно защитить содержимое этих тегов от вмешательства
        при выравнивании: убрать на время, во-первых, переводы строки,
        во-вторых, HTML-теги, которые могут встретиться внутри
        строковых переменных в скриптах
        (точнее, не сами теги, а открывающие и закрывающие скобки).
        */
        $xhtml = str_replace(array("\x01", "\x02", "\x03"), '', $xhtml);
        $xhtml = preg_replace_callback(
            '/
            (<(textarea|script|pre)(?:[^>"\']*|"[^"]*"|\'[^\']*\')*>)
            (.*?)
            (<\/\2>)
            /six',
            // модификатор 's' не забываем: точка тут должна совпадать
            // и с символом новой строки; модификатор 'x' позволяет добавлять в шаблон
            // необрабатываемые пробелы и переводы строки, чтобы он лучше читался
            create_function(
                '$matches',
                '$tagbody = $matches[3];
                $tagbody = str_replace("\n", "\x01", $tagbody);
                $tagbody = str_replace("<", "\x02", $tagbody);
                $tagbody = str_replace(">", "\x03", $tagbody);
                return $matches[1] . $tagbody . $matches[4];'
                ),
            $xhtml);
       
        // регулярное выражение для HTML-тега
        // (модификатор s не нужен, т.к. точки в выражении нет)
        $tagpattern = '/<(\/?)(\w+)(?:[^>"\']*|"[^"]*"|\'[^\']*\')*>/';
       
        // убираем переводы строки внутри тегов (заменяем на пробелы)
        $xhtml = preg_replace_callback(
            $tagpattern,
            create_function(
                '$matches',
                'return str_replace("\n", " ", $matches[0]);'
                ),
            $xhtml);
       
        // теперь обрабатыавем XHTML-код по одной строке
        // (PHP это не умеет, поэтому пришлось вручную)
        $start = 0;
        $final_xhtml = '';
        do
            {
            $end = strpos($xhtml, "\n", $start);
            $line = ($end !== FALSE)
                ? substr($xhtml, $start, $end - ($start - 1) )
                : substr($xhtml, $start);
            $line = ltrim($line); // убираем ведущие пробелы, чтоб не мешали выравнивать
            $final_xhtml .=
                str_repeat($this->SPACER, $this->OFFSET) .
                preg_replace_callback(
                    $tagpattern,
                    array($this, 'alignXHTMLtags'),
                    $line);
            $start = $end + 1;
            }
        while ($end !== FALSE);
       
        // убираем пустые строки
        $final_xhtml = preg_replace('/\n\s*(?=\n)/m', '', $final_xhtml);
       
        // возвращаем обратно содержимое <textarea>, <pre> и <script>
        $final_xhtml = str_replace("\x01", "\n", $final_xhtml);
        $final_xhtml = str_replace("\x02", "<", $final_xhtml);
        $final_xhtml = str_replace("\x03", ">", $final_xhtml);
       
        return $final_xhtml;
        }
       
    function alignXHTMLtags($matches)
        {
        $tag = $matches[0];
        $tagname = $matches[2];
        if (in_array($tagname, $this->SKIPTAGS)) return $tag;
        $opening = FALSE;
        if ($matches[1]) { $this->OFFSET -= 1;  } // тег является закрывающим
        elseif (substr($tag, -2, 1) == '/') { ; } // тег является одиночным
        else { $opening = TRUE; } // если тег не является ни одиночным, ни закрывающим, значит, он открывающий
        if ($tagname == 'textarea' OR $tagname == 'pre' OR $tagname == 'script')
            { // эти теги вообще не трогаем, просто перенесем их
            // полностью (со всем содержимым) на новую строку
            if ($opening) { $replacement = "\n" . $tag; }
            else $replacement = $tag . "\n";
            }
        else
            {
            $replacement = "\n"
                . str_repeat($this->SPACER, $this->OFFSET) . $tag . "\n"
                . str_repeat($this->SPACER, $this->OFFSET + 1);
            }
        if ($opening) { $this->OFFSET += 1; }
        return $replacement;
        }
    }
1. Это касается случая, когда внутри тегов <textarea> имеются переводы строки. Если при обработке кода никак их не защитить, то в содержимое тега добавятся символы, используемые для выравнивания кода, что приведет к искажению данных (по этой же причине нельзя и просто отмахнуться от переводов строки, заменив их на пробелы — для этого все манипуляции с непечатаемыми символами).
С тегами <pre> и <script> ситуация еще сложнее: в их содержимом помимо переводов строки могут встретиться еще и HTML-теги, которые будут выравниваться наряду с остальным HTML-кодом, если это специально не предотвратить (например, заменив скобки тегов на что-нибудь на время выравнивания, а потом вернуть их обратно).
Эта проблема также решается с помощью непечатаемых символов.⇑
 
2. Писать через классы пришлось из-за того, что в callback-функцию, вызываемую в preg_replace_callback(), невозможно нормальным способом передать никакие аргументы, кроме собственно массива совпадений, и уж тем более никак нельзя получить их обратно. ⇑
 
3. Из этих 0.05 сек 60% составляет непосредственно выравнивание тегов, 35% — замена переводов строки на пробелы внутри тегов и около 5% — удаление пустых строк.
Если в коде встречаются <textarea>, <pre> и <script>, время работы возрастает еще на несколько процентов.
Работу кода можно ускорить почти в три раза, если использовать для внутренности тегов выражения /<(\/?)(\w+)(?:[^>"\']*|"[^"]*"|\'[^\']*\')*>/ более «грязное» — /<(\/?)(\w+)[^>]*>/. Дополнительный набор альтернатив требуется для случая, когда внутри одинарных или двойных кавычек в теге встретится закрывающая скоба (например, <img alt="3 > 2 - верно!">). В реальной жизни так практически никогда не бывает, и те, кто готов на это положиться, могут использовать второе выражение вместо первого. ⇑
 
@никио, Учту, но так ли нужна в данном случае логика на стороне сервера? Часть важных настроек TinyMCE тоже вынесу.
Абзацы генерируются потому что TinyMCE так настроен. Сейчас для переноса строки можно использовать shift+enter, либо в index.php в функции LoadTinyMCE добавить по аналогии $tmce .= ' force_br_newlines : true,';
На счет выравнивания не осведомлен, но думаю оно предусмотрено.
 
У меня возникла проблема с Iconomy. На сайте пишет:
Код:
<b>Warning</b>:  mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>****/instruments/user.class.php</b> on line <b>236</b><br />
Потом поковырялся в логе и нашел там такое:
Код:
< SQLError: [SELECT `balance` FROM `1` WHERE `username`='demo']
Как я понял, сейчас используется таблица "1". Кто знает, как это можно исправить?
 

Поделиться этой страницей

Назад
Верх