форум vBSupport.ru > vBulletin > vBulletin 4.2.x > Вопросы по vBulletin 4.2.x
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
taravasya
Знаток
 
taravasya's Avatar
Question аякс парсинг ббкода. Это возможно?
1

День добрый!
Возникла необходимость добавить ббкоды для подсветки синтаксиса нескольких экзотичных программерских-языков.
Естественно, написать свой обработчик для подсветки, мне не по силам. Возникла идея использовать чужие библиотеки. Остановил свой выбор на GeSHi http://qbnz.com/highlighter/
Порывшись по тырнету, посмыкав тут и там коды(оказалось я не первый такой умник ), наваял вот такой продукт:
http://1drv.ms/1LeRqDv
-----------------------------
Сам по себе ббкод работает нормально. Но...
GeSHi, позволяет генерировать номера строк в выводимом результате, и это очень полезно для нас, так как при разборе кода, можно ссылаться на эти номера. Однако, если понадобиться скопировать код или его кусок, то тут эти номера - очень не кстати. Избавляться от них довольно муторно и не удобно.
Поэтому возникла необходимость избавляться от этих номеров и желательно "на лету".
Можно конечно добавить в юзерцп опцию вкл/выкл номеров строк или сделать два ббкода для каждого языка(с параметром вкл номера строк). И если последнее, более менее лаконичное решение, а первое более грамоздкое, то оба они всё-равно потребуют перезагрузки страницы. Ну и тот кто захочет скопировать код, не сможет изменить параметр в чужом сообщении.
Вот я и задался вопросом, а вообще реально ли сделать так, что-бы можно было изменять отображение выводимого ббкодом куска на лету?
Рыть начал в сторону ajax-а, но пока без особых успехов. Столкнулся с проблемой полного непонимания, того как можно сторонним php скриптом, вмешаться в содержимое сообщения? Так сказать, правильно сформированной цепочке классов, благодаря которой это станет возможным.

Что я предпринял?
На хуке bbcode_create, я добавил функцию из класса geshi:
PHP Code:
$geshi->set_header_content('<script type="text/javascript" src="/geshi/scripts/geshi.js"></script><a href="#" onclick="loadXMLDoc()">click to call function</a>'); 
Эта функция в div-е хидера вставляет html код из параметра.
Вот содержимое js который я впихнул в хидер:
HTML Code:
function loadXMLDoc()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
        xmlhttp = new XMLHttpRequest();
    }
    else
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            // do something if the page loaded successfully
        }
    }
    xmlhttp.open("GET","ajax_geshi.php",true);
    xmlhttp.send();
}
Вот содержимое файла ajax_geshi.php(точнее одна из его вариаций):
PHP Code:
<?php
require_once('global.php');
function 
call_me(){
    
$geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
}
call_me();
?>
В ответ вполне резонно получаю:
PHP Code:
PHP Fatal error:  Call to a member function enable_line_numbers() on a non-object in myroot\-maint-\ajax_geshi.php on line 4 
Возможно ли это побороть, или я вообще НЕ на верном пути?

Last edited by taravasya : 06-17-2015 at 01:28 AM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by taravasya View Post
PHP Fatal error:
а где инициализация объекта в коде файла?
==
а вообще подобное уже есть
посмотрите любой пост на саппорте с вложением файла в любом из текстовых форматов: txt, xml, js, php, css
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
а где инициализация объекта в коде файла?
Так вот с этим и проблема..

Quote:
Originally Posted by taravasya View Post
Столкнулся с проблемой полного непонимания, того как можно сторонним php скриптом, вмешаться в содержимое сообщения? Так сказать, правильно сформированной цепочке классов, благодаря которой это станет возможным.
------------------------------

Quote:
Originally Posted by kerk View Post
посмотрите любой пост на саппорте
В смысле в дебаге(F12)?
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by taravasya View Post
В смысле в дебаге(F12)?
нет
пост где есть вложение
но не в зип/рар, а текстовый файл
или просто кликните на кнопку в любой цитате
 
 
kerk
k0t
 
kerk's Avatar
Default
1

что же касается данных, передаваемых через яваскрипт из документа в пхп скрипт, то наверное так:
Code:
<span onclick="return myfn($post[postid]);">Click</span>
т.е. в аргументе функции передавать ID поста (или аттача, если нужно спасить содержимое вложения текстового файла)
+ ID блока который нужно распарсить, в котором находится код ббкода
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
просто кликните на кнопку в любой цитате
A! В том смысле, что можно создать новое всплывающее окно, в котором запарсить текст с другими параметрами?
 
 
kerk
k0t
 
kerk's Avatar
Default
1

инициализация объекта
PHP Code:
require_once('/path/to/geshi_class.php');
$geshi = new Geshi();
$geshi->bla_bla(BLA_BLA); 
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by taravasya View Post
новое всплывающее окно, в котором запарсить текст с другими параметрами?
ну да, можно и так
 
 
taravasya
Знаток
 
taravasya's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
+ ID блока
div блока?
Quote:
Originally Posted by kerk View Post
ну да, можно и так
Всё-таки хотелось бы менять его прямо в теле сообщения. Особенно если будет большой кусок кода, всплывающее окошко будет очень не удобным...

Спасибо за наводки. Буду грызть!)))
 
 
kerk
k0t
 
kerk's Avatar
Default
1

Quote:
Originally Posted by taravasya View Post
хотелось бы менять его прямо в теле сообщения
так меняйте =)
для этого все есть:
ID блока DIV с исходным текстом + ID сообщения
Code:
function myfn(postid)
{
    div = fetch_object('div_post_' + postid);
    if(div)
    {
        // AJAX Request code here
        var resp = response.ajax;
        div.innerHTML = resp;
    }
}
и, кстати, не нужно изобретать велосипед со своим кодом
достаточно подключить встроенную библиотеку YUI, там все уже есть
примеры кода отправки и получения данных на аяксе есть в файлах воблы
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 05:40 AM.


Powered by vBulletin® Version Alan Edition
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.