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 000000000..ce00654b9 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/@user1.gif differ 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 000000000..7ecd32085 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/@user2.gif differ 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 000000000..1441b41f0 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/arrowReplyOpen.gif differ 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 000000000..083a3e09a Binary files /dev/null and b/modules/planet/skins/xe_planet/images/arrowTagNavigation.gif differ 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 000000000..ee15e5d8a Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgBody.gif differ diff --git a/modules/planet/skins/xe_planet/images/bgPerson.png b/modules/planet/skins/xe_planet/images/bgPerson.png new file mode 100644 index 000000000..7f747c383 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgPerson.png differ diff --git a/modules/planet/skins/xe_planet/images/bgSmile.png b/modules/planet/skins/xe_planet/images/bgSmile.png new file mode 100644 index 000000000..dbd3a35dd Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgSmile.png differ 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 000000000..0dc22a2aa Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgSympathy.gif differ 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 000000000..4d3f187fa Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgTag.gif differ diff --git a/modules/planet/skins/xe_planet/images/bgTag.png b/modules/planet/skins/xe_planet/images/bgTag.png new file mode 100644 index 000000000..00d438900 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/bgTag.png differ diff --git a/modules/planet/skins/xe_planet/images/boxAuthorHeader.gif b/modules/planet/skins/xe_planet/images/boxAuthorHeader.gif new file mode 100644 index 000000000..26c65aafe Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxAuthorHeader.gif differ diff --git a/modules/planet/skins/xe_planet/images/boxAuthorHeader.png b/modules/planet/skins/xe_planet/images/boxAuthorHeader.png new file mode 100644 index 000000000..ea754b416 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxAuthorHeader.png differ diff --git a/modules/planet/skins/xe_planet/images/boxCommentIn.gif b/modules/planet/skins/xe_planet/images/boxCommentIn.gif new file mode 100644 index 000000000..cf8ff2420 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxCommentIn.gif differ diff --git a/modules/planet/skins/xe_planet/images/boxCommentOut.gif b/modules/planet/skins/xe_planet/images/boxCommentOut.gif new file mode 100644 index 000000000..eafa7a6e8 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxCommentOut.gif differ 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 000000000..9e0110364 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxH2Comment.gif differ 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 000000000..668a85425 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxMemo.gif differ 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 000000000..c9b27fec2 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxMyFavoriteTag.gif differ diff --git a/modules/planet/skins/xe_planet/images/boxTagChoice.png b/modules/planet/skins/xe_planet/images/boxTagChoice.png new file mode 100644 index 000000000..72569ceb9 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxTagChoice.png differ diff --git a/modules/planet/skins/xe_planet/images/boxTagCloud.gif b/modules/planet/skins/xe_planet/images/boxTagCloud.gif new file mode 100644 index 000000000..b9beb4154 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxTagCloud.gif differ diff --git a/modules/planet/skins/xe_planet/images/boxTagNavigation.gif b/modules/planet/skins/xe_planet/images/boxTagNavigation.gif new file mode 100644 index 000000000..c52645744 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxTagNavigation.gif differ 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 000000000..2bae015c6 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxTagSelected.gif differ 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 000000000..28020d9bb Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxTryPlanet.gif differ diff --git a/modules/planet/skins/xe_planet/images/boxWelcome.gif b/modules/planet/skins/xe_planet/images/boxWelcome.gif new file mode 100644 index 000000000..685940ccd Binary files /dev/null and b/modules/planet/skins/xe_planet/images/boxWelcome.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonAquaBlue.gif b/modules/planet/skins/xe_planet/images/buttonAquaBlue.gif new file mode 100644 index 000000000..86b659270 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonAquaBlue.gif differ 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 000000000..fac35b800 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonAutoComplete.gif differ 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 000000000..8873a99e5 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonBlack.gif differ 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 000000000..7e3a7f763 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonBlue.gif differ 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 000000000..05434f5df Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonClose1.gif differ 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 000000000..77af230a2 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonFixedBlack45.png differ diff --git a/modules/planet/skins/xe_planet/images/buttonFixedBlack94.png b/modules/planet/skins/xe_planet/images/buttonFixedBlack94.png new file mode 100644 index 000000000..7f8df8aa4 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonFixedBlack94.png differ 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 000000000..279e1cc4d Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonGnb.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonGreen.gif b/modules/planet/skins/xe_planet/images/buttonGreen.gif new file mode 100644 index 000000000..241fd57d6 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonGreen.gif differ 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 000000000..5050ad573 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonLogin.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonModify.gif b/modules/planet/skins/xe_planet/images/buttonModify.gif new file mode 100644 index 000000000..0df5241eb Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonModify.gif differ 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 000000000..e1337ff1c Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonNext1.gif differ 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 000000000..03392f042 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonPlanetBlue.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonPlanetGreen.gif b/modules/planet/skins/xe_planet/images/buttonPlanetGreen.gif new file mode 100644 index 000000000..61ca58c03 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonPlanetGreen.gif differ 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 000000000..5c24c89af Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonPrev1.gif differ 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 000000000..d017d5949 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonRed.gif differ 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 000000000..1360261db Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonSympathy.gif differ 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 000000000..beb1eaf73 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonTagNavigation.gif differ 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 000000000..4d5e40cef Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWhite.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonWriteBlue.gif b/modules/planet/skins/xe_planet/images/buttonWriteBlue.gif new file mode 100644 index 000000000..1659b56a2 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteBlue.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonWriteCyan.gif b/modules/planet/skins/xe_planet/images/buttonWriteCyan.gif new file mode 100644 index 000000000..d6f4ca82f Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteCyan.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonWriteGray.gif b/modules/planet/skins/xe_planet/images/buttonWriteGray.gif new file mode 100644 index 000000000..0276b2e19 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteGray.gif differ 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 000000000..c79dc54d1 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteGreen.gif differ 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 000000000..483f18982 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteOrange.gif differ diff --git a/modules/planet/skins/xe_planet/images/buttonWriteRed.gif b/modules/planet/skins/xe_planet/images/buttonWriteRed.gif new file mode 100644 index 000000000..59fc93c0c Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonWriteRed.gif differ 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 000000000..2ab1d2bc7 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/buttonX.gif differ diff --git a/modules/planet/skins/xe_planet/images/cr3px.gif b/modules/planet/skins/xe_planet/images/cr3px.gif new file mode 100644 index 000000000..79fa04a86 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/cr3px.gif differ diff --git a/modules/planet/skins/xe_planet/images/cr3pxLeft.gif b/modules/planet/skins/xe_planet/images/cr3pxLeft.gif new file mode 100644 index 000000000..cef03150a Binary files /dev/null and b/modules/planet/skins/xe_planet/images/cr3pxLeft.gif differ diff --git a/modules/planet/skins/xe_planet/images/cr3pxRight.gif b/modules/planet/skins/xe_planet/images/cr3pxRight.gif new file mode 100644 index 000000000..6fbc11eaa Binary files /dev/null and b/modules/planet/skins/xe_planet/images/cr3pxRight.gif differ diff --git a/modules/planet/skins/xe_planet/images/iconAdd.gif b/modules/planet/skins/xe_planet/images/iconAdd.gif new file mode 100644 index 000000000..c4a7757f0 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconAdd.gif differ diff --git a/modules/planet/skins/xe_planet/images/iconAddFavorite.gif b/modules/planet/skins/xe_planet/images/iconAddFavorite.gif new file mode 100644 index 000000000..adf6ff61b Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconAddFavorite.gif differ 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 000000000..e51b02626 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconCheckGreen.gif differ diff --git a/modules/planet/skins/xe_planet/images/iconCheckYellow.gif b/modules/planet/skins/xe_planet/images/iconCheckYellow.gif new file mode 100644 index 000000000..e4eb0fbd1 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconCheckYellow.gif differ 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 000000000..86425cffc Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconExternalLink.gif differ diff --git a/modules/planet/skins/xe_planet/images/iconMe2day.png b/modules/planet/skins/xe_planet/images/iconMe2day.png new file mode 100644 index 000000000..a97e707d3 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconMe2day.png differ diff --git a/modules/planet/skins/xe_planet/images/iconMobile.gif b/modules/planet/skins/xe_planet/images/iconMobile.gif new file mode 100644 index 000000000..d164cc0e2 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconMobile.gif differ diff --git a/modules/planet/skins/xe_planet/images/iconWrite.gif b/modules/planet/skins/xe_planet/images/iconWrite.gif new file mode 100644 index 000000000..60a047473 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/iconWrite.gif differ 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 000000000..eb46246d6 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/icon_me2day.png differ 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 000000000..55ef889a7 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/lineVccc.gif differ 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 000000000..6b6f4c8bd Binary files /dev/null and b/modules/planet/skins/xe_planet/images/paginationNext.gif differ 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 000000000..7c0c6bd14 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/paginationNextEnd.gif differ 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 000000000..243b5834f Binary files /dev/null and b/modules/planet/skins/xe_planet/images/paginationPrev.gif differ 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 000000000..dfef2f343 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/paginationPrevEnd.gif differ diff --git a/modules/planet/skins/xe_planet/images/rssFeed.png b/modules/planet/skins/xe_planet/images/rssFeed.png new file mode 100644 index 000000000..964ab5a72 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/rssFeed.png differ 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 000000000..5bc2a9d05 Binary files /dev/null and b/modules/planet/skins/xe_planet/images/rssOff.png differ 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 000000000..f71e2189f Binary files /dev/null and b/modules/planet/skins/xe_planet/images/rssOn.png differ 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 000000000..c32937a1d Binary files /dev/null and b/modules/planet/skins/xe_planet/images/tabSearch.gif differ diff --git a/modules/planet/skins/xe_planet/interest_tags.html b/modules/planet/skins/xe_planet/interest_tags.html new file mode 100644 index 000000000..6129f3e83 --- /dev/null +++ b/modules/planet/skins/xe_planet/interest_tags.html @@ -0,0 +1,21 @@ + 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 000000000..a8ff51d9f Binary files /dev/null and b/modules/planet/tpl/images/blank_photo.gif differ diff --git a/modules/planet/tpl/insert.html b/modules/planet/tpl/insert.html new file mode 100644 index 000000000..5571344c7 --- /dev/null +++ b/modules/planet/tpl/insert.html @@ -0,0 +1,40 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{$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 @@ +