Вход Регистрация
Файл: framework/zii/widgets/assets/listview/jquery.yiilistview.js
Строк: 181
<?php
/**
 * jQuery Yii ListView plugin file.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link http://www.yiiframework.com/
 * @copyright Copyright &copy; 2008-2010 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 * @version $Id: jquery.yiilistview.js 3296 2011-06-22 17:15:17Z qiang.xue $
 */

;(function($) {
    
/**
     * yiiListView set function.
     * @param options map settings for the list view. Availablel options are as follows:
     * - ajaxUpdate: array, IDs of the containers whose content may be updated by ajax response
     * - ajaxVar: string, the name of the GET variable indicating the ID of the element triggering the AJAX request
     * - pagerClass: string, the CSS class for the pager container
     * - sorterClass: string, the CSS class for the sorter container
     * - updateSelector: string, the selector for choosing which elements can trigger ajax requests
     * - beforeAjaxUpdate: function, the function to be called before ajax request is sent
     * - afterAjaxUpdate: function, the function to be called after ajax response is received
     */
    
$.fn.yiiListView = function(options) {
        return 
this.each(function(){
            var 
settings = $.extend({}, $.fn.yiiListView.defaultsoptions || {});
            var 
$this = $(this);
            var 
id $this.attr('id');
            if(
settings.updateSelector == undefined) {
                
settings.updateSelector '#'+id+' .'+settings.pagerClass.replace(/s+/g,'.')+' a, #'+id+' .'+settings.sorterClass.replace(/s+/g,'.')+' a';
            }
            $.
fn.yiiListView.settings[id] = settings;

            if(
settings.ajaxUpdate.length 0) {
                $(
settings.updateSelector).die('click').live('click',function(){
                    $.
fn.yiiListView.update(id, {url: $(this).attr('href')});
                    return 
false;
                });
            }
        });
    };

    $.
fn.yiiListView.defaults = {
        
ajaxUpdate: [],
        
ajaxVar'ajax',
        
pagerClass'pager',
        
loadingClass'loading',
        
sorterClass'sorter'
        
// updateSelector: '#id .pager a, '#id .sort a',
        // beforeAjaxUpdate: function(id) {},
        // afterAjaxUpdate: function(id, data) {},
        // url: 'ajax request URL'
    
};

    $.
fn.yiiListView.settings = {};

    
/**
     * Returns the key value for the specified row
     * @param id string the ID of the list view container
     * @param index integer the zero-based index of the data item
     * @return string the key value
     */
    
$.fn.yiiListView.getKey = function(idindex) {
        return $(
'#'+id+' > div.keys > span:eq('+index+')').text();
    };

    
/**
     * Returns the URL that generates the list view content.
     * @param id string the ID of the list view container
     * @return string the URL that generates the list view content.
     */
    
$.fn.yiiListView.getUrl = function(id) {
        var 
settings = $.fn.yiiListView.settings[id];
        return 
settings.url || $('#'+id+' > div.keys').attr('title');
    };

    
/**
     * Performs an AJAX-based update of the list view contents.
     * @param id string the ID of the list view container
     * @param options map the AJAX request options (see jQuery.ajax API manual). By default,
     * the URL to be requested is the one that generates the current content of the list view.
     */
    
$.fn.yiiListView.update = function(idoptions) {
        var 
settings = $.fn.yiiListView.settings[id];
        $(
'#'+id).addClass(settings.loadingClass);
        
options = $.extend({
            
type'GET',
            
url: $.fn.yiiListView.getUrl(id),
            
success: function(data,status) {
                $.
each(settings.ajaxUpdate, function(i,v) {
                    var 
id='#'+v;
                    $(
id).replaceWith($(id,'<div>'+data+'</div>'));
                });
                if(
settings.afterAjaxUpdate != undefined)
                    
settings.afterAjaxUpdate(iddata);
                $(
'#'+id).removeClass(settings.loadingClass);
            },
            
error: function(XMLHttpRequesttextStatuserrorThrown) {
                $(
'#'+id).removeClass(settings.loadingClass);
                
alert(XMLHttpRequest.responseText);
            }
        }, 
options || {});

        if(
options.data!=undefined && options.type=='GET') {
            
options.url = $.param.querystring(options.urloptions.data);
            
options.data = {};
        }
        
options.url = $.param.querystring(options.urlsettings.ajaxVar+'='+id);

        if(
settings.beforeAjaxUpdate != undefined)
            
settings.beforeAjaxUpdate(id);
        $.
ajax(options);
    };

})(
jQuery);
?>
Онлайн: 0
Реклама