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

Сообщение от Cuprum
Согласен, в том смысле, что js я знаю плохо
не думаю я, что это не от языка зависит. Просто в некоторый языках принято все слишком упрощать, а в некоторых - слишком усложнять (ну или нельзя не усложнять)

Сообщение от Cuprum
в одном случае, когда есть какие-то описательные параметры, сделать проще - сделать одним способом, если эти параметры изменились или отсутствуют, "проще" - значит по-другому.
ну да, логично. Решение зависит от контекста. Чем проще, тем лучше. Проще зависит от контекста

я бы сделал как-то так (ошибки не исправлял, может даже новые добавил)
var QuotePanel = new Class({
    initialize: function( textarea ){
        this._el = textarea;
        this._panel = new Element('div', {'html': '<a href="#">Вставить цитату в поле</a>'});
		document.body.addEvents({
			'mouseup': this._onMouseUp_body.of(this),
			'click': this._onClick_body.of(this)
		});
		this._panel.addEvent( 'click', this._onClick_panel.of(this) );
		this._panel.inject( document.body );
    },
	
	_onMouseUp_body: function( e ){
		if( ! Selection.get() )
			return;
		var panelWidth = this._panel.getStyle('width').parseInt();
		var top = e.page.y - 40;
		var left = e.page.x - panelWidth/3;
		this._panel
			.setStyles({
				'top': top,
				'left': left,
				'display': 'block',
				'opacity': 0
			})
			.morph({
				'opacity': 1,
				'top': top-10
			});
	},
	
	_onClick_body: function( e ){
		if( ! Selection.get() )
			this._panel.setStyle('display', '');
	},
	
	_onClick_panel: function( e ){
		this._el.value += this._el.value+'<blockquote>'+Selection.get()+'</blockquote>\r\n';
		this._el.focus();
		this._panel.setStyle('display', '');
		e.preventDefault();
	}
});
Ответить с цитированием