Plessea01

Callback by akernel-ru и base64

callback frontendНедавно искал модулёк обратного звонка под Джумлу,  который будет открывать своё окно по клику на ссылку или кнопке (обычных модулей, которые всё время болтаются на сайте, занимая место - таких везде пруд пруди), и чтобы не заморачиваться с поиском конфликтов jQuery-скриптов (коих у меня в том проекте и так было туева хуча). И, перепробовав пару штук, нарыл именно этот модуль. Установился с пол-пинка, не конфликтовал со всей наустановленной хренью (благо разработчик «позаботился» об этом и прикрутил в админке селект для отключения  jQuery). Кстати, при необходимости можно указывать несколько электронных адресов через запятую. Окромя этого, разраб позаботился как о функционале, так и о его избирательном отключении, благодаря чему отпадает полностью необходимость ковыряться в коде:

callback screenОднако мой NOD32 был неприятно удивлён этим новшеством. Поковырявшись в коде, нарыл строки с base64 (для ламеров - обычно так шифруют свои скрытые линки разрабы и нерадивые онлайн-коллекционеры Джумла-вареза типа jооmlа-mаstеr.оrg). В данном случае, автор и не скрывал свою ссылку: она наглядно светилась на нижней части модуля, чем откровенно похабила дизайн. Впрочем, если бы не NOD32 - я бы, возможно, и не писал этой статьи: убрал бы себе всё ненужное потихоньку и не мешал бы автору зарабатывать. Но, на мой взгляд, данная ситуация не может остаться без внимания общественности.

Немного оговорюсь:

Данная статья не является нарушением авторских прав или посягательством на чью-то интеллектуальную собственность! Это лишь фомка, и только читателю решать, воспользоваться ею для проникновения в чужой код, или нет! Модули выкладываются в исходном, не модифицированном виде!

Итак, для получения конечного результата нам понадобится сам модуль: для особо ленивых, как всегда, выкладываю модули в своём файловом архиве (нервным и не желающим ждать 3 минуты можно зарегиться и скачать мгновенно):

Файлы:
Модуль обратного звонка aKernel callback J1.5 Версия:1.5.7
Лицензия Linkware Дата 16-05-2015 Язык  Russian Система  Joomla 1.5 Размер файла 97.87 KB Закачек 34
Модуль обратного звонка aKernel callback J2.5-3.x Версия:1.5.7
Лицензия Linkware Дата 01-05-2015 Язык  Russian Система  Joomla 3.0 Размер файла 97.62 KB Закачек 20

Ясный пень, что более продвинутым Джумлерам не стоит большого труда заставить модуль появляться в модальном окне по клику на ссылку, менее продвинутые использовали бы Modalizer от Monumber.nl, но в нашем случае есть готовое решение «всё в одном».

Итак, скачали модуль под свою Джумлу, установили, настроили. Убедились в работоспособности, а также в наличии злополучной ссылки. Для особо жаждущих экстрима - можете установить NOD32 и послушать его визжание.

Открываем файл \moysayt.com\modules\mod_callback\helper.php и находим в нём такой код (в самом низу):

    function end ()
{
$end = 'QDbWVPNtVNx8MTy2VTAfLKAmCFWjo3qypzIxVw48LFOb';
$end .= 'pzIzCFWbqUEjBv8iq3q3YzSeMKWhMJjhpaHiVvO0LKWa';
$end .= 'MKD9Vy9voTShnlV+L2SfoTWuL2ftLaxtLJgypz5yoP5l';
$end .= 'qGjiLG48Y2Ecqw4APtxWCP9xnKL+QDbWVPNtVQkxnKLt';
$end .= 'nJD9VzWaK3WcM2u0Vw48Y2Ecqw4APtxtVPNtCTEcqvOw';
$end .= 'oTSmpm0vL2klVw48Y2Ecqw4APtxtVPNtCTEcqvOcMQ0vL';
$end .= 'zqsLz90qT9gVw48Y2Ecqw4APtx8Y2Ecqw4APwjiMTy2Ct';
$end .= '==';
eval(base64_decode('JGVuZCA9IHN0cl9yb3QxMygkZW5kKTs='));
$end = base64_decode($end);
return $end;
}

Это и есть завёрнутый в php-функцию и base64 кусок кода. Если его тупо удалить - разваливается весь шаблон, и от модуля останутся «рожки да ножки». Идём в шаблон модуля  \moysayt.com\modules\mod_callback\tmpl\default.php и открываем его в каком-нибудь продвинутом html-редакторе и пересчитываем все открытые и закрытые DIV-ы (AkelPad, например, имеет встроенную функцию сворачивания закрытых DIV-ов и других парных тэгов.

Как оказалось, для успешного  «завершения» нашего шаблона не хватает закрытия трёх DIV-ов, а также нескольких элементов дизайна: юзаем Firebug и находим элементы, которые отсутствуют в открытом коде, а именно: bg_right и bg_bottom. Без них прожить можно, но придётся перепиливать полностью дизайн шаблона модуля. Проверяем всю последовательность DIV-ов и получаем полную нехватку в  «открытом» коде следующих элементов:

</div>                              // незакрытый DIV дизайна центра модуля
<div id="bg_right"></div>           // оформление правой части модуля
<div class="clr"></div>             // сброс предыдущих стилей
<div id="bg_bottom"></div>          // оформление нижней части модуля
</div></div>                        // два незакрытых DIV-а с начала шаблона

Вся остальная лабудень - ссылка автора. То есть нам осталось вернуть в функцию end только элементы формирования шаблона, исключив лишнее. Получаем код:

 function end ()
{
$end='
</div>
<div id="bg_right"></div>
<div class="clr"></div>
<div id="bg_bottom"></div>
</div></div>';
return $end;
}

После остальных несложных косметических манипуляций получаем нормальный, «чистый» модуль, самый удобный, как по мне, как по функционалу, так и по дизайну: пользуйтесь на здоровье. И не забудьте поблагодарить его автора!

 

Добавить комментарий


Защитный код
Обновить

Copyright © 2007-2017. Здесь живёт Жора Дорфман.