From eee4e0c67624c743292185e371765faa797520e8 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 19:40:13 +0900 Subject: [PATCH 01/22] =?UTF-8?q?=EC=97=86=EB=8A=94=EA=B2=83=EB=B3=B4?= =?UTF-8?q?=EB=8B=A8=20=EB=82=98=EC=9D=80=20=ED=9A=8C=EC=9D=98=EC=8B=A4=20?= =?UTF-8?q?css?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/css/board.css | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/hwe/css/board.css b/hwe/css/board.css index e69de29b..ff874676 100644 --- a/hwe/css/board.css +++ b/hwe/css/board.css @@ -0,0 +1,25 @@ +#newArticle{ + width:1000px; + margin: 0 auto; +} + +.contentInput{ + width:100%; +} + +.articleFrame{ + width:1000px; + margin: 20px auto; +} + +.commentText{ + width:800px; +} + +.authorPlate .date{ + float:right; +} + +.comment .date{ + float:right; +} \ No newline at end of file From bb54d732d0fb38af3eda03333f3404a76320cbb1 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 19:46:32 +0900 Subject: [PATCH 02/22] =?UTF-8?q?=EC=88=98=EB=9D=BD=20=EB=B6=88=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/DiplomaticMessage.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hwe/sammo/DiplomaticMessage.php b/hwe/sammo/DiplomaticMessage.php index 9541072e..183d2e0a 100644 --- a/hwe/sammo/DiplomaticMessage.php +++ b/hwe/sammo/DiplomaticMessage.php @@ -64,7 +64,7 @@ class DiplomaticMessage extends Message{ return [self::INVALID, '송신자가 외교서신을 처리할 수 없습니다.']; } - $permission = checkSecretPermission($general); + $permission = checkSecretPermission($general, false); if(!$general || $permission < 4){ return [self::INVALID, '해당 국가의 외교권자 아닙니다.']; @@ -273,7 +273,7 @@ class DiplomaticMessage extends Message{ $gameStor = KVStorage::getStorage($db, 'game_env'); $general = $db->queryFirstRow( - 'SELECT `name`, `level`, `permission`, `penalty` FROM general WHERE `no`=%i AND nation=%i', + 'SELECT `name`, nation, `level`, `permission`, `penalty` FROM general WHERE `no`=%i AND nation=%i', $receiverID, $this->dest->nationID ); From c2c40abbb48626a9454a424403b8c92cd1d0d62c Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 19:49:29 +0900 Subject: [PATCH 03/22] =?UTF-8?q?=EC=99=B8=EA=B5=90=EA=B6=8C=EC=9E=90=20?= =?UTF-8?q?=EA=B8=B0=EB=B0=80=EC=8B=A4=20=EB=B2=84=ED=8A=BC=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/func_template.php | 3 ++- hwe/templates/commandButton.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hwe/func_template.php b/hwe/func_template.php index 6f33731d..abe5338f 100644 --- a/hwe/func_template.php +++ b/hwe/func_template.php @@ -163,7 +163,8 @@ function commandButton() { 'fgColor'=>$fgColor, 'meLevel'=>$me['level'], 'nationLevel'=>$nation['level'], - 'showSecret'=>$showSecret + 'showSecret'=>$showSecret, + 'permission'=>$permission, ]); } diff --git a/hwe/templates/commandButton.php b/hwe/templates/commandButton.php index 4b0c5cb8..3a1d174a 100644 --- a/hwe/templates/commandButton.php +++ b/hwe/templates/commandButton.php @@ -1,7 +1,7 @@
- + From 82f59ef5a21ebc251c00c478cd1bba9a525afca3 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 20:17:36 +0900 Subject: [PATCH 04/22] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EB=AC=BC=20=EC=88=9C?= =?UTF-8?q?=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/board.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/js/board.js b/hwe/js/board.js index 84260a74..3ab66dcc 100644 --- a/hwe/js/board.js +++ b/hwe/js/board.js @@ -121,7 +121,7 @@ function drawArticle(idx, articleObj){ var $board = $('#board'); - $board.append($article); + $board.prepend($article); } function drawArticles(articlesObj){ From ffbf2d0a936d847ec17eb728c79b52981e73ab72 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 20:30:02 +0900 Subject: [PATCH 05/22] =?UTF-8?q?=EA=B5=AD=EC=A0=81=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EC=8B=9C=20permission=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/c_myBossInfo.php | 1 + hwe/c_vacation.php | 4 +++- hwe/func.php | 1 + hwe/func_gamerule.php | 2 ++ hwe/j_select_npc.php | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hwe/c_myBossInfo.php b/hwe/c_myBossInfo.php index bbfaa219..7dd2073b 100644 --- a/hwe/c_myBossInfo.php +++ b/hwe/c_myBossInfo.php @@ -150,6 +150,7 @@ if($btn == "추방") { 'level'=>0, 'nation'=>0, 'belong'=>0, + 'permission'=>'normal', ], 'no=%i', $general['no']); } else{ diff --git a/hwe/c_vacation.php b/hwe/c_vacation.php index e93dfb3a..8c825335 100644 --- a/hwe/c_vacation.php +++ b/hwe/c_vacation.php @@ -12,7 +12,9 @@ $gameStor = KVStorage::getStorage($db, 'game_env'); $killturn = $gameStor->killturn; -$db->update('general', ['killturn'=>$killturn*3], 'owner=%i', $userID); +$db->update('general', [ + 'killturn'=>$killturn*3, +], 'owner=%i', $userID); header('location:b_myPage.php'); diff --git a/hwe/func.php b/hwe/func.php index 3cc90380..112e9058 100644 --- a/hwe/func.php +++ b/hwe/func.php @@ -1953,6 +1953,7 @@ function updateTurntime($no) { 'npc'=>$general['npc_org'], 'killturn'=>$general['killturn'], 'mode'=>2, + 'permission'=>'normal', 'name2'=>null ], 'no=%i',$no); diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php index c1490d19..ffff8e60 100644 --- a/hwe/func_gamerule.php +++ b/hwe/func_gamerule.php @@ -776,6 +776,7 @@ function checkMerge() { $db->update('general', [ 'nation'=>0, + 'permission'=>'normal', ], 'nation=%i AND npc = 5', $me['nation']); $query = "delete from nation where nation='{$me['nation']}'"; @@ -922,6 +923,7 @@ function checkSurrender() { $db->update('general', [ 'nation'=>0, + 'permission'=>'normal', ], 'nation=%i AND npc = 5', $me['nation']); $query = "delete from nation where nation='{$me['nation']}'"; diff --git a/hwe/j_select_npc.php b/hwe/j_select_npc.php index 9d57a066..3909a753 100644 --- a/hwe/j_select_npc.php +++ b/hwe/j_select_npc.php @@ -77,6 +77,7 @@ $db->update('general', [ 'npc'=>1, 'killturn'=>6, 'mode'=>2, + 'permission'=>'normal', 'owner'=>$userID, ], 'owner <= 0 AND npc = 2 AND no = %i', $pick); From bf5bda0f85ce181d2246d0ff26a5f33898496b6e Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 22:35:49 +0900 Subject: [PATCH 06/22] =?UTF-8?q?=EB=82=B4=EB=AC=B4=EB=B6=80=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/b_dipcenter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwe/b_dipcenter.php b/hwe/b_dipcenter.php index e6ef0389..7421f780 100644 --- a/hwe/b_dipcenter.php +++ b/hwe/b_dipcenter.php @@ -13,7 +13,7 @@ $connect=$db->get(); increaseRefresh("내무부", 1); -$me = $db->queryFirstRow('SELECT no, nation, level, con, turntime, belong FROM general WHERE owner=%i', $userID); +$me = $db->queryFirstRow('SELECT no, nation, level, con, turntime, belong, permission, penalty FROM general WHERE owner=%i', $userID); $nation = $db->queryFirstRow('SELECT msg, scoutmsg FROM nation WHERE nation = %i', $me['nation']); From 9aff52eaadb2cf0f8693686e82dc879cef57b1fa Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 25 Jan 2019 23:29:35 +0900 Subject: [PATCH 07/22] =?UTF-8?q?=EA=B6=8C=ED=95=9C=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/b_battleCenter.php | 2 +- hwe/b_chiefcenter.php | 2 +- hwe/b_genList.php | 2 +- hwe/c_dipcenter.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hwe/b_battleCenter.php b/hwe/b_battleCenter.php index fdd0fe60..2151adc3 100644 --- a/hwe/b_battleCenter.php +++ b/hwe/b_battleCenter.php @@ -33,7 +33,7 @@ $query = "select nation from general where no='$gen'"; $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), ""); $general = MYDB_fetch_array($result); -$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'"; +$query = "select no,nation,level,con,turntime,belong,permission,penalty from general where owner='{$userID}'"; $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), ""); $me = MYDB_fetch_array($result); diff --git a/hwe/b_chiefcenter.php b/hwe/b_chiefcenter.php index 70b8f167..c01568a7 100644 --- a/hwe/b_chiefcenter.php +++ b/hwe/b_chiefcenter.php @@ -13,7 +13,7 @@ $connect=$db->get(); increaseRefresh("사령부", 1); -$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'"; +$query = "select no,nation,level,con,turntime,belong,permission,penalty from general where owner='{$userID}'"; $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); $me = MYDB_fetch_array($result); diff --git a/hwe/b_genList.php b/hwe/b_genList.php index 604eb05e..005356f0 100644 --- a/hwe/b_genList.php +++ b/hwe/b_genList.php @@ -19,7 +19,7 @@ $connect=$db->get(); increaseRefresh("암행부", 1); -$query = "select no,nation,level,con,turntime,belong from general where owner='{$userID}'"; +$query = "select no,nation,level,con,turntime,belong,permission,penalty from general where owner='{$userID}'"; $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), ""); $me = MYDB_fetch_array($result); diff --git a/hwe/c_dipcenter.php b/hwe/c_dipcenter.php index 71f3b4ce..1e7c0b1d 100644 --- a/hwe/c_dipcenter.php +++ b/hwe/c_dipcenter.php @@ -18,7 +18,7 @@ $userID = Session::getUserID(); $db = DB::db(); -$me = $db->queryFirstRow('SELECT `no`,nation,`level` FROM general WHERE `owner`=%i', $userID); +$me = $db->queryFirstRow('SELECT `no`,nation,`level`,permission,penalty FROM general WHERE `owner`=%i', $userID); //내가 수뇌부이어야함 $permission = checkSecretPermission($me); From e6b2107fa9229050de52f8a762eaa193b353fa55 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 03:31:04 +0900 Subject: [PATCH 08/22] =?UTF-8?q?=EC=99=B8=EA=B5=90=EB=B6=80=20=ED=8B=80?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1=EC=A4=91.=20=EC=9E=AC=EC=95=BC=EC=9D=98?= =?UTF-8?q?=20=EC=99=B8=EA=B5=90=20=EB=A9=94=EC=8B=9C=EC=A7=80=EB=8A=94=20?= =?UTF-8?q?=ED=95=AD=EC=83=81=20=EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/css/diplomacy.css | 58 ++++++++++++++++++++++++++++++ hwe/j_diplomacy_respond_letter.php | 8 ++++- hwe/j_diplomacy_send_letter.php | 38 ++++++++++++++------ hwe/j_msg_get_recent.php | 2 +- hwe/js/diplomacy.js | 7 +++- hwe/sql/schema.sql | 2 +- hwe/t_diplomacy.php | 58 +++++++++++++++++++++++++----- 7 files changed, 150 insertions(+), 23 deletions(-) diff --git a/hwe/css/diplomacy.css b/hwe/css/diplomacy.css index e69de29b..f6ff84bc 100644 --- a/hwe/css/diplomacy.css +++ b/hwe/css/diplomacy.css @@ -0,0 +1,58 @@ +#newLetter { + width:1000px; + margin: 10px auto; +} + +#newLetter th{ + width:16ch; +} + +#newLetter textarea{ + width:100%; + min-height:6em; + color:white; + background-color:transparent; + border:none; +} + +.letterFrame{ + width:1000px; + margin: 10px auto; +} + +.letterFrame th{ + width:16ch; +} + +.letterHeader{ + position: relative; + font-size:200%; +} + +.letterDate{ + position: absolute; + right:1ch; + bottom:0.2em; + font-size:50%; + +} + +.letterBrief, .letterDetail{ + text-align: left; +} + +.letterSignerPlate{ + text-align:center; +} + +.letterSrc, .letterDest{ + display:inline-block; + margin: 0 10px; + border: 1px solid gray; + width:110px; + text-align:center; +} + +.signerNation, .signerName{ + border-top: 1px solid gray; +} diff --git a/hwe/j_diplomacy_respond_letter.php b/hwe/j_diplomacy_respond_letter.php index b2fd78ba..f7e3a283 100644 --- a/hwe/j_diplomacy_respond_letter.php +++ b/hwe/j_diplomacy_respond_letter.php @@ -64,6 +64,12 @@ if($isAgree){ 'aux'=>Json::encode($aux) ], 'no=%i', $letterNo); //TODO: 외교 서신에 대한 메시지를 양국에 발송해야함 + + if($letter['prev_no'] !== null){ + $db->update('ng_diplomacy', [ + 'state'=>'replaced', + ], 'no=%i', $letter['prev_no']); + } } else{ $aux['reason'] = [ @@ -74,7 +80,7 @@ else{ $db->update('ng_diplomacy', [ 'state'=>'cancelled', 'aux'=>Json::encode($aux) - ]); + ], 'no=%i', $letterNo); //TODO: 외교 서신에 대한 메시지를 양국에 발송해야함 } diff --git a/hwe/j_diplomacy_send_letter.php b/hwe/j_diplomacy_send_letter.php index cd54e376..9c229334 100644 --- a/hwe/j_diplomacy_send_letter.php +++ b/hwe/j_diplomacy_send_letter.php @@ -65,18 +65,10 @@ if ($permission < 4) { $srcNationNo = $me['nation']; -$nations = $db->query('SELECT nation, name, color FROM nation WHERE nation IN (%i, %i)', $srcNationNo, $destNationNo); -if(count($nations) != 2){ - Json::die([ - 'result'=>false, - 'reason'=>'올바르지 않은 국가입니다.' - ]); -} - if($prevNo !== null){ //state는 체크하지 않는걸로 하자. 파기한 것을 재 송신하는 경우도 있을 수 있음. $prevLetter = $db->queryFirstRow( - 'SELECT no, state, aux FROM ng_diplomacy WHERE no = %i AND src_nation_id IN (%i, %i) AND dest_nation_id IN (%i, %i)', + 'SELECT no, src_nation_id, dest_nation_id, state, aux FROM ng_diplomacy WHERE no = %i AND src_nation_id IN (%i, %i) AND dest_nation_id IN (%i, %i)', $prevNo, $srcNationNo, $destNationNo, $srcNationNo, $destNationNo @@ -89,6 +81,24 @@ if($prevNo !== null){ ]); } + //새로 나온 문서가 있는지 확인하자 + $newerLetter = $db->queryFirstField( + 'SELECT count(no) FROM ng_diplomacy WHERE prev_no = %i AND state != \'cancelled\'', $prevNo + ); + if($newerLetter){ + Json::die([ + 'result'=>false, + 'reason'=>'해당 문서에 대한 새로운 문서가 이미 있습니다.' + ]); + } + + if($prevLetter['src_nation_id'] != $srcNationNo){ + $destNationNo = $prevLetter['src_nation_id']; + } + else{ + $destNationNo = $prevLetter['dest_nation_id']; + } + if($prevLetter['state'] == 'proposed'){ $prevAux = Json::decode($prevLetter['aux']); $prevAux['reason'] = [ @@ -97,12 +107,20 @@ if($prevNo !== null){ 'reason'=>'new_letter' ]; $db->update('ng_diplomacy', [ - 'state'=>'cancelled', + 'state'=>'replaced', 'aux'=>Json::encode($prevAux) ], 'no=%i', $prevNo); } } +$nations = $db->query('SELECT nation, name, color FROM nation WHERE nation IN (%i, %i)', $srcNationNo, $destNationNo); +if(count($nations) != 2){ + Json::die([ + 'result'=>false, + 'reason'=>'올바르지 않은 국가입니다.' + ]); +} + if($nations[0]['nation'] == $me['nation']){ //index 순서에 따라 또 모름. $srcNation = $nations[0]; diff --git a/hwe/j_msg_get_recent.php b/hwe/j_msg_get_recent.php index 9b127b4e..1f60d3aa 100644 --- a/hwe/j_msg_get_recent.php +++ b/hwe/j_msg_get_recent.php @@ -101,7 +101,7 @@ $result['diplomacy']= array_map(function(Message $msg)use (&$nextSequence, &$min $lastType = 'diplomacy'; } $values = $msg->toArray(); - if($permission < 3){ + if($msg->dest->nationID != 0 && $permission < 3){ $values['text'] = '(외교 문서입니다)';//TODO: 외교서신이라 읽을 수 없음을 보여줘야함 } return $values; diff --git a/hwe/js/diplomacy.js b/hwe/js/diplomacy.js index d4e2edbb..f2d1c544 100644 --- a/hwe/js/diplomacy.js +++ b/hwe/js/diplomacy.js @@ -135,6 +135,10 @@ function loadLetters(){ $(function(){ +$('textarea.autosize').on('keydown keyup', function(){ + $(this).height(1).height( $(this).prop('scrollHeight')+12 ); +}) + $('#submitLetter').click(submitLetter); $('.respondAgree').click(function(){ return repondLetter(true); @@ -143,10 +147,11 @@ $('.respondDisagree').click(function(){ return repondLetter(false); }); +/* loadLetters() .then(drawLetters, errUnknown) .fail(function(reason){ alert(reason); -}); +});*/ }); \ No newline at end of file diff --git a/hwe/sql/schema.sql b/hwe/sql/schema.sql index a4ec9dbe..f233627e 100644 --- a/hwe/sql/schema.sql +++ b/hwe/sql/schema.sql @@ -565,7 +565,7 @@ CREATE TABLE `ng_diplomacy` ( `src_nation_id` INT(11) NOT NULL, `dest_nation_id` INT(11) NOT NULL, `prev_no` INT(11) NULL DEFAULT NULL, - `state` ENUM('proposed','activated','cancelled') NOT NULL DEFAULT 'proposed', + `state` ENUM('proposed','activated','cancelled','replaced') NOT NULL DEFAULT 'proposed', `text_brief` TEXT NOT NULL, `text_detail` TEXT NOT NULL, `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, diff --git a/hwe/t_diplomacy.php b/hwe/t_diplomacy.php index d62b5d8c..9f811cf0 100644 --- a/hwe/t_diplomacy.php +++ b/hwe/t_diplomacy.php @@ -50,21 +50,61 @@ var permissionLevel = ; // - + -

From 7408aa6b72d7514bbf49e0fb9d8f20a2709f5fdb Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 03:40:01 +0900 Subject: [PATCH 09/22] =?UTF-8?q?=EC=A1=B0=EC=96=B8=EC=9E=90=20=EC=9D=B8?= =?UTF-8?q?=EC=9B=90=EC=88=98=EB=A1=9C=20=EB=B3=B4=EC=97=AC=EC=A4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/a_kingdomList.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/hwe/a_kingdomList.php b/hwe/a_kingdomList.php index c19d28aa..b05d938f 100644 --- a/hwe/a_kingdomList.php +++ b/hwe/a_kingdomList.php @@ -132,10 +132,15 @@ for($i=1; $i <= $count; $i++) { $generals = $db->query('SELECT no,nation,npc,name,level,penalty,permission FROM general WHERE nation=%i ORDER BY no ASC', $nation['nation']); $ambassadors = []; + $auditors = []; foreach($generals as $general){ - if(checkSecretPermission($general, false) == 4){ + $generalPermission = checkSecretPermission($general, false); + if($generalPermission == 4){ $ambassadors[] = $general['name']; } + else if($generalPermission == 3){ + $auditors[] = $general['name']; + } } echo " @@ -174,10 +179,11 @@ for($i=1; $i <= $count; $i++) { $l5 - 외교권자"; + 외교권자"; echo join(', ', $ambassadors); - echo " - + echo "조언자"; + echo count($auditors).'명'; + echo " "; if($nation['level'] > 0) { From fd1599e0a72da1d7eca85f83b2b86274fdc07052 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 03:50:08 +0900 Subject: [PATCH 10/22] =?UTF-8?q?=EC=99=B8=EA=B5=90=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=EC=A0=84=EC=86=A1=EC=8B=9C=20=EC=95=8C=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/index.php | 2 +- hwe/sammo/Message.php | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/hwe/index.php b/hwe/index.php index c4d6704c..5797bab0 100644 --- a/hwe/index.php +++ b/hwe/index.php @@ -328,7 +328,7 @@ if ($con == 1) { MessageBox("접속제한이 얼마 남지 않았습니다!"); } if ($me['newmsg'] == 1) { - MessageBox("개인 서신이 도착했습니다!"); + MessageBox("새로운 서신이 도착했습니다!"); } if ($me['newvote'] == 1) { $develcost = $admin['develcost']*5; diff --git a/hwe/sammo/Message.php b/hwe/sammo/Message.php index c1b6e086..157e1ad3 100644 --- a/hwe/sammo/Message.php +++ b/hwe/sammo/Message.php @@ -387,7 +387,17 @@ class Message return $this->sendRaw($this->dest->generalID); } - if($this->msgType === self::MSGTYPE_NATIONAL || $this->msgType === self::MSGTYPE_DIPLOMACY){ + if($this->msgType === self::MSGTYPE_NATIONAL){ + return $this->sendRaw($this->dest->nationID + self::MAILBOX_NATIONAL); + } + + if($this->msgType === self::MSGTYPE_DIPLOMACY){ + if(!($this->msgOption['silence']??false)){ + //XXX: 알림을 이런식으로 보내는게 맞는가에 대한 의문 있음 + DB::db()->update('general', [ + 'newmsg'=>1 + ], 'nation = %i AND (level = 12 OR permission IN (\'ambassador\', \'auditor\')) ',$this->dest->nationID); + } return $this->sendRaw($this->dest->nationID + self::MAILBOX_NATIONAL); } From 016c0f374335e05692f912300b1f1e4994065a98 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 04:03:15 +0900 Subject: [PATCH 11/22] =?UTF-8?q?=EC=99=B8=EA=B5=90=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=ED=95=84=ED=84=B0=EB=A7=81=EC=97=90=20invalid=20?= =?UTF-8?q?=EC=98=B5=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_msg_get_recent.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hwe/j_msg_get_recent.php b/hwe/j_msg_get_recent.php index 1f60d3aa..92ba94b3 100644 --- a/hwe/j_msg_get_recent.php +++ b/hwe/j_msg_get_recent.php @@ -102,7 +102,8 @@ $result['diplomacy']= array_map(function(Message $msg)use (&$nextSequence, &$min } $values = $msg->toArray(); if($msg->dest->nationID != 0 && $permission < 3){ - $values['text'] = '(외교 문서입니다)';//TODO: 외교서신이라 읽을 수 없음을 보여줘야함 + $values['text'] = '(외교 메시지입니다)';//TODO: 외교서신이라 읽을 수 없음을 보여줘야함 + $values['option']['invalid'] = true; } return $values; }, Message::getMessagesFromMailBox(Message::MAILBOX_NATIONAL + $nationID, Message::MSGTYPE_DIPLOMACY, 20, $reqSequence)); From 64b79d6af5b7c45508372a9f1ab4dacd3eadef2e Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 06:30:29 +0900 Subject: [PATCH 12/22] =?UTF-8?q?=EC=99=B8=EA=B5=90=EB=B6=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/css/diplomacy.css | 2 +- hwe/j_diplomacy_get_letter.php | 21 ++- hwe/j_diplomacy_respond_letter.php | 34 +++- hwe/j_diplomacy_rollback_letter.php | 89 +++++++++ hwe/j_diplomacy_send_letter.php | 37 +++- hwe/js/common.js | 21 +++ hwe/js/diplomacy.js | 281 ++++++++++++++++++++++++---- hwe/js/msg.js | 19 -- hwe/t_diplomacy.php | 16 +- 9 files changed, 443 insertions(+), 77 deletions(-) create mode 100644 hwe/j_diplomacy_rollback_letter.php diff --git a/hwe/css/diplomacy.css b/hwe/css/diplomacy.css index f6ff84bc..231bc26c 100644 --- a/hwe/css/diplomacy.css +++ b/hwe/css/diplomacy.css @@ -9,7 +9,7 @@ #newLetter textarea{ width:100%; - min-height:6em; + min-height:3em; color:white; background-color:transparent; border:none; diff --git a/hwe/j_diplomacy_get_letter.php b/hwe/j_diplomacy_get_letter.php index b822a75a..539ba24f 100644 --- a/hwe/j_diplomacy_get_letter.php +++ b/hwe/j_diplomacy_get_letter.php @@ -43,12 +43,26 @@ foreach( ) as $letter ){ - if($permission < 3){ + if($permission < 3 && $letter['detail']){ $letter['detail'] = '(권한이 부족합니다)'; } - $letter['comment'] = []; $letter['aux'] = Json::decode($letter['aux']); - $letters[$letter['no']] = $letter; + $letter['src'] = $letter['aux']['src']; + $letter['dest'] = $letter['aux']['dest']; + + $letter['src']['nationID'] = $letter['src_nation_id']; + $letter['dest']['nationID'] = $letter['dest_nation_id']; + + $letters[$letter['no']] = [ + 'no'=>$letter['no'], + 'src'=>$letter['src'], + 'dest'=>$letter['dest'], + 'prev_no'=>$letter['prev_no'], + 'state'=>$letter['state'], + 'brief'=>$letter['text_brief'], + 'detail'=>$letter['text_detail'], + 'date'=>$letter['date'] + ]; } $nations = []; @@ -63,6 +77,7 @@ Json::die([ 'result'=>true, 'nations'=>$nations, 'letters'=>$letters, + 'myNationID'=>$me['nation'], 'reason'=>'success' ]); diff --git a/hwe/j_diplomacy_respond_letter.php b/hwe/j_diplomacy_respond_letter.php index f7e3a283..76ab1b1d 100644 --- a/hwe/j_diplomacy_respond_letter.php +++ b/hwe/j_diplomacy_respond_letter.php @@ -16,9 +16,9 @@ $reason = Util::getReq('reason', 'string', ''); -increaseRefresh("회의실", 1); +increaseRefresh("외교부", 1); -$me = $db->queryFirstRow('SELECT no, nation, level, permission, con, turntime, belong, penalty FROM general WHERE owner=%i', $userID); +$me = $db->queryFirstRow('SELECT no, name, nation, level, permission, con, turntime, belong, penalty, picture, imgsvr FROM general WHERE owner=%i', $userID); $con = checkLimit($me['con']); if ($con >= 2) { @@ -35,7 +35,6 @@ if($letterNo === null){ ]); } - $permission = checkSecretPermission($me); if ($permission < 4) { Json::die([ @@ -55,9 +54,21 @@ if(!$letter){ } $aux = Json::decode($letter['aux']); +$me['icon'] = GetImageURL($me['imgsvr'], $me['picture']); + +$srcNation = getNationStaticInfo($letter['src_nation_id']); +$destNation = getNationStaticInfo($letter['dest_nation_id']); + +$src = new MessageTarget($me['no'], $me['name'], $destNation['nation'], $destNation['name'], $destNation['color'], $me['icon']); +$dest = new MessageTarget(0, '', $srcNation['nation'], $srcNation['name'], $srcNation['color']); + +$now = new \DateTime(); +$unlimited = new \DateTime('9999-12-31'); if($isAgree){ $aux['dest']['generalName'] = $me['name']; + $aux['dest']['generalIcon'] = $me['icon']; + $db->update('ng_diplomacy', [ 'state'=>'activated', 'dest_signer'=>$me['no'], @@ -70,6 +81,7 @@ if($isAgree){ 'state'=>'replaced', ], 'no=%i', $letter['prev_no']); } + $msgText = "외교 서신 #{$letterNo}가 승인되었습니다."; } else{ $aux['reason'] = [ @@ -81,9 +93,23 @@ else{ 'state'=>'cancelled', 'aux'=>Json::encode($aux) ], 'no=%i', $letterNo); - //TODO: 외교 서신에 대한 메시지를 양국에 발송해야함 + $msgText = "외교 서신 #{$letterNo}가 거부되었습니다."; + if($reason){ + $msgText .= ' 이유 : '.$reason; + } } +$msg = new Message( + Message::MSGTYPE_DIPLOMACY, + $src, + $dest, + $msgText, + $now, + $unlimited, + ['invalid' => true] +); +$msgID = $msg->send(); + Json::die([ 'result'=>true, 'reason'=>'success' diff --git a/hwe/j_diplomacy_rollback_letter.php b/hwe/j_diplomacy_rollback_letter.php new file mode 100644 index 00000000..eb915564 --- /dev/null +++ b/hwe/j_diplomacy_rollback_letter.php @@ -0,0 +1,89 @@ +setReadOnly(); +$userID = Session::getUserID(); + +$db = DB::db(); + +$letterNo = Util::getReq('letterNo', 'int'); + +increaseRefresh("외교부", 1); + +$me = $db->queryFirstRow('SELECT no, name, nation, level, permission, con, turntime, belong, penalty, picture, imgsvr FROM general WHERE owner=%i', $userID); + +$con = checkLimit($me['con']); +if ($con >= 2) { + Json::die([ + 'result'=>false, + 'reason'=>'접속 제한입니다.' + ]); +} + +if($letterNo === null){ + Json::die([ + 'result'=>false, + 'reason'=>'올바르지 않은 입력입니다.' + ]); +} + + +$permission = checkSecretPermission($me); +if ($permission < 4) { + Json::die([ + 'result'=>false, + 'reason'=>'권한이 부족합니다. 수뇌부가 아닙니다.' + ]); +} + +$reason = trim($reason); + +$letter = $db->queryFirstRow('SELECT * FROM ng_diplomacy WHERE no=%i AND src_nation_id = %i AND state = \'proposed\'', $letterNo, $me['nation']); +if(!$letter){ + Json::die([ + 'result'=>false, + 'reason'=>'서신이 없습니다.' + ]); +} + +$aux = Json::decode($letter['aux']); +$me['icon'] = GetImageURL($me['imgsvr'], $me['picture']); + +$srcNation = getNationStaticInfo($letter['src_nation_id']); +$destNation = getNationStaticInfo($letter['dest_nation_id']); + +$src = new MessageTarget($me['no'], $me['name'], $srcNation['nation'], $srcNation['name'], $srcNation['color'], $me['icon']); +$dest = new MessageTarget(0, '', $destNation['nation'], $destNation['name'], $destNation['color']); + +$now = new \DateTime(); +$unlimited = new \DateTime('9999-12-31'); + +$aux['reason'] = [ + 'who'=>$me['no'], + 'action'=>'cancelled', + 'reason'=>$reason +]; +$db->update('ng_diplomacy', [ + 'state'=>'cancelled', + 'aux'=>Json::encode($aux) +], 'no=%i', $letterNo); +$msgText = "외교 서신 #{$letterNo}가 회수되었습니다."; + +$msg = new Message( + Message::MSGTYPE_DIPLOMACY, + $src, + $dest, + $msgText, + $now, + $unlimited, + ['invalid' => true] +); +$msgID = $msg->send(); + +Json::die([ + 'result'=>true, + 'reason'=>'success' +]); \ No newline at end of file diff --git a/hwe/j_diplomacy_send_letter.php b/hwe/j_diplomacy_send_letter.php index 9c229334..38eec6c8 100644 --- a/hwe/j_diplomacy_send_letter.php +++ b/hwe/j_diplomacy_send_letter.php @@ -11,8 +11,8 @@ $db = DB::db(); $destNationNo = Util::getReq('destNation', 'int', 0); $prevNo = Util::getReq('prevNo', 'int', null); -$textBrief = Util::getReq('textBrief'); -$textDetail = Util::getReq('textDetail'); +$textBrief = Util::getReq('brief'); +$textDetail = Util::getReq('detail'); increaseRefresh("외교부", 1); @@ -20,7 +20,7 @@ if($prevNo < 1){ $prevNo = null; } -$me = $db->queryFirstRow('SELECT no, nation, level, permission, con, turntime, belong, penalty FROM general WHERE owner=%i', $userID); +$me = $db->queryFirstRow('SELECT no, name, nation, level, permission, con, turntime, belong, penalty, picture, imgsvr FROM general WHERE owner=%i', $userID); $con = checkLimit($me['con']); if ($con >= 2) { @@ -131,6 +131,8 @@ else{ $destNation = $nations[0]; } +$me['icon'] = GetImageURL($me['imgsvr'], $me['picture']); + $db->insert('ng_diplomacy', [ 'src_nation_id'=>$srcNation['nation'], 'dest_nation_id'=>$destNation['nation'], @@ -145,7 +147,8 @@ $db->insert('ng_diplomacy', [ 'src'=>[ 'nationName'=>$srcNation['name'], 'nationColor'=>$srcNation['color'], - 'generalName'=>$me['name'] + 'generalName'=>$me['name'], + 'generalIcon'=>$me['icon'] ], 'dest'=>[ 'nationName'=>$destNation['name'], @@ -153,9 +156,33 @@ $db->insert('ng_diplomacy', [ ] ]), ]); +$newLetterNo = $db->insertId(); + +$src = new MessageTarget($me['no'], $me['name'], $srcNation['nation'], $srcNation['name'], $srcNation['color'], $me['icon']); +$dest = new MessageTarget(0, '', $destNation['nation'], $destNation['name'], $destNation['color']); + +$now = new \DateTime(); +$unlimited = new \DateTime('9999-12-31'); + +$josaYi = JosaUtil::pick($newLetterNo, '이'); +if($prevNo){ + $msgText = "문서 #{$prevNo}의 새로운 외교 문서 #{$newLetterNo}{$josaYi} 준비되었습니다. 외교부에서 확인해주세요."; +} +else{ + $msgText = "새로운 외교 문서 #{$newLetterNo}{$josaYi} 준비되었습니다. 외교부에서 확인해주세요."; +} -//TODO: 외교 서신에 대한 메시지를 양국에 발송해야함 +$msg = new Message( + Message::MSGTYPE_DIPLOMACY, + $src, + $dest, + $msgText, + $now, + $unlimited, + ['invalid' => true] +); +$msgID = $msg->send(); Json::die([ 'result'=>true, diff --git a/hwe/js/common.js b/hwe/js/common.js index 52c7d02f..70089aec 100644 --- a/hwe/js/common.js +++ b/hwe/js/common.js @@ -70,6 +70,27 @@ String.prototype.format = function() { }; +function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +} + + +function isBrightColor(color){ + color = hexToRgb(color); + if ((color.r*0.299 + color.g*0.587 + color.b*0.114) > 140){ + return true; + } + else{ + return false; + } +} + + /** * 게임내에서 지원하는 color type만 선택할 수 있도록 해주는 함수 * @param {string} color #AAAAAA 또는 AAAAAA 형태로 작성된 RGB hex color string diff --git a/hwe/js/diplomacy.js b/hwe/js/diplomacy.js index f2d1c544..4cd6e982 100644 --- a/hwe/js/diplomacy.js +++ b/hwe/js/diplomacy.js @@ -1,11 +1,10 @@ function submitLetter(){ - var $letter = $('#newLetter'); - var $brief = $letter.find('input.briefInput'); - var $detail = $letter.find('input.detailInput'); - var $prevNo = $letter.find('input.prevNo'); - var $destNation = $letter.find('input.destNation'); + var $brief = $('#inputBrief'); + var $detail = $('#inputDetail'); + var $prevNo = $('#inputPrevNo'); + var $destNation = $('#inputDestNation'); var brief = $.trim($brief.val()); var detail = $.trim($detail.val()); var prevNo = parseInt($prevNo.val()); @@ -15,7 +14,7 @@ function submitLetter(){ prevNo = null; } - + console.log(brief); if(!brief){ return false; } @@ -34,18 +33,18 @@ function submitLetter(){ } }).then(function(data){ if(!data){ - $title.val(title); - $text.val(text); - alert() + $brief.val(brief); + $detail.val(detail); return quickReject('외교 서신을 보내는데 실패했습니다.'); } if(!data.result){ - $title.val(title); - $text.val(text); + $brief.val(brief); + $detail.val(detail); return quickReject('외교 서신을 보내는데 실패했습니다. : '+data.reason); } - return loadLetters().done(drawLetters); + alert('전송했습니다.'); + location.reload(); }, errUnknown) .fail(function(reason){ @@ -55,18 +54,14 @@ function submitLetter(){ return false; } -function repondLetter(isAgree){ - var $this = $(this); - var $letter = $this.parents('.letter').eq(0); - var letterNo = $letter.data('no'); - +function repondLetter(letterNo, isAgree, reason){ $.post({ url:'j_diplomacy_respond_letter.php', dataType:'json', data:{ letterNo:letterNo, isAgree:isAgree, - reason:'', //TODO: reason 받기 + reason:reason, } }).then(function(data){ if(!data){ @@ -79,7 +74,15 @@ function repondLetter(isAgree){ return quickReject('응답을 실패했습니다. : '+data.reason); } - return loadArticles().done(drawLetters); + if(isAgree){ + alert('승인했습니다.'); + } + else{ + alert('거부했습니다.'); + } + + location.reload(); + return false; }, errUnknown) .fail(function(reason){ @@ -89,22 +92,208 @@ function repondLetter(isAgree){ return false; } -function drawLetter(letterObj){ +function rollbackLetter(letterNo){ + $.post({ + url:'j_diplomacy_rollback_letter.php', + dataType:'json', + data:{ + letterNo:letterNo, + } + }).then(function(data){ + if(!data){ + $text.val(text); + alert() + return quickReject('회수를 실패했습니다.'); + } + if(!data.result){ + $text.val(text); + return quickReject('회수를 실패했습니다. : '+data.reason); + } + + alert('회수했습니다.'); + + location.reload(); + return false; + + }, errUnknown) + .fail(function(reason){ + alert(reason); + }); + + return false; +} + +function drawLetter(idx, letterObj){ + + if(letterObj.state == 'cancelled' || letterObj.state == 'replaced'){ + //TODO: 취소되거나, 대체된 문서도 보여줄 방법을 찾아볼 것 + return; + } + + console.log(letterObj); + var $letterFrame = $('#letterTemplate > .letterFrame'); + var srcColorFormat = { + 'background-color':letterObj.src.nationColor, + 'color':isBrightColor(letterObj.src.nationColor)?'#000000':'#ffffff' + }; + + var destColorFormat = { + 'background-color':letterObj.dest.nationColor, + 'color':isBrightColor(letterObj.dest.nationColor)?'#000000':'#ffffff' + }; + + var targetNation = letterObj.src.nationID==myNationID?letterObj.dest:letterObj.src; + var targetColor = letterObj.src.nationID==myNationID?destColorFormat:srcColorFormat; + var $letter = $letterFrame.clone(); $letter.addClass('letterObj') .data('no', letterObj.no) + .data('brief', letterObj.brief) + .data('detail', letterObj.detail) + .attr('id', 'letter_'+letterObj.no); - //TODO: 국가명, 수뇌명 입력 + $letter.find('.letterHeader').css(targetColor); $letter.find('.date').text(letterObj.date); $letter.find('.letterNo').text('#'+letterObj.no); - $letter.find('.srcNation').text(letterObj.aux['']) - $letter.find('.brief').html(nl2br(escapeHtml(letterObj.brief))); - $letter.find('.detail').html(nl2br(escapeHtml(letterObj.detail))); - //TODO: 바꿀 것 - $('#board').append($letter); + var stateText = { + 'proposed':'제안됨', + 'activated':'승인됨', + 'cancelled':'거부됨', + 'replaced':'대체됨', + }; + $letter.find('.letterStatus').text(stateText[letterObj.state]); + if(letterObj.prev_no !== null){ + $letter.find('.letterPrevNo').text('#'+letterObj.prev_no); + } + else{ + $letter.find('.letterPrevNo').text('신규'); + } + $letter.find('.letterBrief').html(nl2br(escapeHtml(letterObj.brief))); + $letter.find('.letterDetail').html(nl2br(escapeHtml(letterObj.detail))); + + $letter.find('.letterSrc .signerImg img.generalIcon').attr('src', letterObj.src.generalIcon); + $letter.find('.letterSrc .signerNation').text(letterObj.src.nationName).css(srcColorFormat); + $letter.find('.letterSrc .signerName').text(letterObj.src.generalName).css(srcColorFormat); + + if(letterObj.dest.generalName){ + $letter.find('.letterDest .signerImg img.generalIcon').attr('src', letterObj.dest.generalIcon); + $letter.find('.letterDest .signerNation').text(letterObj.dest.nationName).css(destColorFormat); + $letter.find('.letterDest .signerName').text(letterObj.dest.generalName).css(destColorFormat); + } + + if(letterObj.state == 'proposed' && letterObj.src.nationID != myNationID){ + $letter.find('.btnAgree').show().click(function(){ + if(!confirm('승인하시겠습니까?')){ + return false; + } + return repondLetter(letterObj.no, true, null); + }); + $letter.find('.btnDisagree').show().click(function(){ + var reason = prompt('거부하시겠습니까? (이유 [최대 50자])'); + if(reason === null){ + return false; + } + reason = substr.substr(0, 50); + return repondLetter(letterObj.no, false, reason); + }); + } + + if(letterObj.state == 'proposed' && letterObj.src.nationID == myNationID){ + $letter.find('.btnRollback').show().click(function(){ + if(!confirm('회수하시겠습니까?')){ + return false; + } + return rollbackLetter(letterObj.no, false); + }); + } + + + $letter.find('.btnRenew').click(function(){ + var $inputPrevNo = $('#inputPrevNo'); + $inputPrevNo.val(letterObj.no); + $inputPrevNo.trigger('change'); + }) + + + $('#letters').prepend($letter); +} + +function initNewLetterForm(lettersObj){ + console.log(lettersObj); + var nationList = []; + $.each(lettersObj.nations, function(idx, nation){ + nation.id = nation.nation; + nation.text = nation.name; + nationList.push(nation); + }) + + var $destNation = $('#inputDestNation').select2({ + theme: 'bootstrap4', + placeholder: "", + language: "ko", + width:300, + containerCss: { + display: "inline-block !important;", + color: 'white !important' + }, + data:nationList, + templateResult: colorNation, + containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', + dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', + }); + + + var prevNoList = [{ + id:0, + text:'-새 문서-', + nation:null, + }]; + + $.each(lettersObj.letters, function(idx, letterObj){ + if(letterObj.state == 'replaced' || letterObj.state == 'cancelled'){ + return true; + } + var targetNation = letterObj.src.nationID==myNationID?letterObj.dest:letterObj.src; + prevNoList.push({ + id:letterObj.no, + text:'#{0} <{1}>'.format(letterObj.no, targetNation.nationName), + nation:targetNation.nationID + }); + }); + + var $inputPrevNo = $('#inputPrevNo').select2({ + theme: 'bootstrap4', + placeholder: "", + language: "ko", + width:300, + containerCss: { + display: "inline-block !important;", + color: 'white !important' + }, + data:prevNoList, + containerCssClass: 'simple-select2-align-center bg-secondary text-secondary', + dropdownCssClass: 'simple-select2-align-center bg-secondary text-secondary', + }); + $inputPrevNo.on('change', function(e){ + var data = $inputPrevNo.select2('data')[0]; + console.log(data); + if(data.nation == null){ + $destNation.prop("disabled", false); + } + else{ + $destNation.val(data.nation).prop("disabled", true); + var $targetLetter = $('#letter_'+data.id); + resizeTextarea($('#inputBrief').val($targetLetter.data('brief'))); + resizeTextarea($('#inputDetail').val($targetLetter.data('detail'))); + } + }); + + $('#btnSend').click(submitLetter); + + $('#newLetter').show(); } function drawLetters(lettersObj){ @@ -113,12 +302,16 @@ function drawLetters(lettersObj){ return quickReject('받아오는데 실패했습니다.'); } - //TODO: 국가 리스트 출력 - if(!lettersObj.result){ return quickReject('에러가 발생했습니다. : '+lettersObj.reason); } + window.myNationID = lettersObj.myNationID; + + if(permissionLevel == 4){ + initNewLetterForm(lettersObj); + } + $('.letterObj').detach();//첫 버전이니까 일괄 삭제 일괄 로드 $.each(lettersObj.letters, drawLetter); return true; @@ -126,32 +319,40 @@ function drawLetters(lettersObj){ function loadLetters(){ return $.post({ - url:'j_diplomacy_get_letters.php', + url:'j_diplomacy_get_letter.php', dataType:'json', //첫 버전이니까 전체 다 불러오자 data:{ } }); } +function colorNation(nationInfo){ + if(!nationInfo.color){ + return nationInfo.text; + } + + var fgColor = isBrightColor(nationInfo.color)?'#000000':'#ffffff'; + var $nationForm = $('
'+nationInfo.text+'
').css({ + 'color':fgColor, + 'background-color':nationInfo.color + }); + return $nationForm; +} + +function resizeTextarea($obj){ + $obj.height(1).height($obj.prop('scrollHeight')+12 ); +} + $(function(){ $('textarea.autosize').on('keydown keyup', function(){ - $(this).height(1).height( $(this).prop('scrollHeight')+12 ); + resizeTextarea($(this)); }) -$('#submitLetter').click(submitLetter); -$('.respondAgree').click(function(){ - return repondLetter(true); -}); -$('.respondDisagree').click(function(){ - return repondLetter(false); -}); - -/* loadLetters() .then(drawLetters, errUnknown) .fail(function(reason){ alert(reason); -});*/ +}); }); \ No newline at end of file diff --git a/hwe/js/msg.js b/hwe/js/msg.js index 15d463c6..8f4add51 100644 --- a/hwe/js/msg.js +++ b/hwe/js/msg.js @@ -1,24 +1,5 @@ -function hexToRgb(hex) { - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; -} - - -function isBrightColor(color){ - color = hexToRgb(color); - if ((color.r*0.299 + color.g*0.587 + color.b*0.114) > 140){ - return true; - } - else{ - return false; - } -} var messageTemplate = ''; var myGeneralID=null; diff --git a/hwe/t_diplomacy.php b/hwe/t_diplomacy.php index 9f811cf0..87494e27 100644 --- a/hwe/t_diplomacy.php +++ b/hwe/t_diplomacy.php @@ -36,6 +36,8 @@ if ($permission < 1) { + + @@ -48,6 +50,7 @@ var permissionLevel = ; // + @@ -72,6 +75,8 @@ var permissionLevel = ; // +
+ -
+ + +

- +
\ No newline at end of file From 0a0d237f4da52af0fd479abbaa942d0e59ab0fd3 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 06:44:34 +0900 Subject: [PATCH 14/22] =?UTF-8?q?=EB=8C=80=EC=B2=B4=EB=90=9C=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EB=B3=B4=EA=B8=B0=20=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/j_diplomacy_get_letter.php | 4 ++-- hwe/js/diplomacy.js | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hwe/j_diplomacy_get_letter.php b/hwe/j_diplomacy_get_letter.php index 539ba24f..6486ec9c 100644 --- a/hwe/j_diplomacy_get_letter.php +++ b/hwe/j_diplomacy_get_letter.php @@ -38,7 +38,7 @@ $letters = []; foreach( $db->query( - 'SELECT * FROM ng_diplomacy WHERE src_nation_id = %i OR dest_nation_id = %i ORDER BY date desc', + 'SELECT * FROM ng_diplomacy WHERE (src_nation_id = %i OR dest_nation_id = %i) AND state != \'cancelled\' ORDER BY date desc', $me['nation'], $me['nation'] ) as $letter ){ @@ -52,7 +52,7 @@ foreach( $letter['src']['nationID'] = $letter['src_nation_id']; $letter['dest']['nationID'] = $letter['dest_nation_id']; - + $letters[$letter['no']] = [ 'no'=>$letter['no'], 'src'=>$letter['src'], diff --git a/hwe/js/diplomacy.js b/hwe/js/diplomacy.js index 4cd6e982..a18fbbd0 100644 --- a/hwe/js/diplomacy.js +++ b/hwe/js/diplomacy.js @@ -125,7 +125,7 @@ function rollbackLetter(letterNo){ function drawLetter(idx, letterObj){ - if(letterObj.state == 'cancelled' || letterObj.state == 'replaced'){ + if(letterObj.state == 'cancelled'){ //TODO: 취소되거나, 대체된 문서도 보여줄 방법을 찾아볼 것 return; } @@ -148,6 +148,11 @@ function drawLetter(idx, letterObj){ var targetColor = letterObj.src.nationID==myNationID?destColorFormat:srcColorFormat; var $letter = $letterFrame.clone(); + + if(letterObj.state == 'replaced'){ + $letter.hide(); + } + $letter.addClass('letterObj') .data('no', letterObj.no) .data('brief', letterObj.brief) @@ -166,7 +171,11 @@ function drawLetter(idx, letterObj){ }; $letter.find('.letterStatus').text(stateText[letterObj.state]); if(letterObj.prev_no !== null){ - $letter.find('.letterPrevNo').text('#'+letterObj.prev_no); + var $showPrev = $('#{0}'.format(letterObj.prev_no)); + $showPrev.click(function(){ + $('#letter_'+letterObj.prev_no).toggle(); + }) + $letter.find('.letterPrevNo').html($showPrev); } else{ $letter.find('.letterPrevNo').text('신규'); From 568c7779b6b02ad5bf948081da4663ec0e8d8865 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 26 Jan 2019 06:56:19 +0900 Subject: [PATCH 15/22] =?UTF-8?q?=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=AF=B8?= =?UTF-8?q?=EC=99=84=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/js/diplomacy.js | 3 ++- hwe/t_diplomacy.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hwe/js/diplomacy.js b/hwe/js/diplomacy.js index a18fbbd0..9399459a 100644 --- a/hwe/js/diplomacy.js +++ b/hwe/js/diplomacy.js @@ -160,7 +160,8 @@ function drawLetter(idx, letterObj){ .attr('id', 'letter_'+letterObj.no); $letter.find('.letterHeader').css(targetColor); - $letter.find('.date').text(letterObj.date); + $letter.find('.letterNationName').text(targetNation.nationName); + $letter.find('.letterDate').text(letterObj.date); $letter.find('.letterNo').text('#'+letterObj.no); var stateText = { diff --git a/hwe/t_diplomacy.php b/hwe/t_diplomacy.php index 55c53404..061c3ecb 100644 --- a/hwe/t_diplomacy.php +++ b/hwe/t_diplomacy.php @@ -84,7 +84,7 @@ var permissionLevel = ; //