My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
TxExample4  
Step.4 Tutorial for Movie Review Function
Updated Nov 13, 2009 by rock...@gmail.com

편집중에 단어를 선택한 후 영화 버튼을 눌러 영화를 검색한 후 정보를 첨부하는 툴 만들기 튜토리얼 4단계


  • Template을 이용하여 메뉴를 그린다
  • 이벤트를 주고 menu에 연결한다.
  • tool에서 받아서 본문에 삽입한다.

markup

<ul class="tx-bar tx-bar-left"> 
<li class="tx-list">
	<div id="tx_cinema" class="tx-cinema tx-btn-lrbg" unselectable="on">
		<a title="영화" class="tx-icon" href="javascript:;">영화</a>
	</div>
	<div id="tx_cinema_menu" class="tx-cinema-menu tx-menu" unselectable="on">
		영화 메뉴입니다.
	</div>
</li>
</ul>

stylesheet

.tx-cinema a.tx-icon { background:url(http://daumopeneditor.googlecode.com/files/icon_movie.gif) no-repeat; }
.tx-cinema-menu { width: 200px; }

javascript

TrexConfig.addTool( "cinema", { wysiwygonly: true,  status:true} );

Trex.Tool.Cinema = Trex.Class.create({
	$const: {
		__Identity: 'cinema'
	},
	$extend: Trex.Tool,
	oninitialized: function(){
		var _canvas = this.canvas;
		var button = new Trex.Button(this.buttonCfg);
		var menu = new Trex.Menu.Cinema(this.menuCfg);
		var executeHandler = function(html){ 
			_canvas.pasteContent(html);
		}
		var initHandler = function(){
			processor = _canvas.getProcessor();
			return processor.getText();
		}
		;
		this.weave.bind(this)(
			button,
			menu,
			executeHandler,
			initHandler
		);
	}
});

Trex.Menu.Cinema = Trex.Class.create({
	$extend: Trex.Menu,
	$mixins:[
		Trex.I.JSRequester
	],
	ongenerated: function(){
		this.elMenu.innerHTML = "이것은 영화메뉴입니다!";
		var _menu = this;
		var _template = new Template('<div><img src="#{thumbnail}" align="left"/><h5><a href="#{link}" target="_blank">#{title}</a></h5><dl><dt>감독</dt><dd>#{director}</dd><dt>배우</dt><dd>#{actor}</dd></dl></div>');
		window.mymovielist = function(data) {
			var _html = [];
			for( var i = 0; i < data.channel.item.length; i++ ){
				var _item = data.channel.item[i];
				var _data = {
					seq:i+1,
					thumbnail: _item.thumbnail.pluck('content').join(","),
					link:_item.title.pluck('link').join(","),
					title: _item.title.pluck('content').join(","),
					director: _item.director.pluck('content').join(","),
					actor: _item.actor.pluck('content').join(",")
				}
				_html .push( _template.evaluate( _data ));
			}
			_menu.elMenu.innerHTML = _html.join("");
			
			var imgs = $tom.collectAll( _menu.elMenu, "img" );
			for( var i = 0; i < imgs.length;  i++ ){
				$tx.observe( imgs[i], "click", function(index){ 
					return function(ev){
						_menu.onSelect(ev, _html[index]);
					}
				}(i));
			}
		};
	},
	onregenerated: function(){
		var _initData = this.initHandler();
		this.elMenu.innerHTML =  _initData;
		var _url = "http://apis.daum.net/contents/movie?apikey=7864cadc5c3bb56230791db06921bd00ec03faaa&q="+encodeURIComponent(_initData)+"&output=json&result=4&pageno=1&callback=mymovielist";
		this.importScript( _url );
	}
});
// 7864cadc5c3bb56230791db06921bd00ec03faaa

Sign in to add a comment
Powered by Google Project Hosting