| @@ -47,7 +47,7 @@ table.details td.left, table.details th.left { | |||
| } | |||
| textarea.addr{ | |||
| padding-top:15px; | |||
| min-height: 100px; | |||
| min-height: 150px; | |||
| font-weight: bold; | |||
| color: blue; | |||
| resize: none; | |||
| @@ -107,4 +107,13 @@ textarea.addr{ | |||
| .tt-suggestion p { | |||
| margin: 0; | |||
| } | |||
| #pickupcontact, #pickupwechat, #pickuptime { | |||
| margin-left: 10px; | |||
| margin-right: 10px; | |||
| border: none; | |||
| color: blue; | |||
| font-weight: bold; | |||
| text-align: center; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,10 @@ | |||
| <div class="success" style="width:300px;height:300px;text-align:center;margin:auto"> | |||
| <table style="min-height:150px;"> | |||
| <tr><td style="text-align:center; vertical-align:middle;"> | |||
| <h1>#NAME# 纪念章签收</h1> | |||
| </td></tr> | |||
| <tr><td style="text-align:center; vertical-align:middle;"> | |||
| <img src="#SRC#" > | |||
| </td></tr> | |||
| </table> | |||
| </div> | |||
| @@ -28,25 +28,25 @@ | |||
| <table class="details"> | |||
| <tr><td colspan=2> | |||
| <span>Postal Address</span> <br> | |||
| <textarea class=addr> | |||
| 33 Valerie Ave | |||
| Baulk Ham Hills, | |||
| NSW, Australia 2153 | |||
| <textarea class=addr id='postaladdr' disabled> | |||
| No valid addr | |||
| </textarea> | |||
| <button id=changeaddr>Change Address</button> | |||
| <!-- button id=changeaddr>Change Address</button --> | |||
| </td></tr> | |||
| <tr> | |||
| <td>State in Australia</td> | |||
| <td class="left"> | |||
| <select name="states" class=fullwidth id="states"> | |||
| <select name="states" class=fullwidth id="states" disabled> | |||
| <option value="NSW">NSW</option> | |||
| <option value="ACT">ACT</option> | |||
| <option value="WA">WA</option> | |||
| <option value="SA">SA</option> | |||
| <option value="QLD">QLD</option> | |||
| <option value="NT">NT</option> | |||
| <option value="TAS">TAS</option> | |||
| <option value="VIC">VIC</option> | |||
| <option value="na">Unknown</option> | |||
| </select> | |||
| </td> | |||
| @@ -57,9 +57,9 @@ | |||
| <tr> | |||
| <td>Delivery:</td> | |||
| <td class="left"> | |||
| <input type=radio name="delivery" > N/A <br> | |||
| <input type=radio name="delivery" > Direct Post <br> | |||
| <input type=radio name="delivery" checked> Pick up from <span id=collector> Patrick Sun </span> | |||
| <input type=radio name="delivery" value="na"> N/A <br> | |||
| <input type=radio name="delivery" value="dp"> Direct Post <br> | |||
| <input type=radio name="delivery" value="pp" checked> Pick up from <span class="collector"> </span> | |||
| </td> | |||
| </tr> | |||
| @@ -67,43 +67,85 @@ | |||
| <tr> | |||
| <td style="vertical-align:middle"> | |||
| <input id="medal" type=checkbox checked onclick="return false;"><br> | |||
| <label for="medal" id='medalstatus'>Received in AU</labe> | |||
| <label for="medal" id='medalstatus'></labe> | |||
| </td> | |||
| <td > | |||
| <img src="https://via.placeholder.com/150" > | |||
| From Alma mater to AU | |||
| </td> | |||
| </tr> | |||
| <tr id=tracking1> | |||
| <td id=date1 style="vertical-align:middle"> | |||
| 2020-12-10 | |||
| <td style="vertical-align:middle"> | |||
| <input id="posted" type=checkbox checked onclick="return false;"> | |||
| </td> | |||
| <td> | |||
| Send out from Sydney | |||
| Posted | |||
| </td> | |||
| </tr> | |||
| <tr id=tracking2> | |||
| <tr id=tracking2 class=pp> | |||
| <td id=date1 style="vertical-align:middle"> | |||
| 2020-12-10 | |||
| <input id="received" type=checkbox onclick="return false;"> | |||
| </td> | |||
| <td> | |||
| Send out from Sydney | |||
| Received by : <span class="collector"> </span> | |||
| </td> | |||
| </tr> | |||
| <tr id=tracking3> | |||
| <tr id=tracking3 class='pp'> | |||
| <td id=date1 style="vertical-align:middle"> | |||
| 2020-12-10 | |||
| <input id=readyforpickup type=checkbox onclick="return false;"> | |||
| </td> | |||
| <td> | |||
| Send out from Sydney | |||
| Ready for Pickup | |||
| </td> | |||
| </tr> | |||
| <tr id=tracking4> | |||
| <td id="done" style="vertical-align:middle"> | |||
| <input id="delivered" type=checkbox onclick="return false;"> | |||
| </td> | |||
| <td> | |||
| Delivered | |||
| </td> | |||
| </tr> | |||
| <tr id=tracking5 class=contact> | |||
| <td id=contact colspan=2> | |||
| Pickup Phone: | |||
| <input id=pickupcontact value=""> | |||
| </td> | |||
| </tr> | |||
| <tr class=contact> | |||
| <td id=contact colspan=2> | |||
| Pickup Wechat: | |||
| <input id=pickupwechat value=""> | |||
| </td> | |||
| </tr> | |||
| <tr class=contact> | |||
| <td id=contact colspan=2> | |||
| Pickup Location: | |||
| <textarea id='pickuplocation' disabled class='addr'> | |||
| </textarea> | |||
| </td> | |||
| </tr> | |||
| <tr class=contact> | |||
| <td id=contact colspan=2> | |||
| Pickup time: | |||
| <input id=pickuptime value=""> | |||
| </td> | |||
| </tr> | |||
| </table> | |||
| </div> | |||
| <div class="success"> | |||
| <table style="min-height:150px;"> | |||
| <tr><td style="text-align:center; vertical-align:middle;"> | |||
| @@ -27,8 +27,9 @@ | |||
| $("#loading90").attr('src', mm.loading); | |||
| $("#done").attr('src', mm.done); | |||
| $(':radio:not(:checked)').attr('disabled', true); | |||
| $("span.collector").text("Pactrick"); | |||
| init_clientname_input("#username"); | |||
| }); | |||
| @@ -51,6 +52,9 @@ | |||
| function onUpdateClientID (e, suggestion) | |||
| { | |||
| mm.current_user = suggestion.userid; | |||
| $('#details').hide(); | |||
| $.post(mm.ajax_url, { // POST request | |||
| _ajax_nonce: mm.nonce, // nonce | |||
| action: "list_users", // action | |||
| @@ -120,7 +124,6 @@ | |||
| _ajax_nonce: mm.nonce, // nonce | |||
| action: "list_users", // action | |||
| client : mm.current_user, | |||
| name : input, | |||
| }, function(response, status, xhr){ | |||
| step2_verify_user(response); | |||
| }).fail(function(){ | |||
| @@ -174,6 +177,42 @@ | |||
| $("#errVerify").text("Incorrect, please try again"); | |||
| } | |||
| $("#postaladdr").val(response.addr); | |||
| $("#states").val(response.state); | |||
| $("span.collector").text(response.pickup); | |||
| $("#pickupcontact").val(response.pp); | |||
| $("#pickupwechat").val(response.ppwechat); | |||
| $("#pickuplocation").val(response.loc); | |||
| $("#pickuptime").val(response.time); | |||
| $(':radio:not(:checked)').attr('disabled', false); | |||
| $(':radio:checked').attr('disabled', false); | |||
| //set delivery | |||
| switch(response.delivery) | |||
| { | |||
| case 'pp': | |||
| $('input:radio[name=delivery]:nth(2)').prop('checked',true); | |||
| $('tr.pp').show(); | |||
| break; | |||
| case 'dp': | |||
| $('tr.pp').hide(); | |||
| $('input:radio[name=delivery]:nth(1)').prop('checked',true); | |||
| break; | |||
| default: | |||
| $('tr.pp').hide(); | |||
| $('input:radio[name=delivery]:nth(0)').prop('checked',true); | |||
| } | |||
| $(':radio:not(:checked)').attr('disabled', true); | |||
| $(':radio:checked').attr('disabled', false); | |||
| //steps | |||
| $("#medal").prop("checked", response.step >= 1); | |||
| $("#posted").prop("checked", response.step >= 2); | |||
| $("#received").prop("checked", response.step >= 3); | |||
| $("#readyforpickup").prop("checked", response.step >= 4); | |||
| $("#delivered").prop("checked", response.step >= 5); | |||
| } | |||
| //apply card | |||
| @@ -12,6 +12,8 @@ | |||
| Copyright: All rights reserved. | |||
| */ | |||
| namespace Member; | |||
| use function Nextgenthemes\ARVE\Common\Admin\label_text; | |||
| //require_once(dirname(__FILE__) . '/autoload.php'); | |||
| require_once (ABSPATH . 'wp-includes/pluggable.php'); | |||
| @@ -61,8 +63,17 @@ class Member{ | |||
| public function shortcode_token($attrs) { | |||
| $token = get_query_var( 'token' ); | |||
| if (trim($token) == "") | |||
| return ""; | |||
| $user = $this->getUserByToken($token); | |||
| return "<h1 id='test'> ok ok " . $user[0]->display_name . " </h1>"; | |||
| update_user_meta($user->ID, "hit100collected", "5"); | |||
| $subject = file_get_contents(plugin_dir_path(__FILE__) . "/html/medal_received.html"); | |||
| $subject = str_replace("#NAME#", $user->display_name, $subject); | |||
| $result = str_replace("#SRC#", plugins_url('img/done.gif', __FILE__), $subject); | |||
| return $result; | |||
| } | |||
| @@ -108,13 +119,14 @@ class Member{ | |||
| 'search_user' => plugins_url('img/loading_user.gif', __FILE__), | |||
| 'anonymous' => !is_user_logged_in(), | |||
| 'user' => $this->getUserByToken($this->token), | |||
| 'imgurl' => plugins_url('img/box/', __FILE__), | |||
| ) ); | |||
| } | |||
| function ajax_list_users() | |||
| { | |||
| //check_ajax_referer('medal'); | |||
| check_ajax_referer('medal'); | |||
| $client = $_POST['client']; | |||
| $name = $_POST['name']; | |||
| @@ -161,13 +173,14 @@ class Member{ | |||
| public function ajax_search_users() | |||
| { | |||
| //check_ajax_referer('medal'); | |||
| check_ajax_referer('medal'); | |||
| $pattern = $_GET['pattern']; | |||
| $args= array( | |||
| 'search' => "*$pattern*", // or login or nicename in this example | |||
| 'search_fields' => array('display_name'), | |||
| 'role__in' => array('subscriber') | |||
| ); | |||
| $users = new \WP_User_Query($args); | |||
| @@ -190,7 +203,7 @@ class Member{ | |||
| public function ajax_verify_user() | |||
| { | |||
| //check_ajax_referer('medal'); | |||
| check_ajax_referer('medal'); | |||
| $client = $_POST['client']; | |||
| $verifycode = $_POST['verifycode']; | |||
| @@ -206,17 +219,127 @@ class Member{ | |||
| wp_send_json($response); | |||
| } | |||
| $pickup = $this->get_pickup($user); | |||
| $response = array( | |||
| 'status' => 'success', | |||
| 'userID' => $user->ID, | |||
| 'pass' => $this->verify_code($method, $verifycode, $user), | |||
| 'addr' => $this->getUserPostalAddress($user), | |||
| 'state' =>$this->getUserState($user), | |||
| 'delivery'=> $this->get_delivery($this->getUserState($user)), | |||
| 'pickup' => $pickup["name"], | |||
| 'pp' => $pickup["phone"], | |||
| 'ppwechat'=>$pickup["wechat"], | |||
| 'loc' =>$pickup["loc"], | |||
| 'time' =>$pickup["time"], | |||
| 'step' => get_user_meta($client, "hit100collected", true), | |||
| ); | |||
| wp_send_json($response); | |||
| } | |||
| private function get_delivery($state) | |||
| { | |||
| switch ($state){ | |||
| case "na": | |||
| return "na"; //not available | |||
| case "NT": | |||
| case "TAS": | |||
| case "ACT": | |||
| case "SA": | |||
| return "dp"; //direct post | |||
| case "NSW": | |||
| case "VIC": | |||
| case "QLD": | |||
| case "WA": | |||
| return "pp"; | |||
| } | |||
| } | |||
| private function get_pickup($user) | |||
| { | |||
| $state = $this->getUserState($user); | |||
| switch ($state){ | |||
| case "na": | |||
| case "NT": | |||
| case "TAS": | |||
| case "ACT": | |||
| case "SA": | |||
| return array( | |||
| "name" => "n/a", | |||
| "phone"=>"n/a", | |||
| "wechat" =>"n/a", | |||
| "loc" => "n/a", | |||
| "time" => "n/a", | |||
| ); | |||
| case "NSW": | |||
| return array( | |||
| "name" => "孙鹏", | |||
| "phone" => "0422896020", | |||
| "wechat" => "lawipac", | |||
| "loc" => "2020-12-13 15:30 - 18:00 : QVB Level 2 Coffee Shop, Sydney.\n" . | |||
| "2020-12-15 17:00 - 18:00 : Strathfield Station Exit (Square). \n" . | |||
| "2020-12-19 15:30 - 18:00 : Central Station Main Exit", | |||
| "time" => "2020-12-13 ~ 19", | |||
| ); | |||
| case "VIC": | |||
| return array( | |||
| "name" => "杨欧", | |||
| "phone" => "0450673987", | |||
| "wechat" => "yangou627478", | |||
| "loc" => "n/a", | |||
| "time" => "n/a", | |||
| ); | |||
| case "QLD": | |||
| return array( | |||
| "name" => "于启华", | |||
| "phone" => "0405928939", | |||
| "wechat" => "cloudfisher321", | |||
| "loc" => "n/a", | |||
| "time" => "n/a", | |||
| ); | |||
| case "WA": | |||
| return array( | |||
| "name" => "赵健 (Perth-15-外语)", | |||
| "phone" => "0452008130", | |||
| "wechat" => "Shmilyxiaorenyu", | |||
| "loc" => "n/a", | |||
| "time" => "n/a", | |||
| ); | |||
| } | |||
| } | |||
| private function getUserPostalAddress($user) | |||
| { | |||
| $addr = get_user_meta($user->ID, 'postal-address', true); | |||
| if ( $addr == "" ) | |||
| return "No valid address provided"; | |||
| else{ | |||
| return str_replace("," , "\r\n", $addr); | |||
| } | |||
| } | |||
| private function getUserState($user) | |||
| { | |||
| $valid = array("NSW", "VIC", "TAS", "NT", "WA", "SA", "ACT", "QLD"); | |||
| $s = get_user_meta($user->ID, 'state', true); | |||
| $s = strtoupper($s); | |||
| if (in_array($s, $valid) ) | |||
| { | |||
| return $s; | |||
| }else { | |||
| return "na"; | |||
| } | |||
| wp_send_json($response); | |||
| } | |||
| private function verify_code($method, $verifycode, $user) | |||
| @@ -255,7 +378,7 @@ class Member{ | |||
| 'meta_key' => 'token', | |||
| 'meta_value' => "$token" | |||
| )); | |||
| return $user; | |||
| return $user[0]; | |||
| } | |||
| @@ -264,11 +387,12 @@ class Member{ | |||
| public function test() | |||
| { | |||
| $this->ajax_list_users(); | |||
| //$this->ajax_list_users(); | |||
| } | |||
| public function house_keeping() | |||
| { | |||
| return; | |||
| $args= array( | |||
| 'search' => "**", // or login or nicename in this example | |||
| 'search_fields' => array('display_name'), | |||
| @@ -279,31 +403,18 @@ class Member{ | |||
| $count = $users->get_total(); | |||
| foreach ( $users->results as $u ) { | |||
| $card = 0; | |||
| $post_addr = get_user_meta($u->ID, 'postal-address', true); | |||
| $card = trim($post_addr) == ""? -1: 0; | |||
| $medal = 1; | |||
| $country = get_user_meta($u->ID, 'country', true); | |||
| if ($country != "Australia") | |||
| $medal = 0; | |||
| $step = ($country != "Australia") ? 0: 2; | |||
| $this->db->update('sp_medal_100', array( | |||
| 'medal' => $medal, | |||
| 'card' => $card, | |||
| 'card_posted' =>0, | |||
| 'card_delivered' => 0, | |||
| 'medal_delivered' => 0, | |||
| ),array( | |||
| 'uid' => $u->ID, | |||
| )); | |||
| $state = get_user_meta($u->ID, 'state', true); | |||
| $step = (strtoupper($state) == "NSW") ? 4: $step; | |||
| update_user_meta($u->ID, "hit100collected", $step); | |||
| } | |||
| } | |||