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

Тема в разделе "Другие языки", создана пользователем Eihwaz, 18 ноя 2008.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Eihwaz

    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 - и горизонтали
     
Статус темы:
Закрыта.