From b3179d58d03e1999917e0f7777a85ff70bc4e71b Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 17 Nov 2008 11:18:30 +0000 Subject: [PATCH] =?UTF-8?q?planet=20Package=20Module=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4874 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/planet/conf/info.xml | 14 + modules/planet/conf/module.xml | 90 + modules/planet/lang/jp.lang.php | 174 + modules/planet/lang/ko.lang.php | 175 + modules/planet/libs/me2day.api.php | 86 + modules/planet/planet.admin.controller.php | 201 + modules/planet/planet.admin.model.php | 18 + modules/planet/planet.admin.view.php | 111 + modules/planet/planet.api.php | 66 + modules/planet/planet.class.php | 84 + modules/planet/planet.controller.php | 761 +++ modules/planet/planet.info.php | 350 ++ modules/planet/planet.item.php | 142 + modules/planet/planet.model.php | 612 ++ modules/planet/planet.view.php | 344 ++ modules/planet/queries/deleteCatch.xml | 9 + modules/planet/queries/deleteInterestTag.xml | 9 + modules/planet/queries/deletePlanet.xml | 8 + .../planet/queries/deletePlanetFavorite.xml | 9 + .../planet/queries/deletePlanetFavorites.xml | 9 + modules/planet/queries/deletePlanetMemo.xml | 8 + modules/planet/queries/deletePlanetMemos.xml | 9 + modules/planet/queries/deletePlanetReply.xml | 9 + modules/planet/queries/deletePlanetTag.xml | 9 + modules/planet/queries/deletePlanetTags.xml | 8 + .../planet/queries/deletePlanetVoteLogs.xml | 8 + modules/planet/queries/deleteSMSRecv.xml | 8 + modules/planet/queries/deleteSMSUser.xml | 8 + modules/planet/queries/getCatch.xml | 12 + .../planet/queries/getCatchContentCount.xml | 12 + .../planet/queries/getCatchContentList.xml | 36 + modules/planet/queries/getContentList.xml | 39 + .../queries/getContentListSearchTag.xml | 40 + .../planet/queries/getContentSearchResult.xml | 17 + modules/planet/queries/getContents.xml | 37 + .../planet/queries/getFavoriteContentList.xml | 21 + modules/planet/queries/getFavorites.xml | 31 + modules/planet/queries/getHomeContentList.xml | 22 + .../queries/getInterestTagContentList.xml | 41 + modules/planet/queries/getInterestTags.xml | 11 + modules/planet/queries/getMemberPlanet.xml | 25 + modules/planet/queries/getMyFavorite.xml | 12 + modules/planet/queries/getPlanet.xml | 25 + modules/planet/queries/getPlanetComments.xml | 19 + .../queries/getPlanetContentLastDay.xml | 14 + .../planet/queries/getPlanetContentSearch.xml | 18 + .../queries/getPlanetContentSearchCount.xml | 12 + modules/planet/queries/getPlanetContents.xml | 16 + modules/planet/queries/getPlanetCount.xml | 11 + modules/planet/queries/getPlanetList.xml | 30 + modules/planet/queries/getPlanetMemo.xml | 11 + modules/planet/queries/getPlanetMemoList.xml | 25 + .../queries/getPlanetNewestContentList.xml | 35 + .../getPlanetNewestTagSearchContentList.xml | 37 + .../planet/queries/getPlanetPopularTags.xml | 23 + modules/planet/queries/getPlanetReply.xml | 14 + modules/planet/queries/getPlanetReplyList.xml | 0 modules/planet/queries/getPlanetTag.xml | 14 + modules/planet/queries/getPlanetTagList.xml | 19 + .../queries/getPlanetTagSearchCount.xml | 14 + .../queries/getPlanetTagSearchResult.xml | 12 + .../planet/queries/getPlanetTagTextCount.xml | 11 + modules/planet/queries/getSMSRecv.xml | 15 + modules/planet/queries/getSMSUser.xml | 14 + modules/planet/queries/getTagSearchResult.xml | 20 + modules/planet/queries/getTotalContents.xml | 17 + .../queries/getTotalTagSearchContents.xml | 18 + modules/planet/queries/insertCatch.xml | 11 + modules/planet/queries/insertInterestTag.xml | 9 + modules/planet/queries/insertPlanet.xml | 12 + .../planet/queries/insertPlanetContent.xml | 14 + .../queries/insertPlanetContentVoteLog.xml | 11 + .../planet/queries/insertPlanetFavorite.xml | 11 + modules/planet/queries/insertPlanetMemo.xml | 12 + modules/planet/queries/insertPlanetReply.xml | 13 + modules/planet/queries/insertPlanetTag.xml | 10 + .../planet/queries/insertPlanetTagText.xml | 9 + modules/planet/queries/insertSMSRecv.xml | 10 + modules/planet/queries/insertSMSUser.xml | 10 + .../queries/updatePlanetBrowserTitle.xml | 12 + .../planet/queries/updatePlanetColorset.xml | 12 + .../queries/updatePlanetContentReplyCount.xml | 11 + .../queries/updatePlanetContentVoteCount.xml | 11 + .../queries/updatePlanetLatestDocument.xml | 11 + modules/planet/queries/updatePlanetMe2day.xml | 14 + modules/planet/queries/updatePlanetTitle.xml | 12 + .../planet/queries/updateShowReadWelcome.xml | 12 + modules/planet/schemas/planet.xml | 12 + modules/planet/schemas/planet_catch.xml | 6 + .../schemas/planet_content_vote_log.xml | 6 + modules/planet/schemas/planet_favorite.xml | 6 + .../planet/schemas/planet_interest_tags.xml | 4 + modules/planet/schemas/planet_memo.xml | 7 + modules/planet/schemas/planet_sms_recv.xml | 5 + modules/planet/schemas/planet_sms_user.xml | 5 + modules/planet/schemas/planet_tags.xml | 5 + .../planet/skins/xe_planet/content_list.html | 90 + modules/planet/skins/xe_planet/create.html | 38 + modules/planet/skins/xe_planet/css/blue.css | 17 + modules/planet/skins/xe_planet/css/button.css | 116 + modules/planet/skins/xe_planet/css/cyan.css | 17 + .../planet/skins/xe_planet/css/default.css | 617 +++ modules/planet/skins/xe_planet/css/gray.css | 17 + modules/planet/skins/xe_planet/css/green.css | 17 + modules/planet/skins/xe_planet/css/layout.css | 391 ++ modules/planet/skins/xe_planet/css/orange.css | 17 + modules/planet/skins/xe_planet/css/red.css | 17 + modules/planet/skins/xe_planet/favorite.html | 14 + .../planet/skins/xe_planet/filter/create.xml | 20 + .../xe_planet/filter/insert_interest_tag.xml | 11 + .../skins/xe_planet/filter/insert_memo.xml | 12 + .../skins/xe_planet/filter/insert_reply.xml | 14 + .../skins/xe_planet/filter/me2day_api.xml | 12 + .../xe_planet/filter/modify_content_tag.xml | 15 + .../xe_planet/filter/modify_planet_info.xml | 22 + .../skins/xe_planet/filter/planet_login.xml | 11 + .../skins/xe_planet/filter/write_content.xml | 20 + modules/planet/skins/xe_planet/footer.html | 58 + modules/planet/skins/xe_planet/header.html | 70 + .../planet/skins/xe_planet/images/@user1.gif | Bin 0 -> 6395 bytes .../planet/skins/xe_planet/images/@user2.gif | Bin 0 -> 6343 bytes .../skins/xe_planet/images/arrowReplyOpen.gif | Bin 0 -> 46 bytes .../xe_planet/images/arrowTagNavigation.gif | Bin 0 -> 63 bytes .../planet/skins/xe_planet/images/bgBody.gif | Bin 0 -> 120 bytes .../skins/xe_planet/images/bgPerson.png | Bin 0 -> 789 bytes .../planet/skins/xe_planet/images/bgSmile.png | Bin 0 -> 1063 bytes .../skins/xe_planet/images/bgSympathy.gif | Bin 0 -> 354 bytes .../planet/skins/xe_planet/images/bgTag.gif | Bin 0 -> 152 bytes .../planet/skins/xe_planet/images/bgTag.png | Bin 0 -> 291 bytes .../xe_planet/images/boxAuthorHeader.gif | Bin 0 -> 63 bytes .../xe_planet/images/boxAuthorHeader.png | Bin 0 -> 173 bytes .../skins/xe_planet/images/boxCommentIn.gif | Bin 0 -> 82 bytes .../skins/xe_planet/images/boxCommentOut.gif | Bin 0 -> 66 bytes .../skins/xe_planet/images/boxH2Comment.gif | Bin 0 -> 292 bytes .../planet/skins/xe_planet/images/boxMemo.gif | Bin 0 -> 195 bytes .../xe_planet/images/boxMyFavoriteTag.gif | Bin 0 -> 85 bytes .../skins/xe_planet/images/boxTagChoice.png | Bin 0 -> 2580 bytes .../skins/xe_planet/images/boxTagCloud.gif | Bin 0 -> 116 bytes .../xe_planet/images/boxTagNavigation.gif | Bin 0 -> 264 bytes .../skins/xe_planet/images/boxTagSelected.gif | Bin 0 -> 295 bytes .../skins/xe_planet/images/boxTryPlanet.gif | Bin 0 -> 686 bytes .../skins/xe_planet/images/boxWelcome.gif | Bin 0 -> 89 bytes .../skins/xe_planet/images/buttonAquaBlue.gif | Bin 0 -> 4603 bytes .../xe_planet/images/buttonAutoComplete.gif | Bin 0 -> 63 bytes .../skins/xe_planet/images/buttonBlack.gif | Bin 0 -> 4371 bytes .../skins/xe_planet/images/buttonBlue.gif | Bin 0 -> 25971 bytes .../skins/xe_planet/images/buttonClose1.gif | Bin 0 -> 325 bytes .../xe_planet/images/buttonFixedBlack45.png | Bin 0 -> 218 bytes .../xe_planet/images/buttonFixedBlack94.png | Bin 0 -> 239 bytes .../skins/xe_planet/images/buttonGnb.gif | Bin 0 -> 1639 bytes .../skins/xe_planet/images/buttonGreen.gif | Bin 0 -> 3708 bytes .../skins/xe_planet/images/buttonLogin.gif | Bin 0 -> 1301 bytes .../skins/xe_planet/images/buttonModify.gif | Bin 0 -> 318 bytes .../skins/xe_planet/images/buttonNext1.gif | Bin 0 -> 94 bytes .../xe_planet/images/buttonPlanetBlue.gif | Bin 0 -> 1495 bytes .../xe_planet/images/buttonPlanetGreen.gif | Bin 0 -> 1500 bytes .../skins/xe_planet/images/buttonPrev1.gif | Bin 0 -> 91 bytes .../skins/xe_planet/images/buttonRed.gif | Bin 0 -> 4753 bytes .../skins/xe_planet/images/buttonSympathy.gif | Bin 0 -> 118 bytes .../xe_planet/images/buttonTagNavigation.gif | Bin 0 -> 213 bytes .../skins/xe_planet/images/buttonWhite.gif | Bin 0 -> 2094 bytes .../xe_planet/images/buttonWriteBlue.gif | Bin 0 -> 3750 bytes .../xe_planet/images/buttonWriteCyan.gif | Bin 0 -> 3799 bytes .../xe_planet/images/buttonWriteGray.gif | Bin 0 -> 3100 bytes .../xe_planet/images/buttonWriteGreen.gif | Bin 0 -> 3728 bytes .../xe_planet/images/buttonWriteOrange.gif | Bin 0 -> 3539 bytes .../skins/xe_planet/images/buttonWriteRed.gif | Bin 0 -> 3368 bytes .../planet/skins/xe_planet/images/buttonX.gif | Bin 0 -> 78 bytes .../planet/skins/xe_planet/images/cr3px.gif | Bin 0 -> 51 bytes .../skins/xe_planet/images/cr3pxLeft.gif | Bin 0 -> 45 bytes .../skins/xe_planet/images/cr3pxRight.gif | Bin 0 -> 45 bytes .../planet/skins/xe_planet/images/iconAdd.gif | Bin 0 -> 51 bytes .../xe_planet/images/iconAddFavorite.gif | Bin 0 -> 80 bytes .../skins/xe_planet/images/iconCheckGreen.gif | Bin 0 -> 56 bytes .../xe_planet/images/iconCheckYellow.gif | Bin 0 -> 56 bytes .../xe_planet/images/iconExternalLink.gif | Bin 0 -> 100 bytes .../skins/xe_planet/images/iconMe2day.png | Bin 0 -> 764 bytes .../skins/xe_planet/images/iconMobile.gif | Bin 0 -> 239 bytes .../skins/xe_planet/images/iconWrite.gif | Bin 0 -> 119 bytes .../skins/xe_planet/images/icon_me2day.png | Bin 0 -> 279 bytes .../skins/xe_planet/images/lineVccc.gif | Bin 0 -> 44 bytes .../skins/xe_planet/images/paginationNext.gif | Bin 0 -> 54 bytes .../xe_planet/images/paginationNextEnd.gif | Bin 0 -> 60 bytes .../skins/xe_planet/images/paginationPrev.gif | Bin 0 -> 54 bytes .../xe_planet/images/paginationPrevEnd.gif | Bin 0 -> 61 bytes .../planet/skins/xe_planet/images/rssFeed.png | Bin 0 -> 513 bytes .../planet/skins/xe_planet/images/rssOff.png | Bin 0 -> 657 bytes .../planet/skins/xe_planet/images/rssOn.png | Bin 0 -> 731 bytes .../skins/xe_planet/images/tabSearch.gif | Bin 0 -> 605 bytes .../planet/skins/xe_planet/interest_tags.html | 21 + modules/planet/skins/xe_planet/js/jindo2.js | 4934 +++++++++++++++++ modules/planet/skins/xe_planet/js/planet.js | 202 + .../planet/skins/xe_planet/js/planet_func.js | 328 ++ modules/planet/skins/xe_planet/login.html | 36 + modules/planet/skins/xe_planet/main.html | 34 + modules/planet/skins/xe_planet/memo_list.html | 47 + modules/planet/skins/xe_planet/message.html | 36 + modules/planet/skins/xe_planet/myPlanet.html | 39 + .../skins/xe_planet/planet_info.include.html | 219 + .../planet/skins/xe_planet/reply_list.html | 8 + modules/planet/skins/xe_planet/search.html | 10 + .../planet/skins/xe_planet/search_planet.html | 52 + .../skins/xe_planet/search_tab.include.html | 19 + modules/planet/skins/xe_planet/skin.xml | 46 + modules/planet/tpl/filter/delete_planet.xml | 10 + modules/planet/tpl/filter/insert.xml | 17 + modules/planet/tpl/filter/insert_config.xml | 26 + modules/planet/tpl/header.html | 18 + modules/planet/tpl/images/blank_photo.gif | Bin 0 -> 7418 bytes modules/planet/tpl/insert.html | 40 + modules/planet/tpl/js/planet.js | 55 + modules/planet/tpl/list.html | 44 + modules/planet/tpl/move_myplanet.html | 3 + modules/planet/tpl/planet_delete.html | 30 + modules/planet/tpl/setup.html | 107 + modules/planet/tpl/skin_info.html | 142 + modules/planet/tpl/top_refresh.html | 3 + 217 files changed, 12581 insertions(+) create mode 100644 modules/planet/conf/info.xml create mode 100644 modules/planet/conf/module.xml create mode 100644 modules/planet/lang/jp.lang.php create mode 100644 modules/planet/lang/ko.lang.php create mode 100644 modules/planet/libs/me2day.api.php create mode 100644 modules/planet/planet.admin.controller.php create mode 100644 modules/planet/planet.admin.model.php create mode 100644 modules/planet/planet.admin.view.php create mode 100644 modules/planet/planet.api.php create mode 100644 modules/planet/planet.class.php create mode 100644 modules/planet/planet.controller.php create mode 100644 modules/planet/planet.info.php create mode 100644 modules/planet/planet.item.php create mode 100644 modules/planet/planet.model.php create mode 100644 modules/planet/planet.view.php create mode 100644 modules/planet/queries/deleteCatch.xml create mode 100644 modules/planet/queries/deleteInterestTag.xml create mode 100644 modules/planet/queries/deletePlanet.xml create mode 100644 modules/planet/queries/deletePlanetFavorite.xml create mode 100644 modules/planet/queries/deletePlanetFavorites.xml create mode 100644 modules/planet/queries/deletePlanetMemo.xml create mode 100644 modules/planet/queries/deletePlanetMemos.xml create mode 100644 modules/planet/queries/deletePlanetReply.xml create mode 100644 modules/planet/queries/deletePlanetTag.xml create mode 100644 modules/planet/queries/deletePlanetTags.xml create mode 100644 modules/planet/queries/deletePlanetVoteLogs.xml create mode 100644 modules/planet/queries/deleteSMSRecv.xml create mode 100644 modules/planet/queries/deleteSMSUser.xml create mode 100644 modules/planet/queries/getCatch.xml create mode 100644 modules/planet/queries/getCatchContentCount.xml create mode 100644 modules/planet/queries/getCatchContentList.xml create mode 100644 modules/planet/queries/getContentList.xml create mode 100644 modules/planet/queries/getContentListSearchTag.xml create mode 100644 modules/planet/queries/getContentSearchResult.xml create mode 100644 modules/planet/queries/getContents.xml create mode 100644 modules/planet/queries/getFavoriteContentList.xml create mode 100644 modules/planet/queries/getFavorites.xml create mode 100644 modules/planet/queries/getHomeContentList.xml create mode 100644 modules/planet/queries/getInterestTagContentList.xml create mode 100644 modules/planet/queries/getInterestTags.xml create mode 100644 modules/planet/queries/getMemberPlanet.xml create mode 100644 modules/planet/queries/getMyFavorite.xml create mode 100644 modules/planet/queries/getPlanet.xml create mode 100644 modules/planet/queries/getPlanetComments.xml create mode 100644 modules/planet/queries/getPlanetContentLastDay.xml create mode 100644 modules/planet/queries/getPlanetContentSearch.xml create mode 100644 modules/planet/queries/getPlanetContentSearchCount.xml create mode 100644 modules/planet/queries/getPlanetContents.xml create mode 100644 modules/planet/queries/getPlanetCount.xml create mode 100644 modules/planet/queries/getPlanetList.xml create mode 100644 modules/planet/queries/getPlanetMemo.xml create mode 100644 modules/planet/queries/getPlanetMemoList.xml create mode 100644 modules/planet/queries/getPlanetNewestContentList.xml create mode 100644 modules/planet/queries/getPlanetNewestTagSearchContentList.xml create mode 100644 modules/planet/queries/getPlanetPopularTags.xml create mode 100644 modules/planet/queries/getPlanetReply.xml create mode 100644 modules/planet/queries/getPlanetReplyList.xml create mode 100644 modules/planet/queries/getPlanetTag.xml create mode 100644 modules/planet/queries/getPlanetTagList.xml create mode 100644 modules/planet/queries/getPlanetTagSearchCount.xml create mode 100644 modules/planet/queries/getPlanetTagSearchResult.xml create mode 100644 modules/planet/queries/getPlanetTagTextCount.xml create mode 100644 modules/planet/queries/getSMSRecv.xml create mode 100644 modules/planet/queries/getSMSUser.xml create mode 100644 modules/planet/queries/getTagSearchResult.xml create mode 100644 modules/planet/queries/getTotalContents.xml create mode 100644 modules/planet/queries/getTotalTagSearchContents.xml create mode 100644 modules/planet/queries/insertCatch.xml create mode 100644 modules/planet/queries/insertInterestTag.xml create mode 100644 modules/planet/queries/insertPlanet.xml create mode 100644 modules/planet/queries/insertPlanetContent.xml create mode 100644 modules/planet/queries/insertPlanetContentVoteLog.xml create mode 100644 modules/planet/queries/insertPlanetFavorite.xml create mode 100644 modules/planet/queries/insertPlanetMemo.xml create mode 100644 modules/planet/queries/insertPlanetReply.xml create mode 100644 modules/planet/queries/insertPlanetTag.xml create mode 100644 modules/planet/queries/insertPlanetTagText.xml create mode 100644 modules/planet/queries/insertSMSRecv.xml create mode 100644 modules/planet/queries/insertSMSUser.xml create mode 100644 modules/planet/queries/updatePlanetBrowserTitle.xml create mode 100644 modules/planet/queries/updatePlanetColorset.xml create mode 100644 modules/planet/queries/updatePlanetContentReplyCount.xml create mode 100644 modules/planet/queries/updatePlanetContentVoteCount.xml create mode 100644 modules/planet/queries/updatePlanetLatestDocument.xml create mode 100644 modules/planet/queries/updatePlanetMe2day.xml create mode 100644 modules/planet/queries/updatePlanetTitle.xml create mode 100644 modules/planet/queries/updateShowReadWelcome.xml create mode 100644 modules/planet/schemas/planet.xml create mode 100644 modules/planet/schemas/planet_catch.xml create mode 100644 modules/planet/schemas/planet_content_vote_log.xml create mode 100644 modules/planet/schemas/planet_favorite.xml create mode 100644 modules/planet/schemas/planet_interest_tags.xml create mode 100644 modules/planet/schemas/planet_memo.xml create mode 100644 modules/planet/schemas/planet_sms_recv.xml create mode 100644 modules/planet/schemas/planet_sms_user.xml create mode 100644 modules/planet/schemas/planet_tags.xml create mode 100644 modules/planet/skins/xe_planet/content_list.html create mode 100644 modules/planet/skins/xe_planet/create.html create mode 100644 modules/planet/skins/xe_planet/css/blue.css create mode 100644 modules/planet/skins/xe_planet/css/button.css create mode 100644 modules/planet/skins/xe_planet/css/cyan.css create mode 100644 modules/planet/skins/xe_planet/css/default.css create mode 100644 modules/planet/skins/xe_planet/css/gray.css create mode 100644 modules/planet/skins/xe_planet/css/green.css create mode 100644 modules/planet/skins/xe_planet/css/layout.css create mode 100644 modules/planet/skins/xe_planet/css/orange.css create mode 100644 modules/planet/skins/xe_planet/css/red.css create mode 100644 modules/planet/skins/xe_planet/favorite.html create mode 100644 modules/planet/skins/xe_planet/filter/create.xml create mode 100644 modules/planet/skins/xe_planet/filter/insert_interest_tag.xml create mode 100644 modules/planet/skins/xe_planet/filter/insert_memo.xml create mode 100644 modules/planet/skins/xe_planet/filter/insert_reply.xml create mode 100644 modules/planet/skins/xe_planet/filter/me2day_api.xml create mode 100644 modules/planet/skins/xe_planet/filter/modify_content_tag.xml create mode 100644 modules/planet/skins/xe_planet/filter/modify_planet_info.xml create mode 100644 modules/planet/skins/xe_planet/filter/planet_login.xml create mode 100644 modules/planet/skins/xe_planet/filter/write_content.xml create mode 100644 modules/planet/skins/xe_planet/footer.html create mode 100644 modules/planet/skins/xe_planet/header.html create mode 100644 modules/planet/skins/xe_planet/images/@user1.gif create mode 100644 modules/planet/skins/xe_planet/images/@user2.gif create mode 100644 modules/planet/skins/xe_planet/images/arrowReplyOpen.gif create mode 100644 modules/planet/skins/xe_planet/images/arrowTagNavigation.gif create mode 100644 modules/planet/skins/xe_planet/images/bgBody.gif create mode 100644 modules/planet/skins/xe_planet/images/bgPerson.png create mode 100644 modules/planet/skins/xe_planet/images/bgSmile.png create mode 100644 modules/planet/skins/xe_planet/images/bgSympathy.gif create mode 100644 modules/planet/skins/xe_planet/images/bgTag.gif create mode 100644 modules/planet/skins/xe_planet/images/bgTag.png create mode 100644 modules/planet/skins/xe_planet/images/boxAuthorHeader.gif create mode 100644 modules/planet/skins/xe_planet/images/boxAuthorHeader.png create mode 100644 modules/planet/skins/xe_planet/images/boxCommentIn.gif create mode 100644 modules/planet/skins/xe_planet/images/boxCommentOut.gif create mode 100644 modules/planet/skins/xe_planet/images/boxH2Comment.gif create mode 100644 modules/planet/skins/xe_planet/images/boxMemo.gif create mode 100644 modules/planet/skins/xe_planet/images/boxMyFavoriteTag.gif create mode 100644 modules/planet/skins/xe_planet/images/boxTagChoice.png create mode 100644 modules/planet/skins/xe_planet/images/boxTagCloud.gif create mode 100644 modules/planet/skins/xe_planet/images/boxTagNavigation.gif create mode 100644 modules/planet/skins/xe_planet/images/boxTagSelected.gif create mode 100644 modules/planet/skins/xe_planet/images/boxTryPlanet.gif create mode 100644 modules/planet/skins/xe_planet/images/boxWelcome.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonAquaBlue.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonAutoComplete.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonBlack.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonBlue.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonClose1.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonFixedBlack45.png create mode 100644 modules/planet/skins/xe_planet/images/buttonFixedBlack94.png create mode 100644 modules/planet/skins/xe_planet/images/buttonGnb.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonGreen.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonLogin.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonModify.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonNext1.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonPlanetBlue.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonPlanetGreen.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonPrev1.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonRed.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonSympathy.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonTagNavigation.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWhite.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteBlue.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteCyan.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteGray.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteGreen.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteOrange.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonWriteRed.gif create mode 100644 modules/planet/skins/xe_planet/images/buttonX.gif create mode 100644 modules/planet/skins/xe_planet/images/cr3px.gif create mode 100644 modules/planet/skins/xe_planet/images/cr3pxLeft.gif create mode 100644 modules/planet/skins/xe_planet/images/cr3pxRight.gif create mode 100644 modules/planet/skins/xe_planet/images/iconAdd.gif create mode 100644 modules/planet/skins/xe_planet/images/iconAddFavorite.gif create mode 100644 modules/planet/skins/xe_planet/images/iconCheckGreen.gif create mode 100644 modules/planet/skins/xe_planet/images/iconCheckYellow.gif create mode 100644 modules/planet/skins/xe_planet/images/iconExternalLink.gif create mode 100644 modules/planet/skins/xe_planet/images/iconMe2day.png create mode 100644 modules/planet/skins/xe_planet/images/iconMobile.gif create mode 100644 modules/planet/skins/xe_planet/images/iconWrite.gif create mode 100644 modules/planet/skins/xe_planet/images/icon_me2day.png create mode 100644 modules/planet/skins/xe_planet/images/lineVccc.gif create mode 100644 modules/planet/skins/xe_planet/images/paginationNext.gif create mode 100644 modules/planet/skins/xe_planet/images/paginationNextEnd.gif create mode 100644 modules/planet/skins/xe_planet/images/paginationPrev.gif create mode 100644 modules/planet/skins/xe_planet/images/paginationPrevEnd.gif create mode 100644 modules/planet/skins/xe_planet/images/rssFeed.png create mode 100644 modules/planet/skins/xe_planet/images/rssOff.png create mode 100644 modules/planet/skins/xe_planet/images/rssOn.png create mode 100644 modules/planet/skins/xe_planet/images/tabSearch.gif create mode 100644 modules/planet/skins/xe_planet/interest_tags.html create mode 100644 modules/planet/skins/xe_planet/js/jindo2.js create mode 100644 modules/planet/skins/xe_planet/js/planet.js create mode 100644 modules/planet/skins/xe_planet/js/planet_func.js create mode 100644 modules/planet/skins/xe_planet/login.html create mode 100644 modules/planet/skins/xe_planet/main.html create mode 100644 modules/planet/skins/xe_planet/memo_list.html create mode 100644 modules/planet/skins/xe_planet/message.html create mode 100644 modules/planet/skins/xe_planet/myPlanet.html create mode 100644 modules/planet/skins/xe_planet/planet_info.include.html create mode 100644 modules/planet/skins/xe_planet/reply_list.html create mode 100644 modules/planet/skins/xe_planet/search.html create mode 100644 modules/planet/skins/xe_planet/search_planet.html create mode 100644 modules/planet/skins/xe_planet/search_tab.include.html create mode 100644 modules/planet/skins/xe_planet/skin.xml create mode 100644 modules/planet/tpl/filter/delete_planet.xml create mode 100644 modules/planet/tpl/filter/insert.xml create mode 100644 modules/planet/tpl/filter/insert_config.xml create mode 100644 modules/planet/tpl/header.html create mode 100644 modules/planet/tpl/images/blank_photo.gif create mode 100644 modules/planet/tpl/insert.html create mode 100644 modules/planet/tpl/js/planet.js create mode 100644 modules/planet/tpl/list.html create mode 100644 modules/planet/tpl/move_myplanet.html create mode 100644 modules/planet/tpl/planet_delete.html create mode 100644 modules/planet/tpl/setup.html create mode 100644 modules/planet/tpl/skin_info.html create mode 100644 modules/planet/tpl/top_refresh.html diff --git a/modules/planet/conf/info.xml b/modules/planet/conf/info.xml new file mode 100644 index 000000000..18d5504d9 --- /dev/null +++ b/modules/planet/conf/info.xml @@ -0,0 +1,14 @@ + + + 플래닛 + Microblog입니다. + 0.1 + 2008-09-30 + package + + sol + + + zero + + diff --git a/modules/planet/conf/module.xml b/modules/planet/conf/module.xml new file mode 100644 index 000000000..4ff90a523 --- /dev/null +++ b/modules/planet/conf/module.xml @@ -0,0 +1,90 @@ + + + + + 접근 + + + 플래닛 생성 + + + 글쓰기 + + + 관리 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/lang/jp.lang.php b/modules/planet/lang/jp.lang.php new file mode 100644 index 000000000..1c756e19c --- /dev/null +++ b/modules/planet/lang/jp.lang.php @@ -0,0 +1,174 @@ +planet = "プラネット"; + $lang->planet_title = "プラネットタイトル"; + $lang->planet_url = "プラネットURL"; + $lang->planet_myplanet = "マイプラネット"; + $lang->planet_whos_planet = "%s さんのプラネット"; + $lang->planet_whos_favorite = "%s さんのお気に入り"; + $lang->planet_whos_favorite_list = "'%s'さんがよく訪れるプラネット"; + + $lang->planet_welcome = "ようこそ!"; + + $lang->planet_reply_content = "プラネットのコメント内容"; + + $lang->about_planet = "microBlogのXEモジュールです。会員別のプラネットを作成して運営することができます。"; + + $lang->planet_mid = "プラネット接続アドレス"; + $lang->about_planet_mid = "プラネット接続アドレスは「http://XEアドレス/プラネット接続アドレス」のようにダイレクトで接続できるアドレスを指します。"; + + $lang->planet_default_skin = "プラネット基本スキン"; + $lang->about_planet_default_skin = "プラネットメインページ及び作成されたプラネットの基本スキンに設定されます。"; + + $lang->planet_comment = "プラネットひと言紹介"; + $lang->about_planet_comment = "プラネットひと言紹介はプラネットに接続した時ブラウザのタイトル及びプラネットのひと言紹介欄に表示される内容です。"; + + $lang->use_signup = "会員登録ボタン表示"; + $lang->about_use_signup = "会員登録ボタン表示を選択するとプラネットの上段メニュに会員登録ができるボタンが表示されます。"; + + + $lang->cmd_create_planet = "マイプラネット作成"; + $lang->create_message = "マイプラネット作成案内文"; + $lang->about_create_message = "プラネット作成時に表示される案内文が入力できます。"; + + $lang->cmd_planet_setup = "基本設定"; + $lang->cmd_planet_list = "プラネットリスト"; + + $lang->msg_not_logged = "ログインしていません。"; + $lang->msg_planet_exists = "既に作成したプラネットがありますので新しく作成することができません。"; + + $lang->planet_userinfo = "個人情報"; + $lang->planet_change_userinfo = "個人情報変更"; + + $lang->planet_change_photo = "写真変更"; + $lang->about_planet_change_photo = "画像サイズは96×96pxに設定されます。"; + $lang->cmd_planet_image_upload = "画像アップロード"; + + $lang->cmd_planet_good = "推薦"; + $lang->cmd_planet_addfavorite = "お気に入り追加"; + + $lang->planet_hot_tag = "人気タグ"; + $lang->planet_home = "TOP"; + $lang->cmd_planet_more_tag = "タグをもっと見る"; + + $lang->planet_memo = "メモ"; + $lang->cmd_planet_show_memo_write_form = "メモ作成"; + $lang->cmd_planet_delete_memo = "メモ削除"; + $lang->cmd_planet_memo_write_ok = "入力完了"; + + $lang->planet_interest_tag = "関心タグ"; + $lang->planet_interest_content = "関心記事"; + $lang->cmd_planet_show_interest_tag = "関心タグを見る"; + $lang->cmd_planet_close_interest_tag = "関心タグを閉じる"; + $lang->msg_planet_already_added_interest_tag = "既に登録された関心タグです。"; + + $lang->cmd_planet_edit_subject = "タイトル編集"; + $lang->cmd_planet_edit_intro = "ひと言紹介編集"; + $lang->cmd_planet_edit_tag = "タグ編集"; + + $lang->cmd_planet_openclose_memo = "メモを開く/閉じる"; + $lang->cmd_planet_del_tag = "タグ削除"; + + + $lang->cmd_planet_openclose_recommend_search = "推薦検索を開く/閉じる"; + $lang->about_planet_input_search_text = "検索語入力"; + + + $lang->about_planet_make_planet = "マイプラネットを作成しましょ。プラネットの上段に表示される「マイインフォ」を入力してください。"; + $lang->about_planet_make_planet_info = "マイプラネットの上段に表示されるマイインフォです。各項目を入力して設定を変更してください。"; + $lang->planet_input_personalinfo = "個人情報入力"; + $lang->planet_photo = "写真"; + $lang->planet_myintro = "自己紹介"; + + $lang->about_planet_url = "設定後変更できません。"; + $lang->planet_mytag = "人物タグ"; + $lang->about_planet_mytag = "自分を表現するタグです。複数のタグは「,」で区別されます。"; + + $lang->about_planet_tag = "複数のタグは「,」で区別されます。"; + + $lang->cmd_planet_makeOk_move_myplanet = "確認 : 作成されたマイプラネットに移動します。"; + $lang->cmd_planet_ok_move_myplanet = "確認 : マイプラネットに移動します。"; + + + $lang->about_planet_login = "IDとPasswordを入力してログインボタンをクリックしてください。"; + + $lang->cmd_planet_login = "ログイン"; + + + $lang->planet_nowhot_tag = "プラネット人気タグ"; + $lang->cmd_planet_close_nowhot_tag = "人気タグを閉じる"; + + $lang->about_planet_whats_textSearch_in_planet = "%sさんのプラネットから検索した'%s'の検索結果です。"; + $lang->about_planet_whats_textSearch = "'%s'の全体検索結果です。"; + + $lang->planet_acticle = "記事"; + $lang->planet_persontag = "人物タグ"; + + $lang->planet_recent_acticle = "最新記事"; + + + $lang->cmd_planet_add_tag = "関心タグ追加"; + $lang->cmd_planet_add_article = "書き込み"; + $lang->cmd_planet_post_article = "登録"; + $lang->planet_postscript = "P.S"; + $lang->planet_article_preview = "プレビュー"; + + + $lang->planet_notice_title = "%sさん、プラネットにようこそ!
%sさんの考え、意見、情報、知識などを自由にたくさんの人々と共有できるプラネットです。簡単な使い方を案内します。"; + $lang->planet_notice_list = array( + "「書き込み」の「開く」ボタンを利用してみてください。記事を作成するウィンドウが開きます。", + "作成された記事は %sさんのプラネットに訪問する人々に公開されます。", + "「お気に入り追加」と「関心タグ追加」機能を利用すれば%sさんの関心記事を見ることができます。", + "%sさんの「写真、ネックネーム、タグ」などの情報は現在ページから変更できます。", + "他のプラネットが気になりますか?「リアルタイム人気タグ」または「検索」を利用してみてください。", + "その他、気になる部分は「質問」タグを検索してみてください。他の方から答えてもらえます。", + ); + $lang->planet_notice_disable = "以降このメッセージを表示しません。"; + + $lang->msg_planet_about_postscript = "追加で書きたいことがありましたら作成してください。"; + $lang->msg_planet_about_tag = "タグを書いてください。(「,」で区別)"; + $lang->msg_planet_already_added_favorite = "ですに登録されたお気に入りです。"; + $lang->msg_planet_no_memo = "登録されたメモがありません。"; + + $lang->msg_planet_rss_enabled = "RSS配布機能を使用中です。"; + $lang->msg_planet_rss_disabled = "RSS配布機能を使用していません。"; + + $lang->msg_me2day_sync = "me2dayに記事を送る"; + $lang->msg_me2day_sync_q = "me2dayに記事を伝送しますか?"; + $lang->me2day_id = "me2dayアドレス"; + $lang->me2day_ukey = "ユーザーキー"; + $lang->msg_me2day_activate = "自動伝送設定されました。"; + $lang->msg_fail_auth_me2day = "Me2dayの認証に失敗しました。"; + $lang->msg_success_auth_me2day = "Me2day認証に成功しました。"; + + $lang->planet_total_articles = "全て"; + $lang->planet_wantyou = "推薦"; + $lang->planet_best = "満船"; + $lang->planet_catch = "釣った記事"; + $lang->planet_fish = "釣られた記事"; + $lang->planet_bigfish = "満船"; + $lang->cmd_send_me2day = "me2day発送"; + + $lang->msg_already_have_phone_number = '이미 전화번호가 등록되어 있습니다.'; + $lang->planet_mobile_receive = '모바일 연동'; + $lang->planet_mobile_number = '전화번호'; + $lang->msg_success_set_phone_number = '전화번호가 등록되었습니다.'; + + + $lang->planet_tagtab = "메인 추가 Tag 탭"; + $lang->about_planet_tagtab = "콤마(,)로 여러개의 Tag를 지정할 수 있으며, 지정한 Tag는 메인에 탭으로 출력 됩니다. 글쓰기 창에도 출력됩니다."; + $lang->planet_smstag = "SMS 등록 Tag"; + $lang->about_planet_smstag = "콤마(,)로 여러개의 Tag를 지정할 수 있으며, SMS로 등록시에 등록 되는 Tag"; + + $lang->planet_use_mobile = "SMS 연동"; + $lang->about_use_mobile = "핸드폰 SMS로 글을 작성할 수 있게 합니다."; + $lang->planet_use_me2day = "미투데이 연동"; + $lang->about_use_me2day = "글 작성시 me2day에 보내게 됩니다."; + +?> \ No newline at end of file diff --git a/modules/planet/lang/ko.lang.php b/modules/planet/lang/ko.lang.php new file mode 100644 index 000000000..fd1c22c1f --- /dev/null +++ b/modules/planet/lang/ko.lang.php @@ -0,0 +1,175 @@ +planet = "플래닛"; + $lang->planet_title = "플래닛 제목"; + $lang->planet_url = "플래닛 URL"; + $lang->planet_myplanet = "내 플래닛"; + $lang->planet_whos_planet = "%s 님의 플래닛"; + $lang->planet_whos_favorite = "%s 님의 즐겨찾기"; + $lang->planet_whos_favorite_list = "'%s'님께서 즐겨찾는 플래닛"; + + $lang->planet_welcome = "축하합니다"; + + $lang->planet_reply_content = "플래닛 댓글 내용"; + + $lang->about_planet = + "microBlog의 XE 모듈입니다. 회원별로 플래닛을 생성하여 운영할 수 있습니다 + 홈페이지 패키지에서 사용되는 도메인으로는 플래닛이 접속이 안될 수도 있습니다. + 플래닛을 초기페이지로 사용하고 싶으시면 접속을 원하시는 도메인을 홈페이지 패키지등에서 사용하지 않으셔야 합니다"; + + $lang->planet_mid = "플래닛 접속 주소"; + $lang->about_planet_mid = "플래닛 접속 주소는 http://XE주소/플래닛주소 와 같이 바로 접속가능할 수 있는 주소를 뜻합니다"; + + $lang->planet_default_skin = "플래닛 기본 스킨"; + $lang->about_planet_default_skin = "플래닛 메인 페이지 및 생성된 플래닛들의 기본 스킨으로 설정됩니다"; + + $lang->planet_comment = "플래닛 한줄 소개"; + $lang->about_planet_comment = "플래닛 한줄 소개는 플래닛 접속시 브라우저 제목과 플래닛의 한줄 소개란에 표시되는 내용입니다"; + + $lang->use_signup = "회원가입 연결"; + $lang->about_use_signup = "회원가입 연결을 선택하시면 플래닛의 상단메뉴에 회원가입할 수 있는 링크가 나타납니다"; + + + $lang->cmd_create_planet = "내 플래닛 만들기"; + $lang->create_message = "플래닛 생성 안내글"; + $lang->about_create_message = "플래닛 생성시 나타나는 안내글을 입력하실 수 있습니다"; + + $lang->cmd_planet_setup = "기본 설정"; + $lang->cmd_planet_list = "플래닛 목록"; + + $lang->msg_not_logged = "로그인 되어 있지 않습니다"; + $lang->msg_planet_exists = "이미 생성하신 플래닛이 있어서 새로 만드실 수 없습니다"; + + $lang->planet_userinfo = "개인정보"; + $lang->planet_change_userinfo = "개인정보변경"; + + $lang->planet_change_photo = "사진바꾸기"; + $lang->about_planet_change_photo = "이미지 사이즈는 96x96 픽셀(MSN 메신져 사진과 같은 크기)으로 설정 됩니다."; + $lang->cmd_planet_image_upload = "이미지올리기"; + + $lang->cmd_planet_good = "원츄"; + $lang->cmd_planet_addfavorite = "즐겨찾기추가"; + + $lang->planet_hot_tag = "실시간 인기태그"; + $lang->planet_home = "홈"; + $lang->cmd_planet_more_tag = "더 많은 태그 보기"; + + $lang->planet_memo = "메모"; + $lang->cmd_planet_show_memo_write_form = "메모쓰기"; + $lang->cmd_planet_delete_memo = "메모삭제"; + $lang->cmd_planet_memo_write_ok = "입력완료"; + + $lang->planet_interest_tag = "관심태그"; + $lang->planet_interest_content = "관심글"; + $lang->cmd_planet_show_interest_tag = "관심태그 보기"; + $lang->cmd_planet_close_interest_tag = "관심태그 닫기"; + $lang->msg_planet_already_added_interest_tag = "이미 등록된 관심태그입니다"; + + $lang->cmd_planet_edit_subject = "제목편집"; + $lang->cmd_planet_edit_intro = "한줄소개편집"; + $lang->cmd_planet_edit_tag = "태그편집"; + + $lang->cmd_planet_openclose_memo = "메모 열기/닫기"; + $lang->cmd_planet_del_tag = "태그삭제"; + + + $lang->cmd_planet_openclose_recommend_search = "추천 검색어 열기/닫기"; + $lang->about_planet_input_search_text = "검색어입력"; + + + $lang->about_planet_make_planet = "내 플래닛을 만들어 보세요. 플래닛 상단에 보여질 나의 정보를 입력해주세요."; + $lang->about_planet_make_planet_info = "내 플래닛의 상단에 보여질 나의 정보입니다. 각 항목을 원하는 대로 설정하고 변경해보세요."; + $lang->planet_input_personalinfo = "개인정보입력"; + $lang->planet_photo = "사진"; + $lang->planet_myintro = "자기소개"; + + $lang->about_planet_url = "설정 후 변경할 수 없습니다"; + $lang->planet_mytag = "인물 태그"; + $lang->about_planet_mytag = "나를 표현하는 태그로써 여러개의 태그는 쉼표로 구분 합니다."; + + $lang->about_planet_tag = "여러개의 태그는 쉼표로 구분 합니다."; + + $lang->cmd_planet_makeOk_move_myplanet = "확인 : 생성된 내 플래닛으로 이동 합니다"; + $lang->cmd_planet_ok_move_myplanet = "확인 : 내 플래닛으로 이동 합니다"; + + + $lang->about_planet_login = "아이디와 비밀번호를 입력하고 로그인 버튼을 누르세요"; + + $lang->cmd_planet_login = "로그인"; + + + $lang->planet_nowhot_tag = "플래닛 실시간 인기태그"; + $lang->cmd_planet_close_nowhot_tag = "실시간 인기태그 닫기"; + + $lang->about_planet_whats_textSearch_in_planet = "%s님의 플래닛에서 검색한 '%s' 에 대한 결과 입니다."; + $lang->about_planet_whats_textSearch = "'%s' 에 대한 전체 검색결과 입니다."; + + $lang->planet_acticle = "글"; + $lang->planet_persontag = "인물태그"; + + $lang->planet_recent_acticle = "최신 업데이트 글"; + + + $lang->cmd_planet_add_tag = "관심태그추가"; + $lang->cmd_planet_add_article = "새글쓰기"; + $lang->cmd_planet_post_article = "글 올리기"; + $lang->planet_postscript = "P.S."; + $lang->planet_article_preview = "미리보기"; + + + $lang->planet_notice_title = "%s님 반갑습니다!
%s님의 생각, 의견, 정보, 지식 등을 자유롭고 편안하게 많은 분들과 나눌 수 있는 곳, 플래닛 입니다. 몇 가지 사용법을 안내해 드릴께요.^^"; + $lang->planet_notice_list = array( + "'새글쓰기'창의 '열기' 버튼을 이용해 보세요. 글을 작성할 수 있는 창이 열립니다.", + "작성된 새글은 %s님의 플래닛을 방문하신 모든 분들이 볼 수 있고 댓글도 추가할 수 있습니다.", + "'즐겨찾기추가'와 '관심태그추가' 기능을 이용하면 %s님의 관심글로 언제든지 바로가기 할 수 있습니다.", + "%s님의 '사진, 닉네임, 태그' 등의 정보는 현재 페이지에서 즉시 변경할 수 있습니다.", + "다른 플래닛이 궁금하시다구요? 실시간 인기태그 또는 검색을 이용해보세요.", + "기타 궁금하신 점은 '질문' 태그를 검색해 보세요. 다른 분들의 도움을 받을 수 있습니다.", + ); + $lang->planet_notice_disable = "이 메시지를 다시 보지 않습니다."; + + $lang->msg_planet_about_postscript = "덧붙이고 싶은 말이 있으면 적으세요"; + $lang->msg_planet_about_tag = "태그를 적으세요. (쉼표로 구분)"; + $lang->msg_planet_already_added_favorite = "이미 등록된 즐겨찾기 입니다"; + $lang->msg_planet_no_memo = "등록된 메모가 없습니다"; + + $lang->msg_planet_rss_enabled = "RSS 배포 기능을 사용중입니다"; + $lang->msg_planet_rss_disabled = "RSS 배포 기능을 사용하지 않고 있습니다"; + + $lang->msg_me2day_sync = "미투데이로 글 보내기"; + $lang->msg_me2day_sync_q = "미투데이로 내 글을 전송하시겠습니까?"; + $lang->me2day_id = "미투 주소"; + $lang->me2day_ukey = "사용자 키"; + $lang->msg_me2day_activate = "항상 자동으로 전송합니다"; + $lang->msg_fail_auth_me2day = "Me2day 인증 실패하였습니다"; + $lang->msg_success_auth_me2day = "Me2day 인증에 성공하였습니다"; + + $lang->planet_total_articles = "전부"; + $lang->planet_wantyou = "원츄"; + $lang->planet_best = "월척"; + $lang->planet_catch = "낚은 글"; + $lang->planet_fish = "낚인 글"; + $lang->planet_bigfish = "월척"; + $lang->cmd_send_me2day = "미투발송"; + + $lang->msg_already_have_phone_number = '이미 전화번호가 등록되어 있습니다.'; + $lang->planet_mobile_receive = '모바일 연동'; + $lang->planet_mobile_number = '전화번호'; + $lang->msg_success_set_phone_number = '전화번호가 등록되었습니다.'; + + $lang->planet_tagtab = "메인 추가 Tag 탭"; + $lang->about_planet_tagtab = "콤마(,)로 여러개의 Tag를 지정할 수 있으며, 지정한 Tag는 메인에 탭으로 출력 됩니다. 글쓰기 창에도 출력됩니다."; + $lang->planet_smstag = "SMS 등록 Tag"; + $lang->about_planet_smstag = "콤마(,)로 여러개의 Tag를 지정할 수 있으며, SMS로 등록시에 등록 되는 Tag"; + + $lang->planet_use_mobile = "SMS 연동"; + $lang->about_use_mobile = "핸드폰 SMS로 글을 작성할 수 있게 합니다."; + $lang->planet_use_me2day = "미투데이 연동"; + $lang->about_use_me2day = "글 작성시 me2day에 보내게 됩니다."; + +?> diff --git a/modules/planet/libs/me2day.api.php b/modules/planet/libs/me2day.api.php new file mode 100644 index 000000000..1c007cb52 --- /dev/null +++ b/modules/planet/libs/me2day.api.php @@ -0,0 +1,86 @@ +user_id = $user_id; + $this->user_key = $user_key; + } + + function _getNonce() { + for($i=0;$i<8;$i++) $nonce .= dechex(rand(0, 15)); + return $nonce; + } + + function _getAuthKey() { + $nonce = $this->_getNonce(); + return $nonce.md5($nonce.$this->user_key); + } + + function _getPath($method, $user_id = null) { + if(!$user_id) return sprintf('/api/%s.xml', $method); + return sprintf('/api/%s/%s.xml',$method, $user_id); + } + + function _getContent($method, $user_id = null, $params = null) { + $host = $this->api_host; + $path = $this->_getPath($method, $user_id); + $port = $this->api_port; + $auth = base64_encode($this->user_id.':'.$this->_getAuthKey()); + + $arr_content = array(); + if(is_array($params) && count($params)) { + foreach($params as $key => $val) { + $arr_content[] = sprintf('%s=%s', $key, urlencode($val)); + } + $content = implode('&',$arr_content); + } + $header = sprintf( + "POST %s HTTP/1.0\r\n". + "Host: %s\r\n". + "me2_application_key: %s\r\n". + "Content-Type: application/x-www-form-urlencoded\r\n". + "Authorization: Basic %s\r\n". + "Content-Length: %d\r\n\r\n", + $path, + $host, + $this->application_key, + $auth, + strlen($content) + ); + if($content) $header.=$content."\r\n\r\n"; + + $fp = fsockopen($host, $port); + if(!$fp) return null; + + fwrite($fp, $header); + $started = false; + while(!feof($fp)) { + $str = fgets($fp, 1024); + if(!trim($str)) $started = true; + if($started) $buff .= $str; + } + fclose($fp); + return trim($buff); + } + + function chkNoop() { + $buff = $this->_getContent('noop'); + if(strpos($buff, '0')!==false) return new Object(); + return new Object(-1, $buff); + } + + function doPost($body, $tags, $content_type = 'document') { + $params = array('post[body]'=>$body, 'post[tags]'=>str_replace(',',' ',$tags), 'content_type'=>$content_type); + $buff = $this->_getContent('create_post',$this->user_id,$params); + if(strpos($buff, '0')!==false) return new Object(); + return new Object(-1,$buff); + } + } +?> diff --git a/modules/planet/planet.admin.controller.php b/modules/planet/planet.admin.controller.php new file mode 100644 index 000000000..23acf2a5b --- /dev/null +++ b/modules/planet/planet.admin.controller.php @@ -0,0 +1,201 @@ +getPlanetConfig(); + + // mid, browser_title, is_default 값이 바뀌면 처리 + $config->mid = $args->mid = Context::get('planet_mid'); + $args->browser_title = Context::get('browser_title'); + $args->is_default = Context::get('is_default'); + $args->skin = Context::get('planet_default_skin'); + + + + $args->module = 'planet'; + $args->module_srl = $config->module_srl; + if($args->is_default == 'Y') { + $output = $oModuleController->clearDefaultModule(); + if(!$output->toBool()) return $output; + } + $output = $oModuleController->updateModule($args); + if(!$output->toBool()) return $output; + + // 그외 정보 처리 + $config->planet_default_skin = Context::get('planet_default_skin'); + $config->use_mobile = Context::get('use_mobile'); + $config->use_me2day = Context::get('use_me2day'); + + + $tagtab = explode(',',Context::get('planet_tagtab')); + for($i=0,$c=count($tagtab);$i<$c;$i++){ + if(trim($tagtab[$i])) continue; + $tagtab[$i] = trim($tagtab[$i]); + } + $tagtab = array_unique($tagtab); + $config->tagtab = $tagtab; + + + $smstag = explode(',',Context::get('planet_smstag')); + for($i=0,$c=count($smstag);$i<$c;$i++){ + if(trim($smstag[$i])) continue; + $tagtab[$i] = trim($tagtab[$i]); + } + $smstag = array_unique($smstag); + $config->smstag = $smstag; + + + $config->create_message = Context::get('create_message'); + $config->use_signup = Context::get('use_signup'); + if($config->use_signup != 'Y') $config->use_signup = 'N'; + + $grant_list = array('access','create','manager'); + foreach($grant_list as $key) { + $tmp = trim(Context::get($key)); + if(!$tmp) { + $config->grants[$key] = null; + continue; + } + $config->grants[$key] = explode('|@|', $tmp); + } + + $oPlanetController = &getController('planet'); + $oPlanetController->insertPlanetConfig($config); + + $this->setMessage("success_saved"); + } + + function procPlanetAdminInsert() { + $args = Context::gets('planet_mid','browser_title','description','module_srl'); + $args->mid = $args->planet_mid; + unset($args->planet_mid); + + if(!$args->module_srl) return new Object(-1,'msg_invalid_request'); + + $oPlanetModel = &getModel('planet'); + $oPlanetController = &getController('planet'); + + $oPlanet = $oPlanetModel->getPlanet($args->module_srl); + $planet = $oPlanet->getObjectVars(); + $planet->mid = $args->mid; + $planet->browser_title = $args->browser_title; + $planet->description = $args->description; + + $output = $oPlanetController->updatePlanet($planet); + + if(!$output->toBool()) return $output; + + $this->add('module_srl',$output->get('module_srl')); + $this->setMessage('success_saved'); + } + + function procPlanetAdminDelete() { + $module_srl = Context::get('module_srl'); + + // 원본을 구해온다 + $oModuleController = &getController('module'); + $output = $oModuleController->deleteModule($module_srl); + if(!$output->toBool()) return $output; + + $args->module_srl = $module_srl; + executeQuery('planet.deletePlanet', $args); + executeQuery('planet.deletePlanetFavorites', $args); + executeQuery('planet.deletePlanetTags', $args); + executeQuery('planet.deletePlanetVoteLogs', $args); + executeQuery('planet.deletePlanetMemos', $args); + + $this->add('module','planet'); + $this->add('page',Context::get('page')); + $this->setMessage('success_deleted'); + } + + function procPlanetAdminUpdateSkinInfo() { + $oPlanetModel = &getModel('planet'); + $config = $oPlanetModel->getPlanetConfig(); + $skin = $config->planet_default_skin; + + $oModuleModel = &getModel('module'); + $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); + + $obj = Context::getRequestVars(); + unset($obj->act); + unset($obj->module_srl); + unset($obj->page); + unset($obj->module); + + $config->colorset = $obj->colorset; + + // 원 skin_info에서 extra_vars의 type이 image일 경우 별도 처리를 해줌 + if($skin_info->extra_vars) { + foreach($skin_info->extra_vars as $vars) { + if($vars->type!='image') { + $config->{$vars->name} = $obj->{$vars->name}; + continue; + } + + $image_obj = $obj->{$vars->name}; + + // 삭제 요청에 대한 변수를 구함 + $del_var = $obj->{"del_".$vars->name}; + unset($obj->{"del_".$vars->name}); + if($del_var == 'Y') { + FileHandler::removeFile($config->{$vars->name}); + $config->{$vars->name} = ''; + continue; + } + + // 업로드 되지 않았다면 이전 데이터를 그대로 사용 + if(!$image_obj['tmp_name']) continue; + + // 정상적으로 업로드된 파일이 아니면 무시 + if(!is_uploaded_file($image_obj['tmp_name'])) continue; + + // 이미지 파일이 아니어도 무시 + if(!preg_match("/\.(jpg|jpeg|gif|png)$/i", $image_obj['name'])) continue; + + // 경로를 정해서 업로드 + $path = sprintf("./files/attach/planet/", $module_srl); + + // 디렉토리 생성 + if(!FileHandler::makeDir($path)) return false; + + $filename = $path.$image_obj['name']; + + // 파일 이동 + if(!move_uploaded_file($image_obj['tmp_name'], $filename)) { + unset($obj->{$vars->name}); + continue; + } + + // 변수를 바꿈 + $config->{$vars->name} = $filename; + } + } + + $oPlanetController = &getController('planet'); + $oPlanetController->insertPlanetConfig($config); + + $this->setLayoutPath('./common/tpl'); + $this->setLayoutFile('default_layout.html'); + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile("top_refresh.html"); + } + + + } +?> diff --git a/modules/planet/planet.admin.model.php b/modules/planet/planet.admin.model.php new file mode 100644 index 000000000..22b2e3182 --- /dev/null +++ b/modules/planet/planet.admin.model.php @@ -0,0 +1,18 @@ + diff --git a/modules/planet/planet.admin.view.php b/modules/planet/planet.admin.view.php new file mode 100644 index 000000000..dadbe323c --- /dev/null +++ b/modules/planet/planet.admin.view.php @@ -0,0 +1,111 @@ +config = $oPlanetModel->getPlanetConfig(); + Context::set('config',$this->config); + $oPlanetModel->isAccessGranted(); + + $this->setTemplatePath($this->module_path."/tpl/"); + $template_path = sprintf("%stpl/",$this->module_path); + $this->setTemplatePath($template_path); + } + + function dispPlanetAdminSetup() { + + $oModuleModel = &getModel('module'); + $skin_list = $oModuleModel->getSkins($this->module_path); + Context::set('skin_list',$skin_list); + + $grant_list = $this->xml_info->grant; + Context::set('grant_list', $grant_list); + + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + if(is_array($this->config->tagtab)) Context::set('tagtab', join(',',$this->config->tagtab)); + if(is_array($this->config->smstag)) Context::set('smstag', join(',',$this->config->smstag)); + + + $this->setTemplateFile('setup'); + } + + function dispPlanetAdminList() { + + $page = Context::get('page'); + if(!$page) $page = 1; + + $oPlanetModel = &getModel('planet'); + $output = $oPlanetModel->getPlanetList(20, $page, 'regdate'); + + Context::set('planet_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + $this->setTemplateFile('list'); + } + + function dispPlanetAdminInsert() { + $module_srl = Context::get('module_srl'); + if($module_srl) { + $oPlanetModel = &getModel('planet'); + Context::set('planet', $oPlanetModel->getPlanet($module_srl)); + } + + $this->setTemplateFile('insert'); + } + + function dispPlanetAdminDelete() { + if(!Context::get('module_srl')) return $this->dispPlanetAdminList(); + $module_srl = Context::get('module_srl'); + + $oPlanetModel = &getModel('planet'); + $oPlanet = $oPlanetModel->getPlanet($module_srl); + $planet_info = $oPlanet->getObjectVars(); + + $oDocumentModel = &getModel('document'); + $document_count = $oDocumentModel->getDocumentCount($planet_info->module_srl); + $planet_info->document_count = $document_count; + + Context::set('planet_info',$planet_info); + + // 템플릿 파일 지정 + $this->setTemplateFile('planet_delete'); + } + + function dispPlanetAdminSkinInfo() { + $oPlanetModel = &getModel('planet'); + $config = $oPlanetModel->getPlanetConfig(); + $skin = $config->planet_default_skin; + + $oModuleModel = &getModel('module'); + $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); + + // skin_info에 extra_vars 값을 지정 + if(count($skin_info->extra_vars)) { + foreach($skin_info->extra_vars as $key => $val) { + $group = $val->group; + $name = $val->name; + $type = $val->type; + $value = $config->{$name}; + if($type=="checkbox"&&!$value) $value = array(); + $skin_info->extra_vars[$key]->value= $value; + } + } + + Context::set('skin_info', $skin_info); + $this->setTemplateFile('skin_info'); + } + + } + +?> diff --git a/modules/planet/planet.api.php b/modules/planet/planet.api.php new file mode 100644 index 000000000..e23d70bf3 --- /dev/null +++ b/modules/planet/planet.api.php @@ -0,0 +1,66 @@ +add('contentList', $this->arrangeContentList( Context::get('content_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function dispPlanet(&$oModule) { + $oModule->add('contentList', $this->arrangeContentList( Context::get('content_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function favorite(&$oModule) { + $oModule->add('contentList', $this->arrangeContentList( Context::get('content_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function dispPlanetContentTagSearch(&$oModule){ + $oModule->add('contentList', $this->arrangeContentList( Context::get('content_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function dispPlanetContentSearch(&$oModule){ + $oModule->add('contentList', $this->arrangeContentList( Context::get('content_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function dispPlanetTagSearch(&$oModule){ + $oModule->add('planetList', $this->arrangePlanetList( Context::get('planet_list') ) ); + $oModule->add('pageNavigation', Context::get('page_navigation')); + } + + function arrangeContentList($content_list) { + $output = array(); + if(count($content_list)) { + foreach($content_list as $key => $val) { + $item = null; + $item = $val->gets('mid','document_srl','nick_name','content','postscript','voted_count','regdate','tag_list'); + $item->photo = $val->getPlanetPhotoSrc(); + $output[] = $item; + } + } + return $output; + } + + function arrangePlanetList($planet_list) { + $output = array(); + if(count($planet_list)) { + foreach($planet_list as $key => $val) { + $item = null; + $item = $val->gets('mid','document_srl','nick_name','content','postscript','voted_count','regdate','tag_list'); + $item->photo = $val->getPhotoSrc(); + $output[] = $item; + } + } + return $output; + } + } +?> diff --git a/modules/planet/planet.class.php b/modules/planet/planet.class.php new file mode 100644 index 000000000..ac3d552b4 --- /dev/null +++ b/modules/planet/planet.class.php @@ -0,0 +1,84 @@ +getModuleConfig('planet'); + if($config->mid) { + $_o = executeQuery('module.getMidInfo', $config); + if(!$_o->data) unset($config); + } + + if(!$config->mid) { + $args->module = 'planet'; + $args->browser_title = 'planetXE'; + $args->skin = 'xe_planet'; + $args->is_default = 'N'; + $args->mid = 'planet'; + $idx = 0; + while(true) { + $_o = executeQuery('module.getMidInfo', $args); + if(!$_o->data) break; + $idx = $idx + 1; + } + $args->module_srl = getNextSequence(); + $output = $oModuleController->insertModule($args); + + $planet_args->mid = $args->mid; + $oPlanetController->insertPlanetConfig($planet_args); + } + + + // action forward에 등록 (관리자 모드에서 사용하기 위함) + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetHome'); + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetAdminSetup'); + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetAdminList'); + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetAdminSkinInfo'); + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetAdminDelete'); + $oModuleController->insertActionForward('planet', 'view', 'dispPlanetAdminInsert'); + $oModuleController->insertActionForward('planet', 'view', 'favorite'); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + return new Object(0, 'success_updated'); + } + + /** + * @brief 캐시 파일 재생성 + **/ + function recompileCache() { + } + } +?> diff --git a/modules/planet/planet.controller.php b/modules/planet/planet.controller.php new file mode 100644 index 000000000..b47205546 --- /dev/null +++ b/modules/planet/planet.controller.php @@ -0,0 +1,761 @@ +grant->create) return new Object(-1,'msg_not_permitted'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if($myplanet->isExists()) return new Object(-1,'msg_planet_exists'); + + $args->planet_title = Context::get("planet_title"); + $args->browser_title = Context::get("browser_title"); + $args->mid = Context::get("planet_mid"); + $args->tag = Context::get("tag"); + + if(in_array($args->mid, array('www','naver','hangame','promotion','notice','group','team','center','division','tf','faq','question','uit'))) return new Object(-1,'msg_not_permitted'); + + $output = $this->insertPlanet($args); + if(!$output->toBool()) return $output; + + $this->setError($output->getError()); + $this->setMessage($output->getMessage()); + $this->add('mid', $args->mid); + $this->add('mid_url', getUrl('','mid',$args->mid)); + } + + /** + * @brief 플래닛 사진 업로드 + **/ + function procPlanetPhotoModify() { + if(!Context::isUploaded()) exit(); + + $photo = Context::get('photo'); + if(!is_uploaded_file($photo['tmp_name'])) exit(); + + $oPlanetModel = &getModel('planet'); + $planet = $oPlanetModel->getMemberPlanet(); + if($planet->isExists()) $url = getUrl('','mid',$planet->getMid()); + else { + $config = $oPlanetModel->getPlanetConfig(); + $url = getUrl('','mid',$config->mid); + } + Context::set('url',$url); + + $this->insertPlanetPhoto($planet->getModuleSrl(), $photo['tmp_name']); + + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('move_myplanet'); + } + + + /** + * @brief 플래닛 컬러셋 변경 + **/ + function procPlanetColorsetModify() { + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1, 'msg_not_permitted'); + + $colorset = Context::get('colorset'); + if(!$colorset) return new Object(-1,'msg_invalid_request'); + + $this->updatePlanetColorset($myplanet->getModuleSrl(), $colorset); + + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('move_myplanet'); + } + + /** + * @brief 회원 - 플래닛 글 등록 + * 새글 등록. document 모듈을 이용 + **/ + + function procPlanetContentWrite() { + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1, 'msg_not_permitted'); + if($this->module_srl != $myplanet->getModuleSrl()) return new Object(-1, 'msg_not_permitted'); + + $obj = Context::getRequestVars(); + $obj->module_srl = $myplanet->module_srl; + + $output = $this->insertContent($obj); + + // 오류 발생시 멈춤 + if(!$output->toBool()) return $output; + + // me2day연동 처리 + if(Context::get('me2day_autopush')=='Y') { + $content = Context::get('content'); + $tags = Context::get('tags'); + $postscript = Context::get('extra_vars20'); + if($postscript) $content .= " (".$postscript.")"; + if($tags) $tags = str_replace(',',' ',str_replace(' ','',$tags)); + $this->doPostToMe2day($myplanet->getMe2dayUID(), $myplanet->getMe2dayUKey(), $content, $tags); + } + + // 결과를 리턴 + $this->add('mid', Context::get('mid')); + $this->add('document_srl', $output->get('document_srl')); + + // 성공 메세지 등록 + $this->setMessage('success_registed'); + } + + + function insertContent($obj,$manual_inserted=false){ + + $obj->content = str_replace(array('<','>'),array('<','>'),$obj->content); + $obj->content = preg_replace('/"([^"]*)":(http|ftp|https|mms)([^ ]+)/is','$1$4', $obj->content); + $oDocumentController = &getController('document'); + $output = $oDocumentController->insertDocument($obj,$manual_inserted); + if(!$output->toBool()) return $output; + $planet_args->latest_document_srl = $output->get('document_srl'); + $planet_args->module_srl = $obj->module_srl; + $output = executeQuery('planet.updatePlanetLatestDocument', $planet_args); + + return $output; + } + + /** + * @brief 컨텐츠의 태그 수정 + **/ + function procPlanetContentTagModify(){ + + $req = Context::getRequestVars(); + + // document module의 model 객체 생성 + $oDocumentModel = &getModel('document'); + + // document module의 controller 객체 생성 + $oDocumentController = &getController('document'); + $oDocument = $oDocumentModel->getDocument($req->document_srl); + $oDocument->add('tags',$req->planet_content_tag); + $obj = $oDocument->getObjectVars(); + + $output = $oDocumentController->updateDocument($oDocument, $obj); + $this->setMessage('success_updated'); + } + + /** + * @brief 타인의 플래닛에 메모 추가 + **/ + function procPlanetInsertMemo() { + $planet_memo = trim(Context::get('planet_memo')); + + if(!$planet_memo) return new Object(-1,'msg_invalid_request'); + if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + + // 대상 플래닛의 존재 유무 점검 + $planet = $oPlanetModel->getPlanet($this->module_srl); + if(!$planet->isExists()) return new Object(-1,'msg_invalid_request'); + + // 현재 접속자의 플래닛 점검 + if(!$myplanet->isExists()) return new Object(-1,'msg_not_permitted'); + + // 메모 등록 + $output = $this->insertMemo($this->module_srl, $myplanet->getModuleSrl(), $planet_memo); + if(!$output->toBool()) return $output; + + // 가장 최신 페이지 추출하여 tpl로 return + $this->add('tpl', $oPlanetModel->getMemoHtml($this->module_srl, 1)); + } + + /** + * @brief 메모 삭제 + **/ + function procPlanetDeleteMemo() { + $planet_memo_srl = trim(Context::get("planet_memo_srl")); + if(!$planet_memo_srl) return new Object(-1,'msg_invalid_request'); + + $args->planet_memo_srl = $planet_memo_srl; + $output = executeQuery('planet.getPlanetMemo', $args); + if(!$output->toBool()) return $output; + $memo = $output->data; + + if(!$output->data) return new Object(-1,'msg_invalid_request'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_invalid_request'); + Context::set('myplanet', $myplanet); + + $planet = $oPlanetModel->getPlanet($memo->module_srl); + if(!$planet->isExists()) return new Object(-1,'msg_invalid_request'); + Context::set('planet', $planet); + + // 내플래닛인지 아닌지 + $logged_info = Context::get('logged_info'); + Context::set('isMyPlanet', $planet->getMemberSrl() == $logged_info->member_srl); + + if($planet->getModuleSrl() != $memo->module_srl && $myplanet->getModuleSrl() != $memo->write_planet_srl) return new Object(-1,'msg_not_permitted'); + + $this->deleteMemo($planet_memo_srl); + + // 가장 최신 페이지 추출하여 tpl로 return + $this->add('tpl', $oPlanetModel->getMemoHtml($memo->module_srl, 1)); + } + + /** + * @brief 플래닛 기본 설정 저장 + * 플래닛의 전체 설정은 module config를 이용해서 저장함 + * 대상 : 기본 플래닛 스킨, 권한, 스킨 정보 + **/ + function insertPlanetConfig($planet) { + $oModuleController = &getController('module'); + $oModuleController->insertModuleConfig('planet', $planet); + } + + /** + * @brief 플래닛 생성 + * 플래닛은 modules 테이블에 기본적인 정보(mid, browser_title)을 입력하고 planet테이블에 플래닛 개설자 정보를 매핑한다 + **/ + function insertPlanet($planet, $member_srl = 0) { + $planet->module = 'planet'; + $planet->module_srl = getNextSequence(); + + $oMemberModel = &getModel('member'); + $oModuleController = &getController('module'); + $output = $oModuleController->insertModule($planet); + if(!$output->toBool()) return $output; + + if(!$member_srl) $member_info = Context::get('logged_info'); + else $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + + $args->planet_title = $planet->planet_title; + $args->module_srl = $output->get('module_srl'); + $args->member_srl = $member_info->member_srl; + $args->close_notice = 'N'; + $output = executeQuery('planet.insertPlanet', $args); + if(!$output->toBool()) return $output; + + if($planet->tag) { + $tmp_arr = explode(",",trim($planet->tag)); + $tag_list = null; + for($i=0;$imodule_srl = $args->module_srl; + $tag_args->tag = $tag; + executeQuery('planet.insertPlanetTag', $tag_args); + } + } + + $output->add('module_srl', $planet->module_srl); + return $output; + } + + /** + * @brief 플래닛 수정 + * 플래닛의 기본 정보를 수정 + **/ + function updatePlanet($planet) { + $oModuleController = &getController('module'); + $output = $oModuleController->updateModule($planet); + $output->add('module_srl', $planet->module_srl); + return $output; + } + + /** + * @brief 플래닛 이미지 등록 + **/ + function insertPlanetPhoto($module_srl, $source) { + $oPlanetModel = &getModel('planet'); + $path = $oPlanetModel->getPlanetPhotoPath($module_srl); + if(!is_dir($path)) FileHandler::makeDir($path); + + $filename = sprintf('%s/%d.jpg', $path, $module_srl); + + FileHandler::createImageFile($source, $filename, 96, 96, 'jpg', 'crop'); + } + + /** + * @brief 회원 - 플래닛 브라우져 제목 수정 + * 플래닛의 제목은 modules테이블의 browser_title컬럼을 이용한다 + **/ + function updatePlanetBrowserTitle($module_srl, $browser_title) { + $args->module_srl = $module_srl; + $args->browser_title = $browser_title; + return executeQuery('planet.updatePlanetBrowserTitle', $args); + } + + /** + * @brief 회원 - 플래닛 컬러셋 변경 + **/ + function updatePlanetColorset($module_srl, $colorset) { + $args->module_srl = $module_srl; + $args->colorset = $colorset; + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + return executeQuery('planet.updatePlanetColorset', $args); + } + + /** + * @brief 회원 - 플래닛 제목 수정 + * 플래닛의 제목은 planet테이블의 planet_title컬럼을 이용한다 + **/ + function updatePlanetTitle($module_srl, $planet_title) { + $args->module_srl = $module_srl; + $args->planet_title = $planet_title; + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + return executeQuery('planet.updatePlanetTitle', $args); + } + + /** + * @brief 회원 - 플래닛 소개 수정 + * 플래닛의 소개는 modules 테이블의 description컬럼을 이용한다. + **/ + function updatePlanetIntro() { + } + + /** + * @brief 회원 - 플래닛 인물 태그 수정 + * 플래닛의 인물 태그 수정 + **/ + function updatePlanetTag($module_srl,$arrTags) { + $arrAddTags = array(); + $arrDeleteTags = array(); + $oPlanetModel = &getModel('planet'); + $output = $oPlanetModel->getPlanetTags($module_srl); + + $args->module_srl = $module_srl; + executeQuery('planet.deletePlanetTags', $args); + + if(count($arrTags)) { + $arrTags = array_unique($arrTags); + foreach($arrTags as $tag){ + if(strlen($tag) > 0){ + unset($tag_args); + $tag_args->module_srl = $module_srl; + $tag_args->tag = $tag; + executeQuery('planet.insertPlanetTag', $tag_args); + } + } + } + } + + /** + * @brief 회원 - 플래닛에 메모 추가 + * 다른 회원들이 타회원의 플래닛에 메모를 추가 + **/ + function insertMemo($module_srl, $write_planet_srl, $memo_content) { + $args->module_srl = $module_srl; + $args->write_planet_srl = $write_planet_srl; + $args->memo_content = $memo_content; + return executeQuery('planet.insertPlanetMemo', $args); + } + + /** + * @brief 회원 - 플래닛 메모 삭제 + **/ + function deleteMemo($planet_memo_srl) { + $args->planet_memo_srl = $planet_memo_srl; + $output = executeQuery('planet.deletePlanetMemo', $args); + return $output; + } + + /** + * @brief 회원 - 즐찾 플래닛 추가 + * 플래닛이 있는 사용자만 즐찾 플래닛을 추가할 수 있다 + **/ + function addFavoritePlanet() { + return executeQuery('planet.insertPlanetFavorite', $args); + } + + /** + * @brief 회원 - 즐찾 플래닛 제거 + **/ + function removeFavoritePlanet() { + return executeQuery('planet.deletePlanetFavorite', $args); + } + + /** + * @brief 회원 - 플래닛 이미지 수정 + * 플래닛에 표시되는 이미지를 수정 + **/ + function updatePlanetPhoto() { + } + + /** + * @brief 회원 - 플래닛 welcome 메세지 표시여부 + **/ + function procNotReadWelcome(){ + if(!Context::get('is_logged')) return new Object(-1,'msg_not_logged'); + if(!$this->grant->create) return new Object(-1,'msg_not_permitted'); + + $args->close_notice = 'Y'; + $args->module_srl = Context::get('module_srl'); + + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + $output = executeQuery('planet.updateShowReadWelcome', $args); + + return $output; + } + + + /** + * @brief 회원 - 플래닛 정보 수정 + * 플래닛정보수정 + **/ + function procPlanetInfoModify(){ + $target = Context::get('target'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + $planet = $oPlanetModel->getPlanet($this->module_srl); + if($myplanet->getModuleSrl()!=$planet->getModuleSrl()) return new ObjecT(-1,'msg_not_permitted'); + + switch($target){ + case 'planet_tag': + $planet_tag = Context::get('planet_tag'); + $planet_tag = explode(',',$planet_tag); + foreach($planet_tag as $v) $v = trim($v); + + $this->updatePlanetTag($myplanet->getModuleSrl(),$planet_tag); + break; + case 'planet_name': + $planet_name = Context::get('planet_name'); + return $this->updatePlanetTitle($myplanet->getModuleSrl(), $planet_name); + break; + case 'browser_title': + $browser_title = Context::get('browser_title'); + return $this->updatePlanetBrowserTitle($myplanet->getModuleSrl(), $browser_title); + break; + case 'planet_info_photo': + break; + default: + } + + } + + /** + * @brief 회원 - 플래닛 글에 추천 + **/ + function procPlanetVoteContent(){ + $document_srl = Context::get('document_srl'); + $oDocumentController = &getController('document'); + return $oDocumentController->updateVotedCount($document_srl); + } + + /** + * @brief 관심태그 추가 + **/ + function procPlanetInsertInterestTag() { + $tag = trim(Context::get('tag')); + if(!$tag) return new Object(-1,'msg_invalid_request'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_invalid_request'); + + $interest_tags = $oPlanetModel->getInterestTags($myplanet->getModuleSrl()); + if(in_array($tag, $interest_tags)) return new Object(-1,'msg_planet_already_added_favorite'); + + $args->module_srl = $myplanet->getModuleSrl(); + $args->tag = $tag; + $output = executeQuery('planet.insertInterestTag', $args); + if(!$output->toBool()) return $output; + + $this->add('tpl', $oPlanetModel->getInterestTagsHtml($myplanet->getModuleSrl())); + } + + /** + * @brief 관심태그 삭제 + **/ + function procPlanetDeleteInterestTag() { + $tag = trim(Context::get('tag')); + if(!$tag) return new Object(-1,'msg_invalid_request'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_invalid_request'); + + $args->module_srl = $myplanet->getModuleSrl(); + $args->tag = $tag; + $output = executeQuery('planet.deleteInterestTag', $args); + if(!$output->toBool()) return $output; + + $this->add('tpl', $oPlanetModel->getInterestTagsHtml($myplanet->getModuleSrl())); + } + + /** + * @brief 즐겨찾기추가 + **/ + function procPlanetInsertFavorite() { + $module_srl = Context::get('module_srl'); + if(!$module_srl) return new Object(-1,'msg_invalid_request'); + + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_invalid_request'); + + if($myplanet->getModuleSrl() == $module_srl) return new Object(-1,'msg_invalid_request'); + + if($oPlanetModel->isInsertedFavorite($myplanet->getModuleSrl(), $module_srl)) return new Object(-1,'msg_planet_already_added_favorite'); + + $args->list_order = $args->planet_favorite_srl = getNextSequence(); + $args->module_srl = $myplanet->getModuleSrl(); + $args->reg_planet_srl = $module_srl; + return executeQuery('planet.insertPlanetFavorite', $args); + } + + /** + * @brief 회원 - 플래닛에 댓글 추가 + * + **/ + function procPlanetReplyWrite() { + + // 권한 체크 + // 댓글 입력에 필요한 데이터 추출 + $req = Context::gets('document_srl','planet_reply_content'); + $obj->module_srl = $this->module_srl; + $obj->document_srl = $req->document_srl; + $obj->content = $req->planet_reply_content; + + + // 원글이 존재하는지 체크 + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($obj->document_srl); + if(!$oDocument->isExists()) return new Object(-1,'msg_not_permitted'); + + // comment 모듈의 model 객체 생성 + $oCommentModel = &getModel('comment'); + + // comment 모듈의 controller 객체 생성 + $oCommentController = &getController('comment'); + + $obj->comment_srl = getNextSequence(); + $output = $oCommentController->insertComment($obj); + + if(!$output->toBool()) return $output; + + // notice 남김 + $logged_info = Context::get('logged_info'); + if($oDocument->get('member_srl') != $logged_info->member_srl) { + $h_args->module_srl = $obj->module_srl; + $h_args->document_srl = $obj->document_srl; + $h_args->list_order = -1*$obj->comment_srl; + $checkOutput = executeQuery('planet.getCatch', $h_args); + if($checkOutput->data->count) executeQuery('planet.deleteCatch', $h_args); + executeQuery('planet.insertCatch', $h_args); + } + + $this->setMessage('success_registed'); + $this->add('mid', Context::get('mid')); + $this->add('document_srl', $obj->document_srl); + $this->add('comment_srl', $obj->comment_srl); + } + + function procPlanetEnableRss() { + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_not_permitted'); + + $oRssAdminController = &getAdminController('rss'); + $oRssAdminController->setRssModuleConfig($myplanet->getModuleSrl(), 'Y'); + } + + function procPlanetDisableRss() { + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_not_permitted'); + + $oRssAdminController = &getAdminController('rss'); + $oRssAdminController->setRssModuleConfig($myplanet->getModuleSrl(), 'N'); + } + + function procPlanetMe2dayApi() { + $oPlanetModel = &getModel('planet'); + $myplanet = $oPlanetModel->getMemberPlanet(); + if(!$myplanet->isExists()) return new Object(-1,'msg_not_permitted'); + + $args = Context::gets('me2day_id','me2day_ukey','me2day_autopush'); + if(!$args->me2day_autopush) $args->me2day_autopush = 'N'; + + $output = $this->doValidateMe2dayInfo($args->me2day_id, $args->me2day_ukey); + if(!$output->toBool()) return $output; + + $args->module_srl = $myplanet->getModuleSrl(); + $args->member_srl = $myplanet->getMemberSrl(); + $output = executeQuery('planet.updatePlanetMe2day', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('msg_success_auth_me2day'); + } + + function doValidateMe2dayInfo($user_id, $user_key) { + require_once($this->module_path.'libs/me2day.api.php'); + $oMe2 = new me2api($user_id, $user_key); + return $oMe2->chkNoop($user_id, $user_key); + } + + function doPostToMe2day($user_id, $user_key, $body, $tags) { + require_once($this->module_path.'libs/me2day.api.php'); + $oMe2 = new me2api($user_id, $user_key); + return $oMe2->doPost($body, $tags); + } + + + + /** + * @brief SMS를 받는다 + * + **/ + function procPlanetInsertSMS(){ + + $phone_number = Context::get('phone_number'); + $message = Context::get('message'); + + $message = Context::convertEncodingStr($message); + + //@골뱅이를 빼자 + if(substr($message,0,1)=='@') $message = substr($message,1); + + $args->phone_number = $phone_number; + $oPlanetModel = &getModel('planet'); + $output = $oPlanetModel->getSMSUser($args); + + // SMS 사용자가 있으면 해당 planet에 등록 + if($output->data){ + + $args->content = $message; + $args->module_srl = $output->data->module_srl; + $args->member_srl = $output->data->member_srl; + + $oMemberModel = &getModel('member'); + $output = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl); + + $args->user_id = $output->user_id; + $args->user_name = $output->user_name; + $args->nick_name = $output->nick_name; + $args->email_address = $output->email_address; + $args->homepage = $output->homepage; + + $config = $oPlanetModel->getPlanetConfig(); + $args->tags = join(',',$config->smstag); + + $manual_inserted = true; + $output = $this->insertContent($args,$manual_inserted); + + }else{ + // SMS 사용자가 아니라면 planet_sms_resv에 쌓는다 + $output = $this->insertSMSRecv($phone_number,$message); + } + + + if($output->toBool()){ + header("X-SMSMORESPONSE:0"); + }else{ + header("X-SMSMORESPONSE:1"); + } + + // response를 XMLRPC로 변환 + Context::setResponseMethod('XMLRPC'); + + return $output; + } + + + function insertSMSRecv($phone_number,$message){ + $args->phone_number = $phone_number; + $args->message = $message; + $output = executeQuery('planet.insertSMSRecv', $args); + return $output; + } + + + /** + * @brief SMS를 위한 핸드폰 번호를 셋팅한다 + **/ + function procPlanetSetSMS(){ + + // is login? + if(!Context::get('is_logged')) return new Object(-1,'msg_not_logged'); + + $phone_number = Context::get('phone_number'); + if(!$phone_number) return new Object(-1,'error'); + + $oPlanetModel = &getModel('planet'); + $planet = $oPlanetModel->getMemberPlanet(); + $args->phone_number = $phone_number; + + + // dont have planet! + if(!$planet->isExists()) return new Object(-1,'error'); + + $output = $oPlanetModel->getSMSUser($args); + if($output->data) return new Object(-1,'msg_already_have_phone_number'); + + $mid = $planet->getMid(); + $oModuleModel = &getModel('module'); + $output = $oModuleModel->getModuleInfoByMid($mid); + $args->module_srl = $output->module_srl; + + // SMSUser에 이미 있다면 지워준다 + $this->removeSMSUser($args->module_srl); + + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + + $output = executeQuery('planet.insertSMSUser', $args); + if(!$output->toBool()) return $output; + + // 이미 받아놓은 메세지들을 가져와 planet에 넣자 + $oPlanetModel = &getModel('planet'); + $output = $oPlanetModel->getSMSRecv($phone_number); + if($output->data && is_array($output->data)){ + $config = $oPlanetModel->getPlanetConfig(); + $smstag = join(',',$config->smstag); + for($i=0,$c=count($output->data);$i<$c;$i++){ + unset($obj); + $obj->content = $output->data[$i]->message; + $obj->module_srl = $args->module_srl; + $args->tags = $smstag; + + $this->insertContent($obj); + } + $this->removeSMSRecv($phone_number); + } + + $this->setMessage('msg_success_set_phone_number'); + } + + function removeSMSRecv($phone_number){ + $args->phone_number = $phone_number; + $output = executeQuery('planet.deleteSMSRecv', $args); + return $output; + } + + function removeSMSUser($module_srl){ + $args->module_srl = $module_srl; + $output = executeQuery('planet.deleteSMSUser', $args); + return $output; + + } + } + +?> diff --git a/modules/planet/planet.info.php b/modules/planet/planet.info.php new file mode 100644 index 000000000..ee0922139 --- /dev/null +++ b/modules/planet/planet.info.php @@ -0,0 +1,350 @@ +setPlanet($planet_srl); + } + + function setPlanet($planet_srl) { + $this->module_srl = $this->planet_srl = $planet_srl; + $this->_loadFromDB(); + } + + function _loadFromDB() { + if(!$this->planet_srl) return; + + $args->module_srl = $this->planet_srl; + $output = executeQuery('planet.getPlanet', $args); + if(!$output->toBool()||!$output->data) return; + + $this->setAttribute($output->data); + } + + function setAttribute($attribute) { + if(!$attribute->module_srl) { + $this->planet_srl = null; + return; + } + $this->module_srl = $this->planet_srl = $attribute->module_srl; + $this->member_srl = $attribute->member_srl; + $this->colorset = $attribute->colorset; + + $this->adds($attribute); + } + + function isHome() { + $config = Context::get('config'); + if($this->getModuleSrl() == $config->module_srl) return true; + return false; + } + + function getColorset() { + if($this->isHome() || !$this->colorset) { + $config = Context::get('config'); + return $config->colorset; + } + return $this->colorset; + + } + + function getBrowserTitle() { + if(!$this->isExists()) return; + return $this->get('browser_title'); + } + + function getPlanetTitle() { + if(!$this->isExists()) return; + return $this->get('planet_title'); + } + + function getPhotoSrc() { + if(!$this->isExists()) return; + $oPlanetModel = &getModel('planet'); + return $oPlanetModel->getPlanetPhotoSrc($this->planet_srl); + } + + function getMid() { + if(!$this->isExists()) return; + return $this->get('mid'); + } + + function getMemberSrl() { + if(!$this->isExists()) return; + return $this->get('member_srl'); + } + + function getModuleSrl() { + if(!$this->isExists()) return; + return $this->getPlanetSrl(); + } + + function getPlanetSrl() { + if(!$this->isExists()) return; + return $this->planet_srl; + } + + function getPlanetMid() { + if(!$this->isExists()) return; + return $this->get('mid'); + } + + function getNickName() { + if(!$this->isExists()) return; + return $this->get('nick_name'); + } + + function getUserName() { + if(!$this->isExists()) return; + return $this->get('user_name'); + } + + function getUserID() { + if(!$this->isExists()) return; + return $this->get('getUserID'); + } + + function isExists() { + return $this->planet_srl?true:false; + } + + function isNoticeClosed() { + if(!$this->isExists()) return; + return $this->get('close_notice')=='Y'?true:false; + } + + function isMyPlanet($planet = null) { + if(!$this->isExists()) return; + if(!Context::get('is_logged')) return false; + $logged_info = Context::get('logged_info'); + if($planet) return $logged_info->member_srl == $planet->get('member_srl'); + return $logged_info->member_srl == $this->get('member_srl'); + } + + function isMyFavorite($planet) { + if(!$this->isExists()) return false; + if($planet->isMyPlanet()) return true; + + $args->module_srl = $this->getModuleSrl(); + $args->reg_planet_srl = $planet->getModuleSrl(); + $output = executeQuery('planet.getMyFavorite', $args); + if($output->data->count>0) return true; + return false; + } + + function getPermanentUrl() { + if(!$this->isExists()) return; + return getUrl('','mid',$this->getMid()); + } + + function getTags() { + static $tags = null; + if(!$this->isExists()) return; + if(!is_null($tags)) return $tags; + + $args->module_srl = $this->planet_srl; + $output = executeQueryArray('planet.getPlanetTag', $args); + if(!$output->toBool() || !$output->data) return array(); + + $tags = array(); + foreach($output->data as $key => $val) $tags[] = $val->tag; + return $tags; + } + + function getTagsString() { + if(!$this->isExists()) return; + return join(',',$this->getTags()); + } + + function isRssEnabled() { + static $open_rss = null; + if(!$this->isExists()) return; + if(is_null($open_rss)) { + $oRssModel = &getModel('rss'); + $config = $oRssModel->getRssModuleConfig($this->getModuleSrl()); + $open_rss = $config->open_rss; + } + return $open_rss=='Y'?true:false; + + } + + /** + * @brief 최신 업데이트 글 추출 + * mid : 대상 플래닛, null이면 전체 글 대상 + * date : 선택된 일자(필수값, 없으면 오늘을 대상으로 함) + * page : 페이지 번호 + * list_count : 추출 대상 수 + **/ + function getNewestContentList($date = null, $page=1, $list_count = 10,$sort_index='documents.listorder',$order='asc') { + if(!$this->isExists()) return; + if(!$page) $page = 1; + if(!$date) $date = date("Ymd"); + + // 전체 글을 추출 (module='planet'에 대해서 추출해야 하기에 document 모델을 사용하지 않음) + if(!$this->isHome()) $args->mid = $this->getMid(); + $args->date = $date; + $args->page = $page; + $args->sort_index = $sort_index; + $args->order = $order; + $args->list_count = $list_count; + $output = executeQueryArray('planet.getPlanetNewestContentList', $args); + if(!$output->toBool()) return $output; + if(count($output->data)) { + foreach($output->data as $key => $val) { + unset($oPlanet); + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[$key] = $oPlanet; + } + } + return $output; + } + + /** + * @brief 댓글이 달렸는데 확인하지 않은 글 + **/ + function getCatchContentList($page=1) { + if(!$page) $page = 1; + + $args->module_srl = $this->getModuleSrl(); + $args->page = $page; + $output = executeQueryArray('planet.getCatchContentList', $args); + if(!$output->toBool()) return $output; + if(count($output->data)) { + foreach($output->data as $key => $val) { + unset($oPlanet); + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[$key] = $oPlanet; + } + } + return $output; + } + + /** + * @brief 관심 태그로 등록된 글 가져오기 + **/ + function getInterestTagContentList($date, $page=1) { + if(!$page) $page = 1; + + $args->module_srl = $this->getModuleSrl(); + $args->date = $date; + $args->page = $page; + $output = executeQueryArray('planet.getInterestTagContentList', $args); + if(!$output->toBool()) return $output; + if(count($output->data)) { + foreach($output->data as $key => $val) { + unset($oPlanet); + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[$key] = $oPlanet; + } + } + return $output; + } + + /** + * @brief 플래닛 마지막 글 쓴 날짜 return + **/ + function getContentLastDay() { + if(!$this->isExists()) return; + if(!$this->isHome()) $args->module_srl = $this->getModuleSrl(); + + $args->date = $date . '235959'; + $output = executeQuery('planet.getPlanetContentLastDay', $args); + if(!$output->toBool() || !$output->data) return date("Ymd"); + $last_day = $output->data->last_date; + if(!$last_day) $last_day = date("Ymd"); + $last_day = substr($last_day,0,8); + if(!$last_day || $last_day > date("Ymd") ) return date("Ymd"); + return $last_day; + } + + function getInterestTags() { + if(!$this->isExists()) return; + $oPlanetModel = &getModel('planet'); + return $oPlanetModel->getInterestTags($this->module_srl); + } + + /** + * @brief 전체 태그중 인기 태그 return + * mid : 대상 플래닛 (null이면 전체 플래닛) + * shuffle : 태그 결과값에 rank를 부여하고 shuffle + * list_coutn : 추출 대상 수 + **/ + function getPopularTags($shuffle = false, $list_count = 100) { + if(!$this->isExists()) return; + if(!$this->isHome()) $args->mid = $this->getMid(); + + $cache_file = sprintf('%sfiles/cache/planet/%s/%d.%d.txt', _XE_PATH_,getNumberingPath($this->getModuleSrl(),3), $shuffle?1:0,$list_count); + if(!file_exists($cache_file)||filemtime($cache_file)list_count = $list_count; + + // 24시간 이내의 태그중에서 인기 태그를 추출 + $args->date = date("YmdHis", time()-60*60*24); + + $output = executeQueryArray('planet.getPlanetPopularTags',$args); + if(!$output->toBool() || !$output->data) return array(); + + $tags = array(); + $max = 0; + $min = 99999999; + foreach($output->data as $key => $val) { + $tag = $val->tag; + $count = $val->count; + if($max < $count) $max = $count; + if($min > $count) $min = $count; + $tags[] = $val; + } + + if($shuffle) { + $mid2 = $min+(int)(($max-$min)/2); + $mid1 = $mid2+(int)(($max-$mid2)/2); + $mid3 = $min+(int)(($mid2-$min)/2); + + $output = null; + + foreach($tags as $key => $item) { + if($item->count > $mid1) $rank = 1; + elseif($item->count > $mid2) $rank = 2; + elseif($item->count > $mid3) $rank = 3; + else $rank= 4; + + $tags[$key]->rank = $rank; + } + shuffle($tags); + } + FileHandler::writeFile($cache_file, serialize($tags)); + } else { + $tags = unserialize(FileHandler::readFile($cache_file)); + } + + return $tags; + } + + function getMe2dayUID() { + return $this->get('me2day_uid'); + } + + function getMe2dayUKey() { + return $this->get('me2day_ukey'); + } + + function getMe2dayAuthPush() { + return $this->get('me2day_autopush')=='Y'?true:false; + } + + function getPhoneNumber(){ + return $this->get('phone_number'); + } + } +?> diff --git a/modules/planet/planet.item.php b/modules/planet/planet.item.php new file mode 100644 index 000000000..85875be21 --- /dev/null +++ b/modules/planet/planet.item.php @@ -0,0 +1,142 @@ +document_srl = $document_srl; + $this->_loadFromDB(); + } + + function _loadFromDB() { + if(!$this->document_srl) return; + parent::_loadFromDB(); + + $this->add('postscript', $this->get('extra_vars20')); + } + + function setAttribute($attribute) { + parent::setAttribute($attribute); + $this->add('postscript', $attribute->extra_vars20); + } + + + function getWriteInfo() { + static $planet_info = array(); + if(!isset($planet_info[$this->get('module_srl')])) { + $oPlanetModel = &getModel('planet'); + $info = $planet_info[$this->get('module_srl')] = $oPlanetModel->getPlanet($this->get('module_srl')); + $this->add('planet_title', $info->getBrowserTitle()); + $this->add('nick_name', $info->getNickName()); + $this->add('user_name', $info->getUserName()); + $this->add('user_id', $info->getUserID()); + $this->add('planet_title', $info->getPlanetTitle()); + $this->add('mid', $info->getMid()); + } + } + + function getPlanetPhotoSrc() { + $oPlanetModel = &getModel('planet'); + return $oPlanetModel->getPlanetPhotoSrc($this->get('module_srl')); + } + + function getPlanetMid() { + $this->getWriteInfo(); + return $this->get('mid'); + } + + function getPlanetTitle() { + $this->getWriteInfo(); + return $this->get('planet_title'); + } + + function getUserID() { + $this->getWriteInfo(); + return parent::getUserID(); + } + + function getUserName() { + $this->getWriteInfo(); + return parent::getUserName(); + } + + function getNickName() { + $this->getWriteInfo(); + return parent::getNickName(); + } + + + function getPostScript() { + return $this->get('postscript'); + } + + function getContent() { + if(!$this->document_srl) return; + return parent::getContent(false,true); + } + + function getArrTags() { + return $this->get('tag_list'); + } + + function getTextTags() { + return $this->get('tags'); + } + + function getRegdate(){ + return $this->get('regdate'); + } + + function getVotedCount(){ + return $this->get('voted_count'); + + } + + function PopularTags($list_count = 100, $shuffle = false) { + if(!$this->isHome()) $args->mid = $this->getMid(); + $args->list_count = $list_count; + + // 24시간 이내의 태그중에서 인기 태그를 추출 + $args->date = date("YmdHis", time()-60*60*24); + + $output = executeQueryArray('planet.getPlanetPopularTags',$args); + if(!$output->toBool() || !$output->data) return array(); + + $tags = array(); + $max = 0; + $min = 99999999; + foreach($output->data as $key => $val) { + $tag = $val->tag; + $count = $val->count; + if($max < $count) $max = $count; + if($min > $count) $min = $count; + $tags[] = $val; + } + + if($shuffle) { + $mid2 = $min+(int)(($max-$min)/2); + $mid1 = $mid2+(int)(($max-$mid2)/2); + $mid3 = $min+(int)(($mid2-$min)/2); + + $output = null; + + foreach($tags as $key => $item) { + if($item->count > $mid1) $rank = 1; + elseif($item->count > $mid2) $rank = 2; + elseif($item->count > $mid3) $rank = 3; + else $rank= 4; + + $tags[$key]->rank = $rank; + } + shuffle($tags); + } + + return $tags; + } + } +?> diff --git a/modules/planet/planet.model.php b/modules/planet/planet.model.php new file mode 100644 index 000000000..418a51913 --- /dev/null +++ b/modules/planet/planet.model.php @@ -0,0 +1,612 @@ +getModuleConfig('planet'); + + // planet dummy module의 is_default 값을 구함 + $dummy = $oModuleModel->getModuleInfoByMid($config->mid); + $config->is_default = $dummy->is_default; + $config->module_srl = $dummy->module_srl; + $config->browser_title = $dummy->browser_title; + } + return $config; + } + + /** + * @brief 회원 - 플래닛 접속 권한 return + * 플래닛 서비스 컨텐츠에 대한 접속 권한을 확인 + **/ + function isAccessGranted() { + $config = $this->getPlanetConfig(); + $grant = $config->grants['access']; + if(!$grant || !count($grant)) return true; + + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin == 'Y') return true; + $group_list = $logged_info->group_list; + $group_srls = array_keys($group_list); + + foreach($grant as $srl) if(in_array($srl, $group_srls)) return true; + return false; + } + + /** + * @brief 회원 - 플래닛 생성 권한 return + **/ + function isCreateGranted() { + if(!Context::get('is_logged')) return false; + + $config = $this->getPlanetConfig(); + $grant = $config->grants['create']; + if(!$grant || !count($grant)) return true; + + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin == 'Y') return true; + $group_list = $logged_info->group_list; + $group_srls = array_keys($group_list); + + foreach($grant as $srl) if(in_array($srl, $group_srls)) return true; + return false; + } + + /** + * @brief 관리자 - 플래닛 모듈 전체 관리 권한 return + **/ + function isManageGranted() { + if(!Context::get('is_logged')) return false; + + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin == 'Y') return true; + + $config = $this->getPlanetConfig(); + $grant = $config->grants['manage']; + if(!$grant || !count($grant)) return false; + + $group_list = $logged_info->group_list; + $group_srls = array_keys($group_list); + + foreach($grant as $srl) if(in_array($srl, $group_srls)) return true; + return false; + } + + /** + * @brief 특정 회원의 플래닛 정보 얻기 + * 회원 번호를 입력하지 않으면 현재 로그인 사용자의 플래닛 정보를 구함 + **/ + function getMemberPlanet($member_srl = 0) { + if(!$member_srl && !Context::get('is_logged')) return new PlanetInfo(); + + if(!$member_srl) { + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + } else { + $args->member_srl = $member_srl; + } + + $output = executeQuery('planet.getMemberPlanet', $args); + if(!$output->toBool() || !$output->data) return new PlanetInfo(); + + $planet = $output->data; + $output = $this->getSMSUser($planet); + + if(strlen($output->data->phone_number)==10){ + $planet->phone_number = array(substr($output->data->phone_number,0,3),substr($output->data->phone_number,3,3),substr($output->data->phone_number,6,4)); + }else if(strlen($output->data->phone_number)== 11){ + $planet->phone_number = array(substr($output->data->phone_number,0,3),substr($output->data->phone_number,3,4),substr($output->data->phone_number,7,4)); + }else{ + $planet->phone_number = array(); + } + + $oPlanet = new PlanetInfo(); + $oPlanet->setAttribute($planet); + + return $oPlanet; + } + + /** + * @brief 플래닛 목록 return + **/ + function getPlanetList($list_count=20, $page=1, $sort_index = 'module_srl') { + if(!in_array($sort_index, array('module_srl'))) $sort_index = 'module_srl'; + $args->sort_index = $sort_index; + $args->list_count = $list_count; + $args->page = $page; + $output = executeQueryArray('planet.getPlanetList', $args); + + if(!$output->toBool()) return $output; + + if(count($output->data)) { + foreach($output->data as $key => $val) { + $oPlanet = null; + $oPlanet = new PlanetInfo(); + $oPlanet->setAttribute($val); + $output->data[$key] = null; + $output->data[$key] = $oPlanet; + } + } + return $output; + } + + /** + * @brief 플래닛 개별 정보 return + **/ + function getPlanet($module_srl) { + return new PlanetInfo($module_srl); + } + + /** + * @brief 플래닛 태그 return + **/ + function getPlanetTags($module_srl) { + $args->module_srl = $module_srl; + $output = executeQueryArray('planet.getPlanetTag', $args); + if(!$output->toBool() || !$output->data) return array(); + + $tags = array(); + foreach($output->data as $key => $val) $tags[] = $val->tag; + return $tags; + } + + /** + * @brief 특정 회원의 플래닛 생성 개수 return + **/ + function getPlanetCount($member_srl = null) { + if(!$member_srl) { + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + } + if(!$member_srl) return null; + + $args->member_srl = $member_srl; + $output = executeQuery('planet.getPlanetCount',$args); + return $output->data->count; + } + + /** + * @brief 최신 업데이트 글 추출 + * mid : 대상 플래닛, null이면 전체 글 대상 + * date : 선택된 일자(필수값, 없으면 오늘을 대상으로 함) + * page : 페이지 번호 + * list_count : 추출 대상 수 + **/ + function getNewestContentList($mid = null, $date = null, $page=1, $list_count = 10, $sort_index = 'documents.list_order', $order = 'asc',$tag=null) { + if(!$page) $page = 1; + if(!$date) $date = date("Ymd"); + + // 전체 글을 추출 (module='planet'에 대해서 추출해야 하기에 document 모델을 사용하지 않음) + if($mid) $args->mid = $mid; + $args->date = $date; + $args->page = $page; + $args->sort_index = $sort_index; + $args->order = $order; + $args->list_count = $list_count; + if($args->sort_index == 'documents.voted_count') $args->voted_count = 1; + elseif($args->sort_index == 'documents.comment_count') $args->comment_count = 1; + + if($tag){ + $args->tag = $tag; + $output = executeQueryArray('planet.getPlanetNewestTagSearchContentList', $args); + }else{ + $output = executeQueryArray('planet.getPlanetNewestContentList', $args); + } + if(!$output->toBool()) return $output; + if(count($output->data)) { + foreach($output->data as $key => $val) { + unset($oPlanet); + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[$key] = $oPlanet; + } + } + return $output; + } + + /** + * @brief 메인 추출용 각 플래닛별 최신글 추출 + **/ + function getHomeContentList($date, $page, $list_count = 10) { + // 즐찾 플래닛 추출 + $args->date = $date; + $args->page = $page?$page:1; + $args->list_count = $list_count; + $args->page_count = 10; + $args->sort_index = "documents.list_order"; + + $output = executeQueryArray('planet.getHomeContentList', $args); + if(!$output->toBool()||!count($output->data)) return $output; + + $document_indexes = $document_srls = array(); + foreach($output->data as $key => $val) { + $document_srls[] = $val->document_srl; + $document_indexes[$val->document_srl] = $key; + } + + $content_args->document_srls = implode(',',$document_srls); + $content_output = executeQueryArray('planet.getContents', $content_args); + if(!$content_output->toBool() || !$content_output->data) return $content_output; + + $output->data = null; + foreach($content_output->data as $val) { + $oPlanet = null; + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[ $document_indexes[$val->document_srl] ] = $oPlanet; + } + + return $output; + } + + /** + * @brief 태그/글/인물태그 검색 결과 return + **/ + function getSearchResultCount($module_srl, $search_keyword) { + $result->tag = 0; + $result->content = 0; + $result->planetTag = 0; + + if(!$search_keyword) return $result; + + if($module_srl) $args->module_srl = $module_srl; + + $result->tag = $this->getTagSearchResultCount($module_srl, $search_keyword); + $result->planetTag = $this->getPlanetTagSearchResultCount($module_srl, $search_keyword); + $result->content = $this->getContentSearchResultCount($module_srl, $search_keyword); + + return $result; + } + + + function getTagSearchResultCount($module_srl, $search_keyword) { + if(!$search_keyword) return $result; + if($module_srl) $args->module_srl = $module_srl; + $args->search_keyword = $search_keyword; + $output = executeQuery('planet.getTagSearchResult', $args); + return $output->data->count; + } + + function getContentSearchResultCount($module_srl, $search_keyword) { + if(!$search_keyword) return $result; + if($module_srl) $args->module_srl = $module_srl; + $args->search_keyword = $search_keyword; + $search_keyword = str_replace(' ','%',$search_keyword); + $args->search_keyword = $search_keyword; + + $output = executeQuery('planet.getContentSearchResult', $args); + return $output->data->count; + } + + + function getPlanetTagSearchResultCount($module_srl, $search_keyword) { + if(!$search_keyword) return $result; + if($module_srl) $args->module_srl = $module_srl; + $args->search_keyword = $search_keyword; + $output = executeQuery('planet.getPlanetTagSearchResult', $args); + return $output->data->count; + } + + + /** + * @brief 태그/글 검색 + **/ + function getContentList($module_srl = 0, $search_target = 'tag', $search_keyword = '', $page = 1, $list_count = 10){ + if($module_srl) { + if(is_array($module_srl)) $args->module_srl = implode(',', $module_srl); + else $args->module_srl = $module_srl; + } + + $args->page = $page?$page:1; + $args->list_count = $list_count; + $args->page_count = 10; + + // 검색 옵션 정리 + if($search_target && $search_keyword) { + switch($search_target) { + case 'content' : + $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_content = $search_keyword; + $output = executeQueryArray('planet.getContentList', $args); + break; + case 'tag' : + $args->s_tags = str_replace(' ','%',$search_keyword); + $output = executeQueryArray('planet.getContentListSearchTag', $args); + break; + } + }else{ + $output = executeQueryArray('planet.getContentList', $args); + } + + + if(!$output->toBool()||!count($output->data)) return $output; + + $idx = 0; + $data = $output->data; + unset($output->data); + + if(!isset($virtual_number)) + { + $keys = array_keys($data); + $virtual_number = $keys[0]; + } + + foreach($data as $key => $attribute) { + $document_srl = $attribute->document_srl; + $oPlanet = null; + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($attribute); + if($this->grant->manager) $oPlanet->setGrant(); + + $output->data[$virtual_number] = $oPlanet; + $virtual_number --; + + } + return $output; + } + + /** + * @brief 플래닛 태그 검색 return + **/ + function getPlanetTagList($search_keyword, $page, $list_count = 10) { + $args->page = $page?$page:1; + $args->list_count = $list_count; + $args->page_count = 10; + $args->search_keyword = $search_keyword; + + $output = executeQueryArray('planet.getPlanetTagList', $args); + if(!$output->toBool()||!count($output->data)) return $output; + + foreach($output->data as $key => $val) { + $output->data[$key] = $this->getPlanet($val->module_srl); + } + + return $output; + } + + /** + * @breif 회원 - 즐찾 return + **/ + function getFavoriteContentList($module_srl, $page=1, $list_count =10) { + // 즐찾 플래닛 추출 + $args->module_srl = $module_srl; + $args->page = $page?$page:1; + $args->list_count = $list_count; + $args->page_count = 10; + + $output = executeQueryArray('planet.getFavoriteContentList', $args); + if(!$output->toBool()||!count($output->data)) return $output; + + foreach($output->data as $key => $val) { + $oPlanet = null; + $oPlanet = new PlanetItem(); + $oPlanet->setAttribute($val); + $output->data[$key] = $oPlanet; + } + + return $output; + } + + /** + * @brief 즐찾에 추가되어 있는지를 확인 + **/ + function isInsertedFavorite($module_srl, $reg_planet_srl) { + $args->module_srl = $module_srl; + $args->reg_planet_srl = $reg_planet_srl; + $output = executeQuery('planet.getMyFavorite', $args); + if($output->data->count>0) return true; + return false; + } + + /** + * @brief 회원 - 플래닛 메모 목록 return + **/ + function getMemoList($module_srl, $page=1) { + if(!$module_srl) return; + + $args->module_srl = $module_srl; + $args->page = $page; + return executeQueryArray('planet.getPlanetMemoList', $args); + } + + /** + * @brief 메모 목록 html return action + **/ + function getPlanetMemoList() { + $target_module_srl = Context::get('target_module_srl'); + if(!$target_module_srl) return; + $page = Context::get('page'); + + Context::set('planet', $this->getPlanet($target_module_srl)); + Context::set('myplanet', $this->getMemberPlanet()); + + $this->add('tpl', $this->getMemoHtml($target_module_srl, $page)); + } + + /** + * @brief 메모 목록 html 생성 + **/ + function getMemoHtml($module_srl, $page=1) { + // 메모 목록을 구함 + $output = $this->getMemoList($module_srl, $page); + Context::set('memo_list', $output->data); + Context::set('memo_navigation', $output->page_navigation); + + $planet = $this->getPlanet($module_srl); + $logged_info = Context::get('logged_info'); + Context::set('myplanet', $this->getMemberPlanet()); + Context::set('planet', $planet); + + // 스킨 경로를 구함 + $config = $this->getPlanetConfig(); + if(!$this->module_info->skin) $this->module_info->skin = $config->planet_default_skin; + $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); + + // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($template_path, 'memo_list'); + return $tpl; + } + + /** + * @brief 관심태그 html 목록 return + **/ + function getInterestTagsHtml($module_srl) { + $interest_tags = $this->getInterestTags($module_srl); + Context::set('interest_tags', $interest_tags); + + $logged_info = Context::get('logged_info'); + $planet = $this->getPlanet($module_srl); + Context::set('planet', $planet); + + // 스킨 경로를 구함 + $config = $this->getPlanetConfig(); + if(!$this->module_info->skin) $this->module_info->skin = $config->planet_default_skin; + $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); + + // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($template_path, 'interest_tags'); + return $tpl; + } + + + /** + * @brief 플래닛 이미지 경로 return + **/ + function getPlanetPhotoPath($module_srl) { + return sprintf('files/attach/images/%d/%s', $module_srl, getNumberingPath($module_srl, 3)); + } + + /** + * @brief 플래닛 이미지 유무 체크후 경로 return + **/ + function getPlanetPhotoSrc($module_srl) { + $path = $this->getPlanetPhotoPath($module_srl); + if(!is_dir($path)) return sprintf("%s%s%s", Context::getRequestUri(), $this->module_path, 'tpl/images/blank_photo.gif'); + $filename = sprintf('%s/%d.jpg', $path, $module_srl); + if(!file_exists($filename)) return sprintf("%s%s%s", Context::getRequestUri(), $this->module_path, 'tpl/images/blank_photo.gif'); + return Context::getRequestUri().$filename."?rnd=".filemtime($filename); + } + + /** + * @brief 관심태그 가져오기 + **/ + function getInterestTags($module_srl) { + $args->module_srl = $module_srl; + $output = executeQueryArray('planet.getInterestTags', $args); + if(!$output->toBool()||!$output->data) return array(); + + $result = array(); + foreach($output->data as $key => $val) $result[] = $val->tag; + return $result; + } + + + /** + * @brief 회원 - 플래닛 댓글 목록 return + **/ + function getReplyList($document_srl, $page=1) { + if(!$document_srl) return; + + // 해당 문서의 모듈에 해당하는 댓글 수를 구함 + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + + // 문서가 존재하지 않으면 return~ + if(!$oDocument->isExists()) return; + + // 정해진 수에 따라 목록을 구해옴 + $args->document_srl = $document_srl; + $output = executeQueryArray('planet.getPlanetComments', $args); + if($output->data) { + foreach($output->data as $key => $val) { + $output->data[$key]->content = preg_replace('/"([^"]*)":(http|ftp|https|mms)([^ ]+)/is','$1$4', $val->content); + + } + } + + $logged_info = Context::get('logged_info'); + if($oDocument->get('member_srl')==$logged_info->member_srl) { + $args->module_srl = $oDocument->get('module_srl'); + $args->document_srl = $oDocument->get('document_srl'); + executeQuery('planet.deleteCatch', $args); + } + + // 쿼리 결과에서 오류가 생기면 그냥 return + if(!$output->toBool()) return; + + return $output; + } + + /** + * @brief 댓글 목록 html return action + **/ + function getPlanetReplyList() { + $document_srl = Context::get('document_srl'); + if(!$document_srl) return; + $page = Context::get('page'); + + Context::set('planet', $this->getPlanet($document_srl)); + Context::set('myplanet', $this->getMemberPlanet()); + + $this->add('document_srl',$document_srl); + $this->add('tpl', $this->getReplyHtml($document_srl)); + } + + /** + * @brief 댓글 목록 html 생성 + **/ + function getReplyHtml($document_srl, $page=1) { + // 메모 목록을 구함 + $output = $this->getReplyList($document_srl); + Context::set('reply_list', $output->data); + + // 스킨 경로를 구함 + $config = $this->getPlanetConfig(); + if(!$this->module_info->skin) $this->module_info->skin = $config->planet_default_skin; + $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); + + // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($template_path, 'reply_list'); + + return $tpl; + } + + + /** + * @brief SMS가 등록된 사용자를 가져온다 + * $args->phone_number 또는 $args->member_srl + **/ + function getSMSUser($args){ + $output = executeQuery('planet.getSMSUser',$args); + return $output; + } + + + function getSMSRecv($phone_number){ + $args->phone_number = $phone_number; + $output = executeQueryArray('planet.getSMSRecv',$args); + return $output; + } + } +?> diff --git a/modules/planet/planet.view.php b/modules/planet/planet.view.php new file mode 100644 index 000000000..4c724bcbf --- /dev/null +++ b/modules/planet/planet.view.php @@ -0,0 +1,344 @@ +config = $oPlanetModel->getPlanetConfig()); + + /** + * 스킨이 없으면 플래닛 기본 설정의 스킨으로 설정 + **/ + if(!$this->module_info->skin) $this->module_info->skin = $this->config->planet_default_skin; + $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); + $this->setTemplatePath($template_path); + + /** + * myplanet(접속자 플래닛), planet(접속된 페이지의 플래닛)을 Context setting 하여 모든 곳에서 사용 + **/ + // myplanet 을 무조건 Context::set(), $myplanet->isExists()에 따라서 나의 플래닛 유무 확인 + Context::set('myplanet', $this->myplanet = $oPlanetModel->getMemberPlanet()); + + // 현재 mid의 플래닛을 세팅 (홈이건 개별 플래닛이건 모두 $planet 로 판별 가능, PlanetInfo::isHome() 참고 + Context::set('planet', $this->planet = $oPlanetModel->getPlanet($this->module_srl)); + + // 메인 페이지 일 경우 특정 액션이 아니라면 무조건 메인 화면 뿌려줌 + if($this->planet->isHome() && !in_array($this->act, array('dispPlanetCreate','dispPlanetLogin','dispPlanetTagSearch','dispPlanetContentSearch','dispPlanetContentTagSearch')) ) { + Context::set('act',$this->act = 'dispPlanetHome'); + } + } + + /** + * @brief 로그인 + **/ + function dispPlanetLogin(){ + $this->setTemplateFile('login'); + } + + /** + * @brief 플래닛 생성 + **/ + function dispPlanetCreate() { + if(!Context::get('is_logged')) return $this->dispPlanetMessage("msg_not_logged"); + if(!$this->grant->create) return $this->dispPlanetMessage("msg_not_permitted"); + + if($this->myplanet->isExists()) return $this->dispPlanetMessage("msg_planet_exists"); + + $this->setTemplateFile('create'); + } + + /** + * @biref 플래닛 메인 페이지 + **/ + function dispPlanetHome() { + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + // 플래닛의 기본 단위인 날짜를 미리 계산 (지정된 일자의 이전/다음날도 미리 계산하여 세팅) + $last_date = $this->planet->getContentLastDay(); + $date = Context::get('date'); + if(!$date || $date > $last_date) $date = $last_date; + Context::set('date', $date); + Context::set('prev_date', date("Ymd",ztime($date)-60*60*24)); + Context::set('next_date', date("Ymd",ztime($date)+60*60*24)); + + + // 초기화면에서 tagtab이 나오기 위해 set type 한다 + $type = Context::get('type'); + if(!$type){ + if(is_array($this->config->tagtab) && $this->config->tagtab[0]){ + $type = 'tagtab'; + Context::set('type',$type); + Context::set('tagtab',$this->config->tagtab[0]); + }else{ + $type = 'all'; + Context::set('type',$type); + } + } + + + $tagtab = null; + if($type == 'tagtab'){ + $tagtab = Context::get('tagtab'); + $page = Context::get('page'); + $oPlanetModel = &getModel('planet'); + $sort_index = 'documents.list_order'; + $order = 'asc'; + }else{ + switch($type) { + case 'wantyou': + $sort_index = 'documents.voted_count'; + $order = 'desc'; + break; + case 'best': + $sort_index = 'documents.comment_count'; + $order = 'desc'; + break; + + case 'all': + $sort_index = 'documents.list_order'; + $order = 'asc'; + break; + } + + $page = Context::get('page'); + $oPlanetModel = &getModel('planet'); + } + + $output = $oPlanetModel->getNewestContentList(null, $date, $page, 10, $sort_index, $order,$tagtab ); + Context::set('content_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + + $args->date = $date; + $output = executeQuery('planet.getTotalContents', $args); + Context::set('total_content', $output->data->count); + + $args->voted_count = 1; + $output = executeQuery('planet.getTotalContents', $args); + Context::set('total_wantyou', $output->data->count); + + unset($args->voted_count); + $args->comment_count = 1; + $output = executeQuery('planet.getTotalContents', $args); + Context::set('total_best', $output->data->count); + + + // tagtab을 만든다 + if(is_array($this->config->tagtab) && $this->config->tagtab[0]){ + $tagtab_list = array(); + foreach($this->config->tagtab as $key => $val){ + $args->tag = $val; + $output = executeQuery('planet.getTotalTagSearchContents', $args); + $tagtab_list[$val] = $output->data->count; + } + Context::set('tagtab_list', $tagtab_list); + } + + // 템플릿 지정 + $this->setTemplateFile('main'); + } + + /** + * @brief 개별 플래닛 + **/ + function dispPlanet(){ + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + $oPlanetModel = &getModel('planet'); + + // 플래닛의 기본 단위인 날짜를 미리 계산 (지정된 일자의 이전/다음날도 미리 계산하여 세팅) + $last_date = $this->planet->getContentLastDay(); + $date = Context::get('date'); + if(!$date || $date > $last_date) $date = $last_date; + Context::set('date', $date); + Context::set('prev_date', date("Ymd",ztime($date)-60*60*24)); + Context::set('next_date', date("Ymd",ztime($date)+60*60*24)); + + // 최신 업데이트 글 추출 + $page = Context::get('page'); + + $type = Context::get('type'); + switch($type) { + case 'catch': + $output = $this->planet->getCatchContentList($page); + break; + case 'interest': + $output = $this->planet->getInterestTagContentList($date, $page); + break; + default : + $sort_index = 'documents.list_order'; + $order = 'asc'; + $output = $this->planet->getNewestContentList($date, $page, 10,$sort_index,$order); + break; + } + Context::set('content_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + + // 오늘의 전체 글 수 + $args->date = $date; + $args->module_srl = $this->planet->getModuleSrl(); + $output = executeQuery('planet.getTotalContents', $args); + Context::set('total_content', $output->data->count); + + // 낚은 글 수 + $output = executeQuery('planet.getCatchContentCount', $args); + Context::set('total_catch', $output->data->count); + + // 플래닛의 메모 가져오기 + $memo_output = $oPlanetModel->getMemoList($this->module_srl); + Context::set('memo_list', $memo_output->data); + Context::set('memo_navigation', $memo_output->page_navigation); + + // 플래닛의 관심태그 가져오기 + $interest_tags = $oPlanetModel->getInterestTags($this->module_srl); + Context::set('interest_tags', $interest_tags); + + // 브라우저 타이틀 변경 + Context::setBrowserTitle($this->planet->getPlanetTitle().' - '.$this->planet->getBrowserTitle()); + + // 템플릿 지정 + $this->setTemplateFile('myPlanet'); + } + + /** + * @brief 즐겨찾기 보기 + **/ + function favorite() { + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + $oPlanetModel = &getModel('planet'); + + // 개별 플래닛의 정보를 세팅 + $planet = $oPlanetModel->getPlanet($this->module_srl); + Context::set('planet', $planet); + + // 내플래닛인지 아닌지 + $logged_info = Context::get('logged_info'); + Context::set('isMyPlanet', $planet->getMemberSrl() == $logged_info->member_srl); + + // 플래닛의 메모 가져오기 + $memo_output = $oPlanetModel->getMemoList($this->module_srl); + Context::set('memo_list', $memo_output->data); + Context::set('memo_navigation', $memo_output->page_navigation); + + // 플래닛의 관심태그 가져오기 + $interest_tags = $oPlanetModel->getInterestTags($this->module_srl); + Context::set('interest_tags', $interest_tags); + + // 브라우저 타이틀 변경 + Context::setBrowserTitle($planet->getPlanetTitle().' - '.$planet->getBrowserTitle()); + + // 내 플래닛이 아닐 경우 즐찾에 포함되어 있는 대상인지 확인 + $myplanet = Context::get('myplanet'); + if(Context::get('isMyPlanet') || $oPlanetModel->isInsertedFavorite($myplanet->module_srl, $this->module_srl)) { + Context::set('myFavoritePlanet',true); + } else { + Context::set('myFavoritePlanet',false); + } + + // 즐찾 가져오기 + $page = Context::get('page'); + $output = $oPlanetModel->getFavoriteContentList($this->module_srl, $page, 10); + Context::set('content_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + + // 템플릿 지정 + $this->setTemplateFile('favorite'); + } + + function dispPlanetContentTagSearch(){ + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + $keyword = urldecode(Context::get('keyword')); + $page = Context::get('page'); + if(!$this->planet->isHome()) $module_srl = $this->module_srl; + else $module_srl = null; + + $oPlanetModel = &getModel('planet'); + Context::set('search_result', $oPlanetModel->getSearchResultCount($module_srl, $keyword)); + + if($keyword) { + $output = $oPlanetModel->getContentList($module_srl,'tag',$keyword, $page, 10); + Context::set('content_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + } + + // 템플릿 지정 + $this->setTemplateFile('search'); + } + + function dispPlanetContentSearch(){ + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + $keyword = urldecode(Context::get('keyword')); + $page = Context::get('page'); + if(!$this->planet->isHome()) $module_srl = $this->module_srl; + else $module_srl = null; + + $oPlanetModel = &getModel('planet'); + + Context::set('search_result', $oPlanetModel->getSearchResultCount($module_srl, $keyword)); + + if($keyword) { + $output = $oPlanetModel->getContentList($module_srl,'content',$keyword, $page, 10); + Context::set('content_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + } + + // 템플릿 지정 + $this->setTemplateFile('search'); + } + + function dispPlanetTagSearch(){ + if(!$this->grant->access) return $this->dispPlanetMessage("msg_not_permitted"); + + $keyword = urldecode(Context::get('keyword')); + $page = Context::get('page'); + if(!$this->planet->isHome()) $module_srl = $this->module_srl; + else $module_srl = null; + + $oPlanetModel = &getModel('planet'); + + Context::set('search_result', $oPlanetModel->getSearchResultCount($module_srl, $keyword)); + + if($keyword) { + $output = $oPlanetModel->getPlanetTagList($keyword, $page, 10); + Context::set('planet_list', $output->data); + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('page_navigation', $output->page_navigation); + } + + // 템플릿 지정 + $this->setTemplateFile('search_planet'); + } + + } + +?> diff --git a/modules/planet/queries/deleteCatch.xml b/modules/planet/queries/deleteCatch.xml new file mode 100644 index 000000000..ef6c9bc2c --- /dev/null +++ b/modules/planet/queries/deleteCatch.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/modules/planet/queries/deleteInterestTag.xml b/modules/planet/queries/deleteInterestTag.xml new file mode 100644 index 000000000..557198422 --- /dev/null +++ b/modules/planet/queries/deleteInterestTag.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanet.xml b/modules/planet/queries/deletePlanet.xml new file mode 100644 index 000000000..537b748b1 --- /dev/null +++ b/modules/planet/queries/deletePlanet.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/planet/queries/deletePlanetFavorite.xml b/modules/planet/queries/deletePlanetFavorite.xml new file mode 100644 index 000000000..64b173160 --- /dev/null +++ b/modules/planet/queries/deletePlanetFavorite.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanetFavorites.xml b/modules/planet/queries/deletePlanetFavorites.xml new file mode 100644 index 000000000..e744507b4 --- /dev/null +++ b/modules/planet/queries/deletePlanetFavorites.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanetMemo.xml b/modules/planet/queries/deletePlanetMemo.xml new file mode 100644 index 000000000..705b5eb11 --- /dev/null +++ b/modules/planet/queries/deletePlanetMemo.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/planet/queries/deletePlanetMemos.xml b/modules/planet/queries/deletePlanetMemos.xml new file mode 100644 index 000000000..30537e4ea --- /dev/null +++ b/modules/planet/queries/deletePlanetMemos.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanetReply.xml b/modules/planet/queries/deletePlanetReply.xml new file mode 100644 index 000000000..c05d8083e --- /dev/null +++ b/modules/planet/queries/deletePlanetReply.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanetTag.xml b/modules/planet/queries/deletePlanetTag.xml new file mode 100644 index 000000000..1c183cf38 --- /dev/null +++ b/modules/planet/queries/deletePlanetTag.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/deletePlanetTags.xml b/modules/planet/queries/deletePlanetTags.xml new file mode 100644 index 000000000..45bc35c98 --- /dev/null +++ b/modules/planet/queries/deletePlanetTags.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/planet/queries/deletePlanetVoteLogs.xml b/modules/planet/queries/deletePlanetVoteLogs.xml new file mode 100644 index 000000000..b07755a2a --- /dev/null +++ b/modules/planet/queries/deletePlanetVoteLogs.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/planet/queries/deleteSMSRecv.xml b/modules/planet/queries/deleteSMSRecv.xml new file mode 100644 index 000000000..dce3f37a8 --- /dev/null +++ b/modules/planet/queries/deleteSMSRecv.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/planet/queries/deleteSMSUser.xml b/modules/planet/queries/deleteSMSUser.xml new file mode 100644 index 000000000..bca02bda5 --- /dev/null +++ b/modules/planet/queries/deleteSMSUser.xml @@ -0,0 +1,8 @@ + + +
+ + + + + \ No newline at end of file diff --git a/modules/planet/queries/getCatch.xml b/modules/planet/queries/getCatch.xml new file mode 100644 index 000000000..abc7605ad --- /dev/null +++ b/modules/planet/queries/getCatch.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/getCatchContentCount.xml b/modules/planet/queries/getCatchContentCount.xml new file mode 100644 index 000000000..a630e1892 --- /dev/null +++ b/modules/planet/queries/getCatchContentCount.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/getCatchContentList.xml b/modules/planet/queries/getCatchContentList.xml new file mode 100644 index 000000000..218ca6084 --- /dev/null +++ b/modules/planet/queries/getCatchContentList.xml @@ -0,0 +1,36 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getContentList.xml b/modules/planet/queries/getContentList.xml new file mode 100644 index 000000000..9d4ed9d50 --- /dev/null +++ b/modules/planet/queries/getContentList.xml @@ -0,0 +1,39 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getContentListSearchTag.xml b/modules/planet/queries/getContentListSearchTag.xml new file mode 100644 index 000000000..81345a822 --- /dev/null +++ b/modules/planet/queries/getContentListSearchTag.xml @@ -0,0 +1,40 @@ + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getContentSearchResult.xml b/modules/planet/queries/getContentSearchResult.xml new file mode 100644 index 000000000..c85da9667 --- /dev/null +++ b/modules/planet/queries/getContentSearchResult.xml @@ -0,0 +1,17 @@ + + +
+
+
+ + + + + + + + + + + + diff --git a/modules/planet/queries/getContents.xml b/modules/planet/queries/getContents.xml new file mode 100644 index 000000000..4c1d0c82c --- /dev/null +++ b/modules/planet/queries/getContents.xml @@ -0,0 +1,37 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getFavoriteContentList.xml b/modules/planet/queries/getFavoriteContentList.xml new file mode 100644 index 000000000..9d0fcf920 --- /dev/null +++ b/modules/planet/queries/getFavoriteContentList.xml @@ -0,0 +1,21 @@ + + +
+
+
+ + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getFavorites.xml b/modules/planet/queries/getFavorites.xml new file mode 100644 index 000000000..f2b394e4e --- /dev/null +++ b/modules/planet/queries/getFavorites.xml @@ -0,0 +1,31 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getHomeContentList.xml b/modules/planet/queries/getHomeContentList.xml new file mode 100644 index 000000000..6040f3afb --- /dev/null +++ b/modules/planet/queries/getHomeContentList.xml @@ -0,0 +1,22 @@ + + +
+
+ + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getInterestTagContentList.xml b/modules/planet/queries/getInterestTagContentList.xml new file mode 100644 index 000000000..2aedf0b3e --- /dev/null +++ b/modules/planet/queries/getInterestTagContentList.xml @@ -0,0 +1,41 @@ + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getInterestTags.xml b/modules/planet/queries/getInterestTags.xml new file mode 100644 index 000000000..8a1f6333d --- /dev/null +++ b/modules/planet/queries/getInterestTags.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/getMemberPlanet.xml b/modules/planet/queries/getMemberPlanet.xml new file mode 100644 index 000000000..f4ecf046c --- /dev/null +++ b/modules/planet/queries/getMemberPlanet.xml @@ -0,0 +1,25 @@ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getMyFavorite.xml b/modules/planet/queries/getMyFavorite.xml new file mode 100644 index 000000000..835a00d92 --- /dev/null +++ b/modules/planet/queries/getMyFavorite.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/getPlanet.xml b/modules/planet/queries/getPlanet.xml new file mode 100644 index 000000000..1d9c9a4d3 --- /dev/null +++ b/modules/planet/queries/getPlanet.xml @@ -0,0 +1,25 @@ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetComments.xml b/modules/planet/queries/getPlanetComments.xml new file mode 100644 index 000000000..19a2e90b0 --- /dev/null +++ b/modules/planet/queries/getPlanetComments.xml @@ -0,0 +1,19 @@ + + +
+
+
+ + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetContentLastDay.xml b/modules/planet/queries/getPlanetContentLastDay.xml new file mode 100644 index 000000000..ac5f8db0c --- /dev/null +++ b/modules/planet/queries/getPlanetContentLastDay.xml @@ -0,0 +1,14 @@ + + +
+
+ + + + + + + + + + diff --git a/modules/planet/queries/getPlanetContentSearch.xml b/modules/planet/queries/getPlanetContentSearch.xml new file mode 100644 index 000000000..3df77fa42 --- /dev/null +++ b/modules/planet/queries/getPlanetContentSearch.xml @@ -0,0 +1,18 @@ + + +
+ + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetContentSearchCount.xml b/modules/planet/queries/getPlanetContentSearchCount.xml new file mode 100644 index 000000000..5b04171ff --- /dev/null +++ b/modules/planet/queries/getPlanetContentSearchCount.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getPlanetContents.xml b/modules/planet/queries/getPlanetContents.xml new file mode 100644 index 000000000..e19fb9295 --- /dev/null +++ b/modules/planet/queries/getPlanetContents.xml @@ -0,0 +1,16 @@ + + +
+ + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetCount.xml b/modules/planet/queries/getPlanetCount.xml new file mode 100644 index 000000000..de0836eb6 --- /dev/null +++ b/modules/planet/queries/getPlanetCount.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/getPlanetList.xml b/modules/planet/queries/getPlanetList.xml new file mode 100644 index 000000000..856206675 --- /dev/null +++ b/modules/planet/queries/getPlanetList.xml @@ -0,0 +1,30 @@ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetMemo.xml b/modules/planet/queries/getPlanetMemo.xml new file mode 100644 index 000000000..dc2cdd1dd --- /dev/null +++ b/modules/planet/queries/getPlanetMemo.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/getPlanetMemoList.xml b/modules/planet/queries/getPlanetMemoList.xml new file mode 100644 index 000000000..590bef46b --- /dev/null +++ b/modules/planet/queries/getPlanetMemoList.xml @@ -0,0 +1,25 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetNewestContentList.xml b/modules/planet/queries/getPlanetNewestContentList.xml new file mode 100644 index 000000000..56176672e --- /dev/null +++ b/modules/planet/queries/getPlanetNewestContentList.xml @@ -0,0 +1,35 @@ + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetNewestTagSearchContentList.xml b/modules/planet/queries/getPlanetNewestTagSearchContentList.xml new file mode 100644 index 000000000..0eb464a05 --- /dev/null +++ b/modules/planet/queries/getPlanetNewestTagSearchContentList.xml @@ -0,0 +1,37 @@ + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetPopularTags.xml b/modules/planet/queries/getPlanetPopularTags.xml new file mode 100644 index 000000000..965d6b3bc --- /dev/null +++ b/modules/planet/queries/getPlanetPopularTags.xml @@ -0,0 +1,23 @@ + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetReply.xml b/modules/planet/queries/getPlanetReply.xml new file mode 100644 index 000000000..782e2bfbc --- /dev/null +++ b/modules/planet/queries/getPlanetReply.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getPlanetReplyList.xml b/modules/planet/queries/getPlanetReplyList.xml new file mode 100644 index 000000000..e69de29bb diff --git a/modules/planet/queries/getPlanetTag.xml b/modules/planet/queries/getPlanetTag.xml new file mode 100644 index 000000000..9c942a82e --- /dev/null +++ b/modules/planet/queries/getPlanetTag.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetTagList.xml b/modules/planet/queries/getPlanetTagList.xml new file mode 100644 index 000000000..988a532e7 --- /dev/null +++ b/modules/planet/queries/getPlanetTagList.xml @@ -0,0 +1,19 @@ + + +
+
+ + + + + + + + + + + + + + + diff --git a/modules/planet/queries/getPlanetTagSearchCount.xml b/modules/planet/queries/getPlanetTagSearchCount.xml new file mode 100644 index 000000000..b98194817 --- /dev/null +++ b/modules/planet/queries/getPlanetTagSearchCount.xml @@ -0,0 +1,14 @@ + + +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getPlanetTagSearchResult.xml b/modules/planet/queries/getPlanetTagSearchResult.xml new file mode 100644 index 000000000..9faebc777 --- /dev/null +++ b/modules/planet/queries/getPlanetTagSearchResult.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/getPlanetTagTextCount.xml b/modules/planet/queries/getPlanetTagTextCount.xml new file mode 100644 index 000000000..728a64163 --- /dev/null +++ b/modules/planet/queries/getPlanetTagTextCount.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getSMSRecv.xml b/modules/planet/queries/getSMSRecv.xml new file mode 100644 index 000000000..b69fa46c7 --- /dev/null +++ b/modules/planet/queries/getSMSRecv.xml @@ -0,0 +1,15 @@ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getSMSUser.xml b/modules/planet/queries/getSMSUser.xml new file mode 100644 index 000000000..d446126b2 --- /dev/null +++ b/modules/planet/queries/getSMSUser.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getTagSearchResult.xml b/modules/planet/queries/getTagSearchResult.xml new file mode 100644 index 000000000..07d22f22f --- /dev/null +++ b/modules/planet/queries/getTagSearchResult.xml @@ -0,0 +1,20 @@ + + +
+
+
+
+ + + + + + + + + + + + + + diff --git a/modules/planet/queries/getTotalContents.xml b/modules/planet/queries/getTotalContents.xml new file mode 100644 index 000000000..84539be3e --- /dev/null +++ b/modules/planet/queries/getTotalContents.xml @@ -0,0 +1,17 @@ + + +
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/getTotalTagSearchContents.xml b/modules/planet/queries/getTotalTagSearchContents.xml new file mode 100644 index 000000000..f1795eea2 --- /dev/null +++ b/modules/planet/queries/getTotalTagSearchContents.xml @@ -0,0 +1,18 @@ + + +
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/insertCatch.xml b/modules/planet/queries/insertCatch.xml new file mode 100644 index 000000000..0f04ec9be --- /dev/null +++ b/modules/planet/queries/insertCatch.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/insertInterestTag.xml b/modules/planet/queries/insertInterestTag.xml new file mode 100644 index 000000000..1d7622311 --- /dev/null +++ b/modules/planet/queries/insertInterestTag.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/insertPlanet.xml b/modules/planet/queries/insertPlanet.xml new file mode 100644 index 000000000..63a640976 --- /dev/null +++ b/modules/planet/queries/insertPlanet.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/insertPlanetContent.xml b/modules/planet/queries/insertPlanetContent.xml new file mode 100644 index 000000000..b1f8d92fc --- /dev/null +++ b/modules/planet/queries/insertPlanetContent.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/planet/queries/insertPlanetContentVoteLog.xml b/modules/planet/queries/insertPlanetContentVoteLog.xml new file mode 100644 index 000000000..10fc31e9a --- /dev/null +++ b/modules/planet/queries/insertPlanetContentVoteLog.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/insertPlanetFavorite.xml b/modules/planet/queries/insertPlanetFavorite.xml new file mode 100644 index 000000000..919029ce8 --- /dev/null +++ b/modules/planet/queries/insertPlanetFavorite.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/insertPlanetMemo.xml b/modules/planet/queries/insertPlanetMemo.xml new file mode 100644 index 000000000..24a377d15 --- /dev/null +++ b/modules/planet/queries/insertPlanetMemo.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/insertPlanetReply.xml b/modules/planet/queries/insertPlanetReply.xml new file mode 100644 index 000000000..42b3dec8d --- /dev/null +++ b/modules/planet/queries/insertPlanetReply.xml @@ -0,0 +1,13 @@ + + +
+ + + + + + + + + + diff --git a/modules/planet/queries/insertPlanetTag.xml b/modules/planet/queries/insertPlanetTag.xml new file mode 100644 index 000000000..1c1e341af --- /dev/null +++ b/modules/planet/queries/insertPlanetTag.xml @@ -0,0 +1,10 @@ + + +
+ + + + + + + diff --git a/modules/planet/queries/insertPlanetTagText.xml b/modules/planet/queries/insertPlanetTagText.xml new file mode 100644 index 000000000..414c99676 --- /dev/null +++ b/modules/planet/queries/insertPlanetTagText.xml @@ -0,0 +1,9 @@ + + +
+ + + + + + diff --git a/modules/planet/queries/insertSMSRecv.xml b/modules/planet/queries/insertSMSRecv.xml new file mode 100644 index 000000000..3a9e42dd5 --- /dev/null +++ b/modules/planet/queries/insertSMSRecv.xml @@ -0,0 +1,10 @@ + + +
+ + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/insertSMSUser.xml b/modules/planet/queries/insertSMSUser.xml new file mode 100644 index 000000000..cc0079966 --- /dev/null +++ b/modules/planet/queries/insertSMSUser.xml @@ -0,0 +1,10 @@ + + +
+ + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/updatePlanetBrowserTitle.xml b/modules/planet/queries/updatePlanetBrowserTitle.xml new file mode 100644 index 000000000..04d8431b8 --- /dev/null +++ b/modules/planet/queries/updatePlanetBrowserTitle.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/modules/planet/queries/updatePlanetColorset.xml b/modules/planet/queries/updatePlanetColorset.xml new file mode 100644 index 000000000..496233335 --- /dev/null +++ b/modules/planet/queries/updatePlanetColorset.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/updatePlanetContentReplyCount.xml b/modules/planet/queries/updatePlanetContentReplyCount.xml new file mode 100644 index 000000000..eaeac10a9 --- /dev/null +++ b/modules/planet/queries/updatePlanetContentReplyCount.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/updatePlanetContentVoteCount.xml b/modules/planet/queries/updatePlanetContentVoteCount.xml new file mode 100644 index 000000000..1bf9373e1 --- /dev/null +++ b/modules/planet/queries/updatePlanetContentVoteCount.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/updatePlanetLatestDocument.xml b/modules/planet/queries/updatePlanetLatestDocument.xml new file mode 100644 index 000000000..6b03c7c27 --- /dev/null +++ b/modules/planet/queries/updatePlanetLatestDocument.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/planet/queries/updatePlanetMe2day.xml b/modules/planet/queries/updatePlanetMe2day.xml new file mode 100644 index 000000000..23cad431f --- /dev/null +++ b/modules/planet/queries/updatePlanetMe2day.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/planet/queries/updatePlanetTitle.xml b/modules/planet/queries/updatePlanetTitle.xml new file mode 100644 index 000000000..9ca65366b --- /dev/null +++ b/modules/planet/queries/updatePlanetTitle.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/queries/updateShowReadWelcome.xml b/modules/planet/queries/updateShowReadWelcome.xml new file mode 100644 index 000000000..08619b01b --- /dev/null +++ b/modules/planet/queries/updateShowReadWelcome.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/planet/schemas/planet.xml b/modules/planet/schemas/planet.xml new file mode 100644 index 000000000..134a732d5 --- /dev/null +++ b/modules/planet/schemas/planet.xml @@ -0,0 +1,12 @@ +
+ + + + + + + + + + +
diff --git a/modules/planet/schemas/planet_catch.xml b/modules/planet/schemas/planet_catch.xml new file mode 100644 index 000000000..f54734477 --- /dev/null +++ b/modules/planet/schemas/planet_catch.xml @@ -0,0 +1,6 @@ + + + + + +
diff --git a/modules/planet/schemas/planet_content_vote_log.xml b/modules/planet/schemas/planet_content_vote_log.xml new file mode 100644 index 000000000..f5c8a9986 --- /dev/null +++ b/modules/planet/schemas/planet_content_vote_log.xml @@ -0,0 +1,6 @@ + + + + + +
diff --git a/modules/planet/schemas/planet_favorite.xml b/modules/planet/schemas/planet_favorite.xml new file mode 100644 index 000000000..eca8384f2 --- /dev/null +++ b/modules/planet/schemas/planet_favorite.xml @@ -0,0 +1,6 @@ + + + + + +
diff --git a/modules/planet/schemas/planet_interest_tags.xml b/modules/planet/schemas/planet_interest_tags.xml new file mode 100644 index 000000000..943e14e79 --- /dev/null +++ b/modules/planet/schemas/planet_interest_tags.xml @@ -0,0 +1,4 @@ + + + +
diff --git a/modules/planet/schemas/planet_memo.xml b/modules/planet/schemas/planet_memo.xml new file mode 100644 index 000000000..83329eed7 --- /dev/null +++ b/modules/planet/schemas/planet_memo.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/modules/planet/schemas/planet_sms_recv.xml b/modules/planet/schemas/planet_sms_recv.xml new file mode 100644 index 000000000..a287a620e --- /dev/null +++ b/modules/planet/schemas/planet_sms_recv.xml @@ -0,0 +1,5 @@ + + + + +
\ No newline at end of file diff --git a/modules/planet/schemas/planet_sms_user.xml b/modules/planet/schemas/planet_sms_user.xml new file mode 100644 index 000000000..c66aa70ed --- /dev/null +++ b/modules/planet/schemas/planet_sms_user.xml @@ -0,0 +1,5 @@ + + + + +
\ No newline at end of file diff --git a/modules/planet/schemas/planet_tags.xml b/modules/planet/schemas/planet_tags.xml new file mode 100644 index 000000000..6424967c1 --- /dev/null +++ b/modules/planet/schemas/planet_tags.xml @@ -0,0 +1,5 @@ + + + + +
diff --git a/modules/planet/skins/xe_planet/content_list.html b/modules/planet/skins/xe_planet/content_list.html new file mode 100644 index 000000000..7c48ca1c6 --- /dev/null +++ b/modules/planet/skins/xe_planet/content_list.html @@ -0,0 +1,90 @@ + +
+ +
+ +

{htmlspecialchars($item->nick_name)}{htmlspecialchars($item->get('nick_name'))}

+ +
+
+ {$item->getContent()} +
+ +

{$lang->planet_postscript} {htmlspecialchars($item->getPostScript())}

+ +
+
+ + {@ $regdate = $item->get('regdate') } +

{getTimeGap($item->get('regdate'), sprintf('y/m/d a H%s i%s', $lang->unit_hour,$lang->unit_min))}

+
+
TAG
+ +
+ + {htmlspecialchars($tag[$i])} + + + +
+
+
+ + +
+
+ +
+ + {htmlspecialchars($tag[$i])} + + +
+ +
+
+
+ + {$item->getVotedCount()} + {$lang->comment}({$item->getCommentCount()}) +
+
+
+
+ + +
+ +
+ + + +
+
{$logged_info->nick_name}
+
+
+ + + +
+
+
+ +
+ + +
+ + + + + + + diff --git a/modules/planet/skins/xe_planet/create.html b/modules/planet/skins/xe_planet/create.html new file mode 100644 index 000000000..853f14467 --- /dev/null +++ b/modules/planet/skins/xe_planet/create.html @@ -0,0 +1,38 @@ + + + +
+

Welcome

+

{$lang->about_planet_make_planet}

+ +
+
+ + + +
+ {$lang->planet_input_personalinfo} +
+
+
+
:
+
+
:
+
+
:
+
+
: {Context::getRequestUri()} *{$lang->about_planet_url}
+
+
: *{$lang->about_planet_mytag}
+
+ +
+
+ +
+
+
+ + + + diff --git a/modules/planet/skins/xe_planet/css/blue.css b/modules/planet/skins/xe_planet/css/blue.css new file mode 100644 index 000000000..e58521b59 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/blue.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#8BBED8;} +.authorFooter, +.commentList{ background:#f3f8fb;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteBlue.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#aed1e4;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#8BBED8;} diff --git a/modules/planet/skins/xe_planet/css/button.css b/modules/planet/skins/xe_planet/css/button.css new file mode 100644 index 000000000..ae09422c0 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/button.css @@ -0,0 +1,116 @@ +@charset "utf-8"; +/* Anchor Button */ +a.button, +a.button span { position:relative; display:inline-block; text-decoration:none !important; background:url(../images/buttonWhite.gif) no-repeat; cursor:pointer; white-space:nowrap; vertical-align:middle; *vertical-align:top;} +a.button { padding:0; background-position:left top; overflow:visible;} +a.button span { left:2px; padding:6px 10px 5px 8px; color:#000; font:12px/12px Sans-serif; background-position:right top;} +a.button, x:-moz-any-link { font:0/23px Sans-serif; padding:12px 0; top:1px;} /* Firefox 2 Fix */ +a.button, x:-moz-any-link, x:default { padding:0; top:0;} /* Firefox 2 Fix */ +/* Large Size */ +a.button.large { background-position:left -30px; } +a.button.large span { padding:7px 10px 6px 8px; font:16px/16px Sans-serif; background-position:right -30px;} +a.button.large, x:-moz-any-link { font:0/29px Sans-serif; padding:15px 0;} /* Firefox 2 Fix */ +a.button.large, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */ +/* xLarge Size */ +a.button.xLarge { background-position:left -65px; } +a.button.xLarge span { padding:8px 10px 7px 8px; font:20px/20px Sans-serif; background-position:right -65px;} +a.button.xLarge, x:-moz-any-link { font:0/35px Sans-serif; padding:18px 0;} /* Firefox 2 Fix */ +a.button.xLarge, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */ +/* Small Size */ +a.button.small { background-position:left -107px; } +a.button.small span { padding:4px 6px 3px 4px; font:11px/11px Sans-serif; background-position:right -107px;} +a.button.small, x:-moz-any-link { font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */ +a.button.small, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */ + +/* Control Button + Submit Button */ +span.button, +span.button button, +span.button input { position:relative; margin:0; display:inline-block; border:0; font:12px Sans-serif; white-space:nowrap; background:url(../images/buttonWhite.gif) no-repeat; vertical-align:middle;} +span.button { padding:0; background-position:left top;} +span.button, x:-moz-any-link{ font:0/23px Sans-serif; padding:11px 0;} /* Firefox 2 Fix */ +span.button, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */ +span.button button, +span.button input { height:23px; left:2px; *top:-1px; _top:0; padding:0 10px 0 8px; *padding:0 5px 0 3px; line-height:24px; background-position:right top; cursor:pointer;} +/* Large Size */ +span.button.large { background-position:left -30px; *top:-1px;} +span.button.large, x:-moz-any-link{ font:0/29px Sans-serif; padding:14px 0;} /* Firefox 2 Fix */ +span.button.large, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */ +span.button.large button, +span.button.large input { height:30px; *top:0; _top:-1px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:16px/30px Sans-serif; background-position:right -30px;} +/* xLarge Size */ +span.button.xLarge { background-position:left -65px;} +span.button.xLarge, x:-moz-any-link{ font:0/35px Sans-serif; padding:17px 0;} /* Firefox 2 Fix */ +span.button.xLarge, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */ +span.button.xLarge button, +span.button.xLarge input { height:35px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:20px/36px Sans-serif; background-position:right -65px;} +/* Large Size */ +span.button.small { background-position:left -107px;} +span.button.small, x:-moz-any-link{ font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */ +span.button.small, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */ +span.button.small button, +span.button.small input { height:18px; *top:0; _top:-1px; padding:0 6px 0 4px; *padding:0 3px 0 2px; font:11px/18px Sans-serif; background-position:right -107px;} +span.button.small button, x:-moz-any-link, +span.button.small input, x:-moz-any-link{ top:-1px;} /* Firefox 2 Fix */ +span.button.small button, x:-moz-any-link, x:default, +span.button.small input, x:-moz-any-link, x:default{ top:0;} /* Firefox 2 Fix */ + +/* Strong Button */ +a.button.strong *, +span.button.strong * { font-weight:bold !important;} + +/* Icon Add */ +a.button .icon { position:relative; border:0; vertical-align:middle;} +span.button .icon { position:relative; left:10px; margin-right:8px; vertical-align:middle;} + +/* Color Preset */ +a.button.green, +a.button.green span, +span.button.green, +span.button.green button, +span.button.green input { background-image:url(../images/buttonGreen.gif); color:#fff;} +a.button.black, +a.button.black span, +span.button.black, +span.button.black button, +span.button.black input { background-image:url(../images/buttonBlack.gif); color:#fff;} +a.button.red, +a.button.red span, +span.button.red, +span.button.red button, +span.button.red input { background-image:url(../images/buttonRed.gif); color:#fff;} +a.button.blue, +a.button.blue span, +span.button.blue, +span.button.blue button, +span.button.blue input { background-image:url(../images/buttonBlue.gif); color:#fff;} + +/* Offset Debug */ +a.button, +span.button{ margin-right:2px;} + +/* Planet Style */ +a.button.planetBlue, +a.button.planetGreen, +span.button.planetBlue, +span.button.planetGreen{ background-position:left top;} +a.button.planetBlue span, +a.button.planetGreen span, +span.button.planetBlue button, +span.button.planetGreen button{ background-position:right top;} +a.button.planetBlue, +a.button.planetBlue span, +span.button.planetBlue, +span.button.planetBlue button, +span.button.planetBlue input { background-image:url(../images/buttonPlanetBlue.gif); color:#fff;} +a.button.planetGreen, +a.button.planetGreen span, +span.button.planetGreen, +span.button.planetGreen button, +span.button.planetGreen input { background-image:url(../images/buttonPlanetGreen.gif); color:#fff;} + +/* Font Family */ +.button.large, +.button.large *, +.button.xLarge, +.button.xLarge * { font-family:AppleGothic, "돋움", Dotum, "굴림", Gulim, Sans-serif !important; letter-spacing:-1px;} + diff --git a/modules/planet/skins/xe_planet/css/cyan.css b/modules/planet/skins/xe_planet/css/cyan.css new file mode 100644 index 000000000..21092ad2d --- /dev/null +++ b/modules/planet/skins/xe_planet/css/cyan.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#9DB0B2;} +.authorFooter, +.commentList{ background:#f5f7f7;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteCyan.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#bac8c9;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#9DB0B2;} diff --git a/modules/planet/skins/xe_planet/css/default.css b/modules/planet/skins/xe_planet/css/default.css new file mode 100644 index 000000000..fa408aec0 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/default.css @@ -0,0 +1,617 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +/* xe layer */ +#waitingforserverresponse { border:2px solid #000000; font-weight:bold; color:#BBBBBB; padding: 7px 5px 5px 25px; background-color:#222222; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; } +#popup_menu_area { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; } +#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; } +#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; } +#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; letter-spacing:-1px; white-space:nowrap;} + +/* Reset */ +body{ margin:35px 30px; font-family:Sans-serif;} +img, fieldset, button{border:0;} +fieldset{ padding:0;} +hr, button img{display:none;} +a{text-decoration:none;} +a:hover, a:active, a:focus{text-decoration:underline;} +textarea{overflow:auto;} +html:first-child select{padding-right:6px; height:20px;} +option{ padding-right:6px;} +button, label{cursor:pointer; cursor:hand;} +button{background:none; background-repeat:no-repeat;} +button *{position:relative;} +button span{ position:absolute; width:0; height:0; font:0/0 Sans-serif; visibility:hidden;} +.inputText, textarea{*margin:-1px 0; border:1px solid;} +.inputCheck, .inputRadio{width:13px; height:13px;} +.blind, legend {position:absolute; top:0; left:0; width:0; height:0; overflow:hidden; visibility:hidden; font-size:0; line-height:0;} + +/* Layout */ +#container {} +#header{ position:relative; z-index:30; height:65px; float:left; clear:both;} +#header *{ margin:0; padding:0;} +#header li{ list-style:none;} +#body{ clear:both; z-index:20;} +.nTop #navigation{ top:-65px !important; z-index:100; } +.nTop #navigation .gnb ul{ margin:0;} +.nTop #navigation li{ list-style:none;} +.buttonArea{ text-align:center;} +.languageSelect { position:absolute; right:30px; top:10px; } + +/* Heading */ +h1 { position:relative; top:-10px;} +h1, x:-moz-any-link{ top:0;} +h1, x:-moz-any-link, x:default{ top:-10px;} +h1 a{ font:bold 30px "Malgun Gothic", AppleGothic, Dotum, Sans-serif; color:#000; letter-spacing:-3px; text-decoration:none !important;} + +/* Footer */ +#footer{margin:0; clear:both; text-align:center; padding:30px 0;} +#footer *{margin:0; padding:0; color:#444; list-style:none; font:9px Verdana; line-height:normal;} +#footer a{text-decoration:none; color:#444;} +#footer a:visited{text-decoration:none; color:#666;} +#footer a:hover{text-decoration:underline;} +#footer address a{font-weight:bold; font-family:Tahoma; color:#00535d;} + +/* ---------- Navigation ---------- */ +/* Search */ +.search{ position:relative; top:2px; float:right; margin:0; padding:0; white-space:nowrap; text-align:right; *zoom:1;} +.search .inputText{ padding:4px 5px 2px 5px; height:21px; width:160px; border:1px solid #e7e7e7; vertical-align:top; font:bold 14px AppleGothic, Dotum, Gulim, Sans-serif;} +.search .inputText.focus{ border:3px solid #4ba300; height:17px; width:156px;} +.search .button{ top:0;} +.search .suggestion{ position:absolute; top:3px; left:174px; /* border:1px solid; */} +.search .suggestion .autoComplete{ position:absolute; top:0; left:0; width:23px; height:23px; background:#fff url(../images/buttonAutoComplete.gif) no-repeat center -10px;} +.search .suggestion ul.recommendation{ display:none; position:absolute; top:26px; left:-174px; width:198px; border:1px solid #e7e7e7; border-top:none; background:#fff;} +.search .suggestion li button{ width:100%; text-align:left; padding:5px 4px 2px 4px; font:.75em AppleGothic, Gulim, Dotum, Sans-serif} +.search .suggestion li button:hover, +.search .suggestion li button:active, +.search .suggestion li button:focus{ background:#eee;} +.search .suggestion.open .autoComplete{ background-position:center 10px;} +.search .suggestion.open ul.recommendation{ display:block;} + +/* GNB */ +.gnb{ position:relative; float:right; margin-left:20px; } +.gnb ul{ margin:0; padding:0; position:relative; float:left; overflow:hidden;} +.gnb ul li{ position:relative; float:left;} +.gnb ul li a{ position:relative; display:block; float:left; background:url(../images/buttonGnb.gif) no-repeat center top; padding:11px 25px 11px 25px; font:11px AppleGothic, Dotum, Gulim, Sans-serif; color:#fff !important; text-decoration:none !important; letter-spacing:-1px; white-space:nowrap;} +.gnb ul li.active a{ opacity:0.7; filter:alpha(opacity=70);} +.gnb ul li a:hover, +.gnb ul li a:active, +.gnb ul li a:focus{ opacity:0.9; filter:alpha(opacity=90);} +.gnb ul li.first a{ background-position:left top;} +.gnb ul li.last a{ background-position:right top;} + +/* Tag */ +.tagRank{ position:relative; top:2px; float:right; margin-left:15px; } +.tagRank *{ margin:0; padding:0;} +.tagRank .buttonTag{ display:inline-block; position:relative; background:url(../images/buttonTagNavigation.gif) no-repeat left top;} +.tagRank .buttonTag, x:-moz-any-link{ padding:3px 0 7px 0;} /* Firefox 2 Fix */ +.tagRank .buttonTag, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */ +.tagRank .buttonTag button{ position:relative; left:3px; width:197px; padding:6px 10px 9px 10px; background:url(../images/buttonTagNavigation.gif) no-repeat right top; text-align:left;} +.tagRank .buttonTag button span{ display:block; width:177px; height:auto; visibility:visible; position:relative; font:bold 12px NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; background:url(../images/arrowTagNavigation.gif) no-repeat right -14px;} +.tagRank .layer{ display:none; position:absolute; width:200px; top:27px; left:0; background:#50606b; background:url(../images/boxTagNavigation.gif) no-repeat left bottom;} +.tagRank .layer a{ font:11px Dotum, Sans-serif; white-space:nowrap; text-decoration:none; line-height:normal;} +.tagRank .layer ul{ padding:1px 13px 30px 13px; text-align:justify;} +.tagRank .layer ul *{ line-height:16px;} +.tagRank .layer ul li{ display:inline; margin-bottom:4px;} +.tagRank .layer ul li a{ color:#cbd0d3; zoom:1;} +.tagRank .layer .more{ display:block; padding:5px 13px 7px 10px; _margin:-1px 0; position:absolute; bottom:0; right:0; font-weight:bold; color:#fff;} +.tagRank.open .buttonTag button span{ background-position:right 6px;} +.tagRank.open .layer{ display:block;} + +/* ---------- Content ---------- */ + +/* Tab */ +.generalTab{ margin:0 0 0 10px; padding:0; position:relative; clear:both; *zoom:1;} +.generalTab *{ margin:0; padding:0; list-style:none;} +.generalTab li{ position:relative; top:4px; float:left; margin-right:6px; text-align:center; background:#848f97 url(../images/cr3pxLeft.gif) no-repeat left top;} +.generalTab li a{ position:relative; left:3px; display:block; padding:3px 23px 3px 20px; font:bold 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-decoration:none !important; background:#848f97 url(../images/cr3pxRight.gif) no-repeat right top;} +.generalTab li a sup{ font:11px Tahoma, Sans-serif;} +.generalTab li.active{ top:0; background-color:#50606B;} +.generalTab li.active a{ padding:5px 23px 5px 20px; background-color:#50606B;} + +.tab{ *zoom:1;} +.tab:after{ content:""; display:block; clear:both;} + +.myTab{ float:left; margin:0 0 0 10px; padding:0; position:relative; *zoom:1;} +.myTab:after{ content:""; display:block; clear:both;} +.myTab *{ margin:0; padding:0; list-style:none;} +.myTab li{ position:relative; top:4px; float:left; margin-right:6px; text-align:center; background:url(../images/cr3pxLeft.gif) no-repeat left top;} +.myTab li a{ position:relative; left:3px; display:block; padding:3px 23px 3px 20px; font:bold 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-decoration:none !important; background:url(../images/cr3pxRight.gif) no-repeat right top;} +.myTab li a sup{ font:11px Tahoma, Sans-serif;} +.myTab li.active{ top:0;} +.myTab li.active a{ padding:5px 23px 5px 20px;} + +.exTab{ float:right; margin:0; padding:0; position:relative; right:7px; *zoom:1;} +.exTab:after{ content:""; display:block; clear:both;} +.exTab *{ margin:0; padding:0; list-style:none;} +.exTab li{ position:relative; top:4px; float:left; margin-right:6px; text-align:center; background:url(../images/cr3pxLeft.gif) no-repeat left top;} +.exTab li a{ position:relative; left:3px; display:block; padding:3px 23px 3px 20px; font:bold 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-decoration:none !important; background:url(../images/cr3pxRight.gif) no-repeat right top;} +.exTab li a sup{ font:11px Tahoma, Sans-serif;} +.exTab li.active{ top:0;} +.exTab li.active a{ padding:5px 23px 5px 20px;} + +/* Try Planet */ +.tryPlanet{ position:relative; height:90px; background:url(../images/boxTryPlanet.gif) repeat-x 0 0; margin-bottom:15px;} +.tryPlanet *{ margin:0; padding:0;} +.tryPlanet p{ position:relative; top:20px; margin-left:80px; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#50606b;} +.tryPlanet .leftCap, +.tryPlanet .rightCap{ position:absolute; display:block; top:0; width:5px; height:90px; overflow:hidden; background:url(../images/boxTryPlanet.gif) no-repeat; white-space:nowrap;} +.tryPlanet .leftCap{ left:0; background-position:left bottom;} +.tryPlanet .rightCap{ right:0; _left:100%; _margin-left:-4px; background-position:right bottom;} +.tryPlanet .button{ position:absolute; top:30px; right:80px;} + +/* Personal Header */ +.personalHeader{ position:relative; height:90px; background:url(../images/boxTryPlanet.gif) repeat-x 0 0; margin-bottom:15px;} +.personalHeader *{ margin:0; padding:0; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.personalHeader h2{ position:absolute; top:15px; left:30px; padding-top:15px; font-size:2em; _zoom:1; padding-left:30px; background:url(../images/bgPerson.png) no-repeat; _behavior:url(./common/js/iePngFix.htc); } +.personalHeader p{ position:absolute; top:46px; left:220px;} +.personalHeader .leftCap, +.personalHeader .rightCap{ position:absolute; display:block; top:0; width:5px; height:90px; overflow:hidden; background:url(../images/boxTryPlanet.gif) no-repeat; white-space:nowrap;} +.personalHeader .leftCap{ left:0; background-position:left bottom;} +.personalHeader .rightCap{ right:0; _left:100%; _margin-left:-4px; background-position:right bottom;} +.personalHeader .button{ position:absolute; top:30px; right:80px;} + +.searchHeader{ position:relative; height:90px; background:url(../images/boxTryPlanet.gif) repeat-x 0 0; margin-bottom:30px;} +.searchHeader *{ margin:0; padding:0;} +.searchHeader p{ position:absolute; top:27px; margin-left:80px; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#50606b;} +.searchHeader p strong{ font:bold 1.5em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.searchHeader .leftCap, +.searchHeader .rightCap{ position:absolute; display:block; top:0; width:5px; height:90px; overflow:hidden; background:url(../images/boxTryPlanet.gif) no-repeat; white-space:nowrap;} +.searchHeader .leftCap{ left:0; background-position:left bottom;} +.searchHeader .rightCap{ right:0; _left:100%; _margin-left:-4px; background-position:right bottom;} + +/* My Info */ +.myInfo{ padding:20px 30px 20px 30px; margin-bottom:15px; position:relative; border:1px solid #e9e9e9; *zoom:1;} +.myInfo *{ margin:0; padding:0; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.myInfo dl.login{ position:relative; width:500px; margin:0 auto; padding:70px 0;} +.myInfo dt{ float:left; width:100px; font-weight:bold;} +.myInfo dd{ margin-bottom:10px;} +.myInfo .inputText{ border:1px solid #ccc; padding:3px 4px; width:190px;} +.myInfo em{ color:#f00; font-style:normal; } +.myInfo .thumb{ display:block; position:relative; left:110px; margin-top:5px; vertical-align:top; border:2px solid #eee;} +.myInfo .tl, +.myInfo .tr, +.myInfo .bl, +.myInfo .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxTagCloud.gif) no-repeat;} +.myInfo .tl{ top:-1px; left:-1px; background-position:0 0;} +.myInfo .tr{ top:-1px; right:-1px; background-position:-4px 0;} +.myInfo .bl{ bottom:-1px; left:-1px; background-position:0 -4px;} +.myInfo .br{ bottom:-1px; right:-1px; background-position:-4px -4px;} +.myInfo button{ width:90px; height:60px; position:absolute; top:90px; left:50%; margin-left:80px; background:url(../images/buttonLogin.gif) no-repeat;} +.myInfo button span{ position:relative; display:block; *padding-top:15px; visibility:visible; width:auto; height:auto; text-align:center; font:bold 1.2em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff;} + +/* Tag Cloud */ +.tagCloud{ display:none; padding:20px 20px 30px 20px; margin-bottom:15px; position:relative; border:1px solid #e9e9e9; *zoom:1;} +.tagCloud *{ margin:0; padding:0;} +.tagCloud.open{ display:block;} +.tagCloud h2{ display:inline; margin-right:15px; font-size:18px; color:#50606b; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-2px;} +.tagCloud p{ display:inline; color:#a7afb5; font:11px AppleGothic, Dotum, Gulim, Sans-serif;} +.tagCloud ul{ position:relative; overflow:hidden; text-align:justify; line-height:24px; *zoom:1; margin-top:10px;} +.tagCloud li{ position:relative; left:-5px; display:inline-block; *display:inline !important; background:url(../images/lineVccc.gif) no-repeat 0 center; padding:0 0 0 7px; *padding:0 5px 0 6px; *zoom:1;} +.tagCloud li, x:-moz-any-link{ display:inline;} /* Firefox 2 Fix */ +.tagCloud li, x:-moz-any-link, x:default{ display:inline-block;} /* Firefox 2 Fix */ +.tagCloud a{ position:relative; color:#999; font-size:12px; font-family:AppleGothic, Dotum, Gulim, Sans-serif; white-space:nowrap; text-decoration:none !important;} +.tagCloud a:hover, +.tagCloud a:active, +.tagCloud a:focus{ background:#000 !important; color:#ff0 !important;} +.tagCloud a.closeButton { position:absolute; right:5px; bottom:5px; } + +.tagCloud li.rank1 a{ font-weight:bold; font-size:20px; background:#12d763; color:#fff;} +.tagCloud li.rank2 a{ font-weight:bold; font-size:18px; color:#666;} +.tagCloud li.rank3 a{ font-weight:bold; font-size:16px; color:#00b4b5;} +.tagCloud li.rank4 a{ font-size:14px; color:#666;} + +.tagCloud .tl, +.tagCloud .tr, +.tagCloud .bl, +.tagCloud .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxTagCloud.gif) no-repeat;} +.tagCloud .tl{ top:-1px; left:-1px; background-position:0 0;} +.tagCloud .tr{ top:-1px; right:-1px; background-position:-4px 0;} +.tagCloud .bl{ bottom:-1px; left:-1px; background-position:0 -4px;} +.tagCloud .br{ bottom:-1px; right:-1px; background-position:-4px -4px;} + +/* Comment List */ +.commentList{ position:relative; padding:15px; border:1px solid #dedede; *zoom:1; z-index:10; clear:both; background:#eee;} +.commentList .commentHeader{ width:240px;position:relative; clear:both; margin-bottom:10px; z-index:10;} +.commentList .commentHeader *{ margin:0;} +.commentList h3{ position:relative; display:inline-block; *display:inline; margin-right:20px; background:url(../images/boxH2Comment.gif) no-repeat 0 0; vertical-align:middle; *zoom:1; line-height:18px;} +.commentList h3, x:-moz-any-link { display:inline; padding-top:3px;} +.commentList h3, x:-moz-any-link, x:default { display:inline-block; *display:inline; padding-top:0;} +.commentList h3 span{ position:relative; left:3px; _top:-1px; display:inline-block; padding:4px 20px 0 17px; height:25px; _height /**/:29px; vertical-align:top; color:#fff; background:url(../images/boxH2Comment.gif) no-repeat right 0; font:bold 14px/18px NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; vertical-align:middle; *zoom:1;} +.commentList h3 span strong{ color:#ff0; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; font-size:1em;} +.commentList h3 span, x:-moz-any-link{ padding:8px 20px 5px 17px; } +.commentList h3 span, x:-moz-any-link, x:default{ padding:5px 20px 0 17px} + +.commentList .timeNav{ left:20px; top:3px; padding:0 30px; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-1px; *zoom:1; text-align:center;} +.commentList .timeNav strong{ font:bold 18px/18px NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.commentList .timeNav .prev, +.commentList .timeNav .next{ position:absolute; top:2px; width:20px; height:20px; } +.commentList .timeNav .prev{ left:0; } +.commentList .timeNav .next{ right:0; } +.commentList .timeNav a:hover, +.commentList .timeNav a:activfe, +.commentList .timeNav a:focus{ border:1px solid #fff !important; width:18px; height:18px;} +.commentList .timeNav a img{ position:relative; top:3px;} + +.commentList h3.timeNav{ position:relative; float:left; vertical-align:top; clear:both; left:0; top:0; background:none; font-size:1em; *zoom:1; *line-height:24px; margin-bottom:10px; *margin-bottom:0;} +.commentList h3.timeNav .prev, +.commentList h3.timeNav .next{ *top:5px;} + +.commentList .commentHeader .button *{ font-size:12px;} +.commentList .planetBlue{ top:-3px;} +.commentList span.planetBlue{ margin-right:10px;} +.commentList a.planetBlue{ *top:1px;} +.commentList .planetGreen{ position:absolute; top:0; right:3px; _right:18px;} + +.commentList .tagChoiceAfter{ display:none; position:absolute; top:45px; left:50%; width:289px; height:121px; text-align:center; margin-left:-145px;} +.commentList .tagChoiceAfter.alert{ display:block;} +.commentList .tagChoiceAfter p{ position:absolute; top:0; left:0; width:289px; height:94px; _height /**/:121px; font-size:.75em; color:#fff; padding:37px 0 0 0; background:url(../images/boxTagChoice.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} +.commentList .tagChoiceAfter button, +.commentList .tagChoiceAfter a{ position:relative; display:inline-block; top:60px; font-size:12px; color:#fff; text-decoration:none; vertical-align:top; cursor:pointer; _cursor /**/:hand;} +.commentList .tagChoiceAfter button{ width:45px; height:23px; text-align:center; background:url(../images/buttonFixedBlack45.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} +.commentList .tagChoiceAfter a{ width:94px; height:18px; _height /**/:23px; padding-top:5px; text-align:center; background:url(../images/buttonFixedBlack94.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} + +.commentBody.myPlanet .comment .tongue{ margin:0;} +.commentBody.myPlanet .comment .tongue .post, +.commentBody.myPlanet .comment .tongue .postScript, +.commentBody.myPlanet .comment .tongue .postExtra{ *zoom:1;} + +/* Comment Body */ +.commentBody{ position:relative; margin-top:10px; border:1px solid #d7dfe2; background:#fff; *zoom:1; clear:both;} +.commentBody .comment{ position:relative; margin:0 15px; padding:15px 0 15px 0; clear:both; *zoom:1;} +.commentBody .comment:after { content:""; display:block; width:0; height:0; font:0/0 Sans-serif; overflow:hidden; visibility:hidden; clear:both; float:none;} +.commentBody .comment .identity{ position:relative; width:98px; float:left; margin:0 -98px 0 0; font-size:1em; background:none; *zoom:1;} +.commentBody .comment .identity a{ position:relative; display:block; text-align:center; font-size:.75em; color:#fff !important; font-weight:bold;} +.commentBody .comment .identity a img{ display:block; border:1px solid #ddd;} +.commentBody .comment .identity a em{ position:absolute; width:96px; text-align:center; left:1px; bottom:1px; display:block; padding:5px 0; font-style:normal; background:#000; opacity:.6; filter:alpha(opacity=60); line-height:normal;} +.commentBody .comment .tongue{ position:relative; margin-left:113px; *zoom:1;} +.commentBody .comment .tongue .post{ margin:0 0 7px 0; font:1.2em/1.4em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.commentBody .comment .tongue .post a { font:1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#06C;} +.commentBody .comment .tongue .post strong{ background:#f7b100; font:normal 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff;} +.commentBody .comment .tongue .postScript{ margin:0 0 10px 0; font-size:.75em; color:#999;} +.commentBody .comment .tongue .postScript strong{ font-family:Arial; letter-spacing:-1px; margin-right:5px;} +.commentBody .comment .tongue .postExtra{ overflow:hidden; padding-top:10px; border-top:1px dotted #ccc; *zoom:1;} +.commentBody .comment .tongue .postExtra *{ margin:0; padding:0;} +.commentBody .comment .tongue .postExtra .tag { float:left;} +.commentBody .comment .tongue .postExtra .tag .time{ display:inline; margin-right:5px; color:#999; font:.7em AppleGothic, Dotum, Gulim, Sans-serif;} +.commentBody .comment .tongue .postExtra .tag dl{ display:inline;} +.commentBody .comment .tongue .postExtra .tag dt{ text-align:center; padding:0 7px; margin-right:5px; display:inline; background:url(../images/bgTag.gif) no-repeat center; font:bold .7em Tahoma; color:#fff;} +.commentBody .comment .tongue .postExtra .tag dd{ display:inline; position:relative;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead a{ position:relative; margin-right:2px; font:.7em AppleGothic, Dotum, Gulim, Sans-serif; color:#999;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead a strong{ font:normal 1em AppleGothic, Dotum, Gulim, Sans-serif; background:#f7b100; color:#fff;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead .delete{ position:relative; top:-7px; left:-8px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead .delete.hover{ display:inline-block;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead .modify{ position:relative; width:13px; height:13px; background:url(../images/buttonModify.gif) no-repeat center; vertical-align:middle; *vertical-align:baseline; *top:-1px; *left:5px;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify{ display:none; top:2px;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify form{ display:inline;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify .inputText{ border:1px solid #ccc; padding:2px 4px; height:13px; width:290px; font-size:.75em;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify button{ height:19px; font-size:.7em; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} +.commentBody .comment .tongue .postExtra .tag.edit dd{ display:none;} +.commentBody .comment .tongue .postExtra .tag.edit dd.tagModify{ display:inline;} +.commentBody .comment .tongue .postExtra .sympathy{ float:right; position:relative; top:-2px;} +.commentBody .comment .tongue .postExtra .sympathy button{ width:60px; height:20px; font:bold .7em AppleGothic, Dotum, Gulim, Sans-serif; background:url(../images/buttonSympathy.gif) no-repeat center; text-align:center; padding-top:3px; color:#999;} +.commentBody .comment .tongue .postExtra .sympathy .num{ position:relative; display:inline-block; width:22px; height:22px; padding-top:6px; *margin-bottom:-10px; letter-spacing:-1px; color:#fff; text-align:center; font:bold .7em AppleGothic, Dotum, Gulim, Sans-serif; background:url(../images/bgSympathy.gif) no-repeat center top;} +.commentBody .comment .tongue .postExtra .sympathy .num, x:-moz-any-link { padding-left:11px; padding-right:11px;} +.commentBody .comment .tongue .postExtra .sympathy .num, x:-moz-any-link, x:default { padding-left:0; padding-right:0;} +.commentBody .comment .tongue .postExtra .sympathy a{ position:relative; *top:-2px; margin-right:1px; color:#999; padding-left:8px; font:.7em AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-1px; background:url(../images/arrowReplyOpen.gif) no-repeat left 3px;} + +/* Todo Manager */ +.commentList .commentHeader h3.exTitle{ font-family:"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; line-height:normal; background:none;} +.commentList .commentHeader .todoWrite{ position:absolute; top:0; right:3px;} +.todoManager ul{ position:relative; margin:0 0 0 40px; padding:20px 0;} +.todoManager li{ position:relative; font-family:"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.todoManager li .button{ margin-left:5px;} +.todoManager .time{ position:absolute; top:0; right:20px;} +.todoManager .tag{ position:absolute; top:0; right:20px;} +.todoManager .tag img { margin-right:5px; vertical-align:middle; } + +/* Comment Reply */ +.commentBody .reply{ display:none; clear:both; padding:15px; background:#f3f3f3; *zoom:1;} +.commentBody .reply.open{ display:block;} +.commentBody .reply dl{ position:relative; clear:both; overflow:hidden; *zoom:1; margin:0 0 5px 0;} +.commentBody .reply dt{ float:left; width:83px; padding-left:15px; margin-right:-98px; font-size:.75em; font-weight:bold; color:#666;} +.commentBody .reply dt a{ color:#a5b2c2; } +.commentBody .reply dd{ margin:0 80px 0 113px; font-size:.75em; color:#666; line-height:1.4em;} +.commentBody .reply dd a{ text-decoration:underline; color:#333;} +.commentBody .reply dd .time{ position:absolute; top:0; right:0;} +.commentBody .reply dd input{ position:relative; border:1px solid #ccc; padding:4px 5px; width:96%; height:14px; vertical-align:top; font-size:1em; *zoom:1;} +.commentBody .reply dd .button{ position:absolute; top:0; right:3px;} + +.commentList .tl, +.commentList .tr, +.commentList .bl, +.commentList .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxCommentOut.gif) no-repeat;} +.commentList .commentBody .tl, +.commentList .commentBody .tr, +.commentList .commentBody .bl, +.commentList .commentBody .br{ background-image:url(../images/boxCommentIn.gif); background-repeat:no-repeat;} +.commentList .tl{ top:-1px; left:-1px; background-position:0 0;} +.commentList .tr{ top:-1px; right:-1px; background-position:-4px 0;} +.commentList .bl{ bottom:-1px; left:-1px; background-position:0 -4px;} +.commentList .br{ bottom:-1px; right:-1px; background-position:-4px -4px;} + +/* Author Header */ +.authorHeader{ position:relative; padding:20px; *zoom:1; z-index:30;} +.authorHeader *{ margin:0; padding:0; list-style:none;} +.authorHeader fieldset{ position:relative;} +.authorHeader .thumb{ position:relative; float:left; margin-right:-100px; z-index:10;} +.authorHeader .thumb a{ position:relative; display:block; width:100px; height:100px; text-decoration:none;} +.authorHeader .thumb a img{ position:relative; border:2px solid #fff;} +.authorHeader .thumb a span{ position:absolute; display:none; top:2px; left:2px; padding-top:44px; width:96px; height:52px; _height /**/:96px; font-size:12px; color:#fff; font-weight:bold; text-align:center; cursor:pointer; _cursor /**/:hand; background:#000; opacity:.6; filter:alpha(opacity=60);} +.authorHeader .thumb a:hover span, +.authorHeader .thumb a:active span, +.authorHeader .thumb a:focus span{ display:block;} +.authorHeader .thumb .file{ display:none; position:absolute; top:0; left:115px; background:#fff; border:2px solid #eee; padding:15px; height:66px; _height /**/:100px; width:446px; font-size:.75em;} +.authorHeader .thumb .file p{ margin-bottom:5px;} +.authorHeader .thumb .file input{ padding:2px 4px; width:400px;} +.authorHeader .thumb .file .buttonArea{ padding-top:10px;} +.authorHeader .thumb .file .buttonArea button{ height:19px; font-size:11px; background:#eee; border:1px solid #ccc; margin-right:4px;} +.authorHeader .thumb.edit .file{ position:absolute; display:block; z-index:100;} + +.authorHeader .title{ position:relative; margin-left:120px; height:60px; margin-bottom:10px; _margin-bottom:0; } +.authorHeader .title h2{ position:relative; margin-bottom:10px; } +.authorHeader .title h2 a{ font-size:1em; color:#fff; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; text-decoration:none;} +.authorHeader .title h2 a:hover, +.authorHeader .title .authorPersonality a:hover, +.authorHeader .title h2 a:active, +.authorHeader .title .authorPersonality a:active, +.authorHeader .title h2 a:focus, +.authorHeader .title .authorPersonality a:focus{ padding-right:15px; background:url(../images/buttonModify.gif) no-repeat right center;} + +.authorHeader .title h2.disable a { background:none !important; } +.authorHeader .title p.disable a { background:none !important; } + +.authorHeader .title h2 .inputText, +.authorHeader .title .authorPersonality .inputText{ display:none; border:1px solid #ccc; padding:2px 4px; height:13px; width:290px;} +.authorHeader .title h2 .inputText{ height:30px; *margin-right:5px; font:bold 1em/1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.authorHeader .title h2 button, +.authorHeader .title .authorPersonality button{ display:none; height:19px; font-size:11px; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} +.authorHeader .title h2 button{ height:36px;} +.authorHeader .title h2.edit a, +.authorHeader .title .authorPersonality.edit a{ display:none;} +.authorHeader .title *.edit .inputText, +.authorHeader .title *.edit button{ display:inline; vertical-align:top;} +.authorHeader .title .authorPersonality{ float:left;} +.authorHeader .title .authorPersonality a{ position:relative; float:left; color:#fff; font-size:.75em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-decoration:none;} +.authorHeader .title .addFavorite{ position:relative; top:-3px; float:right; clear:right; background:url(../images/iconAddFavorite.gif) no-repeat left center;} +.authorHeader .title .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} + +.authorHeader .authorTag{ position:relative; border-top:1px solid #ddd; margin-left:120px; padding-top:10px; *zoom:1;} +.authorHeader .authorTag dl{ position:relative; display:block; float:left;} +.authorHeader .authorTag dt{ text-align:center; padding:0 7px; margin-right:5px; display:inline; background:url(../images/bgTag.png) no-repeat center; _behavior:url(./common/js/iePngFix.htc); font:bold .7em Tahoma; color:#fff; *zoom:1;} +.authorHeader .authorTag dd{ display:inline;} +.authorHeader .authorTag.edit dd{ display:none;} +.authorHeader .authorTag dd a{ font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; margin-right:2px;} +.authorHeader .authorTag dd .delete{ position:relative; top:-7px; left:-8px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} +.authorHeader .authorTag dd .delete span{ display:inline-block; width:0; height:0; font:0/0 Sans-serif; visibility:hidden;} +.authorHeader .authorTag dd .delete.hover{ display:inline-block;} +.authorHeader .authorTag dd .modify{ position:relative; width:13px; height:13px; background:url(../images/buttonModify.gif) no-repeat center; vertical-align:middle; *vertical-align:baseline; *top:-1px; *left:5px;} +.authorHeader .authorTag dd.tagModify{ display:none;} +.authorHeader .authorTag.edit dd.tagModify{ display:inline;} +.authorHeader .authorTag dd.tagModify .inputText{ border:1px solid #ccc; padding:2px 4px; height:13px; width:290px;} +.authorHeader .authorTag dd.tagModify button{ height:19px; font-size:.7em; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} +.authorHeader .authorTag .planetUri{ position:relative; right:20px; float:right; color:#fff; font-size:.7em; font-family:Tahoma Sans-serif;} +.authorHeader .authorTag .rssFeed{ position:absolute; top:10px; right:0; width:12px; height:12px; cursor:pointer; background:url(../images/rssFeed.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} +.authorHeader .authorTag .rssFeed span{ position:absolute; width:0; height:0; overflow:hidden;} +.authorHeader .tl, +.authorHeader .tr{position:absolute; top:0; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxAuthorHeader.png) no-repeat; _background:url(../images/boxAuthorHeader.gif) no-repeat;} +.authorHeader .tl{ left:0; background-position:left top;} +.authorHeader .tr{ right:0; background-position:right top;} + +.authorHeader .rss{ position:absolute; display:block; top:0; right:58px; width:15px; height:15px; background-repeat:no-repeat; background-position:center; cursor:pointer;} +.authorHeader .rss.off{ background-image:url(../images/rssOff.png); _behavior:url(./common/js/iePngFix.htc);} +.authorHeader .rss.on{ background-image:url(../images/rssOn.png); _behavior:url(./common/js/iePngFix.htc);} +.authorHeader .rss span{ display:block; width:0; height:0; overflow:hidden;} + +.authorHeader .color{ position:absolute; display:block; top:0; right:18px; border:1px solid #ccc; width:16px; height:16px;} +.authorHeader .colorPreset{ position:absolute; display:none; top:25px; right:0;} +.authorHeader .colorPreset.open{ display:block;} +.authorHeader .colorPreset.close{ display:none;} +.authorHeader .colorPreset li{ float:left; border:1px solid #ccc; margin-left:5px;} +.authorHeader .colorPreset li.gray{ background:#999;} +.authorHeader .colorPreset li.green{ background:#75B570;} +.authorHeader .colorPreset li.blue{ background:#8BBED8;} +.authorHeader .colorPreset li.cyan{ background:#9DB0B2;} +.authorHeader .colorPreset li.red{ background:#D18675;} +.authorHeader .colorPreset li.orange{ background:#E8A15E;} +.authorHeader .colorPreset li a{ display:block; width:14px; height:14px;} +.authorHeader .colorPreset li a span{ display:block; width:0; height:0; overflow:hidden; visibility:hidden;} + +.authorHeader .apiMe2day{ position:absolute; top:20px; right:58px;} +.authorHeader .apiMe2day *{ font-size:12px;} +.authorHeader .apiMe2day .setupButton{ position:absolute; top:0; right:0; width:16px; height:16px; background:url(../images/iconMe2day.png) no-repeat center; _behavior:url(./common/js/iePngFix.htc);} +.authorHeader .apiMe2day .apiProtocol{ position:relative; width:240px; border:2px solid #eee; background:#fff; padding:10px 15px 10px 20px; position:absolute; top:25px; right:0;} +.authorHeader .apiMe2day .apiProtocol.open{ display:block;} +.authorHeader .apiMe2day .apiProtocol.close{ display:none;} +.authorHeader .apiMe2day .apiProtocol .summary{ font-weight:bold; margin-bottom:10px;} +.authorHeader .apiMe2day .apiProtocol dl{ font-size:.75em; overflow:hidden;} +.authorHeader .apiMe2day .apiProtocol dt{ float:left; clear:left; margin:0 4px 0 0; padding-top:3px;} +.authorHeader .apiMe2day .apiProtocol dd{ clear:right; margin-bottom:2px;} +.authorHeader .apiMe2day .apiProtocol dd input{ width:120px; border:1px solid #ccc; padding:2px 4px; *margin:-1px 0;} +.authorHeader .apiMe2day .apiProtocol .autoPush{ padding:5px 0;} +.authorHeader .apiMe2day .apiProtocol .autoPush input{ width:13px; height:13px; vertical-align:top; margin-right:4px;} +.authorHeader .apiMe2day .apiProtocol .autoPush label{} +.authorHeader .apiMe2day .apiProtocol .buttonArea button{ border:1px solid #ccc; background:#eee; font-size:11px; *margin-right:4px;} + +.authorHeader .mobile{ position:absolute; top:20px; right:20px;} +.authorHeader .mobile .setupButton{ position:absolute; top:-3px; right:0; width:12px; height:19px; background:url(../images/iconMobile.gif) no-repeat;} +.authorHeader .mobile .address{ display:none; position:absolute; border:2px solid #eee; background:#fff; padding:10px 15px 10px 20px; position:absolute; top:25px; right:0; white-space:nowrap;} +.authorHeader .mobile .address.open{ display:block;} +.authorHeader .mobile .address *{ font-size:12px;} +.authorHeader .mobile .address dt{ font-weight:bold; display:inline;} +.authorHeader .mobile .address dd{ display:inline;} +.authorHeader .mobile .address dd input { width:30px; border:1px solid #ccc; padding:2px 4px; *margin:-1px 0;} +.authorHeader .mobile .address dd.buttonArea{ display:block; text-align:center; padding-top:10px;} +.authorHeader .mobile .address dd.buttonArea button{ border:1px solid #ccc; background:#eee; font-size:11px; vertical-align:top; margin-right:4px;} + +/* Author Footer */ +.authorFooter{ position:relative; clear:both; padding:12px 18px 0 17px; height:45px; _height /**/:57px; margin-bottom:10px; z-index:20; border:1px solid #dedede; border-top-color:#fff;} +.authorFooter *{ margin:0; padding:0;} +.authorFooter .memo{ position:absolute; left:17px; top:12px; width:500px; background:url(../images/boxMemo.gif) no-repeat;} +.authorFooter .memo p{ display:block; height:20px; padding-top:9px; margin:0; font-size:12px;white-space:nowrap;} +.authorFooter .memo p .toggle, +.authorFooter .memo li.first .toggle{ position:absolute; top:2px; right:2px; width:25px; height:25px; background:url(../images/arrowTagNavigation.gif) no-repeat center -9px;} +.authorFooter .memo p .delete{ display:none;} +.authorFooter .memo ul{ clear:both; display:none; position:relative; width:100%; padding:5px 0 10px 0; overflow:hidden; background:url(../images/boxMemo.gif) no-repeat left bottom;} +.authorFooter .memo li{ clear:both; position:relative; font-size:12px; padding:7px 0 3px 0; overflow:hidden; *float:left; *zoom:1; width:100%; background:#333;} +.authorFooter .memo li.first{ background:#333 url(../images/boxMemo.gif) no-repeat left top;} +.authorFooter .memo p em, +.authorFooter .memo li em{ display:block; padding-left:15px; width:370px; float:left; font-style:normal; color:#fff; overflow:hidden;} +.authorFooter .memo p em a, +.authorFooter .memo li em a{ color:#fff;} +.authorFooter .memo p span, +.authorFooter .memo li span{ position:relative; right:40px; float:right; color:#fff; font:11px AppleGothic, Dotum, Gulim, Sans-serif;} +.authorFooter .memo p span .delete, +.authorFooter .memo li span .delete{ position:relative; left:5px; vertical-align:top; width:12px; height:11px; background:url(../images/buttonX.gif) no-repeat center;} +.authorFooter .memo .pagination{ position:relative; top:-10px; display:none; padding:0 0 10px 0; clear:both; background:url(../images/boxMemo.gif) no-repeat left bottom;} +.authorFooter .memo .pagination a, +.authorFooter .memo .pagination strong{ background:#333; color:#ccc; border-color:#666;} +.authorFooter .memo .bottomCap{ clear:both; position:relative; top:2px; height:2px; overflow:hidden; background:url(../images/boxMemo.gif) no-repeat left -27px;} +.authorFooter .memo.open p{ display:none;} +.authorFooter .memo.open p .delete{ display:inline-block;} +.authorFooter .memo.open p .toggle, +.authorFooter .memo.open li.first .toggle{ display:block; background-position: center 10px;} +.authorFooter .memo.open ul, +.authorFooter .memo.open .pagination{ display:block; padding-top:2px; } +.authorFooter .memoWrite{ position:relative; float:left; width:600px;} +.authorFooter .memoWrite.close{ display:none;} +.authorFooter .memoWrite .form.close{ display:none; } +.authorFooter .memoWrite .inputText{ border:1px solid #ccc; width:480px; _width /**/:500px; padding:6px 9px 0 9px; height:21px; _height /**/:29px;} +.authorFooter .memoWrite .button{ position:absolute; top:0; left:505px;} +.authorFooter .memoWrite .button, x:-moz-any-link{ padding:0;} +.authorFooter .memoWrite .button, x:-moz-any-link, x:default{ padding:0;} +.authorFooter .button *{ font-size:12px !important;} +.authorFooter .nav{ float:right; } +.authorFooter .nav .button{ vertical-align:top;} +.authorFooter .nav .button, x:-moz-any-link { vertical-align:middle;} +.authorFooter .nav .button, x:-moz-any-link, x:default { vertical-align:top; } +.authorFooter .nav a.button, x:-moz-any-link{ padding:4px 0 6px 0;} +.authorFooter .nav a.button, x:-moz-any-link, x:default { padding:0;} +.authorFooter .tl, +.authorFooter .tr{position:absolute; bottom:-1px; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxCommentOut.gif) no-repeat;} +.authorFooter .tl{ left:-1px; background-position:left bottom;} +.authorFooter .tr{ right:-1px; background-position:right bottom;} + +/* Author List */ +.authorList{ position:relative; padding:15px; background:#e7e7e7; border:1px solid #dedede; *zoom:1; z-index:10; clear:both;} +.authorList *{ margin:0; padding:0;} +.authorList .authorBody{ position:relative; margin-top:10px; padding:15px; border:1px solid #d7dfe2; background:#fff; *zoom:1; clear:both; overflow:hidden;} +.authorList .authorBody .thumb{ float:left; border:1px solid #ccc; margin-right:-98px;} +.authorList .authorBody .thumb img{ display:block;} +.authorList .authorBody .title{ position:relative; margin-left:120px; margin-bottom:10px; *zoom:1;} +.authorList .authorBody .title h2{ margin-bottom:5px;} +.authorList .authorBody .title h2 a{ font:bold 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#465f7d;} +.authorList .authorBody .title p{ color:#a2afbe; font-size:.75em;} +.authorList .authorBody .title .planetUri{ position:absolute; right:0; bottom:0; font-size:.7em; color:#999;} +.authorList .authorBody .authorTag{ position:relative; padding-top:10px; margin-left:120px; border-top:1px dotted #ccc; font-size:.75em; *zoom:1;} +.authorList .authorBody .authorTag dt{ display:inline;} +.authorList .authorBody .authorTag dd{ display:inline;} +.authorList .authorBody .authorTag dd a{ color:#747474;} +.authorList .authorBody .authorTag dd a strong{ font-weight:normal; color:#fff; background:#ffba00;} +.authorList .authorBody .authorTag .addFavorite{ position:absolute; top:7px; right:0; background:url(../images/iconAddFavorite.gif) no-repeat left center;} +.authorList .authorBody .authorTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.9em; color:#999; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-align:right; letter-spacing:-1px;} +.authorList .tl, +.authorList .tr, +.authorList .bl, +.authorList .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxCommentIn.gif) no-repeat;} +.authorList .tl{ top:-1px; left:-1px; background-position:0 0;} +.authorList .tr{ top:-1px; right:-1px; background-position:-4px 0;} +.authorList .bl{ bottom:-1px; left:-1px; background-position:0 -4px;} +.authorList .br{ bottom:-1px; right:-1px; background-position:-4px -4px;} + +/* Write Post */ +.writePost{ position:relative; margin-bottom:15px; padding:10px 0; *zoom:1;} +.writePost *{ margin:0; padding:0; color:#fff; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.writePost h3{ margin-left:15px; line-height:1em; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.writePost .toggle{ display:none; position:absolute; top:5px; right:15px; background:url(../images/arrowTagNavigation.gif) no-repeat;} +.writePost.close .toggle{ background-position:left -14px;} +.writePost.open .toggle{ background-position:left 5px;} +.writePost.close .toggle.open, +.writePost.open .toggle.close{ display:block;} +.writePost .toggle button{ padding-left:8px; position:relative; font:bold 12px AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-1px;} +.writePost.close .writeBody{ display:none;} +.writePost.open .writeBody{ display:block;} +.writePost .writeHeader{ position:relative;} +.writePost .writeBody{ position:relative; *zoom:1; padding-top:25px;} +.writePost .writeBody form, +.writePost .writeBody fieldset{ width:100%; position:relative;} +.writePost .writeBody dl{ position:relative; margin:0 120px 0 90px; clear:both; *zoom:1; clear:both;} +.writePost .writeBody dt{ position:relative; left:-65px; float:left; clear:left; width:70px; margin-right:-70px; font-weight:bold;} +.writePost .writeBody dd{ position:relative; clear:right; margin-bottom:10px; width:100%;} +.writePost .writeBody dd textarea, +.writePost .writeBody dd .inputText{ position:relative; width:96%; border:1px solid #ccc; color:#333;} +.writePost .writeBody dd textarea{ position:relative; padding:5px 10px; height:3em; overflow:auto;} +.writePost .writeBody dd .inputText{ padding:3px 10px;} +.writePost .writeBody dd.preview{ display:block; clear:both;} +.writePost .writeBody dd.preview.off{ display:none;} +.writePost .writeBody dd.preview p{ padding:5px 10px; border:1px solid #f4f4f4; width:96%; background:#f4f4f4; color:#000;} +.writePost .writeBody dd.preview p a{ color:#00f;} +.writePost .writeBody .writeOptions{ position:absolute; top:0; left:100%; margin-left:-105px;} +.writePost .writeBody .writeOptions p{ white-space:nowrap;} +.writePost .writeBody .writeOptions input{ vertical-align:middle; width:13px; height:13px; margin-right:4px;} +.writePost .writeBody button{ width:90px; height:68px; position:absolute; bottom:5px; right:15px; background-repeat:no-repeat;} +.writePost .writeBody button span{ position:relative; display:block; *padding-top:20px; visibility:visible; width:auto; height:auto; text-align:center; font:bold 1.2em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serifl;} +.writePost .tl, +.writePost .tr, +.writePost .bl, +.writePost .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxAuthorHeader.png) no-repeat; _background:url(../images/boxAuthorHeader.gif) no-repeat;} +.writePost .tl{ top:0; left:0; background-position:left top;} +.writePost .tr{ top:0; right:0; background-position:right top;} +.writePost .bl{ bottom:0; left:0; background-position:left -4px;} +.writePost .br{ bottom:0; right:0; background-position:right -4px;} + +/* My Favorite Tag */ +.myFavoriteTag{ display:none; position:relative; background:#7b735d; margin-bottom:10px; *zoom:1; padding:15px 20px 15px 20px;} +.myFavoriteTag *{ margin:0; padding:0;} +.myFavoriteTag.open{ display:block;} +.myFavoriteTag *{ color:#fff;} +.myFavoriteTag ul{ position:relative; padding:5px 0; overflow:hidden; *zoom:1;} +.myFavoriteTag li{ position:relative; padding:0 6px 0 10px; left:-11px; display:inline; background:url(../images/lineVccc.gif) no-repeat left center; line-height:18px;} +.myFavoriteTag li a, +.myFavoriteTag li strong{ font-size:.75em; white-space:nowrap;} +.myFavoriteTag li strong{ color:#ffba00;} +.myFavoriteTag li .delete{ position:relative; top:-7px; left:-6px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} +.myFavoriteTag li .delete span{ display:inline-block; width:0; height:0; font:0/0 Sans-serif; visibility:hidden;} +.myFavoriteTag li .delete.hover{ display:inline-block;} +.myFavoriteTag .addTag{ text-align:right;} +.myFavoriteTag .addTag .inputText{ border:1px solid #ccc; padding:3px 4px; color:#000; font-size:.75em; margin-right:5px;} +.myFavoriteTag .addTag .addFavorite{ display:inline-block; position:relative; background:url(../images/iconAddFavorite.gif) no-repeat left center;} +.myFavoriteTag .addTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} +.myFavoriteTag .tl, +.myFavoriteTag .tr, +.myFavoriteTag .bl, +.myFavoriteTag .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxAuthorHeader.gif) no-repeat;} +.myFavoriteTag .tl{ top:0; left:0; background-position:left top;} +.myFavoriteTag .tr{ top:0; right:0; background-position:right top;} +.myFavoriteTag .bl{ bottom:0; left:0; background-position:left -4px;} +.myFavoriteTag .br{ bottom:0; right:0; background-position:right -4px;} + +/* Welcome Message */ +.welcome{ position:relative; *zoom:1; margin-bottom:15px; padding:30px; background:#000;} +.welcome *{ margin:0; padding:0; color:#fff; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.welcome h2{ position:relative; _zoom:1; margin-bottom:10px; padding:10px 0 0 70px; height:50px; _height /**/:60px; background:url(../images/bgSmile.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} +.welcome p{ margin-bottom:10px; line-height:1.5em;} +.welcome ol{ padding-left:20px; margin-bottom:10px; margin-left:20px;} +.welcome ol li{ list-style:decimal; line-height:1.5em;} +.welcome .tl, +.welcome .tr, +.welcome .bl, +.welcome .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxWelcome.gif) no-repeat;} +.welcome .tl{ top:0; left:0; background-position:left top;} +.welcome .tr{ top:0; right:0; background-position:right top;} +.welcome .bl{ bottom:0; left:0; background-position:left -4px;} +.welcome .br{ bottom:0; right:0; background-position:right -4px;} + +/* Pagination */ +.pagination{ padding:15px 0; text-align:center;} +.pagination *{ margin:0; padding:0;} +.pagination a, +.pagination strong{ _position:relative; font-weight:bold; display:inline-block; padding:5px 5px 3px 5px; color:#313031; text-decoration:none; line-height:normal; font:bold 12px Tahoma, Sans-serif;} +.pagination strong{ color:#ff8600 !important;} +.pagination a:hover{ background:#eee; } +.pagination a.prev{ padding:5px 10px 3px 18px; background:url(../images/paginationPrev.gif) no-repeat 8px 8px !important; border:none; font-weight:normal; } +.pagination a.prevEnd{ padding:5px 10px 3px 18px; background:url(../images/paginationPrevEnd.gif) no-repeat 4px 8px !important; border:none; border-right:1px solid #ccc; font-weight:normal;} +.pagination a.next{ padding:5px 18px 3px 10px; background:url(../images/paginationNext.gif) no-repeat 40px 8px !important; border:none; font-weight:normal; } +.pagination a.nextEnd{ padding:5px 18px 3px 10px; background:url(../images/paginationNextEnd.gif) no-repeat 40px 8px !important; border:none; border-left:1px solid #ccc; font-weight:normal;} + + diff --git a/modules/planet/skins/xe_planet/css/gray.css b/modules/planet/skins/xe_planet/css/gray.css new file mode 100644 index 000000000..8844338f2 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/gray.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#999;} +.authorFooter, +.commentList{ background:#efefef;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteGray.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#b7b7b7;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#999;} diff --git a/modules/planet/skins/xe_planet/css/green.css b/modules/planet/skins/xe_planet/css/green.css new file mode 100644 index 000000000..3ce968d19 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/green.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#75B570;} +.authorFooter, +.commentList{ background:#f1f7f0;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteGreen.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#9ecb9b;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#75B570;} diff --git a/modules/planet/skins/xe_planet/css/layout.css b/modules/planet/skins/xe_planet/css/layout.css new file mode 100644 index 000000000..dcac00227 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/layout.css @@ -0,0 +1,391 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +/* Float Clear */ +.fClear { display:block; float:none; clear:both; margin:0; padding:0; width:0; height:0; overflow:hidden; font:0/0 Sans-serif; visibility:hidden; } /* Use it when you want to float clearing */ + +/* Container */ +#container { position:relative; margin:0 auto; height:auto !important; } /* alignCenter = margin:0 auto | alignLeft = margin:0 | alignRight = margin:0 0 0 auto */ + +/* Header */ +#header { } + +/* Body */ +#body { position:relative; } +#body:after { content:""; display:block; clear:both; } + +/* Content */ +#content { position:relative; } +#content .section { position:relative; } + +/* Navigation */ +#navigation { position:relative; } +#navigation .section { position:relative; } + +/* Extra */ +#extra { position:relative; } +#extra .section { position:relative; } + +/* Footer */ +#footer { position:relative; } + +/* ---------- Common Display ---------- */ +/* c = #content, n = #navigation, e = #extra */ +.c1 #navigation, +.c2 #navigation, +.c3 #navigation, +.c1 #extra, +.c2 #extra, +.c3 #extra +.cn #extra, +.nc #extra { display:none; } + +.cn #navigation, +.nc #navigation, +.ce #navigation, +.ec #navigation, +.ne #navigation, +.en #navigation, +.cne #navigation, +.ecn #navigation, +.nec #navigation, +.cen #navigation, +.nce #navigation, +.enc #navigation, +.cee #navigation, +.eec #navigation, +.ece #navigation, +.ce #extra, +.ec #extra, +.ne #extra, +.en #extra, +.cne #extra, +.ecn #extra, +.nec #extra, +.cen #extra, +.nce #extra, +.enc #extra, +.cee #extra, +.eec #extra, +.ece #extra { display:block; } + +#extra .section{ display:none; } +.e0 #extra { display:none;} +.e1 #extra, +.e2 #extra, +.e3 #extra, +.e4 #extra, +.e5 #extra, +.e1 #extra .extra1, +.e2 #extra .extra1, +.e2 #extra .extra2, +.e3 #extra .extra1, +.e3 #extra .extra2, +.e3 #extra .extra3, +.e4 #extra .extra1, +.e4 #extra .extra2, +.e4 #extra .extra3, +.e4 #extra .extra4, +.e5 #extra .extra1, +.e5 #extra .extra2, +.e5 #extra .extra3, +.e5 #extra .extra4, +.e5 #extra .extra5, +.cee #extra .section, +.eec #extra .section, +.ece #extra .section { display:block;} + +.nTop #navigation { display:block; } + +.ne #navigation, +.ne #extra, +.ne #extra .section { float:left; } +.en #navigation, +.en #extra, +.en #extra .section { float:right; } + +/* ---------- Fixed Layout Preset ---------- */ +/* c = #content, n = #navigation, e = #extra */ + +/* Width */ +.fixed #container { width:960px; } +.fixed #body { width:auto; } +.fixed #navigation, +.fixed #extra .section { width:200px; } +.fixed .c1 #content { width:100%; } +.fixed .c1 #navigation { width:300px; } +.fixed .c1 #extra { width:auto; } +.fixed .c1 #extra .section { width:300px; } +.fixed .c2 #content { width:740px; } +.fixed .c3 #content { width:520px;} +.fixed .cee #extra, +.fixed .eec #extra{ width:420px;} +.fixed .ece #extra { width:100%;} + +/* Floating 1 Columns */ +.fixed .c1 #content { clear:both; } + +.fixed .ne #navigation, +.fixed .ne #extra .extra1 { margin-right:30px; } + +.fixed .en #navigation, +.fixed .en #extra .extra1 { margin-left:30px; } + +/* Floating 2 Columns */ +.fixed .cn #content { float:left; } +.fixed .cn #navigation, +.fixed .cn #extra { float:right; } + +.fixed .nc #content { float:right; } +.fixed .nc #navigation, +.fixed .nc #extra { float:left; } + +.fixed .ce #content { float:left; } +.fixed .ce #navigation, +.fixed .ce #extra { float:right; *float:none; *left:20px; _left:17px; } + +.fixed .ec #content { float:right; } +.fixed .ec #navigation, +.fixed .ec #extra { float:left; *float:none; } + +/* Floating 3 Columns */ +.fixed .cne #content { float:left; margin-right:20px; } +.fixed .cne #navigation { float:left; } +.fixed .cne #extra { float:right; } + +.fixed .ecn #content { float:left; margin-right:-520px; left:220px; } +.fixed .ecn #navigation { float:right; } +.fixed .ecn #extra { float:left; } + +.fixed .nec #content { float:right; } +.fixed .nec #navigation { float:left; margin-right:20px; } +.fixed .nec #extra { float:left; } + +.fixed .cen #content { float:left; margin-right:20px; } +.fixed .cen #navigation { float:right; } +.fixed .cen #extra { float:left; } + +.fixed .nce #content { float:left; margin-right:-520px; left:220px; } +.fixed .nce #navigation { float:left; } +.fixed .nce #extra { float:right; } + +.fixed .enc #content { float:right; margin-left:20px; } +.fixed .enc #navigation { float:right; } +.fixed .enc #extra { float:left; } + +.fixed .cee #content { float:left; _margin-right:-3px; } +.fixed .cee #extra { float:right; *float:none; *left:20px; } +.fixed .cee .section { float:left; } +.fixed .cee .extra1 { margin-right:20px; } + +.fixed .eec #content { float:right; _margin-left:-3px; } +.fixed .eec #extra { float:left; *float:none; *left:0; } +.fixed .eec .section{ float:left;} +.fixed .eec .extra1{ margin-right:20px; } + +.fixed .ece #content { float:left; margin-right:-100%; left:220px;} +.fixed .ece #extra { float:none; } +.fixed .ece .extra1{ float:left; } +.fixed .ece .extra2{ float:right; } + +/* ---------- Liquid Layout Preset ---------- */ +/* c = #content, n = #navigation, e = #extra */ + +/* Width */ +.liquid #container { width:100%; } +.liquid #body { width:auto; } +.liquid .c1 #content { width:100%; } +.liquid .c1 #navigation { width:32%; } +.liquid .c1 #extra { width:66%; } +.liquid .c1 #extra .section { width:48.4%; } +.liquid .c2 #content { width:75%; } +.liquid .c2 #navigation, +.liquid .c2 #extra { width:23%; } +.liquid .c3 #content { width:56%; } +.liquid .c3 #navigation { width:20%; } +.liquid .c3 #extra { width:20%; } +.liquid .cee #extra, +.liquid .eec #extra { width:42%;} +.liquid .ece #extra { width:100%;} +.liquid .cee #extra .section, +.liquid .eec #extra .section{ width:48%; } +.liquid .ece #extra .section { width:20%; } + +/* Floating 1 Columns */ +.liquid .c1 #content { clear:both; } + +.liquid .ne #navigation { margin-right:2%; } +.liquid .ne #extra .extra1 { float:left; } +.liquid .ne #extra .extra2 { float:right; } + +.liquid .en #navigation { margin-left:2%; } +.liquid .en #extra .extra1 { float:right; } +.liquid .en #extra .extra2 { float:left; } + +/* Floating 2 Columns */ +.liquid .cn #content { float:left; } +.liquid .cn #navigation, +.liquid .cn #extra { float:right; } + +.liquid .nc #content { float:right; } +.liquid .nc #navigation, +.liquid .nc #extra { float:left; } + +.liquid .ce #content { float:left; _margin-right:-3px; } +.liquid .ce #navigation, +.liquid .ce #extra { float:right; *float:none; *left:2%; } + +.liquid .ec #content { float:right; } +.liquid .ec #navigation, +.liquid .ec #extra { float:left; *float:none; } + +/* Floating 3 Columns */ +.liquid .cne #content { float:left; margin-right:2%; } +.liquid .cne #navigation { float:left; } +.liquid .cne #extra { float:right; } + +.liquid .ecn #content { float:left; margin-right:-100%; left:22%; } +.liquid .ecn #navigation { float:right; } +.liquid .ecn #extra { float:left; } + +.liquid .nec #content { float:right; } +.liquid .nec #navigation { float:left; margin-right:2%; } +.liquid .nec #extra { float:left; } + +.liquid .cen #content { float:left; margin-right:2%; } +.liquid .cen #navigation { float:right; } +.liquid .cen #extra { float:left; } + +.liquid .nce #content { float:left; margin-right:-100%; left:22%; } +.liquid .nce #navigation { float:left; } +.liquid .nce #extra { float:right; } + +.liquid .enc #content { float:right; margin-left:2%; } +.liquid .enc #navigation { float:right; } +.liquid .enc #extra { float:left; } + +.liquid .cee #content { float:left; _margin-right:-3px; } +.liquid .cee #extra { float:right; *float:none; *left:2%; } +.liquid .cee .extra1 { float:left; } +.liquid .cee .extra2 { float:right; } + +.liquid .eec #content { float:right; _margin-left:-3px; } +.liquid .eec #extra { float:left; *float:none; *left:0; } +.liquid .eec .extra1{ float:left; } +.liquid .eec .extra2{ float:right; } + +.liquid .ece #content { float:left; margin-right:-100%; left:22%;} +.liquid .ece #extra { float:none; } +.liquid .ece .extra1{ float:left; } +.liquid .ece .extra2{ float:right; } + +/* ---------- Hybrid Layout Preset ---------- */ +/* c = #content, n = #navigation, e = #extra */ + +/* Width */ +.hybrid #container { width:100%; } +.hybrid #body { width:auto; } +.hybrid #content { width:100%; } +.hybrid #navigation { width:200px; } +.hybrid #extra { width:200px; } +.hybrid .c1 #navigation { width:300px; } +.hybrid .c1 #extra { width:auto; } +.hybrid .c1 #extra .section { width:300px; } +.hybrid .cee #extra, +.hybrid .eec #extra { width:420px;} +.hybrid .ece #extra { width:100%;} +.hybrid .cee #extra .section, +.hybrid .eec #extra .section, +.hybrid .ece #extra .section { width:200px; } + +/* Floating 1 Columns */ +.hybrid .c1 #content { clear:both; } + +.hybrid .ne #navigation, +.hybrid .ne #extra .extra1 { margin-right:30px; } + +.hybrid .en #navigation, +.hybrid .en #extra .extra1 { margin-left:30px; } + +/* Floating 2 Columns */ +.hybrid .cn #body { margin-right:220px; } +.hybrid .cn #content { float:left; margin-right:-100%; } +.hybrid .cn #navigation, +.hybrid .cn #extra { float:right; left:220px; clear:right; } + +.hybrid .nc #body { margin-left:220px; } +.hybrid .nc #content { float:right; margin-left:-100%; *margin-left:0; } +.hybrid .nc #navigation, +.hybrid .nc #extra { float:left; left:-220px; clear:left; } + +.hybrid .ce #body { margin-right:220px; } +.hybrid .ce #content { float:left; margin-right:-100%; } +.hybrid .ce #navigation, +.hybrid .ce #extra { float:right; left:220px; clear:right; *float:none; *left:100%; *margin-left:20px; *margin-right:-200px; } +.hybrid .ce #navigation { width:100% !important; right:-220px; } + +.hybrid .ec #body { margin-left:220px; } +.hybrid .ec #content { float:right; margin-left:-100%; _float:left; _margin-left:0; _margin-right:-100%; } +.hybrid .ec #navigation, +.hybrid .ec #extra { float:left; left:-220px; clear:left; *float:none; *margin-right:-200px; } +.hybrid .ec #navigation { width:100% !important; } + +/* Floating 3 Columns */ +.hybrid .cne #body { margin-right:440px; } +.hybrid .cne #content { float:left; } +.hybrid .cne #navigation { float:left; margin-right:-200px; left:20px; } +.hybrid .cne #extra { float:right; margin-left:-200px; left:440px; } + +.hybrid .ecn #body { margin-left:220px; margin-right:220px; } +.hybrid .ecn #content { float:left; margin-right:-100%; } +.hybrid .ecn #navigation { float:right; margin-left:-200px; left:220px; } +.hybrid .ecn #extra { float:left; left:-220px; } + +.hybrid .nec #body { margin-left:440px; } +.hybrid .nec #content { float:right; } +.hybrid .nec #navigation { float:left; margin-right:-200px; left:-440px; } +.hybrid .nec #extra { float:left; margin-right:-200px; left:-220px; } + +.hybrid .cen #body { margin-right:440px; } +.hybrid .cen #content { float:left; } +.hybrid .cen #navigation { float:right; margin-left:-200px; left:440px; } +.hybrid .cen #extra { float:left; margin-right:-200px; left:20px; } + +.hybrid .nce #body { margin-left:220px; margin-right:220px; } +.hybrid .nce #content { float:left; margin-right:-100%; } +.hybrid .nce #navigation { float:left; margin-right:-200px; left:-220px; } +.hybrid .nce #extra { float:right; right:-220px; } + +.hybrid .enc #body { margin-left:440px; } +.hybrid .enc #content { float:right; } +.hybrid .enc #navigation { float:right; margin-left:-200px; left:-20px; } +.hybrid .enc #extra { float:left; margin-right:-200px; left:-440px; } + +.hybrid .cee #body { margin-right:440px;} +.hybrid .cee #content { float:left; margin-right:-100%; } +.hybrid .cee #navigation { right:-440px;} +.hybrid .cee #extra { float:right; left:440px; *float:none; *left:100%; *margin-left:20px; *margin-right:-420px; } +.hybrid .cee .extra1 { float:left; } +.hybrid .cee .extra2 { float:right; } + +.hybrid .eec #body { margin-left:440px;} +.hybrid .eec #content { float:left; margin-right:-100%; } +.hybrid .eec #extra { float:left; left:-440px; *float:none; *margin-right:-420px; } +.hybrid .eec .section{ float:left;} +.hybrid .eec .extra1{ float:left; } +.hybrid .eec .extra2{ float:right; } + +.hybrid .ece #body { margin:0 220px; } +.hybrid .ece #content { float:left; margin-right:-100%; } +.hybrid .ece #navigation { right:-220px; } +.hybrid .ece #extra { float:none; } +.hybrid .ece .extra1{ float:left; left:-220px; margin-right:-200px; } +.hybrid .ece .extra2{ float:right; right:-220px; margin-left:-200px; } + +/* Navigation Top */ +.nTop #navigation { position:absolute; float:right !important; width:auto !important; margin:0 !important; *clear:none !important; overflow:visible; top:-4em; left:auto !important; right:0; } +.nTop #navigation .section { position:absolute; float:right; top:0; right:0; width:auto; margin:0; padding:0; } +.nTop #navigation .section:after { content:""; display:block; clear:both; width:0; height:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif;} +.nTop #navigation h2 { position:absolute; left:0; top:0; width:0; height:0; border:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif; } +.nTop #navigation ul.nav { position:relative; display:block; float:right; margin:0; padding:0; list-style:none; overflow:hidden; text-align:right; white-space:nowrap; } +.nTop #navigation ul.nav li { position:relative; left:-1px; display:inline; white-space:nowrap; border-left:1px solid #ccc; padding-left:5px; } diff --git a/modules/planet/skins/xe_planet/css/orange.css b/modules/planet/skins/xe_planet/css/orange.css new file mode 100644 index 000000000..b2fd40d2e --- /dev/null +++ b/modules/planet/skins/xe_planet/css/orange.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#E8A15E;} +.authorFooter, +.commentList{ background:#fdf5ef;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteOrange.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#efbd8e;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#E8A15E;} diff --git a/modules/planet/skins/xe_planet/css/red.css b/modules/planet/skins/xe_planet/css/red.css new file mode 100644 index 000000000..7d5d17ff1 --- /dev/null +++ b/modules/planet/skins/xe_planet/css/red.css @@ -0,0 +1,17 @@ +@charset "utf-8"; +/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ + +.authorHeader, +.writePost{ background:#D18675;} +.authorFooter, +.commentList{ background:#faf3f1;} +.writePost .writeBody button{ background-image:url(../images/buttonWriteRed.gif);} + +.myTab li, +.exTab li, +.myTab li a, +.exTab li a{ background-color:#dfaa9e;} +.myTab li.active, +.exTab li.active, +.myTab li.active a, +.exTab li.active a{ background-color:#D18675;} diff --git a/modules/planet/skins/xe_planet/favorite.html b/modules/planet/skins/xe_planet/favorite.html new file mode 100644 index 000000000..1b74127f1 --- /dev/null +++ b/modules/planet/skins/xe_planet/favorite.html @@ -0,0 +1,14 @@ + + + + +
+
+

{sprintf($lang->planet_whos_favorite_list, $planet->getNickName())}

+
+ + + +
+ + diff --git a/modules/planet/skins/xe_planet/filter/create.xml b/modules/planet/skins/xe_planet/filter/create.xml new file mode 100644 index 000000000..04cc7886a --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/create.xml @@ -0,0 +1,20 @@ + +
+ + + + + + + + + + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/insert_interest_tag.xml b/modules/planet/skins/xe_planet/filter/insert_interest_tag.xml new file mode 100644 index 000000000..a37ae0d2e --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/insert_interest_tag.xml @@ -0,0 +1,11 @@ + +
+ + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/insert_memo.xml b/modules/planet/skins/xe_planet/filter/insert_memo.xml new file mode 100644 index 000000000..80a8e82fa --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/insert_memo.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/insert_reply.xml b/modules/planet/skins/xe_planet/filter/insert_reply.xml new file mode 100644 index 000000000..ad6dd19db --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/insert_reply.xml @@ -0,0 +1,14 @@ + +
+ + + + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/me2day_api.xml b/modules/planet/skins/xe_planet/filter/me2day_api.xml new file mode 100644 index 000000000..f809c9901 --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/me2day_api.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/modify_content_tag.xml b/modules/planet/skins/xe_planet/filter/modify_content_tag.xml new file mode 100644 index 000000000..9ab91997b --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/modify_content_tag.xml @@ -0,0 +1,15 @@ + +
+ + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/planet/skins/xe_planet/filter/modify_planet_info.xml b/modules/planet/skins/xe_planet/filter/modify_planet_info.xml new file mode 100644 index 000000000..c501510e7 --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/modify_planet_info.xml @@ -0,0 +1,22 @@ + +
+ + + + + + + + + + + + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/planet_login.xml b/modules/planet/skins/xe_planet/filter/planet_login.xml new file mode 100644 index 000000000..9cba2eab6 --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/planet_login.xml @@ -0,0 +1,11 @@ + +
+ + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/filter/write_content.xml b/modules/planet/skins/xe_planet/filter/write_content.xml new file mode 100644 index 000000000..e5ea82101 --- /dev/null +++ b/modules/planet/skins/xe_planet/filter/write_content.xml @@ -0,0 +1,20 @@ + +
+ + + + + + + + + + + + + + + + + +
diff --git a/modules/planet/skins/xe_planet/footer.html b/modules/planet/skins/xe_planet/footer.html new file mode 100644 index 000000000..c2fdcf2f7 --- /dev/null +++ b/modules/planet/skins/xe_planet/footer.html @@ -0,0 +1,58 @@ + +
+ + + +
+ + +
+ +
+ diff --git a/modules/planet/skins/xe_planet/header.html b/modules/planet/skins/xe_planet/header.html new file mode 100644 index 000000000..5bb558df3 --- /dev/null +++ b/modules/planet/skins/xe_planet/header.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+

{nl2br($config->create_message)}

+ {$lang->cmd_create_planet} + +
+ + + +
+

{$lang->planet_nowhot_tag}

+

{date("Y")}{$lang->unit_year} {date("m")}{$lang->unit_month} {date("d")}{$lang->unit_day} {date("H")}{$lang->unit_hour}

+ + + {$lang->cmd_planet_close_nowhot_tag} + +
+
+ + + +
+

{$config->notice}

+ +
+ \ No newline at end of file diff --git a/modules/planet/skins/xe_planet/images/@user1.gif b/modules/planet/skins/xe_planet/images/@user1.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce00654b956a874670057dc40be27f0cfba0e36a GIT binary patch literal 6395 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 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/@user2.gif b/modules/planet/skins/xe_planet/images/@user2.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ecd32085e8c45a2e4bfde610ada6828f8b48c61 GIT binary patch literal 6343 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 Y6=TGS+|Z#3E=qE$PaQgCgayq14|ljQKL7v# literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/arrowReplyOpen.gif b/modules/planet/skins/xe_planet/images/arrowReplyOpen.gif new file mode 100644 index 0000000000000000000000000000000000000000..1441b41f0c1cc8bdfde266b86b181095107aebae GIT binary patch literal 46 ycmZ?wbhEHbWMyDxXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFtN7CigQOZSOWn6(Fqj* literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/arrowTagNavigation.gif b/modules/planet/skins/xe_planet/images/arrowTagNavigation.gif new file mode 100644 index 0000000000000000000000000000000000000000..083a3e09aa223255589d4a7192befdbea9806dc0 GIT binary patch literal 63 zcmZ?wbhEHbWM`0IXkcXc4+e@qSr{1@7#VaJfB+=Jz$Dg_$hrD7-{d)4Zgp?IC*v$$ M!>csWk&(d~0BL9wNB{r; literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/bgBody.gif b/modules/planet/skins/xe_planet/images/bgBody.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee15e5d8aecb928ef0965a5cdb0f0c79208d4218 GIT binary patch literal 120 zcmZ?wbhEHbWMoKT*v!E2QZ@+&1`uX$c_wV1oe*OCS^XI>R|Ni^; z@5`4j|NsAIfC0syEMTS%hyL1VS<(k+D=fIAjbsl1|gABsi4*$iE}zC zELr?W&&f;dXUE~pT3ZN7?R4mL;8Y{OT{``6x^g-fncV|P)REJ*jThr|oVt#bk1MAO zD<>Y1?i$F@>Bi=frYj&Ln_s5fb)7MT-3Ro#=tdr$K2v|p0iv9m@V6ka((1_ARbV%Y z+yq;qtTiRL#3YaaW=jR8+7JjpG)5|9LcgFolKC*|9!Ub3W&p8&I_uO^p-u+5z)&Em zR>&OaMwNsx(m;SOg-VRp=?gH9k^>dUF?kWBTZn205(I1xz!qB5-KJSUJXP(Vsc4bXEkkk1r;XP&Um2?S!NTR|WVFt(DY zeic&GX@L?&by1@D7bKZ#Wy0)DBt*?4%{Qsp71QQ=;h5MbU{2rHLe9klYf* zT9d#ol|bU#G8k<)uS#VtW%&(iid)3ktYc#&281DYR8&L*90Vf)ViOo9wy)I?@(Bti zg_*bskkTACv95c_;Fw@+#-&GwP6+caFd#L-$T$;#-=~8m%?1J@(uWn&8Ugde#W)W* zlMX>p*EBr@#BhAFL&ajY+6ST&i@@A!u$bMIDEC0}f1+IeGs^=ocEA7hwgKvyi%eZb zt{9-!yDpJugV&ybz^=TyMDE(}J?e@=o&P}@URj~n*}e$WO{q%2@7f-@71k`QOJoQ7 zCSTA$4A|lX zvehC44lp9|G|I=--ZG7n68wqXwAL_ltLo`3HILGqjxvKA>gc2k1*oJa+w`Job!zHxD3* zCDixrGnEpL4?xqJ3SjCnQ_wCKs0bv7LCXoi4ecKK;V`ck$eht=A)#}jrO+Q$G#8}Z z7q#@OO>ETas>k?XtRXW~fLx%40;y&WkPB2{AWaBWU(r&6jEoB;HH+Cy0CLBBna#di zw?=%119&cTDn}TXtE`7^opq;bq{7#jm)OXc^b&C^zw{k+Ma<$H0VXi61LAYrTT}80 z{;)zCdS)sE-Pb#i4m0mcmob2J) z<{rpQ)5ushNImT6d*73o`1DFFDcAi^2}P|R$TMt9yoGrjvl@vFaoQ2V@Hd zdtv7kr3y%7NXb~vu{55shFz@pQ`qL#F)MHIOjH(uRR0K_S3Tel1m#o9?%SZgRpq`1 zoz;X7sAlG`O8i(AI+OoI`2hI=@;?IUqnd9(X*cj&QlxDtl(7llb;o44B7z=Nc>2y< z&FA8v*AitKEQ=s~VT0s^97;s|zAV=xvRo-g8}m0c5ec(xpOE`t!svgAymRjF$rs|b zA@y&&`Xz+g6aZEb3M?7>p3^>lJ7FxjGJ*~&ExUlFdRgk+mo=laQ)Gbqz)SXNOn1!# zXETimbl-#v%=s9|lnC@}m`u3~1jy}YLj-}Y^hV`Y38kG^$iZk+}{ z(?@Z80>7~$^x2`}z9N))mtuGbO*`wH;9DmSj(tp4A|Y4)=(NwdM4Qhr9#*F0LeTK` z#sIe%u3N;}%P|h6=5j*B=Oyeo<~AOIou49v=A(gh=`Ozi hGEpTHBw_p&U;q}}$E2=JPt^bb002ovPDHLkV1ntG?mYki literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/bgSympathy.gif b/modules/planet/skins/xe_planet/images/bgSympathy.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dc22a2aa46dfa7637251661e0fbc05b99caa1f5 GIT binary patch literal 354 zcmZ?wbhEHb6k`x$xXQrre|O;jxy=7J82|tG=l{{n|35$cU!(PZvC#iB)&G}>{{Qps z|LKbVN7DY^UGe|N+y58Z|9^e*|H-cZ@2~!Uy#4>9E&uN<{ePn9|DojnpCA4|S^EF^ zf&a&H{x6gM|KjlfYt#N;pZR~4%KwEt|8LIuf4=4aF2DbqZT>If|G!%O|KFegfnW{; zg+TEq3)lo55DD@V16%!pDFri%Oyqdl)SYsKR2in0tg_PKI;YrlYO0!=pU6sYzK&Te zo2(ebg06gEE=y=QEUwvWYv=L)s;p{#ma;-~3JYg@taxd6h-6@YFt7aNAVvXJ#pw)A v(fy1B)^0 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/bgTag.gif b/modules/planet/skins/xe_planet/images/bgTag.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d3f187fa8502d448043b9193d94d1855580ce33 GIT binary patch literal 152 zcmV;J0B8S4Nk%w1VI%+z0J8u9!NI}M(9qG*(Y(C8?(XjW{r%R~*75Q2z`(%T+S>B+ z^3>GS-QC^({{H{}|GK)mA^8LV00000EC2ui03-kn000C<&`A}*yEyBOK~R!ZFau|v z*}ycCfxfTd5O94Gf~{+Uwf}(9Z#VD_ZGha-CZH{A1jpj}T8I)_)Hp*Vo7)Ob!1>zf5M!#>m`scS>hT| z5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)dr|&tEY=&NX4xro8o6Y%t9PYk2)Q6 zIFFp+*}_`i_`_1*IrB%W84AKvo-sbU>##?xBlX1t3APooMgi82Wt$bPUuX#IHsFzA zxLGUpY=Mr#wPcA3h9YON6OK!Hn%So`$*5R&$f%rlS#S3j3^P6Vd%8G=RNU(6#j0_CS3_1)z0Fq~55}v{&Q1*E9q3VoX PDeb2U^_n%@7#XYqLE0CL literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/boxH2Comment.gif b/modules/planet/skins/xe_planet/images/boxH2Comment.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e01103646ca6a0324d77a27264831b960d66b8a GIT binary patch literal 292 zcmV+<0o(pZNk%w1VORnk0J97L!p6vciIGxbY@nyDS!i-zZFj@R%5;E;b%BatZg^K_ zaZq4u|Ns900000000000A^8LW000aCEC2ui09XPY000EhkTDR_x;X32yZ>M)j$~<` zXsWJk>%MR-&vb3eNdQR9aR0!da7Zi~kI1BQDH}`#%&2rqty-_xtX3p29Jb)FcuX#v z&ol%9&2GEj@VNZ7p4;#EynfH``~QG}f`f#GhKGoWii?bmj*pO$l9QB`mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=% qRdv$U)_)3L*W2882mnys;^SvsJ>=-=TTT)b1?uqeNCi3)5db@S#FShB literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/boxMemo.gif b/modules/planet/skins/xe_planet/images/boxMemo.gif new file mode 100644 index 0000000000000000000000000000000000000000..668a85425e48d3254d2734c2500c9ec16953c27b GIT binary patch literal 195 zcmV;!06hOkNk%w1Ve|nV0Du7iGcz;)|NkNR1OWg50RSuj0002=0UZDU0-8*KsmtvT zqnxzbi?iOm`wxcVNS4M?rs~SJ?hD8AOj~G;=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( x_y`#(IZ0V*d5M{+xyjk-`3V{-I!annsxIkJ9{!~>uOK{06WC%V}t+z literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/boxMyFavoriteTag.gif b/modules/planet/skins/xe_planet/images/boxMyFavoriteTag.gif new file mode 100644 index 0000000000000000000000000000000000000000..c9b27fec29cfc67db5f1550494464c742d5ca6ee GIT binary patch literal 85 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 OpB$hZu#dc7002A0If#V- literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/boxTagSelected.gif b/modules/planet/skins/xe_planet/images/boxTagSelected.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bae015c645bec2fcd0f8c232f74ee8b9f2157d1 GIT binary patch literal 295 zcmV+?0oeXWNk%w1VORnl0J97LuCA_ndU{7kM*{-`4h{|$78W@M)j$~<` zXsWJk>%MR-&vb3ei2z7UaR0!da7Zi~kI1BQDGN*n%&2rqty-_xtX4EY9Jb)FcuX#v z&ol!8&2GEj@VNZ7p4;#EynfH``~QG}f`f#GhKGoWii?bmj*pO$l9QB`mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=% t($mzqb=BC}b_!qG-rsBn08rrN=2~4n=j-fJP7)La?ep|M1v(ND06SUvjZpvq literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/boxTryPlanet.gif b/modules/planet/skins/xe_planet/images/boxTryPlanet.gif new file mode 100644 index 0000000000000000000000000000000000000000..28020d9bb785268c6493608082adefb90d3e45ab GIT binary patch literal 686 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 IZ2&(12jJdKwEzGB literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonAutoComplete.gif b/modules/planet/skins/xe_planet/images/buttonAutoComplete.gif new file mode 100644 index 0000000000000000000000000000000000000000..fac35b80094f6e6160f1063c21b7039ae4a6fa29 GIT binary patch literal 63 zcmZ?wbhEHbWM`0IXkcX6dg9^#|Nj+#vM@3*Ff!;c00Bsbfk~_@~ literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonBlack.gif b/modules/planet/skins/xe_planet/images/buttonBlack.gif new file mode 100644 index 0000000000000000000000000000000000000000..8873a99e52068286b2709e6a614f9a8a14205ebd GIT binary patch literal 4371 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 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonBlue.gif b/modules/planet/skins/xe_planet/images/buttonBlue.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e3a7f7635e3c755c5bf401183b5f496855e3453 GIT binary patch literal 25971 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 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonClose1.gif b/modules/planet/skins/xe_planet/images/buttonClose1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05434f5df31650460dc45382b822357dae0607b8 GIT binary patch literal 325 zcmZ?wbhEHbVyQ*Jos8%$qlF`t<4Bwr$(BYuBq+ujbF6f9A}Y*4Ea^lP5oX_^_+1>&K5D zEiEl2B_$~-DS3H$ixw^F?Ci|U%>4TG>-O#2dwP2Q|NqZGRiOBj1#F%Uhy?kGfi215 zY BZ4v+g literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonFixedBlack45.png b/modules/planet/skins/xe_planet/images/buttonFixedBlack45.png new file mode 100644 index 0000000000000000000000000000000000000000..77af230a2b81794c6a9918cbb669a31a16fd4581 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^x!3HGf|2`H7q*&4&eH|GX)}JtE?Rp91OP07s zlmzFem6RtIr7}3CkJO5>aTOy*6sfMc@gXJf7z|i6Rkg;>3SWU z>v)J$cgqDQZU|ALutnAQ_NmPql?8vb)o&M82!3HFoT7R4ZQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%HF~-@hE&{ob8#bQgMmQn!|tZu zuqNgm?Xz!k-8^upG)A>`hT<32O-}26)mNAwC{IgkF3a%z9dUVSR_qyFrbqiEO5$=2 zKk2mpVk}zM%uw-w6BRY8KWJ1J|H0E-z4Q9at-RdV&oR|!FW#0Vtma$2#rt+WBO8Ot X%Kd+Sp8A;qbPR*1tDnm{r-UW|LpWTk literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonGnb.gif b/modules/planet/skins/xe_planet/images/buttonGnb.gif new file mode 100644 index 0000000000000000000000000000000000000000..279e1cc4d40bd8c631782f3faeeb10413e250a8f GIT binary patch literal 1639 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 Bl^Fm4 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonLogin.gif b/modules/planet/skins/xe_planet/images/buttonLogin.gif new file mode 100644 index 0000000000000000000000000000000000000000..5050ad5733ca90968772c91e0ac7d5c115c32936 GIT binary patch literal 1301 zcmdUs=}(gf0LB|-!UPu+5sY)l9AcqeL?8}>i!KmELDaY)S#-l4$WgOpFeQu2P!teQ zP>yo6r9h!~`}TVKw$Qt@r3d8_6gdiomiBEaP!2(q&HWd9K0Kd(Px4EibLW%dPTl+t zaT;MmAZj~-4uO=!m$m?+Cc2=JF2J#bbg`<9*Ih^9b_is67DQk}9GQ+S(Ka)MJcWTQ zRMe6=bz}}(s^!V`L~a*Vq-UN%l49WnhmL<_}<-Jr$$y4YB zN@GnY(8ld10^({C3sjpRO`kwzd`4nQd(DvAB-0NLj9G9@aC2*GWYSvI&RpNvSl`$b z^%%vPf46M#1I%J}_h6|!zS8i#gWW*mBmTGfe8cBIcl3w;@Cm|qyC^0$3iYU@wCr(t zMdg#HRga@$V@{wWu?>w)%{V-vh1iNmpEw>*rch~g29w1GIPBwSE+~XVT=Y?iR3=v_ zRq7s%R(nQoFq-xaxZummzKRNEBn{q zY;3;WdiQ=Cv2$18Hvmyl?6)uSx(;YfDBW}90xp@;)>CmHCU+dVQmm~CO(;Kfo=fVj zL0)-~(aY^HV55H0{`QoXG>Lc>9^Ick)hFp%_gGXFhc6NC z6?x}}=s%dHlDF%NR&DTEne^S;H(q$kER+4c9pZzu6!`>YTkiXXQ!Eesk60|ldy|mU z4+GP)rym{ou~1oZ=+69fX=n*@rYx*JqwOPPCuOD_4bIP0L}`%imB`_2>ytPe#rpL0 z+Pt;u%qO9<)rmnlv(J*lsk7V9Q==OdHJ6hj=4!u9&zY;s$Z9;g^ZFgf95%Bg!q)I} zeNJbiKZ$BZC{qsWv^=(b14aqjvffI2~kSNu-lPs?T*&$w5RXjR88HbU+gcGx&oC)lA4ngIV2c zPM9snJvpgb2xx=D0#jVECjuRjUp<`1Xmxdkt?=(qVF7r<_zr3AGA&DQ5Fi0o;^ z1+fc+7rGWTC{OpwAW9*5W21YdTWhdKhVVTUh42Z+EGqntF&32pU%3EPcp`d99e541 z^n1^NTZ|>mr?6#78(NB9)`ej)%e~0<0JR=1bS)dAv}ms}b`;|^#n~C&zG$IbWj^cs zg>o{bqC96MA5F;KKF4mvt@va3sH5$Pc4+(nSS1l?S7 zzx$Wp<+ucwz7r=+eGPv1&jZi-#aZuYSSNMz6_Lys4qOVMmC{NAFeN205JF&zh^f}f z7<75=oKs4%B*8S5f?J#AE*G3bl9ZAI7(`&qW|@>yYh6kJD2l?A9`WZd^51p7D@%k# zax$i^?M}0~)~a69+O8jl{_66^PJ>3&qd`#hf@w^Se*vJqcnAOh literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonNext1.gif b/modules/planet/skins/xe_planet/images/buttonNext1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1337ff1cc4ec113abc2298187e62edae22c162c GIT binary patch literal 94 zcmZ?wbhEHbpFVeC-Ig5z3EBVu|5yCU!pOkD&Y;5p y1R%8x%*qu4*ZB^KTyNSrd7Adin={zUq^6r55m=;Ex#acjc^kBEzj&#_U=0A literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonPlanetBlue.gif b/modules/planet/skins/xe_planet/images/buttonPlanetBlue.gif new file mode 100644 index 0000000000000000000000000000000000000000..03392f04259845427e9862364c01f1dbbba6c9d7 GIT binary patch literal 1495 zcmZ{i`%e-G0D#Fn@QgLiS~+K(J*KGm*wxhQ+Rm+}WY)F2rmpp{)upMKyE<*H-84-s zEiFwwp9m<(8$m!pMLiBHXxz&iI@TzQ#i^R8YB0K8t{xJBCCVRt3;D}MDmYV z8oq~*X7n)!#r1ePs*6kQ7q^hv4Me7Na;}xygJTcMCKXj^ay_2G5{$^EW;x<D)_ zV$*vc01yj+ee>U%06-6KzDx)WsFYy-8qPV_I`ryk66pp-LClw$o)0Lg&yph>g#6Nn@-g-Yw9GrE~9c26&d+w6CiH^>(VheTq@@Q744Iwl|g^m$@(YI;U7 zJ2$_uxU{SkMygiV)Ecc$Z!nt77OQRD?$~g;+?!k5JG*-xz<%FA_`A|_f1g8PHzm|I z0RnO=sR>R)4VC+!$y$)m(BjIV3vU81bzz39p@)uN!RHcch2I(4}vxu?ek$1+RpnWnS@tAFp!RHkG70 z{LUD+$F3PiUv9nH*Sld*(6g7v`Zz8N@9s57d_Q;7uALyu&@7yW4KN zVOc&f@O1(pR9WaZ!`lal2 zZRVHP&<-3D1R*NFlt+u8s*1DInX0#OYMkobd8bxY84nCyt-5&R;p%&MaOdiW zx>M8g!l~1=76QYx$dV&j+P1P_ycSgvqt~LV62f$tnv^VE`?Hk7B5+f_UWY}NhUsyb z+AMu1t^=>f6PbEFfhr0!5E;{11`=D1H;}pcy`caeFx*HL9?3S+B*6q@mn_C$q>m?r zn;4TR*`{vA1A>XUkZ&-tl)&%{AW%)VxkuYU@R)mzOoN$Y6@^>4j_GVmpIc3^^zS$g zmH_|=X61Pw&B+A?V31ZmIM!$tKoVg#;o;OA+mL?-(IyHkFxtdH2-v#hbY0H+FceE% z=LeiG2Q_nfiEl zLyTJ~_UyVf6wls{%kp(WFcJWQ z^SlDAh1y2mcRoBG@SL>>Qi1dife-rLu)g${A%U@y!Gq7O#X;aUpF}v{ufbXZO>Xl| zmGFVLV1Yz%e9MZ62csYexbS3vtqh)w@~e{wgU{JsU#mbJ tegrA%*M63vY*Mrvc0#Yu&9&4 zys5>$tjff*vZ|K7wW7GOowcr-v8j}^tCz2*lCGwa|Ns9000000000000000000000 z00000A^8LW001}uEC2ui09XPY000L6K%8hnEE*S#q;kn@I-k&}bb72>uh^`1%k6r< z;IMd1E}PHjw0g~MySdDw2)7B?@A$la&+q&HfPsR8goTEOh>41ejE#(BTJr4xw7TUm^15z@WF-W&!9t#9!C>oFt6t5zwd>cgW6PdRySDAy zxO3~?&AYen&mSlt7*4#n@#DyoD__pMx%21Hqf4Joy}I@5*t2Wj&b_<$@8H9WA5WZu zgBIx1t6$H)z5Dm@NG7S|l1w(~`m}aW!rkwVfK?DSZD(a}DmTKy$sHUpws;su^>Z`EED(kGY)@tjm zxaO+suDtf@>#x8DD{2H4q+sl^$R?}ovdlK??6c5DEA6z@R%`9G*k-Hkw%m5>?YH2D zEAF`DmTT^@6+9sS!@BIY>+ZYo#w+i<^ww+dz4+#<@4o!@>+in+2Q2Ww1Q%@Z!3Za; z@WSk>Yrw-0M=bHg6jyBV#TaL-@x~l??D5AShb;2QB$sUR$tb6+^2#i??DESH%Mij0 zG}mnN%{b?*^Ugf??DNk+2QBo_L>F!J(MTt)^wLZ>?ex=7M=kZ#RM$Ln0$69Q_10W> z?e*7Shb{KlWS4FB*=VP&_S$T>?e^Pn$1V5Vbk}Y7-FRm`LjyJR?f2h+2QK*Fgcol3 z;fN=$_~MK=?)c-7M=tr~lvi%~<(Ox#`R1H=?l<2sgf9B%q?c~`>8Pi!`s%E=?)vMn z$1eNqwAXI=`|Y^ruKVu1_wM`ezy~jS4IR*6{PD;qul(}NH}CxO&_^%*^wd{x{q@*q zul@Gickli8;D;~%_~e&w{_(}Lp#J*ox9|S@@W(Iz{Pfpv|NZ#qumAr1_wWDz01Ti2 z2S~sI8t{M!OrQeSM}r2~;DHc~padsK!3tXNf*8!81~h5nU<{)e$4JI9n(>TiOrsiqSON*!@B%mp0suRs CA9oM{ literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonPrev1.gif b/modules/planet/skins/xe_planet/images/buttonPrev1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c24c89af437d98264843d6b38cd6b3c9e536fed GIT binary patch literal 91 zcmZ?wbhEHbpFVeC-Ig5z3EBVu|5yCU!pOkD&Y;5p u1R%8x%nB8|7-M$OuJf*!5RQvY9pBd literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonRed.gif b/modules/planet/skins/xe_planet/images/buttonRed.gif new file mode 100644 index 0000000000000000000000000000000000000000..d017d5949a7980b8cc6e695d590d263d120b8a1d GIT binary patch literal 4753 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 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonSympathy.gif b/modules/planet/skins/xe_planet/images/buttonSympathy.gif new file mode 100644 index 0000000000000000000000000000000000000000..1360261db604d2dcfe628f416cb4c61f10675d1d GIT binary patch literal 118 zcmZ?wbhEHbv|$ion8?I%_wL>QV8Fn@p!k!8k%57UK?lfY0Le2jxr_9zJpHzxhhxjF z?#=gX7Vxz#D(iW6a_WmytKL}e`Y^}ui|?%;aVKrw{l3`bB(d?vCB^jPPglO|(Oj&p TA^K(KB0iyx@7!@5TnyF#MEo>U literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonTagNavigation.gif b/modules/planet/skins/xe_planet/images/buttonTagNavigation.gif new file mode 100644 index 0000000000000000000000000000000000000000..beb1eaf735d6c423c85a620b26c33353c76c5c54 GIT binary patch literal 213 zcmV;`04o1SNk%w1VORnk0Du7iGcz;)|NkNR1OWg50RSuj000130v!MV0<27csmtvT zqnxzbi?iOm`wxcVNS5Y_0>+WH?hD8AOxN~}=N7B?{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`e-$K-YS={|^`_I7nD%c!-#&xX9S( z_y`#(IZ0V*d5M{+xyjk-`3V{-I!an`U)E>J4;(@dyAW^yUW|_yTtP= PJp8jle2iRUPyhfs{SRxU literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonWhite.gif b/modules/planet/skins/xe_planet/images/buttonWhite.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d5e40cef327988f09d3266886965b056740b61a GIT binary patch literal 2094 zcmV+}2+{XPNk%w1VORov0K^vn`uqC*{Qdg*`uO?y{QUd={{H&;`TYI;{QLa*`uh9( z`uX|#`S|$y`uq6!`1||&zP`Tw{rvg)`TF|${QUg={r&&{|NsC0000000000000000 z000000000000000A^8LW000*NEC2ui09XQj000I5;029jX`X1Ru59bRa4gSsZQppV z?|kq7z@TtQ541ejExm)M~;${l$Dm3n30PFcE}$z_X{% zpFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%Jsp{u3*E89ZR;X*|TWVs$I+W zsDe-vCIFZVpuvO&c=PJr%eSxJzkmY^9!$8f;lqd%D_+dFvE#>(BTJr4xw7TUk>SSO z%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~Cpn13N-@tk>jq7*D>u`Sa-0t6$H)z5Dm@5f($n3;DZoGDB*+@!YAGU7-Go4cnoyt;fElG zDB_4DmT2OMD5j|5iY&J1;)^iGDC3MY)@b96IOeG1jy%#>;1Lc4Dddnu7HQ;>NG7S| zl1w(~Q~0q+#ZnXr`&=nryb|=9_TFDJK;p z7(v9Hc;>0+o_zM{=bwNED(IjvTwv&-h$gD&qKr1`=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHED(a}DmTKy$sHUpws;su^>Z`EED(kGY)@tjmxaO+suDtf@>#x8DE9|hu7HjOW z$R?}ovdlK??6c5DEA6z@R%`A5wb*8>?Y7)@>+QFc5-RSv+in+2Q2U&y9{jb!3Za;@WPH1%<#hyM=bHg0Xt0b#TaL- z@y3)`%<;z{hb;2Qu0%42Jt(KF^2#i??DESn$Lz~DM}(t~Iq1l&^Ugf??DNk+2hGd@ z1%M+CIXDZg^wLZ>?ex=7Cxg!`I8|-+)mUe(_10WZv{Bb!hb{KlWS4C=Lo2m(_S$T> z?e^PnW26(+E|F7r+<51$_uhPqJ@*l91uppDgcol3;fN=$I8R?K?)c-7M=tr~lvlpg zTd%}LS6z2u=K1HKhc5d6=%kl!`st{ruDW8qedqe?u*WX@?6lV&TLZ1zuKVu1_wM`e zz_XTn@WdBy{PD;q4_tH4MK@h_%11B#^wd}1`;Qh>sQvcbckli8;D;~%_~VI3{`u&q zum1Y%x9>iEkR15_{Pfpv|NZ#qZ{aHvWT+vBJqn-z2S~sI8t{M!OrQc6$iN1+2zz3R zpadsK!3tXNf*8!81~XiTFT*Ej=r+3<~UjH4XqNXI%>VP7Q6qaOFj$BMn8kAMuM zAO}ebj}h{ah)kp+0b$5RI`WZ_RAeI~Ny$oDGGvpyq$W4XNrh#ylb{TxC~HwPlgS}! zs7$3QSINp&a)V|Tuo=?M;mTUt@|L*FrPGLJw42dVm%t3BFo#J@bxiFDeM_b?m&wd# zp5$xJjHWcFNzH2d1De*%rZ%_9&9$XXA9w4fILArOa*pJ07N9^l!)eZTy7QgzJP0~1 zN6&iN^Pc$3r#_X^xPAKbp8yT0KnJQ7%mI#|2u-L$7s}9l8q@-sql;ZuN70H}^r9He zs75!+(T?u_MKhb5s7FUi(vq6=q$o|PN?DgV>$&u$Fpa59ku$uR+VrM4&8bd1Q`4RL z^rt`#>hG8r9qCXrfor%F`>nXjr?&8k+n%2oWuud84Ut60ZM z)&_mGtY}TETGz_f@?6M&8uWTK2M-&8%kAfI~KV_OqZ3t!PJ!r!kuLw5Uz3YFEqJ*1Gn! zu#K&3XG`1K+V-}%&8=>C%iG@i_P4+du5c?w+Tt4bxX4ZJXWh8j<~sMe(2Xt~@i@xr zTKBrEsrV#zx69q`E<(HB4X=2|3yMFUteEIcuX@+Z-jc=gXyZs4d*@5v`q~$2$4qBD z_sie@`gb4SwA+6NOyB}bbDj-Nu!0xN;0BWgq!R7iN+(R=3S0QX7|t+Zddk!ed-%g3 zehpEbchnG@_{1m%@sH%!))u??#W23#Rbx!!8r%5B6jH2Ycg*7+`}oH|4pR%IOXMOO Y`N&9CQ)iXSNk%w1VOju00Oo%HxYy^*;_blO>b~0QveV_c*XYgU?$zk=&g1U5*yyg& z$KG6xYy{w-08R2=dsk~%Hr*^)aAX}>9*G9vD4+e+UddE>a^A7 zx7X*^=<&th>(S-#x7Oy;=J3ei?aSir!rkk+*yqIF>%7_N#^3DC$KUL*)8)n9>(%G+u+rqS)#kt3>CEEpyV>Zn)aJF-=Cjo1$l&b2-0H*L z>$leDzT4@+-Rjop^0?UN&gAaY=kdYa>$=$Ix7X&c)8y3W@VwdR&gAdVB->j zyV&Tn)aAn6>elJ<(B<&R;q9~4<G9O&@XO-v#NF%D z=JB-F=FjBt)#vcL*y*;`=epSGveo6s-|f2D=+WfxwAALZ)8@R|=*i;k)aLQO+UdmK z>&W5k*5~oh??{ zosf;Gf`glxgoK+1kei0J9dx|Czk~<2yuQ4%!MU}YzR1YHe>2k32Qy>`)z#BVGuqQ+ z*WJ}c)6(SKa)w$DV&X+oMhQKp*YD}vyu`1olwJO)HTDOL!dR1xI5G~M#Sj#r8 zTDEZi(YjsRBJJF_aogst>-H{Py?E93jr*ZRVZ$E^CtiHmuw%xE`6iaExb9@fh!r!w zthq8}&Xz;h#X|Z6mc&%3TsckUG;7pr60=@&nlTnCvQ4AL{ej9B(o|^oR$ZGlZrWQC z$L5VC_LVhjaAQes8q1X{P3}+`Q>V$6@7}RDsdK%_m@!v;H@UK9J@_W(@1(!8o<05S z*M0kL4}Z)S|JhMt-g@w1hu$6ZU6CMp-fbbEf(S-<#~2b;XyJtuT1X*=9Cqkoh8+^Y zgceLNaR(DbXrV=lMBJeTf-SyS;vGb^c;byT%1EP$DUKMUjW3EA;fn~WNTY}&x@aQ* ziAnE)JVB4Fm02$YyY3RHTDVwh4gp``&| zvPmTZM8x@~mLj@|rK$ES!1+sg|<9s;h&Rnrf=AwmNI60k}G=*2s zdn&o(Qb578_dYvy{dL)J%YF6=XU{SC-fD}$gW`%WKDOhGi!cWdkUL)X z*qCQd`Qwo@J~`QoU!J+*WiP(@*rJ23dD(M_00R#&EFeM}A}kO)4{6}e00Rr~z<>x0 zP#!!Cuk#?g?7KT|JMYB*KKue{6z_ZNy&KO!8o~FjJ?;y1Z+-0xWIuiX?l7Q0eEH^| zum1TcnBRW->${JB`|+bsJpAsz&wly))1SWn^Lt7H!y3Af zhAy-r4rRDQ8N#rKGsGbf8z=)In!p4^G=U71D2F0?K#58WVi9-P#23;qichqn7G)p@ zB`(p6UcBKAx#-0yj`4<79HS48$VL;av5h`>BOAex2NQt7j&fvU9@}`tJNmJXdi0|m z`M5_o<^c>~Sfd>8XvajxF%OW;gAXJb$w^Yul9!~UBqxc)6WzVGomaENBxufWz8AvxqG%5C#i`IGi@I zpd~C~VGG*H*7mlz&FyDLJ6hWE7Pq^t?QVmcTiq5{xWC=41#-Jw<~Fys7Km4}>`&{ip_qf#c?svNj+6+k7ywXjtdZTOJ_OAE6>P4>w&?{f~o_D_Ub#Hy` z8{HFR-~<59fPe+;UjheszymHYffJ12{~EZ#3jVMEf+Jku2{(Ab7xwQ7mf(gAEJ45@ z{xE<8yx|kLVF@J;Fp53=VK+wY+>K}2)NcYwvip^ zV*|Sc;08CW!%gl2ko(-mJ~z43t!{7^;M?tPH@w#!?-H2%+yDRoxQD=R01Tl7{`U6} z0FVHC=iA>9D1g5CodAEEJKql}CJC)~`HzP~^pl)wDtGhg}4cYg9s-+aT#xC3xVgh>d5Qpkm8$b)!Dgm{RCftZ9@D1}kbgFBFji-?C(*n^CyhJpA1 zH4p`BxC3ZV0XdKZnz)IWSOHN`0d`OU6|e)MXo{S;1Dl8joT!O*kOP*uiL#gjXb=UQ zxQ3vJiMB|JYPgAL2#Tc`icye>Y8Z>An2Dqqin>?-zC&<4~P zj_A0L`>2lA$dCN^j_oLr@Mw()X^`m%knCuX^;nP--~t4I0pUoI(})2sfB_nb0TqCe z8p)3mDUlOEkp)ST1v!xwnUWYekuER+5J{0R`H|{~0WQgr6G@UVNdOt?kuH#tJ-L$_ z*^@jelpD#DLAjGYS(HVIlp7fX8~Kw)36xBUkxAK6UOgm~c6k zWqFu>S(b&#m4&(gm}7aDhMAa*iI|f)nOf6^28n!<^ivniZh zX`85doTI4+w;7r=aGcONmb$42!ik;GiJiNtok>6g!TFtjpq=2UozPjHdN7^bshpm< zo#=U;=eeEP>7DDDp5d9E=6Rdx`3HLN0@&%F<{6*@`kw$gpaEK-+KHh3sh|Q{pfB*C z=E)7#?XyU5AB%FEQ<-N4Mw#?jNg%FMsZ%*4>q!OhOe)78@2 z+{4e$!_Lpv-QLsN+``Sz%+}bv%F4dV%huoD!OqXp+uYgU;nv;X&)C@7;o{lg;=jzy z!OYLR$;;Z}*<5y~)bR($vV))zaJD&)M3{*4M+&(7wvdyU5DE%gnsV%K!iWA^8LW004ggEC2ui z09pV<000O7fPa5tGc!_Bg)?G=g@}za6_AOEgkp}AmxYU&jh2WNQk9dMq@#pVk%)qS z6|JtQuCcAKvaqzWwX?XpxuCpCdA+g<9P@Ca6}cU9~0^T6HLk6ll4qMVlf7 zTP|q-oyIN7)-7GPT*-M()N=S}?g=ibIi z8>bLN%@WpWRo^z;N%xgN*SdMNETVelvie8A(d5pvE`LUhACx}TWV<~m1=^iWR_bZ`NElW z)+yzjXW~ic3wZXK0iSdF`RAQ`7WyZjgAS@Ep@9avXA&S|qw<-lq?t~7$EJL~ifIOts(PsqseX#7q&_5p00O=G>cg)|B;muc zz#e<7vCH-$1RxD**!4Dl5Ub=ccP}x(KZ6ZoBTr zyKcMio?EZI_TGDMyztiR!?`B}e1Zf56HM^H2OB&v!Ur#$Fu)2U9B{)4FFdjT!WE}0 z@Wl~ZJOv6TOd&D~AWs1X3MP{bM#xhHjKa!btlTonAEQh%$s(UDa>yayyt2S5pKvnG zHOGu{z$2?{^vf#aaWlzRpm4<%07&h0)KEK(N7VpSEj0>TUx5c6Sbq(`*iusswbf@w zy*0^Qe@*h$Rg(?&*JDqeHwpkm&~@Jt1P-|0g8yAO;a&SZIN^9Go_ODj6R!BygF{}q z7<9Adg`d34muO2!yfzSt-CHd>@mb(K<-S$kjC!@ z?4JAZ!>7@E?h)voM)1b#PW0m&clyztZW?mX|kM_>T|2_ytRej9DX zKz{J#mp^{_>#N_s`R&hNKl~)Lf&cpX%kO^v>>JLhZsa20`Y-GG@=iCn8YG7(TPj^ArYk*#XJbWiUPRe6^od~ zEqc+1TLfbewTMM4iqVWe{9+T)ct#**F^xW400=;^fCmTw1bLvN0OYuUI@a-ybPQx4 z1TL5ZC_gDm7kttM zBKRaF=V(eww(^v$1m!AK8B17#Km?;)B`ZzYN)gO~m#756FI{;`Q;Oi2s63_!5`au( z8uOUUG-d)^FwJBtGnv%1rZktSOlVRwmE7zmDyON;Xf_j^;6&v(6OaG}uu}x?gy%Bf z$xH>flbQ2uCo}iS&ttBEoe5aOG6g!%W%huXYY?ad^l8roEcBiWeP==y@K1OGl%Xx? zK@Sv=QH^pmqYlt$4_eRy1!$C{BONJ6L%PwED!>6GMQKJ&YEqHH^rIau=|&x3Pm!K9 zr6uL5Mp;@?laiDJNacVXTEGFOlGF}OMe0$bD%GY!)u~ngO)6ET8dI!RHKt!}DpNVo z1FnuVsbf8AS;x8p4y@pTYg>`}*0*+mt}CGH zUpY_*x(4>Hh?Q$%4{KP%>b0t;Wj*wSA1v#1TNXgyon6%;@Q z1%N{VIsn@Oy!N#nu3s z3*Y&c0KV6C?|fl<-SPg{!2VSM4*ome1v9t=Dljnrf+0L!2V2;`2X^p;7p&j|OL)8y zHgJbQykQTESOq9fv5F&{VhFGJ#W0Ssi(SlO6wlbkE2eRbZ5)6V2fzX-{&9*eV1XYO zdB`d-GKz^zWEC_S$V&#Yl$qRPB|90)L!Ppcdwk_2JNe5|Uau1?0@+FxXkmVQ}-DcVK5e$C=1{mNT3M{ee7xUGOezmP(P3%_7df3C(HKz6dVC!ZNyVcN+wzQ{B?P^>5+StxE5PAN=A! zQ24ezzVQnnA>kglzz|%H@R!eg=17RS2V#zdmm_@U370w05gv1y8$IYWA3D;1{&Jry zJ>fRT`OkSigr0j~2v{G22XcP(on!s#Ro}YTwO(~3Xnp5g7kkgoE_SfTyy{xFdCt>* zb(?RU?Qq|@-qF5uC_q8)Jn#S%c<^`s4{U%3fj9i%cfNtXCqD3mPyFFGaCi?yKJty< zfZrP*_{Ixf@Pywv;sx(_%YT0Hq%XbUd7yd9Qy%e?r#uu~AA8upp7X9}J?$qy``PFI z_J`N~?g#&R;p<-bzOOyyF>r$o+~5XXz(5zCzkx0||M|_wfcB@4femc``O|;C^sA43 z>EA&6)u;UQogaSYN1yrT?>_Y1AN}<=ANton|M}ss{r+no1{eT<+P8oECxH9cf9EHF z{ilH9r+)|NfAFV(5GZ~KSb-2IfKNaLFhB(w2m>(i22Y@UPY{9_kbxfffp2hv9;gFP z0DvFZfhDMd9|!{w@CF+A1Q6i=fdP1eQ~&`uD1-gSfgbn-Dd>V8NCg-mgaOEcRL}=H zz=BUWf-s;1RKS9L@C1Dj2OM~XSJ;9h7za_P15?-sXHbP@_=Hn9f>dw@eK3VofQ2l0 z25_hYXF!Kh*o1XRhF4gJQ~-u&uz^$<2XW8`PN)Nfc!*9&hEIryiHL}Xc!-bKh>kdk ziwKF5Xo-y&iId2PoY;wbum^nrik}#YqDY9P7>bMtil&H&sEp1im@n)x@e2Hc#FQci@z9*uh@&bxQfImjJmjt%4h^Rum?sk0nX@*pZJV9AdN;) zjeC#-+_;U~I03PEjoCQ=jfDt0Fo>jkt)fLZ19mYnUeg-k~MIXDS4A2 zSp+fpktRu$LRkYvPy68;dl}Z@}6A+eKDUwA%2U_U|Y!H%2DUwi$l|^uuQdyOL;FMb#n1Pv; zgejPa>6Aslm4r$Em4T_1SP7Vbsg#FFmX0Zzbvc-TxtNa`m{D+*g$bBc83h_}n5IdX zrFoi%sR691nyBfTteKjwIh(Y3nynd_t(lv*$p?Oro4k3OsQH_{*_*&QoUs|3#)+H9 ziJZzgoXN?Y&8Y#rNtk?)n$mfle!!c2P@UU(o!$AJ*~y*PnVQ=fnAKUD(@C7)xt-rB zo#%<3p8;y11iGCAI-u*RpMPKi z5XzneKmaB{p%p5id_Vvg`kxS5p%KcU0BQmN3ZMkQq1!2R(9qD%&d%1>*15U4)YR0+$H&#x z)yBrgxwyHzyt}%(xw*Q!yu7={$Huw2xYg9vxVgE*#KXC{y1l);y1BZ#xw*T$yT-=F zy}iA;y1Bc&yu7=+zP-M{zre@H$ko=?%*)Ki#m2a~xVX5v(9qAt#>U9V$GEq+zP`P| z!otnY&b_|9$;!&m&(OHIx4^%@!^6b6xVXW=!qe2#$H>RV#>dLZ%F)r%x45{#z`w!5 z!PeH*%*@Nr(9pud!ML}#y}rK0!^FhH!`0Q+$H&IQ#Kh6k(!amI$H&OLyS&K9$il(G z%goHo%gfEp&Cbov*45S0($UJw$-=?G)6>+>&dt`<*2u@l)YH?^($Uh<(bd(|zreuI z&(Fuk#>B+Kx3{>zz`x7O%hJ)(&Cbow&(Oxj#naT($;rsn)YHq%%f`pY#m2?S$;r65 zxYN_q(b3V!$jHjd%FoZw!^6YH#l^wF!M?t}yu7@+y1LBF%>V!YA^8LW004ggEC2ui z09pV<000O7fPa4mgoTEOh>41ejE#D%k-;o$7*^yT5#=lKZx{QMLB00Rd6C$Jzuf(8>NoU>+*!y8;2 zVwnTcVZ?@QZdBxgrQ@0#4nwYKGY7#$igPknqzE!1!-rhBv}uTiWXO~uInLn%vf{~; zH-ictO0=laqeznu6(Hbd)1Xg71uct6p_D)#}!%P`Qe=nzig1rc9MEt%4S< zTDNWgcf4&2mo8eicF(dsD*&%vylvkC7I1cM7dmv#(AlwLF&!_6As?or3gvs;su^YNt{75d{=cxB&zZw3=t{HZ` z3$MKN)@$#&@!Fd&yLR*&Z@=><>o2_i7HlxU2PaH0!V3TEFu@Ba+_1zHS8VbB#TaLd zu?{-G5Qh$Sz~C{+F!T$u75&1%amoFn90$tQ-Sx7=rk9mm>m>&^Gzgcol3;fN=$cpXkSA+`u(LoT)oD%6pH z6CyyKIpdF4j(Hth)FDFUqI*7e<&dl3xa4(IPI>F3PcFI>p*tS>TiOrsjt$i_CdF#vgh;}+$p#Q@l`j(EhP9O-DsJ;HI1dc30` z<4DLt8uE{HG-Mp@n1nt$@{xTk0wgC1$uT(6l9bG(CMPLLNOm&+05k|d1&Uw zuyU2j#6uBi2}@oU0T0;B<|;{fN^N@co8SzmILArOa+>p;-y8rs*U8RyhI0V$R3{$d zInR2|GoJXwCOq|d&wcK*p7@k!Kh^0^dfM}!`Xnel5sFVe2w?y|ut5u+;DZ6QU;q#G z!9)Y92aH}co=<4OMuqT%0X)G5La@OVBr1fKKH&-j=%@`;TG5Y66s9pPsYzRKg@=9= zo+Q<%9%^dQ0oXtfD%FEhm+DZY>fs7Z9ja8L%2Xdvb*V@HwW?B~dQ_!$^{QZn>Q$|( zRj``%tY}TETGz@}Jpe$dZv|^y^@rG2k@*9%|vx>vsR&F_8p zd)@c0cfR|@uYmm<-~t=?zz9yTf)~u-20Qq{5RS0_fnVTWBJ6<$EO-G6K)?bE?*RlL zpm2MM0AdQWU=J340f<51-VJM5#qB*Y2uSSV6Qh^|9ANQhdG^P$dw_Vb_j{AWA6`Oj)bw4v>sXFB)!0*Tgh zqT{S)NK<;vlg>1s<7{b7d-~Irjx?w*J?c`M`qZdSwW?Rm>Q=k@)tdGI1U#St4>aHd ze1HHSnxFv)=o$hV$n~y2;DIK{S_8fIzy})t&;SiIVAdLFLaveh0SG+1*iDc&uGLIy zUI&{GxSqAIo6rDTKfBhz=7R@lt!rfq8`;!$_N|fKYdiR>z`ldI$ zY0d0>^LyF*<~O~YJ#B;Y`_{|$H@y3R>^@jr;rymJ#Wk>TjaS^`7`OPwIi7Kni`?TN zCwaw9zVeQTT;v=-xy)xi^O(c@O!~r%pZUOs?%KSTA#WDyiRkniyZ@6r#jT1F7gL--~edvLkFy$ z0S9!z0uI1H1~SlrsQ29gWAB3nI*@_?2kiX-hIf14q3(bKSe@%|w}9W%KKMS=UGRFx zyVW}Yb-v?$?tNH0;vbOr1DM|Q892b*Pj7+LW8eT5U_I+w4|}-7J@u;3KRVYmWh@PmI42mm|Zp*-FI literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonWriteGreen.gif b/modules/planet/skins/xe_planet/images/buttonWriteGreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79dc54d12edab423e9fc46250f8935db1b4ec9f GIT binary patch literal 3728 zcmV;B4sY>CNk%w1VOju00Oo%HsLiFX(5%4IzM{;atk0>w)V-d}o43-mqs^eM&#Ji5 zwy@8xpUa%7&8D!>uA$7GtIw&m(XzMEwW-dhsm`Xg(X*w^qPfzyveB@h%$%gmp`^^9 zrp=?E%bc{)vbNE*ve2-r�}>s;JJTp39r6&ZoT7yTH`Gpv#@J(XqbMy}Hu4yVJR+ z&7-Q%r@hm>vCyx&(zm+PxTMUYug|Qd%%Zr`wxP_Pz0b} zpUj)7&!@Q3x2n&my3@C}(X_eJwzAQ$w$Zb;(Y2<`qPx<$sLrOK%bTLiox0Mwpv;@2 z%%7{zr?b(rveB`?)W56Fr?}F!rOl(N&Zx1`uDH>)x6!tw&7h~wq_xqsve2=y(XXk` zrn1nkrOczb)3>6`o~O;EzSF#-%%7vopuE$%pUa!B&#R!!o&W#;A^8LW004ggEC2ui z09pV<000O7fPa5SCxk~wO-*Ho0!L*{h=+%TO#+FEhJ=a&oQo%lkdBq1nMa%gpOYt^ zmx-T{sfvYyf1D?`r>MB7wzjuEC%(YGx52}~!L~%W$-KP9%cse}#m~sRe?Cq`+&(@; z-reBbDmdB(jVr zuUL*`MROT4oUf4a1v(Pw)}w3xa$Sb&<=U4|_uhOulIqaGe_4T^JNfnCv5y~rz506S z@MXkUK}80Y6*24=;D0etK}CTACfMJ8(CuenfCT~=pnnHW2jGPg>PMh{`&}5|h5tQ> zp@aHea6t?vo|xi^RH(S3i6~xB$BQY>2xE*irii17Hp2Mgjx^#3$AI*H{4RuHKGnn~K=C7Bn5i6)s& zvRP!DWj>*&0%zE8h6H=AA%P8gKCuR&PXMaG6ND0a2BT~|!A6*X>iKA&l3L1Wn~{cD z=%aetP^kiIL>j87Yb1&&sf<1x+|}?+Dfae zyy}?+tjlIm#jDRsP{k9|O1tc{&pwgG0lQY=t+Ua7@T#-c`YOQz%j(JPxQRwP?y}GZ zOKlcei2LdXZ+xIHz8_Su@4r~=o3FkB|7-BUA7C+X!VEK9aKR1l3$eiyOYHCezZGPx z@x~l??6JoYWQ>KzBY$i%$R(fraRe;4?DESmR{-pkQzzQ;O4n3eC0p~!$3?>kLImn<0)i6N@ssVx;L?8hXn86Sl5QGFgAORiVfE>{9 zhBdUI0S$=51>_KiKg6L8ffz&@E3~F^NPR;sT~|zoO*~dH5F#vYFV*nfw$v*lKl7>_y9T$*C9sqLx0ZjPfAp^O{JMw@A z0iXd5n6QIXs*(w)d?hSl8Os0^a+Q#5r7KhEN>!?|mpdqA09yGOR=nb!;eHmylbZdQ{9-^?aDwYko7ev_Kt+~zyY znay~9Q=H!1raAY?&wl#zp8yT0KnH40AsAE$*F2~Q`jCJ=2w|ZPb*Ko0kN|}C0iq72 zs6j8v&x0~_q7&ujLLVB@h9dN#8%1dXDr(Y=a&)A9AixhqKvSB|lmIo&sZB*N)1C6P zra$PZPDOyzpZ>I`NEPZ#dn!|;5_PFT&1qDRN`R_b)v7=LxN21)a8<5mb*oza>Q}2e zR;`*ftXlQzSGAf4;xt}ELO6PovdLui&)IU6|#nv>|`ISSj`r;w2GaAYRwRWG=zY) zA#i~breN6+Oo6pi5Q7<%V20ajUxKSv!0^rQ1QyKT07qd0QF!qGgBOh72se1aC9v>?1H9q<0$9TN zo$!J|jA00u7{D7&aE3=b0SZt+4lRxX1s3e$7uR^kEynSTZ!BXSw^$A}X0VNYd}9df z7{@f;agbXq$e@(9kX zWiY4N#cQU(lqnEp3N*mUO8|hG?@Z{k~X*TTm2u4`TG zZQHup-~KkQy>07mhnw5mW_G%(t!{9qyWHR&H@VNcf!5Rfr{7L;`nZX#VgM7j%&Q*9QZiML+){oUwq>r z*EqgCo^g|hT;wRPco2eM0W?@32wI@I7B~nv~X-t>&ufetjFff?++ z^12T`?|Bb|;q!h5#xFkcecyZC_g({(pS)~|jIY@iM3H@^GdZ~XXcpbg%4zy6&+{PmmP`@463=VyOypntq)e#3Wu z2B?2+pa&bE2M!p4{^x)bD1j8Xeij&k2!MeR2!R!Nfe(m*A?SZ3=zs`7fgmV>B1nP{ z2!Ss6f-o3^GB|@V*n%{8gEtuef;gxL1JHwEFaSIVghJ?o1CR$l$b)*22R#Ucc>sX} z@PkVjg--~DVUUDQScE;O2ThCPUeYgmM7$cAqC zhG*!8aVUpzSch_Ghgg`0YzT*HsDyWD2ZD%(c8~{xc!-4fhJ$E`i&%(-n1_!@h>nh1H2fFH{bM7>wW;i-L&%jo=82-diDh>r2tj`1ju?#PbosE+yw zkLcKr^vI9?n2++Pjwry6D3Ffqn2--pkO--d`&f_#nUE2=koicE38|13>5m6Vj|O>= z@8|~`d65p;jwle3CV7!38IcAFk}D~ZDk+jH`I0axlP!soGFg%m$&wM-0R_pE8PJg# z5R@qJlRxPP9nb+8&;cyTj!0RM8Gr&jIh0Ttlt}3ZPnnQH36U&Glu5~wQCXDi*p*fp zlw5h0PpOninU+VHlt_7&N7T#F?DN zS(=R5n2brB&uN++pq#|{o5TqQtx26-0G-yEoQesZ(21H1(4C422F7WezxfB$X#fT= zoFs6b)JXy)P?`onob$;C@@bs!NuB(eocpPq?g^gqS(@*epZTer1qz-}KnwOMpAL$j u5DK9W3Y`TypYmw{6B?lxnx9Zmp%F@)^_ig literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonWriteOrange.gif b/modules/planet/skins/xe_planet/images/buttonWriteOrange.gif new file mode 100644 index 0000000000000000000000000000000000000000..483f18982082cd27c1d23b831d172f10be48dca9 GIT binary patch literal 3539 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 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/buttonX.gif b/modules/planet/skins/xe_planet/images/buttonX.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ab1d2bc7f33ce0ba2318a074abb990034683ae2 GIT binary patch literal 78 zcmZ?wbhEHbvK=CIFBLf37gAM}_faDpNvK=CIFBLf37gAM}_faDpN6l3}_72o#G6M4?~ eVb$)Lo!m)N#ETZII>jZg3f}H@e3Aw$gEatlI2^M8 literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/iconCheckGreen.gif b/modules/planet/skins/xe_planet/images/iconCheckGreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..e51b026264d987452815e7f26e76d22cebbcd68c GIT binary patch literal 56 zcmZ?wbhEHbk literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/iconExternalLink.gif b/modules/planet/skins/xe_planet/images/iconExternalLink.gif new file mode 100644 index 0000000000000000000000000000000000000000..86425cffcfd995dbf50b7023840461d3e26b148e GIT binary patch literal 100 zcmZ?wbhEHb%MwMCFm-izXJ_V~&K+G@#i9%Uxik0v&yRENoC}BuD@K6S zLK-IFqCSxtNgET5B35!9k`!MPrt?MVrLkb%F;`YfjuSrcs|OzT-{BMCQQ56%7YsYv z5C=d)292~CyzLC|K_gyl(!etGWb|A^|tZWyQU;rqUY+h)r>*JhweEK0W&C zXLxKMiyz#n@*1#19PDW_izAT)h=ObYZgLXMoCC@Ldy5Wu8al7+5P@-kuKV=gRtP{% zl7Nw9H;K$#0AdJM7{LrlV9s#JTe}5fwxJ~gfVpIexn*Ep0(fcm&?1$B7JzLa6+&59 zv}X`lS^8@rFV0=hd!BIF1rV&=1!tR1f|4YI>RkXTngrd0Zy@`G2gX7pj&v<;cBvU? z9Cxc)WUzSxpVfDwFImTm;sD;g)`E|3JjKI%s-4q3SaB48+zR8)%~e>kp}cQdA26Bq z_G&BC5H?}Rz&UozX6tADgs>+3^qcq=4x7g%c4Gs%B*%GBT zx@~CjP`;#^y!zS~X6~2UABRgBvQpmOSIv@ TlwiX<&r;s7J!Eg>V6X-NKzu6m literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/icon_me2day.png b/modules/planet/skins/xe_planet/images/icon_me2day.png new file mode 100644 index 0000000000000000000000000000000000000000..eb46246d62f259f06941063f68d1d36664eaa942 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^{2!jb(aDg;V5rD1 z;Lvkpl6n=_;WTXypfc`-DICTevC1H}^1hzNH%ukH3JgF+Q=VuwFfcRJKMv>rED_QK PbTosftDnm{r-UW|F6LKM literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/lineVccc.gif b/modules/planet/skins/xe_planet/images/lineVccc.gif new file mode 100644 index 0000000000000000000000000000000000000000..55ef889a7fd33ab903a82f7ee9a350dc63b71daa GIT binary patch literal 44 tcmZ?wbhEHbWMtrGXkcJCbLI>K1B2pE79h#MpaUX6G7L=2E&Txu)&Rqv2a*5) literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/paginationNext.gif b/modules/planet/skins/xe_planet/images/paginationNext.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b6f4c8bdf08b9d8d101394cc0af9f0fd397c296 GIT binary patch literal 54 zcmZ?wbhEHbWM*Jxn8?hKm6er~larmD{r~@e#h)yU3=GT+It)Mnl4oFIzoOP~s4<*@ G!5RRO84a@l literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/paginationNextEnd.gif b/modules/planet/skins/xe_planet/images/paginationNextEnd.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c0c6bd143ab4b6d917477a06c4200ccbf4ef5e8 GIT binary patch literal 60 zcmZ?wbhEHbWM^Pyn8?hKm6er~larmD{r~@e#h)yU3=GT+It)Mnl4oGzy^^QQxy|qp M6N6-jA0vY`0Ol$Vwg3PC literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/paginationPrev.gif b/modules/planet/skins/xe_planet/images/paginationPrev.gif new file mode 100644 index 0000000000000000000000000000000000000000..243b5834f0f681b7037dad79a1200946cedbcd37 GIT binary patch literal 54 zcmZ?wbhEHbWM*Jxn8?hKm6er~larmD{r~@e#h)yU3=GT+It)Mnl4oFIzhk1<-4M>e GU=09`=?yXf literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/paginationPrevEnd.gif b/modules/planet/skins/xe_planet/images/paginationPrevEnd.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfef2f343dc1857688f043c241befb54a196f535 GIT binary patch literal 61 zcmZ?wbhEHbWM^Pyn8?hKm6er~larmD{r~@e#h)yU3=GT+It)Mnl4oGzyOSc^&a7~R N>mx(3zYr^fH30Wk4#F8QU9N{Iv_ia?w}SrIsFYvxDoQ-8`(4hEpcLMc!x!?JbQ zw#m8)+pz?glY&ZAZC2V!vP2b?5imQL=M8KMu3ryv{=5&<{t;k8C@jZ7K#8c-M+59) z2|Jg0oL0ABSapnc%wc9Ahn7HB1MJ;Mxn{069v(*Z>jK;591iZ*!8~EAcNr0X{10q+ z1lJ&+I-Od<{LmV}rtaMogv80@B4p|lB!?5cWH!&1a8%h4pmg^lGpXY6zKF0dhQ8>8 zD~lE7(Q#5spj&`aeG>V00000NkvXXu0mjf DTXo@B literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/rssOff.png b/modules/planet/skins/xe_planet/images/rssOff.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc2a9d0534b727e3cd2a0f14614b046917c5f88 GIT binary patch literal 657 zcmV;C0&e|@P)N~HeuZe!5B~SN-+BDc|D5l$^7;Hb5t#rDFav&qm&W!H z?DsscS11&=@V^L-fHjb_`J_{+ligVkttYA8wc6~nIcFvQszV|)#Y`o`xqK^mwA&-m}_M{SUv zMzWGT?e%)MYPDLkTCKj}d|8tpQE9|R;4FawZ1)H(2Lb^Jhr=rII*NXQ++Z-+O8gA} zPb>yDNpGvMSZsm>>2x~BaNLFDcqkOQ9gRlSCbV`3lJoe!ZOFH@DuMHnNaU(kYBU<3 z`~Chdg1%$FM)H|NA|b6-OPI+Tm6yqT2Hx6+U~ueYR98y#P8F$z(F>az?T@76~`F>l4~1 z@)Zv;pMv1M@#}3I0QN3Ht00000NkvXXu0mjfaV0C$ literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/rssOn.png b/modules/planet/skins/xe_planet/images/rssOn.png new file mode 100644 index 0000000000000000000000000000000000000000..f71e2189fe853e71bd8d3d8ed7e279190dee6570 GIT binary patch literal 731 zcmV<10wn#3P)%fL4TvpdltEnz(U8f^p-%3lrlHnusg^HoDNba$~x4 zLEKN}-fD&olZ+K%?{WP3GP^=ggh=o|r#dF$SQFd?!sL zPvTB)g6wr)Pv^3ofpuKpB1cJzL?x$kS6j1Jc#1d6KGwrlEfKG)F|wWUMI-)XjgA9_E~V2$L7rkk>tUTpLX@}*SwG~61s~W@fHY0;2u|;X zyBN~rHi^T|#`|WQ*x&(N1*h4vF?pej=9KE(Kv5kIyq4HVE(sdjF3F?Y|J zn#%}x2~_na)8b8bv`nIQZmAZQ)x`C4BYvo7X1@wgDP+JGW_*l=IV>)m(=#&={wk<& zO_ZiF;%6;M7Jl8swrw!kCAV$8VhpUok)O?}oc6HlM`QuF9bAg4)>%QCa~#)(1U337ts2GHt_Yv(wH@ zLwEyFb)gP(s#ELIsZ4wR(SyGHvmV&W1=V!GlnQ^HyfP@bts>zQqA~m_eU@-Oi!lOs^_vaGIZP>uWfvVzd*Vc1g%c9e!ak?j4a z*fB7FRtJB?lcKzAx2&pxEUyGgyvTRQ-u_p-=3M}d)| N002ovPDHLkV1f_!Q5OIJ literal 0 HcmV?d00001 diff --git a/modules/planet/skins/xe_planet/images/tabSearch.gif b/modules/planet/skins/xe_planet/images/tabSearch.gif new file mode 100644 index 0000000000000000000000000000000000000000..c32937a1d3f12def92d5cf086d318422c31afb93 GIT binary patch literal 605 zcmV-j0;2s#Nk%w1VORo20K^&q)Y#hT>+GzwxvjLh*4f-zX>@soj>5>xvADgevbSS# zd#JFsQethq!p2cyY`w$B*4o^Lk(hgjkX2=H>g?@!g^j4NwY$Q`P+)7PueJaG{{R30 z000000000000000A^8LW000^QEC2ui09XP>000I5pr!$lf}Lopu59bRa4gSsZQppV z?|kq7z@TtQEE41ejE#0PICJXU$+M?V zlLRybSn#u`(W6L{DqYI7sZ)yQ~u3*E89ZR;X*^yt*s$I*r zt=qS7(BTJr4xw7TUm@{kM z%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~?&AYen-@t + + + + +
+
+ + +
+
+ + +
diff --git a/modules/planet/skins/xe_planet/js/jindo2.js b/modules/planet/skins/xe_planet/js/jindo2.js new file mode 100644 index 000000000..94e13a513 --- /dev/null +++ b/modules/planet/skins/xe_planet/js/jindo2.js @@ -0,0 +1,4934 @@ +/** + * Jindo2 Framework + * @version 1.0.5 + */ +/** + * Core object + * + */ +if (typeof window != "undefined" && typeof window.nhn == "undefined") { + window.nhn = new Object; +} + +/** + * 지정된 id 를 가지는 객체를 반환한다. + * argument를 복수개로 지정하면 배열로 객체를 반환하며, + * 아이디에 해당하는 객체가 존재하지 않으면 null 을 반환한다. + * 또한 "" 과 같은 형식의 문자열을 입력하면 tagName을 가지는 객체를 생성한다. + * @id core.$ + * @param {String} 객체의 아이디(복수개 가능) + * @return element + */ +function $(sID/*, id1, id2*/) { + var ret = new Array; + var el = null; + var reg = /^<([a-z]+|h[1-5])>$/i; + + for(var i=0; i < arguments.length; i++) { + el = arguments[i]; + if (typeof el == "string") { + if (reg.test(el)) { + el = document.createElement(RegExp.$1); + } else { + el = document.getElementById(el); + } + } + if (el) ret[ret.length] = el; + } + return ret.length?((arguments.length>1)?ret:ret[0]):null; +} + +/** + * 클래스 타입을 정의한다. 생성자는 $init 으로 정의한다. + * @id core.$Class + * @param {object} 클래스 정의 object + * @return {class} 클래스 타입 + */ + function $Class(oDef) { + function typeClass() { + var t = this; + var a = []; + + while(typeof t.$super != "undefined") { + t.$super.$this = this; + if (typeof t.$super.$init == "function") a[a.length] = t; + t = t.$super; + } + + for(var i=a.length-1; i > -1; i--) a[i].$super.$init.apply(a[i].$super, arguments); + + if (typeof this.$init == "function") this.$init.apply(this,arguments); + } + + if (typeof oDef.$static != "undefined") { + var i=0, x; + for(x in oDef) x=="$static"||i++; + for(x in oDef.$static) typeClass[x] = oDef.$static[x]; + + if (!i) return oDef.$static; + delete oDef.$static; + } + + typeClass.prototype = oDef; + typeClass.prototype.constructor = typeClass; + typeClass.extend = $Class.extend; + + return typeClass; + } + +/** + * 클래스를 상속한다. + * 상속된 클래스에서 this.$super.method 로 상위 메소드에 접근할 수도 있으나, + * this.$super.$super.method 와 같이 한 단계 이상의 부모 클래스에는 접근할 수 없다. + * @id core.$Class.extend + * @import core.$Class + * @param {class} 수퍼 클래스 객체 + * @return {class} 확장된 클래스 타입 + */ + $Class.extend = function(superClass) { + this.prototype.$super = new Object; + + var superFunc = function(m, func) { + return function() { + var r; + var f = this.$this[m]; + var t = this.$this; + t[m] = func; + r = t[m].apply(t, arguments); + t[m] = f; + + return r; + }; + }; + + for(var x in superClass.prototype) { + if (typeof this.prototype[x] == "undefined" && x !="$init") this.prototype[x] = superClass.prototype[x]; + if (typeof superClass.prototype[x] == "function") { + this.prototype.$super[x] = superFunc(x, superClass.prototype[x]); + } else { + this.prototype.$super[x] = superClass.prototype[x]; + } + } + + // inherit static methods of parent + for(var x in superClass) { + if (x == "prototype") continue; + this[x] = superClass[x]; + } + + return this; +}; +///// +/** + * Agent 객체를 반환한다. Agent 객체는 브라우저와 OS에 대한 정보를 알 수 있도록 한다. + * @id core.$Agent + */ +function $Agent() { + var cl = arguments.callee; + var cached = cl._cached; + + if (cl._cached) return cl._cached; + if (!(this instanceof cl)) return new cl; + if (typeof cl._cached == "undefined") cl._cached = this; +} + +/** + * 웹브라우저에 대한 정보 객체를 반환한다. + * @id core.$Agent.navigator + * @return {TypeNavigatorInfo} 웹브라우저 정보 객체 + */ +$Agent.prototype.navigator = function() { + var info = new Object; + var ver = -1; + var u = navigator.userAgent; + var v = navigator.vendor || ""; + + function f(s,h){ return ((h||"").indexOf(s) > -1) }; + + info.opera = (typeof window.opera != "undefined") || f("Opera",u); + info.ie = !info.opera && f("MSIE",u); + info.chrome = f("Chrome",u); + info.safari = !info.chrome && f("Apple",v); + info.mozilla = f("Gecko",u) && !info.safari && !info.chrome; + info.firefox = f("Firefox",u); + info.camino = f("Camino",v); + info.netscape = f("Netscape",u); + info.omniweb = f("OmniWeb",u); + info.icab = f("iCab",v); + info.konqueror = f("KDE",v); + + try { + if (info.ie) { + ver = u.match(/(?:MSIE) ([0-9.]+)/)[1]; + } else if (info.firefox||info.opera||info.omniweb) { + ver = u.match(/(?:Firefox|Opera|OmniWeb)\/([0-9.]+)/)[1]; + } else if (info.mozilla) { + ver = u.match(/rv:([0-9.]+)/)[1]; + } else if (info.safari) { + ver = parseFloat(u.match(/Safari\/([0-9.]+)/)[1]); + if (ver == 100) { + ver = 1.1; + } else { + ver = [1.0,1.2,-1,1.3,2.0,3.0][Math.floor(ver/100)]; + } + } else if (info.icab) { + ver = u.match(/iCab[ \/]([0-9.]+)/)[1]; + } else if (info.chrome) { + ver = u.match(/Chrome[ \/]([0-9.]+)/)[1]; + } + + info.version = parseFloat(ver); + if (isNaN(info.version)) info.version = -1; + } catch(e) { + info.version = -1; + } + + $Agent.prototype.navigator = function() { + return info; + }; + + return info; +}; + +/** + * OS에 대한 정보객체를 반환한다. + * @id core.$Agent.os + * @return {TypeOSInfo} OS 정보 객체 + */ +$Agent.prototype.os = function() { + var info = new Object; + var u = navigator.userAgent; + var p = navigator.platform; + var f = function(s,h){ return (h.indexOf(s) > -1) }; + + info.win = f("Win",p); + info.mac = f("Mac",p); + info.linux = f("Linux",p); + info.win2000 = info.win && (f("NT 5.0",p) || f("2000",p)); + info.winxp = info.win && (f("NT 5.1",p) || f("Win32",p)); + info.xpsp2 = info.winxp && (f("SV1",u) || f("MSIE 7",u)); + info.vista = f("NT 6.0",p); + + $Agent.prototype.os = function() { + return info; + }; + + return info; +}; + +/** + * Flash에 대한 정보객체를 반환한다. + * @id core.$Agent.flash + * @return {TypeFlashInfo} Flash 정보 객체 + */ +$Agent.prototype.flash = function() { + var info = new Object; + var p = navigator.plugins; + var m = navigator.mimeTypes; + var f = null; + + info.installed = false; + info.version = -1; + + if (typeof p != "undefined" && p.length) { + f = p["Shockwave Flash"]; + if (f) { + info.installed = true; + if (f.description) { + info.version = parseFloat(f.description.match(/[0-9.]+/)[0]); + } + } + + if (p["Shockwave Flash 2.0"]) { + info.installed = true; + info.version = 2; + } + } else if (typeof m != "undefined" && m.length) { + f = m["application/x-shockwave-flash"]; + info.installed = (f && f.enabledPlugin); + } else { + for(var i=9; i > 1; i--) { + try { + f = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i); + + info.installed = true; + info.version = i; + break; + } catch(e) {} + } + } + + $Agent.prototype.info = function() { + return info; + }; + + return info; +}; + +/** + * SilverLight에 대한 정보객체를 반환한다. + * @id core.$Agent.silverlight + */ +$Agent.prototype.silverlight = function() { + var info = new Object; + var p = navigator.plugins; + var s = null; + + info.installed = false; + info.version = -1; + + if (typeof p != "undefined" && p.length) { + s = p["Silverlight Plug-In"]; + if (s) { + info.installed = true; + } + } else { + try { + s = new ActiveXObject("AgControl.AgControl"); + info.installed = true; + } catch(e) {} + } + + $Agent.prototype.silverlight = function() { + return info; + }; + + return info; +}; +/** + * 주어진 원소를 가진 배열 객체를 만든다. + * @id core.$A + * @import core.$A.toArray + * @param {array} 배열 혹은 배열에 준하는 컬렉션 타입 + * @return {$A} + */ +function $A(array) { + var cl = arguments.callee; + + if (typeof array == "undefined") array = []; + if (array instanceof cl) return array; + if (!(this instanceof cl)) return new cl(array); + + this._array = []; + for(var i=0; i < array.length; i++) { + this._array[this._array.length] = array[i]; + } +}; + +$A.prototype.toString = function() { + return this._array.toString(); +}; + +/** + * 배열의 크기를 반환한다 + * @id core.$A.length + * @return Number 배열의 크기 + * @ + */ +$A.prototype.length = function(len, elem) { + if (typeof len == "number") { + var l = this._array.length; + this._array.length = len; + + if (typeof elem != "undefined") { + for(var i=l; i < len; i++) { + this._array[i] = elem; + } + } + + return this; + } else { + return this._array.length; + } +}; + +/** + * 주어진 원소가 존재하는지 검사한다. 존재하면 true를, 그렇지 않으면 false를 반환한다 + * @id core.$A.has + * @param {void} 검색할 값 + * @return Boolean + * @import core.$A.indexOf + */ +$A.prototype.has = function(any) { + return (this.indexOf(any) > -1); +}; + +/** + * 주어진 원소가 배열에 몇 번째 요소로서 존재하는지 반환한다. + * 배열의 인덱스는 0부터 시작한다. 해당 원소가 존재하지 않으면 -1 을 반환한다. + * @id core.$A.indexOf + * @param {void} 검색할 값 + * @return {Number} 검색결과 인덱스 번호 + */ +$A.prototype.indexOf = function(any) { + if (typeof this._array.indexOf != 'undefined') return this._array.indexOf(any); + + for(var i=0; i < this._array.length; i++) { + if (this._array[i] == any) return i; + } + return -1; +}; + +/* + * JavaScript 배열 객체를 반환한다 + * @id core.$A.$value + * @return {Array} JavaScript 배열 객체 + */ +$A.prototype.$value = function() { + return this._array; +}; + +/** + * 배열 객체에 엘리먼트를 추가한다. + * @id core.$A.push + * @param {void} 추가할 엘리먼트(복수개 가능) + * @return {Number} 엘리먼트를 추가한 후의 배열 객체 크기 + */ +$A.prototype.push = function(element1/*, ...*/) { + return this._array.push.apply(this._array, $A(arguments).$value()); +}; + +/** + * 배열의 마지막 엘리먼트를 제거하고 제거된 엘리먼트를 반환한다. + * @id core.$A.pop + * @return {void} 제거된 엘리먼트 + */ +$A.prototype.pop = function() { + return this._array.pop(); +}; + +/** + * 배열의 첫 엘리먼트를 제거하고 제거된 엘리먼트를 반환한다. + * @id core.$A.shift + * @return {void} 제거된 엘리먼트 + */ +$A.prototype.shift = function() { + return this._array.shift(); +}; + +/** + * 주어진 한 개 이상의 엘리먼트를 배열 앞부분에 삽입하고, 해당 배열의 바뀐 크기를 반환한다. + * @id core.$A.unshift + * @param {void} 추가할 엘리먼트(복수개 가능) + * @return {Nmber} 엘리먼트를 추가한 후의 배열 객체 크기 + */ +$A.prototype.unshift = function(element1/*, ...*/) { + this._array.unshift.apply(this._array, $A(arguments).$value()); + + return this._array.length; +}; + +/** + * 주어진 콜백함수를 배열의 각 요소에 실행한다. + * @id core.$A.forEach + * @import core.$A[Break, Continue] + */ +$A.prototype.forEach = function(callback, thisObject) { + var arr = this._array; + var errBreak = this.constructor.Break; + var errContinue = this.constructor.Continue; + + function f(v,i,a) { + try { + callback.call(thisObject, v, i, a); + } catch(e) { + if (!(e instanceof errContinue)) throw e; + } + }; + + if (typeof this._array.forEach == "function") { + try { + this._array.forEach(f); + } catch(e) { + if (!(e instanceof errBreak)) throw e; + } + return this; + } + + for(var i=0; i < arr.length; i++) { + try { + f(arr[i], i, arr); + } catch(e) { + if (e instanceof errBreak) break; + throw e; + + } + } + + return this; +}; + +/** + * 주어진 함수를 현재 객체의 모든 엘리먼트에 적용하고 현재 객체를 반환한다. + * @id core.$A.map + */ +$A.prototype.map = function(callback, thisObject) { + var arr = this._array; + var errBreak = this.constructor.Break; + var errContinue = this.constructor.Continue; + + function f(v,i,a) { + try { + return callback.call(thisObject, v, i, a); + } catch(e) { + if (e instanceof errContinue) return v; + else throw e; + } + }; + + if (typeof this._array.map == "function") { + try { + this._array = this._array.map(f); + } catch(e) { + if(!(e instanceof errBreak)) throw e; + } + return this; + } + + for(var i=0; i < this._array.length; i++) { + try { + arr[i] = f(arr[i], i, arr); + } catch(e) { + if (e instanceof errBreak) break; + throw e; + } + } + + return this; +}; + +/** + * 주어진 콜백 함수를 만족시키는 요소만으로 만들어진 새로운 $A 배열을 반환한다. + * 콜백 함수는 Boolean 값을 반환해야 한다. + * @id core.$A.filter + * @import core.$A.forEach + */ +$A.prototype.filter = function(callback, thisObject) { + var ar = new Array; + + this.forEach(function(v,i,a) { + if (callback.call(thisObject, v, i, a) === true) { + ar[ar.length] = v; + } + }); + + return $A(ar); +}; + +/** + * 모든 배열의 원소가 주어진 콜백 함수를 만족시키는지를 검사한다. + * 콜백함수는 Boolean 값을 반환해야 한다. + * @id core.$A.every + * @import core.$A.forEach + */ +$A.prototype.every = function(callback, thisObject) { + if (typeof this._array.every != "undefined") return this._array.every(callback, thisObject); + + var result = true; + this.forEach(function(v, i, a) { + if (callback.call(thisObject, v, i, a) === false) { + result = false; + $A.Break(); + } + }); + return result; +}; + +/** + * 주어진 콜백 함수를 만족시키는 배열의 원소가 존재하는지를 검사한다. + * 모든 배열의 요소중에서 하나라도 콜백함수를 만족시키면 이 메소드는 true를 반환한다. + * 콜백함수는 Boolean 값을 반환해야 한다. + * @id core.$A.every + * @import core.$A.forEach + */ +$A.prototype.some = function(callback, thisObject) { + if (typeof this._array.some != "undefined") return this._array.some(callback, thisObject); + + var result = false; + this.forEach(function(v, i, a) { + if (callback.call(thisObject, v, i, a) === true) { + result = true; + $A.Break(); + } + }); + return result; +}; + +/** + * 주어진 값을 제외한 새로운 $A배열을 반환한다 + * @id core.$A.refuse + * @import core.$A.filter + */ +$A.prototype.refuse = function(value) { + var a = $A(arguments); + return this.filter(function(v,i) { return !a.has(v) }); +}; + +/** + * 주어진 시작 인덱스와 끝 인덱스까지의 배열 요소로 이루어진 새로운 $A 배열을 반환한다. + * @id core.$A.slice + */ +$A.prototype.slice = function(start, end) { + var a = this._array.slice.call(this._array, start, end); + return $A(a); +}; + +/** + * 특정 인덱스로부터 주어진 갯수만큼의 배열을 잘라서 반환한다. + * @id core.$A.splice + */ +$A.prototype.splice = function(index, howMany/*, element*/) { + var a = this._array.splice.apply(this._array, arguments); + + return $A(a); +}; + +/** + * 배열의 원소를 무작위적으로 섞는다. + * @id core.$A.shuffle + */ +$A.prototype.shuffle = function() { + this._array.sort(function(a,b){ return Math.random()>Math.random()?1:-1 }); + + return this; +}; + +/** + * 배열에서 중복되는 원소를 제거한다. + * @id core.$A.unique + */ +$A.prototype.unique = function() { + var a = this._array, b = [], l = a.length; + var i, j; + + // 중복되는 원소 제거 + for(i = 0; i < l; i++) { + for(j = 0; j < b.length; j++) { + if (a[i] == b[j]) break; + } + + if (j >= b.length) b[j] = a[i]; + } + + this._array = b; + + return this; +}; + +/** + * 배열 요소를 거꾸로 정렬한다. + * @id core.$A.reverse + */ +$A.prototype.reverse = function() { + this._array.reverse(); + + return this; +}; + +/** + * each, filter, map 메소드에서 반복구문을 중단한다. + * @id core.$A.Break + */ +$A.Break = function() { + if (!(this instanceof arguments.callee)) throw new arguments.callee; +}; + +/** + * each, filter, map 메소드에서 현재 인덱스의 반복구문을 건너뛴다. + * @id core.$A.Continue + */ +$A.Continue = function() { + if (!(this instanceof arguments.callee)) throw new arguments.callee; +}; +/** + * Ajax 객체를 반환한다. + * @id core.$Ajax + * @import core.$Ajax.option + */ +function $Ajax(url, option) { + var cl = arguments.callee; + if (!(this instanceof cl)) return new cl(url, option); + + function _getXHR() { + if (window.XMLHttpRequest) { + return new XMLHttpRequest(); + } else if (ActiveXObject) { + try { return new ActiveXObject('MSXML2.XMLHTTP'); } + catch(e) { return new ActiveXObject('Microsoft.XMLHTTP'); } + return null; + } + } + + var loc = location.toString(); + var domain = ''; + try { domain = loc.match(/^https?:\/\/([a-z0-9_\-\.]+)/i)[1]; } catch(e) {} + + this._url = url; + this._options = new Object; + this._headers = new Object; + this._options = { + type :"xhr", + method :"post", + proxy :"", + timeout:0, + onload :function(){}, + ontimeout:function(){}, + jsonp_charset : "utf-8" + }; + + this.option(option); + + var _opt = this._options; + + _opt.type = _opt.type.toLowerCase(); + _opt.method = _opt.method.toLowerCase(); + + if (typeof window.__jindo2_callback == "undefined") { + window.__jindo2_callback = new Array(); + } + + switch (_opt.type) { + case "get": + case "post": + _opt.method = _opt.type; + _opt.type = "xhr"; + case "xhr": + this._request = _getXHR(); + break; + case "flash": + this._request = new $Ajax.SWFRequest(); + break; + case "jsonp": + _opt.method = "get"; + this._request = new $Ajax.JSONPRequest(); + this._request.charset = _opt.jsonp_charset; + break; + case "iframe": + this._request = new $Ajax.FrameRequest(); + this._request._proxy = _opt.proxy; + break; + } +}; + +/** + * 주어진 데이터로 Ajax를 호출한다. + * @id core.$Ajax._onload + * @param {Function} Ajax 호출이 완료된 후 실행할 함수 + */ +$Ajax.prototype._onload = function() { + if (this._request.readyState == 4) { + this._options.onload($Ajax.Response(this._request)); + } +}; + +/** + * Ajax를 호출한다. + * @id core.$Ajax.request + * @param {Object} oData 요청시 보낼 데이터 + * @param {Function} onComplete 요청이 완료되었을 때 실행할 함수 + */ +$Ajax.prototype.request = function(oData) { + var t = this; + var req = this._request; + var opt = this._options; + var data, v,a = [], data = ""; + if (typeof oData == "undefined" || !oData) { + data = null; + } else { + for(var k in oData) { + v = oData[k]; + if (typeof v == "function") v = v(); + a[a.length] = k+"="+encodeURIComponent(v); + } + data = a.join("&"); + } + + req.open(opt.method.toUpperCase(), this._url, true); + req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); +// req.setRequestHeader("charset", "utf-8"); + for(var x in this._headers) { + if (typeof this._headers[x] == "function") continue; + req.setRequestHeader(x, String(this._headers[x])); + } + + if (typeof req.onload != "undefined") { + req.onload = function(rq){ t._onload(rq) }; + } else { + req.onreadystatechange = function(rq){ t._onload(rq) }; + } + + req.send(data); + + return this; +}; + +/** + * @id core.$Ajax.abort + */ +$Ajax.prototype.abort = function() { + this._request.abort(); + + return this; +}; + +/** + * 옵션을 가져오거나 설정한다. + * 첫번째 전달값의 타입이 Object 이면 값을 설정하고 문자열이면 해당하는 옵션값을 반환한다. + * @id core.$Ajax.option + * @param {String} name 가지고 오거나 설정할 옵션이름 + * @param {void} value 값을 설정할 옵션이름 + * @return {void} 설정된 옵션값 혹은 $Ajax 객체 + */ +$Ajax.prototype.option = function(name, value) { + if (typeof name == "undefined") return ""; + if (typeof name == "string") { + if (typeof value == "undefined") return this._options[name]; + this._options[name] = value; + return this; + } + + try { for(var x in name) this._options[x] = name[x] } catch(e) {}; + + return this; +}; + +/** + * 헤더를 가져오거나 설정한다. + * 첫번째 전달값의 타입이 Object 이면 값을 설정하고 문자열이면 해당하는 헤더값을 반환한다. + * @id core.$Ajax.header + * @param {String} name 가지고 오거나 설정할 헤더 이름 + * @param {void} value 값을 설정할 헤더 값 + * @return {void} 설정된 헤더값 혹은 $Ajax 객체 + */ +$Ajax.prototype.header = function(name, value) { + if (typeof name == "undefined") return ""; + if (typeof name == "string") { + if (typeof value == "undefined") return this._headers[name]; + this._headers[name] = value; + return this; + } + + try { for(var x in name) this._headers[x] = name[x] } catch(e) {}; + + return this; +}; + +/** + * Ajax 응답 객체 + * @id core.$Ajax.Response + * @param {Object} req 요청 객체 + */ +$Ajax.Response = function(req) { + if (this === $Ajax) return new $Ajax.Response(req); + this._response = req; +}; + +/** + * XML 객체를 반환한다. + * @id core.$Ajax.Response.xml + */ +$Ajax.Response.prototype.xml = function() { + return this._response.responseXML; +}; + +$Ajax.Response.prototype.text = function() { + return this._response.responseText; +}; + +/** + * Returns json object + * @id core.$Ajax.Response.json + */ +$Ajax.Response.prototype.json = function() { + if (this._response.responseJSON) { + return this._response.responseJSON; + } else if (this._response.responseText) { + try { + if (typeof $JSON != "undefined") { + return $JSON(this._response.responseText); + } else { + return eval("("+this._response.responseText+")"); + } + } catch(e) { + return {}; + } + } + + return {}; +}; + +/** + * 응답헤더를 가져온다. 인자를 전달하지 않으면 모든 헤더를 반환한다. + * @id core.$Ajax.Response.header + * @param {String} 가져올 응답헤더의 이름 + */ +$Ajax.Response.prototype.header = function(name) { + if (typeof name == "string") return this._response.getResponseHeader(name); + return this._response.getAllResponseHeaders(); +}; + +/** + * @id core.$Ajax.RequestBase + */ +$Ajax.RequestBase = $Class({ + _headers : {}, + _respHeaders : {}, + _respHeaderString : "", + responseXML : null, + responseJSON : null, + responseText : "", + $init : function(){}, + onload : function(){}, + abort : function(){}, + open : function(){}, + send : function(){}, + setRequestHeader : function(sName, sValue) { + this._headers[sName] = sValue; + }, + getResponseHeader : function(sName) { + return this._respHeaders[sName] || ""; + }, + getAllResponseHeaders : function() { + return this._respHeaderString; + }, + _getCallbackInfo : function() { + var id = ""; + + do { + id = "$"+Math.floor(Math.random()*10000); + } while(window.__jindo2_callback[id]); + + return {id:id,name:"window.__jindo2_callback."+id}; + } +}); + +/** + * @id core.$Ajax.JSONPRequest + */ +$Ajax.JSONPRequest = $Class({ + charset : "utf-8", + _script : null, + _callback : function(data) { + var self = this; + + this.readyState = 4; + this.responseJSON = data; + this.onload(this); + + setTimeout(function(){ self.abort() }, 10); + }, + abort : function() { + if (this._script) { + try { this._script.parentNode.removeChild(this._script) }catch(e){}; + } + }, + open : function(method, url) { + this.responseJSON = null; + + this._url = url; + }, + send : function(data) { + var t = this; + var info = this._getCallbackInfo(); + var head = document.getElementsByTagName("head")[0]; + + this._script = $(" + + +
+

Login

+

{$lang->about_planet_login}

+ +
+
+
+ {$lang->cmd_login} +
+ + + +
+
+
+ + diff --git a/modules/planet/skins/xe_planet/main.html b/modules/planet/skins/xe_planet/main.html new file mode 100644 index 000000000..63490a3ee --- /dev/null +++ b/modules/planet/skins/xe_planet/main.html @@ -0,0 +1,34 @@ + + + + +
+
+

+ {zdate($date,'Y')}{$lang->unit_year} + {zdate($date,'m')}{$lang->unit_month} + {zdate($date,'d')}{$lang->unit_day} + ({zdate($date,'l')}) + + +

+
+ + + + + +
+ + diff --git a/modules/planet/skins/xe_planet/memo_list.html b/modules/planet/skins/xe_planet/memo_list.html new file mode 100644 index 000000000..2f65fd51d --- /dev/null +++ b/modules/planet/skins/xe_planet/memo_list.html @@ -0,0 +1,47 @@ +

+ +{@$memo=current($memo_list)} + [{$memo->nick_name}] {htmlspecialchars($memo->memo_content)} + {getTimeGap($memo->regdate, 'y/m/d')} + + + + + {$lang->msg_planet_no_memo} + +

+ +
    + + + {@$_isFirst=true} + +
  • class="first"> + [{$memo->nick_name}] {htmlspecialchars($memo->memo_content)} + {getTimeGap($memo->regdate, 'y/m/d')} + + +
  • + {@$_isFirst=false} + + +
  • {$lang->msg_planet_no_memo}
  • + +
+ + + diff --git a/modules/planet/skins/xe_planet/message.html b/modules/planet/skins/xe_planet/message.html new file mode 100644 index 000000000..5ef9a4b9a --- /dev/null +++ b/modules/planet/skins/xe_planet/message.html @@ -0,0 +1,36 @@ + + +
+

Message

+

{$message}

+ +
+ + + +
+
+ {$lang->planet_change_userinfo} +
+ + + +
+
+
+ + + + + + + diff --git a/modules/planet/skins/xe_planet/myPlanet.html b/modules/planet/skins/xe_planet/myPlanet.html new file mode 100644 index 000000000..27c0927c2 --- /dev/null +++ b/modules/planet/skins/xe_planet/myPlanet.html @@ -0,0 +1,39 @@ + + + + + + + + + +
+
+

+ {zdate($date,'Y')}{$lang->unit_year} + {zdate($date,'m')}{$lang->unit_month} + {zdate($date,'d')}{$lang->unit_day} + ({zdate($date,'l')}) + + +

+
+ + + +
+ + diff --git a/modules/planet/skins/xe_planet/planet_info.include.html b/modules/planet/skins/xe_planet/planet_info.include.html new file mode 100644 index 000000000..729179ca2 --- /dev/null +++ b/modules/planet/skins/xe_planet/planet_info.include.html @@ -0,0 +1,219 @@ + + +
+
+ + + + + +
+ {$lang->planet_userinfo} +
+ + {htmlspecialchars($planet->getNickName())} + + {htmlspecialchars($planet->getNickName())}{$lang->planet_change_photo} +
+

{$lang->about_planet_change_photo}

+ +
+ + +
+
+ +
+
+ +

{htmlspecialchars($planet->getPlanetTitle())}

+

{htmlspecialchars($planet->getBrowserTitle())}

+ +

{htmlspecialchars($planet->getPlanetTitle())}

+

{htmlspecialchars($planet->getBrowserTitle())}

+ + + + +
+
+
+
TAG
+ +
+ + {htmlspecialchars($tag)} + + +
+
+ +
+ +
+ + {htmlspecialchars($tag)} + +
+ +
+ {$planet->getPermanentUrl()} + RSS Feed +
+ + + + + + + + + +
+
+ + + + +
+
+ {$lang->msg_me2day_sync} + +
+

{$lang->msg_me2day_sync_q}

+
+
:
+
+
:
+
+
+ +

getMe2dayAuthPush())-->checked="checked" />

+ +
+ + +
+
+
+
+ + + + {@$phone_number=$myplanet->getPhoneNumber()} +
+
+ {$lang->planet_mobile_receive} + +
+
{$lang->planet_mobile_number} :
+
- -
+
+
+
+
+ + + +
+
+ +
+
+
+ +
+ + + +
+ + +
+
+ + + +
+
+
+ + + +
+ + +
+ +
+ + + + + + +
+

{$lang->planet_welcome}

+

{sprintf($lang->planet_notice_title, htmlspecialchars($planet->getUserName()), htmlspecialchars($planet->getUserName()))}

+
    + +
  1. {sprintf($notice, htmlspecialchars($planet->getUserName()))}
  2. + +
+

+ +
+ + + +
+ +
+

{$lang->cmd_planet_add_article}

+ + +
+
+
+ + +
+ {$lang->cmd_planet_add_article} +
+
{$lang->content}
+
+ +
+
+ +

 

+
+
{$lang->planet_postscript}
+
+
{$lang->tag}
+
+
+
+

+ +

getMe2dayAuthPush())-->checked="checked" id="me2day_autopush" />

+ +
+ +
+
+
+ +
+ \ No newline at end of file diff --git a/modules/planet/skins/xe_planet/reply_list.html b/modules/planet/skins/xe_planet/reply_list.html new file mode 100644 index 000000000..067f1edf2 --- /dev/null +++ b/modules/planet/skins/xe_planet/reply_list.html @@ -0,0 +1,8 @@ + + +
+
{$reply->nick_name}
+
{$reply->content} {getTimeGap($reply->regdate, 'Y/m/d')}
+
+ + diff --git a/modules/planet/skins/xe_planet/search.html b/modules/planet/skins/xe_planet/search.html new file mode 100644 index 000000000..c54ff68b2 --- /dev/null +++ b/modules/planet/skins/xe_planet/search.html @@ -0,0 +1,10 @@ + + + +
+ + + +
+ + diff --git a/modules/planet/skins/xe_planet/search_planet.html b/modules/planet/skins/xe_planet/search_planet.html new file mode 100644 index 000000000..2cf437bb0 --- /dev/null +++ b/modules/planet/skins/xe_planet/search_planet.html @@ -0,0 +1,52 @@ + + + +
+ +
+
+ {htmlspecialchars($planet->getNickName())} +
+ +
+
+
{$lang->planet_mytag} :
+
+ + {htmlspecialchars($tag)} + +
+
+ + + +
+ +
+ + + + + + +
+ + diff --git a/modules/planet/skins/xe_planet/search_tab.include.html b/modules/planet/skins/xe_planet/search_tab.include.html new file mode 100644 index 000000000..b19b785f5 --- /dev/null +++ b/modules/planet/skins/xe_planet/search_tab.include.html @@ -0,0 +1,19 @@ +
+

+ + {sprintf($lang->about_planet_whats_textSearch_in_planet,$planet->getNickName(), htmlspecialchars(urldecode($keyword)))} + + {sprintf($lang->about_planet_whats_textSearch,urldecode(htmlspecialchars($keyword)))} + +

+ +
+ +
+ + + diff --git a/modules/planet/skins/xe_planet/skin.xml b/modules/planet/skins/xe_planet/skin.xml new file mode 100644 index 000000000..9a17bc660 --- /dev/null +++ b/modules/planet/skins/xe_planet/skin.xml @@ -0,0 +1,46 @@ + + + PlanetXE 기본 스킨 + + PlanetXE의 기본 스킨입니다. + + 0.1 + 2008-10-01 + + + 정찬명 + + + + + Blue + + + Cyan + + + Green + + + Orange + + + Red + + + Gray + + + + + + 플래닛 타이틀 + + + 플래닛 메인 로고이미지 + + + 플래닛 한줄공지 + + + diff --git a/modules/planet/tpl/filter/delete_planet.xml b/modules/planet/tpl/filter/delete_planet.xml new file mode 100644 index 000000000..30c756cc1 --- /dev/null +++ b/modules/planet/tpl/filter/delete_planet.xml @@ -0,0 +1,10 @@ + +
+ + + + + + + +
diff --git a/modules/planet/tpl/filter/insert.xml b/modules/planet/tpl/filter/insert.xml new file mode 100644 index 000000000..2960af980 --- /dev/null +++ b/modules/planet/tpl/filter/insert.xml @@ -0,0 +1,17 @@ + +
+ + + + + + + + + + + + + + +
diff --git a/modules/planet/tpl/filter/insert_config.xml b/modules/planet/tpl/filter/insert_config.xml new file mode 100644 index 000000000..15b013ce8 --- /dev/null +++ b/modules/planet/tpl/filter/insert_config.xml @@ -0,0 +1,26 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/planet/tpl/header.html b/modules/planet/tpl/header.html new file mode 100644 index 000000000..4096ad3f6 --- /dev/null +++ b/modules/planet/tpl/header.html @@ -0,0 +1,18 @@ + + +

{$lang->planet} {$lang->cmd_management}

+ +
{nl2br($lang->about_planet)}
+ +
+ +

{$module_info->mid} ({$lang->is_default}) | View

+ + + +
+ diff --git a/modules/planet/tpl/images/blank_photo.gif b/modules/planet/tpl/images/blank_photo.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8ff51d9f2076d1dd58cba3d0ff9f5202019f9d2 GIT binary patch literal 7418 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 + + +
+ + + + + + + + + + + + + + + + + + + + + +
{$lang->planet_mid}
+ +

{$lang->about_planet_mid}

+
{$lang->planet_comment}
+ +

{$lang->about_planet_comment}

+
{$lang->description}
+ +

{$lang->about_description}

+
+ + +
+ +
diff --git a/modules/planet/tpl/js/planet.js b/modules/planet/tpl/js/planet.js new file mode 100644 index 000000000..c53ed77b0 --- /dev/null +++ b/modules/planet/tpl/js/planet.js @@ -0,0 +1,55 @@ +function completeInsertPlanet(ret_obj, response_tags) { + alert(ret_obj['message']); + location.href=current_url.setQuery('module_srl',ret_obj['module_srl']); +} + +function completeInsertGrant(ret_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + var page = ret_obj['page']; + var module_srl = ret_obj['module_srl']; + + alert(message); +} + +function completeInsertConfig(ret_obj, response_tags) { + alert(ret_obj['message']); + location.reload(); +} + +/* 권한 관련 */ +function doSelectAll(obj, key) { + var fo_obj = obj.parentNode; + while(fo_obj.nodeName != 'FORM') { + fo_obj = fo_obj.parentNode; + } + + for(var i=0;i + +
+ Total {number_format($page_navigation->total_count)}, Page {number_format($page_navigation->cur_page)}/{number_format($page_navigation->total_page)} +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->no}
{$lang->member}
{$lang->mid}
{$lang->browser_title}
{$lang->regdate}
 
{$no}{$val->getNickName()}{$val->getMid()}{$val->getBrowserTitle()}{zdate($val->get('regdate'),"Y-m-d")}{$lang->cmd_view}{$lang->cmd_delete}
+ + + diff --git a/modules/planet/tpl/move_myplanet.html b/modules/planet/tpl/move_myplanet.html new file mode 100644 index 000000000..8682e6adc --- /dev/null +++ b/modules/planet/tpl/move_myplanet.html @@ -0,0 +1,3 @@ + diff --git a/modules/planet/tpl/planet_delete.html b/modules/planet/tpl/planet_delete.html new file mode 100644 index 000000000..5d7169d72 --- /dev/null +++ b/modules/planet/tpl/planet_delete.html @@ -0,0 +1,30 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + +
{$lang->confirm_delete}
{$lang->module_name}
{$planet_info->mid}
{$lang->module}
{$planet_info->module}
{$lang->document_count}
{$planet_info->document_count}
+ {$lang->cmd_back} + +
+ +
diff --git a/modules/planet/tpl/setup.html b/modules/planet/tpl/setup.html new file mode 100644 index 000000000..913e8b3e8 --- /dev/null +++ b/modules/planet/tpl/setup.html @@ -0,0 +1,107 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->mid}
+ +

{$lang->mid}

+
{$lang->is_default}
+ is_default=='Y')-->checked="checked" id="fld_for_default" class="checkbox" /> + +
{$lang->browser_title}
+ +

{$lang->browser_title}

+
{$lang->planet_default_skin}
+ +

{$lang->about_planet_default_skin}

+
{$lang->create_message}
+ +

{$lang->about_create_message}

+
{$lang->planet_tagtab}
+ +

{$lang->about_planet_tagtab}

+
{$lang->planet_smstag}
+ +

{$lang->about_planet_smstag}

+
{$lang->use_signup}
+ use_signup=='Y')-->checked="checked" id="fld_for_signup" class="checkbox" /> + +
{$lang->planet_use_mobile}
+ use_mobile=='Y')-->checked="checked" id="fld_for_use_mobile" class="checkbox" /> + +
{$lang->planet_use_me2day}
+ use_me2day=='Y')-->checked="checked" id="fld_for_use_me2day" class="checkbox" /> + +
{$lang->cmd_manage_grant}
{$val->title}
+ + grants[$key])&&in_array($v->group_srl,$config->grants[$key]))-->checked="checked"/> + + + {$lang->cmd_select_all}{$lang->cmd_unselect_all}
+ +
+
diff --git a/modules/planet/tpl/skin_info.html b/modules/planet/tpl/skin_info.html new file mode 100644 index 000000000..a822ba89a --- /dev/null +++ b/modules/planet/tpl/skin_info.html @@ -0,0 +1,142 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->skin_default_info}
{$lang->skin}
{$skin_info->title}
{$lang->skin_author}
+ + {$author->name} ({$author->homepage}, {$author->email_address})
+ +
{$lang->homepage}
{$skin_info->homepage} 
{$lang->date}
{zdate($skin_info->date, 'Y-m-d')}
{$lang->skin_license}
+ {nl2br(trim($skin_info->license))} + +

{$skin_info->license_link}

+ +   +
{$lang->description}
{nl2br(trim($skin_info->description))}
+ + + + + + + + + + + + {@$group = $val->group} +
{$lang->extra_vars}
{$lang->colorset}
+ + + {@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; } + + {@ $_width = 200; $_height = 20; $_talign = "left"; } + +
+ colorset==$val->name)-->checked="checked"/> + + +
+ {$val->title} + +
+ +
+ + + + + + + + + + + +
{$group}
{$val->title}
+ + + + + + + + + + + + + value))-->checked="checked" class="checkbox" /> + + + + + + + + value)-->checked="checked"/> + + + + + + +
+
+ + +
+ + + + + + +

{nl2br(trim($val->description))}

+ +
+ + + + + + +
+ +
+ +
+ + diff --git a/modules/planet/tpl/top_refresh.html b/modules/planet/tpl/top_refresh.html new file mode 100644 index 000000000..2f4983d1d --- /dev/null +++ b/modules/planet/tpl/top_refresh.html @@ -0,0 +1,3 @@ +