diff --git a/modules/communication/m.skins/rx_prn/add_friend.html b/modules/communication/m.skins/rx_prn/add_friend.html new file mode 100644 index 000000000..eff48afda --- /dev/null +++ b/modules/communication/m.skins/rx_prn/add_friend.html @@ -0,0 +1,28 @@ +{@ $communication_popup = TRUE;} + + +
+

{$lang->cmd_add_friend}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + +
+ + + + +
+
+ +
+
+
+ \ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/add_friend_group.html b/modules/communication/m.skins/rx_prn/add_friend_group.html new file mode 100644 index 000000000..1667e31c5 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/add_friend_group.html @@ -0,0 +1,29 @@ +{@ $communication_popup = TRUE;} + + +
+

+ + {$lang->cmd_rename_friend_group} + + {$lang->cmd_add_friend_group} + +

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + +
+ + +
+
+ + +
+
+
\ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/common_footer.html b/modules/communication/m.skins/rx_prn/common_footer.html new file mode 100644 index 000000000..c63a94a2b --- /dev/null +++ b/modules/communication/m.skins/rx_prn/common_footer.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/common_header.html b/modules/communication/m.skins/rx_prn/common_header.html new file mode 100644 index 000000000..3ea8c6bad --- /dev/null +++ b/modules/communication/m.skins/rx_prn/common_header.html @@ -0,0 +1,81 @@ + + + {@Context::addMetaTag("viewport", "width=device-width, user-scalable=yes")} + + + + + + {@ + if(!$layout_info->primary_color) + $layout_info->primary_color = 'red'; + if(!$layout_info->primary_color && $layout_info->customized_primary_color) + $layout_info->primary_color = 'customized'; + if(!$layout_info->customized_primary_color) + $layout_info->customized_primary_color = '#f44336'; + } + + + {@$layout_info->primary_color = 'red';} + +{@ + $material_colors = array( + 'red' => '#f44336', + 'crimson' => '#aa0000', + 'pink' => '#e91e63', + 'purple' => '#9c27b0', + 'deep-purple' => '#673ab7', + 'indigo' => '#3f51b5', + 'deep-blue' => '#00397f', + 'blue' => '#2196f3', + 'light-blue' => '#03a9f4', + 'cyan' => '#00bcd4', + 'teal' => '#009688', + 'green' => '#4caf50', + 'light-green' => '#8bc34a', + 'lime' => '#cddc39', + 'yellow' => '#ffeb3b', + 'amber' => '#ffc107', + 'orange' => '#ff9800', + 'deep-orange' => '#ff5722', + 'brown' => '#795548', + 'grey' => '#9e9e9e', + 'blue-grey' => '#607d8b', + 'black' => '#000000', + 'white' => '#ffffff', + 'customized' => $layout_info->customized_primary_color, + ); +} + +{@$colorset = $material_colors[$member_config->colorset];} +{@$skin_color = $material_colors[$layout_info->primary_color];} + + + {@$skin_color = trim($colorset)} + + {@$skin_color = trim($colorset)[1].trim($colorset)[1].trim($colorset)[2].trim($colorset)[2].trim($colorset)[3].trim($colorset)[3]} + + + {@$skin_color = '#f44336'} + + + + + {@$skin_color = $layout_info->primary_color} + + {@$skin_color = $layout_info->primary_color[1].$layout_info->primary_color[1].$layout_info->primary_color[2].$layout_info->primary_color[2].$layout_info->primary_color[3].$layout_info->primary_color[3]} + + + {@$skin_color = '#f44336'} + + +{@Context::set('prn_less_value', array('red' => hexdec(substr($skin_color, 1, 2)), 'green' => hexdec(substr($skin_color, 3, 2)), 'blue' => hexdec(substr($skin_color, 5, 2)) ))} + +
+
+ +
\ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/css/css.less b/modules/communication/m.skins/rx_prn/css/css.less new file mode 100644 index 000000000..e1f04d4a4 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/css/css.less @@ -0,0 +1,467 @@ +@charset "UTF-8"; +/* + @method .text-contrast() + @author misol + @brief Select a text color according to WCAG 2.0 contrast guideline. The calcualtion of contrast follows the formula on the guideline. +*/ +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) { + color: @bright_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) { + color: @dark_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) > 4.5 * @multi ) { + color: @bright_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) =< 4.5 * @multi ) { + .text-contrast(@bg_color; lighten(@bright_color, 5%); @dark_color; @multi; @i + 1); +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 4.5 * @multi ) { + color: @dark_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 4.5 * @multi ) { + .text-contrast(@bg_color; @bright_color; darken(@dark_color, 5%); @multi; @i + 1); +} + +/* + @method .bg-contrast() + @author misol + @brief Select a background color, which has less contrast background color than WCAG 2.0 contrast guideline. On the WCAG 2.0 guideline, bigger string can have less contrast as 3.0. +*/ +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) { + background: @bright_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) { + background: @dark_color; +} + +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) > 3 * @multi ) { + background: @bright_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) =< 3 * @multi ) { + .bg-contrast(@text_color; lighten(@bright_color,3%); @dark_color; @multi; @i + 1); +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 3 * @multi ) { + background: @dark_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 3 * @multi ) { + .bg-contrast(@text_color; @bright_color; darken(@dark_color, 3%); @multi; @i + 1); +} + +/* As LESS library in Rhymix substitude variables as an strings, convert colors as the color objects of LESS. */ +@color: rgb(@red, @green, @blue); + +/* As this file handle some wild-selectors to control display settings, hide inline script and style codes. */ +script, style +{ + display:none!important; +} + +/* Member skin container, default settings */ + +.rx_prn_communication +{ + /* font-size */ + .font-xl() + { + /* font-size: 45; 1 */ + font-size: 1.25em; + } + .font-l() + { + /* font-size: 40; 1_2, 1_3, 2_1, 4, 5_1 */ + font-size: 1.11em; + } + .font-m() + { + /* font-size: 36; 1_4, 2_2, 4_1, 5_2 */ + font-size: 1em; + } + .font-s() + { + /* font-size: 30; 2_3, 3_1, 5_3 */ + font-size: 0.833em; + } + + + /* font-weight */ + .font-bold() + { + font-weight: 700; + } + + /* font-color */ + .font-point() + { + /* 4, 4_1 */ + color: lighten(@color, 5%) + } + + .font-dark() + { + color: #484848 + } + .font-gray() + { + color: #757575 + } + .font-light() + { + color: #bdbdbd + } + + + .background-lightgray() + { + background-color: #fafafa + } + .background-gray() + { + background-color: #bdbdbd + } + .background-lightpoint() + { + color: lighten(@color, 10%) + } + .background-point() + { + color: @color + } + + + font-family: "맑은 고딕", "Apple SD Gothic Neo","나눔고딕",NanumGothic,'Nanum Gothic',Arial,Helvetica,sans-serif; + font-size: 14px; + text-align: justify; + margin: 8px 0px; + padding: 0 5px; + .font-dark(); + + + a + { + .font-dark(); + text-decoration: none; + } + + .pos-right + { + position:absolute; + right:0 + } + + /* Tab over the main content. */ + div.rx_prn_tab{ + background: #ffffff; + margin: 5px 0 0; + box-sizing: border-box; + overflow: hidden; + width:100%; + ul.rx_prn_tab{ + margin: 0; + padding: 0; + list-style: outside none none; + display: block; + text-decoration: none; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + &>li { + display:inline-block; + line-height: 1.5; + position: relative; + padding: 0 10px; + a { + display:inline-block; + letter-spacing: -1px; + line-height: 3; + border-bottom: solid 3px #fff; + padding: 0 5px; + .font-l(); + .font-bold(); + } + a:hover, a:focus, &.active a{ + border-bottom: solid 3px @color; + } + } + } + } + + + /* member forms */ + .prn-narrow + { + max-width:400px; + margin:0px auto; + box-sizing:border-box; + } + .prn-body + { + box-sizing:border-box; + border-radius: 25px; + .background-lightgray(); + margin: 0 0 17px; + padding: 1px 0; + &>* + { + padding: 5px 20px; + margin:0; + border: 0; + &:first-child { + padding-top: 20px; + } + &:last-child { + padding-bottom: 20px; + } + } + h1 + { + padding: 15px 5px; + margin: 5px 15px; + border-bottom: 1px solid #d1d1d1; + .font-l(); + .font-bold(); + } + .prn-anchor-buttons + { + margin: 5px 0px; + &>a, &>label, &>button, &>select, &>input[type="submit"] + { + display: block; + width: 100%; + -webkit-appearance: none; + box-sizing: border-box; + border-top: none; + border-right: none; + border-bottom: 1px solid #d1d1d1; + border-left: none; + border-radius: 0px; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + text-align: center; + .font-m(); + .font-point(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + &:first-child + { + border-top: 1px solid #d1d1d1; + } + } + } + } + form + { + overflow: hidden; + width:100%; + white-space: normal; + box-sizing: border-box; + div.control-group + { + &>* + { + display:block; + position:relative; + box-sizing: border-box; + width:100%; + height: auto; + margin:0px; + margin-top: 10px; + } + &>*:first-child + { + margin-top: 0; + } + &>input, &>select, button, #prn_profile_imagetag label.prn_button + { + border: 1px solid #d1d1d1; + border-radius: 25px; + margin-top: 0; + padding: 8px 15px; + -webkit-appearance: none; + line-height: 2; + height: auto; + .font-gray(); + .font-m(); + } + &>label, &>div.control-label + { + font-weight: bold; + border:0; + } + } + } + form input[type="submit"], form button + { + padding: 10px; + vertical-align: bottom; + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 3.0); + font-weight: bold; + text-shadow: none; + border:0; + color: #000; + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + form div.control-group>input[type="submit"], .prn-footer{ + margin: 20px 0 0; + } + .prn-footer.prn-anchor-buttons { + text-align:right; + &>a { + display:inline-block; + } + } + + /* message; error, info, update */ + .rx_prn-notice, .rx_prn-notice.info + { + .bg-contrast(#000; lighten(@color, 5%); darken(@color, 5%); 5.0); + color: #000; + border-radius: 15px; + padding: 15px; + margin: 10px; + margin-top:0; + text-align: justify; + .font-gray(); + .font-m(); + } + .rx_prn-notice.error + { + background: #fff3e0; + .text-contrast(#fff3e0); + } + .rx_prn-notice.update + { + background: #e8f5e9; + .text-contrast(#e8f5e9); + } + .rx_prn-notice>* + { + padding: 0; + margin:0; + } + + /* The list of document style */ + .content_basic{ + position:relative; + display:inline-block; + max-width:100%; + vertical-align: middle; + overflow:hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .content_subinfo + { + color: #9e9e9e; + font-size: 12px; + margin: 0 3px 0 7px; + overflow:hidden; + } + ul.rx_sw_list { + list-style: outside none none; + margin: 20px 0px; + padding: 0; + border-bottom: 1px solid #e0e0e0; + li { + position:relative; + border-top: 1px solid #e0e0e0; + overflow: hidden; + padding:0; + } + .cont_a { + color: #222; + display: block; + letter-spacing: -1px; + line-height: 18px; + margin: 0; + overflow: hidden; + padding: 0.667em 70px 0.733em 15px; + text-overflow: ellipsis; + white-space: nowrap; + text-decoration: none; + &.no_delete { + padding-right: 15px; + } + &:hover, &:focus { + .text-contrast(#fff; darken(@color,5%); lighten(@color,5%)); + } + } + .content_delete{ + position:absolute; + top:0; + right:2px; + button{ + background: lighten(@color, 5%); + font-size: 14px; + border:0; + border-radius: 25px; + .text-contrast(lighten(@color, 5%)); + padding: 10px 15px; + vertical-align: bottom; + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + input[type="checkbox"] + { + width: 30px; + height: 30px; + } + } + } + .pagination ul + { + display:block; + list-style: outside none none; + text-align:center; + padding: 0; + margin: 0; + li{ + display:inline-block; + &>a + { + display: inline-block; + border-radius: 50%; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + .font-m(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + &.active>a + { + background-color: #d1d1d1; + font-weight:bold; + color:#000; + } + } + } + .prn-footer + { + &>a + { + display: block; + border-radius: 25px; + border: 1px solid #d1d1d1; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + text-align: center; + .font-m(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + } +} + diff --git a/modules/communication/m.skins/rx_prn/filter/add_friend.xml b/modules/communication/m.skins/rx_prn/filter/add_friend.xml new file mode 100644 index 000000000..b1ec11d0d --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/add_friend.xml @@ -0,0 +1,9 @@ + +
+ + + + + + + diff --git a/modules/communication/m.skins/rx_prn/filter/add_friend_group.xml b/modules/communication/m.skins/rx_prn/filter/add_friend_group.xml new file mode 100644 index 000000000..cadf2644f --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/add_friend_group.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/modules/communication/m.skins/rx_prn/filter/delete_checked_friend.xml b/modules/communication/m.skins/rx_prn/filter/delete_checked_friend.xml new file mode 100644 index 000000000..4d1466994 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/delete_checked_friend.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/m.skins/rx_prn/filter/delete_checked_message.xml b/modules/communication/m.skins/rx_prn/filter/delete_checked_message.xml new file mode 100644 index 000000000..1d21f33c8 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/delete_checked_message.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/m.skins/rx_prn/filter/delete_friend_group.xml b/modules/communication/m.skins/rx_prn/filter/delete_friend_group.xml new file mode 100644 index 000000000..5d269abaa --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/delete_friend_group.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/m.skins/rx_prn/filter/move_friend.xml b/modules/communication/m.skins/rx_prn/filter/move_friend.xml new file mode 100644 index 000000000..8b1eef8cd --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/move_friend.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/m.skins/rx_prn/filter/send_message.xml b/modules/communication/m.skins/rx_prn/filter/send_message.xml new file mode 100644 index 000000000..418965112 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/send_message.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/communication/m.skins/rx_prn/filter/update_allow_message.xml b/modules/communication/m.skins/rx_prn/filter/update_allow_message.xml new file mode 100644 index 000000000..d005b43f5 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/filter/update_allow_message.xml @@ -0,0 +1,5 @@ + +
+ + + diff --git a/modules/communication/m.skins/rx_prn/friends.html b/modules/communication/m.skins/rx_prn/friends.html new file mode 100644 index 000000000..70f91812f --- /dev/null +++ b/modules/communication/m.skins/rx_prn/friends.html @@ -0,0 +1,80 @@ + + + +
+
+

{$member_title = $lang->cmd_view_friend}

+
{lang('common.total')}: {number_format($total_count)}
+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + +
+ + +
+ +
+
+ + + + +
+ + +
+
+ + + + + +
+
+
+
+ +
+ + +
+ diff --git a/modules/communication/m.skins/rx_prn/js/communication.js b/modules/communication/m.skins/rx_prn/js/communication.js new file mode 100644 index 000000000..ec0a495a9 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/js/communication.js @@ -0,0 +1,119 @@ +/* 쪽지 발송 */ +function completeSendMessage(ret_obj) { + alert(ret_obj['message']); + window.close(); +} + +function doSendMessage(member_srl, message_srl) { + if(typeof(message_srl)=='undefined') message_srl = 0; + var url = request_uri.setQuery('module','communication').setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl); + popopen(url, 'sendMessage'); +} + +/* 개별 쪽지 삭제 */ +function doDeleteMessage(message_srl) { + if(!message_srl) return; + + var params = new Array(); + params['message_srl'] = message_srl; + exec_xml('communication', 'procCommunicationDeleteMessage', params, completeDeleteMessage); +} + +function completeDeleteMessage(ret_obj) { + alert(ret_obj['message']); + location.href = current_url.setQuery('message_srl',''); +} + +/* 개별 쪽지 보관 */ +function doStoreMessage(message_srl) { + if(!message_srl) return; + + var params = new Array(); + params['message_srl'] = message_srl; + exec_xml('communication', 'procCommunicationStoreMessage', params, completeStoreMessage); +} + +function completeStoreMessage(ret_obj) { + alert(ret_obj['message']); + location.href = current_url.setQuery('message_srl',''); +} + +/* 친구 추가 후 */ +function completeAddFriend(ret_obj) { + alert(ret_obj['message']); + var member_srl = ret_obj['member_srl']; + if(opener && opener.loaded_member_menu_list) { + opener.loaded_member_menu_list[ret_obj['member_srl']] = ''; + } + window.close(); +} + +/* 친구 그룹 추가 후 */ +function completeAddFriendGroup(ret_obj) { + alert(ret_obj['message']); + if(opener) opener.location.href = opener.location.href; + window.close(); +} + +/* 친구 그룹 삭제 */ +function doDeleteFriendGroup() { + var friend_group_srl = jQuery('#target_friend_group_srl option:selected').val(); + if(!friend_group_srl) return; + + var fo_obj = jQuery('#for_delete_group').get(0); + fo_obj.friend_group_srl.value = friend_group_srl; + + procFilter(fo_obj, delete_friend_group); +} + +function completeDeleteFriendGroup(ret_obj) { + alert(ret_obj['message']); + location.href = current_url.setQuery('friend_group_srl',''); +} + +/* 친구 그룹의 이름 변경 */ +function doRenameFriendGroup() { + var friend_group_srl = jQuery('#target_friend_group_srl option:selected').val(); + if(!friend_group_srl) return; + + popopen("./?module=communication&act=dispCommunicationAddFriendGroup&friend_group_srl="+friend_group_srl); +} + +/* 친구 그룹 이동 */ +function doMoveFriend() { + var fo_obj = jQuery('#fo_friend_list').get(0); + procFilter(fo_obj, move_friend); +} + +/* 친구 그룹 선택 */ +function doJumpFriendGroup() { + var sel_val = jQuery('#jumpMenu option:selected').val(); + location.href = current_url.setQuery('friend_group_srl', sel_val); +} + +function isRxPrnTouchable() { + var el = document.createElement('div'); + el.setAttribute('ontouchstart', 'return;'); // or try "ontouchstart" + return typeof el.ontouchstart === "function"; +} + +$(document).ready(function() { + $('.__submit_group button[type=submit]').click(function(e){ + var sel_val = $('input[name="friend_srl_list[]"]:checked').length; + if(sel_val == 0) + { + e.preventDefault(); + return false; + } + }); + if(isRxPrnTouchable()) { + $(".rx_prn_communication div.rx_prn_tab ul.rx_prn_tab").css('white-space', 'nowrap'); + try + { + $(".rx_prn_communication div.rx_prn_tab ul.rx_prn_tab").animate({ + scrollLeft: $(".rx_prn_communication div.rx_prn_tab ul.rx_prn_tab li.active").offset().left + }, 300); + } catch (e) { + } + } +}); \ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/messages.html b/modules/communication/m.skins/rx_prn/messages.html new file mode 100644 index 000000000..0210ae738 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/messages.html @@ -0,0 +1,84 @@ + + + +
+
+

{escape($message->title)}

+
+ {$message->nick_name} / {zdate($message->regdate, "Y-m-d H:i")} +
+
+ {$message->content} +
+ +
+
+

{$val}

+ + + +
+ + + + + +
+ + +
+
+
+ {$val} +
+
+
+ + diff --git a/modules/communication/m.skins/rx_prn/new_message.html b/modules/communication/m.skins/rx_prn/new_message.html new file mode 100644 index 000000000..74cde0577 --- /dev/null +++ b/modules/communication/m.skins/rx_prn/new_message.html @@ -0,0 +1,19 @@ +{@ $communication_popup = TRUE} + +
+
+

{escape($message->title)}

+
+ {$message->nick_name} / {zdate($message->regdate, "Y-m-d H:i")} +
+
+ {$message->content} +
+ +
+
+ diff --git a/modules/communication/m.skins/rx_prn/send_message.html b/modules/communication/m.skins/rx_prn/send_message.html new file mode 100644 index 000000000..da016361b --- /dev/null +++ b/modules/communication/m.skins/rx_prn/send_message.html @@ -0,0 +1,30 @@ +{@ $communication_popup = TRUE} + +
+
+

{$lang->cmd_send_message}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + + +
+ + {$receiver_info->nick_name} + + + +
{$lang->msg_send_mail_privacy}
+
+ {$editor} +
+ +
+
+
+
+ \ No newline at end of file diff --git a/modules/communication/m.skins/rx_prn/skin.xml b/modules/communication/m.skins/rx_prn/skin.xml new file mode 100644 index 000000000..e323e0a0c --- /dev/null +++ b/modules/communication/m.skins/rx_prn/skin.xml @@ -0,0 +1,108 @@ + + + 필요할 때 라이믹스 + Rhymix PRN + 필요할 때 꺼내보는 라이믹스. 캡슐 모양의 둥근 라이믹스 커뮤니케이션 모듈 스킨입니다. + You need Rhymix. A skin of the communication module of Rhymix with round, capsule-like shapes. + 0.1 + 2017-08-09 + + + misol + misol + + + 마더캣 + Mothercat + + + + 사이트 테마 색 + The site theme color + + + 붉은 색 + Red + + + 크림슨 + Crimson + + + 분홍 + Pink + + + 보라 + Purple + + + 진보라 + Deep Purple + + + 인디고 + Indigo + + + 짙은 파랑 + Deep Blue + + + 파랑 + Blue + + + 밝은 파랑 + Light Blue + + + 시안 + Cyan + + + + Teal + + + 초록 + Green + + + 연한 초록 + Light Green + + + 라임 + Lime + + + 노랑 + Yellow + + + 앰버 + Amber + + + 주황 + Orange + + + 진한 주황 + Deep Orange + + + 갈색 + Brown + + + 회색 + Grey + + + 푸른 회색 + Blue Grey + + + diff --git a/modules/member/m.skins/rx_prn/active_logins.html b/modules/member/m.skins/rx_prn/active_logins.html new file mode 100644 index 000000000..c080e831a --- /dev/null +++ b/modules/member/m.skins/rx_prn/active_logins.html @@ -0,0 +1,47 @@ + +
+

{$member_title = lang('member.cmd_view_active_logins')}

+
+ {lang('common.total')}: {number_format($total_count)} +
+
+
    +
  • + {@ $autologin_info->user_agent = @json_decode($autologin_info->user_agent) ?: new stdClass()} + + + {escape($autologin_info->user_agent->browser)} {escape($autologin_info->user_agent->version)} ({escape($autologin_info->user_agent->os)}) + + + {zdate($autologin_info->regdate, 'Y-m-d H:i')} ({$autologin_info->ipaddress}) + + + + + +
  • +
+
+
+ + + diff --git a/modules/member/m.skins/rx_prn/comment_list.html b/modules/member/m.skins/rx_prn/comment_list.html new file mode 100644 index 000000000..c79de575e --- /dev/null +++ b/modules/member/m.skins/rx_prn/comment_list.html @@ -0,0 +1,39 @@ + +
+

{$member_title = lang('member.cmd_view_own_comment')}

+
+ {lang('common.total')}: {number_format($total_count)} +
+ +
+ + + diff --git a/modules/member/m.skins/rx_prn/common_footer.html b/modules/member/m.skins/rx_prn/common_footer.html new file mode 100644 index 000000000..c63a94a2b --- /dev/null +++ b/modules/member/m.skins/rx_prn/common_footer.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/common_header.html b/modules/member/m.skins/rx_prn/common_header.html new file mode 100644 index 000000000..280bbbedc --- /dev/null +++ b/modules/member/m.skins/rx_prn/common_header.html @@ -0,0 +1,76 @@ + + + + {@ + if(!$layout_info->primary_color) + $layout_info->primary_color = 'red'; + if(!$layout_info->primary_color && $layout_info->customized_primary_color) + $layout_info->primary_color = 'customized'; + if(!$layout_info->customized_primary_color) + $layout_info->customized_primary_color = '#f44336'; + } + + + {@$layout_info->primary_color = 'red';} + +{@ + $material_colors = array( + 'red' => '#f44336', + 'crimson' => '#aa0000', + 'pink' => '#e91e63', + 'purple' => '#9c27b0', + 'deep-purple' => '#673ab7', + 'indigo' => '#3f51b5', + 'deep-blue' => '#00397f', + 'blue' => '#2196f3', + 'light-blue' => '#03a9f4', + 'cyan' => '#00bcd4', + 'teal' => '#009688', + 'green' => '#4caf50', + 'light-green' => '#8bc34a', + 'lime' => '#cddc39', + 'yellow' => '#ffeb3b', + 'amber' => '#ffc107', + 'orange' => '#ff9800', + 'deep-orange' => '#ff5722', + 'brown' => '#795548', + 'grey' => '#9e9e9e', + 'blue-grey' => '#607d8b', + 'black' => '#000000', + 'white' => '#ffffff', + 'customized' => $layout_info->customized_primary_color, + ); +} + +{@$colorset = $material_colors[$member_config->colorset];} +{@$skin_color = $material_colors[$layout_info->primary_color];} + + + {@$skin_color = trim($colorset)} + + {@$skin_color = trim($colorset)[1].trim($colorset)[1].trim($colorset)[2].trim($colorset)[2].trim($colorset)[3].trim($colorset)[3]} + + + {@$skin_color = '#f44336'} + + + + + {@$skin_color = $layout_info->primary_color} + + {@$skin_color = $layout_info->primary_color[1].$layout_info->primary_color[1].$layout_info->primary_color[2].$layout_info->primary_color[2].$layout_info->primary_color[3].$layout_info->primary_color[3]} + + + {@$skin_color = '#f44336'} + + +{@Context::set('prn_less_value', array('red' => hexdec(substr($skin_color, 1, 2)), 'green' => hexdec(substr($skin_color, 3, 2)), 'blue' => hexdec(substr($skin_color, 5, 2)) ))} + +
+
+ +
\ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/confirm_member_account_mail.html b/modules/member/m.skins/rx_prn/confirm_member_account_mail.html new file mode 100644 index 000000000..392d46945 --- /dev/null +++ b/modules/member/m.skins/rx_prn/confirm_member_account_mail.html @@ -0,0 +1,19 @@ +
+
+

{lang('member.msg_confirm_account_info')}

+
+
{lang('member.site')}
+
+ {getUrl()} +
+ +
{lang($name)}
+
{$value}
+
+
+

+ {lang('member.msg_confirm_account_comment')}
+ {$auth_url} +

+
+
\ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/confirm_member_new_email.html b/modules/member/m.skins/rx_prn/confirm_member_new_email.html new file mode 100644 index 000000000..0a0600b53 --- /dev/null +++ b/modules/member/m.skins/rx_prn/confirm_member_new_email.html @@ -0,0 +1,19 @@ +
+
+

{lang('member.msg_confirm_account_info')}

+
+
{lang('member.site')}
+
+ {getUrl()} +
+ +
{lang($name)}
+
{$value}
+
+
+

+ {sprintf($lang->msg_confirm_email_address_change, $newEmail)}
+ {$auth_url} +

+
+
\ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/css/css.less b/modules/member/m.skins/rx_prn/css/css.less new file mode 100644 index 000000000..216fb139f --- /dev/null +++ b/modules/member/m.skins/rx_prn/css/css.less @@ -0,0 +1,506 @@ +@charset "UTF-8"; +/* + @method .text-contrast() + @author misol + @brief Select a text color according to WCAG 2.0 contrast guideline. The calcualtion of contrast follows the formula on the guideline. +*/ +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) { + color: @bright_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) { + color: @dark_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) > 4.5 * @multi ) { + color: @bright_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) =< 4.5 * @multi ) { + .text-contrast(@bg_color; lighten(@bright_color, 5%); @dark_color; @multi; @i + 1); +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 4.5 * @multi ) { + color: @dark_color; +} +.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 4.5 * @multi ) { + .text-contrast(@bg_color; @bright_color; darken(@dark_color, 5%); @multi; @i + 1); +} + +/* + @method .bg-contrast() + @author misol + @brief Select a background color, which has less contrast background color than WCAG 2.0 contrast guideline. On the WCAG 2.0 guideline, bigger string can have less contrast as 3.0. +*/ +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) { + background: @bright_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) { + background: @dark_color; +} + +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) > 3 * @multi ) { + background: @bright_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) =< 3 * @multi ) { + .bg-contrast(@text_color; lighten(@bright_color,3%); @dark_color; @multi; @i + 1); +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 3 * @multi ) { + background: @dark_color; +} +.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 3 * @multi ) { + .bg-contrast(@text_color; @bright_color; darken(@dark_color, 3%); @multi; @i + 1); +} + +/* As LESS library in Rhymix substitude variables as an strings, convert colors as the color objects of LESS. */ +@color: rgb(@red, @green, @blue); + + +/* As this file handle some wild-selectors to control display settings, hide inline script and style codes. */ +script, style +{ + display:none!important; +} + +/* Member skin container, default settings */ + +.rx_prn_member +{ + /* font-size */ + .font-xl() + { + /* font-size: 45; 1 */ + font-size: 1.25em; + } + .font-l() + { + /* font-size: 40; 1_2, 1_3, 2_1, 4, 5_1 */ + font-size: 1.11em; + } + .font-m() + { + /* font-size: 36; 1_4, 2_2, 4_1, 5_2 */ + font-size: 1em; + } + .font-s() + { + /* font-size: 30; 2_3, 3_1, 5_3 */ + font-size: 0.833em; + } + + + /* font-weight */ + .font-bold() + { + font-weight: 700; + } + + /* font-color */ + .font-point() + { + /* 4, 4_1 */ + color: lighten(@color, 5%) + } + + .font-dark() + { + color: #484848 + } + .font-gray() + { + color: #757575 + } + .font-light() + { + color: #bdbdbd + } + + + .background-lightgray() + { + background-color: #fafafa + } + .background-gray() + { + background-color: #bdbdbd + } + .background-lightpoint() + { + color: lighten(@color, 10%) + } + .background-point() + { + color: @color + } + + + font-family: "맑은 고딕", "Apple SD Gothic Neo","나눔고딕",NanumGothic,'Nanum Gothic',Arial,Helvetica,sans-serif; + font-size: 14px; + text-align: justify; + margin: 8px 0px; + padding: 0 5px; + .font-dark(); + + + a + { + .font-dark(); + text-decoration: none; + } + + .pos-right + { + position:absolute; + right:0 + } + + /* Tab over the main content. */ + div.rx_prn_tab{ + background: #ffffff; + margin: 5px 0 0; + box-sizing: border-box; + overflow: hidden; + width:100%; + ul.rx_prn_tab{ + margin: 0; + padding: 0; + list-style: outside none none; + display: block; + text-decoration: none; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + &>li { + display:inline-block; + line-height: 1.5; + position: relative; + padding: 0 10px; + a { + display:inline-block; + letter-spacing: -1px; + line-height: 3; + border-bottom: solid 3px #fff; + padding: 0 5px; + .font-l(); + .font-bold(); + } + a:hover, a:focus, &.active a{ + border-bottom: solid 3px @color; + } + } + } + } + + + /* member forms */ + .prn-narrow + { + max-width:400px; + margin:0px auto; + box-sizing:border-box; + } + .prn-body + { + box-sizing:border-box; + border-radius: 25px; + .background-lightgray(); + margin: 0 0 17px; + padding: 1px 0; + &>* + { + padding: 20px; + margin:0; + border: 0; + } + h1 + { + padding: 15px 5px; + margin: 5px 15px; + border-bottom: 1px solid #d1d1d1; + .font-l(); + .font-bold(); + } + dl { + position: relative; + padding:0; + margin:20px; + &>div + { + clear:both; + } + dt { + width: 33%; + max-width: 300px; + .font-bold(); + float:left; + } + dt, dd { + list-style: outside none none; + box-sizing: border-box; + display: inline-block; + margin: 0; + padding: 7px 0; + border: none; + line-height: 1.6; + .font-m(); + } + } + .prn-anchor-buttons + { + margin: 5px 0px; + &>a, &>label, &>button, &>select, &>input[type="submit"] + { + display: block; + width: 100%; + -webkit-appearance: none; + box-sizing: border-box; + border-top: none; + border-right: none; + border-bottom: 1px solid #d1d1d1; + border-left: none; + border-radius: 0px; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + text-align: center; + .font-m(); + .font-point(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + &:first-child + { + border-top: 1px solid #d1d1d1; + } + } + } + } + form + { + overflow: hidden; + width:100%; + white-space: normal; + box-sizing: border-box; + div.control-group + { + &>* + { + display:block; + position:relative; + box-sizing: border-box; + width:100%; + height: auto; + margin:0px; + margin-top: 10px; + } + &>*:first-child + { + margin-top: 0; + } + &>input, &>select, button, #prn_profile_imagetag label.prn_button + { + border: 1px solid #d1d1d1; + height: auto; + border-radius: 25px; + margin-top: 0; + padding: 8px 15px; + -webkit-appearance: none; + line-height: 2; + .font-gray(); + .font-m(); + } + &>label, &>div.control-label + { + font-weight: bold; + border:0; + } + } + } + form input[type="submit"], form input.btn.dateRemover, form button, label.prn_button + { + padding: 10px; + vertical-align: bottom; + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 3.0); + font-weight: bold; + text-shadow: none; + border:0; + color: #000; + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + form div.control-group>input[type="submit"], .prn-footer{ + margin: 20px 0 0; + } + div.prn-profile_image + { + text-align: center; + img + { + border-radius: 50%; + } + #prn_profile_imagetag { + position:relative; + button, label.prn_button + { + padding : 12px 15px; + line-height:1; + position:absolute; + bottom: 0; + right:0; + } + } + } + .prn-footer.prn-anchor-buttons { + text-align:right; + &>a { + display:inline-block; + } + } + + /* message; error, info, update */ + .rx_member-notice, .rx_member-notice.info + { + .bg-contrast(#000; lighten(@color, 5%); darken(@color, 5%); 5.0); + color: #000; + border-radius: 15px; + padding: 15px; + margin: 10px; + margin-top:0; + text-align: justify; + .font-gray(); + .font-m(); + } + .rx_member-notice.error + { + background: #fff3e0; + .text-contrast(#fff3e0); + } + .rx_member-notice.update + { + background: #e8f5e9; + .text-contrast(#e8f5e9); + } + .rx_member-notice>* + { + padding: 0; + margin:0; + } + + /* The list of document style */ + .rx_sw_list .cont_a { + color: #222; + display: block; + letter-spacing: -1px; + line-height: 18px; + margin: 0; + overflow: hidden; + padding: 0.667em 70px 0.733em 15px; + text-overflow: ellipsis; + white-space: nowrap; + text-decoration: none; + &.no_delete { + padding-right: 15px; + } + &:hover, &:focus { + .text-contrast(#fff; darken(@color,5%); lighten(@color,5%)); + } + } + .content_basic{ + position:relative; + display:inline-block; + max-width:100%; + vertical-align: middle; + overflow:hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .content_subinfo + { + color: #9e9e9e; + font-size: 12px; + margin: 0 3px 0 7px; + overflow:hidden; + } + ul.rx_sw_list { + list-style: outside none none; + padding: 0; + margin: 0; + border-bottom: 1px solid #e0e0e0; + li { + position:relative; + border-top: 1px solid #e0e0e0; + overflow: hidden; + padding:0; + } + .content_delete{ + position:absolute; + top:0; + right:2px; + button, a{ + background: lighten(@color, 5%); + font-size: 14px; + border:0; + border-radius: 25px; + .text-contrast(lighten(@color, 5%)); + padding: 10px 15px; + vertical-align: bottom; + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + input[type="checkbox"] + { + width: 30px; + height: 30px; + } + } + } + .pagination ul + { + display:block; + list-style: outside none none; + text-align:center; + padding: 0; + margin: 0; + li{ + display:inline-block; + &>a + { + display: inline-block; + border-radius: 50%; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + .font-m(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + &.active>a + { + background-color: #d1d1d1; + font-weight:bold; + color:#000; + } + } + } + .prn-footer + { + &>a + { + display: block; + border-radius: 25px; + border: 1px solid #d1d1d1; + background-color: #fff; + padding: 10px 15px; + text-decoration: none; + text-align: center; + .font-m(); + &:hover, &:focus + { + .bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0); + } + } + } +} + diff --git a/modules/member/m.skins/rx_prn/document_list.html b/modules/member/m.skins/rx_prn/document_list.html new file mode 100644 index 000000000..ea7c3c0d0 --- /dev/null +++ b/modules/member/m.skins/rx_prn/document_list.html @@ -0,0 +1,45 @@ + +
+

{$member_title = lang('member.cmd_view_own_document')}

+
+ {lang('common.total')}: {number_format($total_count)} +
+ +
+ + + diff --git a/modules/member/m.skins/rx_prn/find_member_account.html b/modules/member/m.skins/rx_prn/find_member_account.html new file mode 100644 index 000000000..eb3cf0e1d --- /dev/null +++ b/modules/member/m.skins/rx_prn/find_member_account.html @@ -0,0 +1,86 @@ + +
+

{lang('member.cmd_find_member_account_with_email')}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+

{lang('member.about_find_member_account')}

+
+ + + + + +
+ + + {$captcha}
+ +
+
+
+
+

{$lang->cmd_find_member_account_with_email_question}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+

{lang('member.about_find_account_question')}

+
+ + + + + + + +
+ + + + + + +
+
+ +
+
+ {$captcha}
+ +
+
+
+
+

{lang('member.cmd_resend_auth_mail')}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+

{lang('member.about_resend_auth_mail')}

+
+ + + + +
+ +
+ {$captcha}
+ +
+
+
+ \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/find_member_account_mail.html b/modules/member/m.skins/rx_prn/find_member_account_mail.html new file mode 100644 index 000000000..c1ed9dc2c --- /dev/null +++ b/modules/member/m.skins/rx_prn/find_member_account_mail.html @@ -0,0 +1,21 @@ +
+
+

{lang('member.msg_find_account_info')}

+
+
{lang('member.site')}
+
+ {getUrl()} +
+ +
{lang($name)}
+
{$value}
+
+
{lang('common.password')}
+
{$auth_args->new_password}
+
+

+ {lang('member.msg_find_account_comment')}
+ {$find_url} +

+
+
\ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/find_temp_password.html b/modules/member/m.skins/rx_prn/find_temp_password.html new file mode 100644 index 000000000..ca699b53e --- /dev/null +++ b/modules/member/m.skins/rx_prn/find_temp_password.html @@ -0,0 +1,12 @@ + +
+

{lang('member.cmd_find_member_account')}

+
{lang('member.about_temp_password')}
+
+
{lang('common.user_id')}
+
{$user_id}
+
{lang('member.temp_password')}
+
{$temp_password}
+
+
+ diff --git a/modules/member/m.skins/rx_prn/images/member.png b/modules/member/m.skins/rx_prn/images/member.png new file mode 100644 index 000000000..120d3b48b Binary files /dev/null and b/modules/member/m.skins/rx_prn/images/member.png differ diff --git a/modules/member/m.skins/rx_prn/images/member.svg b/modules/member/m.skins/rx_prn/images/member.svg new file mode 100644 index 000000000..46ebe44cc --- /dev/null +++ b/modules/member/m.skins/rx_prn/images/member.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/modules/member/m.skins/rx_prn/js/member.js b/modules/member/m.skins/rx_prn/js/member.js new file mode 100644 index 000000000..f346449f1 --- /dev/null +++ b/modules/member/m.skins/rx_prn/js/member.js @@ -0,0 +1,185 @@ +/* 사용자 추가 */ +function completeInsert(ret_obj, response_tags, args, fo_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + var redirect_url = ret_obj['redirect_url']; + + alert(message); + + if(current_url.getQuery('popup')==1) { + if(typeof(opener)!='undefined') opener.location.reload(); + window.close(); + } else { + if(redirect_url) location.href = redirect_url; + else location.href = current_url.setQuery('act',''); + } +} + +/* 정보 수정 */ +function completeModify(ret_obj, response_tags, args, fo_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + alert(message); + + location.href = current_url.setQuery('act','dispMemberInfo'); +} + +/* 회원 탈퇴 */ +function completeLeave(ret_obj, response_tags, args, fo_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + alert(message); + + location.href = current_url.setQuery('act',''); +} + +/* 이미지 업로드 */ +function _doUploadImage(fo_obj, act) { + fo_obj.act.value = act; + fo_obj.submit(); +} + +/* 프로필 이미지/ 이미지 이름/마크 등록 */ +function doUploadProfileImage() { + var fo_obj = get_by_id("fo_insert_member"); + if(!fo_obj.profile_image.value) return; + _doUploadImage(fo_obj, 'procMemberInsertProfileImage'); +} +function doUploadImageName() { + var fo_obj = get_by_id("fo_insert_member"); + if(!fo_obj.image_name.value) return; + _doUploadImage(fo_obj, 'procMemberInsertImageName'); +} + +function doUploadImageMark() { + var fo_obj = get_by_id("fo_insert_member"); + if(!fo_obj.image_mark.value) return; + _doUploadImage(fo_obj, 'procMemberInsertImageMark'); +} + + +/* 로그인 후 */ +function completeLogin(ret_obj, response_tags, params, fo_obj) { + if(fo_obj.remember_user_id && fo_obj.remember_user_id.checked) { + var expire = new Date(); + expire.setTime(expire.getTime()+ (7000 * 24 * 3600000)); + setCookie('user_id', fo_obj.user_id.value, expire); + } + + var url = current_url.setQuery('act',''); + location.href = current_url.setQuery('act',''); +} + +/* 로그아웃 후 */ +function completeLogout(ret_obj) { + location.href = current_url.setQuery('act',''); +} + +/* 인증 메일 재발송 후 */ +function completeResendAuthMail(ret_obj, response_tags) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + if(message) alert(message); + if(error != 0) alert(error); +} + +/* 프로필 이미지, 이미지 이름, 마크 삭제 */ +function doDeleteProfileImage(member_srl) { + if (!member_srl) return; + + if (!confirm(xe.lang.deleteProfileImage)) return false; + + exec_xml( + 'member', + 'procMemberDeleteProfileImage', + {member_srl:member_srl}, + function(){ + $('#profile_imagetag').remove(); + var html = ''; + $('#prn_profile_imagetag').html(html); + }, + ['error','message'] + ); +} + +function doDeleteImageName(member_srl) { + if (!member_srl) return; + + if (!confirm(xe.lang.deleteImageName)) return false; + exec_xml( + 'member', + 'procMemberDeleteImageName', + {member_srl:member_srl}, + function(){jQuery('#image_nametag').remove()}, + ['error','message'] + ); +} + +function doDeleteImageMark(member_srl) { + if (!member_srl) return; + + if (!confirm(xe.lang.deleteImageMark)) return false; + exec_xml( + 'member', + 'procMemberDeleteImageMark', + {member_srl:member_srl}, + function(){jQuery('#image_marktag').remove()}, + ['error','message'] + ); +} + +/* 스크랩 삭제 */ +function doDeleteScrap(document_srl) { + var params = new Array(); + params['document_srl'] = document_srl; + exec_xml('member', 'procMemberDeleteScrap', params, function() { location.reload(); }); +} + +/* 비밀번호 찾기 후 */ +function completeFindMemberAccount(ret_obj, response_tags) { + alert(ret_obj['message']); +} + +/* 임시 비밀번호 생성 */ +function completeFindMemberAccountByQuestion(ret_obj, response_tags) { + if(ret_obj['error'] != 0){ + alert(ret_obj['message']); + }else{ + location.href = current_url.setQuery('act','dispMemberGetTempPassword').setQuery('user_id',ret_obj['user_id']); + } +} + +/* 저장글 삭제 */ +function doDeleteSavedDocument(document_srl, confirm_message) { + if(!confirm(confirm_message)) return false; + + var params = new Array(); + params['document_srl'] = document_srl; + exec_xml('member', 'procMemberDeleteSavedDocument', params, function() { location.reload(); }); +} + +function insertSelectedModule(id, module_srl, mid, browser_title) { + location.href = current_url.setQuery('selected_module_srl',module_srl); +} + +function isRxPrnTouchable() { + var el = document.createElement('div'); + el.setAttribute('ontouchstart', 'return;'); // or try "ontouchstart" + return typeof el.ontouchstart === "function"; +} + +$(document).ready(function() { + if(isRxPrnTouchable()) { + $(".rx_prn_member div.rx_prn_tab ul.rx_prn_tab").css('white-space', 'nowrap'); + try + { + $(".rx_prn_member div.rx_prn_tab ul.rx_prn_tab").animate({ + scrollLeft: $(".rx_prn_member div.rx_prn_tab ul.rx_prn_tab li.active").offset().left + }, 300); + } catch (e) { + } + } +}); \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/js/signup_check.js b/modules/member/m.skins/rx_prn/js/signup_check.js new file mode 100644 index 000000000..3215c03d3 --- /dev/null +++ b/modules/member/m.skins/rx_prn/js/signup_check.js @@ -0,0 +1,79 @@ +/** + * @brief 회원 가입시나 정보 수정시 각 항목의 중복 검사하고 화면에 바로 나타냄 + * @author misol + * @author NAVER (developer@xpressengine.com) + **/ +// body 에서 불러오면 가능 +$('#rx_insert_member :input').filter('[name=user_id],[name=nick_name],[name=email_address]').blur(rxMemberCheckValue); + +// 실제 서버에 특정 필드의 value check를 요청하고 이상이 있으면 메세지를 뿌려주는 함수 +function rxMemberCheckValue(event) { + var field = event.target; + var _name = field.name; + var _value = field.value; + if(!_name || !_value) return; + + var params = {name:_name, value:_value}; + var response_tags = ['error','message','message_type']; + + exec_xml('member','procMemberCheckValue', params, dispMemberValueCheck, response_tags, field); +} + +// 서버에서 응답이 올 경우 이상이 있으면 메세지를 출력 +function dispMemberValueCheck(response, response_tags, field) { + var _id = 'rx_sw_dummy-'+field.name; + var dummy = $('#'+_id); + + if(response['message']=='success') { + dummy.html('').hide(); + return; + } + + if (!dummy.length) { + dummy = $('

').attr('id', _id) + $(field).after(dummy); + } + + dummy.html(response['message']).show(); +} + +$(document).ready(function(){ + // label for setup + $('.control-label[for]').each(function(){ + var $this = $(this); + if($this.attr('for') == ''){ + $this.attr('for', $this.next().children(':visible:first').attr('id')); + } + }); + // image input + var html = ''; + if(prn_profile_image.exists !== false) + { + html = ''; + } + else + { + html = ''; + } + $('#profile_image') + .after('

') + .css('display','none') + .change(function() { + if (this.files && this.files[0]) { + var reader = new FileReader(); + reader.onload = function (e) { + $('#prn_profile_imagetag img').attr('src', e.target.result); + } + reader.readAsDataURL(this.files[0]); + } else { + $('#prn_profile_imagetag img').attr('src', './modules/member/m.skin/rx_prn/images/member.svg').attr('width', prn_profile_image.width).attr('height', prn_profile_image.height); + } + }); + // label for profile images + $('#profile_imagetag').each(function() { + $(this).html(function(i, oldhtml) { + $(this).attr('id', ''); + return ''; + }); + }); +}); \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/lang/en.php b/modules/member/m.skins/rx_prn/lang/en.php new file mode 100644 index 000000000..00a84f466 --- /dev/null +++ b/modules/member/m.skins/rx_prn/lang/en.php @@ -0,0 +1,2 @@ +member_rx_prn_about_star = 'Items with an asterisk * are required.'; \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/lang/ja.php b/modules/member/m.skins/rx_prn/lang/ja.php new file mode 100644 index 000000000..6dd311d30 --- /dev/null +++ b/modules/member/m.skins/rx_prn/lang/ja.php @@ -0,0 +1,2 @@ +member_rx_prn_about_star = 'アスタリスク*のある項目は必須項目です。'; \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/lang/ko.php b/modules/member/m.skins/rx_prn/lang/ko.php new file mode 100644 index 000000000..ce7964dae --- /dev/null +++ b/modules/member/m.skins/rx_prn/lang/ko.php @@ -0,0 +1,2 @@ +member_rx_prn_about_star = '별표*가 있는 항목은 필수 항목입니다.'; \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/leave_form.html b/modules/member/m.skins/rx_prn/leave_form.html new file mode 100644 index 000000000..80b2de4e2 --- /dev/null +++ b/modules/member/m.skins/rx_prn/leave_form.html @@ -0,0 +1,28 @@ + +
+
+

{$member_title = $lang->msg_leave_member}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+

{$lang->about_rechecked_password}

+
+ + + + +
+ + + + + +
+
+
+
+ diff --git a/modules/member/m.skins/rx_prn/login_form.html b/modules/member/m.skins/rx_prn/login_form.html new file mode 100644 index 000000000..580142657 --- /dev/null +++ b/modules/member/m.skins/rx_prn/login_form.html @@ -0,0 +1,53 @@ + +
+
+

{lang('member.cmd_login')}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + +
+ + + + + + +
+ {lang('member.about_keep_warning')} +
+ +
+
+
+ +
+ + diff --git a/modules/member/m.skins/rx_prn/logout.html b/modules/member/m.skins/rx_prn/logout.html new file mode 100644 index 000000000..c9b16e147 --- /dev/null +++ b/modules/member/m.skins/rx_prn/logout.html @@ -0,0 +1,16 @@ + +
+
+

{lang('member.cmd_logout')}

+

{lang('common.confirm_logout')}

+
+ + + +
+ +
+
+
+
+ diff --git a/modules/member/m.skins/rx_prn/member_info.html b/modules/member/m.skins/rx_prn/member_info.html new file mode 100644 index 000000000..862036b4c --- /dev/null +++ b/modules/member/m.skins/rx_prn/member_info.html @@ -0,0 +1,32 @@ + +
+
+

{$lang->member_info}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+ +
+ {$item->value} +
+
+
+
+
{$item->title}*
{$item->value}
+
+
{$lang->member_group}
{implode(', ', $memberInfo['group_list'])}
+
{$lang->signup_date}
{zdate($memberInfo[regdate],"Y-m-d")}
+
+
{$lang->last_login}
+
{zdate($memberInfo[last_login],"Y-m-d")}
+
+
+ +
+
+ \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/member_nick.html b/modules/member/m.skins/rx_prn/member_nick.html new file mode 100644 index 000000000..fbd185fce --- /dev/null +++ b/modules/member/m.skins/rx_prn/member_nick.html @@ -0,0 +1,37 @@ + +
+

{$member_title = $lang->cmd_modify_nickname_log}

+ + + + + + + + + + + + + + + + +
{$lang->date}{$lang->nick_name_before_changing}{$lang->nick_name_after_changing}
+ {zdate($val->regdate,"Y-m-d H:i:s")} + + {$val->before_nick_name} + + {$val->after_nick_name} +
+
+ + \ No newline at end of file diff --git a/modules/member/m.skins/rx_prn/modify_email_address.html b/modules/member/m.skins/rx_prn/modify_email_address.html new file mode 100644 index 000000000..d5475b1d7 --- /dev/null +++ b/modules/member/m.skins/rx_prn/modify_email_address.html @@ -0,0 +1,17 @@ + +

{$lang->cmd_modify_member_email_address}

+

{$lang->about_modify_member_email_address}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + + + + + +
+ diff --git a/modules/member/m.skins/rx_prn/modify_info.html b/modules/member/m.skins/rx_prn/modify_info.html new file mode 100644 index 000000000..ff1ead74a --- /dev/null +++ b/modules/member/m.skins/rx_prn/modify_info.html @@ -0,0 +1,90 @@ + + + + + + +
+
+

{$lang->msg_update_member}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+

{lang('member_rx_prn_about_star')}

+
+
+ + + + + + +
+ +
+ {$item->inputTag} +
+
+ + + + + {$formTag->inputTag} + {$editor} + + +
+ + +
+ +
+ +
+ +
+
+
+ +
+ diff --git a/modules/member/m.skins/rx_prn/modify_password.html b/modules/member/m.skins/rx_prn/modify_password.html new file mode 100644 index 000000000..a3ab5512f --- /dev/null +++ b/modules/member/m.skins/rx_prn/modify_password.html @@ -0,0 +1,37 @@ + + +
+

{$member_title = $lang->cmd_modify_member_password}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + + + + + +
+ + + + + + {$lang->about_password_strength[$member_config->password_strength]} + + + +
+
+
+ diff --git a/modules/member/m.skins/rx_prn/rechecked_password.html b/modules/member/m.skins/rx_prn/rechecked_password.html new file mode 100644 index 000000000..c1570c8c5 --- /dev/null +++ b/modules/member/m.skins/rx_prn/rechecked_password.html @@ -0,0 +1,28 @@ + +
+
+

{$lang->msg_rechecked_password}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+

{$lang->about_rechecked_password}

+
+ + + + +
+ + + + + +
+
+
+
+ diff --git a/modules/member/m.skins/rx_prn/resend_auth_mail.html b/modules/member/m.skins/rx_prn/resend_auth_mail.html new file mode 100644 index 000000000..25becead6 --- /dev/null +++ b/modules/member/m.skins/rx_prn/resend_auth_mail.html @@ -0,0 +1,21 @@ + +
+

{$lang->cmd_resend_auth_mail}

+
{lang('member.about_resend_auth_mail')}
+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+ + + +
+ + + +
+
+
+ diff --git a/modules/member/m.skins/rx_prn/reset_mail.html b/modules/member/m.skins/rx_prn/reset_mail.html new file mode 100644 index 000000000..3870e4579 --- /dev/null +++ b/modules/member/m.skins/rx_prn/reset_mail.html @@ -0,0 +1,41 @@ + +
+

{$lang->cmd_resend_auth_mail}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
{sprintf($lang->about_reset_auth_mail, $memberInfo->email_address)}
+
+ + + + +
+ + + +
+
+
+
+

{lang('member.cmd_send_auth_new_emaill_address')}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
{lang('member.about_reset_auth_mail_submit')}
+
+ + + +
+ + + +
+
+
+ diff --git a/modules/member/m.skins/rx_prn/saved_list.html b/modules/member/m.skins/rx_prn/saved_list.html new file mode 100644 index 000000000..def588105 --- /dev/null +++ b/modules/member/m.skins/rx_prn/saved_list.html @@ -0,0 +1,36 @@ + +
+

{$member_title = lang('member.cmd_view_saved_document')}

+
{lang('common.total')}: {number_format($total_count)}
+ +
+ + diff --git a/modules/member/m.skins/rx_prn/scrapped_list.html b/modules/member/m.skins/rx_prn/scrapped_list.html new file mode 100644 index 000000000..6589fd418 --- /dev/null +++ b/modules/member/m.skins/rx_prn/scrapped_list.html @@ -0,0 +1,36 @@ + +
+

{$member_title = lang('member.cmd_view_scrapped_document')}

+
{lang('common.total')}: {number_format($total_count)}
+ +
+ + diff --git a/modules/member/m.skins/rx_prn/signup_form.html b/modules/member/m.skins/rx_prn/signup_form.html new file mode 100644 index 000000000..085e2845b --- /dev/null +++ b/modules/member/m.skins/rx_prn/signup_form.html @@ -0,0 +1,117 @@ + + + + + + +
+
+

{lang('member.cmd_signup')}

+
+

{$XE_VALIDATOR_MESSAGE}

+
+
+

{lang('member_rx_prn_about_star')}

+
+
+ + + +
+
+ {$member_config->agreement} +
+
+ +
+
+
+ +
+ {$item->inputTag} +
+
+ + +

+ {$lang->msg_email_confirmation_required} +

+ + +

{lang('member.about_password_strength')[$member_config->password_strength]}

+ + + + + + {$formTag->inputTag} +

+ {$lang->msg_email_confirmation_required} +

+
+ + + {$editor} + +
+
{$lang->allow_mailing}
+
+ + +
+
{$lang->allow_message}
+
+ +
+ +
{$lang->captcha}
+
{$captcha}
+
+ +
+
+
+
+ + diff --git a/modules/member/m.skins/rx_prn/skin.xml b/modules/member/m.skins/rx_prn/skin.xml new file mode 100644 index 000000000..693643a74 --- /dev/null +++ b/modules/member/m.skins/rx_prn/skin.xml @@ -0,0 +1,108 @@ + + + 필요할 때 라이믹스 + Rhymix PRN + 필요할 때 꺼내보는 라이믹스. 캡슐 모양의 둥근 라이믹스 회원 모듈 스킨입니다. + You need Rhymix. A member skin with round, capsule-like shapes. + 0.1 + 2017-08-06 + + misol + misol + + + 마더캣 + Mothercat + + + + + 사이트 테마 색 + The site theme color + + + 붉은 색 + Red + + + 크림슨 + Crimson + + + 분홍 + Pink + + + 보라 + Purple + + + 진보라 + Deep Purple + + + 인디고 + Indigo + + + 짙은 파랑 + Deep Blue + + + 파랑 + Blue + + + 밝은 파랑 + Light Blue + + + 시안 + Cyan + + + + Teal + + + 초록 + Green + + + 연한 초록 + Light Green + + + 라임 + Lime + + + 노랑 + Yellow + + + 앰버 + Amber + + + 주황 + Orange + + + 진한 주황 + Deep Orange + + + 갈색 + Brown + + + 회색 + Grey + + + 푸른 회색 + Blue Grey + + + diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index cd21dd066..32ab709ba 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -974,6 +974,7 @@ class memberController extends member $profile_image = $oMemberModel->getProfileImage($member_srl); FileHandler::removeFile($profile_image->file); Rhymix\Framework\Storage::deleteEmptyDirectory(dirname(FileHandler::getRealPath($profile_image->file)), true); + $this->_clearMemberCache($member_srl); } return new Object(0,'success'); }