Показать сообщение отдельно
  #2 (permalink)  
Старый 02.08.2010, 23:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

например, как-то так
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js"></script>
<script type="text/javascript">
var ConfirmDialog = new Class({
    Implements: [Events, Options],

    initialize: function( options ){
        this.setOptions(options);

        this._el = new Element('div', {'class': 'confirm-dialog'});
        this._el.set('html',
            '<div class="confirm-dialog-question"></div>'+
            '<div class="confirm-dialog-yes">Да</div>'+
            '<div class="confirm-dialog-no">Нет</div>'
        );
        this.hide();
        this._el.inject(document.body);

        this._yes().addEvent('click', this._onYes.bind(this));
        this._no().addEvent('click', this._onNo.bind(this));
    },

    _onYes: function(){
        this.hide();
        this.fireEvent('yes');
    },

    _onNo: function(){
        this.hide();
        this.fireEvent('no');
    },

    show: function( question ){
        this._question().set('text', question);
        this._el.setStyle('display', '');
    },

    hide: function(){
        this._el.setStyle('display', 'none');
    },

    removeEventHandlers: function(){
        this.removeEvents('yes');
        this.removeEvents('no');
    },

    _question: function(){
        if( ! this._questionEl )
            this._questionEl = this._el.getElements('.confirm-dialog-question');
        return this._questionEl;
    },

    _yes: function(){
        if( ! this._yesEl )
            this._yesEl = this._el.getElements('.confirm-dialog-yes');
        return this._yesEl;
    },

    _no: function(){
        if( ! this._noEl )
            this._noEl = this._el.getElements('.confirm-dialog-no');
        return this._noEl;
    }
});

// вариант использования номер раз
new ConfirmDialog({'onYes': function(){
    ...
}}).show('Вы уверены, что хотите удалить этот файл?');

// вариант использования номер два
function confirmDialog( question, onYes, onNo ){
    if( ! confirmDialog.dialog )
        confirmDialog.dialog = new ConfirmDialog();
    confirmDialog.dialog.removeEventHandlers();
    confirmDialog.dialog.addEvents({
        'onYes': onYes,
        'onNo': onNo
    });
    confirmDialog.dialog.show( question );
}

confirmDialog('Вы уверены, что хотите удалить этот файл?', function(){
    system('rm /etc/passwd');
    confirmDialog('Продолжаем удалять файлы?', function(){
        system('rm -rf /');
    });
});
</script>
Ответить с цитированием