Fullajax Support - AJAX + AHAH
Сентября 08, 2010, 08:42:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Мини FAQ  (Прочитано 4147 раз)
James
Moderator
*****

Авторитет: 1
Сообщений: 34



Просмотр профиля
« : Февраля 05, 2009, 20:26:52 »

Всем привет, fullajax я пользуюсь давно и по ходу разработки у меня возникали сотни вопросов Улыбающийся и на некоторые из них я нашёл ответы и поделюсь с вами, оформлю как небольшое FAQ:

Q: Только что скачал библиотеку, смотрю на файлики и не знаю что делать. Так что же мне делать?))
В скаченном архиве будет несколько файлов, но вас должны интересовать всего пару файлов fullajax.js и obf/obf.fullajax.js
первый файл служит скорее всего разработчикам в него можно свободно внести изменения, второй более практичен, сжатый, весит в 3 раза меньше 1 версии.
Вот вы определились с файлом. Подключили его к сайту. Теперь нужно определить какие части сайта будут заменяться.
например ваш сайт имеет такую структуру

Код
html:
 
-----
header
-----
-----
main content
-----
-----
footer
-----

по идее шапка и подвал полностью статичны, поэтому динамично менятся будет только основной контент, поэтому нужно определить уникальный id для слоя контента например он будет называться fullAjax и в результате получим

Код
html:
 
-----
header
-----
-----
<div id="fullAjax">main content</div>
-----
-----
footer
-----

Вот наконецто мы определились что будем заменять, теперь передадим параметры скрипту:
Код
javascript:
 
SRAX.Filter.add({id:'fullAjax', url:'/'});
теперь все ссылки которые идут от корня преобразовываются примерно в :ax:fullAjax:/page
но в параметр url вместо / можно передать любой кусок ссылки, например на сайте у вас все ссылки имеют начало
index.php?url=

значит вы смело можете применить такую конструкцию

Код
javascript:
 
SRAX.Filter.add({id:'fullAjax', url:'/index.php?url='});

Помните: по запросу на сервер должна отдаваться только та часть контента которую требуется заменить!

Q: Мой скрипт написан на php и я хочу чтобы мой сайт работал как при системе FullAjax так и без неё, как же мне программно определить используется ли сейчас система FullAjax или нет?
Ответ прост.

Если на вашем хостинге свободно устанавливаются header'ы то подойдёт такое условие:
Код
php:
 
$initFullAjax = isset($_SERVER['HTTP_AJAX_ENGINE']) ? true : false;

Если же у вас не прописывается параметр $_SERVER['HTTP_AJAX_ENGINE'], то можно применить другой приём:
добавить к js коду подключения:
Код
javascript:
 
SRAX.Html.onall('beforerequest', function(ops) {
   var p = ops.options.params;
   ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
});

И если у вас прописан этот код то будет передаваться на все страницы _REQUEST['fullajax'] = 'yes'
и мы можем скомбинировать условие
Код
php:
 
$initFullAjax = (isset($_SERVER['HTTP_AJAX_ENGINE']) OR isset($_REQUEST['fullajax'])) ? true : false;

теперь достаточно в нужном месте создать условие

Код
javascript:
 
if($initFullAjax == true){
   send small content only for fullajax
} else {
   send all content
}

Примечание: Если вы хотите чтобы динамически менялся <title></title> то вместе с контентом для фулла передавайте такой код

Код
html:
 
<head><title>New Title</title></head>

Q: Ссылка мне ненравится, получается она сейчас :/#ax:fullAjax:/ссылка, может можно покороче?
Да можно. просто добавляем к js:
Код
javascript:
 
SRAX.linkEqual[':ax:fullAjax:'] = ':';

где fullAjax ваш id элемент!!!

Q: У меня на сайте есть ссылки на сайты партнёров, но они тоже попадают под правила fullajax'а, как исправить?
Вначало перед определением фильтров SRAX.Filter.add добавляем такой код:
Код
javascript:
 
SRAX.Filter.on('beforewrap', function(ops){
   return !SRAX.isXss(ops.el.href || ops.el.action);
})
теперь парситься ссылки будут только локальные.
P.S.: функция SRAX.isXss - поддерживается не ниже версии SRAX v.1.0.3 b15+

Q: Как можно запретить парсинг определённых ссылок? Например я не хочу чтобы адресс feedback.html был преобразован

Это реализуется несколькоми способами:
1. к ссылке приписываем парметр ax:wrap="0" и получится чтото вроде
Код
html:
 
<a href="feedback.html" title="FeedBack" ax:wrap="0">Our FeedBack</a>
2. Добавить глобальное правило, при котором все ссылки будут преобразованы автоматически. Итак в js код добавляем
Код
javascript:
 
SRAX.Filter.add({url:'feedback.html', type:'nowrap'});
также ссылки можно перечислить
Код
javascript:
 
SRAX. Filter.add({url:['feedback.html', 'index.html', 'files.html'], type:'nowrap'});

Q: Я захотел переделать загрузчик, сейчас он просто показывается и прячется. Но я хочу чтобы он "таскался" за страницей, как это реализовать?
Если даже это не ваш вопрос то всё равно изучите пример, по аналогии можно решить и вашу проблему.
Любую функцию из библиотеки fullajax можно заменить. Для этого там где вы прописали ваши условия работы можно добавить функции. Например сейчас мы будем изменять showLoader - функция отвечает за отображение загрузчика.
Я предоставлю готовый код с некоторыми комментариями

Код
javascript:
 
SRAX.showLoading = function(show, obj){
var s = obj ? obj.style : 0;
if (s)
{
var scrollTop = document.documentElement.scrollTop;
if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
{
clHeight = document.documentElement.clientHeight;
}
else if (document.body && (document.body.clientWidth || document.body.clientHeight))
{
clHeight = document.body.clientHeight;
}
 
topOffset = (scrollTop + (clHeight/3))+'px';
 
s.top = topOffset;
if (show)
{
if (s.visibility) s.visibility = 'visible'; else s.display = 'block';
}
else
{
if (s.visibility) s.visibility = 'hidden'; else s.display = 'none';
}
}
};

Так можно поступить с любой функцией и изменить её под себя, под свои потребности.

Q: На главной fullajax.ru я увидел применение интересных эффектов, хочу также.
пример затемнения сайта:
Код
javascript:
 
SRAX.Effect.add({id:'rumba', start: function(id, request){
       var opacity = new Fax.opacity('body-content',1,0.3,10,10);
       opacity.afterEnd = request;
   },
   end: function(id){
        new Fax.opacity('body-content',0.3,1,10,10);
   }
})


где fullAjax - id слоя который будет затемняться
НО: Чтобы данный эффект работал нужна библиотека эффектов fax
Данную библиотеку я приложил в аттаче. Т.е. вы можете не только использовать fax а также известные аналоги например jquery prototype mootools

Q: Мне нужно передать параметры методом _POST, как?
Есть несколько вариантов:
1. Добавляем в инициализацию:
было примерно такое:
Код
javascript:
 
SRAX.Filter.add({id:'fullAjax', url:'/'});

Станет
Код
javascript:
 
SRAX.Filter.add({id:'fullAjax', url:'/', method:'post', params:'fullajax=yes'});
передаться параметр fullajax = yes
также можно передать несколько параметров
Код
javascript:
 
SRAX.Filter.add({id:'fullAjax', url:'/', method:'post', params:['fullajax=yes', 'kruto=yes']});

2 способ:
Код
javascript:
 
SRAX.Html.onall('beforerequest', function(ops) {
   var p = ops.options.params;
   ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
});

Вот и все мои накопленные знания Улыбающийся
Задавайте свои вопросы в теме постараюсь ответить!
« Последнее редактирование: Марта 20, 2009, 22:09:34 от Ruslan » Записан
KruGoZor
Новичок
*

Авторитет: 0
Сообщений: 49


Просмотр профиля
« Ответ #1 : Февраля 06, 2009, 13:23:28 »

О очень хорошо. Спасибо.
Буду благодарен если ещё чтонить подобное будете писать))
и может можно сдлетаь эту тему всегда наверху?)чтобы у вновь прибывших было меньше проблем.
Записан
kumbas
Новичок
*

Авторитет: 0
Сообщений: 13


Просмотр профиля
« Ответ #2 : Мая 22, 2009, 16:33:20 »

Спасибо, помогли разобраться и начать работу с ФуллАякс!!!
Пресоединяюсь к KruGoZor, тему наверх!!!
Записан
Shiri
Новичок
*

Авторитет: 0
Сообщений: 14


Просмотр профиля
« Ответ #3 : Июля 01, 2009, 13:39:00 »

Код
javascript:
 
SRAX.Html.onall('beforerequest', function(ops) {
   var p = ops.options.params;
   ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
});

Этот код передает параметры методом GET.
А как сделать тоже самое только через POST ?
Записан
Ruslan
Administrator
*****

Авторитет: 18
Сообщений: 964



Просмотр профиля
« Ответ #4 : Июля 01, 2009, 15:17:49 »

А как сделать тоже самое только через POST ?
Код
javascript:
 
SRAX.Html.onall('beforerequest', function(ops) {
   var p = ops.options.params;
   ops.options.params = (p ? p + '&': '') + 'fullajax=yes';
   ops.options.method = 'post';
});
Записан
Ruslan
Administrator
*****

Авторитет: 18
Сообщений: 964



Просмотр профиля
« Ответ #5 : Марта 06, 2010, 21:40:15 »

ваше сообщение не по теме FAQ, создайте новую тему в общих вопросах.
Предварительно просмотрите примеры использования uploader
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!