diff --git a/modules/communication/communication.admin.controller.php b/modules/communication/communication.admin.controller.php index 2c38d2683..c544a5e2b 100644 --- a/modules/communication/communication.admin.controller.php +++ b/modules/communication/communication.admin.controller.php @@ -19,11 +19,13 @@ **/ function procCommunicationAdminInsertConfig() { // get the default information - $args = Context::gets('skin','colorset','editor_skin','editor_colorset'); + $args = Context::gets('skin','colorset','editor_skin','editor_colorset', 'mskin'); + + if(!$args->skin) $args->skin = 'default'; + if(!$args->colorset) $args->colorset = 'white'; + if(!$args->editor_skin) $args->editor_skin = 'default'; + if(!$args->mskin) $args->mskin = 'default'; - if(!$args->skin) $args->skin = "default"; - if(!$args->colorset) $args->colorset = "white"; - if(!$args->editor_skin) $args->editor_skin = "default"; // create the module module Controller object $oModuleController = &getController('module'); $output = $oModuleController->insertModuleConfig('communication',$args); diff --git a/modules/communication/communication.admin.view.php b/modules/communication/communication.admin.view.php index 4129fc9d7..75720f418 100644 --- a/modules/communication/communication.admin.view.php +++ b/modules/communication/communication.admin.view.php @@ -28,10 +28,14 @@ Context::set('editor_skin_list', $oEditorModel->getEditorSkinList() ); // get a list of communication skins Context::set('communication_skin_list', $oModuleModel->getSkins($this->module_path) ); + // get a list of communication skins + Context::set('communication_mobile_skin_list', $oModuleModel->getSkins($this->module_path, 'm.skins') ); + $security = new Security(); $security->encodeHTML('communication_config..'); $security->encodeHTML('editor_skin_list..'); - $security->encodeHTML('communication_skin_list..title'); + $security->encodeHTML('communication_skin_list..title'); + $security->encodeHTML('communication_mobile_skin_list..title'); // specify a template $this->setTemplatePath($this->module_path.'tpl'); diff --git a/modules/communication/communication.mobile.php b/modules/communication/communication.mobile.php new file mode 100644 index 000000000..eeb13ede6 --- /dev/null +++ b/modules/communication/communication.mobile.php @@ -0,0 +1,68 @@ +communication_config = $oCommunicationModel->getConfig(); + $skin = $this->communication_config->mskin; + + Context::set('communication_config', $this->communication_config); + + $tpl_path = sprintf('%sm.skins/%s', $this->module_path, $skin); + $this->setTemplatePath($tpl_path); + } + + function dispCommunicationMessages() + { + // Error appears if not logged-in + if(!Context::get('is_logged')) + { + return $this->stop('msg_not_logged'); + } + + $logged_info = Context::get('logged_info'); + if(!array_key_exists('dispCommunicationMessages', $logged_info->menu_list)) + { + return $this->stop('msg_invalid_request'); + } + + // Set the variables + $message_srl = Context::get('message_srl'); + $message_type = 'R'; + Context::set('message_type', $message_type); + + $oCommunicationModel = &getModel('communication'); + // extract contents if message_srl exists + if($message_srl) + { + $templateFile = 'read_message'; + $columnList = array('message_srl', 'sender_srl', 'receiver_srl', 'message_type', 'title', 'content', 'readed', 'regdate'); + $message = $oCommunicationModel->getSelectedMessage($message_srl, $columnList); + if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl) ) + { + stripEmbedTagForAdmin($message->content, $message->sender_srl); + Context::set('message', $message); + } + } + else + { + $templateFile = 'messages'; + } + // Extract a list + $columnList = array('message_srl', 'readed', 'title', 'member.member_srl', 'member.nick_name', 'message.regdate', 'readed_date'); + $output = $oCommunicationModel->getMessages($message_type, $columnList); + + // set a template file + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('message_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + $oSecurity = new Security(); + $oSecurity->encodeHTML('message_list..nick_name'); + + $this->setTemplateFile($templateFile); + } +} diff --git a/modules/communication/communication.model.php b/modules/communication/communication.model.php index e603044ec..b4ee804ca 100644 --- a/modules/communication/communication.model.php +++ b/modules/communication/communication.model.php @@ -25,6 +25,7 @@ if(!$communication_config->skin) $communication_config->skin = 'default'; if(!$communication_config->colorset) $communication_config->colorset = 'white'; if(!$communication_config->editor_skin) $communication_config->editor_skin = 'default'; + if(!$communication_config->mskin) $communication_config->mskin = 'default'; return $communication_config; } diff --git a/modules/communication/m.skins/default/css/mcommunication.css b/modules/communication/m.skins/default/css/mcommunication.css new file mode 100644 index 000000000..e236dcad9 --- /dev/null +++ b/modules/communication/m.skins/default/css/mcommunication.css @@ -0,0 +1,127 @@ +@charset "utf-8"; +/* Mobile XE (/modules/board/m.skins/default) */ +body{margin:0;background:#fff;color:#000;word-wrap:break-word} +body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif} +img{border:0} +em{font-style:normal} +form{margin:0;padding:0} +fieldset{margin:0;padding:0;border:0} +textarea{resize:vertical} +input[type=checkbox], +input[type=radio]{width:13px;height:13px;margin:0;padding:0} +/* Common */ +.fl{float:left} +.fr{float:right} +/* Background */ +.rp li li, +.rp .answer, +.rp .btn, +/* Body */ +.bd{background:#f8f8f8;padding:1px 0} +.co{margin:10px;line-height:1.4;font-size:14px;color:#333} +.co:after{content:"";display:block;clear:both;zoom:1} +/* Hx */ +.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0} +.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff} +.hx.h2{background:#e5e5e5;text-shadow:1px 1px 0 #fff;padding-right:40px} +.hx.h2 em{font-size:12px;color:#6352d2} +.hx.h3{background:#868686;color:#fff} +.hx.h3 em{font-size:12px} +.hx h2, .hx h3{margin:0 10px 0 0;display:inline} +.hx h2{font-size:16px;line-height:1.4} +.hx h3{font-size:14px} +.hx a{color:#000} +.hx .ex{font-size:12px} +.hx .tg{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:visible;border:0;cursor:pointer;opacity:0;background:none} +.hx .ca{font-size:12px;text-decoration:underline;color:#333} +.hx .ca:after{content:"";display:inline-block;position:relative;left:4px;width:0;height:0;border:4px solid;border-color:transparent;border-left-color:#8d7de1;margin:0 -8px 0 0} +.hx .write{position:absolute;top:8px;right:10px;background-position:0 0;display:inline-block;width:28px;height:27px;font-size:0;overflow:hidden;text-indent:-28px} +/* Global Navigation */ +.gn{margin:0;padding:0;list-style:none;background:#d3d1cc;text-shadow:1px 1px 0 #fff} +.gn li{background:#c3c3c3;border:1px solid #a3a09a;border-left:0;border-right:0;margin:0 0 -1px 0} +.gn li li{background:#f8f8f8;border:1px solid #c9c9c9;border-left:0;border-right:0} +.gn li li li{background:#e8e8e8} +.gn ul{margin:0 0 -1px 0;padding:0;list-style:none} +.gn a{position:relative;text-decoration:none;display:block;padding:10px;font-size:16px} +.gn li a{color:#333} +.gn li a:after{position:absolute;top:7px;right:10px;content:"›";color:#888;font-size:18px;font-weight:bold;font-family:Verdana, Geneva, sans-serif} +.gn li li a:before{content:"";display:inline-block;width:6px;height:6px;border:1px dotted #666;border-top:0;border-right:0;margin:0 4px 0 0;vertical-align:top} +.gn li li a{padding-left:15px} +.gn li li li a{padding-left:30px} +.gn li li li li a{padding-left:45px} +.gn li li li li li a{padding-left:60px} +.gn em{color:#6352d2;font-size:12px} +/* List */ +.lt{margin:0;padding:0;list-style:none;background:#f8f8f8;font-size:14px} +.lt li{border-bottom:1px solid #ccc8be;overflow:hidden} +.lt .read{background:url(../img/read.png) no-repeat 10px center;padding:5px 5px 5px 52px} +.lt .unread{background:url(../img/unread.png) no-repeat 10px center;padding:5px 5px 5px 52px} +.lt a{float:left;display:inline-block;text-decoration:none;color:#000;padding:5px} +.lt .memberInfo{float:right;padding:5px 5px 5px 34px;background:url(../img/member.png) no-repeat 10px center;} +.lt .notice{display:inline-block;background:#a06acd;font-weight:bold;color:#fff;font-size:12px;padding:1px;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px} +.lt .title{display:block;margin:0 0 5px 0} +.lt .title strong{font-size:14px;font-weight:bold} +.lt .title em{font-size:12px;color:#333;color:#6352d2} +.lt .auth{display:block;font-size:12px} +.lt .auth .time{padding:0 5px;border-left:1px solid #bfbfbf} +/* Toggle Open */ +.tgo{display:none;background:#f8f8f8;color:#333;margin:0;padding:0;list-style:none;font-size:14px;color:#333} +.tgo.open{display:block} +.file{margin:0;padding:0;list-style:none} +.file li{border-top:1px solid #c9c9c9;border-bottom:1px solid #c9c9c9;margin:0 0 -1px 0} +.file a{text-decoration:none;display:block;padding:10px 0 10px 10px;color:#333} +.file .size{font-size:12px;border-left:1px solid #bfbfbf;margin:0 5px;padding:0 10px;color:#666} +.rp ul{margin:10px 0 -11px -10px;padding:0;list-style:none} +.rp li{border-top:1px solid #c9c9c9;border-bottom:1px solid #c9c9c9;padding:10px 0 10px 10px;margin:0 0 -1px 0} +.rp .xe_content, .rp p{margin:0 0 5px 0} +.rp ul ul{margin-left:-25px} +.rp ul ul ul{margin-left:-40px} +.rp ul ul ul ul{margin-left:-55px} +.rp ul ul ul ul ul{margin-left:-70px} +.rp ul ul ul ul ul ul{margin-left:-85px} +.rp li li, +.rp .answer{padding-left:25px;background-position:10px -145px} +.rp li li li{padding-left:40px;background-position:25px -145px} +.rp li li li li{padding-left:55px;background-position:40px -145px} +.rp li li li li li{padding-left:70px;background-position:55px -145px} +.rp li li li li li li{padding-left:85px;background-position:70px -145px} +.rp .btn{display:inline-block;width:15px;height:15px;overflow:hidden;vertical-align:middle;text-indent:15px} +.rp .btn.ed{background-position:0 -32px} +.rp .btn.de{background-position:-15px -32px} +.rp .btn.re{background-position:-30px -32px} +.rp .auth{font-size:12px} +.rp .auth .time{padding:0 5px;border-left:1px solid #bfbfbf} +/* Form Field */ +.origin{padding:10px 0;margin:0 10px;font-size:14px} +.ff{margin:0;padding:10px 0} +.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none} +.ff li{margin:0 0 5px 0;padding:0} +.ff label{margin-right:10px} +.ff label+input[type=text], +.ff label+input[type=password], +.ff label+textarea, +.ff label+select{display:block;width:96%;font-size:14px;margin:0 0 5px 0} +.ff label+input[type=text], +.ff label+input[type=password], +.ff label+textarea{padding:5px} +/* Button Area */ +.bna{text-align:center;padding:0 10px;margin:10px 0;zoom:1} +.bna:after{content:"";display:block;clear:both} +.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle} +.bn[type=submit], +.bn[type=button]{height:28px} +.bn[href]{height:26px} +.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset} +.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#fff;color:#000} +/* Pagination */ +.pn{font-size:12px;text-align:center;background:#f2f0ec;padding:15px 0;border-top:1px solid #fff} +.pn a{color:#333;text-decoration:none} +.pn strong{margin:0 10px} +.pn .prev:before{content:"";display:inline-block;width:0;height:0;margin:0 4px 0 0;border:4px solid;border-color:transparent;border-right-color:#999} +.pn .next:after{content:"";display:inline-block;width:0;height:0;margin:0 0 0 4px;border:4px solid;border-color:transparent;border-left-color:#999} +/* Search */ +.sh{border:1px solid #bfbfbf;border-left:0;border-right:0;background:#e8e8e8;padding:10px;text-align:center} +.sh *{vertical-align:top} +.sh select{width:80px;font-size:14px;margin:0 0 5px 0} +.sh input[type=text]{width:160px;margin:0;font-size:14px;padding:5px} +.sh .shbn{width:28px;height:28px;border:1px solid #666;background:#777 url(../img/mx.png) no-repeat 5px -60px;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer} diff --git a/modules/communication/m.skins/default/img/member.png b/modules/communication/m.skins/default/img/member.png new file mode 100644 index 000000000..03263ff69 Binary files /dev/null and b/modules/communication/m.skins/default/img/member.png differ diff --git a/modules/communication/m.skins/default/img/read.png b/modules/communication/m.skins/default/img/read.png new file mode 100644 index 000000000..11af4ae34 Binary files /dev/null and b/modules/communication/m.skins/default/img/read.png differ diff --git a/modules/communication/m.skins/default/img/unread.png b/modules/communication/m.skins/default/img/unread.png new file mode 100644 index 000000000..0c7a31b47 Binary files /dev/null and b/modules/communication/m.skins/default/img/unread.png differ diff --git a/modules/communication/m.skins/default/messages.html b/modules/communication/m.skins/default/messages.html new file mode 100644 index 000000000..485a3105f --- /dev/null +++ b/modules/communication/m.skins/default/messages.html @@ -0,0 +1,17 @@ + +
+
+

{$lang->message_box['R']}

+
+ +
+ + {$page} / {$page_navigation->last_page} + +
+
diff --git a/modules/communication/m.skins/default/read_message.html b/modules/communication/m.skins/default/read_message.html new file mode 100644 index 000000000..26f5a2bd4 --- /dev/null +++ b/modules/communication/m.skins/default/read_message.html @@ -0,0 +1,12 @@ + + +
+

{$message->title}

{$message->nick_name} | {zdate($message->regdate, "Y.m.d H:i")} +
+
+
{$message->content}
+
+ + diff --git a/modules/communication/m.skins/default/skin.xml b/modules/communication/m.skins/default/skin.xml new file mode 100644 index 000000000..cf4f2addc --- /dev/null +++ b/modules/communication/m.skins/default/skin.xml @@ -0,0 +1,18 @@ + + + XE 커뮤니케이션 모바일 기본 스킨 + + XE 커뮤니케이션 모바일 기본 스킨입니다. + NHN (developers@xpressengine.com) + + 0.1 + 2012-08-07 + + + NHN + NHN + NHN + NHN + + + diff --git a/modules/communication/tpl/index.html b/modules/communication/tpl/index.html index 372764b57..d5a403f96 100644 --- a/modules/communication/tpl/index.html +++ b/modules/communication/tpl/index.html @@ -39,6 +39,14 @@ {$lang->colorset}
+ + {$lang->mobile_skin} + + + +