[Feature][MD310][task-view-792][project] synchronize MD310 modifications according to R307 customer requirements
Change-Id: I96bf139abc6f4c592a83ec7d996d4260afaede0e
diff --git a/lynq/MD310/ap/app/Script/Makefile b/lynq/MD310/ap/app/Script/Makefile
new file mode 100755
index 0000000..7bde2a3
--- /dev/null
+++ b/lynq/MD310/ap/app/Script/Makefile
@@ -0,0 +1,67 @@
+
+############################################################################
+#
+# Makefile -- Build for rootfs makefile.
+#
+# Copyright (c) 2001-2004, SnapGear (www.snapgear.com)
+# Copyright (c) 2001, Lineo
+#
+# Add by zhouwei 2010-08-06 for freescale imx28 platform
+#
+############################################################################
+CP = cp
+ROMFS_DIR = $(ROMFSDIR)
+$(warning CONFIG_WIFI_MODULE=$(CONFIG_WIFI_MODULE))
+.PHONY: romfs wifi
+
+ifneq ($(CONFIG_WIFI_MODULE), )
+CPWIFI=wifi
+endif
+
+$(warning CPWIFI=$(CPWIFI))
+all:
+
+romfs: $(CPWIFI)
+ chmod +x ./scripts/*.sh
+ $(CP) -f ./scripts/*.sh $(ROMFS_DIR)/sbin/
+ #$(CP) -f ./scripts/*.txt $(ROMFS_DIR)/sbin/
+ mkdir -p $(ROMFS_DIR)/etc_ro/
+ $(CP) -f ./etc/*.conf $(ROMFS_DIR)/etc_ro/
+ $(CP) -f ./etc/options.auth $(ROMFS_DIR)/etc_ro/
+ $(CP) -f ./etc/options.noauth $(ROMFS_DIR)/etc_ro/
+ $(CP) -f ./etc/initchat $(ROMFS_DIR)/etc_ro/
+ifneq ($(CONFIG_USE_WEBUI_SECURITY),yes)
+ $(CP) -f ./etc/pap-secrets $(ROMFS_DIR)/etc_ro/
+ $(CP) -f ./etc/chap-secrets $(ROMFS_DIR)/etc_ro/
+endif
+ifeq ($(USE_FOTA),yes)
+ mkdir -p $(ROMFS_DIR)/recovery/sbin
+ $(CP) -f ./scripts/to_mnt_ubifs.sh $(ROMFS_DIR)/recovery/sbin/
+endif
+wifi:
+ @echo "copying wifi script"
+
+ $(CP) -rf ./wifi_script/realtek/zte_qrcode_create.sh $(ROMFS_DIR)/sbin/
+ifeq ($(CONFIG_WIFI_MODULE), realtek)
+ @echo "copying wifi realtek script"
+ mkdir -p $(ROMFS_DIR)/etc_ro/
+ $(CP) -rf ./wifi/* $(ROMFS_DIR)/etc_ro/
+ifeq ($(CONFIG_WIFI_RTL_WPA2),yes)
+ chmod +x ./wifi_script/realtek_wpa2/*
+ $(CP) -rf ./wifi_script/realtek_wpa2/* $(ROMFS_DIR)/sbin/
+else
+ chmod +x ./wifi_script/realtek/*
+ $(CP) -rf ./wifi_script/realtek/* $(ROMFS_DIR)/sbin/
+endif
+else
+ chmod +x ./wifi_script/realtek/*
+ifeq ($(CONFIG_MIN_8M_VERSION), n)
+ $(CP) -rf ./wifi_script/realtek/zte_qrcode_create.sh $(ROMFS_DIR)/sbin/
+else
+ifeq ($(CONFIG_MMI_LCD),yes)
+ $(CP) -rf ./wifi_script/realtek/zte_qrcode_create.sh $(ROMFS_DIR)/sbin/
+endif
+endif
+endif
+
+
diff --git a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_interface.h b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_interface.h
index ee013a7..f6398ca 100755
--- a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_interface.h
+++ b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_interface.h
@@ -384,6 +384,7 @@
#define GOFORM_SET_NETWORK_ADB "NETWORK_ADB"
#define GOFORM_COMMAND "COMMAND"
+#define GOFORM_NETWORK_INFO "NETWORK_INFO"
/****************************All the web pages' URL************************************/
#define ZTE_WEB_PAGE_LOGIN_NAME "index.html"
@@ -1088,6 +1089,7 @@
extern void zte_goform_set_network_adb(webs_t wp);
extern void zte_goform_set_command(webs_t wp);
+extern void zte_goform_get_network_info(webs_t wp);
/**
* @brief Data to be decoded.
diff --git a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_mgmt.c b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_mgmt.c
index 3450804..c77abb3 100755
--- a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_mgmt.c
+++ b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_mgmt.c
@@ -306,7 +306,7 @@
int sem_id = -1;
int rc = TRUE;
-
+
sem_id = get_sem(TIME_SEM_KEY_2);
if (sem_id != -1) {
sem_p(sem_id);
@@ -318,11 +318,11 @@
{
rc = FALSE; // kw 3
}
-
+
if (sem_id != -1) {
sem_v(sem_id);
}
-
+
return rc;
}
void zte_mgmt_login_timeout_check()
@@ -343,7 +343,7 @@
luser_login_timemark = LONG_MAX;
slog(MISC_PRINT, SLOG_DEBUG, "zte_mgmt_login_timemark_check: user_login_timemark is out of range [0, LONG_MAX).");
}
-
+
sem_id = get_sem(TIME_SEM_KEY_2);
if (sem_id != -1) {
sem_p(sem_id);
@@ -353,7 +353,7 @@
if (sem_id != -1) {
sem_v(sem_id);
}
-
+
if ((time_now - luser_login_timemark) > LOGIN_TIMEOUT) {
slog(MISC_PRINT, SLOG_DEBUG, "zte_mgmt_login_timemark_check: the login is timeout .");
(void)zte_web_write(NV_USER_IP_ADDR, "");
@@ -452,7 +452,7 @@
char strCfgGetItem[16] = {0};
nv_get_item(NV_RO, "usb_modetype", strCfgGetItem, sizeof(strCfgGetItem));
-
+
slog(MISC_PRINT, SLOG_NORMAL,"[goahead]debug_enable->%s current->%s\n", debug_enable, strCfgGetItem);
if((strcmp(strCfgGetItem,"user")== 0)&&(atoi(debug_enable) != 0))
{
@@ -463,7 +463,7 @@
return;
}*/
}
-
+
if ('\0' == (*debug_enable)) {
slog(MISC_PRINT, SLOG_ERR, "zte_mgmt_set_devicemode: web para:[debug_enable] is empty string.\n");
zte_write_result_to_web(wp, "set_devicemode fail:parameter debug_enable is empty!");
@@ -570,6 +570,7 @@
}
cfg_set("mgmt_quicken_power_on", mgmt_quicken_power_on);
+ cfg_save();
zte_write_result_to_web(wp, SUCCESS);
}
@@ -1346,7 +1347,7 @@
char *schedule_minute = NULL;
schedule_enable = websGetVar(wp, T("scheduleEnabled"), T(""));
-
+
if(0 == strcmp("1", schedule_enable))
{
schedule_hour = websGetVar(wp, T("scheduleHour"), T(""));
@@ -1764,7 +1765,7 @@
if (NULL == ipv6profile) {
return;
}
-
+
sprintf(cfg_name, "APN_configtmp%d", index);
cfg_get_item(cfg_name, cfg_value, sizeof(cfg_value));
pos_begin = cfg_value;
@@ -2075,7 +2076,7 @@
{
return -1;
}
-
+
memset(&buf, 0, sizeof(buf));
cfg_get_item("manual_time_month", buf, sizeof(buf));
month = atoi(buf);
@@ -2211,7 +2212,7 @@
{
mtime = 0;
}
-
+
if (0 != mtime) {
mtime += (SynBeforeTime - ltime);
} else {
@@ -2240,7 +2241,7 @@
{
ntime = 0;
}
-
+
mtime = SynBeforeTime - ntime;
}
sprintf(SynPppTotal, "%d", mtime);
@@ -2266,7 +2267,7 @@
if (0 != ret) {
slog(MISC_PRINT, SLOG_ERR, "send MSG_CMD_SNTP_SET_TIME to sntp fail!");
}
-
+
ret = ipc_send_message(MODULE_ID_WEB_CGI, MODULE_ID_AT_CTL, MSG_CMD_SYCTIME_SET_REQ, 0, NULL, 0);
if (0 != ret) {
slog(MISC_PRINT, SLOG_ERR, "sync time to cp fail!");
@@ -3003,7 +3004,7 @@
*dst = '\0';
}
-static void executeCommand(const char *command, char *result)
+static void executeCommand(const char *command, char *result, int size)
{
if (command == NULL || strlen(command) == 0)
{
@@ -3017,7 +3018,7 @@
perror("popen failed");
return;
}
- int nread = fread(result, 1, 256, pipe);
+ int nread = fread(result, 1, size, pipe);
if (nread > 0)
{
result[nread - 1] = '\0';
@@ -3044,6 +3045,141 @@
}
}
+static void parse_at_response(const char *response, char **params, int *param_count, char *at, int count)
+{
+ const char *start = strstr(response, at);
+ if (start == NULL)
+ {
+ printf("Response does not contain the expected prefix.\n");
+ return;
+ }
+
+ start += strlen(at);
+ char *token = strtok((char *)start, ",");
+ *param_count = 0;
+
+ while (token != NULL && *param_count < count)
+ {
+ params[(*param_count)++] = token;
+ token = strtok(NULL, ",");
+ }
+}
+
+#define MIN_RSRQ_VALUE -19.5 // 1¤71¤7§³dB0ö5
+#define STEP_SIZE 0.5 // 071¤71¤71¤71¤71¤71¤7041¤71¤71¤7
+#define MAX_RSRQ_INDEX 34 // 1¤71¤71¤71¤71¤71¤71¤71¤71¤71¤71¤7
+
+static float get_rsrq_db_value(int rsrq_index)
+{
+ if (rsrq_index < 0 || rsrq_index > MAX_RSRQ_INDEX)
+ {
+ return -1000.0;
+ }
+
+ float lower_bound = MIN_RSRQ_VALUE + rsrq_index * STEP_SIZE;
+
+ return lower_bound;
+}
+
+void zte_goform_get_network_info(webs_t wp)
+{
+ char response[1024];
+ char tmp[16] = {0};
+ char plmn[16] = {0};
+ char *params[15];
+ int param_count = 0;
+ int i = 0;
+ char rsrp[16] = {0};
+ char cell_id[16] = {0};
+
+ executeCommand("at at+ZSINR 2>&1", response, sizeof(response));
+ const char *start = strstr(response, "+ZSINR: ");
+ if (start != NULL)
+ {
+ start += strlen("+ZSINR: ");
+ char *sinr = strtok((char *)start, ",");
+ if (atoi(sinr) == -20)
+ {
+ cfg_set("lte_sinr", "--");
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s\","), "lte_sinr", "--");
+ }
+ else
+ {
+ cfg_set("lte_sinr", sinr);
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s dB\","), "lte_sinr", sinr);
+ }
+ }
+ else
+ {
+ cfg_set("lte_sinr", "--");
+ web_feedback_header(wp);
+ (void)websWrite(wp, T("{\"%s\":\"%s\","), "lte_sinr", "--");
+ }
+
+ executeCommand("at at+ZEMSCIQ=1 2>&1", response, sizeof(response));
+ if (strstr(response, "+CME ERROR:") != NULL)
+ {
+ printf("----No network\n");
+ cfg_set("lte_plmn", "--");
+ cfg_set("lte_pci", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrp", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrq", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_plmn", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_cellid", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_pci", "--");
+ (void)websWrite(wp, T("\"%s\":\"%s\"}"), "lte_band", "--");
+ }
+ else
+ {
+ parse_at_response(response, params, ¶m_count, "+ZEMSCIQ: ", 12);
+ for (i = 0; i < param_count; i++)
+ {
+ printf("Parameter[%d]: %s\n", i, params[i]);
+ }
+ printf("======set lte_plmn=%s lte_pci=%s lte_band=%s lte_rsrq=%s\n", params[5], params[6], params[8], params[10]);
+ float db_value = get_rsrq_db_value(atoi(params[10]));
+ if (db_value == -1000.0)
+ {
+ cfg_set("lte_rsrq", " ");
+ }
+ else
+ {
+ sprintf(tmp, "%d", (int)db_value);
+ cfg_set("lte_rsrq", tmp);
+ }
+
+ snprintf(plmn, strlen(params[5]) - 1, "%s", params[5] + 1);
+ cfg_set("lte_plmn", plmn);
+ cfg_set("lte_pci", params[6]);
+ cfg_get_item("cell_id", cell_id, sizeof(cell_id));
+ cfg_get_item("lte_rsrp", rsrp, sizeof(rsrp));
+ if (strlen(rsrp) == 0)
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrp", "--");
+ }
+ else
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s dBm\","), "lte_rsrp", rsrp);
+ }
+ if (strlen(tmp) == 0)
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_rsrq", "--");
+ }
+ else
+ {
+ (void)websWrite(wp, T("\"%s\":\"%s dB\","), "lte_rsrq", tmp);
+ }
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_plmn", plmn);
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_cellid", cell_id);
+ (void)websWrite(wp, T("\"%s\":\"%s\","), "lte_band", params[8]);
+ (void)websWrite(wp, T("\"%s\":\"%s\"}"), "lte_pci", params[6]);
+ }
+
+ return;
+}
+
void zte_goform_set_command(webs_t wp)
{
MSG_BUF stMsg = {0};
@@ -3087,7 +3223,7 @@
replace_slash_with_backslash(value);
printf("replace value:%s\n", value);
}
- executeCommand(value, result);
+ executeCommand(value, result, sizeof(result));
printf("Command Output:\n%s\n", result);
zte_write_result_to_web(wp, result);
return;
@@ -3244,7 +3380,7 @@
{
login_times = 0;
}
-
+
login_times--;
sprintf(psw_fail_num_str, "%d", login_times);
(void)zte_web_write("psw_fail_num_str", psw_fail_num_str);
@@ -3469,7 +3605,7 @@
{
int efuse_fd = -1;
T_ZDrvEfuse_Secure efuse = {0};
-
+
memset(&efuse, 0, sizeof(efuse));
efuse_fd = open("/dev/efuse", O_RDWR);
if (efuse_fd < 0) {
@@ -3483,7 +3619,7 @@
}
close(efuse_fd);
memcpy(aes_key, efuse.pubKeyHash, k_len);
-
+
return 1;
}
@@ -3493,13 +3629,13 @@
printf("bs_aes_encrypt err in=%p out=%p key=%p len=%d key_len=%d\n",in,key,out,len,key_len);
return 0;
}
-
+
AES_KEY aes = {0}; //cov h
if (AES_set_encrypt_key(key, key_len*8, &aes) < 0) {
printf("bs_aes_encrypt AES_set_encrypt_key err\n");
return 0;
}
-
+
int en_len = 0;
while (en_len < len) {
AES_encrypt((unsigned char*)in, (unsigned char*)out, &aes);
@@ -3507,7 +3643,7 @@
out += AES_BLOCK_SIZE;
en_len += AES_BLOCK_SIZE;
}
-
+
return 1;
}
@@ -3517,13 +3653,13 @@
printf("bs_aes_decrypt err in=%p out=%p key=%p len=%d key_len=%d\n",in,key,out,len,key_len);
return 0;
}
-
+
AES_KEY aes = {0}; //cov h
if (AES_set_decrypt_key((unsigned char*)key, key_len*8, &aes) < 0) {
printf("bs_aes_decrypt AES_set_decrypt_key err\n");
return 0;
}
-
+
int en_len = 0;
while (en_len < len) {
AES_decrypt((unsigned char*)in, (unsigned char*)out, &aes);
@@ -3531,7 +3667,7 @@
out += AES_BLOCK_SIZE;
en_len += AES_BLOCK_SIZE;
}
-
+
return 1;
}
@@ -3541,7 +3677,7 @@
printf("bs_aes_encrypt err in=%p out=%p key=%p len=%d key_len=%d\n",in,key,out,len,key_len);
return 0;
}
-
+
AES_KEY aes = {0}; //cov h
if (AES_set_encrypt_key(key, key_len*8, &aes) < 0) {
printf("bs_aes_encrypt AES_set_encrypt_key err\n");
@@ -3550,11 +3686,11 @@
unsigned char iv[AES_BLOCK_SIZE] = {0};
memcpy(iv, key, AES_BLOCK_SIZE);
-
+
AES_cbc_encrypt((unsigned char*)in, (unsigned char*)out, len,
&aes, iv, AES_ENCRYPT);
-
+
return 1;
}
@@ -3564,7 +3700,7 @@
printf("bs_aes_decrypt err in=%p out=%p key=%p len=%d key_len=%d\n",in,key,out,len,key_len);
return 0;
}
-
+
AES_KEY aes = {0}; //cov h
if (AES_set_decrypt_key((unsigned char*)key, key_len*8, &aes) < 0) {
printf("bs_aes_decrypt AES_set_decrypt_key err\n");
@@ -3573,7 +3709,7 @@
unsigned char iv[AES_BLOCK_SIZE] = {0};
memcpy(iv, key, AES_BLOCK_SIZE);
-
+
AES_cbc_encrypt((unsigned char*)in, (unsigned char*)out, len,
&aes, iv, AES_DECRYPT);
@@ -3793,7 +3929,7 @@
set_apn_prof_aes_by_index(index, &profile);
// printf("decrypt fota ppp_tmp[%d]=%s\n", index, profile.ppp_passwd);
}
-
+
set_apn_profile_by_index(index, &profile);
return;
@@ -3973,7 +4109,7 @@
{
char rstr[10] = {0};
unsigned int rnum = 0;
-
+
srand( (unsigned)time( NULL ) );
rnum = rand();
rnum %= 1000000000;
@@ -3988,11 +4124,11 @@
size_t aes_len = 0;
char *out = NULL;
-
+
char js_aes_key[24 + 1]={0};
char imei_buf[15 + 1] = {0};
char rnum_buf[9 + 1] = {0};
-
+
aes_password = (char *)zte_base64_decode((const unsigned char *)src, len, (unsigned int*)&aes_len);
if (aes_password == NULL)
return NULL;
@@ -4008,7 +4144,7 @@
cfg_get_item("imei", imei_buf, sizeof(imei_buf));
cfg_get_item("rnum_js", rnum_buf, sizeof(rnum_buf));
snprintf(js_aes_key, sizeof(js_aes_key), "%s%sFFFFFFFFFFFFFFF", rnum_buf, imei_buf);
-
+
bs_aes_cbc_decrypt(aes_password, aes_len, out, js_aes_key, sizeof(js_aes_key)-1);
//printf("decrypt js_aes_decode[%d]=%s\n", aes_len, out);
@@ -4020,7 +4156,7 @@
}
*out_len = strlen(out);
-
+
return out;
}
#endif
diff --git a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_util.c b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_util.c
index a824754..2c3c467 100755
--- a/lynq/MD310/ap/app/goahead/interface5.0/zte_web_util.c
+++ b/lynq/MD310/ap/app/goahead/interface5.0/zte_web_util.c
@@ -127,6 +127,7 @@
{CMD_HTTPSHARE_GETCARD_VAULE, zte_httpShare_getcard_value},
{CMD_HTTPSHARE_GETCARD_NMEA, zte_httpShare_getcard_name},
{CMD_HTTPSHARE_AUTH_GET, zte_httpShare_auth_get},
+ {GOFORM_NETWORK_INFO, zte_goform_get_network_info},
};
diff --git a/lynq/MD310/ap/app/zte_webui/css/com.css b/lynq/MD310/ap/app/zte_webui/css/com.css
new file mode 100755
index 0000000..50110dd
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/css/com.css
@@ -0,0 +1,2602 @@
+/* Reset the container */
+.container {
+ width: 970px !important;
+ max-width: none !important;
+}
+
+.container .navbar-header,
+.container .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+}
+
+/* Always float the navbar header */
+.navbar-header {
+ float: left;
+}
+
+/* Undo the collapsing navbar */
+.navbar-collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+}
+
+.navbar-toggle {
+ display: none;
+}
+.navbar-collapse {
+ border-top: 0;
+}
+
+.navbar-brand {
+ margin-left: -15px;
+}
+
+/* Always apply the floated nav */
+.navbar-nav {
+ float: left;
+ margin: 0;
+}
+.navbar-nav > li {
+ float: left;
+}
+.navbar-nav > li > a {
+ padding: 15px;
+}
+
+/* Redeclare since we override the float above */
+.navbar-nav.navbar-right {
+ float: right;
+}
+
+/* Undo custom dropdowns */
+.navbar .navbar-nav .open .dropdown-menu {
+ position: absolute;
+ float: left;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-width: 0 1px 1px;
+ border-radius: 0 0 4px 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #333;
+}
+.navbar .navbar-nav .open .dropdown-menu > li > a:hover,
+.navbar .navbar-nav .open .dropdown-menu > li > a:focus,
+.navbar .navbar-nav .open .dropdown-menu > .active > a,
+.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff !important;
+ background-color: #008AD7 !important;
+}
+.navbar .navbar-nav .open .dropdown-menu > .disabled > a,
+.navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+.navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #999 !important;
+ background-color: transparent !important;
+}
+
+body {
+ min-width: 970px;
+ padding-bottom: 30px;
+}
+
+.lead {
+ font-size: 16px;
+}
+
+.page-header {
+ margin-bottom: 30px;
+}
+.page-header .lead {
+ margin-bottom: 10px;
+}
+h1, .h1 {
+ font-size: 20px;
+}
+h2, .h2 {
+ font-size: 18px;
+}
+h3, .h3 {
+ font-size: 18px;
+}
+label{
+ font-weight: normal;
+}
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6{
+ font-weight: bold;
+}
+
+.label-primary {
+ background-color: #018AD8;
+}
+
+.arrow-down {
+ bottom:0;
+ border-width: 8px 4px 0;
+ width: 0;
+ height: 0;
+ border-color: #018AD8 transparent transparent;
+ border-style: solid;
+}
+
+.absolute-center {
+ position: absolute;
+ left: 49%;
+}
+
+.info-title.label {
+ padding: 0.3em 0.7em 0.3em;
+}
+
+.margin-top-10 {margin-top: 10px;}
+.margin-top-15 {margin-top: 15px;}
+.margin-top-20 {margin-top: 20px;}
+.margin-top-50 {margin-top: 50px;}
+.margin-top-80 {margin-top: 80px;}
+.margin-top-160 {margin-top: 160px;}
+
+.margin-bottom-10{margin-bottom: 10px;}
+.margin-bottom-20{margin-bottom: 20px;}
+.margin-bottom-50{margin-bottom: 50px;}
+
+.margin-left-10{margin-left: 10px;}
+.margin-left-15{margin-left: 15px;}
+.margin-left-3em{margin-left: 3em;}
+
+.margin-right-20{margin-right: 20px;}
+
+.padding-top-10{padding-top: 10px;}
+
+.padding-right-10{padding-right: 10px;}
+.padding-right-15{padding-right: 15px;}
+.padding-right-90 {
+ padding-right: 90px;
+}
+
+.line-height-20{line-height: 20px;}
+.line-height-30{line-height: 30px;}
+.line-height-40{line-height: 40px;}
+.line-height-60{line-height: 60px;}
+
+.width-60{width: 60px;}
+
+.font-weight-bold{
+ font-weight: bold;
+}
+
+.smsUnreadCount {
+ width: 30px;
+ height: 20px;
+ line-height: 20px;
+ padding: 2px;
+ top: -13px;
+ left: 20px;
+ position: absolute;
+ text-align: center;
+ z-index: 10;
+ background: url("../pic/png_new_sms_bg.png") no-repeat scroll 0 -5px transparent;
+ color: white;
+}
+
+.tooltip {
+ width: auto;
+ min-width: 5px;
+ position: absolute;
+ padding: 6px;
+ display: none;
+ color: #fff;
+ background-color: #4B4B4B;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ box-shadow: 0 3px 5px #999;
+ -moz-box-shadow: 0 3px 5px #999;
+ -webkit-box-shadow: 0 3px 5px #999;
+ margin-top: 5px;
+ *+margin-top:0px;
+}
+
+#statusBar span{
+ margin-right: 10px;
+}
+
+#statusBar span.smsUnreadCount{
+ margin-left: 0;
+}
+
+#statusBar .statusItem{
+ color: #696E72;
+ font-weight: bold;
+ line-height: 35px;
+ vertical-align: middle;
+}
+
+#statusBar #wifi_status{
+ width: 36px;
+ display: inline-block;
+}
+
+#statusBar #wifi_status i{
+ width: 36px;
+ height: 24px;
+ line-height: 24px;
+ display: inline-block;
+}
+
+#statusBar .icon_connection{
+ width: 50px;
+ display: inline-block;
+}
+
+#statusBar .wifi_connected{
+ width: 42px;
+ height: 30px;
+ background:url("../pic/pic_wifi_connect.png") no-repeat scroll center 2px transparent;
+}
+
+#statusBar .rj45_connected{
+ width: 42px;
+ height: 30px;
+ background:url("../pic/pic_rj45_connect.png") no-repeat scroll center 2px transparent;
+}
+
+#statusBar .connecting{
+ width: 36px;
+ height: 30px;
+ background:url("../pic/pic_connecting.gif") no-repeat scroll center 3px transparent;
+}
+
+#statusBar .disconnect{
+ width: 42px;
+ height: 30px;
+ background:url("../pic/pic_disconnect.png") no-repeat scroll center 3px transparent;
+}
+
+#statusBar .connectionNone{
+ height: 30px;
+ background:url("../pic/pic_connection.png") no-repeat scroll center 3px transparent;
+}
+
+#statusBar .connectionUp{
+ height: 30px;
+ background:url("../pic/pic_connection.png") no-repeat scroll center -27px transparent;
+}
+
+#statusBar .connectionDown{
+ height: 30px;
+ background:url("../pic/pic_connection.png") no-repeat scroll center -57px transparent;
+}
+
+#statusBar .connectionBoth{
+ height: 30px;
+ background:url("../pic/pic_connection.png") no-repeat scroll center -87px transparent;
+}
+
+#statusBar .signal{
+ width: 40px;
+ height: 30px;
+ display: inline-block;
+}
+
+#statusBar .signal_none{
+ width: 30px;
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll 6px -268px transparent;
+}
+
+#statusBar .signal0{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -3px transparent;
+}
+
+#statusBar .signal1{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -45px transparent;
+}
+
+#statusBar .signal2{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -92px transparent;
+}
+
+#statusBar .signal3{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -140px transparent;
+}
+
+#statusBar .signal4{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -185px transparent;
+}
+
+#statusBar .signal5{
+ height: 30px;
+ background:url("../pic/res_signal.png") no-repeat scroll center -227px transparent;
+}
+
+#statusBar .wifi_status0{
+ background: url("../pic/wlan.png") no-repeat scroll 0 4px transparent;
+}
+
+#statusBar .wifi_status1{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -20px transparent;
+}
+
+#statusBar .wifi_status2{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -45px transparent;
+}
+
+#statusBar .wifi_status3{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -70px transparent;
+}
+
+#statusBar .wifi_status4{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -95px transparent;
+}
+
+#statusBar .wifi_status5{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -120px transparent;
+}
+
+#statusBar .wifi_status6{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -145px transparent;
+}
+
+#statusBar .wifi_status7{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -170px transparent;
+}
+
+#statusBar .wifi_status8{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -195px transparent;
+}
+
+#statusBar .wifi_status9{
+ background: url("../pic/wlan.png") no-repeat scroll 0 -220px transparent;
+}
+
+#statusBar .wifi_status10{
+ background: url("../pic/wlan.png") no-repeat scroll -40px 4px transparent;
+}
+
+#statusBar .wifi_status11{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -20px transparent;
+}
+
+#statusBar .wifi_status12{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -45px transparent;
+}
+
+#statusBar .wifi_status13{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -70px transparent;
+}
+
+#statusBar .wifi_status14{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -95px transparent;
+}
+
+#statusBar .wifi_status15{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -120px transparent;
+}
+
+#statusBar .wifi_status16{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -145px transparent;
+}
+
+#statusBar .wifi_status17{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -170px transparent;
+}
+
+#statusBar .wifi_status18{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -195px transparent;
+}
+
+#statusBar .wifi_status19{
+ background: url("../pic/wlan.png") no-repeat scroll -40px -220px transparent;
+}
+
+#statusBar .wifi_status20{
+ background: url("../pic/wlan.png") no-repeat scroll -78px 5px transparent;
+}
+
+#statusBar .wifi_status21{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -20px transparent;
+}
+
+#statusBar .wifi_status22{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -45px transparent;
+}
+
+#statusBar .wifi_status23{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -70px transparent;
+}
+
+#statusBar .wifi_status24{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -95px transparent;
+}
+
+#statusBar .wifi_status25{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -120px transparent;
+}
+
+#statusBar .wifi_status26{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -145px transparent;
+}
+
+#statusBar .wifi_status27{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -170px transparent;
+}
+
+#statusBar .wifi_status28{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -195px transparent;
+}
+
+#statusBar .wifi_status29{
+ background: url("../pic/wlan.png") no-repeat scroll -78px -220px transparent;
+}
+
+#statusBar .wifi_status30{
+ background: url("../pic/wlan.png") no-repeat scroll -116px 5px transparent;
+}
+
+#statusBar .wifi_status31{
+ background: url("../pic/wlan.png") no-repeat scroll -116px -20px transparent;
+}
+
+#statusBar .wifi_status32{
+ background: url("../pic/wlan.png") no-repeat scroll -116px -45px transparent;
+}
+
+#statusBar .wifi_status_off{
+ background:url('../pic/wlan_off.png') no-repeat;
+}
+
+/* Overlay */
+#loading {
+ display: none;
+}
+
+#result-overlay {
+ display: none;
+}
+
+#result_wording h2{
+ font-size: 20px;
+ margin-top: 5px;
+ margin-bottom: 8px;
+}
+
+#result-overlay #result-image {
+ height: 75px;
+ margin: 0 auto;
+ width: 75px;
+}
+
+#result-overlay .overlay-success {
+ background: url("../pic/res_succ.png") no-repeat scroll 0 0 transparent;
+}
+
+#result-overlay .overlay-error {
+ background: url("../pic/res_failure.png") no-repeat scroll 0 0 transparent;
+}
+
+#loading_container{padding-bottom: 15px;}
+
+#loading_container a {
+ outline: none;
+}
+
+#progress {
+ display: none;
+}
+
+
+.ko-grid-search{
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
+ margin-top: 3px;
+ margin-right: 15px;
+ width: 155px;
+ height: 30px;
+ line-height: 30px;
+ padding-right: 5px;
+ display: inline-block;
+ border: 1px solid #a1a1a1 ;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -o-border-radius: 5px;
+}
+
+.ko-grid-search input{
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: none;
+ height: 20px;
+ line-height: 20px;
+ padding: 5px 0;
+ background: none;
+ outline: none;
+ display: inline;
+}
+
+.ko-grid-search input.focusIn[type="text"]{
+ width: 100px;
+ padding: 2px 0;
+ margin: 0;
+ color: #767676;
+ background: none;
+ border: none;
+ box-shadow: none;
+}
+
+#frmPhoneBook #ko_grid_search_txt{
+ width: 100px;
+ padding: 2px 0;
+ color: #767676;
+ font-style:italic;
+}
+
+#smsListForm #searchInput{
+ width: 100px;
+ padding: 2px 0;
+ color: #767676;
+ font-style:italic;
+}
+
+#ko_grid_search_txt::-ms-clear {
+ display: none;
+}
+
+.ko-grid-search input.focusIn[type="text"], input.focusIn[type="password"] ,textarea:focus{
+ border-color:none;
+ outline: 0;
+ /* IE6-9 */
+ -webkit-box-shadow:none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.checkbox {
+ width: 16px;
+ height: 16px;
+ margin-top: 0;
+ margin-bottom: 0;
+ cursor: pointer;
+ vertical-align: middle;
+ display: inline-block;
+ background:url("../pic/tickbox.png") no-repeat;
+}
+
+.checkbox:hover {
+ display: inline-block;
+}
+
+.checkbox input {
+ display: none;
+}
+
+.checkbox_selected {
+ background:url("../pic/tickbox_in.png") no-repeat;
+}
+
+p.checkbox.disable{
+ background:url("../pic/tickbox_disable.png") no-repeat;
+}
+
+p.checkbox.checked_disable{
+ background:url("../pic/tickbox_in_disable.png") no-repeat;
+}
+
+.header-bottom {
+ padding-bottom: 10px;
+ border-bottom: 1px solid #d3d3d3;
+}
+
+.popover_title{
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ margin: 0;
+ padding: 8px 14px;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+ background-color: #f7f7f7;
+}
+
+.popover_content{
+ margin-top: 1em;
+ padding: 0 8px 8px 8px;
+}
+
+.popover_row label.error{
+ width: 100%;
+ text-align: left;
+}
+
+.form-title{
+ margin-bottom: 20px;
+ border-bottom: 1px solid #eee;
+}
+
+#footer{
+ /*margin-top: 40px;
+ background: #eeeeee;*/
+ height: 60px;
+ line-height: 60px;
+ text-align: center;
+}
+
+#smsChatRoom {
+ width: 100%;
+ font-size: 12px;
+ padding-left: 0;
+ float: left;
+ display: none;
+}
+
+#smsChatRoom #chosenUserSelect{
+ width: 690px;
+}
+
+#chosenUser {
+ padding: 10px;
+ background-color: #D4DAE2;
+ box-shadow: 0 -3px 8px #ddd;
+}
+
+#chosenUser1{
+ margin-top: 0;
+}
+
+#chatlist {
+ padding-left: 10px;
+ padding-top: 10px;
+ background-color: white;
+ position: relative;
+ min-height: 240px;
+ box-shadow: 0 -3px 8px #D4DAE2;
+ *display: inline;
+}
+
+#chatlist a{
+ text-decoration: underline;
+ color: blue;
+}
+
+#chatpanel {
+ height: 250px;
+ border: 1px solid #e1e1e1;
+ overflow-x: hidden;
+ overflow-y: hidden;
+ background-color: white;
+}
+
+#chatpanel .clear-container {
+ width: 100%;
+ height: 250px;
+ border: 1px solid #e1e1e1;
+ border-top: none;
+ border-left: none;
+ position: relative;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+#inputpanel {
+ height: 142px;
+ padding: 10px 0;
+ position: relative;
+}
+
+.chatform {
+ margin: 0;
+ height: 120px;
+}
+
+textarea {
+ resize: none;
+}
+
+.chatform .chattextinput textarea {
+ height: 110px;
+ line-height:normal;
+ font-size: 14px;
+ color: #696e72;
+ overflow: auto;
+}
+
+#sendSmsErrorLi{
+ color: #CC0000;
+}
+
+.chatfun {
+ padding-top: 8px;
+}
+
+.chatfun ul.ext {
+ float: left;
+}
+
+.chatfun ul.ext li {
+ float: left;
+ padding-left: 10px;
+ margin-right: 20px;
+}
+
+.chatfun ul.btn {
+ float: right;
+}
+
+.chatfun ul.btn li {
+ float: left;
+ margin-right: 10px;
+}
+
+.chatfun ul.btn li button {
+ padding: 1px 0;
+}
+
+.grid-talk .main-wrap {
+ margin-right: 36px;
+ _margin-right: 18px;
+}
+
+.grid-talkf .main-wrap {
+ margin-left: 36px;
+ _margin-left: 18px;
+}
+
+.col-main {
+ float: left;
+ width: 100%;
+ min-height: 1px;
+}
+
+
+.progress-content{
+ text-align: center
+}
+
+.progress-bar-container{
+ width:400px; height:32px;
+ margin:0 auto;
+ padding:1px;
+ border:1px #CCC solid;
+ text-align: left;
+ position:relative;
+}
+
+.progress-bar{
+ width:200px;
+ height:28px;
+ background:#429aff;
+}
+
+.progress-bar-value{
+ top:7px;
+ width:400px;
+ position:absolute;
+ text-align:center;
+ overflow:hidden;
+ font-weight:bold;
+}
+
+.progress-prompt{
+ font-size:small;
+ font-weight:bold;
+ padding-bottom: 15px;
+}
+
+#simplemodal-overlay {
+ cursor: wait;
+ background-color: #000;
+}
+
+#confirm,#popupSettingWindow{
+ display: none;
+}
+
+/* Overlay */
+#confirm-overlay {
+ cursor: wait;
+ background-color: #000;
+}
+
+/* Container */
+#confirm-container {
+ width: 420px;
+ border: 2px solid #dddddd;
+ border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ text-align: left;
+ background: none repeat scroll 0 0 #fff;
+}
+
+#confirm-container .header {
+ width: 100%;
+ height: 30px;
+ line-height: 30px;
+ color: #000;
+ font-weight: bold;
+ background-color: #eaeaea;
+ border-bottom: 1px solid #cbcbcb;
+}
+
+#confirm-container .header span {
+ padding-left: 8px;
+}
+
+#confirm-container .buttons {
+ padding: 10px 8px;
+ text-align: right;
+}
+
+#confirm-container .message {
+ color: #000;
+ font-size: 14px;
+}
+
+#confirm .message > i {
+ font-size: 0.9em;
+}
+
+#confirm-message-container{
+ margin: 10px 5px;
+}
+
+#confirm .icon {
+ width: 50px;
+ margin: 0 0 0 10px;
+ vertical-align: top;
+ display: inline-block;
+}
+
+#confirm .confirm-message {
+ width: 310px;
+ margin: 10px 10px 10px 0;
+ vertical-align: top;
+ display: inline-block;
+}
+
+.simplemodal-wrap .form-title{
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.cursorhand{
+ cursor: pointer;
+}
+
+.device-block{
+ width: 100px;
+ margin: 0 24px 5px 0;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+}
+
+.device-block-desc{
+ padding-top: 100px;
+ width: 100px;
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: middle;
+ text-align: center;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ background: url("../pic/mobile.png") no-repeat scroll 0 0 transparent;
+}
+
+.expend-desc{
+ padding-left: 2em;
+}
+
+.arrow-right{
+ padding-right: 30px;
+ background: url("../pic/direct-right.png") no-repeat scroll right center transparent;
+}
+
+#pc_main_form .content {
+ padding-left: 2em;
+}
+
+table.colorHoverTable thead tr {
+ height: 27px;
+}
+
+.header-center th{
+ text-align: center;
+}
+
+#pc_time_limited_form table thead tr{
+ background: none;
+}
+
+#pc_time_limited_form table thead td{
+ min-width: 4%;
+}
+
+#pc_time_limited_form table tbody td{
+ border: 1px solid #ccc;
+ height: 40px;
+ vertical-align: middle;
+ /*line-height: 40px;*/
+ padding: 0;
+ border-collapse: collapse;
+}
+
+#pc_time_limited_form table tbody td.active{
+ background-color: red;
+}
+
+#pc_time_limited_form table tbody td:first-child{
+ width: 50px;
+ border-width: 0 1px 0 0;
+}
+
+#pc_time_limited_form .pc_time_block{
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ border: 1px solid #ccc;
+}
+
+#pc_time_limited_form .time_td_hover{
+ background: #eee;
+}
+
+#pc_time_limited_form .forbid_time{
+ background-color: red;
+}
+
+#pc_children_group_form table td{
+ line-height: 32px;
+}
+
+.layout:after,.main-wrap:after,.col-sub:after,.col-extra:after {
+ content: '\20';
+ display: block;
+ height: 0;
+ clear: both;
+}
+
+.talk-item {
+ margin: 10px 0 5px 0;
+}
+
+.talk-item .info-user {
+ width: 30px;
+ padding: 2px;
+ border: 1px solid #335A8B;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ background-color: #fff;
+}
+
+.talk-item .info-user img {
+ width: 30px;
+ display: block;
+}
+
+.talk-item .time {
+ height: 20px;
+ line-height: 20px;
+ clear: both;
+}
+
+.talk-item .msg {
+ padding: 10px;
+ max-width: 560px;
+ line-height: 180%;
+ position: relative;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #000;
+}
+
+.talk-item .msg s.arrow {
+ width: 7px;
+ height: 13px;
+ bottom: 10px;
+ display: block;
+ position: absolute;
+ background: url(../pic/a-direct.png) no-repeat;
+}
+
+.talk-b .msg_fail s.arrow{
+ bottom: 10px;
+ display: block;
+ width: 7px;
+ height: 13px;
+ left: 100%;
+ position: absolute;
+ background: url(../pic/c-direct.png) no-repeat;
+}
+
+.talk-item .msg_fail {
+ padding: 10px;
+ line-height: 180%;
+ max-width: 560px;
+ position: relative;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #000;
+}
+
+.talk-b .msg_fail{
+ float: right;
+ min-width: 70px;
+ padding: 10px 10px 15px 10px;
+ background: #ffdbdb;
+ border: 1px solid #f46c6c;
+ min-width: 350px;
+}
+
+.msg_fail pre{
+ border: medium none;
+ line-height: 17px;
+ margin: 0;
+ overflow-x: auto;
+ padding: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ color: #696e72;
+ background: none repeat scroll 0 0 transparent;
+}
+
+#smsChatRoom .error {
+ color: #CC0000;
+}
+
+.info-talk{
+ color: #87acd6;
+}
+
+.talk-a .info-talk {
+ float: left;
+ padding: 0 20% 10px 10px;
+ min-width: 420px;
+ _float: none;
+ _padding-left: 26px;
+}
+
+.talk-a .msg {
+ min-width: 350px;
+ min-height: 20px;
+ border: 1px solid #ccc;
+ background: #eef2f4;
+}
+
+.talk-a .msg s.arrow {
+ left: -7px;
+ _left: -17px;
+}
+
+.talk-b {
+ margin-right: 10px;
+ _margin-right: 20px;
+}
+
+.talk-b .info-talk {
+ float: right;
+ min-width: 420px;
+ padding: 0 10px 10px 20%;
+}
+
+.talk-b .msg {
+ float: right;
+ min-width: 350px;
+ min-height: 20px;
+ border: 1px solid #ADCAE3;
+ padding: 10px 10px 10px 10px;
+ background: #bce3f4;
+}
+
+.talk-c {
+ margin-right: 20px;
+ _margin-right: 30px;
+}
+
+.talk-b .info-talk {
+ float: right;
+ min-width: 420px;
+ padding: 0 10px 10px 20%;
+}
+
+.talk-c .msg {
+ float: right;
+ min-width: 70px;
+ padding: 10px 10px 15px 10px;
+ border: 1px solid #ADCAE3;
+ background: #bce3f4;
+}
+
+.talk-b .msg s.arrow {
+ left: 100%;
+ background: url("../pic/b-direct.png") no-repeat;
+}
+
+#smslist-main .smslist-btns.smsListFloatButs{
+ position: fixed;
+ top: 0;
+ width: 770px;
+ height: 50px;
+ padding: 6px 0 0 0;
+ border: 1px solid #018AD8;
+ display: block;
+ z-index: 9999;
+ background: #F5F9FE;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F5F9FE), to(#018AD8) );
+ background: -ms-linear-gradient(top, #F5F9FE, #018AD8);
+ background: -moz-linear-gradient(top, #F5F9FE, #018AD8);
+ background: -o-linear-gradient(top, #F5F9FE, #018AD8);
+ filter: progid:dximagetransform.microsoft.gradient(enabled='true', startColorstr='#FFF5F9FE', endColorstr='#FF018AD8', GradientType=0);
+}
+
+#popupSettingWindow .tag-popup-close{
+ height: 0;
+ position: relative;
+ z-index: 2000;
+}
+
+#popupSettingWindow .tag-popup-close a {
+ float: right;
+ display: block;
+ top: 15px;
+ right: 15px;
+ width: 12px;
+ height: 13px;
+ font-size: 1px;
+ background: url("../pic/select-sprite.png") no-repeat scroll right -11px transparent;
+ position: absolute;
+}
+
+#innerTagPopup{
+ z-index: 250;
+ width: 185px;
+ line-height: 130%;
+ border: 1px solid #D4DAE2;
+ border-radius: 5px;
+ position: absolute;
+ background-color: #D4DAE2;
+ box-shadow: 0 -3px 8px #DDDDDD;
+}
+
+#innerTagPopup label.error{
+ color: #CC0000;
+ display: block;
+}
+
+#innerTagPopup .popup-wrapper {
+ background: #fff;
+ border: 2px solid #76b2de;
+ padding: 5px;
+}
+
+#innerTagPopup .tag-popup-close a {
+ float: right;
+ display: block;
+ width: 12px;
+ height: 13px;
+ font-size: 1px;
+ background: url("../pic/select-sprite.png") no-repeat scroll right -11px transparent;
+}
+
+
+#home_control{
+ color: #fff;
+ margin: 4px 0 0;
+}
+
+#home_control #change{
+ color: #ffffff;
+ font-weight: bold;
+ padding: 3px 15px;
+ background-color: transparent;
+}
+
+#home_image{
+ height: 400px;
+ color: #fff;
+}
+
+.label-font-normal label{
+ font-weight: normal;
+}
+
+#showDetailInfo ~ .popover{
+ min-width: 400px;
+}
+
+#showDetailInfo ~ .popover label{
+ font-size: 12px;
+ line-height: 1.5em;
+ word-wrap: break-word;
+}
+
+#h_qrcode {
+ width: 115px;
+ height: 115px;
+ background-color: #ffffff;
+ border: 1px solid #ffffff;
+}
+
+#h_wire_device {
+ top: 38px;
+ left: 130px;
+ display:inline;
+ margin-right:25px;
+ font-size: 30px;
+ display:inline-block;
+}
+
+#h_wireless_device {
+ font-size: 30px;
+ top: 105px;
+ left: 60px;
+ display:inline-block;
+}
+
+#h_network_type{
+ height: 30px;
+ top: 183px;
+ left: 415px;
+ line-height: 30px;
+ text-align: center;
+ font-size: 18px;
+}
+
+.data-card #h_network_type{
+ top: 156px;
+ left: 218px;
+}
+
+#h_network_type.no-btn {
+}
+
+#h_connect_btn{
+ width: 72px;
+ height: 35px;
+ display:inline-block;
+}
+
+.data-card #h_connect_btn{
+ top: 153px;
+ left: 323px;
+}
+
+.h_connect_on{
+ background: url('../pic/dial-on.png') no-repeat scroll 0 0 transparent;
+}
+
+.h_connect_off{
+ background: url('../pic/dial-off.png') no-repeat scroll 0 0 transparent;
+}
+
+#h_internet_setting_div{
+ top: 222px;
+ left: 418px;
+ width: 170px;
+ height: 35px;
+ margin-top:20px;
+ line-height: 35px;
+ text-align: center;
+}
+
+.data-card #h_internet_setting_div{
+ top: 205px;
+ left: 221px;
+}
+
+#h_internet_setting_btn{
+ width: 170px;
+ height: 35px;
+ line-height: 35px;
+ padding-right: 25px;
+ color: #fff;
+ display: block;
+ font-weight: bold;
+}
+
+#h_wifi_setting_div{
+ top: 318px;
+ left: 418px;
+ width: 170px;
+ height: 35px;
+ line-height: 35px;
+ text-align: center;
+}
+
+#h_wifi_setting_btn{
+ width: 170px;
+ height: 35px;
+ line-height: 35px;
+ padding-right: 25px;
+ color: #fff;
+ display: block;
+ font-weight: bold;
+}
+
+#h_connect_status{
+ top: 272px;
+ left: 670px;
+ width: 25px;
+ height: 25px;
+ position: absolute;
+}
+
+.h_status_connected{
+ background: url('../pic/local-connected.png') no-repeat scroll 0 0 transparent;
+}
+
+.h_status_disconnected{
+ background: url('../pic/local-disconnected.png') no-repeat scroll 0 0 transparent;
+}
+
+.h_status_connecting{
+ background: url('../pic/local-connecting.png') no-repeat scroll 0 0 transparent;
+}
+
+.h_status_disconnecting{
+ background: url('../pic/local-disconnecting.png') no-repeat scroll 0 0 transparent;
+}
+
+.color_block{
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ border: 1px solid #ccc;
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.color_block_desc{
+ line-height: 20px;
+ vertical-align: middle;
+ margin-left: 8px;
+ display: inline-block;
+}
+
+.colorRed{
+ color: #CC0000;
+}
+
+.msg pre{
+ line-height: 17px;
+ border: none;
+ margin: 0;
+ padding: 0;
+ overflow-x: hidden;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ color: #696e72;
+ background: none;
+}
+
+.smslist-item-icon {
+ width: 80px;
+ height: 80px;
+ margin-left: 10px;
+ margin-top: -6px;
+}
+
+.smslist-item-name {
+ max-width: 550px;
+ color: #000;
+ display: inline-block;
+ overflow: hidden;
+}
+
+.smslist-item-name2 {
+ color: #000;
+}
+
+.smslist-item-name-draftShowName{
+ display:inline;
+}
+
+.smslist-item-total-count-style{
+ float:left;
+ width:50px;
+ display:inline-block;
+ color:#696e72;
+}
+
+.smslist-item-repeat {
+ font-weight: bold;
+ line-height: 18px;
+ text-indent: 3px;
+ color: #7D8DA3;
+}
+
+.smslist-item-repeat:hover {
+ color: #207DDD;
+}
+
+.smslist-item{
+ border-bottom: 1px solid #e1e1e1;
+ margin-bottom: 10px;
+}
+
+.repeat-icon {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_forward.png") no-repeat;
+}
+
+.repeat-icon:hover {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_forward_hover.png") no-repeat;
+}
+
+.sms-forward-icon {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_forward.png") no-repeat scroll;
+}
+
+.sms-forward-icon:hover {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_forward_hover.png") no-repeat scroll;
+}
+
+.smslist-item-delete {
+ width: 18px;
+ height: 18px;
+ display: block;
+}
+
+.smslist-item-delete:hover {
+ width: 18px;
+ height: 18px;
+ display: block;
+}
+
+.sms-add-contact-icon {
+ width: 13px;
+ height: 13px;
+ display: inline-block;
+ background: url("../pic/png_add_contact.png") no-repeat scroll 0 0 transparent;
+}
+
+.sms-add-contact-icon:hover {
+ width: 13px;
+ height: 13px;
+ display: inline-block;
+ background: url("../pic/png_add_contact_hover.png") no-repeat scroll 0 0 transparent;
+}
+
+.smslist-item-delete:hover .trash-icon {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_delete_hover.png") no-repeat;
+}
+
+.trash-icon {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: url("../pic/png_delete.png") no-repeat;
+}
+
+.smslist-item-resend {
+ font-weight: bold;
+ line-height: 22px;
+ text-indent: 3px;
+ color: #7D8DA3;
+}
+
+.sms-resend-icon {
+ width: 18px;
+ height: 18px;
+ display: block;
+ background: transparent url("../pic/png_resend1.png") no-repeat;
+}
+
+.smslist-item-resend:hover {
+ color: #207DDD;
+}
+
+.smslist-item-resend:hover .sms-resend-icon{
+ background: transparent url("../pic/png_resend_hover.png") no-repeat;
+}
+
+.clock-icon {
+ width: 18px;
+ height: 30px;
+ line-height: 30px;
+ display: block;
+ background: url("../pic/png_time.png") no-repeat;
+}
+
+.clock-icon:hover {
+ width: 18px;
+ height: 30px;
+ line-height: 30px;
+ display: block;
+ background: url("../pic/png_time.png") no-repeat;
+}
+
+.smslist-item-new-count {
+ width: 29px;
+ height: 35px;
+ line-height: 35px;
+ margin-right: 5px;
+ text-align: center;
+ font-weight: bold;
+ color: #ffffff;
+ background: url("../pic/png_new_sms_bg.png") no-repeat scroll 0 0 transparent;
+}
+
+#mainContainer .width100p {
+ width: 100%;
+}
+
+.height15 {
+ height: 15px;
+ line-height: 15px;
+}
+
+
+label.error{
+ color: #a94442;
+}
+
+#frmPassword label.error {
+ white-space: nowrap;
+}
+
+.form-information{
+ margin-top: 10px;
+}
+
+.form-information p{
+ padding: 15px;
+}
+
+body[lang=en] .label-absolute{
+ height: 40px;
+}
+
+body[lang=en] .label-absolute > label{
+ top: 0;
+ left: 40px;
+ position: absolute;
+}
+
+.ko-grid-pageLinks {
+
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+ width: 100%;
+ display: inline-block;
+}
+
+.ko-grid-pageLinks > a,
+.ko-grid-pageLinks > span {
+ display: inline;
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ line-height: 1.42857143;
+ text-decoration: none;
+ color: #008AD7;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ margin-left: -1px;
+}
+
+.ko-grid-pageLinks > a:first-child,
+.ko-grid-pageLinks > span:first-child {
+ margin-left: 0;
+ border-radius: 4px 0 0 4px;
+}
+
+.ko-grid-pageLinks > a:last-child,
+.ko-grid-pageLinks > span:last-child {
+ margin-left: 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.ko-grid-pageLinks > a.ko-grid-pager-selected,
+.ko-grid-pageLinks > span.ko-grid-pager-selected,
+.ko-grid-pageLinks > a.ko-grid-pager-selected:hover,
+.ko-grid-pageLinks > span.ko-grid-pager-selected:hover {
+ z-index: 2;
+ cursor: default;
+ color: #ffffff;
+ background-color: #008AD7;
+ border-color: #008AD7;
+}
+
+.ko-grid-pageLinks > a:hover,
+.ko-grid-pageLinks > span:hover {
+ z-index: 2;
+ background-color: #EEEEEE;
+ border-color: #DDDDDD;
+}
+
+.ko-grid-pageLinks > span.ko-grid-pager-disabled,
+.ko-grid-pageLinks > span.ko-grid-pager-disabled:hover,
+.ko-grid-pageLinks > span.ko-grid-pager-disabled:focus,
+.ko-grid-pageLinks > a.ko-grid-pager-disabled,
+.ko-grid-pageLinks > a.ko-grid-pager-disabled:hover,
+.ko-grid-pageLinks > a.ko-grid-pager-disabled:focus {
+ color: #777777;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
+}
+
+.nav-tabs > li > a, .nav-tabs.nav-justified > li > a{
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.nav-tabs > li > a, .nav-tabs > li > a:hover, .nav-tabs > li > a:focus{
+ color: #333333;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background-color: #f5f5f5;
+ *background-color: #e6e6e6;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ border: 1px solid #cccccc;
+ *border: 0;
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ border-bottom-color: #b3b3b3;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.nav-tabs > li:first-child > a, .nav-tabs > li:first-child > a:hover, .nav-tabs > li:first-child > a:focus{
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.nav-tabs > li:last-child > a, .nav-tabs > li:last-child > a:hover, .nav-tabs > li:last-child > a:focus{
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus,
+.nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus{
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ *background-color: #0044cc;
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+}
+
+#result-overlay .simplemodal-data, #result-overlay .simplemodal-wrap, #result-overlay .alert{
+ border-radius: 8px;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ box-shadow: 0 3px 5px #999;
+ -moz-box-shadow: 0 3px 5px #999;
+ -webkit-box-shadow: 0 3px 5px #999;
+}
+
+.form-note .notes-title {
+ height: 30px;
+ cursor: pointer;
+ padding-bottom: 5px;
+ background: url("../pic/res_help.png") no-repeat scroll left center transparent;
+}
+
+.form-note .notes-content {
+ display: none;
+}
+
+.form-note .notes-dot {
+ border-bottom: 1px solid #ffffff;
+}
+
+.form-body .form-note {
+ border-radius: 4px;
+ font-size: 12px;
+ margin-bottom: 10px;
+ margin-top: 20px;
+ padding: 10px;
+ background-color: #ededed;
+}
+
+.form-body .form-note li {
+ line-height: 30px;
+ list-style: none outside none;
+ padding-left: 15px;
+ background: url("../pic/res_point.png") no-repeat scroll 0 12px transparent;
+}
+
+.form-body .form-note li.no-style {
+ background: none;
+}
+
+.border-color-transition {;
+ -moz-transition: border-color .5s ease-in;
+ -webkit-transition: border-color .5s ease-in;
+ -o-transition: border-color .5s ease-in;
+ -ms-transition: border-color .5s ease-in;
+ transition: border-color .5s ease-in;
+}
+
+.attention-focus{
+ border-color: red;
+}
+
+.popover-title{
+ background-color: #eaeaea;
+ border-bottom: 1px solid #cbcbcb;
+}
+
+.fixTableScroll {
+ width:100%;
+ overflow-x:auto;
+ overflow-y:hidden;
+ height:100%;
+ overflow-scrolling: touch;
+}
+
+.fixTableScroll:hover {
+ height:100%;
+}
+
+#h_internet_setting_btn:hover {
+ background-image: url("../pic/internet_setting_hover.png");
+}
+
+#h_wifi_setting_btn:hover {
+ background-image: url("../pic/wlan_setting_hover.jpg");
+}
+
+.connected_devices_container {
+ float:left;
+ width: 280px;
+ height: 400px;
+ margin-left:20px;
+ text-align: center;
+ border-radius:10px;
+ cursor: pointer;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #70EBE6, endColorstr = #059EC4);
+ background: -webkit-linear-gradient(left top, #70EBE6 , #059EC4); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #70EBE6 , #059EC4); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #70EBE6 , #059EC4); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom right, #70EBE6 , #059EC4); /* 标准的语法(必须放在最后)*/
+}
+
+.connected_devices_container .item_icon{
+ height: 45%;
+ background: url(../pic/new/device.png) center center no-repeat;
+}
+
+.home_h3{
+ font-size: 25px;
+ -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ text-align: center;
+}
+
+.network_control_container {
+ float:left;
+ width: 280px;
+ height: 400px;
+ margin-left:20px;
+ border-radius:10px;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #36A4FF, endColorstr = #0877D4);
+ background: -webkit-linear-gradient(left top, #36A4FF , #0877D4); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #36A4FF , #0877D4); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #36A4FF , #0877D4); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom right, #36A4FF , #0877D4); /* 标准的语法(必须放在最后)*/
+}
+
+.network_control_container .item_icon{
+ height: 45%;
+ background: url(../pic/new/router.png) center center no-repeat;
+}
+
+.internet_status_container{
+ float:left;
+ width: 280px;
+ height: 400px;
+ margin-left:60px;
+ border-radius:10px;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #D014FE, endColorstr = #7109D5);
+ background: -webkit-linear-gradient(left top, #D014FE , #7109D5); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #D014FE , #7109D5); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #D014FE , #7109D5); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom right, #D014FE , #7109D5); /* 标准的语法(必须放在最后)*/
+ text-align: center;
+}
+
+.internet_status_container .item_icon_connect{
+ height: 45%;
+ background: url(../pic/new/surfing1.png) center center no-repeat;
+}
+
+.internet_status_container .item_icon_disconnect{
+ height: 45%;
+ background: url(../pic/new/surfing2.png) center center no-repeat;
+}
+
+.internet_status_container .data-card{
+ top: 180px;
+ left: 636px;
+}
+
+.traffic_control_container{
+ float:left;
+ width: 280px;
+ height: 305px;
+ margin-left:45px;
+ border-radius:10px;
+ color:#fff;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #FCCA53, endColorstr = #F45406);
+ background: -webkit-gradient(linear, 0 0, 0 100%, from(#FCCA53), to(#F45406));
+ background: -webkit-linear-gradient(left top, #FCCA53 , #F45406); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #FCCA53 , #F45406); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #FCCA53 , #F45406); /* Firefox 3.6 - 15 */
+ background: -ms-linear-gradient(left, #FCCA53, #F45406);
+ background: linear-gradient(to bottom right, #FCCA53 , #F45406); /* 标准的语法(必须放在最后)*/
+
+}
+.device_info_container{
+ float:left;
+ width: 580px;
+ height: 305px;
+ border-radius:10px;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7);
+ background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom right, #B454F6 , #0096D7); /* 标准的语法(必须放在最后)*/
+}
+
+.device_info_container_hastraffic{
+ margin-left:20px;
+}
+
+.device_info_container_notraffic{
+ margin-left:210px;
+}
+
+.device_info_container a{
+ padding-right: 2em;
+ margin-right:1em;
+ color: #FFF;
+ background: url(../pic/new/direct.png) right center no-repeat;
+}
+
+
+#smslist-table td{
+ vertical-align: middle;
+ line-height: 1.2;
+}
+
+#simMsgList_container td{
+ vertical-align: middle;
+ line-height: 1.2;
+}
+
+.smslist-item-msg pre{
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border: none;
+ padding: 0;
+ margin:0;
+ font-size: 14px;
+ line-height: 1.2;
+ white-space: nowrap;
+ background-color: transparent;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+.smslist-btns {
+}
+
+#smsScrollLoading {
+ margin: 25px auto;
+ font-size: 22px;
+ font-weight: bold;
+ text-align: center;
+ color: #7D8DA3;
+}
+
+#smsScrollLoadingBtn {
+ margin: 25px auto;
+ font-size: 22px;
+ font-weight: bold;
+ text-align: center;
+ color: #7D8DA3;
+ cursor: pointer;
+}
+
+#smslist_container{
+ position: relative;
+}
+
+#smslist_container table,#smslist_container table td,#smslist_container table th {
+ padding: 0;
+ margin: 0;
+ border: none;
+}
+
+.smslist-item-checkbox{float: left; width: 20px;}
+.chosen-container-multi .chosen-choices li.search-field input[type="text"]{
+ height: auto;
+}
+
+.sms-table-content{
+ width: 450px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.showFullHeight{
+ white-space: normal;
+}
+
+#buttom-bubble{
+ width: 230px;
+ height: auto;
+ right: 0;
+ bottom: 0;
+ margin-right: 10px;
+ position: fixed;
+ z-index: 100;
+}
+
+#buttom-bubble .bubbleItem{
+ margin-top: 8px;
+ border-radius: 10px 10px 0 0;
+ position: relative;
+}
+
+#buttom-bubble h3{
+ padding: 8px 30px 8px 8px;
+ background-color: #eaeaea;
+ border: 2px solid #eaeaea;
+ border-bottom: 0;
+ border-radius: 8px 8px 0 0;
+ margin-bottom: 0;
+ font-size: 14px;
+}
+
+#buttom-bubble .bubbleItem.report h3{
+ color: #E47602;
+}
+
+#buttom-bubble h3 a.bubbleCloseBtn{
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ border: 1px solid #E2E2E2;
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.4);
+}
+
+#buttom-bubble h3 a.bubbleCloseBtn:hover{
+ border: 1px solid #2063AB;
+}
+
+#buttom-bubble .bubbleCloseBtn{
+ width: 16px;
+ height: 14px;
+ display: block;
+ background: url("../pic/res_delete.png");
+}
+
+#buttom-bubble .bubbleContainer{
+ border: 2px solid #E2E2E2;
+ padding: 2px 8px 8px 8px;
+ line-height: 150%;
+ overflow: hidden;
+ border-top: 0;
+ font-size: 12px;
+ background: #F2F2F2;
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), to(#eaeaea) );
+ background: -ms-linear-gradient(top, white, #eaeaea);
+ background: -moz-linear-gradient(top, white, #eaeaea);
+ background: -o-linear-gradient(top, white,#eaeaea);
+ filter: progid:dximagetransform.microsoft.gradient(enabled='true', startColorstr='#FFFFFFFF', endColorstr='#ffeaeaea', GradientType=0);
+}
+
+#buttom-bubble .bubbleContent{
+ max-height: 55px;
+ overflow: hidden;
+ line-height: 18px;
+ word-break: break-all;
+ word-wrap: break-word;
+}
+
+#buttom-bubble .bubbleDatetime{
+ padding-right: 10px;
+ text-align: right;
+ font-size: 10px;
+}
+
+#topContainer{
+ padding-top: 10px;
+ padding-bottom: 10px;
+ background-color: #EAEAEA;
+}
+
+.login-page-bg{
+ background: url("../pic/res_login-bg.png") repeat-x scroll 0 0 transparent;
+}
+
+#login-form-container{
+ border: 1px solid gray;
+ border-radius: 8px;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ background-color: white;
+ box-shadow: 0 3px 5px #053984;
+ -moz-box-shadow: 0 3px 5px #053984;
+ -webkit-box-shadow: 0 3px 5px #053984;
+}
+
+#htmlContainer{
+ padding: 0;
+}
+
+#htmlContainer .form-title{
+ padding: 10px 15px 10px 15px;
+ margin-bottom: 0;
+ border-bottom: 1px solid #cbcbcb;
+ background-color: #eaeaea;
+}
+
+#htmlContainer .content{
+ padding: 15px;
+}
+
+#simplemodal-data .alert{
+ border: 1px solid gray;
+ border-radius: 8px;
+ box-shadow: 0 6px 10px #053984;
+ width: 400px;
+ height: 150px;
+ background-color: white;
+}
+
+.btn-primary{
+ background-color: #008AD7;
+}
+
+#pblist tr td {
+ cursor: pointer;
+}
+
+#pblist tr td:first-child {
+ cursor: default;
+}
+
+.form-buttons {
+ margin-right: 20px;
+ margin-bottom: 5px;
+ text-align: right;
+}
+
+.align-right {
+ text-align: right;
+}
+
+.margin-right-10 {
+ margin-right: 10px;
+}
+
+.beautiful_bg #indexContainer{
+}
+
+.header-row {
+ background-color: #018ad8;
+ border-left-width: 0;
+ border-radius: 10px 10px 0 0;
+ margin: -1px 0 30px -11px;
+ width: 940px;
+ color: white;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7);
+ background: -webkit-gradient(linear, 0 0, 0 100%, from(#B454F6), to(#0096D7));
+ background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */
+ background: -ms-linear-gradient(left, #B454F6, #0096D7);
+ background: linear-gradient(to bottom right, #B454F6 , #0096D7); /* 标准的语法(必须放在最后)*/
+}
+
+.header-row .form-title {
+ border: none;
+ margin-bottom: 0;
+ text-align:center;
+}
+
+#innerContainer {
+ width: 100%;
+ margin: 35px auto;
+ padding: 0 10px 20px 10px;
+ border: 1px solid #fff;
+ border-bottom:0px;
+ border-radius: 10px;
+ background: -webkit-linear-gradient(top, #F1F9FC , #fff); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom, #F1F9FC , #fff); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom, #F1F9FC , #fff); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom, #F1F9FC , #fff); /* 标准的语法(必须放在最后)*/
+ }
+
+.form-title-multi h1 {
+ margin-top: 10px;
+ margin-bottom: 5px;
+}
+
+.form-title-multi p {
+ margin-bottom: 0;
+}
+.mobile_version_link{
+ color: #A0AFCB;
+}
+
+#opmode_form .content {
+ background-color: #FFFFFF;
+}
+
+#sms_unread_count a:hover {
+ text-decoration: none;
+}
+
+.customfile-input {
+ outline: none;
+ position: absolute;
+ height: 100px;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ z-index: 999;
+ opacity: 0;
+ -moz-opacity: 0;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0 );
+}
+
+.customfile {
+ width: 400px;
+ padding: 2px;
+ border: 1px solid #444;
+ line-height: 30px;
+ background: #FAFAFA;
+ background: -ms-linear-gradient(#FAFAFA, #CACACA);
+ background: -moz-linear-gradient(#FAFAFA, #CACACA);
+ background : -webkit-linear-gradient( #FAFAFA, #EAEAEA);
+ cursor: pointer;
+ overflow: hidden;
+ -moz-border-radius: 7px;
+ -webkit-border-radius: 7px;
+ border-radius: 7px;
+ position: relative;
+ float: left;
+}
+
+.customfile-disabled {
+ opacity: .5;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0 );
+ cursor: default;
+}
+
+.customfile-feedback {
+ display: block;
+ margin: 1px 1px 1px 5px;
+ font-size: 1.2em;
+ color: #767676;
+ font-style: italic;
+}
+
+.customfile-feedback-populated {
+ color: #111;
+ padding-left: 20px;
+ line-height: 24px;
+ margin-top: 6px;
+ width:290px;
+ font-style: normal;
+ font-weight: bold;
+ background: url(../pic/pic-file.png) left 0px no-repeat;
+ white-space:nowrap;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.customfile-button {
+ border: 1px solid #999;
+ background-color: #008AD7;
+ color: #fff;
+ float: right;
+ padding: 0px 10px;
+ text-align: center;
+ text-decoration: none;
+ font-size: 1em;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.customfile-hover .customfile-button,.customfile-focus .customfile-button {
+ background-color: #3071A9;
+ border-color: #285E8E;
+ padding: 0px 10px;
+ color: #fff;
+}
+
+.customfile-focus .customfile-button {
+ outline: 1px dotted #ccc;
+}
+
+/*file type icons*/
+.customfile-ext-jpg, .customfile-ext-gif, .customfile-ext-png, .customfile-ext-jpeg, .customfile-ext-bmp { background-image: url(../pic/pic-picture.png);}
+.customfile-ext-mp4, .customfile-ext-mov, .customfile-ext-swf, .customfile-ext-m4v { background-image: url(../pic/pic-film.png);}
+.customfile-ext-mp3, .customfile-ext-wav { background-image: url(../pic/pic-mp3.png);}
+.customfile-ext-zip, .customfile-ext-tar, .customfile-ext-sit { background-image: url(../pic/pic-rar.png);}
+
+input[type='file']:focus{
+ outline: none;
+}
+
+#smslist-checkAll, #simMsgList-checkAll {
+ margin-left: -4px;
+}
+
+.not-allowed {
+ color: #D1D1D1 !important;
+ cursor: not-allowed;
+}
+
+.not-allowed:hover {
+ outline: 0;
+ text-decoration: none;
+}
+
+.not-allowed:focus {
+ outline: 0;
+ text-decoration: none;
+}
+
+.margin-top-5 {
+ margin-top: 5px;
+}
+
+.colorLightBlue{
+ color: #09F;
+}
+
+.sd_invalid_notes ul li{
+ height: 2em;
+ line-height: 2em;
+}
+
+.sd_invalid_notes .notes-content{
+ display: block;
+}
+
+#fileControlSection li {
+ list-style: outside none none;
+ display: inline;
+}
+
+
+.my_router_list,.net_surfing_list{
+ margin-top: 20px;
+}
+
+.my_router_list ul,.net_surfing_list ul,.statistics_list ul,.nav_right ul{
+ -webkit-padding-start: 0px;
+ margin:0px;
+ padding:0px;
+}
+
+.my_router_list li,.net_surfing_list li,.statistics_list li{
+ padding: 0 1em;
+ list-style:none;
+}
+
+.my_router_list li,.my_router_list li a,.net_surfing_list li{
+ text-align: left;
+ line-height: 2em;
+ font-size: 18px;
+
+}
+
+.my_router_list li a{
+ display: block;
+ color: #FFF;
+ background: url(../pic/new/direct.png) right center no-repeat;
+ -webkit-transition: all ease-in .3s;
+ -moz-transition: all ease-in .3s;
+ -ms-transition: all ease-in .3s;
+ transition: all ease-in .3s;
+}
+
+.my_router_list li a:hover{
+ color: #FAFAFA;
+ -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+}
+
+.net_surfing_list li{
+ text-align: center;
+}
+
+.net_surfing_list i{
+ display: inline-block;
+ width: 17px;
+ height: 24px;
+ margin-right: 15px;
+ vertical-align: middle;
+}
+
+.net_surfing_list i.up{
+ background: url(../pic/new/direct_top.png);
+}
+
+.net_surfing_list i.down{
+ background: url(../pic/new/direct_down.png);
+}
+
+.statistics_list ul li{
+ padding: 0 20px;
+ text-align: left;
+ margin-top: 15px;
+ font-size:18px;
+}
+
+.statistics_list ul li a{
+ color: #FFF;
+ display: block;
+ background: url(../pic/new/direct.png) right center no-repeat;
+ -webkit-transition: all ease-in .3s;
+ -moz-transition: all ease-in .3s;
+ -ms-transition: all ease-in .3s;
+ transition: all ease-in .3s;
+}
+
+.statistics_list ul li a:hover{
+ -webkit-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -moz-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ -ms-text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+ text-shadow: 0px 1px 2px rgba(100, 100, 10, 0.5);
+}
+
+.type_items{
+ width:880px;
+ height: 100px;
+ text-align: center;
+ margin:0 0 0 45px;
+ -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ -ms-border-radius: 8px;
+ border-radius: 10px;
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr = #B454F6, endColorstr = #0096D7);
+ background: -webkit-linear-gradient(left top, #B454F6 , #0096D7); /* Safari 5.1 - 6.0 */
+ background: -o-linear-gradient(bottom right, #B454F6 , #0096D7); /* Opera 11.1 - 12.0 */
+ background: -moz-linear-gradient(bottom right, #B454F6 , #0096D7); /* Firefox 3.6 - 15 */
+ background: linear-gradient(to bottom right, #B454F6 , #0096D7); /* 标准的语法(必须放在最后)*/
+}
+
+.type_items ul{
+ width: auto;
+ -webkit-padding-start: 0px;
+ margin:0px;
+ padding:0px;
+}
+
+.type_items ul li{
+ display: inline-block;
+ float:left;
+ list-style:none;
+}
+
+.type_items a{
+ display: table-cell;
+ width: 125px;
+ height: 100px;
+ color: #FFF;
+ vertical-align: middle;
+ -webkit-transition: all ease-in .3s;
+ -moz-transition: all ease-in .3s;
+ -ms-transition: all ease-in .3s;
+ transition: all ease-in .3s;
+ border-left: 1px solid;
+}
+
+.type_items a,.nav_right a:hover{
+ -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+}
+
+.nav_right{
+ margin: 0 auto 0px -10px;
+ text-align: center;
+
+}
+
+.nav_right ul{
+ width: auto;
+ margin: 0 auto;
+}
+
+.nav_right ul li{
+ margin: 15px 20px 0 0;
+ width:100%;
+ list-style:none;
+}
+
+.nav_right .active a{
+ display: table-cell;
+ width: 138px;
+ height: 50px;
+ color: #fff;
+ font-weight:bold;
+ vertical-align: middle;
+ -webkit-transition: all ease-in .3s;
+ -moz-transition: all ease-in .3s;
+ -ms-transition: all ease-in .3s;
+ transition: all ease-in .3s;
+ -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ box-shadow: 0px 8px 10px rgba(172, 172, 172, 0.5);
+ background-color:rgb(66, 153, 237);
+}
+
+.nav_right a{
+ width: 138px;
+ height: 50px;
+ display: table-cell;
+ color: #000;
+ vertical-align: middle;
+ -webkit-transition: all ease-in .3s;
+ -moz-transition: all ease-in .3s;
+ -ms-transition: all ease-in .3s;
+ transition: all ease-in .3s;
+ -webkit-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -moz-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ -ms-box-shadow: 0px 2px 4px rgba(172, 172, 172, 0.5);
+ box-shadow: 0px 8px 10px rgba(172, 172, 172, 0.5);
+ background-color:rgb(182, 214, 232);
+}
+
+.sd-total {
+ text-align: right;
+ padding-right: 20px;
+}
+
+.icon-folder{
+ background: url("../pic/pic-folder.png") no-repeat;
+}
+
+.icon-pdf{
+ background: url("../pic/pic-pdf.png") no-repeat;
+}
+
+.icon-rar{
+ background: url("../pic/pic-rar.png") no-repeat;
+}
+
+.icon-mp3{
+ background: url("../pic/pic-mp3.png") no-repeat;
+}
+
+.icon-file{
+ background: url("../pic/pic-file.png") no-repeat;
+}
+
+.icon-film{
+ background: url("../pic/pic-film.png") no-repeat;
+}
+
+.icon-picture{
+ background: url("../pic/pic-picture.png") no-repeat;
+}
+
+.icon-doc{
+ background: url("../pic/pic-doc.png") no-repeat;
+}
+
+.icon-ppt{
+ background: url("../pic/pic-ppt.png") no-repeat;
+}
+
+.icon-xls{
+ background: url("../pic/pic-xls.png") no-repeat;
+}
+
+.icon-xml{
+ background: url("../pic/pic-xml.png") no-repeat;
+}
+
+.icon-download{
+ background: url("../pic/pic-download.png") no-repeat;
+}
+
+.mini-icon{
+ width: 20px;
+ height: 20px;
+ font-size: 16px;
+ display: block;
+}
+
+.cursor-pointer {
+ cursor: pointer;
+}
+
+#fileListSection th {
+ text-align: center;
+}
+
+.margin-left-5 {
+ margin-left: 5px;
+}
+
+.margin-top-2 {
+ margin-top: 2px;
+}
+
+.push-right {
+ text-align: right;
+}
+
+.data-card-language {
+ top: -25px;
+ right: 10px;
+ position: absolute;
+ display: block;
+}
diff --git a/lynq/MD310/ap/app/zte_webui/i18n/Messages_en.properties b/lynq/MD310/ap/app/zte_webui/i18n/Messages_en.properties
index d3f28a0..1de7c5c 100755
--- a/lynq/MD310/ap/app/zte_webui/i18n/Messages_en.properties
+++ b/lynq/MD310/ap/app/zte_webui/i18n/Messages_en.properties
@@ -446,6 +446,14 @@
dial_roaming_remind = Check here, you can connect to internet in the roaming status.
dial_roaming_connect = Your device is roaming. Connecting to network may occur additional charges. Continue?
+#net_status
+net_info = Network Status
+pci = PCI
+rsrp = RSRP
+rsrq = RSRQ
+plmn = PLMN
+band = BAND
+
#phonebook
search = Search
save_location = Save Location
@@ -617,7 +625,7 @@
#sleep mode
wifi_sleep = Wi-Fi Sleep
wifi_sleep_mode = Power saving mode
-sleep_time = Sleep/shutdown after
+sleep_time = Shutdown after
sleep_select_0 = Sleep
sleep_select_1 = Power off
sleep_mode_-1 = Never Sleep
@@ -627,7 +635,7 @@
sleep_mode_30 = 30 Minutes
sleep_mode_60 = 1 Hour
sleep_mode_120 = 2 Hours
-wifi_sleep_note_info = Sleep after: When there''s no Wi-Fi connection in specific time, Wi-Fi will be unavailable, and the system will turn to sleep mode/power off for power-saving.
+wifi_sleep_note_info = Shutdown after: When there''s no Wi-Fi connection in specific time, Wi-Fi will be unavailable, and the system will power off for power-saving.
wifi_sleep_confirm = The current setting changes may restart Wi-Fi, continue any way?
#system security
@@ -846,6 +854,7 @@
hardware_version = Hardware Version
imei = IMEI
imsi = IMSI
+iccid = ICCID
wan_ip_address = WAN IP Address
ipv6_wan_ip_address = WAN IPv6 Address
network_name_ssid1 = Network Name (Main SSID)
@@ -1624,6 +1633,7 @@
band_40 = Band 40
band_info = Band Settings
cell_id = Current registration Cell
+cellid = CELLID
lock_apply = Lock
unlock_apply= Unlock
sinr = SINR
diff --git a/lynq/MD310/ap/app/zte_webui/i18n/Messages_zh-cn.properties b/lynq/MD310/ap/app/zte_webui/i18n/Messages_zh-cn.properties
index 42327f1..15befb3 100755
--- a/lynq/MD310/ap/app/zte_webui/i18n/Messages_zh-cn.properties
+++ b/lynq/MD310/ap/app/zte_webui/i18n/Messages_zh-cn.properties
@@ -448,6 +448,14 @@
dial_roaming_remind = 勾选此项,您可以在漫游状态下连接到网络,且可能会产生额外费用。
dial_roaming_connect = 设备处于漫游状态,连接网络会使您的资费增加。确定继续?
+#net_status
+net_info = 网络状态
+pci = PCI
+rsrp = RSRP
+rsrq = RSRQ
+plmn = PLMN
+band = BAND
+
#phonebook
search = 搜索
save_location = 存储位置
@@ -619,7 +627,7 @@
#sleep mode
wifi_sleep = Wi-Fi 休眠设置
wifi_sleep_mode = 省电模式
-sleep_time = 休眠/关机时间
+sleep_time = 关机时间
sleep_select_0 = 休眠
sleep_select_1 = 关机
sleep_mode_-1 = 从不休眠
@@ -629,7 +637,7 @@
sleep_mode_30 = 30分钟
sleep_mode_60 = 1小时
sleep_mode_120 = 2小时
-wifi_sleep_note_info = 休眠时间:当在指定的时间内无 Wi-Fi 连接时,Wi-Fi 功能将会停用,系统会转入休眠模式/关机以节省电量。
+wifi_sleep_note_info = 关机时间:当在指定的时间内无 Wi-Fi 连接时,Wi-Fi 功能将会停用,系统会直接关机以节省电量。
wifi_sleep_confirm = 当前设置改变时将会重启wifi,是否继续?
#system security
@@ -848,6 +856,7 @@
hardware_version = 硬件版本
imei = IMEI
imsi = IMSI
+iccid = ICCID
wan_ip_address = WAN IP 地址
ipv6_wan_ip_address = WAN IPv6 地址
network_name_ssid1 = 网络名称 (主SSID)
@@ -1631,6 +1640,7 @@
band_40 = 频段 40
band_info = 频段设置
cell_id = 当前注册的小区
+cellid = CELLID
lock_apply = 加锁
unlock_apply= 解锁
band_cell_settings = 频段小区设置
diff --git a/lynq/MD310/ap/app/zte_webui/index.html b/lynq/MD310/ap/app/zte_webui/index.html
index 214d453..f64166a 100755
--- a/lynq/MD310/ap/app/zte_webui/index.html
+++ b/lynq/MD310/ap/app/zte_webui/index.html
@@ -25,7 +25,7 @@
<div class="container" id="topContainer">
<div id="langLogoBar" class="row">
<div class="col-xs-4">
- <a href="index.html">
+ <a href="index.html" style="display: none;">
<script type="text/javascript">
document.write("<img src='pic/res_logo_web.png?random=" + Math.random() + "' />");
</script>
diff --git a/lynq/MD310/ap/app/zte_webui/js/com.js b/lynq/MD310/ap/app/zte_webui/js/com.js
index a4de910..73e9c0d 100755
--- a/lynq/MD310/ap/app/zte_webui/js/com.js
+++ b/lynq/MD310/ap/app/zte_webui/js/com.js
@@ -497,6 +497,25 @@
}
}
}
+ function getNetworkStatus() {
+ return stuffMake(arguments, {}, prepare, deal, null, false);
+ function prepare(values, isPost) {
+ var valueReq = {};
+ valueReq.cmd = "NETWORK_INFO";
+ return valueReq;
+ }
+ function deal(result) {
+ return {
+ sinr: result.lte_sinr,
+ rsrp: result.lte_rsrp,
+ rsrq: result.lte_rsrq,
+ plmn: result.lte_plmn,
+ pci: result.lte_pci,
+ cellid: result.lte_cellid,
+ band: result.lte_band
+ };
+ }
+ }
function deleteApn() {
return stuffMake(arguments, {}, prepare, deal, null, true);
function prepare(values, isPost) {
@@ -2888,7 +2907,7 @@
function prepare(values, isPost) {
var wpask = config.PASSWORD_ENCODE ? "WPAPSK1_encode,m_WPAPSK1_encode," : "rnum_js,WPAPSK1_enaes,m_WPAPSK1_enaes,";
var valueReq = {
- cmd: "wifi_coverage,m_ssid_enable,imei,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode",
+ cmd: "wifi_coverage,m_ssid_enable,imei,ziccid,cell_id,network_type,sub_network_type,rssi,rscp,lte_rsrp,imsi,sim_imsi,cr_version,hw_version,MAX_Access_num," + wpask + "SSID1,AuthMode,m_SSID,m_AuthMode,m_HideSSID,m_MAX_Access_num,lan_ipaddr," + "mac_address,msisdn,LocalDomain,wan_ipaddr,static_wan_ipaddr,ipv6_wan_ipaddr,ipv6_pdp_type,pdp_type,ppp_status,sta_ip_status,rj45_state,ethwan_mode",
multi_data: 1
};
return valueReq;
@@ -2915,6 +2934,8 @@
imei: paramD.imei,
signal: convertSignal(paramD),
imsi: paramD.imsi || paramD.sim_imsi,
+ iccid: paramD.ziccid,
+ cellid: paramD.cell_id,
sw_version: paramD.cr_version,
hw_version: paramD.hw_version,
max_access_num: paramD.MAX_Access_num,
@@ -5475,6 +5496,7 @@
getLanInfo: getLanInfo,
setLanInfo: setLanInfo,
getApnSettings: getApnSettings,
+ getNetworkStatus: getNetworkStatus,
deleteApn: deleteApn,
setDefaultApn: setDefaultApn,
addOrEditApn: addOrEditApn,
@@ -6135,14 +6157,14 @@
minHeight: minHeight
};
popup(option);
-
+
$('#yesbtn, #nobtn, #okbtn').hide();
-
+
setTimeout(function() {
$.modal.close();
}, 1000);
}
-
+
setInterval(target.loadFileContent, 1000);
target.pingStart = function () {
@@ -7800,6 +7822,7 @@
target.hasRj45 = set.RJ45_SUPPORT;
target.notDataCard = set.PRODUCT_TYPE != 'DATACARD';
target.hasParentalControl = set.HAS_PARENTAL_CONTROL;
+ target.hasUssd = set.HAS_USSD;
var wifiInfo = fnc.getWifiBasic();
if (set.WIFI_SUPPORT_QR_SWITCH) {
target.showQRCode = set.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
@@ -7849,6 +7872,8 @@
target.simSerialNumber = libko.observable('');
target.imei = libko.observable('');
target.imsi = libko.observable('');
+ target.iccid = libko.observable('');
+ target.cellid = libko.observable('');
target.ssid = libko.observable('');
target.hasWifi = set.HAS_WIFI;
target.showMultiSsid = libko.observable(set.HAS_MULTI_SSID && wifiInfo.multi_ssid_enable == "1");
@@ -7885,6 +7910,8 @@
target.simSerialNumber(verifyDeviceInfo(data.simSerialNumber));
target.imei(verifyDeviceInfo(data.imei));
target.imsi(verifyDeviceInfo(data.imsi));
+ target.iccid(verifyDeviceInfo(data.iccid));
+ target.cellid(verifyDeviceInfo(data.cellid));
target.ssid(verifyDeviceInfo(data.ssid));
target.showMultiSsid(set.HAS_MULTI_SSID && data.multi_ssid_enable == "1");
return data;
@@ -7899,6 +7926,8 @@
simSerialNumber: verifyDeviceInfo(data.simSerialNumber),
imei: verifyDeviceInfo(data.imei),
imsi: verifyDeviceInfo(data.imsi),
+ iccid : verifyDeviceInfo(data.iccid),
+ cellid: verifyDeviceInfo(data.cellid),
signal: signalFormat(data.signal),
hasWifi: set.HAS_WIFI,
isCPE: set.PRODUCT_TYPE == 'CPE',
diff --git a/lynq/MD310/ap/app/zte_webui/js/ext/menu.js b/lynq/MD310/ap/app/zte_webui/js/ext/menu.js
new file mode 100755
index 0000000..dc3a4e4
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/js/ext/menu.js
@@ -0,0 +1,313 @@
+define(function () {
+ var needLogin = true;
+ var menu = [{
+ hash: '#more',
+ path: 'adm_others',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_url',
+ path: 'firewall_url_filter',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin
+ }, {
+ hash: '#demilitarized_zone',
+ path: 'firewall_dmz_set',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#universal_plug_and_play',
+ path: 'firewall_upnp_set',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#map_port',
+ path: 'firewall_port_map',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#foward_port',
+ path: 'firewall_port_forward',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin
+ }, {
+ hash: '#filter_port',
+ path: 'firewall_port_filter',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_sleep',
+ path: 'wifi_sleep_mode',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pin_mode',
+ path: 'adm_pin',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#pwd_mode',
+ path: 'adm_management',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_mac',
+ path: 'wifi_mac_filter',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_wps',
+ path: 'wifi_wps',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_adv',
+ path: 'wifi_advance',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#conn_device',
+ path: 'wifi_station_info',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_guset',
+ path: 'wifi_guest',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_main',
+ path: 'wifi_main',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#fota',
+ path: 'ota_update',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#dynamic_dns',
+ path: 'ddns',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#cgdcont_set',
+ path: 'network_apn_set',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#network_choose',
+ path: 'network_net_select',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#conn_set',
+ path: 'network_dial_set',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#net_status',
+ path: 'network_info',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#wlan_station',
+ path: 'wifi_ap_station',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#msg_set',
+ path: 'sms_set',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#msg_sim',
+ path: 'sms_sim_messages',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#msg_list',
+ path: 'sms_list',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#flow_ctl',
+ path: 'status_traffic_alert',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_work_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_friend_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_family_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_com_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_all_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#usat',
+ path: 'ussd',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#route_set',
+ path: 'adm_lan',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_main',
+ path: 'firewall',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#local_set',
+ path: 'adm_management',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_basic',
+ path: 'wifi_basic',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#network_set',
+ path: 'network_dial_set_cpe',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#fast_set',
+ path: 'adm_quick_set',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ },
+ {
+ hash: '#child_ctl',
+ path: 'firewall_parental_control',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#normal_set',
+ path: 'adm_quick_set',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#pb_main',
+ path: 'phonebook',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#msg_main',
+ path: 'sms_list',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#main',
+ path: 'main',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#entry',
+ path: 'entry',
+ level: '1',
+ requireLogin: false,
+ checkSIMStatus: false
+ },
+ ];
+
+ return menu;
+});
diff --git a/lynq/MD310/ap/app/zte_webui/js/ext/menu_pppoe.js b/lynq/MD310/ap/app/zte_webui/js/ext/menu_pppoe.js
new file mode 100755
index 0000000..52fddf8
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/js/ext/menu_pppoe.js
@@ -0,0 +1,313 @@
+define(function () {
+ var needLogin = true;
+ var menu = [{
+ hash: '#more',
+ path: 'adm_others',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_url',
+ path: 'firewall_url_filter',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin
+ }, {
+ hash: '#demilitarized_zone',
+ path: 'firewall_dmz_set',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#universal_plug_and_play',
+ path: 'firewall_upnp_set',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#map_port',
+ path: 'firewall_port_map',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#foward_port',
+ path: 'firewall_port_forward',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin
+ }, {
+ hash: '#filter_port',
+ path: 'firewall_port_filter',
+ level: '3',
+ parent: '#filter_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_sleep',
+ path: 'wifi_sleep_mode',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pin_mode',
+ path: 'adm_pin',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#pwd_mode',
+ path: 'adm_management',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_mac',
+ path: 'wifi_mac_filter',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_wps',
+ path: 'wifi_wps',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_adv',
+ path: 'wifi_advance',
+ level: '3',
+ parent: '#wlan_basic',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#conn_device',
+ path: 'wifi_station_info',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_guset',
+ path: 'wifi_guest',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_main',
+ path: 'wifi_main',
+ level: '3',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#fota',
+ path: 'ota_update',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#dynamic_dns',
+ path: 'ddns',
+ level: '3',
+ parent: '#local_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#cgdcont_set',
+ path: 'network_apn_set',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#network_choose',
+ path: 'network_net_select',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#conn_set',
+ path: 'network_dial_set',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#net_status',
+ path: 'network_info',
+ level: '3',
+ parent: '#network_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#wlan_station',
+ path: 'wifi_ap_station',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#msg_set',
+ path: 'sms_set',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#msg_sim',
+ path: 'sms_sim_messages',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#msg_list',
+ path: 'sms_list',
+ level: '2',
+ parent: '#msg_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#flow_ctl',
+ path: 'status_traffic_alert',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_work_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_friend_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_family_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_com_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#pb_all_grp',
+ path: 'phonebook',
+ level: '2',
+ parent: '#pb_main',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#usat',
+ path: 'ussd',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#route_set',
+ path: 'adm_lan',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#filter_main',
+ path: 'firewall',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#local_set',
+ path: 'adm_management',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#wlan_basic',
+ path: 'wifi_basic',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#network_set',
+ path: 'network_dial_set_cpe',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#fast_set',
+ path: 'adm_quick_set',
+ level: '2',
+ parent: '#normal_set',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ },
+ {
+ hash: '#child_ctl',
+ path: 'firewall_parental_control',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#normal_set',
+ path: 'adm_quick_set',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: true
+ }, {
+ hash: '#pb_main',
+ path: 'phonebook',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#msg_main',
+ path: 'sms_list',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#main',
+ path: 'main',
+ level: '1',
+ requireLogin: needLogin,
+ checkSIMStatus: false
+ }, {
+ hash: '#entry',
+ path: 'entry',
+ level: '1',
+ requireLogin: false,
+ checkSIMStatus: false
+ },
+ ];
+
+ return menu;
+});
diff --git a/lynq/MD310/ap/app/zte_webui/js/ext/set_aic8800.js b/lynq/MD310/ap/app/zte_webui/js/ext/set_aic8800.js
index 2e7c8b3..efe0b8a 100755
--- a/lynq/MD310/ap/app/zte_webui/js/ext/set_aic8800.js
+++ b/lynq/MD310/ap/app/zte_webui/js/ext/set_aic8800.js
@@ -17,13 +17,13 @@
name : '802.11 b/g/n/ax',
value : '6'
} ],
- WIFI_SUPPORT_QR_CODE: false,
- HAS_PHONEBOOK: true,
+ WIFI_SUPPORT_QR_CODE: true,
+ HAS_PHONEBOOK: false,
HAS_BATTERY: true, //ÊÇ·ñÓÐµç³Ø
- FAST_BOOT_SUPPORT: true, //ÊÇ·ñÖ§³Ö¿ìËÙ¿ª»ú
+ FAST_BOOT_SUPPORT: false, //ÊÇ·ñÖ§³Ö¿ìËÙ¿ª»ú
TURN_OFF_SUPPORT: true, //ÊÇ·ñÖ§³Ö¹Ø»ú
WIFI_SLEEP_SUPPORT: true, // ÊÇ·ñÖ§³ÖwifiÐÝÃß
- HAS_USSD: false, // ÊÇ·ñÖ§³ÖUSSD
+ HAS_USSD: true, // ÊÇ·ñÖ§³ÖUSSD
HAS_URL: true, // 是否支持URL过滤
//station¼ÓÃÜģʽ
AUTH_MODES_ALL: [{
@@ -60,9 +60,6 @@
WIFI_SLEEP_MODES: [{
name: 'turn off',
value: '1'
- }, {
- name: 'sleep',
- value: '0'
}
]
};
diff --git a/lynq/MD310/ap/app/zte_webui/js/main.js b/lynq/MD310/ap/app/zte_webui/js/main.js
new file mode 100755
index 0000000..fa447ca
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/js/main.js
@@ -0,0 +1,122 @@
+require.config({
+ shim: {
+ knockoutbase: ['jq_tmpl'],
+ jq_additional: ['jq_validate'],
+ jq_simplemodal: ['3rd/twbs.bootstrap'],
+ jq_translate: ['jq_i18n'],
+ },
+ paths: {
+ base64: '3rd/webtoolkit.base64',
+ echarts: '3rd/apache.echarts',
+ knockout: '3rd/knockout',
+ knockoutbase: '3rd/knockout.base',
+ jq_additional: '3rd/jquery.additional-methods',
+ jq_chosen: '3rd/jquery.chosen',
+ jq_fileinput: '3rd/jquery.fileinput',
+ jq_i18n: '3rd/jquery.i18n',
+ jq_simplemodal: '3rd/jquery.simplemodal',
+ jq_tmpl: '3rd/jquery.tmpl',
+ jq_translate: '3rd/jquery.translate',
+ jq_validate: '3rd/jquery.validate',
+ jquery: '3rd/require-jquery',
+ jqui: '3rd/jqui',
+ text: '3rd/require-text',
+ tmpl: '../subpg',
+ underscore: '3rd/underscore',
+ service: 'com',
+
+ CryptoJS: '3rd/crypto-js',
+
+ menu: 'com',
+ adm_lan: 'com',
+ adm_others: 'com',
+ adm_management: 'com',
+ adm_pin: 'com',
+ adm_quick_set: 'com',
+ main: 'com',
+ language: 'com',
+ entry: 'com',
+ logout: 'com',
+ opmode: 'com',
+ opmode_popup: 'com',
+ router: 'com',
+ statusBar: 'com',
+ status_traffic_alert: 'com',
+ tooltip: 'com',
+
+ phonebook: 'sim_device',
+ sim_abnormal: 'sim_device',
+ ota_update: 'sim_device',
+ sd: 'sim_device',
+ sd_httpshare: 'sim_device',
+ sms_set: 'sim_device',
+ sms_sim_messages: 'sim_device',
+ sms_list: 'sim_device',
+ ussd: 'sim_device',
+ network_apn_set: 'net',
+ network_dial_set: 'net',
+ network_dial_set_cpe: 'net',
+ network_info: 'net',
+ locknet: 'net',
+ network_net_select: 'net',
+ ddns: 'net',
+ firewall: 'net',
+ firewall_dmz_set: 'net',
+ firewall_parental_control: 'net',
+ firewall_port_filter: 'net',
+ firewall_port_forward: 'net',
+ firewall_port_map: 'net',
+ firewall_upnp_set: 'net',
+ firewall_url_filter: 'net',
+ wifi_advance: 'wifi',
+ wifi_ap_station: 'wifi',
+ wifi_guest: 'wifi',
+ wifi_mac_filter: 'wifi',
+ wifi_main: 'wifi',
+ wifi_sleep_mode: 'wifi',
+ wifi_station_info: 'wifi',
+ wifi_wps: 'wifi',
+ },
+
+});
+
+require("set service lib".split(" "),
+ function (set, fnc, util) {
+ function initAndLoad(cfg) {
+ require([cfg.menu, cfg.set], function (params) {
+ require("menu language logout statusBar router entry jq_additional jq_translate jq_simplemodal base64".split(" "),
+ function (menu, language, logout, statusBar, router, entry) {
+ menu.init();
+ language.init();
+ router.init();
+ logout.init();
+ statusBar.init();
+ });
+ });
+ }
+ if (!set.RJ45_SUPPORT) {
+ initAndLoad({
+ set: set.DEVICE + '/set',
+ menu: set.DEVICE + '/menu'
+ });
+ } else {
+ var tmp = "menu";
+ fnc.getOpMode({}, function (mod) {
+ set.blc_wan_mode = mod.blc_wan_mode;
+ switch (mod.blc_wan_mode) {
+ case "AUTO_PPPOE":
+ case "PPPOE":
+ tmp = "menu_pppoe";
+ break;
+ default:
+ tmp = "menu";
+ break;
+ }
+ initAndLoad({
+ set: set.DEVICE + '/set',
+ menu: set.DEVICE + '/' + tmp
+ });
+ });
+ }
+
+});
diff --git a/lynq/MD310/ap/app/zte_webui/js/net.js b/lynq/MD310/ap/app/zte_webui/js/net.js
index 22a9d2b..ac6b5c9 100755
--- a/lynq/MD310/ap/app/zte_webui/js/net.js
+++ b/lynq/MD310/ap/app/zte_webui/js/net.js
@@ -3,7 +3,7 @@
function (_, $, ko, config, service) {
//system url filter setting VM
-
+
function UrlFilterSettingVM() {
var target = this;
var urlFltInfo = service.getUrlFilterList();
@@ -28,14 +28,14 @@
});
target.clear = clearFunc;
-
+
target.callback = callbackFunc;
//删除规则
-
+
target.deleteRule = deleteRuleFunc;
-
+
//添加规则
-
+
target.addRule = addRuleFunc;
function callbackFunc(elem) {
if (elem.result != "success") {
@@ -47,7 +47,7 @@
$("#urlFilters").translate();
}
}
-
+
//添加规则
function addRuleFunc() {
if (target.rules().length >= config.urlFilterMax) {
@@ -84,17 +84,17 @@
service.deleteSelectedRules(urlFltParams, target.callback);
});
}
-
+
}
-
+
function clearFunc() {
$("#addURLFilter").val("");
}
-
+
//页面初始化
-
+
function initialize() {
-
+
var vm = new UrlFilterSettingVM();
bindContainer(vm);
}
@@ -127,7 +127,7 @@
function (_, $, ko, config, service) {
//system upnp setting VM
-
+
function UpnpSettingVM() {
var target = this;
var upnpInfo = getUpnpSetting();
@@ -149,21 +149,21 @@
}
}
-
-
+
+
//获取upnp 信息
-
+
function getUpnpSetting() {
return service.getUpnpSetting();
}
//初始化UpnpSettingVM model
-
+
function initialize() {
-
+
var vm = new UpnpSettingVM();
bindContainer(vm);
-
+
}
function bindContainer(vm) {
var container = $('#container');
@@ -185,7 +185,7 @@
function (_, $, ko, config, service) {
//system upnp setting VM
-
+
function UpnpSettingVM() {
var target = this;
var upnpInfo = getUpnpSetting();
@@ -207,21 +207,21 @@
}
}
-
-
+
+
//获取upnp 信息
-
+
function getUpnpSetting() {
return service.getUpnpSetting();
}
//初始化UpnpSettingVM model
-
+
function initialize() {
-
+
var vm = new UpnpSettingVM();
bindContainer(vm);
-
+
}
function bindContainer(vm) {
var container = $('#container');
@@ -240,7 +240,7 @@
});
//端口映射
-
+
define("firewall_port_map","underscore jquery knockout set service".split(" "),
function (_, $, ko, config, service) {
@@ -276,7 +276,7 @@
];
//prot_map VM
-
+
function PortMapVM() {
var target = this;
var mapInfo = getPortMap();
@@ -285,11 +285,11 @@
target.rules = ko.observableArray(mapInfo.portMapRules);
target.portMapEnable = ko.observable(mapInfo.portMapEnable);
-
+
target.comment = ko.observable('');
target.selectedMode = ko.observable('TCP&UDP');
target.modes = ko.observableArray(protocolModes);
-
+
target.destPort = ko.observable('');
target.destIpAddress = ko.observable('');
target.sourcePort = ko.observable('');
@@ -305,25 +305,25 @@
});
//设定,新增,删除回调函数
-
+
target.callback = callbackFunc;
-
+
//删除规则
-
+
target.deleteMapRules = deleteMapRulesFunc;
-
+
//检查新增规则是否已经存在
-
+
target.checkExist = checkExistFunc;
-
+
//设定端口映射
-
+
target.enablePortMap = enablePortMapFunc;
//保存规则
-
+
target.save = saveFunc;
-
+
//保存规则
function saveFunc() {
if (target.rules().length >= config.portForwardMax) {
@@ -349,7 +349,7 @@
mapParams.comment = target.comment();
service.setPortMap(mapParams, target.callback);
}
-
+
//检查新增规则是否已经存在
function checkExistFunc() {
var newMapRule = {
@@ -375,7 +375,7 @@
}
return false;
}
-
+
//设定端口映射
function enablePortMapFunc() {
showLoading();
@@ -383,7 +383,7 @@
mapParams.portMapEnable = target.portMapEnable();
service.enablePortMap(mapParams, target.callback);
}
-
+
//删除规则
function deleteMapRulesFunc() {
var ids = target.gridTemplate.selectedIds();
@@ -399,7 +399,7 @@
service.deleteMapRules(mapParams, target.callback);
});
}
-
+
//设定,新增,删除回调函数
function callbackFunc(ret) {
if (ret.result == "success") {
@@ -412,7 +412,7 @@
}
//情况添加规则输入
-
+
function clear() {
target.sourcePort('');
target.destIpAddress('');
@@ -423,7 +423,7 @@
}
//获取port map信息
-
+
function getPortMap() {
return service.getPortMap();
}
@@ -435,7 +435,7 @@
}
//初始化port map view model
-
+
function initialize(viewModel) {
var vm;
if (viewModel) {
@@ -506,7 +506,7 @@
});
//端口转发
-
+
define("firewall_port_forward","underscore jquery knockout set service".split(" "),
function (_, $, ko, config, service) {
@@ -514,7 +514,7 @@
return new Option(ele.name, ele.value);
});
//列表模板的columns项
-
+
var columnsTmpl = [{
columnType: "checkbox",
rowText: "index",
@@ -539,30 +539,30 @@
];
//prot_forward VM
-
+
function PortForwardVM() {
var target = this;
var fwdinfo = getPortForward();
target.portForwardEnable = ko.observable(fwdinfo.portForwardEnable);
target.oriPortForwardEnable = ko.observable(fwdinfo.portForwardEnable);
-
+
target.portEnd = ko.observable('');
target.portStart = ko.observable('');
target.ipAddress = ko.observable('');
-
+
target.comment = ko.observable('');
target.selectedMode = ko.observable('3');
target.modes = ko.observableArray(protocolModes);
target.rules = ko.observableArray(fwdinfo.portForwardRules);
-
+
//设定,新增,删除回调函数
-
+
target.callback = callbackFunc;
-
+
//创建列表模板
-
+
target.gridTemplate = new ko.simpleGrid.viewModel({
data: target.rules(),
idName: "index",
@@ -572,21 +572,21 @@
});
//检查新增规则是否已经存在
-
+
target.checkExist = checkExistFunc;
-
+
//保存规则
-
+
target.save = saveFunc;
-
+
//删除规则
-
+
target.deleteForwardRules = deleteForwardRulesFunc;
-
+
//设定虚拟服务器
-
+
target.enableVirtualServer = enableVirtualServerFunc;
-
+
//设定虚拟服务器
function enableVirtualServerFunc() {
showLoading();
@@ -594,7 +594,7 @@
fwdParams.portForwardEnable = target.portForwardEnable();
service.enableVirtualServer(fwdParams, target.callback);
}
-
+
//删除规则
function deleteForwardRulesFunc() {
var ids = target.gridTemplate.selectedIds();
@@ -610,7 +610,7 @@
service.deleteForwardRules(fwdParams, target.callback);
});
}
-
+
//保存规则
function saveFunc() {
if (target.rules().length >= config.portForwardMax) {
@@ -643,7 +643,7 @@
target.selectedMode('TCP&UDP');
target.comment('');
}
-
+
//设定,新增,删除回调函数
function callbackFunc(ret) {
if (ret.result == "success") {
@@ -681,13 +681,13 @@
}
//获取port forward信息
-
+
function getPortForward() {
return service.getPortForward();
}
//初始化port forward view model
-
+
function initialize(viewModel) {
var vm;
if (viewModel) {
@@ -704,7 +704,7 @@
vm = new PortForwardVM();
bindContainer(vm);
-
+
fixTableHeight();
renderCheckbox();
@@ -755,14 +755,14 @@
}
});
}
-
+
function bindContainer(vm){
var container = $('#container');
ko.cleanNode(container[0]);
ko.applyBindings(vm, container[0]);
}
-
+
return {
init: initialize
@@ -827,17 +827,17 @@
return new Option(elem.name, elem.value);
});
//prot_filter VM
-
+
function PortFilterVM() {
var target = this;
var info = getPortFilter();
-
+
target.oriDefaultPolicy = ko.observable(info.defaultPolicy);
target.defaultPolicy = ko.observable(info.defaultPolicy);
target.oriPortFilterEnable = ko.observable(info.portFilterEnable);
target.portFilterEnable = ko.observable(info.portFilterEnable);
target.rules = ko.observableArray(info.portFilterRules);
-
+
target.ipv6Support = ko.observable(config.IPV6_SUPPORT);
target.comment = ko.observable('');
target.selectedMode = ko.observable('5');
@@ -856,11 +856,11 @@
target.ipType = ko.observable('ipv4');
//设定,新增,删除回调函数
-
+
target.callback = callbackFunc;
-
+
//创建列表模板
-
+
target.gridTemplate = new ko.simpleGrid.viewModel({
data: target.rules(),
idName: "index",
@@ -869,40 +869,40 @@
pageSize: 20
});
//default policy change handler
-
+
target.policyChangeHandler = policyChangeHandlerFunc;
//保存规则
-
+
target.save = saveFunc;
-
+
//设定过滤基本信息
-
+
target.setPortFilterBasic = setPortFilterBasicFunc;
-
+
//清空添加规则输入
-
+
target.clear = clearFunc;
//检查新增规则是否已经存在
-
+
target.checkExist = checkExistFunc;
//ip类型变化事件监听
-
+
target.ipTypeChangeHandler = ipTypeChangeHandlerFunc;
-
+
//协议变化事件监听
-
+
target.protocolChangeHandler = protocolChangeHandlerFunc;
//删除规则
-
+
target.deleteFilterRules = deleteFilterRulesFunc;
//init to call
target.policyChangeHandler();
-
+
//设定,新增,删除回调函数
function callbackFunc(ret) {
if (ret.result != "success") {
@@ -919,7 +919,7 @@
target.portFilterAction(action);
return true;
}
-
+
//保存规则
function saveFunc() {
target.sourceIpAddress(target.sourceIpAddress().replace(/\s+/g, ''));
@@ -975,7 +975,7 @@
fltParams.destIpAddress = target.destIpv6Address();
fltParams.sourceIpAddress = target.sourceIpv6Address();
}
-
+
fltParams.ipType = target.ipType();
fltParams.comment = target.comment();
fltParams.protocol = target.selectedMode();
@@ -987,7 +987,7 @@
service.setPortFilter(fltParams, target.callback);
});
}
-
+
//设定过滤基本信息
function setPortFilterBasicFunc() {
showLoading();
@@ -1011,7 +1011,7 @@
target.macAddress('');
clearValidateMsg();
}
-
+
//检查新增规则是否已经存在
function checkExistFunc() {
target.macAddress(target.macAddress().toUpperCase());
@@ -1047,7 +1047,7 @@
}
return false;
}
-
+
//协议变化事件监听
function protocolChangeHandlerFunc() {
if (target.selectedMode() == PROTOCOLS.ICMP || target.selectedMode() == PROTOCOLS.NONE) {
@@ -1064,7 +1064,7 @@
}
return true;
}
-
+
//删除规则
function deleteFilterRulesFunc() {
var ids = target.gridTemplate.selectedIds();
@@ -1080,23 +1080,23 @@
service.deleteFilterRules(rules, target.callback);
});
}
-
+
}
//获取port filter信息
-
+
function getPortFilter() {
return service.getPortFilter();
}
-
+
//ip类型变化事件监听
function ipTypeChangeHandlerFunc() {
clearValidateMsg();
return true;
}
-
+
//初始化port filter view model
-
+
function initialize(viewModel) {
var vm;
if (viewModel) {
@@ -1221,7 +1221,7 @@
});
//家长控制
-
+
define("firewall_parental_control","underscore jquery knockout set service".split(" "),
function (_, $, ko, config, service) {
@@ -1232,8 +1232,8 @@
MANAGE: 1,
RULE: 2
};
-
-
+
+
function ParentalControlVM() {
var target = this;
var hostNameList = service.getHostNameList({}).devices;
@@ -1247,12 +1247,12 @@
return data.mac;
});
});
-
+
target.currentUserInChildGroup = ko.observable(true);
//获取儿童组设备列表
-
+
target.fetchChildGroupList = fetchChildGroupListFunc;
-
+
target.fetchChildGroupList();
target.manageHandler = manageHandlerFunc;
@@ -1262,15 +1262,15 @@
}
target.attachedDevices = ko.observable([]);
//获取已连接设备列表
-
+
target.fetchAttachedDevices = fetchAttachedDevicesFunc;
-
+
//儿童组设备 标签按钮事件
-
+
target.backToMainHandler = backToMainHandlerFunc;
-
-
+
+
ko.computed(function () {
target.attachedDevices();
target.childGroupList();
@@ -1279,9 +1279,9 @@
notify: 'always',
throttle: 300
});
-
+
//添加至儿童组
-
+
function addChildGroupFun(flag, eleData) {
showLoading();
service.addChildGroup(eleData, function (data) {
@@ -1299,41 +1299,41 @@
errorOverlay();
});
}
-
+
//移除按钮事件
-
+
target.removeChildGroupHandler = removeChildGroupHandlerFunc;
-
-
+
+
//添加按钮事件
-
+
target.addChildGroupHandler = addChildGroupHandlerFunc;
-
+
target.dealElement = dealElementFunc;
-
-
-
+
+
+
//取消编辑主机名按钮事件
-
+
target.cancelEditHostNameHandler = cancelEditHostNameHandlerFunc;
-
+
//主机名编辑保存按钮事件
-
+
target.saveHostNameHandler = saveHostNameHandlerFunc;
-
+
//主机名编辑按钮事件
-
+
target.editHostNameHandler = editHostNameHandlerFunc;
-
-
+
+
target.selectedIds = ko.observableArray([]);
target.siteList = ko.observable([]);
/////////////////////////////////////////////////////////////////
target.disableAdd = ko.computed(function () {
return target.siteList().length == maxItem;
});
-
+
ko.computed(function () {
target.siteList();
target.selectedIds();
@@ -1342,21 +1342,21 @@
}, 100);
$("#pc_site_white_list_form").translate();
});
-
+
//网站白名单添加按钮事件
-
+
target.openAddSitePopoverHandler = openAddSitePopoverHandlerFunc;
-
+
//网站白名单列表选择框点击事件
-
+
target.checkboxClickHandler = checkboxClickHandlerFunc;
-
+
//获取网站白名单列表
-
+
target.fetchSiteWhiteList = fetchSiteWhiteListFunc;
-
+
//网站白名单删除函数
-
+
function removeSiteWhiteItem(ids) {
showConfirm('confirm_data_delete', function () {
showLoading();
@@ -1374,42 +1374,42 @@
});
}
//网站白名单删除所有按钮事件
-
+
target.removeAllWhiteSite = removeAllWhiteSiteFunc;
-
+
//网站白名单删除按钮事件
-
+
target.removeSelectedWhiteSite = removeSelectedWhiteSiteFunc;
-
+
//网站白名单移除按钮事件
-
+
target.removeWhiteSite = removeWhiteSiteFunc;
-
-
-
+
+
+
//网站白名单添加框保存按钮事件
-
+
target.saveSiteWhite = saveSiteWhiteFunc;
-
+
//////////////////////////////////////////////////////////////////
target.notSave = ko.observable(false);
//获取时间限制信息
-
+
target.fetchTimeLimited = fetchTimeLimitedFunc;
-
-
+
+
//上网时间设置时间表格事件绑定
-
+
target.bindEvent = bindEventFunc;
-
+
//上网时间设置保存按钮事件
-
+
target.saveTimeLimitedHandler = saveTimeLimitedHandlerFunc;
-
+
//////////////////////////////////////////////////////////////////
var isBinded = false;
//上网规则标签点击事件
-
+
target.openRulePage = openRulePageFunc;
function openRulePageFunc() {
if (target.currentPage() == PAGES.RULE) {
@@ -1430,7 +1430,7 @@
hideLoading();
});
}
-
+
//获取儿童组设备列表
function fetchChildGroupListFunc(cb) {
service.childGroupList({}, function (data) {
@@ -1446,7 +1446,7 @@
}
});
}
-
+
//获取已连接设备列表
function fetchAttachedDevicesFunc(cb) {
target.attachedDevices([]);
@@ -1470,7 +1470,7 @@
currDevices = devs;
}
});
-
+
//wifi 已连接设备
service.getCurrentlyAttachedDevicesInfo({}, function (data) {
counter++;
@@ -1494,7 +1494,7 @@
function backToMainHandlerFunc() {
target.currentPage(PAGES.MAIN);
}
-
+
//移除按钮事件
function removeChildGroupHandlerFunc(ele) {
showLoading();
@@ -1508,7 +1508,7 @@
errorOverlay();
});
}
-
+
//添加按钮事件
function addChildGroupHandlerFunc(data) {
var uMacAddr = service.getCurretnMAC();
@@ -1520,12 +1520,12 @@
})
}
}
-
+
//取消编辑主机名按钮事件
function cancelEditHostNameHandlerFunc(eleData) {
target.dealElement(false, eleData.idx);
}
-
+
//主机名编辑保存按钮事件
function saveHostNameHandlerFunc(ele) {
var $hostInput = $("#hostname_input_" + ele.idx);
@@ -1556,7 +1556,7 @@
errorOverlay();
});
}
-
+
//主机名编辑按钮事件
function editHostNameHandlerFunc(ele) {
$("#hostname_input_" + ele.idx).val(ele.hostname);
@@ -1573,7 +1573,7 @@
validation: addValidation
});
}
-
+
//网站白名单列表选择框点击事件
function checkboxClickHandlerFunc(eleData, evt) {
addTimeout(function () {
@@ -1591,7 +1591,7 @@
_.isFunction(cb) && cb.apply(this);
});
}
-
+
//网站白名单删除所有按钮事件
function removeAllWhiteSiteFunc() {
removeSiteWhiteItem(getAllCheckboxValues());
@@ -1604,7 +1604,7 @@
function removeWhiteSiteFunc(ele, evt) {
removeSiteWhiteItem([ele.id]);
}
-
+
//网站白名单添加框保存按钮事件
function saveSiteWhiteFunc(name, site) {
popover.hide();
@@ -1636,7 +1636,7 @@
});
});
}
-
+
//上网时间设置时间表格事件绑定
function bindEventFunc() {
$("td:not('.col-head')", "#pc_time_limited_tbody").addClass('cursorhand').die().click(function () {
@@ -1660,7 +1660,7 @@
$this.removeClass('time_td_hover');
});
}
-
+
//上网时间设置保存按钮事件
function saveTimeLimitedHandlerFunc() {
showLoading();
@@ -1675,9 +1675,9 @@
errorOverlay();
});
}
-
+
}
-
+
function dealElementFunc(flag, idx) {
if (flag == false) {
$("#edit_btn_" + idx + ",#hostname_txt_" + idx).show();
@@ -1716,16 +1716,16 @@
return selectedValues;
}
//获取列表中被选中项的value值
-
+
function getSelectedValues() {
return getCheckboxValues(true);
}
function getAllCheckboxValues() {
return getCheckboxValues(false);
}
-
+
//增加网站白名单表单提交函数绑定和校验规则设置
-
+
function addValidation() {
$('#whiteSiteAddForm').validate({
submitHandler: function () {
@@ -1739,7 +1739,7 @@
}
});
}
-
+
function getSavedData(timeDatas) {
var ret = '';
for (var ki in timeDatas) {
@@ -1755,7 +1755,7 @@
return ret.substring(0, ret.length - 1);
}
//获取时间表格选中的时间
-
+
function getSelectedTds() {
var defaultValue = {
'0': [],
@@ -1783,7 +1783,7 @@
}
}
//初始化时间表格
-
+
function initTableData() {
$("tr", "#pc_time_limited_tbody").each(function (idx, n) {
var $tr = $(n);
@@ -1808,11 +1808,11 @@
pcVm.notSave(false);
}
-
+
//页面初始化
-
+
function initialize() {
-
+
pcVm = new ParentalControlVM();
bindContainer(pcVm);
}
@@ -1832,7 +1832,7 @@
function ( _, $, ko, config, service) {
//system dmz setting VM
-
+
function DmzSettingVM() {
var target = this;
var dmzInfo = getDmzSetting();
@@ -1842,9 +1842,9 @@
target.clear = clearFunc;
//应用按钮事件
-
+
target.save = saveFunc;
-
+
function saveFunc() {
showLoading();
var params = {};
@@ -1859,24 +1859,24 @@
}
});
}
-
+
}
-
+
function clearFunc() {
initialize();
}
-
-
+
+
//获取dmz 信息
-
+
function getDmzSetting() {
return service.getDmzSetting();
}
//初始化DmzSettingVM model
-
+
function initialize() {
-
+
var dmzVm = new DmzSettingVM();
bindContainer(dmzVm);
}
@@ -2114,7 +2114,7 @@
//选网模块
-
+
define("network_net_select","underscore jquery knockout set service".split(" "),
function (_, $, ko, config, service) {
@@ -2123,7 +2123,7 @@
});
//选网功能view model
-
+
function NetSelectVM() {
var target = this;
@@ -2135,9 +2135,9 @@
target.selectMode = ko.observable();
target.networkText = networkTextFunc;
-
+
target.networkStatusId = networkStatusIdFunc;
-
+
target.networkStatus = networkStatusFunc;
target.subnetworkType = subnetworkTypeFunc;
@@ -2152,17 +2152,17 @@
target.subnetTypeId = subnetTypeIdFunc;
//手动搜网.
-
+
target.search = searchFunc;
//自动选网时设置网络模式.
-
+
target.save = saveFunc;
target.checkEnable = checkEnableFunc;
//注册选择的网络.
-
+
target.register = registerFunc;
//init data
@@ -2175,7 +2175,7 @@
}
target.selectedType(info.net_select);
-
+
//注册选择的网络.
function registerFunc() {
showLoading('registering_net');
@@ -2191,7 +2191,7 @@
}
});
}
-
+
function checkEnableFunc() {
var status = service.getStatusInfo();
if (status.connectStatus == "ppp_connected" || status.connectStatus == "ppp_connecting") {
@@ -2200,7 +2200,7 @@
target.enableFlag(true);
}
}
-
+
//自动选网时设置网络模式.
function saveFunc() {
showLoading();
@@ -2217,7 +2217,7 @@
}
});
}
-
+
//手动搜网.
function searchFunc() {
showLoading('searching_net');
@@ -2237,15 +2237,15 @@
}
});
}
-
+
function subnetTypeIdFunc(data) {
return getSubNetworkTypeTog(data.nRat, data.SubAct);
}
-
+
function networkTypeIdFunc(data) {
return getNetworkType(data.nRat);
}
-
+
function networkValueFunc(data) {
var result = [];
result.push(data.strNumeric); //strNumeric
@@ -2253,31 +2253,31 @@
result.push(data.SubAct);
return result.join(',');
}
-
+
function operatorNameFunc(data) {
return data.strShortName;
}
-
+
function networkTypeFunc(data) {
var result = getNetworkType(data.nRat);
if (result == "auto")
result = $.i18n.prop("auto");
return result;
}
-
+
function subnetworkTypeFunc(data) {
var result = getSubNetworkTypeTog(data.nRat, data.SubAct);
return result;
}
-
+
function networkStatusFunc(data) {
return $.i18n.prop(getNetworkStatusTog(data.nState));
}
-
+
function networkStatusIdFunc(data) {
return getNetworkStatusTog(data.nState);
}
-
+
function networkTextFunc(data) {
return data.strNumeric;
}
@@ -2285,13 +2285,13 @@
}
//获取网络选择信息.
-
+
function getNetSelectInfo() {
return service.getNetSelectInfo();
}
//搜网结果中的状态转换为对应的语言项.
-
+
function getNetworkStatusTog(status) {
if ("3" == status) {
return "forbidden";
@@ -2304,7 +2304,7 @@
}
}
//子网络类型转换.
-
+
function getSubNetworkTypeTog(type, subtype) {
var type_3g = [2, 4, 5, 6, 8];
if ("1" == subtype) {
@@ -2329,7 +2329,7 @@
return subtype;
}
//网络类型转换.
-
+
function getNetworkType(type) {
if ("7" == type) {
return "4G";
@@ -2343,14 +2343,14 @@
}
function bindContainer(vm){
-
+
var container = $('#container');
ko.cleanNode(container[0]);
ko.applyBindings(vm, container[0]);
}
//初始化选网功能view model.
-
+
function initialize() {
var vm = new NetSelectVM();
bindContainer(vm);
@@ -2388,6 +2388,7 @@
target.hasSms = config.HAS_SMS;
target.hasPhonebook = config.HAS_PHONEBOOK;
target.isSupportSD = config.SD_CARD_SUPPORT;
+ target.hasUssd = config.HAS_USSD;
if (config.WIFI_SUPPORT_QR_SWITCH == false) {
target.showQRCode = config.WIFI_SUPPORT_QR_CODE;
} else {
@@ -2414,7 +2415,7 @@
//显示工作模式设置窗口
target.showOpModeWindow = showOpModeWindowFunc;
-
+
target.isLoggedIn = ko.observable(false);
target.enableFlag = ko.observable(false);
//解锁
@@ -2422,7 +2423,7 @@
//更新工作模式状态
target.refreshOpmodeInfo = refreshOpmodeInfoFunc;
-
+
//定时检查工作模式状态
if (target.hasRj45) {
target.refreshOpmodeInfo();
@@ -2430,7 +2431,7 @@
target.refreshOpmodeInfo();
}, 1000);
}
-
+
//更新工作模式状态
function refreshOpmodeInfoFunc() {
var obj = service.getStatusInfo();
@@ -2467,7 +2468,7 @@
}
$("#opmode").attr("data-trans", currMode).text($.i18n.prop(currMode));
}
-
+
//解锁
function unlockFunc() {
showLoading();
@@ -2491,7 +2492,7 @@
}
})
}
-
+
//显示工作模式设置窗口
function showOpModeWindowFunc() {
showSettingWindow("change_mode", "opmode_popup", "opmode_popup", 400, 300, function () {});
@@ -2504,28 +2505,28 @@
});
// RJ45联网设置模块
-
+
define("network_dial_set_cpe","underscore jquery knockout set service".split(" "),
function(_, $, ko, config, service) {
var dialActions = _.map(config.dialActions, function(elem){
return new Option(elem.name, elem.value);
});
-
+
var dialModes = _.map(config.pppoeModes, function(elem) {
return new Option(elem.name, elem.value);
});
-
+
var checkStatusTimer = 0;
var checkConCounter = 0;
var timeoutTipShowed = false;
// 联网设置view model.
-
+
function PPPoEViewModel() {
var pppObj = service.getPppoeParams();
var ethParams = pppObj;
var target = this;
-
+
target.staticNoticeShow = ko.observable();
target.dhcpNoticeShow = ko.observable();
target.pppoeNoticeShow = ko.observable();
@@ -2549,7 +2550,7 @@
target.enableFlag = ko.observable();
target.isShowDisbtn = ko.observable();
target.isShowCancelbtn = ko.observable();
-
+
if(pppObj.rj45_state == "dead"){
checkRj45DeadTip();
} else if(pppObj.rj45_state == "connect"){
@@ -2558,40 +2559,40 @@
} else if(pppObj.rj45_state == "working"){
setRj45WorkingTip();
}
-
+
target.user = ko.observable(pppObj.pppoe_username);
target.password = ko.observable(pppObj.pppoe_cc);
target.autoUser = ko.observable(pppObj.pppoe_username);
target.autoPassword = ko.observable(pppObj.pppoe_cc);
target.pppMode = ko.observable(pppObj.ethwan_dialmode);
initContronler();
-
+
//下拉框选择改变下面DIV模块
target.changeModeDiv = changeModeDivFunc;
-
+
target.radioHandler = radioHandlerFunc;
-
+
target.primaryDNS = ko.observable(pppObj.static_wan_primary_dns);
target.secondaryDNS = ko.observable(pppObj.static_wan_secondary_dns);
target.ipAddress = ko.observable(pppObj.static_wan_ipaddr);
target.subnetMask = ko.observable(pppObj.static_wan_netmask);
target.defaultGateway = ko.observable(pppObj.static_wan_gateway);
-
+
addInterval(function(){
ethParams = service.getPppoeParams();
pppObj.rj45_state = ethParams.rj45_state;
initContronler();
}, 1000);
-
+
// 取消连接按钮事件.
-
+
target.cancelConnect = cancelConnectFunc;
-
+
// 应用按钮事件.
-
+
target.save = saveFunc;
-
+
//密码显示事件
target.showPasswordHandler = function () {
var checkbox = $("#showPassword:checked");
@@ -2601,9 +2602,9 @@
target.showPassword(false);
}
};
-
+
// 更新当前界面状态、按钮、提示语等.
-
+
function initContronler() {
checkRj45DeadTip();
if(target.currentMode() == "PPPOE"){
@@ -2662,15 +2663,15 @@
}else {
$("#pppoeApply").attr("disabled", false);
}
-
+
//取消/断开按钮
target.isShowDisbtn(target.pppMode() != "auto_dial" && pppObj.rj45_state == "working");
target.isShowCancelbtn(target.pppMode() != "auto_dial" && pppObj.rj45_state == "connect");
-
+
$("#pppoeApply").translate();
}
// 设置后通过定时检查rj45_state状态,判断连接或断开操作结果.
-
+
function setRj45CheckTimer(action){
checkStatusTimer && window.clearInterval(checkStatusTimer);
if("connect" != action){
@@ -2701,7 +2702,7 @@
}
}
// 设置后通过定时检查rj45_state状态,判断连接操作结果.
-
+
function checkConnectionStatus(){
if(checkConCounter < 1){
checkConCounter++;
@@ -2763,7 +2764,7 @@
}
}
// 设置连接成功时提示语状态.
-
+
function setRj45WorkingTip(){
if(target.currentMode() == ethParams.ethwan_mode){
if(target.currentMode() == "AUTO") {
@@ -2785,9 +2786,9 @@
}
}
}
-
+
// 设置网线断开提示语状态.
-
+
function checkRj45DeadTip(){
if(pppObj.rj45_state != "dead"){
if(target.currentMode() == "AUTO" && target.autoNotice() == "pppoe_msg") {
@@ -2799,7 +2800,7 @@
}else if(target.currentMode() == "DHCP" && target.dhcpNotice() == "pppoe_msg") {
target.dhcpNoticeShow(false);
}
-
+
} else{
target.dhcpNotice("pppoe_msg");
target.dhcpNoticeText($.i18n.prop("pppoe_msg"));
@@ -2821,7 +2822,7 @@
}
}
// 设置后通过定时检查rj45_state状态,判断断开操作结果.
-
+
function checkDisconnectStatus(){
if(checkConCounter < 1){
checkConCounter++;
@@ -2845,7 +2846,7 @@
window.clearInterval(checkStatusTimer);
}
}
-
+
//应用按钮事件.
function saveFunc(){
target.dhcpNoticeShow(false);
@@ -2895,7 +2896,7 @@
requestParams.action_link = "connect";
requestParams.dial_mode = target.pppMode();
showLoading("waiting");
-
+
service.setPppoeDialMode(requestParams, function(data){
if(data.result){
target.currentMode($("#pppoe_mode").val());
@@ -2908,9 +2909,9 @@
errorOverlay("pppoe_message_send_fail");
}
});
-
+
}
-
+
//取消连接按钮事件.
function cancelConnectFunc(){
target.dhcpNoticeShow(false);
@@ -2963,34 +2964,34 @@
errorOverlay("pppoe_message_send_fail");
}
});
-
+
}
-
+
function radioHandlerFunc(){
initContronler();
return true;
}
-
+
function changeModeDivFunc(){
initContronler();
}
-
+
}
function bindContainer(vm){
var container = $('#container');
ko.cleanNode(container[0]);
ko.applyBindings(vm, container[0]);
-
+
}
// 联网设置初始化.
-
+
function initialize() {
var vm = new PPPoEViewModel();
bindContainer(vm);
-
+
$("#pppoeApply").translate();
-
+
$('#pppoeForm').validate({
submitHandler : function() {
vm.save();
@@ -3017,11 +3018,11 @@
}
});
}
-
-
+
+
//from 4.0
// 有效DNS检查.
-
+
function validateDns(dns){
if ( "0.0.0.0" == dns || "255.255.255.255" == dns) {
return false;
@@ -3029,7 +3030,7 @@
return true;
}
// 联网设置初始化.
-
+
function isStaticIPValid(ip, lanip, lanmask){
if(!ip || !lanip || !lanmask){//各参数不能为空
return false;
@@ -3053,7 +3054,7 @@
}
// 有效子网掩码验证.
-
+
function isNetmaskIPValid(ip) {
if (ip == 255 || ip == 254 || ip == 252 || ip == 248
|| ip == 240 || ip == 224 || ip == 192 || ip == 128 || ip == 0)
@@ -3066,7 +3067,7 @@
}
}
// 有效子网掩码检查.
-
+
function validateNetmask(netmask) {
var array = new Array();
array = netmask.split(".");
@@ -3117,21 +3118,21 @@
}
return true;
}
-
+
// subnetmask_check校验规则
-
+
jQuery.validator.addMethod("subnetmask_check", function (value, element, param) {
var result = validateNetmask(value);
return this.optional(element) || result;
});
// dns_check校验规则
-
+
jQuery.validator.addMethod("dns_check", function (value, element, param) {
var result = validateDns(value);
return this.optional(element) || result;
});
// 有效网关检查.
-
+
function validateGateway(wanIp, netmaskIp, gatewayIp) {
if(myConcat(wanIp,netmaskIp) == myConcat(netmaskIp, gatewayIp)) {
return true;
@@ -3140,7 +3141,7 @@
}
}
// IP和子网掩码转换成数组形式并相与,返回相与后的IP.
-
+
function myConcat(ip1,ip2){
var result = [];
var iplArr = ip1.split(".");
@@ -3151,12 +3152,12 @@
return result.join(".");
}
// gateway_check校验规则
-
+
jQuery.validator.addMethod("gateway_check", function (value, element, param) {
var result = validateGateway($('#txtIpAddress').val(), $('#txtSubnetMask').val(), $("#txtDefaultGateway").val());
return this.optional(element) || result;
});
-
+
return {
init: initialize
};
@@ -3176,13 +3177,13 @@
var originalRoaming = dialMode.isAllowedRoaming;
target.setAllowedRoaming = setAllowedRoamingFunc;
-
+
var checkboxFlag = $(".checkboxToggle");
target.checkEnable = checkEnableFunc;
-
+
//修改联网模式
target.save = saveFunc;
-
+
function saveFunc() {
showLoading();
var connMode = target.selectMode();
@@ -3203,7 +3204,7 @@
}
});
}
-
+
function setAllowedRoamingFunc() {
if(!$("#roamBtn").hasClass("disable")){
var checkbox = $("#isAllowedRoaming:checked");
@@ -3214,7 +3215,7 @@
}
}
}
-
+
function checkEnableFunc() {
var status = service.getStatusInfo();
@@ -3234,18 +3235,18 @@
function initialize() {
var vm = new DialVM();
bindContainer(vm);
-
+
vm.checkEnable();
addInterval( vm.checkEnable, 1000);
}
-
+
function bindContainer(vm){
var container = $('#container');
ko.cleanNode(container[0]);
ko.applyBindings(vm, container[0]);
-
+
}
-
+
return {
init: initialize
};
@@ -3255,7 +3256,7 @@
function (_, $, ko, config, service) {
//获取鉴权方式
-
+
function getAuthModes() {
return _.map(config.APN_AUTH_MODES, function (item) {
return new Option(item.name, item.value);
@@ -3277,7 +3278,7 @@
}
//获取apn相关信息
-
+
function getApnSet() {
var apnInfo = service.getApnSettings();
apnInfo.ipv6ApnConfigs = getApnConfigs(apnInfo.ipv6APNs, true);
@@ -3290,7 +3291,7 @@
var autoApnConfigs = {};
//解析自动apn信息
-
+
function getAutoApnsConfig(autoApnV4, autoApnV6) {
var autoApnsV4 = [];
var autoApnsV6 = [];
@@ -3316,7 +3317,7 @@
return dealAutoApnsV4V6(autoApnsV4, autoApnsV6);
}
//解析apn信息
-
+
function getApnConfigs(apnsStr, isIpv6) {
var apnCfgs = [];
var theApnConfigs = {};
@@ -3339,7 +3340,7 @@
}
//解析单条apn信息
-
+
function parseApnItem(apnStr, isIpv6) {
var apnItem = {};
var items = apnStr.split("($)");
@@ -3367,7 +3368,7 @@
return apnItem;
}
//合并V4\V6自动apn信息
-
+
function dealAutoApnsV4V6(v4, v6) {
autoApnConfigs = {};
var autoApns = [];
@@ -3396,7 +3397,7 @@
}
//APNViewModel
-
+
function APNViewModel() {
var target = this;
var apnSettings = getApnSet();
@@ -3409,7 +3410,7 @@
target.autoProfiles = ko.observableArray(getProfileOptions(apnSettings.autoApnConfigs));
target.profiles = ko.observableArray(getProfileOptions(apnSettings.apnConfigs));
target.wanDial = ko.observable(apnSettings.wanDial);
-
+
target.showApnDns = ko.observable(config.SHOW_APN_DNS);
target.index = ko.observable(apnSettings.currIndex);
target.supportIPv6 = ko.observable(config.IPV6_SUPPORT);
@@ -3422,7 +3423,7 @@
target.authModes = ko.observableArray(getAuthModes());
target.username = ko.observable(apnSettings.username);
target.password = ko.observable(apnSettings.password);
-
+
target.pdpTypes = ko.observableArray(getApnPdpTypes());
target.selectedPdpType = ko.observable(apnSettings.pdpType);
target.selectedPdpTypeTmp = ko.observable(apnSettings.pdpType); //the PdpType select's value before chang
@@ -3452,12 +3453,12 @@
$("#apn_ipv4_apn").removeClass("required");
$("#apn_ipv6_apn").removeClass("required");
}
-
+
target.disableProfile = ko.observable(false); //表示处于新增页面
target.addApnHide = ko.observable(true);
target.defaultCfg = ko.observable(true); //当前选中的是默认APN
target.predeterminedCfg = ko.observable(true); //当前选中的是预置的APN
-
+
target.selectedAuthentication = ko.observable(apnSettings.authMode);
target.selectedAuthenticationV6 = ko.observable(apnSettings.authModeV6);
@@ -3469,7 +3470,7 @@
target.transAuthV6 = ko.observable('apn_authentication');
target.transUserNameV6 = ko.observable('apn_user_name');
target.transPasswordV6 = ko.observable('apn_password');
-
+
target.transApn = ko.observable(config.IPV4_AND_V6_SUPPORT ? 'apn_ipv4_apn' : 'apn');
target.transDnsMode = ko.observable(config.IPV4_AND_V6_SUPPORT ? 'apn_dns_mode_ipv4' : 'apn_dns_mode');
target.transDns1 = ko.observable(config.IPV4_AND_V6_SUPPORT ? 'apn_dns1_ipv4' : 'apn_dns1');
@@ -3528,7 +3529,7 @@
target.autoApnChecked = ko.computed(function () {
return target.apnMode() == "auto";
});
-
+
target.hasCapacity = ko.computed(function () {
if (target.profiles().length < config.maxApnNumber) {
return true;
@@ -3540,7 +3541,7 @@
target.showDnsV6 = ko.computed(function () {
return target.dnsModeV6() == "manual";
});
-
+
target.showDns = ko.computed(function () {
return target.dnsMode() == "manual";
});
@@ -3562,7 +3563,7 @@
var data = service.getDeviceInfo();
target.pdpTypeChangeAlert = pdpTypeChangeAlertFunc;
-
+
target.showAutoApnDetail = ko.computed(function () {
if (target.apnMode() != "auto") {
@@ -3581,21 +3582,21 @@
}
};
//auto apn profile change 事件处理
-
+
target.autoProfileChangeHandler = autoProfileChangeHandlerFunc;
-
-
+
+
//profile change 事件处理
-
+
target.profileChangeHandler = profileChangeHandlerFunc;
-
-
+
+
//切换profile时重置下面的显示项
target.setUIData = setUIDataFunc;
-
+
//设置默认apn状态
-
+
function checkDefaultProfileStatus() {
var index = getApnIndex();
//默认apn不允许编辑
@@ -3622,16 +3623,16 @@
//设置为默认apn
-
- target.setDefaultAct = setDefaultActFunc;
-
-
+ target.setDefaultAct = setDefaultActFunc;
+
+
+
//APN mode change 事件处理
-
+
target.apnModeChangeHandler = apnModeChangeHandlerFunc;
-
-
+
+
function doSetDefaultAct() {
var index = 0;
if (target.apnMode() != 'auto') {
@@ -3673,10 +3674,10 @@
}
target.getSelectedManualProfile = getSelectedManualProfileFunc;
-
+
//获取自动apn索引
-
+
function getAutoApnIndex() {
var configs = $("#autoProfile option");
for (var ki = 0; ki < configs.length; ki++) {
@@ -3686,9 +3687,9 @@
}
return configs.length - 1;
}
-
+
//获取apn索引
-
+
function getApnIndex() {
var configs = $("#profile option");
if (configs.length == 0) {
@@ -3704,11 +3705,11 @@
}
//保存APN设置信息
-
+
target.saveAct = saveActFunc;
-
+
//编辑APN信息
-
+
function editApnSetting(preAct) { //默认设置按钮触发为TRUE
showLoading();
var apnIndex = getApnIndex();
@@ -3760,9 +3761,9 @@
errorOverlay();
});
}
-
+
//新增APN信息
-
+
function addNewApnSetting() {
showLoading("waiting");
var optionLen = $("option", "#profile").length;
@@ -3814,19 +3815,19 @@
});
}
-
+
var tempApn = {};
//删除APN
-
+
target.deleteAct = deleteActFunc;
-
+
//取消新增APN
-
+
target.cancelAddAct = cancelAddActFunc;
-
+
//进入新增APN页面
-
+
target.addAct = addActFunc;
//进入新增APN页面
function addActFunc() {
@@ -3845,7 +3846,7 @@
authModeV6: target.selectedAuthenticationV6(),
usernameV6: target.usernameV6(),
passwordV6: target.passwordV6(),
-
+
wanApn: target.apn(),
dnsMode: config.SHOW_APN_DNS ? target.dnsMode() : 'auto',
dns1: config.SHOW_APN_DNS ? target.dns1() : '',
@@ -3866,7 +3867,7 @@
target.selectedAuthenticationV6("none");
target.usernameV6("");
target.passwordV6("");
-
+
target.apn("");
target.dnsMode("auto");
target.dns1("");
@@ -3876,7 +3877,7 @@
target.password("");
}
-
+
//取消新增APN
function cancelAddActFunc() {
clearValidateMsg('#apn_setting_form');
@@ -3894,7 +3895,7 @@
target.selectedAuthenticationV6(tempApn.authModeV6);
target.usernameV6(tempApn.usernameV6);
target.passwordV6(tempApn.passwordV6);
-
+
target.apn(tempApn.wanApn);
target.dnsMode(tempApn.dnsMode);
target.dns1(tempApn.dns1);
@@ -3904,7 +3905,7 @@
target.password(tempApn.password);
}
-
+
//删除APN
function deleteActFunc() {
if (!target.selectedProfile()) {
@@ -3938,7 +3939,7 @@
});
});
}
-
+
//保存APN设置信息
function saveActFunc() {
if (!$('#apn_setting_form').valid()) {
@@ -3972,7 +3973,7 @@
editApnSetting(false);
}
} else {
-
+
if ($("#profile option").length >= config.maxApnNumber) {
showInfo({
msg: "apn_profile_full",
@@ -3989,7 +3990,7 @@
//showConfirm("apn_alert", function () {
addNewApnSetting();
//});
-
+
} else {
showConfirm("apn_diconneted_network_confirm", function () {
showLoading('disconnecting');
@@ -4005,7 +4006,7 @@
}
}
}
-
+
function getSelectedManualProfileFunc() {
var cfg = {};
var profileVal = $("#profile").val();
@@ -4027,7 +4028,7 @@
}
return cfg;
}
-
+
//APN mode change 事件处理
function apnModeChangeHandlerFunc(data, event) {
if (target.apnMode() != 'auto') {
@@ -4039,7 +4040,7 @@
}
return true;
}
-
+
//设置为默认apn
function setDefaultActFunc() {
if (!target.selectedProfile()) {
@@ -4092,7 +4093,7 @@
}
}
}
-
+
//切换profile时重置下面的显示项
function setUIDataFunc(data) {
clearValidateMsg('#apn_setting_form');
@@ -4119,7 +4120,7 @@
target.passwordV6(data.passwordV6);
target.selectedAuthenticationV6(data.authModeV6 || 'none');
}
-
+
//profile change 事件处理
function profileChangeHandlerFunc(data, event) {
target.pdpTypeNote(true);
@@ -4131,7 +4132,7 @@
checkDefaultProfileStatus();
return true;
}
-
+
//auto apn profile change 事件处理
function autoProfileChangeHandlerFunc(data, event) {
if (target.apnMode() != 'auto') {
@@ -4142,7 +4143,7 @@
checkDefaultProfileStatus();
return true;
}
-
+
function pdpTypeChangeAlertFunc() {
if (target.pdpTypeNote()) {
showAlert({
@@ -4173,12 +4174,12 @@
}
target.selectedPdpTypeTmp(target.selectedPdpType());
}
-
+
}
//是否已联网
-
+
function isConnectedNetWork() {
var info = service.getConnectionInfo();
return info.connectStatus == "ppp_connected";
@@ -4195,10 +4196,10 @@
ko.applyBindings(vm, container[0]);
}
//初始化ViewModel
-
+
function initialize(formInit) {
initVar();
-
+
var vm = new APNViewModel();
bindContainer(vm);
@@ -4230,4 +4231,31 @@
return {
init: initialize
};
-});
\ No newline at end of file
+});
+define("network_info","underscore jquery knockout set service".split(" "),
+ function (_, $, ko, config, service) {
+
+ function NetInfoVM() {
+ var target = this;
+ var network_status = service.getNetworkStatus();
+
+ target.pci = ko.observable(network_status.pci);
+ target.sinr = ko.observable(network_status.sinr);
+ target.rsrp = ko.observable(network_status.rsrp);
+ target.rsrq = ko.observable(network_status.rsrq);
+ target.plmn = ko.observable(network_status.plmn);
+ target.cellid = ko.observable(network_status.cellid);
+ target.band = ko.observable(network_status.band);
+ }
+
+ function initialize() {
+ var container = $('#container');
+ ko.cleanNode(container[0]);
+ var imVm = new NetInfoVM();
+ ko.applyBindings(imVm, container[0]);
+ }
+
+ return {
+ init: initialize
+ };
+});
diff --git a/lynq/MD310/ap/app/zte_webui/js/sim_device.js b/lynq/MD310/ap/app/zte_webui/js/sim_device.js
index 633e2e6..3701db6 100755
--- a/lynq/MD310/ap/app/zte_webui/js/sim_device.js
+++ b/lynq/MD310/ap/app/zte_webui/js/sim_device.js
@@ -38,6 +38,7 @@
target.hasSms = config.HAS_SMS;
target.hasPhonebook = config.HAS_PHONEBOOK;
target.isSupportSD = config.SD_CARD_SUPPORT;
+ target.hasUssd = config.HAS_USSD;
if (config.WIFI_SUPPORT_QR_SWITCH) {
var wifiInfo = service.getWifiBasic();
target.showQRCode = config.WIFI_SUPPORT_QR_CODE && wifiInfo.show_qrcode_flag;
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/adm_lan.html b/lynq/MD310/ap/app/zte_webui/subpg/adm_lan.html
new file mode 100755
index 0000000..c3d8912
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/adm_lan.html
@@ -0,0 +1,106 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='advanced_settings'></h1>
+ </div>
+ </div>
+ </div>
+<div class="row">
+<div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a href="#wlan_sleep" data-trans="sleep_mode"></a></li>
+ <li class="active"><a href="#route_set" data-trans="router_setting"></a></li>
+ <li><a href="#filter_main" data-trans="firewall"></a></li>
+ <li data-bind="visible:hasUpdateCheck"><a href="#fota" data-trans="update_settings"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->
+ <li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>
+ <li><a href="#more" data-trans="others"></a></li>
+ </ul>
+ </div>
+</div>
+
+<div class="col-xs-10">
+<form id="frmLan" role="form">
+ <h3 class="form-title" data-trans="router_setting"></h3>
+ <div class="form-body margin-top-20">
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="ip_address" for="txtIpAddress" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="txtIpAddress" name="txtIpAddress" data-bind="value: ipAddress" maxlength="15" type="text" class="required form-control"/>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label data-trans="subnet_mask" for="txtSubnetMask" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="txtSubnetMask" name="txtSubnetMask" data-bind="value: subnetMask" maxlength="15" type="text" class="required form-control"/>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: showMacAddress() && hasWifi()">
+ <label data-trans="mac_address" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <label id="txtMacAddress" data-bind="text: macAddress" class="label-content"></label>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label class="col-xs-4 side-right" data-trans="dhcp_server"></label>
+ <div class="col-xs-8">
+ <div class="row">
+ <div class="col-xs-3">
+ <input id="dhcpEnable" name="dhcpServer" data-bind="checked: dhcpServer,click: dhcpServerHandler" type="radio" value="1"/>
+ <label data-trans="enable" for="dhcpEnable"></label>
+ </div>
+ <div class="col-xs-3">
+ <input id="dhcpDisable" name="dhcpServer" data-bind="checked: dhcpServer,click: dhcpServerHandler" type="radio" value="0"/>
+ <label data-trans="disable" for="dhcpDisable"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div data-bind='visible: dhcpServer() == "1"'>
+ <div class="row form-group">
+ <label data-trans='dhcp_ip_pool' for="txtDhcpIpPoolStart" class="col-xs-4 side-right"></label>
+ <div class="col-xs-8 form-inline">
+ <input id='txtDhcpIpPoolStart' name="txtDhcpIpPoolStart" data-bind="value: dhcpStart" maxlength="15" type="text" class="required rangeInput form-control"/>
+ -
+ <input id='txtDhcpIpPoolEnd' name="txtDhcpIpPoolEnd" data-bind="value: dhcpEnd" maxlength="15" type="text" class="required rangeInput form-control"/>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="txtDhcpLease" data-trans="dhcp_lease" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <div class="input-group">
+ <input id="txtDhcpLease" name="txtDhcpLease" data-bind="value: dhcpLease" maxlength="5" type="text" class="required form-control"/>
+ <div data-trans="hours" id="leaseLabel" class="input-group-addon"></div>
+
+ </div>
+ <div id="errorHolder"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="submit" formmethod="post" data-trans="apply" class="btn btn-primary"/>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="lan_note_ip_address"></li>
+ <li data-trans="lan_note_subnet_mask"></li>
+ <li data-trans="lan_note_dhcp_server_enable"></li>
+ <li data-trans="lan_note_dhcp_server_disable"></li>
+ <li data-trans="lan_note_dhcp_ip_pool"></li>
+ <li data-trans="lan_note_dhcp_lease_time"></li>
+ </ul></div>
+ </div>
+</form>
+ </div>
+ </div>
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/adm_others.html b/lynq/MD310/ap/app/zte_webui/subpg/adm_others.html
index 15c1e11..d1a22e6 100755
--- a/lynq/MD310/ap/app/zte_webui/subpg/adm_others.html
+++ b/lynq/MD310/ap/app/zte_webui/subpg/adm_others.html
@@ -19,7 +19,7 @@
<li><a href="#route_set" data-trans="router_setting"></a></li>
<li><a href="#filter_main" data-trans="firewall"></a></li>
<li data-bind="visible:hasUpdateCheck"><a href="#fota" data-trans="update_settings"></a></li>
- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->
<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>
<li class="active"><a href="#more" data-trans="others"></a></li>
</ul>
@@ -87,7 +87,7 @@
</div>
</div>
</form>
-
+
<form data-bind="visible: fastbootSupport">
<div class="form-body">
<h3 class="form-title" data-trans="fastboot_setting"></h3>
@@ -117,7 +117,7 @@
</div>
</form>
-
+
<form id="sntpForm" data-bind="visible: SNTPSupport">
<div class="form-body">
<h3 class="form-title">SNTP</h3>
@@ -139,20 +139,20 @@
<div id="manualSetTime" data-bind="visible: isManualSetTime">
<div class="row form-group">
<label class="col-xs-4 side-right" data-trans='time_set_time_manual'></label>
-
+
<div class="col-xs-8">
<select id="manualYear" data-bind="options: years, value: currentYear, optionsText: 'text', optionsValue: 'value', event:{change: initDateList}" style="display:inline-block; width:auto; padding-right:5px; padding-left:5px" class="form-control"></select>
<label data-trans="year" for="manualYear" style="display:inline-block; width:auto; padding-right:0"></label>
-
+
<select id="manualMonth" data-bind="options: months, value: currentMonth, optionsText: 'text', optionsValue: 'value', event: {change: initDateList}" style="display:inline-block; width:auto; padding-right:5px; padding-left:5px" class="form-control"></select>
<label data-trans="month" for="manualMonth" style="display:inline-block; width:auto; padding-right:0"></label>
-
+
<select id="manualDate" data-bind="options: dates, value: currentDate, optionsText: 'text', optionsValue: 'value'" style="display:inline-block; width:auto; padding-right:5px; padding-left:5px" class="form-control"></select>
<label data-trans="date" for="manualDate" style="display:inline-block; width:auto; padding-right:0"></label>
-
+
<select id="manualHour" data-bind="options: hours, value: currentHour, optionsText: 'text', optionsValue: 'value'" style="display:inline-block; width:auto; padding-right:5px; padding-left:5px" class="form-control"></select>
<label data-trans="hour" for="manualHour" style="display:inline-block; width:auto; padding-right:0"></label>
-
+
<select id="manualMinute" data-bind="options: minutes, value: currentMinute, optionsText: 'text', optionsValue: 'value'" style="display:inline-block; width:auto; padding-right:5px; padding-left:5px" class="form-control"></select>
<label data-trans="minute" for="manualMinute" style="display:inline-block; width:auto; padding-right:0"></label>
</div>
@@ -192,7 +192,7 @@
<select id="time_zone_select" data-bind="options: timeZones, value: currentTimeZone, optionsText: transOption('time_zone'), optionsValue: 'value'" data-transid="time_zone" class="form-control"></select>
</div>
</div>
-
+
</div>
</div>
<div class="form-buttons">
@@ -233,7 +233,7 @@
</div>
</form>
<!-- add by qumengjia for schedule ping diagnostics end -->
-
+
<div class="form-body">
<div class="content margin-top-20 line-height-30">
<div class="row">
@@ -246,4 +246,4 @@
</div>
</div>
</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/firewall.html b/lynq/MD310/ap/app/zte_webui/subpg/firewall.html
index 51a418d..bf00b0c 100755
--- a/lynq/MD310/ap/app/zte_webui/subpg/firewall.html
+++ b/lynq/MD310/ap/app/zte_webui/subpg/firewall.html
@@ -19,7 +19,7 @@
<li><a data-trans="router_setting" href="#route_set"></a></li>
<li class="active"><a data-trans="firewall" href="#filter_main"></a></li>
<li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>
- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->
<li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>
<li><a data-trans="others" href="#more"></a></li>
</ul>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/main.html b/lynq/MD310/ap/app/zte_webui/subpg/main.html
new file mode 100755
index 0000000..eb7a57c
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/main.html
@@ -0,0 +1,233 @@
+
+<div class="row margin-top-20">
+<div class="type_items">
+ <ul>
+ <li><a href="#child_ctl" data-bind="visible: hasParentalControl" data-trans="parental_control" class="c0EC6DC"></a></li>
+ <li><a href="#msg_main" data-bind="visible: hasSms" data-trans="sms" class="cF53A58"></a></li>
+ <li><a href="#usat" data-bind="visible:hasUssd" data-trans="USSD"></a></li>
+ <li><a href="#pb_main" data-bind="visible: hasPhonebook" data-trans="phonebook" class="c00AEFF"></a></li>
+ <li><a href="#sdcard" data-bind="visible: isSupportSD" data-trans="sd" class="c2175FF"></a></li>
+ <li><a data-bind="attr: {href: notDataCard? '#wlan_sleep' : '#demilitarized_zone'}" data-trans="advanced_settings" class="cFFCE2B"></a></li>
+ <li><a href="#fast_set" data-bind="visible: isSupportQuicksetting()" data-trans="quick_setting" class="cFFCE2B"></a></li>
+ </ul>
+</div>
+</div>
+
+<div class="row margin-top-20" id="home_image">
+
+<div class="row">
+ <div style="position: relative">
+ <div class="internet_status_container">
+ <div data-bind=" css: {'item_icon_connect': cStatus()== 1, 'item_icon_disconnect': cStatus() != 1}"></div>
+ <h3 data-trans="net_surfing" class="home_h3"></h3>
+ <div class="net_surfing_list">
+ <ul>
+ <li><a id="h_connect_btn" href="javascript: void(0)" data-bind="visible: canConnect() && isShowHomeConnect(), click: connectHandler , css: {'h_connect_on': cStatus()== 1, 'h_connect_off': cStatus() != 1}" style="display: none;"></a></li>
+ <li><i class="up"></i><span data-bind="text: up_Speed"></span></li>
+ <li><i class="down"></i><span data-bind="text: down_Speed"></span></li>
+ <li><span data-bind="text: connected_Time"></span></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="network_control_container">
+ <div class="item_icon"></div>
+ <h3 data-trans="my_router" class="home_h3"></h3>
+ <!--div id="h_network_type" data-bind="text: networkType, css: {'no-btn': !(canConnect() && isShowHomeConnect())}"></div-->
+ <div class="my_router_list">
+ <ul>
+ <li data-bind="visible: hasRj45"><a id="opmode" data-bind="click: showOpModeWindow, css: {'not-allowed': enableFlag}" href="javascript:void(0)"></a></li>
+ <li><a data-bind="click: showNetworkSettingsWindow" data-trans="settings_internet" href="javascript:void(0)"></a></li>
+ <!--li><div id="h_ssid"></div></li-->
+ <li data-bind="visible: notDataCard"><a data-trans="settings_wireless" href="#wlan_main"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <!--div id="h_connect_status" data-bind="visible:notDataCard, css: {'h_status_connected': cStatus()== 1, 'h_status_disconnected': cStatus()== 2, 'h_status_connecting': cStatus()== 3, 'h_status_disconnecting': cStatus()== 4, }">
+ </div-->
+
+ <div data-bind="visible: notDataCard" onclick="window.location.hash='#conn_device'" class="connected_devices_container">
+ <div class="item_icon"></div>
+ <h3 data-trans="station_info" class="home_h3" ></h3>
+ <div style="text-align:center;display:inline" class="margin-top-20">
+ <div id="h_wire_device" data-bind="visible: hasRj45 && isCPE">
+ <span data-bind="text: wireDeviceNum" style="font-size:70px;"><em></em></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>
+ <span data-trans="cable" style="font-size:15px;text-align:center;display:block"></span>
+ </div>
+ <div id="h_wireless_device" style="display-block">
+ <span data-bind="text: wirelessDeviceNum" style="font-size:70px"></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>
+ <span data-trans="wireless" style="font-size:15px;text-align:center;display:block"></span>
+ </div>
+ </div>
+ <!--a href="#conn_device" id="h_attached_device_link">
+ </a-->
+ </div>
+ </div>
+</div>
+</div>
+
+
+<div class="row margin-top-20 label-font-normal margin-bottom-20">
+ <div class="text-center traffic_control_container" data-bind="visible: showTraffic()">
+ <h4 data-trans="traffic_data_plan" style="font-size:14px;text-align:right;padding-right:15px"></h4>
+ <div style="display:inline-block">
+ <div id="traffic_graphic" style="width: 200px; height: 165px; visibility: visible;"></div>
+ </div>
+ <div style="text-align: left;padding-left:20px;font-size:18px">
+ <span style="background-color: #8CC916;" class="color_block"></span>
+ <span data-trans="traffic_used" class="color_block_desc"></span>
+ <span class="color_block_desc">:</span>
+ <span data-bind="text: trafficUsed" class="color_block_desc"></span>
+ </div>
+ <div class="statistics_list">
+ <ul>
+ <li><a href="#flow_ctl">
+ <div data-bind="visible: trafficAlertEnable">
+ <span data-bind="text: trafficLimited" class="line-height-20"></span>
+ <span data-trans="traffic_limit_data" class="line-height-20"></span>
+ </div>
+ <div data-bind="visible: trafficAlertEnable() == false">
+ <div data-trans="traffic_not_set_limited" class="line-height-20"></div>
+ </div>
+ </a></li>
+ </ul>
+ </div>
+ </div>
+
+
+ <div data-bind="css:{'device_info_container_hastraffic':showTraffic(),'device_info_container_notraffic':!showTraffic()}" class="device_info_container">
+ <h4 data-trans="device_info" style="font-size:14px;text-align:left;padding-left:15px;color:#fff"></h4>
+ <div style="color:#fff;position: relative;height: 210px;font-size: 18px;line-height: 1.5em;padding:20px 0px 0px 15px;">
+ <div class="row">
+ <label data-trans="sim_serial_number" class="col-xs-5"></label>
+ <label data-bind="text: simSerialNumber" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="imei" class="col-xs-5"></label>
+ <label data-bind="text: imei" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="imsi" class="col-xs-5"></label>
+ <label data-bind="text: imsi" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="iccid" class="col-xs-5"></label>
+ <label data-bind="text: iccid" class="col-xs-7"></label>
+ </div>
+ <div class="row">
+ <label data-trans="cellid" class="col-xs-5"></label>
+ <label data-bind="text: cellid" class="col-xs-7"></label>
+ </div>
+ <!--div class="row" data-bind="visible: notDataCard">
+ <label class="col-xs-5" data-trans="wifi_range"></label>
+ <label class="col-xs-7" data-bind="attr: {'data-trans': wifiLongMode}"></label>
+ </div-->
+ <div class="row">
+ <label data-trans="signal_strength_label" class="col-xs-5"></label>
+ <label id="fresh_signal_strength" class="col-xs-7"></label>
+ </div>
+ <div class="row" data-bind="visible: hasWifi && showMultiSsid()">
+ <label data-trans="network_name_ssid1" class="col-xs-5"></label>
+ <label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>
+ </div>
+ <div class="row" data-bind="visible: hasWifi && !showMultiSsid()">
+ <label data-trans="network_name" class="col-xs-5"></label>
+ <label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>
+ </div>
+ </div>
+ <div style="text-align:right;">
+ <a href="javascript: void(0)" data-trans="detail_info" id="showDetailInfo" tabindex="0"></a>
+ </div>
+ </div>
+</div>
+
+
+<div id="h_qrcode" data-bind="visible: showQRCode" style="float:right" class="text-center">
+ <img id="qrcode_img" data-bind="attr: {src: qrcodeSrc}" src="./pic/res_blacktrans.png" width="111"/>
+</div>
+
+<script type="text/x-jquery-tmpl" id="detailInfoTmpl">
+<div class="row">
+ <label class="col-xs-6" data-trans="sim_serial_number" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= simSerialNumber %></label>
+</div>
+<div class="row">
+ <label data-trans="imei" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= imei %></label>
+</div>
+<div class="row">
+ <label data-trans="imsi" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= imsi %></label>
+</div>
+<div class="row">
+ <label data-trans="iccid" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= iccid %></label>
+</div>
+<div class="row">
+ <label data-trans="cellid" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= cellid %></label>
+</div>
+<div class="row">
+ <label data-trans="signal_strength_label" class="col-xs-6"></label>
+ <label class="col-xs-6" id="popoverSignalTxt"><%= signal %></label>
+</div>
+<% if(hasWifi){ %>
+<div class="row">
+ <label data-trans="<%= showMultiSsid ? 'network_name_ssid1': 'network_name' %>" class="col-xs-6"></label>
+ <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= ssid %></label>
+</div>
+<div class="row">
+ <label data-trans="<%= showMultiSsid ? 'max_access_num_ssid1': 'max_access_num' %>" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= max_access_num %></label>
+</div>
+ <% if(showMultiSsid){ %>
+ <div class="row">
+ <label data-trans="network_name_ssid2" class="col-xs-6"></label>
+ <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= m_ssid %></label>
+ </div>
+ <div class="row">
+ <label data-trans="max_access_num_ssid2" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= m_max_access_num %></label>
+ </div>
+ <% } %>
+<div class="row">
+ <label data-trans="wifi_range" class="col-xs-6"></label>
+ <label data-trans="<%= wifi_long_mode %>" class="col-xs-6"></label>
+</div>
+<% } %>
+<div class="row">
+ <label data-trans="lan_domain" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= lanDomain %></label>
+</div>
+<div class="row">
+ <label data-trans="ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= ipAddress %></label>
+</div>
+<% if(showMacAddress){ %>
+<div class="row">
+ <label data-trans="mac_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= macAddress %></label>
+</div>
+<% } %>
+<% if(showIpv4WanIpAddr){ %>
+<div class="row">
+ <label data-trans="wan_ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= wanIpAddress %></label>
+</div>
+<% } %>
+<% if(showIpv6WanIpAddr){ %>
+<div class="row">
+ <label data-trans="ipv6_wan_ip_address" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= ipv6WanIpAddress %></label>
+</div>
+<% } %>
+<div class="row">
+ <label data-trans="software_version" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= sw_version %></label>
+</div>
+<div class="row">
+ <label data-trans="hardware_version" class="col-xs-6"></label>
+ <label class="col-xs-6"><%= hw_version %></label>
+</div>
+</script>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/network_apn_set.html b/lynq/MD310/ap/app/zte_webui/subpg/network_apn_set.html
new file mode 100755
index 0000000..16cd939
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/network_apn_set.html
@@ -0,0 +1,221 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='net_setting'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="dial_mode" href="#conn_set"></a></li>
+ <li><a data-trans="net_select" href="#network_choose"></a></li>
+ <li class="active"><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+
+<form id="apn_setting_form">
+ <div class="form-body">
+ <h3 data-trans="apn_setting" class="form-title"></h3>
+ <div class="content">
+ <!-- 当前APN -->
+ <div class="row form-group">
+ <label data-trans="apn_currentApn" class="col-xs-3 side-right"></label>
+ <label data-bind="text: defApn" class="col-xs-6"></label>
+ </div>
+ <!-- 模式 手动、自动 -->
+ <div class="row form-group">
+ <label data-trans="apn_mode" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <div class="row">
+ <div class="col-xs-4">
+ <input id="apnMode_auto" type="radio" name="apnMode" data-bind="checked: apnMode, event: {click: apnModeChangeHandler}, disable: autoApnChecked() == false && disableProfile() == true" value="auto"/>
+ <label for="apnMode_auto" data-trans="apn_auto_apn"></label>
+ </div>
+ <div class="col-xs-4">
+ <input id="apnMode_manual" type="radio" name="apnMode" data-bind="checked: apnMode, event: {click: apnModeChangeHandler}, disable: autoApnChecked() == false && disableProfile() == true" value="manual"/>
+ <label for="apnMode_manual" data-trans="apn_manual_apn"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="apn_form_container" data-bind="visible: showAutoApnDetail()">
+ <div class="row form-group">
+ <label class="col-xs-3 side-right" for="profile" data-trans="apn_profile"></label>
+ <div class="col-xs-4">
+ <select id="autoProfile" name="autoProfile" data-bind="options: autoProfiles, value: selectedAutoProfile, optionsText: 'text', optionsValue: 'value', disable: disableProfile, event:{ change: autoProfileChangeHandler}, visible: apnMode() == 'auto'" class="form-control"></select>
+ <select id="profile" name="profile" data-bind="options: profiles, value: selectedProfile, optionsText: 'text', optionsValue: 'value', disable: disableProfile, event:{ change: profileChangeHandler}, visible: apnMode() == 'manual'" class="form-control"></select>
+ </div>
+
+ <div class="col-xs-2">
+ <input type="button" data-bind="click: addAct, visible: autoApnChecked() == false && disableProfile() == false && hasCapacity() == true" data-trans="add_new" class="btn btn-primary"/>
+ <input type="button" data-bind="click: cancelAddAct, visible: autoApnChecked() == false && disableProfile() == true && hasCapacity() == true" data-trans="cancel" class="btn btn-primary"/>
+ </div>
+ </div>
+ <div data-bind="visible: supportIPv6()" class="row form-group">
+ <label for="apn_pdp_type" data-trans="apn_pdp_type" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <select id="apn_pdp_type" name="apn_pdp_type" data-bind="options: pdpTypes, value: selectedPdpType, optionsText: 'text', optionsValue: 'value', disable: checkInputDisable, event:{ change: pdpTypeChangeAlert}" class="form-control"></select>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="profile_name" data-trans="apn_profile_name" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="profile_name" type="text" name="profile_name" data-bind="value: profileName, disable: checkInputDisable" maxlength="15" class="required form-control"/>
+ </div>
+ </div>
+ <div id="ipv4_section" data-bind="visible: selectedPdpType() != 'IPv6'">
+ <div class="row form-group">
+ <label for="apn_ipv4_apn" data-bind="attr:{'data-trans': transApn}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_ipv4_apn" type="text" name="apn_ipv4_apn" data-bind="value: apn, disable: checkInputDisable" maxlength="64" class="required form-control"/>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: showApnDns()">
+ <label data-bind="attr:{'data-trans': transDnsMode}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_auto_dns_ipv4" type="radio" name="apn_auto_dns_ipv4" data-bind="checked: dnsMode, disable: checkInputDisable" value="auto"/>
+ <label for="apn_auto_dns_ipv4" data-trans="apn_auto_dns"></label>
+ <input id="apn_manual_dns_ipv4" type="radio" name="apn_manual_dns_ipv4" data-bind="checked: dnsMode, disable: checkInputDisable" value="manual"/>
+ <label for="apn_manual_dns_ipv4" data-trans="apn_manual_dns"></label>
+ </div>
+ </div>
+ <div data-bind="visible: showDns() && showApnDns()" class="row form-group">
+ <label for="apn_dns1_ipv4" data-bind="attr:{'data-trans': transDns1}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_dns1_ipv4" type="text" name="apn_dns1_ipv4" data-bind="value: dns1, disable: checkInputDisable" maxlength="15" class="required ipv4 form-control"/>
+ </div>
+ </div>
+ <div data-bind="visible: showDns() && showApnDns()" class="row form-group">
+ <label for="apn_dns2_ipv4" data-bind="attr:{'data-trans': transDns2}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_dns2_ipv4" type="text" name="apn_dns2_ipv4" data-bind="value: dns2, disable: checkInputDisable" maxlength="15" class="ipv4 form-control"/>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="apn_authentication_ipv4" data-bind="attr:{'data-trans': transAuth}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <select id="apn_authentication_ipv4" name="apn_authentication_ipv4" data-bind="options: authModes, disable: checkInputDisable, value: selectedAuthentication, optionsText: 'text', optionsValue: 'value'" class="form-control"></select>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="apn_user_name_ipv4" data-bind="attr:{'data-trans': transUserName}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_user_name_ipv4" type="text" name="apn_user_name_ipv4" data-bind="value: username, disable: checkInputDisable" maxlength="64" class="form-control"/>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label class="col-xs-3 side-right" for="apn_secretcode_ipv4" data-bind="attr:{'data-trans': transPassword}"></label>
+ <div class="col-xs-6">
+ <input id="apn_secretcode_ipv4" type="password" name="apn_secretcode_ipv4" data-bind="value: password,visible:!showPassword(), disable: checkInputDisable" maxlength="64" class="form-control"/>
+ <input id="apn_secretcode_ipv4_show" type="text" name="apn_secretcode_ipv4" data-bind="value: password,visible:showPassword(), disable: checkInputDisable" maxlength="64" class="form-control"/>
+ <div class="margin-top-10">
+ <p data-bind="css:{'checkbox_selected': showPassword()}, click: showPasswordHandler" manualControl="true" class="checkbox">
+ <input id="showPassword" data-bind="checked:showPassword" type="checkbox"/>
+ </p>
+ <label data-trans="display_password" class="floatleft lineheight25 margintop5"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!-- 以下是ipv6 -->
+
+ <div data-bind="visible: (selectedPdpType() == 'IPv4v6' && supportIpv4AndIpv6()) || selectedPdpType() == 'IPv6'">
+ <div class="row form-group">
+ <label for="apn_ipv6_apn" data-bind="attr:{'data-trans': transApnV6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_ipv6_apn" type="text" name="apn_ipv6_apn" data-bind="value: apnV6, disable: checkInputDisable" maxlength="64" class="required form-control"/>
+ </div>
+ </div>
+ <div data-bind="visible: showApnDns()" class="row form-group">
+ <label data-bind="attr:{'data-trans': transDnsModeV6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_auto_dns_ipv6" type="radio" name="dns_ipv6" data-bind="checked: dnsModeV6, disable: checkInputDisable" value="auto"/>
+ <label for="apn_auto_dns_ipv6" data-trans="apn_auto_dns"></label>
+ <input id="apn_manual_dns_ipv6" type="radio" name="dns_ipv6" data-bind="checked: dnsModeV6, disable: checkInputDisable" value="manual"/>
+ <label for="apn_manual_dns_ipv6" data-trans="apn_manual_dns"></label>
+ </div>
+ </div>
+ <div data-bind="visible: showDnsV6() && showApnDns()" class="row form-group">
+ <label for="apn_dns1_ipv6" data-bind="attr:{'data-trans': transDns1V6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_dns1_ipv6" type="text" name="apn_dns1_ipv6" data-bind="value: dns1V6, disable: checkInputDisable" class="required ipv6 form-control"/>
+ </div>
+ </div>
+ <div class="row form-group" data-bind="visible: showDnsV6() && showApnDns()">
+ <label class="col-xs-3 side-right" for="apn_dns2_ipv6" data-bind="attr:{'data-trans': transDns2V6}"></label>
+ <div class="col-xs-6">
+ <input id="apn_dns2_ipv6" type="text" name="apn_dns2_ipv6" data-bind="value: dns2V6, disable: checkInputDisable" class="ipv6 form-control"/>
+ </div>
+ </div>
+
+ <div class="row form-group">
+ <label for="authentication_ipv6" data-bind="attr:{'data-trans': transAuthV6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <select id="authentication_ipv6" name="authentication_ipv6" data-bind="options: authModes, disable: checkInputDisable, value: selectedAuthenticationV6, optionsText: 'text', optionsValue: 'value'" class="form-control"></select>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="apn_user_name_ipv6" data-bind="attr:{'data-trans': transUserNameV6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_user_name_ipv6" type="text" name="apn_user_name_ipv6" data-bind="value: usernameV6, disable: checkInputDisable" maxlength="64" class="form-control"/>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="apn_secretcode_ipv6" data-bind="attr:{'data-trans': transPasswordV6}" class="col-xs-3 side-right"></label>
+ <div class="col-xs-6">
+ <input id="apn_secretcode_ipv6" type="password" name="apn_secretcode_ipv6" data-bind="value: passwordV6,visible:!showPassword(), disable: checkInputDisable" maxlength="64" class="form-control"/>
+ <input id="apn_secretcode_ipv6_show" type="text" name="apn_secretcode_ipv6" data-bind="value: passwordV6,visible:showPassword(), disable: checkInputDisable" maxlength="64" class="form-control"/>
+ <div class="margin-top-10">
+ <p data-bind="css:{'checkbox_selected': showPassword()}, click: showPasswordHandler" manualControl="true" class="checkbox">
+ <input id="showV6Password" data-bind="checked:showPassword" type="checkbox"/>
+ </p>
+ <label data-trans="display_password" class="floatleft lineheight25 margintop5"></label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label for="apn_secretcode_ipv6" data-trans="dial_num" class="col-xs-3 side-right"></label>
+ <label class="col-xs-6" data-bind="text: wanDial"></label>
+ </div>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-bind="click: setDefaultAct, visible: disableProfile() == false && setDefaultVisible() && !defaultCfg()" data-trans="set_default" class="btn btn-primary"/>
+ <input type="submit" formmethod="post" data-bind="visible: (!autoApnChecked() && !predeterminedCfg()) || disableProfile() == true" data-trans="apply" class="btn btn-primary"/>
+ <input type="button" data-bind="click: deleteAct, visible: !autoApnChecked() && !defaultCfg() && !predeterminedCfg() && !disableProfile()" data-trans="delete" class="btn btn-primary"/>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="apn_note_whole_page"></li>
+ <li data-trans="apn_note_mode"></li>
+ <li data-trans="apn_note_profile"></li>
+ <li data-trans="apn_note_pdp_type" data-bind="visible: supportIPv6()"></li>
+ <li data-trans="apn_note_profile_name"></li>
+ <li data-trans="apn_note_apn"></li>
+ <li data-trans="apn_note_dns_mode" data-bind="visible: showApnDns()"></li>
+ <li data-trans="apn_note_authentication"></li>
+ <li data-trans="apn_note_username"></li>
+ <li data-trans="apn_note_password"></li>
+ <li data-trans="apn_note_set_default"></li>
+ </ul>
+ </div>
+ </div>
+</form>
+ </div>
+</div>
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/network_dial_set.html b/lynq/MD310/ap/app/zte_webui/subpg/network_dial_set.html
new file mode 100755
index 0000000..a13017d
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/network_dial_set.html
@@ -0,0 +1,69 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='net_setting'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li class="active"><a data-trans="dial_mode" href="#conn_set"></a></li>
+ <li><a data-trans="net_select" href="#network_choose"></a></li>
+ <li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+
+<form>
+<div class="form-body">
+ <h3 data-trans="dial_mode" class="form-title"></h3>
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans='dial_mode' class="col-xs-3 side-right"></label>
+ <div class="col-xs-2">
+ <input id='auto_mode' type="radio" name="modeGroup" value="auto_dial" data-bind="checked: selectMode, enable: enableFlag" />
+ <label for='auto_mode' data-trans='auto_select'></label>
+ </div>
+ <div class="col-xs-2">
+ <input id='manual_mode' type="radio" name="modeGroup" value="manual_dial" data-bind="checked: selectMode, enable: enableFlag" />
+ <label for='manual_mode' data-trans='manual_select'></label>
+ </div>
+ </div>
+
+ <div data-bind="visible: selectMode() == 'auto_dial'" class="row form-group">
+ <div class="col-xs-3"></div>
+ <div class="col-xs-8 label-absolute">
+ <p id="roamBtn" data-bind="css:{'checkbox_selected': isAllowedRoaming()=='on'}, click: setAllowedRoaming" manualControl="true"class="checkbox floatleft margintop5 checkboxToggle">
+ <input type="checkbox" id="isAllowedRoaming" value="on" data-bind="checked:isAllowedRoaming()=='on'" />
+ </p>
+ <label for="isAllowedRoaming" data-trans="dial_roaming_remind" class="update_inline floatleft lineheight25"></label>
+ </div>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-bind='click: save, enable: enableFlag' data-trans="apply" class="btn btn-primary"/>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="diconneted_operate_note"></li>
+ <li data-trans="dial_setting_note_automatic"></li>
+ <li data-trans="dial_setting_note_manual"></li>
+ </ul>
+ </div>
+</div>
+</form>
+ </div>
+</div>
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/network_info.html b/lynq/MD310/ap/app/zte_webui/subpg/network_info.html
new file mode 100755
index 0000000..84dabe4
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/network_info.html
@@ -0,0 +1,64 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='net_setting'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="dial_mode" href="#conn_set"></a></li>
+ <li><a data-trans="net_select" href="#network_choose"></a></li>
+ <li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li class="active"><a data-trans="net_info" href="#net_status"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+ <form role="form">
+ <div class="form-body">
+ <h3 data-trans="net_info" class="form-title"></h3>
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="pci" class="col-xs-5"></label>
+ <label data-bind="text: pci" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="sinr" class="col-xs-5"></label>
+ <label data-bind="text: sinr" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="rsrp" class="col-xs-5"></label>
+ <label data-bind="text: rsrp" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="rsrq" class="col-xs-5"></label>
+ <label data-bind="text: rsrq" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="plmn" class="col-xs-5"></label>
+ <label data-bind="text: plmn" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="cellid" class="col-xs-5"></label>
+ <label data-bind="text: cellid" class="col-xs-7"></label>
+ </div>
+ <div class="row form-group">
+ <label data-trans="band" class="col-xs-5"></label>
+ <label data-bind="text: band" class="col-xs-7"></label>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/network_net_select.html b/lynq/MD310/ap/app/zte_webui/subpg/network_net_select.html
new file mode 100755
index 0000000..b5552c1
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/network_net_select.html
@@ -0,0 +1,107 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='net_setting'></h1>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="dial_mode" href="#conn_set"></a></li>
+ <li class="active"><a data-trans="net_select" href="#network_choose"></a></li>
+ <li><a data-trans="apn_setting" href="#cgdcont_set"></a></li>
+ <li><a data-trans="net_info" href="#net_status"></a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="col-xs-10">
+
+<form role="form">
+<div class="form-body">
+ <h3 data-trans="net_select" class="form-title"></h3>
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans='net_select' class="col-xs-4 side-right"></label>
+ <div class="col-xs-8">
+ <div class="row">
+ <div class="col-xs-4">
+ <input id='auto_select' type="radio" name="selectGroup" value="auto_select" data-bind="checked: selectMode, enable: enableFlag" />
+ <label for='auto_select' data-trans='auto_select'></label>
+ </div>
+ <div class="col-xs-6">
+ <select id="type" data-transid='auto_select_type' data-bind="options: types, value: selectedType, optionsText: transOption('auto_select_type'), optionsValue: 'value', enable: enableFlag() && selectMode() == 'auto_select'" class="form-control"></select>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row form-group">
+ <label class="col-xs-4 side-right"></label>
+ <div class="col-xs-8">
+ <input id='manual_select' type="radio" name="selectGroup" value="manual_select" data-bind="checked: selectMode, enable: enableFlag" />
+ <label for='manual_select' data-trans='manual_select'></label>
+ </div>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-bind='click: save, visible: selectMode() == "auto_select", enable: enableFlag, css: {disabled: !enableFlag()}' data-trans='apply' class="btn btn-primary"/>
+ <input type="button" data-bind='click: search, visible: selectMode() != "auto_select", enable: enableFlag, css: {disabled: !enableFlag()}' data-trans='search' class="btn btn-primary"/>
+ </div>
+
+ <div data-bind='visible: networkList().length > 0 && selectMode() == "manual_select"' class="content">
+ <div class="form-title">
+ <h2 data-trans='network_list'></h2>
+ </div>
+ <div class="content">
+ <div class="ko-grid-container marginnone">
+ <table cellspacing="0" cellpadding="0" class="table table-striped table-hover">
+ <thead>
+ <tr>
+ <th width="12%" data-trans="option"></th>
+ <th width="16%" data-trans="net_status"></th>
+ <th width="21%" data-trans="network_provider"></th>
+ <th width="18%" data-trans="mccmnc"></th>
+ <th width="18%" data-trans="networktype"></th>
+ <th width="15%" data-trans="subnet"></th>
+ </tr>
+ </thead>
+ <tbody data-bind='foreach: networkList'>
+ <tr data-bind="css:{odd:$index()%2==1, even:$index()%2==0}">
+ <td><input type="radio" name="networkGroup"
+ data-bind='value: $root.networkValue($data), checked: $root.selectNetwork, attr: {id: $root.networkValue($data)}, enable: $root.enableFlag'/>
+ </td>
+ <td data-bind='attr: {"data-trans": $root.networkStatusId($data)}, text: $root.networkStatus($data)'></td>
+ <td data-bind='text: $root.operatorName($data)'></td>
+ <td data-bind='text: $root.networkText($data)'></td>
+ <td data-bind='attr: {"data-trans": $root.networkTypeId($data)}, text: $root.networkType($data)'></td>
+ <td data-bind='attr: {"data-trans": $root.subnetTypeId($data)}, text: $root.subnetworkType($data)'></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-bind='click: register, enable: selectNetwork() != "" && enableFlag, css: {disabled: selectNetwork() == "" || !enableFlag()}' data-trans='register' class="btn btn-primary"/>
+ </div>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="diconneted_operate_note"></li>
+ <li data-trans="net_select_note_automatic"></li>
+ <li data-trans="net_select_note_manual"></li>
+ </ul>
+ </div>
+</div>
+</form>
+ </div>
+</div>
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/ota_update.html b/lynq/MD310/ap/app/zte_webui/subpg/ota_update.html
index 20efa98..243be6c 100755
--- a/lynq/MD310/ap/app/zte_webui/subpg/ota_update.html
+++ b/lynq/MD310/ap/app/zte_webui/subpg/ota_update.html
@@ -21,7 +21,7 @@
<li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>
<li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>
<li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>
- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->
<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>
<li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>
</ul>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/ussd.html b/lynq/MD310/ap/app/zte_webui/subpg/ussd.html
new file mode 100755
index 0000000..7310027
--- /dev/null
+++ b/lynq/MD310/ap/app/zte_webui/subpg/ussd.html
@@ -0,0 +1,85 @@
+<div id="innerContainer">
+ <div class="row header-row">
+ <div class="col-xs-1">
+ <a href="#main">
+ <img alt="" src="pic/direct-back.png">
+ </a>
+ </div>
+ <div class="col-xs-11">
+ <div class="form-title">
+ <h1 data-trans='USSD'></h1>
+ </div>
+ </div>
+ </div>
+<div class="row">
+ <!-- <div class="col-xs-2">
+ <div class="nav_right">
+ <ul>
+ <li><a data-trans="sleep_mode" href="#wlan_sleep"></a></li>
+ <li><a data-trans="router_setting" href="#route_set"></a></li>
+ <li><a data-trans="firewall" href="#filter_main"></a></li>
+ <li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>
+ <li class="active"><a data-trans="USSD" href="#usat"></a></li>
+ <li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>
+ <li><a data-trans="others" href="#more"></a></li>
+ </ul>
+ </div>
+ </div> -->
+
+ <div class="innerContainer">
+
+ <form id="frmUSSD">
+ <div class="col-xs-1 margin-top-15">
+ </div>
+ <div class="col-xs-11">
+ <h3 data-trans="USSD" class="form-title"></h3>
+ <div id="USSD_send_div" data-bind="visible: USSDLocation()==0" class="margin-top-20">
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="ussd_send_to" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <input id="USSD_send" type="text" size="20" data-bind="value:USSDSend,valueUpdate:'afterkeydown'" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input id="sendToNet" type="button" data-trans='ussd_send' data-bind="disable:USSDSend().length<=0,css:{disabled:USSDSend().length<=0},click:sendToNet" class="btn btn-primary marginright10" />
+ <!--input type="reset" data-trans='ussd_cancel' data-bind="disable:USSDSend().length<=0,css:{disabled:USSDSend().length<=0},click:resetUSSD" id="cancelToNet" class="btn btn-primary"/-->
+ </div>
+ </div>
+ </div>
+ <div id="USSD_reply_div" data-bind="visible: USSDLocation()==1" class="margin-top-20">
+ <!--<div class="form-title" data-trans='ussd_contents'></div>!-->
+ <div class="content">
+ <div class="row form-group">
+ <label data-trans="ussd_contents" class="col-xs-4 side-right"></label>
+ <div class="col-xs-3">
+ <textarea id="USSD_Content" rows="8" cols="50" readonly="readonly" name="USSD_Content"></textarea>
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-trans='ussd_cancel' data-bind="click:noReplyCancel" class="btn btn-primary marginright10"/>
+ </div>
+ <div id="ussd_action" data-bind="visible: ussd_action()!=0">
+ <div class="row form-group">
+ <label class="col-xs-4 side-right" data-trans="ussd_reply_to"></label>
+ <div class="col-xs-3">
+ <input id="USSD_reply" type="text" name="USSD_reply" size="20" data-bind="value:USSDReply" class="required form-control">
+ </div>
+ </div>
+ <div class="form-buttons">
+ <input type="button" data-trans='ussd_reply' data-bind="click:replyToNet" class="btn btn-primary marginright10"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-note">
+ <div class="notes-title"> </div>
+ <ul class="notes-content">
+ <li data-trans="ussd_note1"></li>
+ </ul>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+</div>
diff --git a/lynq/MD310/ap/app/zte_webui/subpg/wifi_sleep_mode.html b/lynq/MD310/ap/app/zte_webui/subpg/wifi_sleep_mode.html
index 5c2e39b..8a3234c 100755
--- a/lynq/MD310/ap/app/zte_webui/subpg/wifi_sleep_mode.html
+++ b/lynq/MD310/ap/app/zte_webui/subpg/wifi_sleep_mode.html
@@ -19,14 +19,14 @@
<li><a data-trans="router_setting" href="#route_set"></a></li>
<li><a data-trans="firewall" href="#filter_main"></a></li>
<li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>
- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li>
+ <!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->
<li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>
<li><a data-trans="others" href="#more"></a></li>
</ul>
</div>
</div>
<div class="col-xs-10">
-
+
<div class="form-body margin-top-20">
<!--hide wifi range settings until sw implements it-->
@@ -138,8 +138,9 @@
<div class="form-group">
<div class="row">
<label data-trans='wifi_sleep_mode' class="col-xs-3" for='power_save_mode'></label>
- <div class="col-xs-4">
- <select id="power_save_mode" data-bind="options: option, value: wifiSleepedMode, optionsText: transOption('sleep_select'), optionsValue: 'value'" data-transid='sleep_select' class="form-control"></select>
+ <div class="col-xs-4" style="border: none;">
+ <!-- <select id="power_save_mode" data-bind="options: option, value: wifiSleepedMode, optionsText: transOption('sleep_select'), optionsValue: 'value'" data-transid='sleep_select' class="form-control"></select> -->
+ <label id="power_save_mode" data-trans='sleep_select_1' style="border: none;"></label>
</div>
</div>
</div>
@@ -164,4 +165,4 @@
</div>
</div>
</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
index 751d10e..b8e63f0 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_app.mk
@@ -13,7 +13,7 @@
#yes only when klocwork static analysis
ifneq ($(KW_SKIP),yes)
-zte_app += iproute2 iptables c-ares
+zte_app += iproute2 iptables c-ares qrencode
endif
ifneq ($(CONFIG_WIFI_FUNCTION)), )
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
index 1033f81..33d160b 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/config/normal/config_lib.mk
@@ -8,7 +8,7 @@
#yes only when klocwork static analysis
ifneq ($(KW_SKIP),yes)
-zte_lib += libsqlite libssl libnl libcurl
+zte_lib += zlib libsqlite libssl libnl libcurl libpng
ifeq ($(USE_FOTA),yes)
zte_lib += liblzma
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index 2aabda2..3487136 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -115,7 +115,7 @@
Login=admin
Password=
sntp_server_count=3
-MAX_Station_num=8
+MAX_Station_num=10
MAX_Station_num_bak=0
MAX_Access_num_bbak=0
MAX_Chip_Capability=8
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_user b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
index 3b4e379..c97c678 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -277,7 +277,7 @@
fota_upgrade_result_internal=
mmi_battery_voltage_line=3258+3403+3426+3463+3500+3527+3551+3566+3582+3604+3632+3659+3698+3761+3819+3865+3911+3964+4019+4067+4118
mmi_fast_poweron=
-mmi_led_mode=sleep_mode
+mmi_led_mode=
mmi_new_sms_blink_flag=0
mmi_show_pagetab=page1+page2+page3
mmi_showmode=lcd
@@ -321,7 +321,7 @@
HTTP_SHARE_WR_AUTH=readWrite
ipv6_pdp_type=
ipv6_wan_apn=
-Language=zh-cn
+Language=en
manual_time_day=
manual_time_hour=
manual_time_minute=
@@ -383,8 +383,8 @@
m_wifi_mac=901D45692A5C
m_WPAPSK1_aes=
m_WPAPSK1_encode=MTIzNDU2Nzg=
-MAX_Access_num=8
-MAX_Access_num_bak=8
+MAX_Access_num=10
+MAX_Access_num_bak=10
NoForwarding=0
openEnable=0
openTime=