You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
331 lines
9.1 KiB
331 lines
9.1 KiB
/* 初始化一些全局变量 */
|
|
var lf = "<br />";
|
|
var iframe = null;
|
|
var notice = null;
|
|
var oriDisabledInputs = [];
|
|
|
|
/* Ajax设置 */
|
|
Ajax.onRunning = null;
|
|
Ajax.onComplete = null;
|
|
|
|
/**
|
|
* 显示数据库列表
|
|
*/
|
|
function displayDbList() {
|
|
var f = $("js-setting"), dbList = f["js-db-list"];
|
|
|
|
dbList.onchange = function () {
|
|
f["js-db-name"].value = dbList.options[dbList.selectedIndex].value;
|
|
f["js-db-name"].focus();
|
|
};
|
|
|
|
var opts = getDbList(),
|
|
opt;
|
|
if (opts !== false) {
|
|
dbList.options.length = 1;
|
|
var num = opts.length,
|
|
text = $_LANG['total_num'].replace("%s", num);
|
|
dbList[0] = new Option(text, "", false, false);
|
|
for (var i = 0; i < num; i++) {
|
|
opt = new Option(opts[i], opts[i], false, false);
|
|
dbList[dbList.options.length] = opt;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获得数据库列表
|
|
*/
|
|
function getDbList() {
|
|
var f = $("js-setting"),
|
|
params="db_host=" + f["js-db-host"].value + "&"
|
|
+ "db_port=" + f["js-db-port"].value + "&"
|
|
+ "db_user=" + encodeURIComponent(f["js-db-user"].value) + "&"
|
|
+ "db_pass=" + encodeURIComponent(f["js-db-pass"].value) + "&"
|
|
+ "lang=" + getAddressLang() + "&"
|
|
+ "IS_AJAX_REQUEST=yes";
|
|
try {
|
|
var result = Ajax.call("./index.php?step=get_db_list", params, null, "POST", "JSON", false);
|
|
} catch (ex) {
|
|
//alert(ex);
|
|
}
|
|
|
|
if (typeof(result) === "object" && result["msg"] === "OK") {
|
|
return result["list"].split(",");
|
|
} else {
|
|
alert(result);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 切换复选框的状态
|
|
*/
|
|
function switchInputsStatus() {
|
|
var goodsTypes = document.getElementsByName("js-goods-type[]"),
|
|
num = goodsTypes.length;
|
|
|
|
if (this.checked) {
|
|
for (var i = 0; i < num; i++) {
|
|
goodsTypes[i].checked = "checked";
|
|
goodsTypes[i].disabled = "true";
|
|
}
|
|
} else {
|
|
for (var i = 0; i < num; i++) {
|
|
goodsTypes[i].checked = "";
|
|
goodsTypes[i].disabled = "";
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 安装程序主函数
|
|
*/
|
|
function install() {
|
|
lockAllInputs();
|
|
startNotice();
|
|
$("js-install-at-once").setAttribute("disabled", "true");
|
|
$("js-monitor").style.display = "block";
|
|
try {
|
|
createConfigFile();
|
|
} catch (ex) {
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 创建配置文件
|
|
*/
|
|
function createConfigFile() {
|
|
var f = $("js-setting"),
|
|
tzs = f["js-timezones"],
|
|
tz = tzs ? "timezone=" + tzs[tzs.selectedIndex].value : "",
|
|
params="db_host=" + f["js-db-host"].value + "&"
|
|
+ "db_port=" + f["js-db-port"].value + "&"
|
|
+ "db_user=" + encodeURIComponent(f["js-db-user"].value) + "&"
|
|
+ "db_pass=" + encodeURIComponent(f["js-db-pass"].value) + "&"
|
|
+ "db_name=" + encodeURIComponent(f["js-db-name"].value) + "&"
|
|
+ "db_prefix=" + f["js-db-prefix"].value + "&"
|
|
+ tz + "&"
|
|
+ "lang=" + getAddressLang() + "&"
|
|
+ "IS_AJAX_REQUEST=yes";
|
|
|
|
notice.innerHTML = $_LANG["create_config_file"];
|
|
|
|
Ajax.call("./index.php?step=create_config_file", params, function (result) {
|
|
if (result.replace(/\s+$/g, '') === "OK") {
|
|
displayOKMsg();
|
|
createDatabase();
|
|
} else {
|
|
displayErrorMsg(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 初始化数据库
|
|
*/
|
|
function createDatabase() {
|
|
var f = $("js-setting"),
|
|
params="db_host=" + f["js-db-host"].value + "&"
|
|
+ "db_port=" + f["js-db-port"].value + "&"
|
|
+ "db_user=" + encodeURIComponent(f["js-db-user"].value) + "&"
|
|
+ "db_pass=" + encodeURIComponent(f["js-db-pass"].value) + "&"
|
|
+ "db_name=" + encodeURIComponent(f["js-db-name"].value) + "&"
|
|
+ "lang=" + getAddressLang();
|
|
|
|
notice.innerHTML += $_LANG["create_database"];
|
|
|
|
Ajax.call("./index.php?step=create_database", params, function (result) {
|
|
if (result.replace(/\s+$/g, '') === "OK") {
|
|
displayOKMsg();
|
|
installBaseData();
|
|
} else {
|
|
displayErrorMsg(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 安装数据
|
|
*/
|
|
function installBaseData() {
|
|
var f = $("js-setting"),
|
|
params = "system_lang=" + getCheckedRadio("js-system-lang").value + "&"
|
|
+ "lang=" + getAddressLang();
|
|
|
|
notice.innerHTML += $_LANG["install_data"];
|
|
|
|
Ajax.call("./index.php?step=install_base_data", params, function (result) {
|
|
if (result.replace(/\s+$/g, '') === "OK") {
|
|
displayOKMsg();
|
|
createAdminPassport();
|
|
} else {
|
|
displayErrorMsg(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 创建管理员帐号
|
|
*/
|
|
function createAdminPassport() {
|
|
var f = $("js-setting"),
|
|
params="admin_name=" + encodeURIComponent(f["js-admin-name"].value) + "&"
|
|
+ "admin_password=" + encodeURIComponent(f["js-admin-password"].value) + "&"
|
|
+ "admin_password2=" + encodeURIComponent(f["js-admin-password2"].value) + "&"
|
|
+ "admin_email=" + f["js-admin-email"].value + "&"
|
|
+ "lang=" + getCheckedRadio("js-system-lang").value;
|
|
|
|
notice.innerHTML += $_LANG["create_admin_passport"];
|
|
|
|
Ajax.call("./index.php?step=create_admin_passport", params, function (result) {
|
|
if (result.replace(/\s+$/g, '') === "OK") {
|
|
displayOKMsg();
|
|
doOthers();
|
|
} else {
|
|
displayErrorMsg(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 处理其它的操作
|
|
*/
|
|
function doOthers() {
|
|
var f = $("js-setting"),
|
|
disableCaptcha = f["js-disable-captcha"].checked ? 0 : 1,
|
|
installDemo = f["js-install-demo"].checked ? 1 : 0,
|
|
params = "disable_captcha=" + disableCaptcha + "&"
|
|
+ "system_lang=" + getCheckedRadio("js-system-lang").value + "&"
|
|
+ "install_demo=" + installDemo + "&"
|
|
+ "userinterface=" + f["userinterface"].value + "&"
|
|
+ "lang=" + getAddressLang();
|
|
|
|
notice.innerHTML += $_LANG["do_others"];
|
|
|
|
Ajax.call("./index.php?step=do_others", params, function (result) {
|
|
if (result.replace(/\s+$/g, '') === "OK") {
|
|
displayOKMsg();
|
|
goToDone();
|
|
} else {
|
|
displayErrorMsg(result);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 转到完成页
|
|
*/
|
|
function goToDone() {
|
|
stopNotice();
|
|
window.setTimeout(function () {
|
|
location.href = "./index.php?lang=" + getAddressLang() + "&step=done";
|
|
}, 1000);
|
|
}
|
|
|
|
/* 在安装过程中调用该方法 */
|
|
function startNotice() {
|
|
$("js-monitor-loading").src = "images/load.gif";
|
|
$("js-monitor-wait-please").innerHTML = "<strong style='color:blue'>" + $_LANG["wait_please"] + "</strong>";
|
|
};
|
|
|
|
/* 安装完毕调用该方法 */
|
|
function stopNotice() {
|
|
$("js-monitor-loading").src = "images/load.gif";
|
|
$("js-monitor-wait-please").innerHTML = $_LANG["has_been_stopped"];
|
|
};
|
|
|
|
/**
|
|
* 取得所有选中的复选框
|
|
*/
|
|
function getCheckedBoxes(boxName) {
|
|
var boxes = document.getElementsByName(boxName),
|
|
num = boxes.length,
|
|
checkedBoxes = [];
|
|
|
|
for (var i = 0; i < num; i++) {
|
|
if (boxes[i].checked) {
|
|
checkedBoxes.push(boxes[i]);
|
|
}
|
|
}
|
|
|
|
return checkedBoxes;
|
|
}
|
|
|
|
/**
|
|
* 获得选中的单选框
|
|
*/
|
|
function getCheckedRadio(radioName) {
|
|
var radios = document.getElementsByName(radioName);
|
|
for (var i = 0; i < radios.length; i++) {
|
|
if (radios[i].checked) {
|
|
return radios[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 锁定所有的输入组件
|
|
*/
|
|
function lockAllInputs() {
|
|
recOriDisabledInputs();
|
|
var elems = $("js-setting").elements;
|
|
for (var i = 0; i < elems.length; i++) {
|
|
elems[i].disabled = "true";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 解锁某些输入组件
|
|
*/
|
|
function unlockSpecInputs() {
|
|
var elems = $("js-setting").elements;
|
|
for (var i = 0; i < elems.length; i++) {
|
|
if (oriDisabledInputs.inArray(elems[i])) {
|
|
continue;
|
|
}
|
|
elems[i].removeAttribute("disabled");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 记录那些原先就被锁定的输入组件
|
|
*/
|
|
function recOriDisabledInputs() {
|
|
var elems = $("js-setting").elements;
|
|
for (var i = 0; i < elems.length; i++) {
|
|
if (elems[i].disabled) {
|
|
oriDisabledInputs.push(elems[i]);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 给数组的原型定义一个方法,判断元素是不是属于某个数组
|
|
*/
|
|
Array.prototype.inArray = function (unit) {
|
|
var length = this.length;
|
|
for (var i = 0; i < length; i++) {
|
|
if (unit === this[i]) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 显示完成信息
|
|
*/
|
|
function displayOKMsg() {
|
|
notice.innerHTML += "<span style='color:green;'>" + $_LANG["success"] + "</span>" + lf;
|
|
}
|
|
|
|
/**
|
|
* 显示错误信息
|
|
*/
|
|
function displayErrorMsg(result) {
|
|
stopNotice();
|
|
notice.innerHTML += "<span style='color:red;'>" + $_LANG["fail"] + "</span>" + lf + lf;
|
|
|
|
notice.innerHTML += "<strong style='color:red'>" + result + "</strong>";
|
|
}
|
|
|