Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2007-03-15 11:11:32

niikto
Гость

mini portal и аттачи у Dexus-сборки

Дело в том что сборка Dexus рассчитана на то. что она будет лежать в папке /forum/ а не просто в корне сайта

Там есть PUN_ROOT и FORUM_ROOT
что где можно изменить, чтобы переместить (но тогда и придется index.php переименовывать в forum.php - а я бы не хотел...


сперва попытался сделать по этому руководству: http://punbb.awardspace.us/doku.php?id=mod:portal

форум у меня в http://ru55.ru/forum сам сайт соответственно надо в http://ru55.ru

Все супер, сделал там index.php, засунул в него текст (это на локальной машине). Добавил вывод новостей. указал скакого форума брать темы - для новостей - вроде всё заработало. Но потом я добавил в тему картинку, и она в ru55.ru/forum/тема такаято - выводится, а на индексе портала - нет - потому что у нее свойства не:

http://ru55.ru/forum/attach.php=такаято картинка, а
http://ru55.ru/attach.php=такаято картинка


это видать так инклудится (надо же.. вроде не программер, но вы уже научили что это)

поэтому вопрос - как мне не сильно ломая форум сделать:

1) Либо чтобы так всё и осталовь, тока пути както чтобы правильно инклудились

2) ну если я решусь перенести сам форум из директории /forum/ в корень - то мало ведь переназвать index.pgp в forum.php - необходимо ещё и корень самого форума в двиге сменить - на корневой сайт (я так понял это и PUN_ROOT и FORUM_ROOT - как это правильно сделать ? - в каком(каих) файлах - и где?

(второй вариант вопроса адресован непосредственно Dexus'у

#2 2007-03-15 14:04:20

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
У тебя какой o_base_url? Если не http://ru55.ru/forum то поправь на такой.

#3 2007-03-15 15:34:45

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

именно такой он и был

47 строка в config cache

  'o_base_url' => 'http://ru55.ru/forum',

Редактировался niikto (2007-03-15 15:35:25)

#4 2007-03-15 23:14:32

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

"attach.php?" вызывается только в :
parser.php

    global $FORMAIL;
    global $pun_config;
    $base= $pun_config['o_base_url'];
....
        else if (strpos($url, 'id:') ===0)
            $full_url = (isset($FORMAIL)&&$FORMAIL?$base.'/':'').'attach.php?id='.substr($full_url,3);

и

            $text = preg_replace('#\[imgid=([0-9]*)\]#e', 'handle_img_tag(\'attach.php?id=$1\')', $text);

второе - ссылка на картинку. и ссылка эта относительная (относительно текущего адреса).

#5 2007-03-15 23:46:59

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

вот что у мя в индекс пхп тогда:

<?php
 
define('PUN_ROOT', './forum/');
define('PUN_QUIET_VISIT', 1);
require PUN_ROOT.'include/common.php';
 
$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/parser.php';
 
function pun_news($fid='', $show=15, $truncate=1)
{
    global $lang_common, $db, $pun_config, $db_prefix;
    $max_subject_length = 30;
    $show_max_topics = 50;
    $fid = intval($fid);
    $order_by = 't.posted';
    $forum_sql = '';
    // Was a forum ID supplied?
    if ( $fid ) $forum_sql = 'f.id='.$fid.' AND ';
    $show = intval($show);
    if ($show < 1 || $show > $show_max_topics)
    $show = 15;
    $saveddate="";
    // Fetch $show topics
    $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name FROM '.$db_prefix.'topics AS t INNER JOIN '.$db_prefix.'forums AS f ON t.forum_id=f.id WHERE f.id='.$fid.' AND t.moved_to IS NULL ORDER BY '.$order_by.' DESC') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
    $show_count = 0;
    if ( !$db->num_rows($result) ) return $output;
    while ( ($show_count < $show) && ($cur_topic = $db->fetch_assoc($result)) ) {
        $temp = '';
        if ($pun_config['o_censoring'] == '1')
            $cur_topic['subject'] = censor_words($cur_topic['subject']);
        if (pun_strlen($cur_topic['subject']) > $max_subject_length)
            $subject_truncated = trim(substr($cur_topic['subject'], 0, ($max_subject_length-5))).' ...';
        else
            $subject_truncated = $cur_topic['subject'];
        $newsheading = '<a href="'.PUN_ROOT.'topic.php?id='.$cur_topic['id'].'&amp;action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.pun_htmlspecialchars($subject_truncated).'</a> - <em>Posted by '.$cur_topic['poster'].' at '.date('h:i A', $cur_topic['posted']).'</em><br>';
        // Group posts by date    
        $thisdate = date('l, d F Y', $cur_topic['posted']);
        if ($thisdate != $saveddate) 
 
        {
            if ($saveddate)
            {
                $temp .= "</div></div>";
            }
            $temp .= '<div class="block"><h2><span>'.$thisdate.'</span></h2><div class="box"><div class="inbox"><p>';
            $saveddate = $thisdate;
        }
        else {
            $temp .= '<div class="inbox"><p>';
        }
        $temp .= $newsheading.'</p><p>';
        $id = $cur_topic['id'];
        $msg = $db->query('SELECT id, poster, poster_id, poster_ip, poster_email, message, posted, edited, edited_by FROM '.$db_prefix.'posts WHERE topic_id='.$id.' LIMIT 1') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
            if ( !$db->num_rows($msg) ) continue;
        $cur_post = $db->fetch_assoc($msg);
        // Display first paragraph only (comment out next four lines to turn off)
        if ($truncate == 1)
        {
        $paragraph = preg_split("/s*n+/", $cur_post['message']);
            if (isset($paragraph[1])) {
                $cur_post['message'] = $paragraph[0] . "...";
            }
        }
        $cur_post['message'] = parse_message($cur_post['message'], 0);
        $temp .= $cur_post['message'];
        $temp .= "</p></div>";
        if (isset($output)) {
            $output .= $temp;
        }
        else {
            $output = $temp;
        }
        ++$show_count;
    } // end of while
    $output .= "</div></div>";
    return $output;
}
?>
 
        <div class="block">
            <h2><span>Welcome</span></h2>
            <div class="box">
                <div class="inbox">
                    <p>
                    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent augue. Nulla facilisi. Fusce bibendum accumsan erat. Quisque sollicitudin mattis neque. Sed dapibus. Integer a lectus eu sem consequat pellentesque. Morbi rhoncus nulla. Duis adipiscing interdum velit. Fusce ante. Ut vitae enim sit amet magna sodales hendrerit. In sed tortor at sapien convallis eleifend. Proin mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut metus. Cras ac arcu et arcu porttitor blandit. Nam vitae lectus eget mauris sollicitudin placerat. Suspendisse vestibulum. Donec varius libero. Duis velit tellus, euismod vitae, consequat sed, consectetuer ut, purus.
                    </p>
                    <p>
                    Praesent viverra venenatis magna. Etiam in dolor. Ut in justo ac nibh malesuada cursus. Duis urna arcu, aliquam vitae, consequat nec, tincidunt non, mi. Nunc lobortis. Nunc pharetra. Sed porttitor. Maecenas turpis tortor, blandit nec, dignissim in, porttitor eu, odio. In hac habitasse platea dictumst. Suspendisse augue odio, ornare a, elementum ac, tincidunt varius, orci. Nulla libero ante, hendrerit ac, consectetuer eu, sollicitudin et, eros. Duis sapien. Suspendisse ornare enim sit amet dui. Donec ullamcorper diam.
                    </p>
                </div>
            </div>
        </div>
<?php
echo pun_news(27, 5, 0);
 
require PUN_ROOT.'footer.php';

Добавлено спустя       16 секунд:
может что в нём сменить?

#6 2007-03-16 06:15:43

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
Вот уж не знаю. Индексы от минипорталов и минипорталы я вообще никогда не трогал и не рассматривал их логику. Проблема вроде в форуме, или как?

Просмотри исходники страницы. Когда я на своем форуме смотрю, там в тэге <img src="attach.php?id=xxx> при том что адресная строка http://..../forum/topic.php?id=xxx
Т.е. в сумме получается ссылка на http://..../forum/attach.php?id=xxx

Редактировался Dexus (2007-03-16 06:17:13)

#7 2007-03-16 09:57:32

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

Dexus
ещё 1 вопрос по твоей сборке
связан с цитированием и, видимо UTF:

посмотри здесь:
http://ru55.ru/forum/topic.php?id=898

ЕСЛИ русскоязычный ник - то цитирование не работает в эксплорере! - тоесть я выделяю в сообщении англояз.ника - всё путём, а если ник русский - не появляется quote и в форме нажимаю quote - не вставляется ничего!!!

а в опере - работает, но тока первая буква правильная., а вместо следующих 2-х карячка:
вместо вас> вставляется:

В�> - А корень из мин

тоесть это не парсер а ява-фунция уже дает такую карячку - уже в форму ответа так попадает

это наверное изза mb_ функции какой нить?

Добавлено спустя     12 минут   32 секунды:
нажать на ЦИТИРОВАТЬ слева от сообщения - тоже не работает в эксплорере. внизу появляется - ошибка. на неё нажимаю - мне она говорит:

данная страница содержит ошибки, бла-бла-ьла..

Строка: 1
Символ: 17
Ошибка: предполагается наличие ")"
Код: 0
URL-адрес: http hmm/ru55.ru/forum/topic.php?id=898

но в исходном тексте нет 17 символа в 1-й строке
в topic.php - тоже
в quotes.js - тоже

Добавлено спустя     13 минут   10 секунд:
в опере тоже работает - но тоже корячки такие же перед >

#8 2007-03-16 17:21:05

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
Мой форум построен на 1251, и все мои проверки и подгонки были для 1251. Я не использовал (и в общем не намеревался использовать) UTF8, и ничего не смогу подсказать по поводу работы джава-скриптов с UTF8.
Джаваскрипт в данном случае вообще очень легко разрушить даже минимальными вмешательствами. Мне огромного труда стоило заставить его работать более-менее корректно и в опере и в мозилле и в эксплорере (на эти 3 браузера и был расчет и вся проверка).
И, кстати, у меня в форуме нет никакой функции "mb_". Это видимо какая-то уже UTFный навесок...

P.S.: Я долго пытался врубиться почему у меня некоторые функции джаваскрипта не работали. Пока не понял что это связано с тем какой documenttype исползьуется. В XHTML мои джава-скрипты не работают толком.
P.P.S.: По твоей ссылке где указана ошибка в 17:1 щелкнул - все нормально процитировалось. Эксплорер 6. Правда символ ошибки внизу все равно горит. Но я не знаю по какому он поводу. Опера и ФФ у меня давно не стоят.

Редактировался Dexus (2007-03-16 17:24:41)

#9 2007-03-17 09:23:40

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

нет конечно - я про сто и говорю - что может какую нить string заменить на mb_string?
сейчас то таких функций там нету - вот я и говорю - что ненаю что там изменить...


P.S: ты щелакал в сообщении пользователя с ником РУССКИМИ символами? - потому что если ник английский - всё путем, а если русский - в експлорере 6 (WinXP SP2) - не вставляет ничего в ответ... sad

#10 2007-03-17 10:20:41

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
Да, русские ники все портачат.
Вот такая галиматья получается в джава-коде на странице.
<a href="javascript:qmes('mt2','Р’Р','Вася');">

Ты знаешь как джава работает с многобайтовыми текстами? Я - не знаю smile

Добавлено спустя     5 минут   20 секунд:
Может быть вот этот скрипт сможет помочь. Не знаю. Я никогда не собирался использовать utf8 и для меня этой проблемы не существует.

/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/
var Utf8 = {
    // public method for url encoding
    encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    },
    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}

Добавлено спустя     9 минут   41 секунду:
Для вас самый простой способ заставить работать скрипт нормально - в транслитерировании ников в латинские.
На самом деле у меня была идея удлинить "короткий ник" с 3х символов до 5ти и дать возможность его менять в профиле.
А то сейчас берется тупо 3 первых буквы от ника.

Добавлено спустя     12 минут   11 секунд:

niikto пишет:

нет конечно - я про сто и говорю - что может какую нить string заменить на mb_string?
сейчас то таких функций там нету - вот я и говорю - что ненаю что там изменить...

Где нет таких функций и где ты хочешь заменить?
За исключением джава-скрипта с русскими никами вроде все нормально работает.

#11 2007-03-17 15:44:56

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

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

мне бы хватило и тупо 3 символа.

а как бы транслитерировать их?? подскажи пожалуйста? ато боюсь словамь яваскрипт!

Добавлено спустя       43 секунды:
млм куда засунуть тот кусок кода - что в твоем ответе?

#12 2007-03-17 16:40:13

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
Ты не сможешь засунуть mb_ в джаваскрипт, потому что это функция server-side, php-ная.
Тут только трахаться с джаваскриптом, и встраивать в него декодер долбаного utf8.

А транслит ников можно делать и в php. Но русские ники тогда будут обозначаться латинскими один фиг. Хе-хе.

$l1 = array(
"А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П",
"Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я",
"а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п",
"р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");

$l2 = array(
"A","B","V","G","D","E","YO","ZH","Z","I","Y","K","L","M","N","O","P",
"R","S","T","U","F","H","C","CH","SH","SCH","~","Y","'","E","YU","YA",
"a","b","v","g","d","e","yo","zh","z","i","y","k","l","m","n","o","p",
"r","s","t","u","f","h","c","ch","sh","sch","~","y","'","e","yu","ya");
$newname = str_replace($l1,$l2,$name);

Вот это дело применить к именам юзверей. Правда если они в базе хранятся как utf8, то я уже ничего не смогу присоветовать.
Юзайте, граждане, cp1251 - нервишки целее будут.

Редактировался Dexus (2007-03-17 16:41:31)

#13 2007-03-17 19:13:40

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

хм... тоесть ники вообще на форуме станут аглицкими тока? - не. это не пойдёт..
а та функция что ты раньше привел - она же яваскриптовая? - вот её куда в твою сборку посоветуешь вставить? - тогда я так понял "долбаный утф" в цитате зарботает - и она будет вставлять по 3 символа и просто работать в эксплорере тоже?

хм.. 1251 мне не нравится некоторыми ограничениями.. которые считаю непримелеимыми.

#14 2007-03-17 21:01:34

artoodetoo
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto, ошибка закралась где-то раньше, на этапе формирования страницы! javascript невиноват smile
у тебя кое-где незакрытые строковые константы встречаются, вот:
onmouseup="onUp('ВW,2,'Вася')"
IE сигналит об ошибках - обращай на них внимание! видимо, как следствие, что-то сбоит потом.
а вообще - заглядывай в код страницы в браузере.

Добавлено спустя     20 минут   1 секунду:
Dexus, javascript работает с UTF на ура! та строчка, что ты привел очень похожа на то как нотепад показывает utf-8 smile то есть текст правильный, а инструмент для просмотра неправильный.

легкосовершаемыеичастоповторяемые ашипки:
- в PHP готовится текст для строковых констант js, строчку забыли квотировать. на выходе фигня, которую невозможно выполнить
- забыли, что есть такая функция mb_substr... строчка порезалась на полубукве...
- получив ошибку сделали неправильные выводы и...
- ...с какого-то болта решили, что для js нужно перекодировать данные.

JS ПО-БАРАБАНУ ВАША КОДИРОВКА. ЧТО ДАЕТЕ - С ТЕМ И РАБОТАЕТ. СМОТРИТЕ ЧТО ДАЕТЕ!

#15 2007-03-17 22:24:55

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

я кстате об этом же стал думать, когда прочитал твой FAQ по UTF - ведь я utf-фиксы от hcs тока в поиск и к lang/russin/common.php всавлял..
а функции строковые на mb_ - аналоги не менял нигде..
правда некоторых твоих рекомендаций и ы hcs-сборке нету..
это меня несколько смущает..

Добавлено спустя   1 час   30 минут   11 секунд:
хаха - заменил все strlen на mbstrlen
strtolower на mb_strtolower
strtoupper на mb_strtoupper

не помогло.

нашёл еще 1 глюк: такая же карячка вылазит там, где имя темы - в общем списке вложений, вместо автомоб... - Автомоб�...
- но этот косяк я догадался как исправить - вопервых везде mb_strlen, в потом - в файле attach_list.php я заменил

define ('STRLEN',30);
на
define ('STRLEN',40);

потому что 30 делится на 15, а там задано STRLEN/2 - тоесть 15 символов - в утф-е получается в 2 раза меньше - 7,5 - а это значит что последний символ тока половинка осталась - вот и корячка.

нашел переменную $shortname в 3-х файлах - она там == 3 сравнивается с тройкой короче... это какраз похоже на 3 первых буквы..

вот строки 435-444 topic.php:

    $longname=$cur_post['username'];
    $shortname=mb_substr(str_replace(' ','',$longname),0,3);
    $shortname='';
    for ($i=0;$i<mb_strlen($longname);$i++)
    {
        $c=$longname[$i];
        if ($c>='0'&&$c<='9' || $c>='a'&&$c<='z' || $c>='A'&&$c<='Z' || $c>=chr(128))
        $shortname.=$c;
        if (mb_strlen($shortname)==3) break;
    }

я и substr заменил на mb_substr
но ничего не меняется..

Добавлено спустя   1 час   38 минут   55 секунд:
смотрите:
в файле post.php немного иная 2-я строка и когда я в иэксплорере нажимаю ответить, и там выделяю в посте пользователя "Макс" - вставляется ">" - тоесть вообще без руских букв, а когда выделяю в посте пользователя "Андрюха" - не появляется ничего - и нажимать чтоб вставить некуда, и сбоку бесполезно жать "цитировать", и в форме ответа - тоже кнопка "цитировать выделенное" не работает - не вставлется ничего и всё тут!

заменил в post.php на это:

        if ($c>='0'&&$c<='9' || $c>='a'&&$c<='z' || $c>='A'&&$c<='Z' || $c>=chr(128))
//            if ($c>='0'&&$c<='9' || $c>='a'&&$c<='z' || $c>='A'&&$c<='Z' || $c>='а'&&$c<='я' || $c>='А'&&$c<='Я')

тоесть нет преобразования русских букв - теперь когда выделяешь в посте юзера "Макс" - вставляются "Ма>" - не 3 а 2... "Андрюха" - так и не цитируется...
вобщем косяки..

что посоветуете?

#16 2007-03-18 00:19:15

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

насчет опечаток...
а где же их искать?
я открываю исходник страницы, там експлорер говорит что не хватает закрывающей круглой скобки в строке № 159 символ 14

но эта строка такая:

<div class="box rowodd" onMouseDown="onDown(3)" onMouseUp="onUp('РђРЅР',3,'РђРЅРґСЂСЋС…Р°')">

и символ 14 - это b
а где там не хватает ")" ?

в самом topic.php может быть косяк?

я не оставлял там опечаток, специально взял topic.php из тока что распакованой сборки Dexus - изменилось тока название выскакивающего окошка - на аглицкое - не Цитировать выделенное, а стало Quote select - больше я и не менял ничего в этом файле.

ВИДАТЬ 'РђРЅР' - это 2 с половиной символа в уникоде - вот и глючит. Дело в 3-йке. Если б было 4 символа - то щас бы просто 2 добавлялось и не глючило.
Уважаемый Dexus - как это поправить сожно?

Редактировался niikto (2007-03-18 10:57:57)

#17 2007-03-18 10:51:26

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

кстате ещё 1 проблема: - в обычном форуме время создания поста - является и ссылкой на него, а у Dexus -сборки оно просто тект, Очень неудобно - поможите исправить!

#18 2007-03-18 20:50:11

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

нашел временное решение проблемы с цитирования юзеров с рускими именами:

переменную $shortname я нашел в 3-х файлах:

post.php
topic.php
message_list.php

там я везде закомментировал кусок:

        for ($i=0;$i<mb_strlen($longname);$i++)
/*        {
            $c=$longname[$i];
        if ($c>='0'&&$c<='9' || $c>='a'&&$c<='z' || $c>='A'&&$c<='Z' || $c>=chr(128))
//            if ($c>='0'&&$c<='9' || $c>='a'&&$c<='z' || $c>='A'&&$c<='Z' || $c>='╨░'&&$c<='╤П' || $c>='╨Р'&&$c<='╨п')
            $shortname.=$c;
            if (mb_strlen($shortname)==3) break;
        }
*/

тоесть цикл for зачем то оставил.. ну да ладно:

главное: теперь вставляются просто > - если это первое цитирвание, >> - если второе и т.д.
так как имя жирным вставляется перед цитированием - я считаю - так даже лучше! - просто как в почтовых сообщениях!

Добавлено спустя     2 минуты   9 секунд:
(тут приведены обе строки if ($c>='0'&&$c<='9' ||... - потому что в topic.php - одна, а в post.php и message_list.php - другая.


Вопрос к Dexus - а зачем в месадж-лист.пхп - такая штука? - там же нету формы быстрого ответа, а ели жать ответить - не показывается входящее сообщение на которое отвечаешь...
зачем тогда?

#19 2007-03-19 06:23:25

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto пишет:

ВИДАТЬ 'РђРЅР' - это 2 с половиной символа в уникоде - вот и глючит. Дело в 3-йке. Если б было 4 символа - то щас бы просто 2 добавлялось и не глючило.
Уважаемый Dexus - как это поправить сожно?

Я извиняюсь, но в utf8 я вообще ничего посоветовать не могу. Я вообще не шарю в этой кодировке, и в программировании для нее. Я сторонник традиционной cp1251 smile

niikto пишет:

Вопрос к Dexus - а зачем в месадж-лист.пхп - такая штука? - там же нету формы быстрого ответа

Видимо там когда-то была форма для быстрого ответа. Просто убрал по причине ломания дизайна. И не очень корректно убрал, поэтому сейчас проблемы с джаваскриптом. Но они не критичны. В этом разделе джава и не особо нужна.

Редактировался Dexus (2007-03-19 06:23:53)

#20 2007-03-19 10:06:33

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

пользуюсь Opera 9.1 USB, Opera Portable 3.9b Opera AC Portable
во вех трех - проблемы - когда тема длинная-  в форме быстрого ответа - набирать текст ооочень долго - просто жуть - буквы могут вылазить по несколько секунд.

если нажать "ответить" - то этого глюка нету.

проверить можно на http://forum.ru55.ru

мне думается что виной этому - яваскрипт

#21 2007-03-19 20:18:15

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

А опера вообще глючный браузер. Виной этому скорее всего подсчет количества символов в форме. Он с вашей utf8 плохо дружит. Вообще ваш utf8 плохо со всем дружит.

#22 2007-03-20 19:06:54

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

хм. что удивительно - тупняки тока когда смотришь тему. если нажать "ответить" или "редактировать" - то не тупит.. значит дело в чем то ином

#23 2007-03-21 05:20:10

hcs
Гость

Re: mini portal и аттачи у Dexus-сборки

покажите оригинальный ява-скрипт, который исполняется в просмотре темы.

#24 2007-03-21 07:29:48

niikto
Гость

Re: mini portal и аттачи у Dexus-сборки

//2005(c)dexus
var oi=-1,pm='',px=0,py=0,_us='',_us2='',_ms='',_mf=''
function oal(){
_mf=(document.all)?document.all.req_message:document.forms['post']['req_message']
_ms=(document.all)?document.all.subscribe:document.forms['post']['subscribe']
mRe()
if (!(mscs==undefined)) mscs()
}
function ins_txt(op,cl){
_mf.focus()
if (document.selection&&document.selection.createRange){
    sel=document.selection.createRange()
    sel.text=op+sel.text+cl
}else if (_mf.selectionStart||_mf.selectionStart=='0'){
    sp=_mf.selectionStart
    ep=_mf.selectionEnd
    _mf.value=_mf.value.substring(0,sp)+op+_mf.value.substring(sp,ep)+cl+_mf.value.substring(ep,_mf.value.length)
    _mf.selectionStart=_mf.selectionEnd=ep+op.length+cl.length
}else _mf.value+=op+cl
_mf.focus()
}
function foad(m){
_mf.value+=m;_mf.focus()
}
function gQ(i){
t=String(i.innerHTML)
t=t.replace(/[\n\r]/ig,'')
t=t.replace(/<br ?\/?>/ig,'\n')
t=t.replace(/\n?<blockquote><div class=["|']?incqbox["|']?>/ig,'\n')
t=t.replace(/\n?<\/div><\/blockquote>/ig,'\n')
t=t.replace(/\n?<div class=["|']?codebox["|']?>[^\/]*[^<]*[^>]*><pre>/ig,'\01')
t=t.replace(/<\/pre><\/div><\/div><\/div>/ig,'\02')
t=t.replace(/\01[^\02]*\02/ig,'\n{code}\n')
t=t.replace(/\n?<div class=["|']?postimg.?["|']?>/ig,'\n{img}\n')
t=t.replace(/\n?<div class=["|']?qt["|']?>/ig,'\n')
t=t.replace(/<(\/div|\/h4)>/ig,'\n')
t=t.replace(/<(\/?)(b|i|u|sup|sub)>/ig,'[$1$2]')
t=t.replace(/<(\/?)h3>/ig,'[$1title]')
t=t.replace(/\n?<hr *\/?>\n?/ig,'\n[hr]\n')
t=t.replace(/<span style=["|']color:([^;'">]*);?["|']>/ig,'[color=$1]')
t=t.replace(/<span style=["|']display:(.*)<\/span>/ig,'')
t=t.replace(/<\/span>/ig,'[/color]')
t=t.replace(/<\/?[^>]*>/g,'')
t=t.replace(/&gt;/ig,'>')
t=t.replace(/&lt;/ig,'<')
t=t.replace(/&nbsp;/ig,' ')
t=t.replace(/&amp;/ig,'&')
t=t.replace(/&quot;/ig,'"')
t=t.replace(/^\s*/g,'')
t=t.replace(/\s*$/g,'')
return t
}
function qmes(id,us,us2){
t=gQ(document.getElementById(id))
_us=us;_us2=us2
foad(qtm(t));clSl(1)
}
function qtm(tt){
tt=String(tt).replace(/@d@n./g,'@')
ta=String(tt).split('\n');tt=''
for(c=0;c<ta.length;++c){
    t=String(ta[c]).replace(/\s*$/,'')
    RegExp('^( *)(.*)$').test(t)
    m0=RegExp.$1;t=RegExp.$2
    mg=RegExp('^([^> ]{0,3})( *)>([ >]+)(.*)$').test(t)
    with (RegExp){m1=$1;m3=$4;m2=$3.replace(/ /g,'')}
    if(mg!=true&&t.length){if(t!='[hr]')m1=_us+'>';m3=t}
    if(mg==true)m2+='>>'
    mm=m0+m1+m2;u=m3+' ';t=''
    while((o=u.indexOf(' '))!=-1){
        b=u.slice(0,o);u=u.slice(o+1)
        if(b.length>80)tt+=mm+b+'\n';else
        if((t+b).length<=80)t+=' '+b;else{tt+=mm+t+'\n';t='';u=b+' '+u}}
    if(t!='')tt+=mm+t+'\n'
}return '[b]'+_us2+'[/b] ╨┐╨╕╤Б╨░╨╗:\n'+tt
}
function onUp(us,mi,fs){
document.onmousemove=null
_us=us;_us2=fs
if(mi!=oi){clSl(1);return}
t=''
if(window.getSelection)t=window.getSelection()
else if(document.getSelection)t=document.getSelection()
else if(document.selection)t=document.selection.createRange().text
if(t==''){clSl(1);return}
pm=qtm(t);it=document.getElementById('pst')
it.style.display="";it.style.left=px-40;it.style.top=py-25
oi=-1
}
function clSl(a){
if(a&&document.selection)if(document.selection.empty)document.selection.empty()
document.getElementById('pst').style.display="none"
if(a){pm='';_us='';_us2=''}
}
function insQt(a){if (a)foad(pm);clSl(a)}
function onDown(di){oi=di;document.onmousemove=onMove}
function onMove(e){
if(!e) var e=window.event
if(e.pageX||e.pageY){px=e.pageX;py=e.pageY}
else if (e.clientX||e.clientY){px=e.clientX+document.body.scrollLeft;py=e.clientY+document.body.scrollTop}
}
function gCk(n){
pr=n+"="
Sw=document.cookie.indexOf(pr)
if(Sw==-1)return null
Ew=document.cookie.indexOf(";",Sw+pr.length)
if(Ew==-1)Ew=document.cookie.length
return unescape(document.cookie.substring(Sw+pr.length,Ew))
}
function msP(){if (_mf.rows<50){_mf.rows+=4;mSt()}}
function msM(){if (_mf.rows>5){_mf.rows-=4;mSt()}}
function msS(n){_mf.rows=n;mSt()}
function mRe(){
tf=gCk('s2');if(tf!=null){f=tf.split("|")
if(f[3]!=null)_mf.rows=f[3];else _mf.rows=5
if(_ms)_ms.checked=(f[4]=='true'?'1':'')
}}
function mSt() {
tf=gCk('s2');if(tf!=null)f=tf.split("|");else f=new Array()
f[3]=_mf.rows;if(_ms)f[4]=_ms.checked
document.cookie="s2="+f.join("|")+"; expires=Sun, 01-Jan-2040 00:00:00 GMT; path=/;"
}
function addA(a){
if(a>am)return
i0=document.getElementById('ata')
i=document.getElementById('at'+a)
i2=document.getElementById('at'+(a+1))
if(i.innerHTML!=""&&a==1){i0.style.display="none";i.innerHTML=""}else i0.style.display=""
if(!i2)i.innerHTML=('<a href="javascript:ins_txt(\'[i='+a+']\',\'\')">['+a+']</a>: <input type="file" name="att_'+a+'" size="60" onchange="addA('+(a+1)+')" /><div id="at'+(a+1)+'"></div>')
}
function mscs(){document.getElementById("msg_size").innerHTML=_mf.value.length}

Добавлено спустя       25 секунд:
это файл quotes.js

#25 2007-03-21 07:43:56

Dexus
Гость

Re: mini portal и аттачи у Dexus-сборки

niikto
Вставленный тобой джава-скрипт сам по себе вообще никаких тупняков вызвать не может впринципе.
Тупняки возникают когда к формочкам, или каким-то другим контролсам привязывается скрипт. Типа onmouseover или onchange
В общем - тут нужен комплексный анализ всего документа вместе с джаваскриптом и даже стилями. Стили могут очень сильно все тормозить.
А простой, не привязанный ни к чему джаваскрипт вообще ни о чем не скажет.
К тому же это не единственный файл, который прицепляется к странице.

Подвал доски

Под управлением FluxBB. Хостинг Hostens