diff --git a/addons/planet_todo/planet_todo.addon.php b/addons/planet_todo/planet_todo.addon.php
new file mode 100644
index 000000000..cb478be3e
--- /dev/null
+++ b/addons/planet_todo/planet_todo.addon.php
@@ -0,0 +1,28 @@
+mid == 'planet'){
+ $oPlanet = Context::get('planet');
+ if($oPlanet->isMyPlanet()){
+ $oPlanetModel = &getModel('planet');
+ $countTodo = $oPlanetModel->getTagSearchResultCount($this->module_srl,'todo');
+ $countDone = $oPlanetModel->getTagSearchResultCount($this->module_srl,'done');
+
+ Context::addHtmlHeader("");
+ Context::addJsFile('./addons/planet_todo/planet_todo.js');
+ }
+ }
+ }
+?>
\ No newline at end of file
diff --git a/addons/planet_todo/planet_todo.js b/addons/planet_todo/planet_todo.js
new file mode 100644
index 000000000..8fe4caf89
--- /dev/null
+++ b/addons/planet_todo/planet_todo.js
@@ -0,0 +1,194 @@
+function planetTab(){
+ if($('planet_tab')) $('planet_tab').innerHTML += '
- ToDo'+ planet_todo_count.todo + '/' + planet_todo_count.done + '
';
+}
+xAddEventListener(window,'load',planetTab);
+
+
+
+
+function planetTabOff(){
+ $Element('planetex_Tab').leave();
+}
+
+function planet_showTodoList(o){
+ $ElementList('#planetex_Tab li').removeClass('active');
+ $Element(o).parent().addClass('active');
+ $ElementList('#planet_myTab li').removeClass('active');
+
+ planet_reload_todo();
+}
+
+function planet_reload_todo(){
+ $('commentList').innerHTML = 'todo
\n\ndone
\n\n\n';
+ planet_getTodo();
+ planet_getDone();
+}
+
+function planet_getTodo(page){
+ $('todoList').innerHTML ='';
+ _getPlanetTagSeachResult('todo',page,result_planet_getTodo);
+}
+
+function planet_getDone(page){
+ $('doneList').innerHTML ='';
+ _getPlanetTagSeachResult('done',page,result_planet_getDone);
+}
+
+function _getPlanetTagSeachResult(tag,page,func){
+ var response_tags = new Array('error','message','contentList','pageNavigation');
+ exec_xml('planet','dispPlanetContentTagSearch',{keyword:tag,page:page},func,response_tags);
+}
+
+function result_planet_getTodo(ret_obj,response_tags, params, fo_obj) {
+
+ if(ret_obj['error'] == 0 && ret_obj.contentList){
+ var o = new Array();
+ var it = new Array();
+ var items = ret_obj['contentList']['item'];
+
+ if(typeof(items[0]) == 'undefined'){
+ it[0] = items;
+ }else{
+ it = items;
+ }
+
+ o.push('');
+
+ $('todoList').innerHTML = o.join('');
+
+
+ var pageNavigation = ret_obj['pageNavigation'];
+
+ $('planet_todo_count').innerHTML = pageNavigation.total_count;
+ var str = "";
+ for(var i=pageNavigation.first_page;i<=pageNavigation.page_count;i++){
+ str += "|";
+ if(i== pageNavigation.cur_page){
+ str += ""+i+"";
+ }else{
+ str += ''+ i +'';
+ }
+ }
+ $('todoList_page').innerHTML = str + '|';
+ }
+}
+
+
+function result_planet_getDone(ret_obj,response_tags, params, fo_obj) {
+
+ if(ret_obj['error'] == 0 && ret_obj.contentList){
+ var o = new Array();
+ var it = new Array();
+ var items = ret_obj['contentList']['item'];
+
+
+ if(typeof(items[0]) == 'undefined'){
+ it[0] = items;
+ }else{
+ it = items;
+ }
+
+ o.push('');
+ $('doneList').innerHTML = o.join('');
+
+ var pageNavigation = ret_obj['pageNavigation'];
+ $('planet_done_count').innerHTML = pageNavigation.total_count;
+ var str = "";
+ for(var i=pageNavigation.first_page;i<=pageNavigation.page_count;i++){
+ str += "|";
+ if(i== pageNavigation.cur_page){
+ str += ""+i+"";
+ }else{
+ str += ''+ i +'';
+ }
+ }
+ $('doneList_page').innerHTML = str + '|';
+ }
+}
+
+
+
+
+function planet_todo_setDone(o){
+ var document_srl = o.id.replace(/.*:/,'');
+ var tag = o.value;
+ var params = {};
+ params['document_srl'] = document_srl;
+ params['planet_content_tag'] = tag;
+
+ exec_xml('planet','procPlanetContentTagModify',params,planet_reload_todo);
+ return false;
+}
+
+function planet_todo_setDel(document_srl){
+ var tag = $A($('document_srl:'+document_srl).value.split(','));
+ tag = tag.refuse('todo');
+ tag.push('hide');
+ tag = tag.$value().join(',');
+
+ var params = {};
+ params['document_srl'] = document_srl;
+ params['planet_content_tag'] = tag;
+
+ exec_xml('planet','procPlanetContentTagModify',params,planet_reload_todo);
+ return false;
+}
+
+function showWritePostTodo(tag){
+ tag = tag||'todo';
+ $Element($('writePostForm').about_tag).hide();
+ $Element($('writePostForm').content_tag).show();
+ $('writePostForm').content_tag.value = tag;
+ showWritePost();
+}
\ No newline at end of file