Плагин для Smarty (Всплывающие окна)

Статус
В этой теме нельзя размещать новые ответы.

Eihwaz

Гуру форума
Регистрация
7 Окт 2007
Сообщения
156
Реакции
54
Плагин позволяет одной строкой создавать всплывающее окно на сайте с содержимым любой страницы (локальной или удаленной).
Качаем Для просмотра ссылки Войди или Зарегистрируйся сам класс аяксовых окошек.
Далее в <head></head> своей страницы подключаем необходимые файлы (библиотека prototype, css-ы, файлы windows.js и т.д.)
Далее в папке с плагинами к Smarty создаем файл function.url_window.php
Пишем в него следующее:
PHP:
function smarty_function_url_window($params, &$smarty)
{
    if(!isset($params['window_id']) || empty($params['window_id']))
        $smarty->trigger_error('url_window: не указан обязательный параметр "window_id"');

    foreach($params as $key => $value) {
        if(!is_bool($value))
            $value = '"' . preg_replace("/[\r\n]+/", '" + $0"', addslashes($value)) . '"';
    }

    if (!isset($params['url']) || empty($params['url']))
        $smarty->trigger_error('url_window: не указан обязательный параметр "url"');
    if (!isset($params['className']) || empty($params['className']))
        $params['className'] = 'alphacube';
    if(!isset($params['caption']) || empty($params['caption']))
        $smarty->trigger_error('dialog: не указан обязательный параметр "caption"');
    if(!isset($params['opacity']) || empty($params['opacity']))
        $params['opacity'] = 1;
    if (!isset($params['href']) || empty($params['href']))
        $params['href'] = '#';
    if (!isset($params['title']) || empty($params['title']))
        $params['title'] = '';
    if (!isset($params['width']) || empty($params['width']))
        $params['width'] = '300';
    if (!isset($params['height']) || empty($params['height']))
        $params['height'] = '150';
    if (!isset($params['top']) || empty($params['top']))
        $params['top'] = '200';
    if (!isset($params['left']) || empty($params['left']))
        $params['left'] = '350';

    $out = '';
    $out .= '<a href="'. $params['href'] .'" onclick="window'. $params['window_id'] .'.show();">'. $params['caption'] .'</a>';
    $out .= "\n<script type=\"text/javascript\">\n";
    $out .= "setTimeout('func". $params['window_id'] ."()',0);";
    $out .= "function func". $params['window_id'] ."() {";
    $out .= "window". $params['window_id'] ." = new Window('". $params['window_id'] ."', {className: '". $params['className']."', title: '". $params['title'] ."', opacity:".$params['opacity'].", width:". $params['width'] .", height:". $params['height'] .", top:". $params['top'] .", left:". $params['left'] .", url:\"".$params['url']."\"});";
    $out .= "}";
    $out .= "\n</script>\n";

   return $out;
}
Пользоваться так:
HTML:
{url_window window_id="`$suppliers[i].supplier_id`" width="600" height="320" caption="редактировать" title="`$smarty.const.EDITING_SUPPLIER_NAMED``$suppliers[i].supplier_name`" url="edit_supplier.php?supplier_id=`$suppliers[i].supplier_id`"}
Появится ссылка "редактировать" (параметр caption), при нажатии на которую появится всплывающее окно edit_supplier.php с переданным в него $_GET параметром supplier_id (параметр url).
Все параметры:
  • window_id - id нового окна. Число или строка. Двух одинаковых id на странице быть не должно (оконный класс сам об этом скажет)
  • url - страница, сожержимое которой будет показываться в окне.
  • className - тема, скин, стиль. Не забудьте только в <head> страницы подключить нужный css
  • caption - текст ссылки, при нажатии на которую будет открываться окно. Можно и рисунок вставлять (<img src="...>)
  • opactity - прозрачность открываемого окна. Значение от 0 до 1, где 0 - полностью прозрачное, 1 - полностью непрозрачное. Обладателям бинарного мозга напоминаю, что между 0 и 1 туева хуча значений и значение 0.5 даст 50% прозрачность окна.
  • href - адрес ссылки, которая открывает окно. По умолчанию проставляется "#"
  • title - Текст на заголовке окна.
  • width - Ширина окна
  • height - Высота
  • top - положение окна по вертикали
  • left - и горизонтали
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху