Предлагаю расширить AjaxSnippet
Доброго времени суток!
Предлагаю несколько расширить функционал сниппета от Василия AjaxSnippet.
Предлагаемые изменения: Добавить возможность запуска сниппета при клике на заданный CSS селектор, а так же возможность повторного его вызова.
У себя я это реализовал следующим образом:
Отдаю на Ваш суд, если посчитаете изменения не лишними, то был бы рад обновить данный сниппет в установщике :)
Предлагаю несколько расширить функционал сниппета от Василия AjaxSnippet.
Предлагаемые изменения: Добавить возможность запуска сниппета при клике на заданный CSS селектор, а так же возможность повторного его вызова.
У себя я это реализовал следующим образом:
- Добавил 2 параметра: &as_selector — CSS селектор на onclick, &as_refresh — повторный вызов сниппета (по умолчанию false)
- Дописал сниппет
case 'onclick':
if(empty($as_selector)){
if (empty($wrapper)) {$wrapper = '<div id="[[+key]]" class="ajax-snippet">
<a href="#" class="as_trigger">[[+trigger]]</a>
<img src="'.$spinner.'" class="as_spinner" style="width:32px;margin:auto;display:none;">
</div>';}
if (empty($as_trigger)) {
$as_trigger = $modx->lexicon('as_trigger');
}
$modx->regClientScript(preg_replace('/(\t|\n)/', '','
<script type="text/javascript">
$(document).on("click", ".as_trigger", function(e) {
var spinner = $(this).parent().find(".as_spinner");
spinner.css("display","block");
$(this).remove();
'.$script.'
return false;
});
</script>'), true);
}
else{
if(empty($as_refresh)){$as_refresh = false;}
$ajax='';
if($as_refresh == false){$ajax = '$(this).attr("ajax","none");';}
if (empty($wrapper)) {$wrapper = '<div id="[[+key]]" class="ajax-snippet">
<img src="'.$spinner.'" class="as_spinner" style="width:32px;margin:auto;display:none;">
</div>';}
$modx->regClientScript(preg_replace('/(\t|\n)/', '','
<script type="text/javascript">
$(document).on("click", "'.$as_selector.'", function(e) {
if(!$(this).attr("ajax")){
var spinner = $("'.$as_target.'").find(".as_spinner");
'.$ajax.'
spinner.css("display","block");
'.$script.'
return false;
}
});
</script>'), true);
}
$output = str_replace(array('[[+key]]','[[+trigger]]'), array($key, $as_trigger), $wrapper);
break;Остальное без изменений.Отдаю на Ваш суд, если посчитаете изменения не лишними, то был бы рад обновить данный сниппет в установщике :)
Комментарии: 36
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
если знаешь jquery, то вот эта строчка говорит сама за себя:
Ок, запустил.
А повторный запуск — это что имеется ввиду?
Первый раз сниппет вызывается, второй раз и дальше — неаА, не, ошибся, все четко работает! Данные слишком быстро приходили и казалось, что не меняется ничего, консолька помогла!
Крайне рекомендую к использованию!
на это
и зачистил это
У меня этот сниппет работает при переходе по вкладкам (во кладках находится второстепенный контент, который ни к чему вызывать при загрузке страницы, он нужен только по требованию)
Подскажи, что значит эта запись в tpl.msOrder — что-то на феноме, а я в нем ни зуб ногой:
Суть в том, что на сайт подключаются jquery, underscore и backbone, далее пишутся соответствующие Model, View и т.д. с помощью extend стандартных объектов backbone.
Далее создается в корне сайта папка rest в которой создается что-то по типу и подобию этого docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/developing-rest-servers
Ну и последнее это расписывание template для нужных блоков.
Но… Если вернуться к вашей ссылке, то если вы банально уберете из кода все комментарии, а также alert из js скрипта (ибо нужно в консоли браузера debug'ить) и посчитаете кол-во строк оставшихся… Я даже промолчу про то, что код можно уменьшить, если несколько иначе переписать…
REST конечно круто, но ради ТРЕХ использовании на одном сайте огород городить…
^_^
Ну и да, мне еще есть куда стремиться в правильности написания кода и знания JS)