1113 lines
33 KiB
JavaScript
1113 lines
33 KiB
JavaScript
var TOOLS = {
|
||
charset: 'utf-8',
|
||
getcookie: function (name) {
|
||
var cookie_start = document.cookie.indexOf(name);
|
||
var cookie_end = document.cookie.indexOf(";", cookie_start);
|
||
return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
|
||
},
|
||
isWX: function () {
|
||
return /micromessenger/.test(navigator.userAgent.toLowerCase()) || typeof WeixinJSBridge !== 'undefined' ? true : false;
|
||
},
|
||
isMQ: function () {
|
||
return mqq && mqq.device && mqq.device.isMobileQQ() ? true : false;
|
||
},
|
||
isQQBrowser: function () {
|
||
return /mqqbrowser/.test(navigator.userAgent.toLowerCase());
|
||
},
|
||
setcookie: function (cookieName, cookieValue, seconds, path, domain, secure) {
|
||
var expires = new Date();
|
||
expires.setTime(expires.getTime() + seconds);
|
||
document.cookie = escape(cookieName) + '=' + escape(cookieValue)
|
||
+ (expires ? '; expires=' + expires.toGMTString() : '')
|
||
+ (path ? '; path=' + path : '; path=/')
|
||
+ (domain ? '; domain=' + domain : '')
|
||
+ (secure ? '; secure' : '');
|
||
},
|
||
getQuery: function (key) {
|
||
var search = window.location.search;
|
||
if (search.indexOf('?') != -1) {
|
||
var params = search.substr(1).split('&');
|
||
var query = {};
|
||
var q = [];
|
||
var name = '';
|
||
|
||
for (i = 0; i < params.length; i++) {
|
||
q = params[i].split('=');
|
||
name = decodeURIComponent(q[0]);
|
||
|
||
if (name.substr(-2) == '[]') {
|
||
if (!query[name]) {
|
||
query[name] = [];
|
||
}
|
||
query[name].push(q[1]);
|
||
} else {
|
||
query[name] = q[1];
|
||
}
|
||
|
||
}
|
||
if (key) {
|
||
if (query[key]) {
|
||
return query[key];
|
||
}
|
||
|
||
return null;
|
||
} else {
|
||
return query;
|
||
}
|
||
}
|
||
},
|
||
trim: function (str) {
|
||
return str.replace(/(^\s*)|(\s*$)/g, '');
|
||
},
|
||
isObjectEmpty: function (obj) {
|
||
for (i in obj) {
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
strlen: function (str) {
|
||
return (/msie/.test(navigator.userAgent.toLowerCase()) && str.indexOf('\n') !== -1) ? str.replace(/\r?\n/g, '_').length : str.length;
|
||
},
|
||
mb_strlen: function (str) {
|
||
if (typeof str === 'undefined') {
|
||
return 0;
|
||
}
|
||
var len = 0;
|
||
for (var i = 0; i < str.length; i++) {
|
||
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (TOOLS.charset.toLowerCase() === 'utf-8' ? 3 : 2) : 1;
|
||
}
|
||
return len;
|
||
},
|
||
mb_cutstr: function (str, maxlen, dot) {
|
||
var len = 0;
|
||
var ret = '';
|
||
var dot = !dot && dot !== '' ? '...' : dot;
|
||
maxlen = maxlen - dot.length;
|
||
for (var i = 0; i < str.length; i++) {
|
||
len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (TOOLS.charset.toLowerCase() === 'utf-8' ? 3 : 2) : 1;
|
||
if (len > maxlen) {
|
||
ret += dot;
|
||
break;
|
||
}
|
||
ret += str.substr(i, 1);
|
||
}
|
||
return ret;
|
||
},
|
||
strLenCalc: function (obj, showId, maxlen) {
|
||
if (typeof obj === 'undefined') {
|
||
return 0;
|
||
}
|
||
var v = obj.value, maxlen = !maxlen ? 200 : maxlen, curlen = maxlen, len = TOOLS.strlen(v);
|
||
for (var i = 0; i < v.length; i++) {
|
||
if (v.charCodeAt(i) < 0 || v.charCodeAt(i) > 127) {
|
||
curlen -= 2;
|
||
} else {
|
||
curlen -= 1;
|
||
}
|
||
}
|
||
jQuery('#' + showId).html(Math.floor(curlen / 2));
|
||
},
|
||
htmlEncode: function (text) {
|
||
return text.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
||
},
|
||
htmlDecode: function (text) {
|
||
return text.replace(/&/g, '&').replace(/"/g, '/"').replace(/</g, '<').replace(/>/g, '>');
|
||
},
|
||
dialog: function (opts) {
|
||
var opts = opts || {};
|
||
var dId = opts.id || 'tips';
|
||
var dialogId = 'fwin_dialog_' + dId;
|
||
var maskId = 'fwin_mask_' + dId;
|
||
|
||
if (!opts.content) {
|
||
document.ontouchmove = function (e) {
|
||
return true;
|
||
};
|
||
jQuery('#' + dialogId).remove();
|
||
jQuery('#' + maskId).remove();
|
||
return false;
|
||
}
|
||
|
||
var title = opts.title || '提示信息';
|
||
var content = opts.content || '';
|
||
|
||
var btnOk = opts.okValue || false;
|
||
var btnCancel = opts.cancelValue || false;
|
||
|
||
var isShowMask = opts.isMask || false;
|
||
|
||
var existDialogCount = jQuery('div[id^="fwin_dialog_"]').length || 0;
|
||
var maskZIndex = 10000 + existDialogCount * 10;
|
||
var dialogZIndex = maskZIndex + 1;
|
||
|
||
var maskStyle = 'position:absolute;top:-0px;left:-0px;width:' + jQuery(document).width() + 'px;height:' + jQuery(document).height() + 'px;background:#000;filter:alpha(opacity=60);opacity:0.5; z-index:' + maskZIndex + ';';
|
||
|
||
var isHtml = opts.isHtml || false;
|
||
|
||
var autoClose = opts.autoClose || false;
|
||
|
||
var isConfirm = opts.isConfirm || false;
|
||
|
||
var iconClass = '';
|
||
switch (opts.icon) {
|
||
case 'success':
|
||
iconClass = 'icon_success';
|
||
break;
|
||
case 'none':
|
||
iconClass = '';
|
||
break;
|
||
case 'error':
|
||
default:
|
||
iconClass = 'g-layer-tips';
|
||
break;
|
||
}
|
||
|
||
var dialogHtmlArr = [];
|
||
if (isShowMask) {
|
||
var dialogMaskHtmlArr = [];
|
||
dialogMaskHtmlArr.push('<div id=' + maskId + ' class="g-mask" style="' + maskStyle + '"></div>');
|
||
var dialogMaskHtml = dialogMaskHtmlArr.join('');
|
||
jQuery(dialogMaskHtml).appendTo('body');
|
||
document.ontouchmove = function (e) {
|
||
e.preventDefault();
|
||
};
|
||
}
|
||
|
||
if (isHtml) {
|
||
dialogHtmlArr.push('<div style="min-width:350px;position:fixed;z-index:' + dialogZIndex + ';" id="' + dialogId + '"><span class="close"></span>');
|
||
dialogHtmlArr.push('<div class="popLayer pSpace" style="width:80%">');
|
||
dialogHtmlArr.push('<p class="editArea">' + content + '</p></div></div>');
|
||
} else {
|
||
if (!opts.title && !btnOk && !btnCancel) {
|
||
dialogHtmlArr.push('<div class="tips" style="position:fixed;z-index:' + dialogZIndex + ';" id="' + dialogId + '">');
|
||
if (dId == 'loading') {
|
||
dialogHtmlArr.push('<div class="loadInco tipL" style="vertical-align: -5px;"><span class="blockG" id="rotateG_01"></span><span class="blockG" id="rotateG_02"></span><span class="blockG" id="rotateG_03"></span><span class="blockG" id="rotateG_04"></span><span class="blockG" id="rotateG_05"></span><span class="blockG" id="rotateG_06"></span><span class="blockG" id="rotateG_07"></span><span class="blockG" id="rotateG_08"></span></div> ');
|
||
}
|
||
dialogHtmlArr.push(content + '</div>');
|
||
} else if (isConfirm) {
|
||
if (confirm(content)) {
|
||
if (typeof opts.ok == 'function') {
|
||
opts.ok();
|
||
}
|
||
|
||
} else {
|
||
if (typeof opts.cancel == 'function') {
|
||
opts.cancel();
|
||
}
|
||
}
|
||
return true;
|
||
} else {
|
||
dialogHtmlArr.push('<div style="min-width:350px;position:fixed;z-index:' + dialogZIndex + ';" id="' + dialogId + '"><span class="close"></span>');
|
||
dialogHtmlArr.push('<div class="popLayer pSpace" style="width:80%">');
|
||
dialogHtmlArr.push('<p class="editTCon">' + content + '</p>');
|
||
dialogHtmlArr.push('<div class="editArea">');
|
||
dialogHtmlArr.push(btnOk ? '<a href="javascript:;" class="editBtn1 db" title="">' + btnOk + '</a>' : '');
|
||
dialogHtmlArr.push(btnCancel ? '<a href="javascript:;" class="editBtn2 db" title="">' + btnCancel + '</a>' : '');
|
||
dialogHtmlArr.push('</div></div>');
|
||
}
|
||
}
|
||
var dialogHtml = dialogHtmlArr.join('');
|
||
if (jQuery('#' + dialogId)[0]) {
|
||
jQuery('#' + dialogId).remove();
|
||
jQuery('#' + maskId).remove();
|
||
}
|
||
jQuery(dialogHtml).appendTo('body');
|
||
|
||
var clientWidth = jQuery(window).width();
|
||
var clientHeight = jQuery(window).height();
|
||
dialogLeft = (clientWidth - jQuery('#' + dialogId).outerWidth()) / 2;
|
||
dialogTop = (clientHeight - jQuery('#' + dialogId).height()) * 0.382;
|
||
|
||
var dialogLeft = opts.left || dialogLeft;
|
||
var dialogTop = opts.top || dialogTop;
|
||
|
||
jQuery("#" + dialogId).css({"top": dialogTop + "px", "left": dialogLeft + "px"});
|
||
|
||
jQuery('#' + dialogId + ' .close').click(function () {
|
||
if (isShowMask) {
|
||
document.ontouchmove = function (e) {
|
||
return true;
|
||
};
|
||
}
|
||
var closeCBResult = true;
|
||
if (typeof opts.close == 'function') {
|
||
closeCBResult = opts.close();
|
||
}
|
||
if (closeCBResult) {
|
||
jQuery('#' + maskId).hide();
|
||
jQuery('#' + maskId).remove();
|
||
jQuery('#' + dialogId).hide();
|
||
jQuery('#' + dialogId).remove();
|
||
}
|
||
});
|
||
if (typeof opts.callback == 'function') {
|
||
if (isShowMask) {
|
||
document.ontouchmove = function (e) {
|
||
e.preventDefault();
|
||
};
|
||
}
|
||
opts.callback();
|
||
}
|
||
|
||
if (typeof opts.ok == 'function') {
|
||
jQuery('#' + dialogId + ' .editBtn1').click(function () {
|
||
opts.ok();
|
||
});
|
||
}
|
||
|
||
if (typeof opts.cancel == 'function') {
|
||
jQuery('#' + dialogId + ' .editBtn2').click(function () {
|
||
opts.cancel();
|
||
});
|
||
}
|
||
|
||
if (jQuery('#' + dialogId + ' .editBtn1')[0]) {
|
||
jQuery('#' + dialogId + ' .editBtn1').click(function () {
|
||
jQuery('#' + dialogId + ' .close').click();
|
||
});
|
||
}
|
||
if (jQuery('#' + dialogId + ' .editBtn2')[0]) {
|
||
jQuery('#' + dialogId + ' .editBtn2').click(function () {
|
||
jQuery('#' + dialogId + ' .close').click();
|
||
});
|
||
}
|
||
|
||
if (!opts.title && !btnOk && !btnCancel && autoClose) {
|
||
autoClose = autoClose > 1 ? autoClose : 1000;
|
||
setTimeout(function () {
|
||
jQuery('#' + dialogId).fadeOut('slow', function () {
|
||
jQuery('#' + maskId).hide();
|
||
jQuery('#' + maskId).remove();
|
||
jQuery('#' + dialogId).hide();
|
||
jQuery('#' + dialogId).remove();
|
||
if (typeof opts.close == 'function') {
|
||
opts.close();
|
||
}
|
||
});
|
||
}, autoClose);
|
||
}
|
||
},
|
||
hideDialog: function (opts) {
|
||
var opts = opts || {};
|
||
var dId = opts.id || 'tips';
|
||
var dialogId = 'fwin_dialog_' + dId;
|
||
var maskId = 'fwin_mask_' + dId;
|
||
|
||
jQuery('#' + maskId).hide();
|
||
jQuery('#' + maskId).remove();
|
||
jQuery('#' + dialogId).hide();
|
||
jQuery('#' + dialogId).remove();
|
||
},
|
||
showLoading: function (display, waiting, autoClose) {
|
||
var display = display || 'block';
|
||
var autoClose = autoClose || false;
|
||
waiting = waiting || '正在加载...';
|
||
if (display == 'block') {
|
||
TOOLS.dialog({id: 'loading', content: waiting, noMask: true, autoClose: autoClose});
|
||
} else {
|
||
TOOLS.dialog({id: 'loading'});
|
||
}
|
||
},
|
||
hideLoading: function () {
|
||
TOOLS.hideDialog({id: 'loading'});
|
||
},
|
||
showTips: function (content, autoClose, display) {
|
||
var display = display || 'block';
|
||
var autoClose = autoClose || false;
|
||
if (display == 'block') {
|
||
TOOLS.dialog({content: content, noMask: true, autoClose: autoClose});
|
||
} else {
|
||
TOOLS.dialog();
|
||
}
|
||
},
|
||
hideTips: function () {
|
||
TOOLS.hideDialog();
|
||
},
|
||
timerId: false,
|
||
initTouch: function (opts) {
|
||
var obj = opts.obj || document;
|
||
var startX, startY, endX, endY, moveTouch;
|
||
function touchStart(event) {
|
||
var touch = event.touches[0];
|
||
startY = touch.pageY;
|
||
startX = touch.pageX;
|
||
endX = touch.pageX;
|
||
endY = touch.pageY;
|
||
if (typeof opts.start == 'function') {
|
||
opts.start(event);
|
||
}
|
||
}
|
||
|
||
function touchMove(event) {
|
||
window.clearInterval(TOOLS.timerId);
|
||
touch = event.touches[0];
|
||
endX = touch.pageX;
|
||
endY = touch.pageY;
|
||
if (document.body.scrollTop <= 0 && (startY - endY) <= 0 && jQuery.os.ios) {
|
||
event.preventDefault();
|
||
}
|
||
if (typeof opts.move == 'function') {
|
||
var offset = {x: startX - endX, y: startY - endY};
|
||
opts.move(event, offset);
|
||
}
|
||
if (!jQuery.os.ios) {
|
||
TOOLS.timerId = window.setTimeout(function () {
|
||
touchEnd();
|
||
}, 50);
|
||
}
|
||
}
|
||
function touchEnd(event) {
|
||
if (typeof opts.end == 'function') {
|
||
var offset = {x: startX - endX, y: startY - endY};
|
||
opts.end(event, offset);
|
||
}
|
||
}
|
||
|
||
obj.addEventListener('touchstart', touchStart, false);
|
||
obj.addEventListener('touchmove', touchMove, false);
|
||
if (jQuery.os.ios) {
|
||
obj.addEventListener('touchend', touchEnd, false);
|
||
}
|
||
},
|
||
openNewPage: function (openUrl) {
|
||
location.href = openUrl;
|
||
},
|
||
openLoginPage: function (openUrl, limit) {
|
||
if(limit){
|
||
setTimeout(function () {
|
||
TOOLS.openNewPage('?a=login&referer=' + encodeURIComponent( openUrl ));
|
||
}, limit);
|
||
}else{
|
||
TOOLS.openNewPage('?a=login&referer=' + encodeURIComponent( openUrl ));
|
||
}
|
||
},
|
||
pageBack: function (url) {
|
||
var url = url || '';
|
||
var selfReferrer = document.referrer.indexOf(SITE_INFO.siteUrl) === 0;
|
||
if (TOOLS.getQuery("_close") && window.parent) {
|
||
window.parent.postMessage("close", "*");
|
||
} else if ((selfReferrer || !url) && !TOOLS.getQuery("_backurl")) {
|
||
history.go(-1);
|
||
} else {
|
||
TOOLS.openNewPage(url);
|
||
}
|
||
},
|
||
transformBase: function (count, power, fixed) {
|
||
if (count < 10000 || !power || power <= 0) {
|
||
return count;
|
||
} else if (power < 1) {
|
||
power = 1;
|
||
} else if (power > 5) {
|
||
power = 4;
|
||
}
|
||
var unit = ["", "十", "百", "千", "万"];
|
||
var v = count / Math.pow(10, power);
|
||
if (fixed == undefined) {
|
||
fixed = 0;
|
||
}
|
||
return v.toFixed(fixed) + unit[power];
|
||
},
|
||
getCacheData: function (key) {
|
||
var newkey = key + "_" + SITE_ID;
|
||
var data = localStorage.getItem(newkey);
|
||
if (data) {
|
||
var t = localStorage.getItem(newkey + "time");
|
||
if (parseInt(t) >= (new Date()).getTime()) {
|
||
|
||
switch (localStorage.getItem(newkey + "type")) {
|
||
case "number":
|
||
data = parseInt(data);
|
||
break;
|
||
case "boolean":
|
||
data = Boolean(data);
|
||
break;
|
||
}
|
||
return data;
|
||
}
|
||
TOOLS.removeCacheData(key);
|
||
}
|
||
return null;
|
||
},
|
||
setCacheData: function (key, data, time) {
|
||
TOOLS.removeCacheData(key);
|
||
var newkey = key + "_" + SITE_ID;
|
||
var i = 2;
|
||
while (i--) {
|
||
try {
|
||
localStorage.setItem(newkey, data.toString());
|
||
localStorage.setItem(newkey + "type", typeof (data));
|
||
localStorage.setItem(newkey + "time", ((new Date()).getTime() + time).toString());
|
||
break;
|
||
} catch (err) {
|
||
if (err.name == 'QuotaExceededError') {
|
||
localStorage.clear();
|
||
}
|
||
}
|
||
}
|
||
},
|
||
getCacheJSon: function (key) {
|
||
var jsonString = TOOLS.getCacheData(key);
|
||
if (jsonString) {
|
||
return $.parseJSON(jsonString);
|
||
}
|
||
return null;
|
||
},
|
||
setCacheJSon: function (key, json, time) {
|
||
TOOLS.setCacheData(key, JSON.stringify(json), time);
|
||
},
|
||
removeCacheData: function (key) {
|
||
var newkey = key + "_" + SITE_ID;
|
||
localStorage.removeItem(newkey);
|
||
localStorage.removeItem(newkey + "type");
|
||
localStorage.removeItem(newkey + "time");
|
||
},
|
||
getParamFilter: function () {
|
||
var filterParams = "";
|
||
var url = window.location.href;
|
||
var filter = ['a', 'c', 'f', 'source', 'fid', 'tid'];
|
||
|
||
if (url.indexOf('?') == -1) {
|
||
return "";
|
||
}
|
||
|
||
var getParams = url.split('?')[1].split('&');
|
||
for (var i in getParams) {
|
||
|
||
var j;
|
||
var paramKey = getParams[i].split('=')[0];
|
||
for (j = 0; j < filter.length && filter[j] != paramKey; j++)
|
||
;
|
||
if (j < filter.length) {
|
||
continue;
|
||
}
|
||
filterParams += (filterParams == "" ? "" : "&") + getParams[i];
|
||
}
|
||
return filterParams;
|
||
},
|
||
getJsAuth: function () {
|
||
var url = '';
|
||
if (INFO_LOADED && !TOOLS.checkInfo.data.testcookie) {
|
||
jsauth = TOOLS.getcookie('jsauth');
|
||
if (jsauth) {
|
||
url += "&_auth=" + encodeURIComponent(jsauth);
|
||
}
|
||
}
|
||
return url;
|
||
},
|
||
dget: function (url, data, func, errorfunc, contentType, report, appendauth) {
|
||
if (!INFO_LOADED) {
|
||
setTimeout(function () {
|
||
TOOLS.dget(url, data, func, errorfunc, contentType, report, appendauth);
|
||
}, 100);
|
||
return;
|
||
}
|
||
if (typeof appendauth === 'undefined') {
|
||
var appendauth = true;
|
||
}
|
||
var isLogin = url.indexOf('&ac=wxlogin&') > -1;
|
||
if (!isLogin) {
|
||
if (report) {
|
||
url += "&from=wx";
|
||
} else {
|
||
url += "&mapifrom=wx&charset=utf-8";
|
||
url += "&" + TOOLS.getParamFilter();
|
||
}
|
||
if (appendauth) {
|
||
url += TOOLS.getJsAuth();
|
||
}
|
||
}
|
||
TOOLS.dajax('GET', url, data, func, errorfunc, contentType || 'text/plain');
|
||
},
|
||
dpost: function (url, data, func, errorfunc, contentType, appendauth) {
|
||
if (!INFO_LOADED) {
|
||
setTimeout(function () {
|
||
TOOLS.dpost(url, data, func, errorfunc, contentType, appendauth);
|
||
}, 100);
|
||
return;
|
||
}
|
||
if (typeof appendauth === 'undefined') {
|
||
var appendauth = true;
|
||
}
|
||
url += "&mapifrom=wx&charset=utf-8";
|
||
url += "&" + TOOLS.getParamFilter();
|
||
if (appendauth) {
|
||
url += TOOLS.getJsAuth();
|
||
}
|
||
TOOLS.dajax('POST', url, data, func, errorfunc, contentType || 'application/x-www-form-urlencoded');
|
||
},
|
||
dajax: function (method, url, data, func, errorfunc, contentType) {
|
||
jQuery.ajax({
|
||
type: method,
|
||
url: url,
|
||
contentType: contentType,
|
||
data: data,
|
||
xhrFields: {
|
||
withCredentials: true
|
||
},
|
||
headers: {
|
||
},
|
||
success: function (data) {
|
||
|
||
var sys_error = data.error || '';
|
||
if (sys_error !== '') {
|
||
if (typeof errorfunc === 'function') {
|
||
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
|
||
if (sys_error === 'mobile_is_closed') {
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />该社区未启用手机版');
|
||
} else {
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />接口错误(ERR01)');
|
||
}
|
||
} else {
|
||
return;
|
||
}
|
||
}
|
||
|
||
var message = data.Message;
|
||
if (message && message.messageval.indexOf('_succeed') < 0 && message.messageval.indexOf('_succed') < 0 && message.messageval.indexOf('_completion') < 0 && typeof errorfunc === 'function') {
|
||
errorfunc(message, data);
|
||
return;
|
||
}
|
||
|
||
if (typeof func === 'function') {
|
||
TOOLS.parseStyle(data);
|
||
TOOLS.parseFunc(data);
|
||
func(data);
|
||
}
|
||
},
|
||
error: function (data) {
|
||
re = /^[^\{]*?(\{.*?\})[^\}]*?$/;
|
||
var matches = re.exec(data.responseText);
|
||
if (matches != null) {
|
||
try {
|
||
var data = jQuery.parseJSON(matches[1]);
|
||
} catch (e) {
|
||
var data = false;
|
||
}
|
||
if (data) {
|
||
this.success(data);
|
||
return;
|
||
}
|
||
}
|
||
if (typeof errorfunc === 'function') {
|
||
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />接口错误(ERR02)');
|
||
TOOLS.hideLoading();
|
||
}
|
||
}
|
||
});
|
||
},
|
||
shareToQQ: function (siteName, summary, title, imageUrl, targetUrl, page_url, nobar, pagetitle, appCallback) {
|
||
var url = "http://mq.wsq.qq.com/shareDirect?";
|
||
url += "site=" + encodeURIComponent(siteName);
|
||
url += "&title=" + encodeURIComponent(title);
|
||
url += "&summary=" + encodeURIComponent(summary);
|
||
url += "&targetUrl=" + encodeURIComponent(targetUrl);
|
||
url += "&pageUrl=" + encodeURIComponent(page_url);
|
||
url += "&imageUrl=" + encodeURIComponent(imageUrl);
|
||
window.location.href = url;
|
||
},
|
||
showError: function (selector, description, clickEvent) {
|
||
var errorDiv = document.createElement("div");
|
||
errorDiv.className = "errorInfo";
|
||
var errorI = document.createElement("i");
|
||
errorI.className = "eInco db spr";
|
||
var errorP = document.createElement("p");
|
||
errorP.innerHTML = description;
|
||
errorDiv.appendChild(errorI);
|
||
errorDiv.appendChild(errorP);
|
||
$(selector).html(errorDiv);
|
||
|
||
|
||
if (typeof (clickEvent) == 'function') {
|
||
$('.errorInfo').on('click', clickEvent);
|
||
}
|
||
},
|
||
checkInfo: {
|
||
data: null,
|
||
getChecking: false,
|
||
getCheckHandle: [],
|
||
get: function () {
|
||
TOOLS.checkInfo.getChecking = true;
|
||
if (JC.VERSION == localStorage.getItem(JC.KEYPREFIX + "checkinfoversion")) {
|
||
data = localStorage.getItem(JC.KEYPREFIX + 'checkinfo') || null;
|
||
if (typeof (data) == "string") {
|
||
data = jQuery.parseJSON(data);
|
||
}
|
||
TOOLS.checkInfo.data = data;
|
||
}
|
||
},
|
||
load: function () {
|
||
data = {
|
||
'siteid': 0,
|
||
'time': ((new Date()).getTime() + 600000).toString()
|
||
};
|
||
var t = +(new Date());
|
||
TOOLS.dajax('GET', API_URL + 'module=check&version=4&_t=' + t, null, function (re) {
|
||
if (typeof (re) == "string") {
|
||
try {
|
||
re = jQuery.parseJSON(re);
|
||
} catch (e) {
|
||
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />接口错误(ERR03)');
|
||
TOOLS.hideLoading();
|
||
return;
|
||
}
|
||
}
|
||
data.ucenterurl = re.ucenterurl ? re.ucenterurl : '';
|
||
data.discuzversion = re.discuzversion ? re.discuzversion : '';
|
||
data.pluginversion = re.pluginversion ? re.pluginversion : '';
|
||
data.regname = re.regname ? re.regname : '';
|
||
data.qqconnect = re.qqconnect ? re.qqconnect : '';
|
||
data.wsqqqconnect = re.wsqqqconnect ? re.wsqqqconnect : '';
|
||
data.wsqhideregister = re.wsqhideregister ? re.wsqhideregister : '';
|
||
data.defaultfid = re.defaultfid ? re.defaultfid : '';
|
||
data.disableforumlist = re.disableforumlist ? re.disableforumlist : '';
|
||
data.totalposts = re.totalposts ? re.totalposts : '';
|
||
data.totalmembers = re.totalmembers ? re.totalmembers : '';
|
||
if (jQuery.os.ios) {
|
||
data.testcookie = false;
|
||
} else {
|
||
if (typeof re.testcookie != 'undefined') {
|
||
data.testcookie = !TOOLS.checkCookie() ? true : (re.testcookie ? true : false);
|
||
} else {
|
||
data.testcookie = true;
|
||
}
|
||
}
|
||
if (!data.defaultfid && !data.totalmembers) {
|
||
TOOLS.dajax('GET', API_URL + 'module=wsqindex&version=4&_t=' + t, null, function (re) {
|
||
if (typeof (re) === "string") {
|
||
try {
|
||
re = jQuery.parseJSON(re);
|
||
} catch (e) {
|
||
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />接口错误(ERR04)');
|
||
TOOLS.hideLoading();
|
||
return;
|
||
}
|
||
}
|
||
data.defaultfid = re.Variables.forum.fid;
|
||
data.totalposts = re.Variables.stats.totalposts;
|
||
data.totalmembers = re.Variables.stats.totalmembers;
|
||
TOOLS.checkInfo.data = data;
|
||
localStorage.setItem(JC.KEYPREFIX + 'checkinfo', JSON.stringify(data));
|
||
localStorage.setItem(JC.KEYPREFIX + "checkinfoversion", JC.VERSION);
|
||
TOOLS.checkInfo.handle();
|
||
});
|
||
} else {
|
||
TOOLS.checkInfo.data = data;
|
||
localStorage.setItem(JC.KEYPREFIX + 'checkinfo', JSON.stringify(data));
|
||
localStorage.setItem(JC.KEYPREFIX + "checkinfoversion", JC.VERSION);
|
||
TOOLS.checkInfo.handle();
|
||
}
|
||
},
|
||
null,
|
||
'text/plain');
|
||
},
|
||
handle: function () {
|
||
TOOLS.checkInfo.getChecking = false;
|
||
INFO_LOADED = true;
|
||
for (i in TOOLS.checkInfo.getCheckHandle) {
|
||
func = TOOLS.checkInfo.getCheckHandle[i];
|
||
if (func && typeof func === 'function') {
|
||
func(TOOLS.checkInfo.data);
|
||
}
|
||
}
|
||
TOOLS.checkInfo.getCheckHandle = [];
|
||
}
|
||
},
|
||
getCheckInfo: function (func) {
|
||
var func = func || null;
|
||
if (func) {
|
||
TOOLS.checkInfo.getCheckHandle.push(func);
|
||
}
|
||
if (TOOLS.checkInfo.getChecking) {
|
||
return;
|
||
}
|
||
TOOLS.checkInfo.get();
|
||
var t = +(new Date());
|
||
if (TOOLS.checkInfo.data === null || parseInt(TOOLS.checkInfo.data.time) < t) {
|
||
if (TOOLS.checkCookie()) {
|
||
jQuery.ajax({type: 'GET', url: API_URL + 'module=checkcookie&version=4&_t=' + t, contentType: 'application/x-www-form-urlencoded', xhrFields: {withCredentials: true},
|
||
success: function (data) {
|
||
TOOLS.checkInfo.load();
|
||
},
|
||
error: function (data) {
|
||
re = /^.*?(\[\]).*?$/;
|
||
var matches = re.exec(data.responseText);
|
||
if (matches != null) {
|
||
TOOLS.checkInfo.load();
|
||
} else {
|
||
var siteName = typeof SITE_INFO.siteName !== 'undefined' ? SITE_INFO.siteName : '微社区';
|
||
TOOLS.showError('.warp', '您请求的' + siteName + '无法访问<br /><br />接口错误(ERR05)');
|
||
TOOLS.hideLoading();
|
||
}
|
||
}
|
||
});
|
||
} else {
|
||
TOOLS.checkInfo.load();
|
||
}
|
||
} else {
|
||
TOOLS.checkInfo.handle();
|
||
}
|
||
},
|
||
checkCookie: function () {
|
||
return true;
|
||
},
|
||
in_array: function (search, array) {
|
||
for (var i in array) {
|
||
if (array[i] == search) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
hook: function (data, hookname, shownum, replace) {
|
||
if (!data.pluginVariables) {
|
||
return null;
|
||
}
|
||
if (typeof data.pluginVariables[hookname] === 'undefined') {
|
||
return null;
|
||
}
|
||
var shownum = shownum || 0;
|
||
var replace = replace || 0;
|
||
var ret = null;
|
||
i = 0;
|
||
for (plugin in data.pluginVariables[hookname]) {
|
||
if (typeof data.pluginVariables[hookname][plugin] === 'string') {
|
||
if (ret === null) {
|
||
var ret = '';
|
||
}
|
||
var v = data.pluginVariables[hookname][plugin];
|
||
if (v !== '') {
|
||
if (!replace) {
|
||
ret += v;
|
||
} else {
|
||
ret = v;
|
||
}
|
||
i++;
|
||
}
|
||
} else {
|
||
if (ret === null) {
|
||
var ret = [];
|
||
}
|
||
for (order in data.pluginVariables[hookname][plugin]) {
|
||
var rtype = typeof ret[order];
|
||
var vtype = typeof data.pluginVariables[hookname][plugin][order];
|
||
var v = data.pluginVariables[hookname][plugin][order];
|
||
if (v !== '') {
|
||
if (vtype !== 'undefined') {
|
||
if (!replace) {
|
||
if (vtype === 'string') {
|
||
if (rtype === 'undefined') {
|
||
ret[order] = v;
|
||
} else {
|
||
ret[order] += v;
|
||
}
|
||
} else if (vtype === 'object') {
|
||
ret.push(v);
|
||
}
|
||
} else {
|
||
ret[order] = v;
|
||
}
|
||
}
|
||
i++;
|
||
}
|
||
}
|
||
}
|
||
if (shownum > 0 && i >= shownum) {
|
||
break;
|
||
}
|
||
}
|
||
return ret;
|
||
},
|
||
stripCode: function (s, page, styleClass, disableWord) {
|
||
if (!s) {
|
||
return s;
|
||
}
|
||
var page = page || 0;
|
||
var styleClass = styleClass || '';
|
||
var regs = [/<script.*?>([\s\S]*?)<\/script>/ig, /<link.*?>/ig,
|
||
/<title.*?>([\s\S]*?)<\/title>/ig, /<base.*?>/ig, /<meta.*?>/ig,
|
||
/<head.*?>([\s\S]*?)<\/head>/ig, /<body.*?>([\s\S]*?)<\/body>/ig, /<object.*?>([\s\S]*?)<\/object>/ig,
|
||
/<applet.*?>([\s\S]*?)<\/applet>/ig, /<embed.*?>([\s\S]*?)<\/embed>/ig, /<basefont.*?>/ig,
|
||
/<canvas.*?>([\s\S]*?)<\/canvas>/ig, /<audio.*?>([\s\S]*?)<\/audio>/ig, /<frame.*?>([\s\S]*?)<\/frame>/ig,
|
||
/<frameset.*?>([\s\S]*?)<\/frameset>/ig];
|
||
if (!page) {
|
||
regs.push(/<iframe.*?>.*?<\/iframe>/ig);
|
||
}
|
||
if (!styleClass) {
|
||
regs.push(/<style.*?>([\s\S]*?)<\/style>/ig);
|
||
} else {
|
||
s = s.replace(/<style(.*?)>([\s\S]*?)<\/style>/ig, function ($0, $1, $2) {
|
||
$2 = $2.replace(/(.+?)\{([\s\S]*?)\}\s*/ig, function ($0, $1, $2) {
|
||
if ($1.indexOf(styleClass) !== 0 || disableWord && $1.search(disableWord) !== -1) {
|
||
return '';
|
||
} else {
|
||
return $0;
|
||
}
|
||
});
|
||
return '<style' + $1 + '>' + $2 + '</style>';
|
||
});
|
||
}
|
||
for (var i = regs.length - 1; i >= 0; i--) {
|
||
s = s.replace(regs[i], '');
|
||
}
|
||
s = s.replace(/%>/ig, '{%}')
|
||
.replace(/<[a-zA-Z]+[^>]*?on[a-zA-Z]+\s*?=\s*?([\'"])[^>]+?\1[^>]*?>/ig, function ($0) {
|
||
return $0.replace(/on[a-zA-Z]+\s*?=\s*?([\'"])[^>]+?\1/ig, '');
|
||
})
|
||
.replace(/\s*?([\'"])\s*?javascript\s*[^>]+?\1/ig, function ($0, $1) {
|
||
return $1 + 'javascript:;' + $1;
|
||
})
|
||
.replace(/<[a-zA-Z]+[^>]*?click=\s*?([\'"])([\(\);\w]+)\1[^>]*?>/ig, function ($0, $1, $2) {
|
||
return $0.replace(/click=\s*?([\'"])[^>]+?\1/ig, ' onclick="TOOLS.customFuncs.run(event, \'' + $2 + '\')" ');
|
||
})
|
||
.replace(/<wsqscript>([\s\S]+?)<\/wsqscript>/ig, function ($0, $1) {
|
||
TOOLS.customFuncs.run(event, $1, false);
|
||
return '';
|
||
})
|
||
.replace(/\{%\}/ig, '%>');
|
||
return s;
|
||
},
|
||
getoption: function (data, option) {
|
||
if (!data.Variables.options) {
|
||
return null;
|
||
} else if (data.Variables.options[option]) {
|
||
return data.Variables.options[option];
|
||
} else {
|
||
return null;
|
||
}
|
||
},
|
||
customFuncs: {
|
||
data: {},
|
||
handle: {
|
||
'WSQ.ajaxget': function (param) {
|
||
var url = API_URL + "module=plugin&version=4&" + param[0] + TOOLS.getJsAuth();
|
||
TOOLS.dajax('GET', url, null, function (re) {
|
||
if (param[1] && $('#' + param[1])) {
|
||
$('#' + param[1]).html(TOOLS.stripCode(re.Variables.html));
|
||
}
|
||
}, function (error) {
|
||
TOOLS.showTips(error.messagestr, 1000);
|
||
});
|
||
},
|
||
'WSQ.ajaxpost': function (param) {
|
||
var data = $(param[1]) ? $('#' + param[1]).serialize() : null;
|
||
var url = API_URL + "module=plugin&version=4&" + param[0] + TOOLS.getJsAuth();
|
||
TOOLS.dajax('POST', url, data, function (re) {
|
||
if (param[2] && $('#' + param[2])) {
|
||
$('#' + param[2]).html(TOOLS.stripCode(re.Variables.html));
|
||
}
|
||
}, function (error) {
|
||
TOOLS.showTips(error.messagestr, 1000);
|
||
});
|
||
},
|
||
'WSQ.show': function (param) {
|
||
$('#' + param[0]).show();
|
||
},
|
||
'WSQ.hide': function (param) {
|
||
$('#' + param[0]).hide();
|
||
},
|
||
'WSQ.tip': function (param) {
|
||
TOOLS.showTips(param[0], param[1] || 1000);
|
||
},
|
||
'WSQ.dialog': function (param) {
|
||
var opts = {
|
||
'id': param['id'],
|
||
'content': TOOLS.stripCode(param['content']),
|
||
'okValue': '确定',
|
||
'ok': param['ok'] ? function () {
|
||
TOOLS.customFuncs.run(event, param['ok']);
|
||
} : null,
|
||
'cancelValue': '取消',
|
||
'cancel': param['cancel'] ? function () {
|
||
TOOLS.customFuncs.run(event, param['cancel']);
|
||
} : null,
|
||
'isMask': param['mask'] || true
|
||
};
|
||
TOOLS.dialog(opts);
|
||
},
|
||
'WSQ.location': function (param) {
|
||
TOOLS.openNewPage(param[0]);
|
||
}
|
||
},
|
||
run: function (event, funcnames, stopEvent) {
|
||
var stopEvent = stopEvent || true;
|
||
var funcnames = funcnames.split(';');
|
||
for (i in funcnames) {
|
||
var sp = funcnames[i].split('(');
|
||
var name = TOOLS.trim(sp[0]);
|
||
if (!TOOLS.customFuncs.data[name]) {
|
||
continue;
|
||
}
|
||
var func = TOOLS.customFuncs.data[name][0];
|
||
var param = TOOLS.customFuncs.data[name][1];
|
||
var handle = TOOLS.customFuncs.handle[func];
|
||
if (!func || !param || !handle) {
|
||
continue;
|
||
}
|
||
handle(param);
|
||
}
|
||
if (stopEvent) {
|
||
event.stopPropagation();
|
||
}
|
||
}
|
||
},
|
||
parseFunc: function (data) {
|
||
try {
|
||
var func = data.Variables.function;
|
||
if (typeof func === 'undefined') {
|
||
return;
|
||
}
|
||
} catch (e) {
|
||
return;
|
||
}
|
||
for (funcname in func) {
|
||
TOOLS.customFuncs.data[funcname] = func[funcname];
|
||
}
|
||
},
|
||
parseStyle: function (data) {
|
||
try {
|
||
var style = data.Variables.style;
|
||
if (typeof style === 'undefined') {
|
||
return;
|
||
}
|
||
} catch (e) {
|
||
return;
|
||
}
|
||
var style = style.replace(/(.+?)\{([\s\S]*?)\}\s*/ig, function ($0, $1, $2) {
|
||
var allowclass = [
|
||
'background', 'color', 'box-shadow', 'border-left', 'border-top', 'border-right',
|
||
'border-bottom', 'border', 'border-radius', 'padding', 'margin', 'line-height',
|
||
'text-shadow', 'font-weight'
|
||
];
|
||
var values = $2.split(';');
|
||
var result = '';
|
||
for (i in values) {
|
||
var pos = values[i].indexOf(':');
|
||
if (pos === -1) {
|
||
continue;
|
||
}
|
||
var attr = values[i].substr(0, pos).toLowerCase();
|
||
var value = values[i].substr(pos + 1);
|
||
attr = attr.replace(/(^\s*)|(\s*$)/g, '');
|
||
if (TOOLS.in_array(attr, allowclass)) {
|
||
result += attr + ':' + value + ';';
|
||
}
|
||
}
|
||
return $1 + '{' + result + '}';
|
||
});
|
||
obj = document.createElement('style');
|
||
obj.type = 'text/css';
|
||
obj.innerHTML = style;
|
||
$('head').append(obj);
|
||
},
|
||
lazyLoad: function (rule) {
|
||
var rule = rule || 'img.lazy';
|
||
$(rule).lazyload({skip_invisible: false, threshold: 200, failurelimit: 100});
|
||
},
|
||
uploadCompatible: function (uploadbtn, msgObj) {
|
||
var msg = '';
|
||
if (jQuery.os.ios) {
|
||
if (jQuery.os.version.toString() < '6.0') {
|
||
msg = '手机系统不支持图片上传,请升级到iOS6以上';
|
||
}
|
||
}
|
||
if (msg) {
|
||
jq(msgObj).html(msg);
|
||
}
|
||
},
|
||
attachUrl: function (url) {
|
||
if (url.indexOf('http:/') != -1) {
|
||
return url;
|
||
} else {
|
||
return DOMAIN + url;
|
||
}
|
||
},
|
||
parsePost: function () {
|
||
$('a[ed2k]').each(function () {
|
||
var obj = $(this);
|
||
obj.attr('href', 'ed2k://' + unescape(obj.attr('ed2k')) + '/');
|
||
obj.html(unescape(decodeURIComponent(obj.html())));
|
||
obj.removeAttr('ed2k');
|
||
});
|
||
},
|
||
showPublicEvent: function () {
|
||
if (!SITE_INFO.settings || !SITE_INFO.settings.isbind) {
|
||
return;
|
||
}
|
||
var wsqUrl = 'http://api.wsq.qq.com/publicEvent?sId=' + SITE_ID + '&resType=json&isAjax=1&_=' + Math.random();
|
||
jQuery.ajax({type: 'get', url: wsqUrl, dataType: 'json', contentType: 'application/x-www-form-urlencoded', xhrFields: {withCredentials: false},
|
||
success: function (re) {
|
||
var status = parseInt(re.errCode);
|
||
if (status === 0) {
|
||
if (jQuery.isEmptyObject(re.data.event) && jQuery.isEmptyObject(re.data.ad)) {
|
||
return false;
|
||
}
|
||
var pEvent = re.data.event, ad = re.data.ad;
|
||
var showEvent = true;
|
||
if (!jQuery.isEmptyObject(re.data.ad)) {
|
||
if (re.data.hadJoin) {
|
||
if (Math.random() * 100 > 50) {
|
||
showEvent = false;
|
||
}
|
||
} else {
|
||
showEvent = false;
|
||
}
|
||
}
|
||
if (showEvent) {
|
||
if (!re.data.hadJoin) {
|
||
return false;
|
||
}
|
||
|
||
TC.load("common.htm");
|
||
html = template.render('publicEventTpl', {});
|
||
$('#headerbanner').append(html);
|
||
$('#headerbanner').show();
|
||
|
||
$('#pEventImg').attr('src', pEvent.peBanner);
|
||
if (pEvent.showJoinNum) {
|
||
$('#pEventNum').html(pEvent.peNum || 0);
|
||
} else {
|
||
$('#pEvent p').hide();
|
||
}
|
||
|
||
if (pEvent.peMethod == 2) {
|
||
var url = pEvent.peCustomUrl;
|
||
if (url.indexOf('?') == -1) {
|
||
url += '?';
|
||
} else {
|
||
url += '&';
|
||
}
|
||
url += 'showSId=' + SITE_ID;
|
||
} else {
|
||
var url = 'http://m.wsq.qq.com/' + pEvent.peClickUrl + '?peId=' + pEvent.peId + '&sId=' + SITE_ID;
|
||
}
|
||
} else {
|
||
$('#pEventImg').attr('src', ad.banner);
|
||
$('#pEvent p').hide();
|
||
var url = ad.url;
|
||
}
|
||
|
||
$('#pEvent').on('click', function () {
|
||
TOOLS.openNewPage(url);
|
||
return false;
|
||
}).slideDown();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
template.compile('error_tmpl', '<div class="errorInfo"> <i class="eInco db spr"></i> <P><%=title%></P> </div>');
|
||
jQuery.extend({
|
||
os: {
|
||
ios: false,
|
||
android: false,
|
||
version: false
|
||
}
|
||
});
|
||
|
||
template.helper('stripCode', function (s, page, styleClass, disableWord) {
|
||
return TOOLS.stripCode(s, page, styleClass, disableWord);
|
||
}); |