// ==UserScript==
// @name iZhihu
// @namespace https://github.com/unogz/izhihu
// @version 2.13.3
// @description 知乎插件
// @match http://www.zhihu.com/*
// @include http://www.zhihu.com/*
// @match https://www.zhihu.com/*
// @include https://www.zhihu.com/*
// @require http://cdn.staticfile.org/jquery/1.8.2/jquery.min.js
// @require http://cdn.staticfile.org/iCheck/1.0.1/icheck.min.js
// @resource jqUI_CSS http://cdn.staticfile.org/iCheck/1.0.1/skins/square/blue.css
// @resource ui-bg_icheck-skin_square_blue http://cdn.staticfile.org/iCheck/1.0.1/skins/square/blue.png
// @resource ui-bg_icheck-skin_square_blue2x http://cdn.staticfile.org/iCheck/1.0.1/skins/square/blue@2x.png
// @require http://cdn.staticfile.org/jqueryui/1.10.4/jquery-ui.min.js
// @require http://cdn.staticfile.org/purl/2.3.1/purl.min.js
// @require http://cdn.staticfile.org/underscore.js/1.6.0/underscore-min.js
// @grant GM_xmlHttpRequest
// @grant GM_addStyle
// @grant GM_getResourceText
// @grant GM_getResourceURL
// @icon https://raw.githubusercontent.com/unogz/izhihu/develop/misc/xpi-config/icon64.png
// @copyright 2015+, @钢盅郭子 @刘勇 @墨磊
// ==/UserScript==
var jqUI_CssSrc = GM_getResourceText("jqUI_CSS")
GM_addStyle (jqUI_CssSrc.replace('url(blue', 'url(http://cdn.staticfile.org/iCheck/1.0.1/skins/square/blue'));
var version='2.13.3';
var updateDate='2016-4-25';
if ( typeof unsafeWindow === "undefined") {
unsafeWindow = ( function () {
var dummyElem = document.createElement('p');
dummyElem.onclick=function(){return window;};
return dummyElem.onclick ();
} ) ();
}
//主入口
//$(function main(){
/**
* @class Utils 辅助类
*/
function utils(){
};
var cfgDefault = {
'comment_sidebar': true
, 'answer_orderByTime': false
, 'AuthorList':false
, 'ShowComment':true
, 'HomeLayout':false
, 'QuickFavo':true
, 'QuickFavoPinned':{}
, 'AuthorRear':false
, 'HomeNoti':false
, 'QuickBlock':false
, 'Noti7':true
, 'HomeFeedsColumns':false
, 'RightComment_AutoScrollPageWhenClosing':true
, 'TopNavAutoFold':false
};
/**
* 读取配置
*/
utils.getCfg = function(key){
if(!key)return false;
var cfg = $.extend(cfgDefault, this.getValue('izhihu',cfgDefault));
return key ? cfg[key] : cfg;
};
utils.setCfg = function(key,value){
if(!key)return;
var cfg = $.extend(cfgDefault, this.getValue('izhihu',cfgDefault));
cfg[key]=value;
this.setValue('izhihu',cfg);
};
/**
* 读取存储
*/
utils.getValue = function(key, defaultValue){
var v=unsafeWindow.localStorage[key];
if(v)
return JSON.parse(v);
else
return defaultValue;
};
/**
* 写入存储
*/
utils.setValue = function(key, value){
unsafeWindow.localStorage[key] = JSON.stringify(value);
};
/**
* 删除存储
*/
utils.deleteValue = function(key){
return delete unsafeWindow.localStorage[key];
};
utils.transferOldCfg=function(){
var oldHomeLayout = unsafeWindow.localStorage['izh_HomeLayout']
, oldAuthorList = unsafeWindow.localStorage['izh_AuthorList']
, oldShowComment = unsafeWindow.localStorage['izh_ShowComment']
, oldQuickFavo = unsafeWindow.localStorage['izh_QuickFavo']
, oldAuthorRear = unsafeWindow.localStorage['izh_AuthorRear']
, oldHomeNoti = unsafeWindow.localStorage['izh_HomeNoti']
;
if(oldHomeLayout){
izhHomeLayout=oldHomeLayout;
unsafeWindow.localStorage.removeItem('izh_HomeLayout');
this.setCfg('HomeLayout',izhHomeLayout);
}
if(oldAuthorList){
izhAuthorList=oldAuthorList;
unsafeWindow.localStorage.removeItem('izh_AuthorList');
this.setCfg('AuthorList',izhAuthorList);
}
if(oldShowComment){
izhRightComment=oldShowComment;
unsafeWindow.localStorage.removeItem('izh_ShowComment');
this.setCfg('ShowComment',izhRightComment);
}
if(oldQuickFavo){
izhQuickFavo=oldQuickFavo;
unsafeWindow.localStorage.removeItem('izh_QuickFavo');
this.setCfg('QuickFavo',izhQuickFavo);
}
if(oldAuthorRear){
izhAuthorRear=oldAuthorRear;
unsafeWindow.localStorage.removeItem('izh_AuthorRear');
this.setCfg('AuthorRear',izhAuthorRear);
}
if(oldHomeNoti){
izhHomeNoti=oldHomeNoti;
unsafeWindow.localStorage.removeItem('izh_HomeNoti');
this.setCfg('HomeNoti',izhHomeNoti);
}
};
/**
* @method formatStr
*
* 格式化字符串模版,支持2种格式:
*
* formatStr("i can speak {language} since i was {age}",{language:'javascript',age:10});
* formatStr("i can speak {0} since i was {1}",'javascript',10);
*
* 如果不希望被转义,则用两个括号,如: `formatStr("i can speak {0} since i was {{1}",'javascript',10);`
*
*/
utils.formatStr = function(tpl,obj){
obj = typeof obj === 'object' ? obj : Array.prototype.slice.call(arguments, 1);
return tpl.replace(/\{\{|\}\}|\{(\w+)\}/g, function (m, n){
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return obj[n];
});
};
utils.getParamInQuery=function(queryStr,paramName){
var param=paramName+'='
, start=queryStr.indexOf(param)+param.length
, end=queryStr.indexOf('&',start);
return end<start?queryStr.substring(start):queryStr.substring(start,end);
};
utils.observeDOMAttrModified = (function(){
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
eventListenerSupported = window.addEventListener;
return function(obj, callback){
if( MutationObserver ){
// define a new observer
var obs = new MutationObserver(function(mutations, observer){
if( mutations[0].type == 'attributes' )
callback(mutations[0]);
});
obs.observe( obj, { attributes:true });
}else if( eventListenerSupported ){
obj.addEventListener('DOMAttrModified', callback, false);
}
}
})();
utils.observeDOMNodeAdded = (function(){
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
eventListenerSupported = window.addEventListener;
return function(obj, callback){
if( MutationObserver ){
// define a new observer
var obs = new MutationObserver(function(mutations, observer){
mutations.forEach(function(mutation) {
callback(mutation);
});
});
obs.observe( obj, { childList:true });
}else if( eventListenerSupported ){
obj.addEventListener('DOMNodeInserted', callback, false);
}
}
})();
utils.RegexSrcPic = /src="[\s\S]+?.jpg"/g
//console.log((new Date()).getTime());
var $ = window.$;
var _ = this._;
var purl = window.purl||$.url;
//使用CasperJS的模拟用户操作: http://casperjs.org/api.html#client-utils
//var client = window.create();
var url = purl();
var page = url.segment(1);
var pageIs={}
, $win=$(window)
, _doc=window.document
, $body=$(_doc.body)
, _path=window.frameElement?window.frameElement.src.replace(/https?:\/\/www.zhihu.com/,''):url.data.attr['path']
, css=''
, $h=$('head')
, $s=$('<style>', { 'type': 'text/css' })
, iPathAnswers=_path.indexOf('/answers')
, iPathCollection=_path.indexOf('/collection')
;
pageIs.Home='/'==_path;
pageIs.Answer=0<_path.indexOf('/answer/');
pageIs.Question=!pageIs.Answer&&0==_path.indexOf('/question/');
pageIs.Answers=0<iPathAnswers&&_path.substr(iPathAnswers)=='/answers';
pageIs.Collection=0==iPathCollection;
pageIs.Debuts=0==_path.indexOf('/debuts/');
pageIs.MyCollection=0==_path.indexOf('/collections/mine');
pageIs.SettingsFilter=0==_path.indexOf('/settings/filter')
var i=0
, $user=$('.zu-top-nav-userinfo')//user_avater
, z=$user.length?$user.attr('href'):''
, $banner=$(document.body).children().first()
, $main=$('[role=main]')//main
, css_AuthorListItemA='padding:0 10px 0 0;'
, css_AuthorListItemA_name='padding:0 5px;'
;
window.iZhihu = {
$win:$win
, $body:$body
, $main:$main
, config:$.extend(cfgDefault, utils.getValue('izhihu',cfgDefault))
};
var izhHomeLayout = window.iZhihu.config['HomeLayout']
, izhAuthorList = window.iZhihu.config['AuthorList']
, izhRightComment = window.iZhihu.config['ShowComment']
, izhQuickFavo = window.iZhihu.config['QuickFavo']
, izhAuthorRear = window.iZhihu.config['AuthorRear']
, izhHomeNoti = window.iZhihu.config['HomeNoti']
, izhQuickBlock = window.iZhihu.config['QuickBlock']
, izhTopNavAutoFold = window.iZhihu.config['TopNavAutoFold']
;
utils.transferOldCfg();
$body.attr({
'izhHomeLayout' : izhHomeLayout?'1':''
, 'izhAuthorList' : izhAuthorList?'1':''
, 'izhRightComment' : izhRightComment?'1':''
, 'izhQuickFavo' : izhQuickFavo?'1':''
, 'izhAuthorRear' : izhAuthorRear?'1':''
, 'izhHomeNoti' : izhHomeNoti?'1':''
, 'izhQuickBlock' : izhQuickBlock?'1':''
, 'izhTopNavAutoFold' : izhTopNavAutoFold?'1':''
});
var _QuickBlock = new QuickBlock(window.iZhihu)
, _QuickFavo = new QuickFavo(window.iZhihu)
, _Comment = new Comment(window.iZhihu)
, _Noti7 = new Noti7(window.iZhihu)
, _Answer = new Answer(window.iZhihu)
, _SearchingList = new SearchingList(window.iZhihu)
, _TopNav = new TopNav(window.iZhihu)
;
css+=['.t_showframe{padding:10px 10px 10px 10px;background:#f0f0f0;border:1px solid #fff;box-shadow:2px 5px 15px #333;border-radius:10px;-moz-box-shadow:2px 5px 15px #333;-moz-border-radius:10px;-webkit-box-shadow:2px 5px 15px #333;-webkit-border-radius:10px}#iZhihu_rtjddiv{width:650px;height:437px}#iZhihu_setdiv{width:600px;height2:295px}.t_setdiv{padding-bottom:10px;background:#fcfcfc;width:100%;height:100%}.t_set_tb{font-family:"Lucida Sans Unicode","Lucida Grande",Sans-Serif !important;font-size:12px !important;text-shadow:none !important;border-collapse:collapse !important;margin:0 !important;line-height:120%}.t_set_tb thead td{background:#0080c0;color:#fff;border:none !important;padding:4px 8px 4px !important;border-radius-topleft:10px;border-radius-topright:10px;-moz-border-radius-topleft:10px;-moz-border-radius-topright:10px;-webkit-border-top-left-radius:10px;-webkit-border-top-right-radius:10px}.t_set_tb th,.t_set_tb td{padding:8px;background:#e8edff;border:none !important;border-top:2px solid #fcfcfc !important;color:#669;line-height:1.1em !important}.t_set_tb td input,.t_set_tb td textarea{font-size:12px !important;padding:0 !important}.t_set_tb tbody tr:hover th,.t_set_tb tbody tr:hover td{background:#d0dafd}.t_set_tb tfoot td{border-radius-bottomleft:10px;border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-moz-border-radius-bottomright:10px;-webkit-border-bottom-left-radius:10px;-webkit-border-bottom-right-radius:10px}.t_set_ft{font-family:Arial,sans-serif,瀹�� !important;font-size:12px !important;font-weight:bold !important;text-shadow:none !important;margin-top:15px !important}.t_set_ft a{text-decoration:none;color:#000}.t_setbtn{border:1px solid black;padding:2px;cursor:pointer;background:#fff;color:#0080c0}.t_setftbtn span{padding:2px 10px 2px 10px !important}.t_rtjdbtn{background:#0080c0 !important;color:#fff !important}.t_rtjdtxtpos{padding-top:5px}#iZhihu_rthint{font-family:Arial,sans-serif,瀹�� !important;font-size:16px !important;font-weight:bold;padding:5px 10px 5px 10px;position:fixed;top:20px;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;display:inline-block;opacity:0.7}.t_rthint_n{color:#fff !important;background:#000 !important}.t_rthint_f{background:#880000 !important;color:#ffffdd !important}.t_upbtn{background:#0080c0 !important;color:#fff !important}.t_upinfo{height:120px !important;vertical-align:text-top !important}#izh_updatediv th{border-right:2px solid #fcfcfc !important}#izh_updatediv tfoot td{border:none !important;border-top:2px solid #fcfcfc !important;font-family:Arial,sans-serif,瀹�� !important;font-size:12px !important;font-style:normal !important;text-shadow:none !important}.t_txtshow{text-align:center;background:#0080c0;color:#f0f0f0;user-select:none;-moz-user-select:none}.t_frshow{font-size:1.2em;position:fixed;z-index:99999;top:45px;width:200px;opacity:0.9;cursor:pointer}.t_tbox{padding:10px;position:relative;border:1px solid #f0f0f0;line-height:20px;*height:1%;width:200px;-moz-box-shadow:2px 5px 15px #333;-moz-border-radius:7px;-webkit-box-shadow:2px 5px 15px #333;-webkit-border-radius:7px}.t_tbox s{position:absolute;top:-20px;left:160px;display:block;height:0;width:0;font-size:0;line-height:0;border-color:transparent transparent #f0f0f0 transparent;border-style:dashed dashed solid dashed;border-width:10px}.t_tbox i{position:absolute;top:-9px;left:-10px;display:block;height:0;width:0;font-size:0;line-height:0;border-color:transparent transparent #0080c0 transparent;border-style:dashed dashed solid dashed;border-width:10px}@media screen and (-webkit-min-device-pixel-ratio:0){#iZhihu_rtjddiv{height:417px}#iZhihu_setdiv{height2:295px}#izh_updatediv{height:315px}}'
,''].join('\n');
if(pageIs.Question&&izhAuthorList){
css+=['div.uno{position:absolute;left:0;border:1px solid #0771C1;border-right-width:0;border-top-right-radius:6px}'
,'div.uno .frame{overflow-x:hidden;overflow-y:auto;direction:rtl}'
,'div.uno span.meT,div.uno span.meB,div.uno ul.pp li span.me{position:absolute;right:0;display:block;height:1px;width:1px;line-height:1px;background-color:transparent;border-style:solid;border-color:transparent;}'
,'div.uno span.meT{border-width:6px 4px;border-top-width:0px;border-bottom-color:#fff;}'
,'div.uno span.meB{border-width:6px 4px;border-bottom-width:0px;border-top-color:#fff;margin-top:-7px;}'
,'div.uno ul{background-color:#0771C1;padding:0;margin:0;direction:ltr}'
,'div.uno ul li{display:block;list-style-type:none;margin:0;padding:0;white-space:nowrap;}'
,'div.uno ul li a{display:block;}div.uno li a.sel{text-decoration:none;}'
,'div.uno ul li a{'+css_AuthorListItemA+'}'
,'div.uno ul.pp li span.me{position:static;margin:6px -8px;border-width:4px 6px;border-right-color:#fff;float:right;}'
,'div.uno li a span.name{text-align:right;display:block;'+css_AuthorListItemA_name+'background-color:#fff;}div.uno li a.sel span.name{color:#fff;background-color:#0771C1;}'
,'div.uno li a span.name.noname{color:#000;}'
,'div.uno li a span.name.collapsed{color:#999999;}'
,'div.uno li a span.name.friend{font-style:italic;}'
,'div.uno li span.hp{background-color:#999999;position:relative;float:right;margin-top:-2px;line-height:2px;height:2px;}'
,'div.uno table.plus{float:right;margin:7px -9px;height:7px;border-collapse:collapse;border-style:hidden;}div.uno table.plus td{border:1px solid #fff;width:1px;height:1px;}'
,'div.uno a.sel table.plus{}div.uno a.sel table.plus td{}'
,'div.uno li a span.func{text-align:center;}'
,'div.izh-answer-preview{position:fixed;margin-top:1px;background-color:#fff;border:1px solid #0771C1;border-top-width:22px;border-top-right-radius:6px;box-shadow:5px 5px 5px #777;}'
,'div.izh-answer-preview .zm-editable-content{top:0;bottom:0;left:0;right:0;overflow-y:auto;padding:10px;}'
,'div.izh-answer-preview img.zm-list-avatar{position:absolute;right:10px;top:-35px;border:1px solid #0771C1;border-radius:6px;}'
,'div.izh-answer-preview span.comment{position:absolute;top:-18px;line-height:18px;border-top-right-radius:3px;background-color:#fff;padding:0 5px;}'
,''].join('\n');
}
css+=['.z-icon-izh-fold{background-position:-173px -107px;width:15px;height:15px;}'
,''].join('\n');
css+=['.t_set_tb{font-family:"Lucida Sans Unicode","Lucida Grande",Sans-Serif !important;font-size:12px !important;text-shadow:none !important;border-collapse:collapse !important;margin:0 !important;line-height:120%}'
,'.t_set_tb thead td{background:#0080c0;color:#fff;border:none !important;padding:4px 8px 4px !important;border-top-left-radius:6px;border-top-right-radius:6px}'
,'.t_set_tb th,.t_set_tb td{padding:8px;background:#e7f3f9;border:none !important;border-top:2px solid #fcfcfc !important;color:#669;line-height:1.1em !important}'
,'.t_set_tb td input,.t_set_tb td textarea{font-size:12px !important;padding:0 !important}'
,'.t_set_tb tbody tr:hover th,.t_set_tb tbody tr:hover td{background:#d0dafd}'
,'.t_set_tb tfoot td{border-radius-bottomleft:10px;border-radius-bottomright:10px;-moz-border-radius-bottomleft:10px;-moz-border-radius-bottomright:10px;-webkit-border-bottom-left-radius:10px;-webkit-border-bottom-right-radius:10px}'
,'.t_set_tb td{white-space:nowrap;}'
,'.t_set_tb td .icon-help{float:right;}'
,''].join('\n');
css+=['.izh_boxShadow{box-shadow: 5px 5px 3px 0px #999 !important;}'
,'#zh-question-meta-wrap.izh_noBorder{border-bottom-color:transparent !important;}'
,'#zh-question-filter-wrap.izh_noBorder{border-top-color:transparent !important;}'
,'a.izh-button.on{color:#225599;text-shadow:0 0 1px #225599;}'
,'a.izh-button .zg-icon{opacity:0.5;}'
,'a.izh-button.on .zg-icon{opacity:1;}'
,'a.izh-button.off{color:#eee;}'
,'a.izh-button.off .zg-icon{opacity:0.2;}'
,'.izh-feeds-filter{}'
,'.izh-feeds-filter .izh-feeds-filter-option{opacity:0.5;color:#999999;padding-left:5px;text-decoration:none;cursor:pointer;}'
,'.izh-feeds-filter .izh-feeds-filter-option i{background-position:-183px -4px;}'
,'.izh-feeds-filter .izh-feeds-filter-option.on{opacity:1;color:#225599;}'
,'.izh-feeds-filter .izh-feeds-filter-option.on i{background-position:-183px -24px;}'
,''].join('\n');
if(izhHomeLayout){
css += ['#zh-question-list { padding-left:30px!important }'
,'#zh-main-feed-fresh-button { margin-left:-30px!important }'
,'.feed-item {'
,' border-bottom:1px solid #EEE!important;'
,' margin-top:-1px!important'
,'}'
,'.feed-item .avatar { display:none!important }'
,''
,'.feed-main,.feed-item.combine { margin-left:0!important }'
,'.feed-item-q { margin-left:-30px!important;padding-left:0!important }'
,''
,window.iZhihu.Comment.RightComment ? '' : '.feed-item-a .zm-comment-box { max-width:602px!important }'
,window.iZhihu.Comment.RightComment ? '' : '.feed-item-q .zm-comment-box { max-width:632px!important; width:632px!important }'
,''
,'.zm-tag-editor,'
,'#zh-question-title,'
,'#zh-question-detail,'
,'#zh-question-meta-wrap,'
,'.zh-answers-title,'
,'#zh-question-filter-wrap {'
,' margin-left:-32px!important'
,'}'
,''
,'#zh-question-log-page-wrap .zm-tag-editor,'
,'#zh-question-log-page-wrap #zh-question-title {'
,' margin-left:0 !important'
,'}'
,''
,'.zh-answers-title,'
,'#zh-question-filter-wrap {'
,' border-bottom:1px solid #EEE!important;'
,' z-index:1000!important'
,'}'
,''
,'#zh-question-meta-wrap {'
,' margin-bottom:0!important;'
,' padding-bottom:10px!important;'
,' border-bottom:1px solid #EEE!important'
,'}'
,''
,'#zh-question-answer-wrap { margin-top:-1px!important }'
,''
,'#zh-question-collapsed-wrap,#zh-question-answer-wrap { border:none!important }'
,'.zu-question-collap-title { border-top:1px solid #EEE!important }'
,'#zh-question-collapsed-wrap>div:last-child,.zm-item-answer:last-child { border-bottom:1px solid #EEE!important }'
,''
,'.zu-autohide,'
,'.zm-comment-op-link,'
,'.zm-side-trend-del,'
,'.unpin {'
,' visibility:visible!important;'
,' opacity:0;'
,'}'
,'.feed-item:hover .zu-autohide,'
,'.zm-item-answer .zu-autohide,'
,'.zm-item-comment:hover .zm-comment-op-link,'
,'.zm-side-trend-row:hover .zm-side-trend-del,'
,'.zm-side-nav-li:hover .unpin {'
,' opacity:1;'
,'}'
,'.zm-item-vote-count:hover,.zm-votebar button:hover{'
,' background:#a6ce56!important;'
,' color:#3E5E00 !important'
,'}'
,''
,'a,a:hover,'
,'i,'
,'.zu-autohide,'
,'.zm-votebar button,'
,'.zm-item-comment:hover .zm-comment-op-link,'
,'.zm-comment-op-link,'
,'.zm-side-trend-row:hover .zm-side-trend-del,'
,'.zm-side-trend-del,'
,'.zm-side-nav-li,'
,'.zu-main-feed-fresh-button,'
,'.zg-icon,'
,'.zm-side-nav-li:hover .zg-icon,'
,'.zm-side-nav-li:hover i,'
,'.unpin,'
,'.zm-side-nav-li:hover .unpin {'
,' -moz-transition:color .2s linear,opacity .15s linear,background-color .2s linear,background-position .2s linear .1s;'
,' -webkit-transition:color .2s linear,opacity .15s linear,background-color .2s linear,background-position .2s linear .1s;'
,' transition:color .2s linear,opacity .15s linear,background-color .2s linear,background-position .2s linear .1s;'
,'}'
,''
,'h3{ line-height:25px }'
,'.zu-footer-inner {padding:15px 0!important}'
,'.zm-side-pinned-topics .zm-side-nav-li{float:left;padding-right:30px!important}'
,'.zm-side-list-content{clear:both}'
,'.unpin{ display:inline-block!important }'
,''].join('\n');
}
var css_comment='';
if(pageIs.Home||pageIs.Question||pageIs.Answer){
css_comment = window.iZhihu.Comment.css;
}
css += window.iZhihu.Answer.css;
if(window.iZhihu.QuickFavo){
css += window.iZhihu.QuickFavo.css;
}
if(window.iZhihu.QuickBlock){
css += window.iZhihu.QuickBlock.css;
}
if(window.iZhihu.Noti7){
css += window.iZhihu.Noti7.css;
window.iZhihu.Noti7.enhance();
}
var heads = _doc.getElementsByTagName("head");
if (heads.length > 0) {
var node = _doc.createElement("style");
node.type = "text/css";
node.id = "izhCSS_main";
node.appendChild(_doc.createTextNode(css));
heads[0].appendChild(node);
if(css_comment!=''){
node = _doc.createElement("style")
node.type = "text/css";
node.id = "izhCSS_comment";
node.appendChild(_doc.createTextNode(css_comment));
heads[0].appendChild(node);
}
}
if(!$('.modal-dialog-bg').length){
$body.append(
$('<div', { id: 'izh-dlg-bg', 'class': 'modal-dialog-bg' }).css({
'z-index': 95
, 'opacity': 0.5
, 'position': 'fixed'
, 'top': 0
, 'bottom': 0
, 'left': 0
, 'right': 0
, 'display': 'none'
})
);
}
window.iZhihu.getItem=function($c){
var $item=$(null);
if($c && $c.length){
var $itemMeta=$c.closest('.zm-item-meta');
if ($itemMeta.is('.feed-meta') || $itemMeta.parent().is('.feed-meta')){
$item=$c.closest('.feed-item');
$item.attr('data-aid', $item.children('meta[itemprop=answer-id]').attr('content'))
}else if($itemMeta.is('.answer-actions')){
$item=$c.closest('.zm-item-answer,.feed-item');
}else{
$item=$itemMeta.prev();
}
}
return $item;
};
utils.observeDOMNodeAdded(document.body,function(event){
if(izhTopNavAutoFold){
window.iZhihu.TopNav.onNodeAdded(event)
}
})
/**
* @class Answer
*/
function Answer(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu) {
return null;
}
iZhihu.Answer = this;
this._e=null;
this.ppWidth=0;
this.ppHeight=400;
this.css =
['.zm-votebar .izh-button.fold{margin:5px 0px 0px;display:block;color:#698EBF;height:24px;line-height:24px;width:38px;border-radius:3px;border:0px none;cursor:pointer;background:none repeat scroll 0% 0% #EFF6FA;font-weight:font-weight;position:relative;}'
,''].join('\n');
this.processAnswer=function($a,$pp,bAuthorRear,bAuthorList){
if(!$a||!$a.length)return;
if($a.attr('izh_processed')=='1')return;
var selCollapse='.meta-item[name=collapse]'
, $meta=$a.find('.zm-item-meta')
, $author=$a.find('.zm-item-answer-author-info')
, $favo=$a.find('.meta-item[name=favo]')
, $vote=$a.find('.zm-votebar')
;
if(iZhihu.QuickBlock){
// Region: 快速屏蔽
iZhihu.QuickBlock.addQuickBlock($a)
// Region end
}
if($author.length){//relocatePersonInfo
if(bAuthorRear){
$author.css({
'textAlign':'right'
});
if($a.is('.feed-item')){
$a.find('.entry-body .zm-item-answer-detail .zm-item-rich-text')
.append($author.hide()).bind('DOMNodeInserted',function(event){
var $c=$(event.target);
if($c.is('.zm-editable-content')){
$(this).children('.zm-item-answer-author-info')
.insertBefore($c.children('.answer-date-link-wrap'))
.css({
'position':'absolute'
, 'right':0
}).show();
}
});
}else{
$author.insertBefore($meta);
}
}
$author=$author.children().eq(1);
if ($pp && bAuthorList){
// Region: 回答目录项
var collapsed=$a.attr('data-collapsed')=='1'
, $ppla=$('<a>',{
href:'#answer-'+$a.attr('data-aid')
, target:'_self'
, style:css_AuthorListItemA
})
, $ppl=$('<li>').append($ppla)
, $uno=iZhihu.$unoAnswers
if(collapsed){
$ppl.appendTo($pp)
}else{
$ppl.insertBefore($uno.$endOfLastA)
}
if($a.attr('data-isowner')=='1'){
iZhihu.Answer._e=$a.get(0);
$ppla.append($('<span>', { 'class': 'me' }));
}
var nameCSS='name';
if($a.attr('data-isfriend')=='1'){
nameCSS+=' friend';
}
if(collapsed){
nameCSS+=' collapsed'
}
if(!$author.length){
nameCSS+=' noname';
}
$('<span>',{
'class':nameCSS
, style:css_AuthorListItemA_name
}).text(!$author.length?'匿名用户':$author.text()).appendTo($ppla);
if ($ppl.width()>iZhihu.Answer.ppWidth)
iZhihu.Answer.ppWidth=$ppl.width();
// Region end
// Region: 回答篇幅指示
var nHP=Math.ceil($('.zm-editable-content',$a).text().length/100);
$('<span>',{
'class':'hp'
}).css({'width':nHP*10,'margin-left':-nHP*10}).appendTo($ppla);
// Region end
$ppla.mouseover(function(){
var $frm=$(this.parentNode.parentNode.parentNode)
, $uno=iZhihu.$unoAnswers
$(this).addClass('sel');
if(iZhihu.Answer._e){
$uno.children('.meT').css('display',0>iZhihu.Answer._e.offsetTop-$frm.scrollTop()?'':'none');
$uno.children('.meB').css('display',$frm.height()<iZhihu.Answer._e.offsetTop-$frm.scrollTop()+iZhihu.Answer._e.offsetHeight?'':'none');
}
// Region: 回答预览
var nam=$('span.name',this);
if(!nam.length)return;
var aid=$(this).attr('href').replace('#answer-','')
, prv=$uno.next('.izh-answer-preview')
, top=$(this).position().top+$uno.position().top
, sel='.zm-item-answer[data-aid='+aid+'] > .zm-item-rich-text'
, ctx=nam.is('.collapsed')?'#zh-question-collapsed-wrap':'#zh-question-answer-wrap'
, div=$(sel,ctx)
, cmt=$('.zm-item-meta > .zu-question-answer-meta-comment',div.parent())
;
if(!prv.length){
prv=$('<div>',{
'class':div.class
})
.addClass('izh-answer-preview').width(div.width()+22)
.mouseover(function(){$uno.mouseover();$('li a[href=#'+$(this).attr('data-aid')+']',$uno).addClass('sel');$(this).show();})
.mouseout(function(){$uno.mouseout();$('li a[href=#'+$(this).attr('data-aid')+']',$uno).removeClass('sel');$(this).hide();})
.click(function(){$('li a[href=#'+$(this).attr('data-aid')+']',$uno)[0].click();})
.insertAfter($uno)
;
}
if(prv.attr('data-aid')!=aid){
prv.attr('data-aid',aid).empty().append(div.clone().children()).find('a').attr('onclick','return false;');
if($('span.me',this).length)
prv.find('a.zu-edit-button').remove();
if(!nam.hasClass('noname'))
$('img.zm-list-avatar',div.parent()).clone().appendTo(prv);
var t=cmt.text(),i=t.indexOf('条评论');
if(cmt.length&&i>0)
$('<span>',{'class':'comment'}).text(t.substring(0,i)).prepend(cmt.children('i').clone()).appendTo(prv);
}
var th=div.height()+33
, maxTop=$uno.position().top+12
, contentPosition='';
if(maxTop+th<$win.height()){
if(top+th<$win.height()){
prv.css({'top':top>maxTop?top:maxTop,'bottom':''});
}else{
prv.css({'top':'','bottom':0});
}
}else{
prv.css({'top':maxTop,'bottom':0});
contentPosition='absolute';
}
prv.css({'left':$uno.width()}).show().children().first().css('position',contentPosition);
// Region end
}).mouseout(function(){
$(this).removeClass('sel');
var $uno=$(this.parentNode.parentNode.parentNode.parentNode);
$uno.next().hide();
}).click(function(){$(this).mouseout();
iZhihu.$unoAnswers.css('left',9-iZhihu.$unoAnswers.width());});
if(iZhihu.Answer._e==$a.get(0)){
iZhihu.Answer._e=$ppla.get(0);
}
}
}
if(iZhihu.QuickFavo)
iZhihu.QuickFavo.addQuickFavo($favo,$a);
$meta.bind('DOMNodeInserted',function(event){
iZhihu.Comment.processComment($(event.target));
});
iZhihu.Comment.processCommentButton($a);
var $cm=$('.zm-comment-box',$a);
if($cm.length && $cm.is(':visible')){
var focusName = iZhihu.Comment.scrollFocusCommentOnPageLoad($cm);
iZhihu.Comment.metaScrollToViewBottom($cm.closest('.zm-item-meta'),function(){
iZhihu.Comment.processComment($cm, focusName);
});
}
$a.attr('izh_processed','1');
};
return this;
}
/**
* @class Comment
*/
function Comment(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu) {
return null;
}
iZhihu.Comment = this;
var css_comment={
'background-color':'#fff'
, 'outline':'none'
, 'z-index':'9999'
, 'border-radius':'0 6px 0 0'
, 'position':'absolute'
, 'visibility':'hidden'
, 'top':-70
}
;
this.RightComment = iZhihu.config['ShowComment'];
this.AutoScrollPageWhenClosing = iZhihu.config['RightComment_AutoScrollPageWhenClosing'];
if (!this.RightComment){
this.css =
['.zm-comment-box.empty .izh-button-cc{display:none;}'
,''].join('\n');
} else {
this.css =
['.mention-popup{z-index:10000 !important;}'
,'.zm-item-meta .meta-item.toggle-comment{display:block;float:right;margin-left:7px !important;}'
,'.zm-comment-box{position:absolute;margin-top:0;}'
,'.zm-comment-box .icon-spike{display:none !important;}'
,'.zm-comment-box > .zm-comment-box-ft{position:absolute;top:0;left:0;right:0;}'
,'.zm-comment-box.empty{padding-top:10px !important;}'
,'.zm-comment-box > .zm-comment-form{margin:15px !important;}'
,'.zm-comment-box.empty > .zm-comment-form{bottom:25px;}'
,'.zm-comment-box > .zm-comment-form .zm-comment-editable{position:absolute;bottom:60px;top:0;left:0;right:0;overflow:auto;}'
,'.zm-comment-box.empty > .zm-comment-form .zm-comment-editable{bottom:25px;}'
,'.zm-comment-box > .zm-comment-form .zm-command{position:absolute;left:0;right:0;bottom:40px;}'
,'.zm-comment-box.empty > .zm-comment-form .zm-command{bottom:10px;}'
,'.zm-comment-box [class^=izh-buttons-cm]{position:absolute;top:70px;}'
,'.zm-comment-box.empty [class^=izh-buttons-cm]{top:auto;bottom:30px;z-index:10;}'
,'.zm-comment-box .izh-buttons-cm-L{left:0;}'
,'.zm-comment-box .izh-buttons-cm-L > a{margin-right:7px;}'
,'.zm-comment-box .izh-buttons-cm-R{right:1em;}'
,'.zm-comment-box .izh-buttons-cm-R > a{margin-left:7px;}'
,'.zm-comment-box a.izh-button.on{color:#225599;text-shadow:0 0 1px #225599;}'
,'.zm-comment-box a.izh-button .zg-icon{opacity:0.5;}'
,'.zm-comment-box a.izh-button.on .zg-icon{opacity:1;}'
,'.zm-comment-box a.izh-button.off{color:#eee;}'
,'.zm-comment-box a.izh-button.off .zg-icon{opacity:0.2;}'
//,'.zm-comment-box.empty [class^=izh-buttons-cm]{top:auto;bottom:7px;}'
,'.zm-comment-box.empty .zm-comment-list{visibility:hidden;}'
,'.zm-comment-box .zm-comment-list .zm-item-comment[izh_hilight]{background-color:rgb(255,255,160);}'
,'.zm-comment-box .izh-button.on .zg-icon-comment-like{background-position:-222px -79px;}'
,'.zm-comment-box .izh-button .z-icon-fold{height:6px;}'
,''].join('\n');
this.onWinLoad=function(){
var iZhihu=window.iZhihu;
iZhihu.$win.scroll(function(event){
if(iZhihu.Comment.Opening&&!iZhihu.Comment.PageNotScroll){
var animate=true;
iZhihu.Comment.box($(iZhihu.Comment.Opening),true,animate);
}
});
iZhihu.$win.resize(function(event){
if(iZhihu.Comment.Opening){
var $cm=$(iZhihu.Comment.Opening);
iZhihu.Comment.Opening = null;
iZhihu.Comment.close(null,$cm);
iZhihu.Comment.open(null,$cm);
}
});
if(iZhihu.ScrollTop){
document.body.scrollTop=iZhihu.ScrollTop;
}
}
this.onWinLoad()
}
this.processCommentButton = function($a){
if(iZhihu.Comment.RightComment){
var $bc=$a.find('.meta-item.toggle-comment');
$bc.prependTo($bc.parent());
}
};
this.scrollFocusCommentOnPageLoad = function($cm){
if(!iZhihu.Comment.RightComment)return;
var focusName=url.data.attr.fragment;
if(!focusName||focusName=='')return;
if(window.iZhihu4CRX){
var $icm2C=$cm.find('.zm-comment-list .zm-item-comment a.zg-anchor-hidden[name="'+focusName+'"]').parent()
, offsetTop=$icm2C.length?$icm2C.offset().top:0
;if(offsetTop){document.body.scrollTop=offsetTop;}
}
return focusName;
};
this.metaScrollToViewBottom = function($itemMeta,funcAfterScroll,always,animate){
if(!iZhihu.Comment.RightComment || !iZhihu.Comment.AutoScrollPageWhenClosing){
if(funcAfterScroll){funcAfterScroll();}
return;
}
if(typeof always === 'undefined')always=true;//if false, scrolling only when the .zm-item-meta out of visible range
if(typeof animate === 'undefined')animate=false;//if false, scrolling instantly
if(always)$itemMeta.children('.zm-comment-box').css('position','fixed');
var winHeight=iZhihu.$win.height()
, scrollObj=window.iZhihu4CRX?document.body:document.documentElement
, scrollTopNow=scrollObj.scrollTop
, navHeight=iZhihu.$body.children().first().height()
, bar=$('.zu-global-notify.zu-global-notify-info:visible')
, barHeight=!bar.length?0:bar.outerHeight()
, baseTop=((barHeight&&bar.css('position')=='fixed')?barHeight:(scrollTopNow>barHeight?0:barHeight-scrollTopNow))+navHeight
, maxHeight=winHeight-baseTop
, metaHeight=$itemMeta.innerHeight()
, offsetTop=$itemMeta.offset().top
, offsetBottom=offsetTop+metaHeight
, $item=iZhihu.getItem($itemMeta)
, itemHeight=$item.innerHeight()
, offsetTopA=$item.offset().top
, offsetBottomA=offsetTopA+itemHeight
, scrollTopEnd=itemHeight>maxHeight?offsetBottom-winHeight:(offsetTopA<=scrollTopNow?offsetTopA-baseTop:offsetBottom-winHeight)
;
if(!always){
always=offsetTop<scrollTopNow+baseTop||offsetBottom>scrollTopNow+winHeight-baseTop;
}
if(always){
iZhihu.ScrollTop=scrollTopEnd;
if(animate){
$(scrollObj).animate({'scrollTop':scrollTopEnd},funcAfterScroll);
}else{
$(scrollObj).scrollTop(scrollTopEnd);
if(funcAfterScroll){funcAfterScroll();}
}
}else{
if(funcAfterScroll){funcAfterScroll();}
}
};
this.box = function($cm,keepSize,animate){if(!$cm||!$cm.length)return;
$cm.stop();
if(typeof keepSize === 'undefined')keepSize=false;
if(typeof animate === 'undefined')animate=false;
var winHeight=iZhihu.$win.height()
, th=keepSize?parseInt($cm.attr('izh_cmHeight')):0
, scrollTop=(document.body.scrollTop)?document.body.scrollTop:document.documentElement.scrollTop
, navHeight=iZhihu.$body.children().first().height()
, bar=$('.zu-global-notify.zu-global-notify-info:visible')
, barHeight=!bar.length?0:bar.outerHeight()
, baseTop=((barHeight&&bar.css('position')=='fixed')?barHeight:(scrollTop>barHeight?0:barHeight-scrollTop))+navHeight
, minHeight=112
, maxHeight=winHeight-baseTop-35
, tooSmall=maxHeight<minHeight
, $meta=$cm.closest('.zm-item-meta')
, metaHeight=2*$meta.height()-$meta.innerHeight()
, offsetTop=scrollTop-$meta.offset().top
, offsetBottom=-offsetTop-winHeight
;if(tooSmall)maxHeight=minHeight;
if(!th||isNaN(th)){
var $t=$cm.clone().css({'position':'absolute','z-index':'-1'}).appendTo(document.body).show()
, $l=$t.children('.zm-comment-list')
;
if(!$cm.is('.empty')&&$l.children().length>0)$l.css({'position':'absolute','height':'','top':'','bottom':''});
th=$l.height();
th+=th==0?minHeight:100;
$t.remove();$t=null;//console.log(th);
$cm.css('height',th<=minHeight?minHeight:(th<maxHeight?th-100:maxHeight-80));
}
var target={},other={'height':''};
$cm.attr('izh_cmHeight',th).css({'display':'','visibility':'visible','position':'absolute'});
if(th<=maxHeight){
var top=-offsetTop-70,fixHeight=(th<=minHeight?-1:7);
if(!tooSmall&&top+th>winHeight){
target={'top':-offsetBottom-th-metaHeight+fixHeight,'bottom':offsetBottom};
}else{
offsetTop+=((!tooSmall)&&top>baseTop?top:baseTop);
target={'top':offsetTop,'bottom':-offsetTop-th-metaHeight+fixHeight};
}
$cm.filter('.empty').find('.zm-comment-form .zm-comment-editable').css({'bottom':''});
}else{
target={'top':offsetTop+baseTop,'bottom':offsetBottom};
$cm.filter('.empty').find('.zm-comment-form .zm-comment-editable').css({'bottom':'20px'});
}
if(animate){
$cm.animate(target,function(){$cm.css(other);});
}else{
$cm.css($.extend(target,other));
}
$cm;
};
this.open = function($ac,$cm,icmFocus){// if $ac is null, just re-sizing and re-locating comment-box
var noCommentOpening = iZhihu.Comment.Opening == null;
iZhihu.Comment.Opening = $cm.attr('izh-opening','1').css({'display':'none'}).get(0);
$('.zm-comment-box:visible:not([izh-opening=1])')
.each(function(i,e){
$(e).css('visibility','hidden').closest('.zm-item-meta').find('.toggle-comment')[0].click();
});
var winWidth=iZhihu.$win.width()
, mcLeft=iZhihu.$main.offset().left
, $ct=$cm.closest('.zu-main-content-inner')
, ctMarginL=parseInt($ct.css('margin-left'))
, ctWidth=$ct.width()+ctMarginL
, ctLeft=$ct.offset().left-ctMarginL
, $meta=$cm.closest('.zm-item-meta')
, mtWidth=$meta.innerWidth()
, minWidth=iZhihu.$main.width()-ctWidth
, cmWidth=mtWidth
, maxWidth=winWidth-ctWidth
, o=function(){
$cm.attr('opened','1');
if(!$ac){
iZhihu.Comment.box($cm);
return;
}
var currTop=_doc.body.scrollTop
, $n=$ac.next(),$n=$n.length?$n:$ac.parent().next()
, t=$ac.offset().top-iZhihu.$main.offset().top
, b=$ac.offset().top-iZhihu.$main.offset().top
, w=$ac.width()
, inAnswer=$ac.is('.zm-item-answer')
, inQuestion=$ac.is('#zh-question-detail')
, $questionMeta=$('#zh-question-meta-wrap')//question_meta
, h=inQuestion?$questionMeta.offset().top+$questionMeta.height()+parseInt($questionMeta.css('padding-bottom'))-iZhihu.$main.offset().top
:$ac.height()+parseInt($ac.css('padding-bottom'))+parseInt($n.css('padding-top'))
;
if(!$ac.find('.izh_tape_a,.izh_tape_b').length)
$ac
.append($('<div>', { 'class': 'izh_tape_a' }))
.append($('<div>', { 'class': 'izh_tape_b' }))
if(!$cm)$cm=$ac.find('.zm-comment-box');
if($cm.length){
if(!$cm.attr('tabindex')){
$cm.attr('tabindex','-1').focus();
}
if(inQuestion){
$('#izh_QuestionShadow').css({
'height':h
, 'margin-bottom':-h
}).show();
$questionMeta.next(':visible').andSelf().addClass('izh_noBorder');
}else{
$ac.addClass('izh_boxShadow');
}
$ac.find('.izh_tape_a').css({
'position':'absolute'
, 'width':1
, 'height':h
, 'top':0
, 'margin-left':w-1
, 'z-index':'10000'
, 'background-color':'#fff'
}).show();
iZhihu.Comment.box(
$cm.css({'left':mtWidth-1}).attr('izh_inQuestion',inQuestion?'1':'0').removeAttr('izh-opening')
);
$('.mention-popup').attr('data-aid',$ac.attr('data-aid'));
}else{
$ac.find('.zu-question-answer-meta-comment')[0].click();
}
$ac.find('.izh_tape_b').css({
'position':'absolute'
, 'width':1
, 'height':h
, 'top':0
, 'margin-left':w
, 'z-index':'9998'
, 'background-color':'#eee'
}).show();
//$ac.css('border-color','#999999');
//$n.css('border-color','#999999');
$('.zh-backtotop').css('visibility','hidden');
iZhihu.$body.scrollTop(currTop);
if(icmFocus){
var $icm=$(icmFocus).attr('izh_hilight','1')
, $list=$icm.closest('.zm-comment-list');
$list.scrollTop(icmFocus.offsetTop-$list.get(0).offsetTop);
iZhihu.Comment.HiLightItem=icmFocus;
iZhihu.Comment.HiLightColor='rgb(255,255,160)';
$icm.click(function(){
var iZhihu=window.iZhihu;
if(iZhihu&&iZhihu.Comment.HiLightItem){
$(iZhihu.Comment.HiLightItem).removeAttr('izh_hilight');
}
});
}
};
if(maxWidth>549)maxWidth=549;
if(cmWidth>maxWidth)
cmWidth=maxWidth;
if(cmWidth<minWidth)
cmWidth=minWidth;
$cm.addClass('izh_boxShadow').css($.extend(css_comment,{'width':cmWidth-9}));
//if(!$cm.is('.empty'))
$cm.css({'padding':'100px 0px 0px 7px'});
$('i.zm-comment-bubble',$cm).hide();
if(noCommentOpening){
var cmWidthOver=cmWidth-winWidth
, shiftLeft=cmWidthOver+ctWidth+ctLeft
;
if(shiftLeft>0){
if(shiftLeft>ctLeft){shiftLeft=mcLeft;}
else if(cmWidthOver>0){shiftLeft-=cmWidthOver;}
}
if(shiftLeft<0){shiftLeft=0;}
if(shiftLeft && $ac){
$ct.css({'position':'relative','left':0}).animate({left:-shiftLeft},o);
}else{
$ct.css({'position':'relative','left':-shiftLeft});
o();
}
}else{
o();
}
};
this.close = function($ac,$cm){
if(!$cm)$cm=$ac.find('.zm-comment-box');
var $ct=$cm.closest('.zu-main-content-inner');
var o=function(){
$(this).css('position','');
if(!$ac)return;
var $n=$ac.next()
, $n=$n.length?$n:$ac.parent().next()
, inQuestion=$ac.is('#zh-question-detail');
if(!$ac){return;}
if(inQuestion){
$('#izh_QuestionShadow').hide();
$('#zh-question-meta-wrap').next(':visible').andSelf().removeClass('izh_noBorder');
}else{
$ac.removeClass('izh_boxShadow');
}
//$ac.css('border-color','#DDDDDD');
//$n.css('border-color','#DDDDDD');
$('.izh_tape_a:visible,.izh_tape_b:visible').hide();
$('.zh-backtotop').css('visibility','visible');
};
if(iZhihu.Comment.Opening == $cm.get(0)){
iZhihu.Comment.Opening = null;
$ct.animate({left:0},o);
}else{
if(!$ac){$ct.css({left:0});}
o();
}
};
this.processComment = function($cm,focusName){
var loading=false;
if($cm.is('.zm-comment-spinner')){
$cm=$cm.closest('.zm-comment-box');
loading=true;
}
if(!$cm.is('.zm-comment-box'))return;
var $item=iZhihu.getItem($cm);
if(iZhihu.Comment.RightComment&&loading){
var cmLeft=$item.width()-1;
$cm.css({'left':cmLeft,'width':216,'z-index':'10000'});
}
if($cm.filter('.zm-comment-box').has('.zm-comment-list').length){
/* Collections for comment
$cm.find('.zm-comment-editable').bind('DOMNodeInserted',function(event){
var $c=$(event.target),$cm=$c.closest('.zm-comment-box');
if($c.is('a.member_mention')){
if($cm.children('.izh_collections').length<=0){
$('<div class="izh_collections">loading...</div>').bind('mouseover',function(){
$(this).show();
}).bind('mouseout',function(){
$(this).hide();
}).appendTo($cm);
}
$c.bind('mouseover',function(){
var $ce=$(this).closest('.zm-comment-editable'),$cm=$(this).closest('.zm-comment-box');
$cm.children('.izh_collections').css({
'bottom':$(this).height()-$(this).position().top-1
, 'left':$(this).position().left
}).show();
$.post('http://www.zhihu.com'+$(this).attr('href')+'/collections'
, $.param({_xsrf:$('input[name=_xsrf]').val()})
, function(result,status,xhr){
console.log(result);
});
});
$c.bind('mouseout',function(){
var $ce=$(this).closest('.zm-comment-editable'),$cm=$(this).closest('.zm-comment-box');
$cm.children('.izh_collections').hide();
});
}
});
*/
if(iZhihu.Comment.RightComment){
$cm.closest('.zm-item-meta').find('.toggle-comment').click(function(event){
var $openedBy=$(this)
, $ac=$openedBy.closest('.zm-item-meta')
, $cm=($ac.parent().is('.zm-item-meta.feed-meta')?$ac.parent():$ac).find('.zm-comment-box').css('visibility','hidden')
;
if($cm.length){
var $item=iZhihu.getItem($cm);
if($cm.is(':hidden')){
iZhihu.Comment.open($item,$cm);
}else{
iZhihu.Comment.close($item,$cm);
}
}
});
}
//if($cm.is('.empty')) return;
var $list=$cm.find('.zm-comment-list');
$list.bind('DOMNodeInserted',function(event){
//utils.observeDOMNodeAdded($list[0],function(event){
/*if(!event.addedNodes)return;
console.log('Nodes '+event.addedNodes.length+' inserted');
for(var i=0;i<event.addedNodes.length;i++){
var $icm=$(event.addedNodes[i]);
}*/
var $icm=$(event.target).filter('.zm-item-comment,.zm-comment-form');
if(!$icm.length)return;
var $list=$(this)
, $cm=$list.closest('.zm-comment-box:visible');
if($icm.is('.zm-item-comment')){
//console.log($icm);
if(iZhihu.QuickBlock){
//console.log('Adding QuickBlock');
iZhihu.QuickBlock.addQuickBlockInOneComment($icm);
}
if(iZhihu.Comment.RightComment){
$list.css('height','100%');
$icm.show().bind('DOMNodeRemoved',function(event){
var $icm=$(event.target);
if(!$icm.is('.zm-item-comment'))return;
var $list=$icm.hide().closest('.zm-comment-list')
, $cm=$list.closest('.zm-comment-box:visible');
if($cm.length){
//console.log('Refreshing comment list');
if($list.children().length==1){
$('.izh-quick-block-switch',$cm).add('.izh-buttons-cm-R',$cm).hide();
}
iZhihu.Comment.box($cm,false,false);
}
});
if($cm.length){
var countNow=$list.children().length
, countAll=parseInt($cm.attr('data-count'))
, countRest=countAll-countNow
, notAll=$(this).has('.load-more').length
;
if((!notAll)&&countRest>1){
return;
}
//console.log('Refreshing comment list');
$('.izh-quick-block-switch',$cm).add('.izh-buttons-cm-R',$cm).show();
iZhihu.Comment.box($cm,false,false);
if(notAll||countRest<0)$list.scrollTop($icm.get(0).offsetTop);
}
}
}else if($icm.is('.zm-comment-form')){
if(iZhihu.Comment.RightComment){
if($cm.length){
var $rcm=$icm;
$icm=$rcm.closest('.zm-item-comment');
$rcm.find('a.zm-comment-close.zm-command-cancel').click(function(event){
var $rcm=$(this).closest('.zm-comment-form').hide()
, $cm=$rcm.closest('.zm-comment-box:visible');
if($cm.length){
iZhihu.Comment.box($cm,false,false);
}
});
$rcm.parent().find('a.reply.zm-comment-op-link').click(function(event){
var $rcm=$(this).closest('.zm-comment-content-wrap').children('.zm-comment-form').toggle()
, $icm=$(this).closest('.zm-item-comment')
, $list=$icm.closest('.zm-comment-list')
, $cm=$list.closest('.zm-comment-box:visible');
if($cm.length){
iZhihu.Comment.box($cm,false,false);
if($rcm.is(':visible'))$list.scrollTop($icm.get(0).offsetTop-$list.get(0).offsetTop);
$rcm.toggle();
}
});
iZhihu.Comment.box($cm,false,false);
$list.scrollTop($icm.get(0).offsetTop-$list.get(0).offsetTop);
}
}
}
});
var cmClose=function(event,alsoScrollToViewBottom){
var $cm=$(this).closest('.zm-comment-box');
if($(this).is('[name=closeform]')&&(!$cm.is('.empty')))return;
var $item=iZhihu.getItem($cm)//.attr('tabindex','-1').focus().removeAttr('tabindex')
, $itemMeta=$cm.closest('.zm-item-meta')
, alsoScroll=this.getAttribute('izh-alsoScrollToViewBottom')||''
, scrollTop=(document.body.scrollTop)?document.body.scrollTop:document.documentElement.scrollTop
;
if(alsoScroll!=='1'){
$itemMeta.find('.toggle-comment')[0].click();
setTimeout(function(){
document.body.scrollTop=scrollTop;
document.documentElement.scrollTop=scrollTop;
},100);
return;
}
iZhihu.Comment.metaScrollToViewBottom($itemMeta,function(){
$itemMeta.find('.toggle-comment')[0].click();
},false,true);
}
, $btnCC=$('<a>',{
'class':'zu-question-answer-meta-comment izh-button-cc'
, href:'javascript:void(0);'
, click:cmClose
, 'data-tip':'s$t$收起评论并跳转至所属回答'
}).text('收起')
, $buttonsL=$('<div>',{
'class':'izh-buttons-cm-L'
}).prependTo($cm)
, $buttonsR=$('<div>',{
'class':'izh-buttons-cm-R'
})
;
if(iZhihu.Comment.RightComment){
$cm.children('.zm-comment-form').find('[name=closeform]').click(cmClose);
$btnCC.clone(true).css({
'background-image': 'url("/static/img/sprites-1.9.2.png")'
, 'background-position': '-261px -62px'
, 'background-repeat': 'no-repeat'
, 'display': 'inline-block'
, 'width': 15
, 'height': 15
, 'position': 'absolute'
, 'left': 0
, 'top': 0
, 'z-index': '10000'
}).attr('data-tip','s$l$收起评论').text('').prependTo($cm)
$buttonsR.prependTo($cm);
if($list.children().length==0){
$buttonsR.hide();
}
$btnCC.css({
'float':'left'
, 'margin-left':7
}).attr('izh-alsoScrollToViewBottom','1').prepend('<i class="z-icon-izh-fold"/>').prependTo($buttonsL);
$('<a>',{
'class':'izh-button izh-back-top'
, 'data-tip':'s$l$返回顶部'
, href:'javascript:void(0);'
, click:function(){
$(this.parentNode).nextAll('.zm-comment-list').scrollTop(0);
}
}).append(
$('<i>', { 'class': 'zg-icon z-icon-fold' })
).add(
$('<a>',{
'class':'izh-button izh-show-good'
, 'data-tip':'s$l$人气妙评'
, href:'javascript:void(0);'
, click:function(){
var $e=$(this)
, $c=$e.closest('.zm-comment-box')
, $l=$c.find('.zm-comment-list')
, $n=$l.find('.zm-item-comment').has('span.like-num.nil')
;
if($e.hasClass('on')){
$e.attr('scrollTop_showgood',$l[0].scrollTop);
$n.show();
iZhihu.Comment.box($c,false,false);
$e.removeClass('on');
var scrollTop = parseInt($e.attr('scrollTop'));
if(!isNaN(scrollTop))
$l.scrollTop(scrollTop);
}else{
$e.attr('scrollTop',$l[0].scrollTop);
$n.hide();
iZhihu.Comment.box($c,false,false);
$e.addClass('on');
var scrollTop = parseInt($e.attr('scrollTop_showgood'));
if(!isNaN(scrollTop))
$l.scrollTop(scrollTop);
}
}
}).append(
$('<i>', { 'class': 'zg-icon zg-icon-comment-like' })
)
).css({
'float':'right'
}).appendTo($buttonsR);
iZhihu.Comment.PageNotScroll = true;
$list.scroll(function(){
var $e=$(this)
, $b=$e.closest('.zm-comment-box').find('.izh-back-top')
;
if($e.height() < this.scrollTop){
$b.removeClass('off');
}else{
$b.addClass('off');
}
}).scroll();
iZhihu.Comment.PageNotScroll = false;
var icmFocus=null;
$list.css({
'height':$cm.is('.empty')?'':'100%'
, 'overflow':'auto'
});
$list.children('.zm-item-comment').each(function(i,e){
var $icm=$(e);
$icm.bind('DOMNodeRemoved',function(event){
var $icm=$(event.target);
if(!$icm.is('.zm-item-comment'))return;
var $cm=$icm.hide().closest('.zm-comment-box:visible');
if($cm.length){
if($(this).closest('.zm-comment-list').children().length==1){
$('.izh-quick-block-switch',$cm).add('.izh-buttons-cm-R',$cm).hide();
}
iZhihu.Comment.box($cm,false,false);
}
});
$icm.find('span.like-num').each(function(i,e){
var tip=e.getAttribute('data-tip').replace('s$r$','s$l$');
if(tip!='')e.setAttribute('data-tip',tip);
});
if (!icmFocus&&focusName&&focusName!=''
&& $icm.children('a.zg-anchor-hidden[name="'+focusName+'"]').length){
icmFocus=$icm.get(0);
}
});
iZhihu.Comment.open($item,$cm,icmFocus);
utils.observeDOMNodeAdded($cm.children('.zm-comment-form').children('.zm-comment-editable')[0],function(event){
var $e=$(event.target)
, $f=$e.closest('.zm-comment-form')
, $l=$f.prev('.zm-comment-list')
, $c=$f.closest('.zm-comment-box[opened=1]')
, ch=$c.height()
, winHeight=iZhihu.$win.height()
, scrollTop=document.documentElement.scrollTop+document.body.scrollTop
, navHeight=iZhihu.$body.children().first().height()
, bar=$('.zu-global-notify.zu-global-notify-info:visible')
, barHeight=!bar.length?0:bar.outerHeight()
, baseTop=((barHeight&&bar.css('position')=='fixed')?barHeight:(scrollTop>barHeight?0:barHeight-scrollTop))+navHeight
, minHeight=112
, maxHeight=winHeight-baseTop-35
;
if(!$c.length)return;
if(!$c.is('.empty')&&$l.children().length>0){
lh=$l.height();
}else{
lh=0;
}
var $t=$e.clone().appendTo(document.body)
.css({'position':'absolute','z-index':'-1','width':$e.width(),'min-height':22})
, eh=$t.height()
, h=Math.max(eh,lh)+(lh==0?90:100)
;
$t.remove();$t=null;
if(isNaN(ch)||ch!=h){
$c.attr('izh_cmHeight',h);
iZhihu.Comment.box($c,true,false);
}
if(!$f.is('.expanded')&&event.addedNodes.length){
$f.css({'height':'','bottom':''});
}else{
eh+=30;
$f.css(lh==0||eh>ch?{'height':'','bottom':25}:{'height':eh,'bottom':''});
}
});
}else{
$btnCC.prepend('<i class="z-icon-fold"/>')
.css({
'position':'absolute'
, 'cursor':'pointer'
, 'margin-left':-1
, 'left':0
, 'background-color':'#fbfbfb'
, 'padding':'2px 5px'
, 'bottom':-22
, 'border':'1px solid #ddd'
, 'border-radius':'4px'
}).insertBefore($cm.find('.zm-comment-box-ft'));
}
if(iZhihu.QuickBlock){
iZhihu.QuickBlock.addQuickBlockInCommentList($buttonsL);
}
}
};
return this;
}
/**
* @class Noti7
*/
function Noti7(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu || !iZhihu.config['Noti7']) {
return null;
}
iZhihu.Noti7 = this;
this.$noti7 = $('#zh-top-nav-live-new');
this.$frame = $('.zm-noti7-frame',this.$noti7);
this.$content = $('.zm-noti7-content-body',this.$noti7);
this.$footer = $('.zm-noti7-popup-footer',this.$noti7);
this.$tab = $('.zm-noti7-popup-tab-container','#zh-top-nav-live-new-inner');
this.css =
['#zh-top-nav-live-new .zm-noti7-popup-footer a[unreadonly="1"]{color:#225599 !important;text-shadow:0 0 1px #225599;}'
,''].join('\n');
this.enhance = function(){
iZhihu.Noti7.$tab.find('.zm-noti7-popup-tab-item').each(function(i,e){
utils.observeDOMAttrModified(e,function(event){
var $e=$(event.target);
if($e.is('.zm-noti7-popup-tab-item.current')){
var currentClass=$e.attr('class')
, $bFilterRead=$('.izh-filter-read',iZhihu.Noti7.$footer);
if(currentClass!=$bFilterRead.attr('currentClass')){
$bFilterRead.attr({'unreadOnly':'','currentClass':currentClass});
}
}
});
});
iZhihu.Noti7.$footer.append(
$('<a>',{
'class':'izh-filter-read'
, href:'javascript:void(0);'
, 'unreadOnly':''
, click:function(){
var unreadOnly=this.getAttribute('unreadOnly')=='1'
, $contentVisible=iZhihu.Noti7.$content.filter(':visible')
, $scroller=$contentVisible.closest('.zh-scroller-inner')
, $items=$contentVisible.find('.zm-noti7-content-item')
;
unreadOnly=!unreadOnly;
this.setAttribute('unreadOnly',unreadOnly?'1':'');
if(unreadOnly){
$scroller.attr('scrollTop',$scroller[0].scrollTop);
$items.not('.unread').hide();
var scrollTop = parseInt($scroller.attr('scrollTop_unread'));
if(!isNaN(scrollTop))
$scroller.scrollTop(scrollTop);
}else{
$scroller.attr('scrollTop_unread',$scroller[0].scrollTop);
$items.not('.unread').show();
var scrollTop = parseInt($scroller.attr('scrollTop'));
if(!isNaN(scrollTop))
$scroller.scrollTop(scrollTop);
}
}
}).text('隐藏已读')
);
};
return this;
}
/**
* @class QuickBlock
*/
function QuickBlock(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu || !iZhihu.config['QuickBlock']) {
return null;
}
iZhihu.QuickBlock = this;
/*
var css_QuickBlock = {
'background-position':'-146px -202px'
, 'width':16
, 'height':16
}
;
*/
this.Pending = {Users:',',Count:0};
this.Blocking = {Users:',',Count:0};
this.Unfollowed = {Users:',',Count:0};
this.Refollowed = {Users:',',Count:0};
this.Users2B = []
this.Users2BBQ = []
this.css =
['.izh_blockCart{background-color:#0771C1;position:fixed;right:0;z-index:9;padding:0 30px 0 60px;border:1px solid #0771C1;border-left-width:10px;border-top-left-radius:6px;}'
,'.izh_blockCart .do{color:#fff;text-align:center;display:block;margin:2px;min-width:80px;width:100%;height:20px;}'
,'.izh_blockCart.pending .do:after{text-decoration:blink;color:red;}'
,'.izh_blockCart .do:after{position:relative;content:attr(izh_num2B);}'
,'.izh_blockCart .do .button{color:#fff;}'
,'.izh_blockCart .frame{overflow-y:auto;overflow-x:hidden;position:absolute;top:25px;bottom:0;left:0;right:0;background-color:#fff;padding-top:5px;}'
,'.izh_blockCart .list{display:block;margin:2px;width:100%;padding-right:5px;}'
,'.izh_blockCart .list .rel{border-width:0 2px;border-style:solid;border-color:#fff;width:24px;height:18px;}'
,'.izh_blockCart .list.i_fo .rel{border-left-color:#259;background-position:-120px -184px;}'
,'.izh_blockCart .list.fo_i .rel{border-right-color:#259;background-position:-120px -164px;}'
,'.izh_blockCart .list.i_fo.fo_i .rel{background-position:-78px -200px;}'
,'.izh_blockCart .user2B{display:block;margin:2px 0;padding:0 40px 0 60px;}'
,'.izh_blockCart .user2B i.zg-icon{display:block;position:absolute;right:0;margin-top:5px;}'
,'.izh_blockCart .user2B .name{display:block;color:#fff;background-color:#000;white-space:nowrap;padding:2px 5px;border-radius:3px;}'
,'.izh_blockCart .list .user2B.unfo .name{background-color:#f00;}'
,'.izh_blockCart .user2B .del{display:block;position:absolute;margin-left:-4.5em;}'
,'.izh_blockCart .user2B i.say{display:block;position:absolute;margin-left:-44px;border-radius:6px 6px 0 6px;border:1px solid #999;padding:0 5px 0 3px;}'
,'.izh_blockCart .user2B i.say_1{display:block;position:absolute;margin-left:-10px;height:6px;background-color:#fff;width:6px;margin-top:17px;border-bottom:1px solid #999;}'
,'.izh_blockCart .user2B i.say_2{display:block;position:absolute;margin-left:-9px;height:6px;background-color:#fff;width:6px;margin-top:17px;border-radius:0 0 0 6px;border:1px solid #999;border-width:0 0 1px 1px}'
,'.izh-quick-block{position:absolute;text-align:center;width:4em;margin-top:1.5em;white-space:nowrap;}'
,'.izh-quick-block [class^=izh-quick-block]{position:absolute;display:block;white-space:nowrap;}'
,'.izh-quick-block:after{content:attr(izh_num2B);margin-top:1em;display:block;}'
,'.zm-comment-hd .izh-quick-block-pend{position:absolute;left:0;top:40px;}'
,''
].join('\n');
this.unblockAll = function(){
$('.blocked-users > .item-card').each(function(i,e){
var uid=$(e).attr('data-id');
$.post('/settings/unblockuser',$.param({
_xsrf:$('input[name=_xsrf]').val()
, uid:uid
}),function(r){
//console.log(r);
});
});
};
this.doUnfollow = function(){
var $e = iZhihu.QuickBlock.Users2BBQ.shift()
if(typeof $e === 'undefined') return
var uid=$e.attr('uid');
$.post('/node/MemberFollowBaseV2'
, $.param({
method:'unfollow_member'
, params:JSON.stringify({'hash_id':uid})
, _xsrf:$('input[name=_xsrf]').val()
})
, function(r){
var query=decodeURIComponent(this.data)
, params=utils.getParamInQuery(query,'params')
;
eval('params='+params);
var bid='fb-'+params.hash_id
, who=bid+','
, unfollowed=iZhihu.QuickBlock.Unfollowed
, refollowed=iZhihu.QuickBlock.Refollowed
, $cartDIV=$('#izh_blockCart')
, $user=$cartDIV.find('.user2B[uid='+params.hash_id+']')
, $list=$user.closest('.list')
;
$user.prependTo($list.next().next());
if(unfollowed.Users.indexOf(','+who)<0)
unfollowed.Users += who;
if(refollowed.Users.indexOf(','+who)>=0)
refollowed.Users = refollowed.replace(','+who,',');
}
).always(function(data, textStatus, jqXHR){
iZhihu.QuickBlock.doUnfollow()
});
};
this.doQuickBlock = function(){
var $e = iZhihu.QuickBlock.Users2BBQ.shift()
if(typeof $e === 'undefined') return
var blocking = iZhihu.QuickBlock.Blocking
, href = $e.attr('href')
, who = href.split('/').pop()+','
;
if(typeof blocking === 'undefined' || !blocking){
blocking = iZhihu.QuickBlock.Blocking = { Users:',', Count:0 };
}else if(blocking.Users.indexOf(','+who) >= 0){
return; // Already blocking
}
var $cartDIV=$('#izh_blockCart');
$cartDIV.addClass('blocking');
blocking.Users += who;
blocking.Count ++;
$.post(href+'/block',$.param({
action:'add'
, _xsrf:$('input[name=_xsrf]').val()
}),function(r){
var href=this.url.replace('/block','')
, userID=href.split('/').pop()
, who=','+userID+','
, blocking=iZhihu.QuickBlock.Blocking
;
if(0==--blocking.Count)$cartDIV.removeClass('pending');
if(blocking.Users.indexOf(who) < 0)
return; // No this user in pending
blocking.Users = blocking.Users.replace(who,',');
$('#izh_blockCart .user2B[href="'+href+'"]').find('.del')[0].click();
$('a[href$="'+href+'"]').css('text-decoration','line-through');
}).always(function(data, textStatus, jqXHR){
iZhihu.QuickBlock.doQuickBlock()
});
};
this.resizeBlockCart = function($cartDIV){
function parseCssPx($item, name) {
var m = $item.css(name);
if (m != 'undefined') {
return parseInt(m.replace('px',''));
}
return 0;
}
var $userDIV = $cartDIV.find('.list .user2B');
var $titleBox = $('#izh_blockCart .do');
var h = parseCssPx($cartDIV.find('div.frame'),'paddingTop')
+ ($userDIV.height() + parseCssPx($userDIV,'marginTop')) * $userDIV.length
+ $titleBox.height()
+ parseCssPx($titleBox, 'marginTop')
+ parseCssPx($titleBox, 'marginBottom');
if(h+iZhihu.$main.offset().top<iZhihu.$win.height()){
$cartDIV.css({'height':h,'bottom':''});
}else{
$cartDIV.css({'height':'','bottom':0});
}
};
this.getCartDIV=function(){
var $cartDIV=$('#izh_blockCart');
if(!$cartDIV.length){
$cartDIV=$('<div>', { id: 'izh_blockCart', 'class': 'izh_blockCart' }).css({
'top':iZhihu.$main.offset().top
}).append(
$('<div>',{
'class':'do'
, 'izh_num2B':0
, 'title':'下为「候审」列表\n点击左上角可收起/展开\n数字为人犯总数(红色表示仍有人犯正待入列)'
}).append(
$('<a>',{
'class':'button delAll'
, href:'javascript:void(0);'
, title:'清空「候审」列表'
, click:function(){
var $cartDIV=$('#izh_blockCart');
$cartDIV.css('bottom','').find('.list').empty();
$(this.parentNode).attr('izh_num2B','0');
$cartDIV.css('height','');
}
}).text('大赦').css({
'display':'block'
, 'position':'absolute'
, 'left':24
})
).append(
$('<input>',{
'class':'unfo'
, href:'javascript:void(0);'
, type:'checkbox'
, title:'选中后,将我关注之人标出,改以放逐(取消关注)论处'
, click:function(){
var $cartDIV=$(this.parentNode.parentNode)
, $users=$('.frame .list.i_fo .user2B',$cartDIV)
, $action=$('.action',this.parentNode);
if(this.checked){
$users.addClass('unfo');
$action.text('放逐').css('padding','0 2em 0 0').attr('title','对列表内我关注之人取消关注');
}else{
$users.removeClass('unfo');
$action.text('收监').css('padding','0 0 0 2em').attr('title','将下列人犯逐一加入黑名单');
}
}
}).css({
'display':'block'
, 'float':'left'
, 'height':22
, 'line-height':22
})
).append(
$('<span>',{
'class':''
, href:'javascript:void(0);'
, title:'选中后,将我关注的人标出,准备「取消关注」'
}).text('从轻').css({
'display':'block'
, 'float':'left'
, 'margin-right':20
})
).append(
$('<a>',{
'class':'button action'
, href:'javascript:void(0);'
, title:'将下列人犯逐一加入黑名单'
, click:function(){
var $cartDIV=$(this.parentNode.parentNode);
if($('.unfo',this.parentNode).is(':checked')){
$('.list.i_fo .user2B',$cartDIV).each(function(i,e){
iZhihu.QuickBlock.Users2BBQ.push($(e))
});
iZhihu.QuickBlock.doUnfollow();
}else{
$('.list .user2B',$cartDIV).each(function(i,e){
iZhihu.QuickBlock.Users2BBQ.push($(e))
});
iZhihu.QuickBlock.doQuickBlock();
}
}
}).text('收监').css({
'display':'block'
, 'float':'right'
, 'margin-left':20
, 'margin-right':-10
, 'padding':'0 0 0 2em'
})
).append(
$('<a>',{
'class':'zg-icon zg-icon-double-arrow'
, href:'javascript:void(0);'
, click:function(){
var $cartDIV=$('#izh_blockCart');
if($cartDIV.attr('mini')!='1'){
$cartDIV.find('.frame').hide();
$cartDIV.css({'height':'','bottom':''});
$cartDIV.attr('mini','1');
}else{
$cartDIV.find('.frame').show();
iZhihu.QuickBlock.resizeBlockCart($cartDIV);
$cartDIV.attr('mini','0');
}
}
}).css({
'position':'absolute'
, 'left':0
, 'top':5
})
)
).append(
$('<div>',{'class':'frame'}
).append(
$('<div>',{
'class':'list i_fo fo_i'
})
).append(
$('<div>',{
'class':'list i_fo'
})
).append(
$('<div>',{
'class':'list fo_i'
})
).append(
$('<div>',{
'class':'list'
})
)
).appendTo(iZhihu.$body);
}
return $cartDIV
}
this.in2BlockCart = function(url,retriedCount){
var $e = iZhihu.QuickBlock.Users2B.shift() || null
, $cartDIV = iZhihu.QuickBlock.getCartDIV()
$cartDIV.addClass('pending');
if(typeof retriedCount == 'undefined')
retriedCount = 0
//console.log(retriedCount)
if (!$e || $e.length === 0){
if((url||'')==''){
$cartDIV.removeClass('pending')
}else{
$.ajax(['',url].join(''),{
type:'GET'
, maxRetryCount: 3
}).done(function(data, textStatus, jqXHR){
$.each(data.payload,function(i,e){
iZhihu.QuickBlock.addUser2B(e)
})
iZhihu.QuickBlock.in2BlockCart(data.paging.next)
}).fail(function(data,textStatus,jXHR){
if (++retriedCount < this.maxRetryCount){
iZhihu.QuickBlock.in2BlockCart(url,retriedCount)
}else{
$cartDIV.removeClass('pending')
}
})
}
return
}
var href = $e.attr('href')
, username = href.split('/').pop()
, who = username+','
;
if($cartDIV.find('.user2B[href="'+href+'"]').length){
return;
}
$.ajax('/node/MemberProfileCardV2?'+$.param({params:JSON.stringify({'url_token':username})}), {
type: 'GET'
, user2B: $e
, maxRetryCount: 3
}).done(function(data, textStatus, jqXHR){
iZhihu.QuickBlock.addUser2B(data)
iZhihu.QuickBlock.in2BlockCart(url)
}).fail(function(data,textStatus,jXHR){
if (++retriedCount < this.maxRetryCount){
iZhihu.QuickBlock.Users2B.unshift(this.user2B)
iZhihu.QuickBlock.in2BlockCart(url,retriedCount)
}else{
}
}).always(function(data,textStatus,jXHR){
$('#izh_blockCart').removeClass('pending');
});
};
this.addUser2B=function(data){
if (data === '') return
var $html=$(data.replace(utils.RegexSrcPic, ''))
, isZHPC=$html.is('.zh-profile-card')
, $avatarLink=isZHPC?$html.find('.avatar-link:first'):$html.find('.zm-item-link-avatar:first')
, href=$avatarLink.attr('href')
if((href||'')=='')return
var userID=href.substr(8)
, userName=isZHPC?$avatarLink.text():$avatarLink.attr('title')
, $btnFollow=$html.find('button[data-follow]')
, hashID=!$btnFollow.length?'':$btnFollow.attr('data-id')
, f_=$btnFollow.length&&$btnFollow.is('.zg-btn-unfollow')
, _f=$btnFollow.length&&$btnFollow.is('[data-followme=1]')
, cssF=_f||f_?'zg-icon rel ':''
, $cartDIV=iZhihu.QuickBlock.getCartDIV()
, $cart=$cartDIV.find('.list')
, who=','+userID+','
;
if(hashID==''){
return; // User blocked or you blocked
}
if($cartDIV.find('.list .user2B[href="'+href+'"]').length){
return; // User already in block list
}
var $user2B=$('<div>',{
'class':'user2B'+(f_&&$cartDIV.find('.do .unfo:checked').length?' unfo':'')
, 'href':href
, 'uid':hashID
})
.append(
$('<a>',{
'class':'button del'
, href:'javascript:void(0);'
, click:function(){
var $user=$(this).closest('.user2B')
, $cartDIV=$('#izh_blockCart')
;
$user.remove();
var num2B=$cartDIV.find('.list .user2B').length;
$cartDIV.children('.do').attr('izh_num2B',num2B==0?'0':num2B>999?'1k+':num2B);
if(num2B)
iZhihu.QuickBlock.resizeBlockCart($cartDIV);
else
$cartDIV.css('height','');
}
}).text('赦')
).append(
$('<i>',{
'class':'say'
, 'data-tip':'p$t$'+userID
}).text('冤枉')
).append($('<i>',{'class':'say_1'})
).append($('<i>',{'class':'say_2'})
).append($('<i>',{'class':cssF})
).append(
$('<a>',{
'class':'name'
, href:href
, target:'_blank'
}).text(userName)
).show()
;
if(f_&&_f){
$cart.eq(0).append($user2B);
}else if(f_){
$cart.eq(1).append($user2B);
}else if(_f){
$cart.eq(2).append($user2B);
}else{
$cart.eq(3).append($user2B);
}
var num2B=$cartDIV.find('.list .user2B').length;
$cartDIV.children('.do').attr('izh_num2B',num2B==0?'0':num2B>9999?'10k+':num2B);
iZhihu.QuickBlock.resizeBlockCart($cartDIV);
}
this.addQuickBlock = function($a){
var $voteInfo=$('.zm-item-vote-info',$a)
if($voteInfo.length){
var $voters=$voteInfo.children('.voters')
if($voters.length){
var s=[',',$voteInfo.attr('data-votecount'),'个也不能忍,果断撕'].join('')
, aid=$a.attr('data-aid')||$a.children('[itemprop="ZReactor"]').attr('data-id')
, url=['/',$a.attr('data-type')=='p'?'post':'answer','/',aid,'/voters_profile'].join('')
$('<a>',{href:'javascript:;','class':'text'}).text(s).bind('click',function(event){
var $t=$a.find('.author-info > a.name,.zm-item-answer-author-info > a.author-link')
if($t&&$t.length){
iZhihu.QuickBlock.Users2B.push($t)
}
iZhihu.QuickBlock.in2BlockCart(url)
}).appendTo($voteInfo)
}
}
};
this.addQuickBlockInOneComment = function($cmItem){
var $where=$('.zm-comment-hd',$cmItem);
if($where.find('.izh-quick-block-pend').length)return;
$('<a>',{
'class':'izh-quick-block-pend izh-button'
, href:'javascript:void(0);'
, 'data-tip':'s$l$将此人列入候审名单以待收监'
}).text('候审').click(function(){
var $e = $(this).next()
iZhihu.QuickBlock.Users2B.push($e)
iZhihu.QuickBlock.in2BlockCart();
}).prependTo($where).hide();
};
this.addQuickBlockInCommentList = function($where){
// Region: 快速屏蔽
var $cm=$where.is('.zm-comment-box')?$where:$where.closest('.zm-comment-box')
, $u=$('.zm-item-comment',$cm)
;
$u.each(function(i,e){
iZhihu.QuickBlock.addQuickBlockInOneComment($(e));
});
var $btnQuickBlock=$('<a>',{
'class':'izh-quick-block-switch izh-button'
, href:'javascript:void(0);'
, 'data-tip':'s$t$开始从评论者中选择屏蔽对象'
}).text('快速屏蔽').css({'margin-left':7}).prependTo($where).click(function(){
if(this.getAttribute('on')=='1'){
$('.zm-comment-hd .izh-quick-block-pend').hide();
$(this).attr({'data-tip':'s$t$开始从评论者中选择屏蔽对象','on':'0'}).removeClass('on');
}
else{
$('.zm-comment-hd .izh-quick-block-pend').show();
$(this).attr({'data-tip':'s$t$结束从评论者中选择屏蔽对象','on':'1'}).addClass('on');
}
})
;
if($cm.is('.empty')){
$btnQuickBlock.hide();
}
// Region end
};
iZhihu.$body.bind('DOMNodeInserted',function(event){
$(event.target).filter('#zh-tooltip').bind('DOMNodeInserted',function(event){
var $a=$(event.target).filter('#zh-tooltip-people').find('a[name=focus]')
, bid=$a.attr('id')
, who=','+bid+','
;
if($a.is('.zg-btn-unfollow')&&iZhihu.QuickBlock.Unfollowed.Users.indexOf(who)>=0){
$a.text('关注').removeClass('zg-btn-unfollow').addClass('zg-btn-follow');
}
if($a.is('.zg-btn-follow')&&iZhihu.QuickBlock.Refollowed.Users.indexOf(who)>=0){
$a.text('取消关注').removeClass('zg-btn-follow').addClass('zg-btn-unfollow');
}
});
});
return this;
}
/**
* @class QuickFavo
*/
function QuickFavo(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu || !iZhihu.config['QuickFavo']) {
return null;
}
iZhihu.QuickFavo = this;
this.DefaultCount = 4;
this.PinnedList = iZhihu.config['QuickFavoPinned'];
this.css =
['.izh-Pin4QuickFavo{padding:3px 5px 0;float:right;display:block;margin-top:4px;margin-right:2em;line-height:1.25;}'
,'.izh-Pin4QuickFavo .zm-item-top-btn{visibility:visible;margin:0 4px;float:right;}'
,'div.izh_fav{position:absolute;z-index:9999;display:none;border:1px solid #999999;background-color:#fff;border-radius:5px 5px 5px 0;margin-left:-1px;}'
,'div.izh_fav .title{padding:0 5px;background-color:#0874c4;color:#fff;font-weight:bold;font-size:15px;text-align:center;border-radius:3px 3px 0 0;}'
,'div.izh_fav a.fav{display:block;clear:both;float;left;padding:0 36px 0 24px;line-height:2;}'
,'div.izh_fav a.fav i{position:absolute;margin-top:0.5em;}'
,'div.izh_fav a.fav i.spinner-gray{left:0;}'
,'div.izh_fav a.fav i.z-icon-collect{left:10px;visibility:hidden;background-position:-56px -36px;}'
,'div.izh_fav a.fav.selected i.z-icon-collect{visibility:visible;}'
,'div.izh_fav a.fav:hover{text-decoration:none}'
,'div.izh_fav a.fav span{float:right;display:block;margin-right:-32px}'
,'.meta-item.on{position:relative;z-index:10000;background-color:#fff;border:1px solid #999999;border-top-color:#fff;margin:-1px -8px -1px -1px;padding:0 7px;border-radius:2px 2px 3px 3px;}'
,''].join('\n');
this.addQuickFavo = function($v,$a){
if($v.length){
if($a.children('.izh_fav').length<=0){
$('<div>', { 'class': 'izh_fav' })
.append($('<i>', { 'class': 'spinner-gray' }))
.append(' 加载中... ')
.bind('mouseover', function(){
$(this).show().parent().find('.meta-item[name=favo]').addClass('on');
})
.bind('mouseout', function(){
$(this).hide().parent().find('.meta-item[name=favo]').removeClass('on');
})
.appendTo($a);
}
$v.bind('mouseenter',function(){
var $a=iZhihu.getItem($(this))
, $m=$(this).addClass('on').closest('.zm-item-meta')
, aid=$a.attr('data-aid')
, $op=$(this).offsetParent()
, bottom1=parseInt($op.css('margin-bottom'))
, bottom2=parseInt($a.css('padding-bottom'))
, pos=$(this).position()
;
$a.children('.izh_fav').css({
'bottom':(isNaN(bottom1)?0:bottom1)+(isNaN(bottom2)?0:bottom2)+$op.height()-pos.top
, 'left':pos.left+$m.position().left
}).show();
$.getJSON('/collections/json',$.param({answer_id:aid}),function(result,status,xhr){
var aid=this.url.substr(this.url.indexOf('answer_id=')+10)
, sel=pageIs.Question?'.zm-item-answer'
:pageIs.Home?'.feed-item'
:pageIs.Answer?'.zm-item-answer'
:''
, $a=$(sel+'[data-aid='+aid+']')
, $v=$a.children('.izh_fav').empty().append($('<div>',{'class':'title',title:'以下为最近选择的收藏夹'}).append('快速收藏'))
;
if(''==sel)return;
var favAll=result.msg[0]
, favSel=result.msg[1]
, num=iZhihu.QuickFavo.DefaultCount
, fav=new Array()
, favNormal=new Array()
;
$.each(favAll,function(i,e){
var fID=e[0]
, pinned=iZhihu.QuickFavo.PinnedList[fID]
;
if(pinned){
fav.push(e);
}else{
favNormal.push(e);
}
});
num -= fav.length;
if(num > 0){
fav=fav.concat(favNormal.slice(0,num));
}
favNormal.length=0;
while(fav.length){
var e=fav.shift()
, fID=e[0]
, fName=e[1]
;
favNormal[fID]=fName;
var $f=$('<a/>',{
'class':'fav'
, href:'javascript:;'
, aid:aid
, fid:fID
}).text(fName).click(function(){
var u='/collection/'
, $f=$(this)
, $i=$f.children(':first')
;
if($i.hasClass('spinner-gray'))return;
u+=$f.hasClass('selected')?'remove':'add';
$i.attr('class','spinner-gray');
$.post(u,$.param({_xsrf:$('input[name=_xsrf]').val(),answer_id:$(this).attr('aid'),favlist_id:$(this).attr('fid')}),function(result){
var act=this.url.substring(this.url.lastIndexOf('/')+1)
, fid=utils.getParamInQuery(this.data,'favlist_id')
, aid=utils.getParamInQuery(this.data,'answer_id')
, sel=pageIs.Question?'.zm-item-answer'
:pageIs.Home?'.feed-item'
:''
, $vi=''==sel?null:$(sel+'[data-aid='+aid+'] .izh_fav a[fid='+fid+']')
, inc=0;
if(''==sel)return;
if(act=='remove'&&result.msg=='OK'){
$vi.removeClass('selected');
inc=-1;
}else if(act=='add'&&result.msg.length){
$vi.addClass('selected');
inc=1;
}
if(inc!=0){
$vi.children('span').text(parseInt($vi.children('span').text())+inc);
}
$vi.children(':first').attr('class','z-icon-collect');
});
}).prepend($('<i/>',{'class':'z-icon-collect'}))
.append($('<span/>').text(e[3]));
$f.appendTo($v/*.children(pinned?'.pinned':'.normal')*/);
};
$.each(favSel,function(i,e){
if(favNormal[e])
$v.find('a.fav[fid='+e+']').addClass('selected');
});
});
});
$v.bind('mouseleave',function(){
var $a=iZhihu.getItem($(this).removeClass('on'));
$a.children('.izh_fav').hide();
});
}
};
iZhihu.$body.bind('DOMNodeInserted',function(event){
var $e=$(event.target);
if($e.is('.modal-dialog')){
$e.bind('DOMNodeInserted',function(event){
var $e=$(event.target)
, $favList=$e.find('.zm-favo-list-content')
;
if($favList.length){
var $favItems=$favList.children('.zm-favo-list-item-link[data-lid]')
, funcPin=function(e){
var pinned=e.checked
, $e=$(e)
, $f=$e.closest('.zm-favo-list-item-link')
;if(!$f.length)return;
var lid=$e.attr('lid')
, $checks=$e.closest('.zm-favo-list-content').find('.izh-Pin4QuickFavo .t_jchkbox')
, time=50
, cssStart={position:'relative','background-color':'#0874C4','z-index':'100'}
, cssEnd={position:'','background-color':'','z-index':''}
, funcRollUp=function(){
var $b=$e.closest('.zm-favo-list-item-link')
, $a=$b.prev()
;
if(!$a.length||($a.hasClass('pinned')&&parseInt($a.attr('data-lid'))<parseInt($b.attr('data-lid')))){
return;
}
$b.animate({bottom:$a.outerHeight()},{
duration:time
, step:function(now){$b.css(cssStart);}
, complete:function(){
$b.css($.extend({bottom:0},cssEnd));
$b.insertBefore($a);
funcRollUp();
}
});
}
, funcRollDown=function(){
var $a=$e.closest('.zm-favo-list-item-link')
, $b=$a.next()
;
if(!$b.length||(!$b.hasClass('pinned')&&parseInt($b.attr('index'))>parseInt($a.attr('index')))){
return;
}
$a.animate({top:$b.outerHeight()},{
duration:time
, step:function(now){$a.css(cssStart);}
, complete:function(){
$a.css($.extend({top:0},cssEnd));
$a.insertAfter($b);
funcRollDown();
}
});
}
;
if(pinned){
$f.addClass('pinned');
funcRollUp();
}else{
$f.removeClass('pinned');
funcRollDown();
}
iZhihu.QuickFavo.PinnedList[lid]=pinned;
utils.setCfg('QuickFavoPinned',iZhihu.QuickFavo.PinnedList);
}
;
$favItems.each(function(i,e){
var lid=e.getAttribute('data-lid')
, $pin=$('<a/>',{
href:'javascript:void(0);'
, 'class':'izh-Pin4QuickFavo'
, 'lid':lid
, 'data-tip':'s$b$保持在「快速收藏」菜单顶部显示'
}).append($('<span/>').append('置顶').add('<i/>',{'class':'zm-item-top-btn'}))
.appendTo($('.zg-gray',e)).attr('index',i)
;
e.setAttribute('index',i);
$pin.bind('click',function(event){
this.checked=!this.checked;
funcPin(this);
if(this.checked){
$(this).children('span').text('取消置顶');
$(this).children('i').addClass('zm-item-top-btn-cancel');
}else{
$(this).children('span').text('置顶');
$(this).children('i').removeClass('zm-item-top-btn-cancel');
}
if(event.preventDefault)
event.preventDefault();
else if(event.stopPropagation)
event.stopPropagation();
else
event.cancelBubble=true;
return false;
})[0].checked=false;
if(iZhihu.QuickFavo.PinnedList[lid]){
$pin.click();
}
});
}
});
}
});
return this;
}
/**
* @class SearchingList
*/
function SearchingList(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu) {
return null
}
iZhihu.SearchingList = this
this.$topSearch = $('#zh-top-search-form')
this.$topSearchInput = $('#zh-top-search-form > input#q')
if (!this.$topSearch.length) return
this.SearchEngineOutsideList = {
'google': {icon:'https://www.google.com/favicon.ico',url:'https://www.google.com/?q=site:zhihu.com%20{0}#q=site:zhihu.com+{0}'}
, 'baidu': {icon:'http://www.baidu.com/favicon.ico',url:'http://www.baidu.com/s?wd=site:zhihu.com%20{0}'}
}
utils.observeDOMNodeAdded(this.$topSearch[0],function(event){
var _a = event.addedNodes || []
if (!_a.length) return
utils.observeDOMNodeAdded(_a[0],function(event){console.log(iZhihu.config['SearchEngineOutside'])
var _a = event.addedNodes || [null]
, $item = $(_a[0])
, seoKey = iZhihu.config['SearchEngineOutside'] || 'baidu'
, seo = iZhihu.SearchingList.SearchEngineOutsideList[seoKey] || {icon:'',url:''}
, strSearchUrl = seo.url.replace(/\{0\}/g, function(){return iZhihu.SearchingList.$topSearchInput.val()})
console.log(seoKey)
if ($item.is('.ac-row[role=option]')){
var $a = $item.children('a')
, href = $a.attr('href')
, css = 'float:right;background-position:-284px -2px;'
, $aNew = $('<a>', {class:'zg-icon',style:css,href:href,target:'_blank',click:function(event){
event.stopPropagation()
}})
if (href.indexOf('/search?') === 0) {
$aNew.css({marginTop:'0.5em'})
$item.append($('<a>', {class:'icon',style:'margin-top:0.5em;float:left',href:strSearchUrl,target:'_blank',click:function(event){
event.stopPropagation()
}}).append($('<img>', {border:0,src:seo.icon,width:16,height:16})))
} else if (href.indexOf('/question/') < 0) {
$aNew.css({marginTop:'-1.5em'})
}
$item.append($aNew)
}
})
})
return this
}
/**
* @class TopNav
*/
function TopNav(iZhihu) {
if ( typeof iZhihu === 'undefined' || !iZhihu || !iZhihu.config['TopNavAutoFold']) {
return null
}
iZhihu.TopNav = this
this.$topNav = $('body > .zu-top:first')
.on('mouseover', function(event){
this.style.top = '0'
this.setAttribute('izh-mouseover', '1')
$('#izhCSS_NotiNum').remove()
})
.on('mouseout', function(event){
this.setAttribute('izh-mouseover', '0')
iZhihu.TopNav.funcFold()
})
if (!this.$topNav.length) return
this.topNavHeight = this.$topNav.height() - 5
this.funcFold = function(event){
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop || 0
, _self = iZhihu.TopNav
, isMouseOver = '1' === (_self.$topNav.attr('izh-mouseover') || '')
, $head = $('head:first')
, $cssNotiNum = $('#izhCSS_NotiNum')
, $floatingBar = $('body > .goog-scrollfloater-floating')
if (scrollTop === 0) {
_self.$topNav.css({top:0})
} else if (!isMouseOver) {
if (scrollTop < _self.topNavHeight) {
_self.$topNav.css({top:-scrollTop})
$floatingBar.css({marginTop:-scrollTop})
} else {
_self.$topNav.css({top:-_self.topNavHeight})
$floatingBar.css({marginTop:-_self.topNavHeight})
}
if (scrollTop > 20) {
if (!$cssNotiNum.length) {
$('<style>', {
id: 'izhCSS_NotiNum'
, type: 'text/css'
}).appendTo('head:first').text('#zh-top-nav-count,#zh-top-nav-new-pm{position:absolute;top:40px;border-radius:0 !important}.top-nav-profile .zu-top-nav-userinfo{overflow:visible !important}')
}
return
}
}
$cssNotiNum.remove()
}
iZhihu.$win.scroll(this.funcFold)
this.onNodeAdded = function(event){
iZhihu.TopNav.funcFold()
$.each(event.removedNodes, function(i, e){
var $floatingBar = $(e).filter('.goog-scrollfloater').css({marginTop:''})
})
}
return this
}
allLinks = function(_name, _listSel, _listName) {
this.name = _name
this.listSel = _listSel
this.listName = _listName
this.dlgID = 'izh-dlg-' + _name
this.$dlg = null
var _initialTitle = _listName + '地址清单'
, _result = new Array()
, _loadTimes = 0
//分析内容
var processNode = function(content,$dlg){
var $qCurrent = null;
$('.zm-item-answer', content).each(function(index, item){
var $a = $(item)
, $q = $a.closest(".zm-item").children("h2").children("a")
;
if($q.length){
$qCurrent=$q;
}else if($qCurrent){
$q=$qCurrent;
}else{
return;
}
var hrefQuestion = url.data.attr["base"] + $q.attr("href").replace(url.data.attr["base"],'');
var obj = {
title: $q.text(),
//questionUrl: hrefQuestion,
answerUrl: hrefQuestion + ($a.parent().is(".zm-item-fav") ? "/answer/" + $a.attr("data-atoken") : ""),
answerAuthor: $a.find('.zm-item-answer-author-wrap a[href^="/people"]').text().trim(),
summary: $a.find(".zm-item-answer-summary").children().remove().end().text(),
content: $a.find(".zm-editable-content").html()
};
_result.push(obj);
var strTitle = utils.formatStr('* 《{title}》 * {answerAuthor}: * {summary}', obj)
, strURL = utils.formatStr('{answerUrl}', obj)
, $li = $('<li>').append($('<a>', { href: strURL, title: strTitle }).text(strURL)).css({ 'list-style-type': 'none' })
$('.izhihu-collection-links',$dlg).append($li);
var count=_result.length;
$('.izhihu-collection-info',$dlg).text('(努力加载中...已得到记录 ' + count + ' 条)');
});
};
var handler = function(pageWant,pageNow,$dlg){
if (!pageNow)pageNow=1;
if($dlg.is(':hidden')){
var count=_result.length;
$('.izhihu-collection-info',$dlg).text('(加载被终止...已得到记录 ' + count + ' 条)');
$('#zh-global-spinner').hide();
return;
}
if(pageWant==1){
$('.izhihu-collection-links',$dlg).empty();
$('#zh-global-spinner').show();
_result.length=0;
_loadTimes++;
$('.izhihu-collection-info',$dlg).text('');
}
var $pager=$(_listSel).parent().find('.zm-invite-pager')
, $lastPage=$pager.children('span').last().prev()
, totalCount=$pager.length==0?1:Number($lastPage.text())
;
if(pageWant>totalCount){
$('.izhihu-collection-info',$dlg).text('(加载完成,共得到记录 ' + _result.length + ' 条)');
$('#zh-global-spinner').hide();
$('.selAll',$dlg).click();
return;
}
var pageNext=pageWant+1;
if(pageWant==pageNow){
processNode($(_listSel).html(),$dlg);
handler(pageNext,pageNow,$dlg)
}else{
var _url=url.data.attr['base']+url.data.attr['path']+'?page='+pageWant;
$.ajax(_url,{type:'get',context:{loadTimes:_loadTimes}}).done(function(result){
if(this.loadTimes!=_loadTimes)return;
processNode(result,$dlg);
handler(pageNext,pageNow,$dlg)
});
}
};
//初始化弹出框
this.initDialog = function(){
this.$dlg=$('#'+this.dlgID);
var retVal=0<this.$dlg.length;
if(!retVal){
this.$dlg = $('<div>', { id: this.dlgID, 'class': 'modal-dialog allLinks', tabindex: '0', style: 'display: none;width:500px', name: _name, 'listSel': _listSel })
.append($('<div>', { 'class': 'modal-dialog-title modal-dialog-title-draggable' })
.append($('<span>', { 'class': 'modal-dialog-title-text' }).text(_initialTitle))
.append($('<span>', { 'class': 'modal-dialog-title-text izhihu-collection-info' }))
.append($('<span>', {
'class': 'modal-dialog-title-close'
, click: function() {
$('#zh-global-spinner').hide()
$('.modal-dialog-bg').hide()
$(this).closest('.modal-dialog').hide()
}
}))
)
.append($('<div>', { 'class': 'modal-dialog-content' })
.append($('<div>')
.append($('<div>', { 'class': 'zg-section' })
.append($('<div>', { 'class': 'izhihu-collection-links zg-form-text-input', tabIndex: '-1', style: 'height:300px;overflow-y:scroll;outline:none;' }))
.append($('<form>', { action: 'http://ilovezhihu.duapp.com/saveMe.py', method: 'post', target: '_blank', style: 'display:none' })
.append($('<textarea>', { style: "width: 100%;", name: "links", 'class': "izhihu-collection-links-post" }))
.append($('<input>', { name: 'title' }))
)
)
.append($('<div>', { 'class': 'zm-command' })
.append($('<div>', { 'class': 'zg-left' })
.append($('<a>', {
'class': 'zg-btn-blue reload'
, href: 'javascript:void(0);'
, click: function() {
var $d = $(this).closest('.modal-dialog')
handler(1, Number(url.data.param.query['page']), $d)
}
}).text('重新获取'))
)
.append($('<a>', {
'class': 'zg-btn-blue save'
, href: 'javascript:void(0);'
, click: function() {
var $dlg = $(this).closest('.modal-dialog-content')
, $links = $dlg.find('.izhihu-collection-links')
, $linksPost = $dlg.find('.izhihu-collection-links-post')
, $linksTitle = $linksPost.next()
, $form = $linksPost.parent()
, links = ''
;
$links.find('li a').each(function(i, e) {
links += e.getAttribute('href') + '\n'
})
$linksPost.val(links)
$linksTitle.val($('#zh-fav-head-title,.zm-profile-header-main .title-section a.name').text())
$form.submit()
}
}).text('保存'))
)
)
).appendTo(document.body)
.draggable({ handle: '.modal-dialog-title-draggable' })
if(this.$dlg.length)
retVal = true
}
return retVal
}
this.start = function($d) {
if ($('#zh-global-spinner:visible').length) return
if (!$d) $d = this.$dlg
if (!$d) return
if (!$('.izhihu-collection-links', $d).children().length) {
handler(1, Number(url.data.param.query['page']), $d)
}
}
}
/**
* 回答页
*/
if(pageIs.Answer){
var $lblQuestionMeta=$('#zh-question-meta-wrap')//question_meta
;
var $questionWrap=$('#zh-question-meta-wrap');
$questionWrap.children('.panel-container').bind('DOMNodeInserted',function(event){
window.iZhihu.Comment.processComment($(event.target));
});
if(window.iZhihu.Comment.RightComment){
//$questionWrap.children('.meta-item[name=addcomment]').prependTo($questionWrap);
window.iZhihu.Comment.processCommentButton($questionWrap);
if(!$('#izh_QuestionShadow').length){
$('<div>',{'class':'izh_boxShadow',id:'izh_QuestionShadow'}).css({
'z-index': '-1'
, 'position': 'relative'
, 'top': -25
, 'margin-left': -32
}).prependTo('body>.zu-main:first').hide();
}
}
//process each answer
var $listAnswers=$('.zm-item-answer,.feed-item','#zh-question-answer-wrap');
if($listAnswers&&$listAnswers.length){
$listAnswers.each(function(i,e){
window.iZhihu.Answer.processAnswer($(e),null
, izhAuthorRear
, false);
});
}
$('#zh-question-answer-wrap').bind('DOMNodeInserted',function(event){
var $na=$(event.target).filter('.zm-item-answer');
if($na.length){
window.iZhihu.Answer.processAnswer($na,null
, izhAuthorRear
, false);
}
});
var $cm=$('.zm-comment-box',$questionWrap);
if($cm.length && $cm.is(':visible')){
var focusName = iZhihu.Comment.scrollFocusCommentOnPageLoad($cm);
iZhihu.Comment.metaScrollToViewBottom($cm.closest('.zm-item-meta'),function(){
iZhihu.Comment.processComment($cm, focusName);
});
}
}
/**
* 收藏页
*/
if(pageIs.Collection){
//添加按钮
$('#zh-list-meta-wrap')
.append($('<span>', { 'class': 'zg-bull' }).text('•'))
.append($('<a>', { href: 'javascript:;', id: 'getAllLinks' }).text('地址清单'));
var btn = $('#getAllLinks');
var result = [];
//注册点击事件
btn.click(function(){
var allLinksCollection=new allLinks('Collections','#zh-list-answer-wrap','收藏夹内容');
if(!allLinksCollection.initDialog())return;
$('.modal-dialog-bg').show();
var y = ($win.height() - allLinksCollection.$dlg.width()) / 2
, x = ($win.width() - allLinksCollection.$dlg.width()) / 2
;
allLinksCollection.$dlg.css({'top': y, 'left': x}).fadeIn('slow');
allLinksCollection.start();
});
}
if(pageIs.Answers){
//添加按钮
$('.zm-profile-section-name')
.append($('<span>', { 'class': 'zg-bull' }).text('•'))
.append($('<a>', { href: 'javascript:;', id: 'getAllLinks' }).text('地址清单'));
var btn = $('#getAllLinks');
var result = [];
//注册点击事件
btn.click(function(){
var allLinksAnswers=new allLinks('Answers','#zh-profile-answer-list','用户回答');
if(!allLinksAnswers.initDialog())return;
$('.modal-dialog-bg').show();
var y = ($win.height() - allLinksAnswers.$dlg.width()) / 2
, x = ($win.width() - allLinksAnswers.$dlg.width()) / 2
;
allLinksAnswers.$dlg.css({'top': y, 'left': x}).fadeIn('slow');
allLinksAnswers.start();
});
}
if(pageIs.MyCollection&&window.iZhihu.QuickFavo){
var $favItems=$('#zh-favlists-wrap').children('.zm-item');
$favItems.each(function(i,e){
});
}
/*
* 首页
*/
var $topstory=$('#is-topstory2')
, isTopStory=$topstory&&$topstory.length
, propFeedType='data-type'//:'data-feedtype'
, $lblHomeTitle=$('#zh-home-list-title')//activity_caption
, $btnNewActivity=$('#zh-main-feed-fresh-button')//new_activity
, $feedList=$('.zh-general-list')//feed_list
, $topLinkHome=$('#zh-top-link-home')
, $filter=//isTopStory?
$('<span>', { 'class':'izh-feeds-filter' })
.append($('<a>', { 'class': 'izh-button izh-feeds-filter-option', 'showFeeds': 'q' })
.append($('<i>', { 'class': 'zg-icon' }))
.append('问题')
)
.append($('<a>', { 'class': 'izh-button izh-feeds-filter-option', 'showFeeds': 'a' })
.append($('<i>', { 'class': 'zg-icon' }))
.append('回答')
)
.append($('<a>', { 'class': 'izh-button izh-feeds-filter-option', 'showFeeds': 'p,r', 'data-tip': 's$t$专栏、圆桌' })
.append($('<i>', { 'class': 'zg-icon' }))
.append('其他')
)
, $filterInfo=$('<a>',{'class':'izh-feeds-filter-info nothing',href:'javascript:void(0);'}).on('click',function(){$filter.trigger($filter.is(':hidden')||$filter.attr('doing')=='hide'?'show':'hide');})
, ShowFeeds=function(type,enable){
var id="izhCSS_FilterFeed_"+type
, nd=document.getElementById(id)
;
if(enable){
if(nd)nd.parentNode.removeChild(nd);
}else if(heads.length){
if(!nd){
nd=_doc.createElement('style');
nd.type='text/css';
nd.id=id;
nd.appendChild(_doc.createTextNode('.feed-item['+propFeedType+'^="'+type+'"]{display:none}'));
heads[0].appendChild(nd);
}
//{ROUNDTABLE_ADD_RELATED: "roundtable",ARTICLE_VOTE_UP: "post_vote",ARTICLE_CREATE: "post_create",RECOMMENDED: "feed_recommended",QUESTION_FOLLOW: "feed_question_follow",QUESTION_CREATE: "feed_question",ANSWER_VOTE_UP: "feed_answer_vote",ANSWER_CREATE: "feed_answer_answer"};
}
}
, refreshFilterInfo=function(){
var count=$feedList.children('.feed-item:hidden').length
, info=' >过滤选项<'
;
if(count){
info='('+count+'条动态被隐藏)';
$filterInfo.removeClass('nothing').css({display:''});
}else{
$filterInfo.addClass('nothing');
}
$filterInfo.text(info);
}
, feedsColumns=function(){ // Implemented by morley, modified by unogz
//动态的类型
var feedTypes = //isTopStory?
[{
index: 0,
name: '全部',
codeName: ''
}, {
index: 1,
name: '问题',
codeName: 'q'
}, {
index: 2,
name: '回答',
codeName: 'a'
}, {
index: 3,
name: '专栏',
codeName: 'p'
}];
//自定义 CSS 到 head
var styles = [];
styles.push('.za-filter{display: inline-block;margin-right:10px;cursor:pointer;color:#999;}');
styles.push('.za-filter.active{color:#259;}');
styles.push('.za-filter>.zg-num.hide{display:none;}');
$('<style/>').text(styles.join('')).appendTo('head');
var $zhHomeListTitle = $lblHomeTitle;
//根据类型添加过滤按钮 到 #zh-home-list-title
var filterBtns = []
, i = feedTypes.length;
while (i--) {
filterBtns.push(
$('<span>').addClass('za-filter')
.attr('typeIndex', feedTypes[i].index)
.text(feedTypes[i].name)
.append($('<span>', { 'class': 'zg-num' }).addClass('hide'))
.on('click', toggleFeedType)
);
}
filterBtns.reverse();
filterBtns[0].addClass('active');
$zhHomeListTitle.contents().filter(function(i,e){
return (e!=null&&(e.nodeValue||'').indexOf('最新动态')>=0)
}).remove()
$zhHomeListTitle.find('i').eq(0).after(filterBtns).remove();
var $targetZero = filterBtns[0].find('.zg-num')
, curfeedTypeCodeName = ''
function typeMatch($elem) {
if (curfeedTypeCodeName == '') {
$elem.show();
} else if (0 <= $elem.attr(propFeedType).indexOf(curfeedTypeCodeName)) {
$elem.show();
} else {
$elem.hide();
}
}
//按钮事件
function toggleFeedType() {
var $clicked = $(this);
$clickedNum = $clicked.find('.zg-num');
// 交互效果
filterBtns.forEach(function(item) {
item.removeClass('active');
});
$clicked.addClass('active');
if ($clicked.attr('typeIndex') == 0) {
$('.zg-num', '.za-filter').text('').addClass('hide');
} else {
var totalUnread = (parseInt($targetZero.text()) || 0) - (parseInt($clickedNum.text()) || 0);
if (totalUnread != 0) {
$targetZero.text(totalUnread);
} else {
$targetZero.text('').addClass('hide');
}
$clickedNum.text('').addClass('hide');
}
curfeedTypeCodeName = feedTypes[$clicked.attr('typeIndex')].codeName;
// 信息流过滤
$('.feed-item').each(function() {
typeMatch($(this));
});
}
function getTypeIndexByCodeName(codeName) {
var i = feedTypes.length;
while (i--) {
if (codeName == feedTypes[i].codeName) {
return i;
};
}
}
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
//监听推送
var hasNewFeed = false;
//create an observer instance
var observer = new MutationObserver(function(mutations) {
if ( !! parseInt($btnNewActivity.text())) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList') {
console.log('Has New Feed');
// 有新推送则触发之
hasNewFeed = true;
$btnNewActivity.text('');
$.when($btnNewActivity[0].click()).done(function() {
setTimeout(function() {
hasNewFeed = false;
}, 1000);
});
}
});
};
});
//pass in the target node, as well as the observer options
observer.observe(
$btnNewActivity[0], {
childList: true
});
//监听插入
$feedList.on("DOMNodeInserted", function(e) {
var $self = $(e.target);
if ($self.hasClass('feed-item')) {
if (hasNewFeed) {
$self.hide();
var $target = filterBtns[getTypeIndexByCodeName($self.attr(propFeedType))].find('.zg-num');
$target.text((parseInt($target.text()) || 0) + 1).removeClass('hide');
$targetZero.text((parseInt($targetZero.text()) || 0) + 1).removeClass('hide');
} else {
typeMatch($self);
}
}
});
}
, homeFeeds=function(izhHomeFeedsColumns){
if (izhHomeFeedsColumns){
feedsColumns();
}else{
$filter.children('.izh-feeds-filter-option').addClass('on').click(function(event){
var i=0
, $e=$(this)
, fs=$e.attr('showFeeds')
, fa=fs.split(',')
;
$('.izh-feeds-filter-option[showFeeds="'+fs+'"]').toggleClass('on');
for(;i<fa.length;i++){
ShowFeeds(fa[i],$e.is('.on'));
}
refreshFilterInfo();
});
if($topLinkHome.length){
var $filter2=$('<div>')
.css({position:'absolute',border:'1px solid #777',backgroundColor:'#fff'}).hide()
.append($filter.clone(true,true).css({display:'block'}))
.on('show',function(){
var $e=$(this).stop();
if($e.is(':hidden'))
$e.css({display:'',opacity:0})
$e.animate({opacity:1},'slow');
})
.on('hide',function(){
var $e=$(this).stop();
$e.fadeOut('slow');
})
;
$topLinkHome.after($filter2).parent()
.on('mouseenter',function(event){
var $e=$(this)
, $f=$e.children().last()
;
$f.trigger('show');
$filterInfo.filter('.nothing').hide();
})
.on('mouseleave',function(event){
var $e=$(this)
, $f=$e.children().last()
;
$f.trigger('hide');
$filterInfo.filter('.nothing').hide();
})
;
}
if($lblHomeTitle.length){
$filterInfo.css({
display:'none'
, textDecoration:'none'
, cursor:'pointer'
}).insertBefore(isTopStory?$topstory:$('#feed-ver'));
$lblHomeTitle.css({overflow:'hidden'})
.prepend($filter)
//.children('i:first')
.on('mouseenter',function(event){
var $e=$(this)
, $f=$e.children('.izh-feeds-filter-info.nothing').stop()
;
if($f.is(':hidden'))
$f.css({display:'',opacity:0})
$f.animate({opacity:1},'fast');
})
.on('mouseleave',function(event){
var $e=$(this)
, $f=$e.children('.izh-feeds-filter-info.nothing').stop()
;
$f.fadeOut('fast');
})
;
$filter.css({marginLeft:-$filter.width(),display:'none'})
.on('show',function(){
var $e=$(this);
if($e.attr('doing')==='show')return;
$e.attr('doing','show').stop();
if($e.is(':hidden'))
$e.css({display:''})
$e.animate({marginLeft:0},'slow',function(){$(this).css('display','').removeAttr('doing');});
})
.on('hide',function(){
var $e=$(this);
if($e.attr('doing')==='hide')return;
$e.attr('doing','hide').stop();
$e.animate({marginLeft:-$filter.width()},'slow',function(){$(this).css('display','none').removeAttr('doing');});
})
.on('mouseenter',function(event){
var $e=$(this)
;
$e.trigger('show');
})
.on('mouseleave',function(event){
var $e=$(this)
;
$e.trigger('hide');
})
;
refreshFilterInfo();
}
}
}
;
if(pageIs.Home||pageIs.Debuts){
$feedList.find('.feed-item').each(function(i,e){
window.iZhihu.Answer.processAnswer($(e),null
, izhAuthorRear
, izhAuthorList
);
});
$feedList.bind('DOMNodeInserted',function(event){
var $item=$(event.target);
if($item.is('.feed-item')){
window.iZhihu.Answer.processAnswer($item,null
, $body.attr('izhAuthorRear')=='1'
, $body.attr('izhAuthorList')=='1'
);
refreshFilterInfo();
}
});
}
if (pageIs.Home){
var bHomeFeedsColumns=window.iZhihu.config['HomeFeedsColumns']
if (izhHomeNoti&&!bHomeFeedsColumns
&& $lblHomeTitle.length
&& $btnNewActivity.length
){
$lblHomeTitle.css({
'float':'left'
, 'margin-bottom':'2px'
, 'line-height':'32px'
, 'width':'100%'
}).next().css('clear','both');
$btnNewActivity.css({
'float':'right'
, 'margin':'0'
, 'line-height':'22px'
}).appendTo($lblHomeTitle);
}
homeFeeds(bHomeFeedsColumns);
}
/**
* 问题页
*/
if(pageIs.Question){
var $lblQuestionMeta=$('#zh-question-meta-wrap')//question_meta
, $listAnswers=$('#zh-question-answer-wrap,#zh-question-collapsed-wrap').children()//$('.zm-item-answer','#zh-single-question')
, numAnswersCount=$listAnswers.length
, $btnCollapsedSwitcher=$('#zh-question-collapsed-switcher')
, numCollapsedCount=!$btnCollapsedSwitcher.length||$btnCollapsedSwitcher.is(':hidden')?0:parseInt($('#zh-question-collapsed-num').text())
, numAnswersCountTotal=numAnswersCount+numCollapsedCount
, $reply=$('#zh-question-answer-form-wrap')//reply_form
;
if($lblQuestionMeta.length){
var s=new Array()
, $a=$('<a>')
, $c=$('<span>',{'class':'zg-bull'}).text('•')
, $p=$lblQuestionMeta.children('.zm-meta-panel').children('a.meta-item:last')
, $m=$('.zu-answer-form-disabled-wrap:visible > a','#zh-question-answer-form-wrap')
;
if($m.length){
s.push($m.attr('href'));
$a.text('我的回答');
}else if($reply.length){
var id='new_answer'
, $b=$('<a>',{name:id}).before($reply.children().first());
s.push('#draft');
$a.text('我要回答');
}
$c.insertAfter($p);
$a.attr('href',s.join('')).attr('target','_self')
.insertAfter($c);
}
if (izhAuthorList&&
numAnswersCountTotal>100&&
confirm('这个问题的回答数较多,是否暂时关闭「iZhihu 回答目录」?')){
//$('#izhCSS_comment').remove();
//return;
izhAuthorList=false;
$body.attr('izhAuthorList','0');
}
//console.log((new Date()).getTime());
var $lblAnswersCount=$('#zh-question-answer-num')//answers_count
, $uno=$('<div>',{'class':'uno',style:'float:left'})//izh_AuthorsList
, $ppT=$('<span>',{'class':'meT',style:'display:none'})//izh_AuthorsList_TopSelfIndicator
, $frm=$('<div>',{'class':'frame'})//izh_AuthorsList_frame
, $ppB=$('<span>',{'class':'meB',style:'display:none'})//izh_AuthorsList_BottomSelfIndicator
, $pp=$('<ul>',{'class':'pp'})//izh_AuthorsList_UL
, $ppI=$('<div>')
;
window.iZhihu.$unoAnswers = $uno
/*
//答案按时间排序
if(utils.getCfg('answer_orderByTime')){
client.click('.zh-answers-filter-popup div[data-key=added_time]');
}
*/
var $questionWrap=$('#zh-question-meta-wrap');
$questionWrap.children('.panel-container').bind('DOMNodeInserted',function(event){
window.iZhihu.Comment.processComment($(event.target));
});
if(window.iZhihu.Comment.RightComment){
//$questionWrap.children('.meta-item[name=addcomment]').prependTo($questionWrap);
window.iZhihu.Comment.processCommentButton($questionWrap);
if(!$('#izh_QuestionShadow').length){
$('<div>',{'class':'izh_boxShadow',id:'izh_QuestionShadow'}).css({
'z-index': '-1'
, 'position': 'relative'
, 'top': -25
, 'margin-left': -32
}).prependTo('body>.zu-main:first').hide();
}
}
//process each answer
if($listAnswers&&$listAnswers.length){
if(izhAuthorList){
$uno.appendTo($banner);
$ppT.appendTo($uno);
$frm.appendTo($uno);
$pp.appendTo($frm);
$ppB.appendTo($uno);
//uno.appendChild(ppI);
$uno.$endOfLastA=$('<li>').addClass('endOfLastA').appendTo($pp)
}
$listAnswers.each(function(i,e){
window.iZhihu.Answer.processAnswer($(e),$pp
, izhAuthorRear
, izhAuthorList);
});
if($reply.children('.zu-answer-form-disabled-wrap').is(':hidden')){
var $ppla=$('<a>',{href:'#draft',target:'_self'})
.append($('<table>', { 'class': 'plus' })
.append($('<tr>')
.append($('<td>'))
.append($('<td>'))
)
.append($('<tr>')
.append($('<td>'))
.append($('<td>'))
)
)
.append($('<span>', { 'class': 'name func' }).text('-new-'))
, $ppl=$('<li>')
.append($ppla)
.appendTo($pp)
;
}
}
var resizeAuthorList=function($f){
// Adjust AuthorList's size and locate its position
if(!$f||!$f.length)return;
var frm=$f.get(0);
var width=window.iZhihu.Answer.ppWidth
, height=$win.height()-$main.offset().top-3-$f.position().top;
if(frm.scrollHeight>height){
$f.height(height);
width+=20;
}else{
$f.height('');
}
$f.width(width);
};
if(isNaN(numCollapsedCount))numCollapsedCount=0;
if($listAnswers.length||numCollapsedCount){
if(izhAuthorList){
$uno.css({
'float':'none'
, 'left':9-$uno.width()
});
if(!$btnCollapsedSwitcher.length&&!numCollapsedCount)
resizeAuthorList($frm);
$('<div>',{'class':'modal-dialog-title'}).css({
'border-top-left-radius':0
}).insertBefore($ppT);
$uno.mouseover(function(){
resizeAuthorList($('.frame',this));
$(this).css('left','0');
}).mouseout(function(){
$(this).css('left',9-$(this).width());
});
if(window.iZhihu.Answer._e){
$uno.children('.meT').css('display',0>window.iZhihu.Answer._e.offsetTop-$frm.scrollTop()?'':'none');
$uno.children('.meB').css('display',$frm.height()<window.iZhihu.Answer._e.offsetTop-$frm.scrollTop()+window.iZhihu.Answer._e.offsetHeight?'':'none');
}
}
if($btnCollapsedSwitcher.length){
if(numCollapsedCount>0){
$('#zh-question-collapsed-wrap').show().bind('DOMNodeInserted',function(event){
var $a=$(event.target);
if($a.is('.zm-item-answer')){
window.iZhihu.Answer.processAnswer($a,$pp
, $body.attr('izhAuthorRear')=='1'
, $body.attr('izhAuthorList')=='1'
);
var count = $('.zm-item-answer[izh_processed=1]','#zh-question-collapsed-wrap').length;
if(count==numCollapsedCount){
resizeAuthorList($frm);
}
}
});
}
$btnCollapsedSwitcher[0].click();
}
}
$('#zh-question-answer-wrap').bind('DOMNodeInserted',function(event){
var $na=$(event.target).filter('.zm-item-answer');
if($na.length){
window.iZhihu.Answer.processAnswer($na,$pp
, $body.attr('izhAuthorRear')=='1'
, $body.attr('izhAuthorList')=='1'
);
}
});
//console.log((new Date()).getTime());
var $cm=$('.zm-comment-box',$questionWrap);
if($cm.length && $cm.is(':visible')){
var focusName = iZhihu.Comment.scrollFocusCommentOnPageLoad($cm);
iZhihu.Comment.metaScrollToViewBottom($cm.closest('.zm-item-meta'),function(){
iZhihu.Comment.processComment($cm, focusName);
});
}
}
/**
* 配置界面
*/
var $btnSettings = $('<li>')
.append($('<a>', { href: 'javascript:void(0);', tabindex: '-1' })
.append($('<i>', { 'class': 'zg-icon zg-icon-dd-settings izhihu-settings' }))
.append('iZhihu')
).click(function(){
var $settings = $('#izh-dlg-settings')
$('.modal-dialog-bg').show()
$('.izh-option', '#izh-dlg-settings').each(function(i, e){
var key = e.getAttribute('name')
, value = utils.getCfg(key)
, $e = $(e)
if ($e.is('input:checkbox')) {
if(value)
$(e).iCheck('check')
} else if ($e.is('select')) {
e.value = value
}
})
$settings.css({
'z-index':'99'
, 'position':'fixed'
, 'top': ($win.height() - $settings.height()) / 2
, 'left': ($win.width() - $settings.width()) / 2
}).fadeIn('slow')
}).insertBefore($('ul#top-nav-profile-dropdown li:last'))
, $dlgSettings = $('<div>', { id: 'izh-dlg-settings', 'class': 'modal-dialog', tabindex: '0', style: 'display:none;width:600px'})
.append($('<div>', { 'class': 'modal-dialog-title modal-dialog-title-draggable' })
.append($('<span>', { 'class': 'modal-dialog-title-text' }).text('配置选项'))
.append($('<span>', {
'class': 'modal-dialog-title-close'
, click: function(){
$('.modal-dialog-bg').hide()
$('#izh-dlg-settings').first().hide()
}
}))
)
.append($('<div>', { 'class': 'modal-dialog-content' })
.append($('<div>', {})
.append($('<div>', { 'class': 'zg-section' })
.append($('<table>', { 'class': 't_set_tb', border: 0, cellspacing: 0, cellpadding: 5, width: '100%' })
.append($('<thead>', {})
.append($('<tr>', {})
.append($('<td>', { colspan: 6, align: 'left' }).text('(更改后设置将立刻保存,但只有当页面再次打开时才会生效)')
.prepend(
$('<b>').text('功能开关')
)
)
)
)
.append($('<tbody>', {})
/*
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('在首页直接浏览常去话题'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': ""}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setHomeTopics", name: "HomeTopics" }))
)
)
*/
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('改变网页样式外观'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$* 首页隐藏大头像<br/>* 缩进投票按钮(问题/回答页)<br/>* 按钮图标动画 "}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setHomeLayout", name: "HomeLayout" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('自动收起导航栏'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$* 滚动页面至下方时,自动收起顶部导航栏 "}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setTopNavAutoFold", name: "TopNavAutoFold" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('调整首页「新动态」提醒按钮'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$挪到 Timeline 右上角<br/>与标题「最新动态」平行"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setHomeNoti", name: "HomeNoti" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('开启「首页分栏」'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$将首页动态分类单独显示:<br/>问题、回答、专栏"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setHomeFeedsColumns", name: "HomeFeedsColumns" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('将用户信息挪到回答下方'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': ""}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setAuthorRear", name: "AuthorRear" }))
)
)
.append($('<tr>', {})
.append($('<td>', { align: 'left' }).text('开启「右舷评论」'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$在页面右侧浮动显示打开的评论列表<br/>在首页、问题、回答页中生效"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setRightComment", name: "ShowComment" }))
)
.append($('<td>', { width: 1, nowrap: 'nowrap', align: 'left' }).text('关闭时自动卷屏至对应条目'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$仅对右舷评论生效"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setRightComment_AutoScrollPageWhenClosing", name: "RightComment_AutoScrollPageWhenClosing" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('开启「快速屏蔽」(加入黑名单/取消关注)功能'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$在赞同列表、评论列表中使用"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setQuickBlock", name: "QuickBlock" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('开启「快速收藏」菜单'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$鼠标移上「收藏」按钮时显示"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setQuickFavo", name: "QuickFavo" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('开启「回答目录」'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$在问题页面左侧掩藏,鼠标移上时展开<br/>并在右侧即时显示回答预览"}))
)
.append($('<td>', { align: 'right'})
.append($('<input>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setAuthorList", name: "AuthorList" }))
)
)
.append($('<tr>', {})
.append($('<td>', { colspan: 4, align: 'left' }).text('选择「外部搜索引擎」'))
.append($('<td>', { align: 'right'})
.append($('<i>', { 'class': 'icon icon-help', 'data-tip': "s$t$你懂的"}))
)
.append($('<td>', { align: 'right'})
.append($('<select>', { type: "checkbox", 'class': "izh-option", id: "iZhihu_setSearchEngineOutside", name: "SearchEngineOutside"})
.append($('<option>', { value:'google' }).text('Google'))
.append($('<option>', { value:'baidu' }).text('百度'))
)
)
)
)
)
)
.append($('<div>', { 'class': 'zg-left' })
.append('当前版本:'+version+';')
.append('最后更新:'+updateDate)
.append($('<br>'))
.append('制作:')
.append($('<a>', { 'data-tip': "p$t$unogzx", href: "/people/unogzx" }).text('@钢盅郭子'))
.append(',')
.append($('<a>', { 'data-tip': "p$t$liuyong25", href: "/people/liuyong25" }).text('@天猪(刘勇)'))
.append(',')
.append($('<a>', { 'data-tip': "p$t$luoxr", href: "/people/luoxr" }).text('@yukirock'))
.append(',')
.append($('<a>', { 'data-tip': "p$t$morlay", href: "/people/morlay" }).text('@墨磊'))
.append($('<br>'))
.append('感谢:')
.append($('<a>', { 'data-tip': "p$t$PeterDeng", href: "/people/PeterDeng" }).text('@邓文博'))
.append(',')
.append($('<a>', { 'data-tip': "p$t$cakvfcwz", href: "/people/cakvfcwz" }).text('@水云逸'))
)
.append($('<div>', { 'class': 'zm-command' })
.append($('<a>', { id: 'izhRefresh', 'class': 'zg-btn-blue', href: 'javascript:void(0);' }).text('刷新网页'))
)
)
).appendTo(_doc.body).draggable({handle: '.modal-dialog-title-draggable'})
$('.izh-option', $dlgSettings).each(function(i, e){
var key = e.getAttribute('name')
, $chk = $(e).filter('input:checkbox').iCheck({
checkboxClass: 'icheckbox_square-blue'
, increaseArea: '20%' // optional
}).bind('ifChanged', function(event){
var value = this.checked
utils.setCfg(key, value)
})
, $sel = $(e).filter('select').bind('change', function() {
utils.setCfg(key, this.value)
})
})
$('#izhRefresh').click(function(){
location.reload()
})
/*
* 设置-屏蔽
*/
if (pageIs.SettingsFilter){
var all=[]
, $secBlockedUsers = $('#section-blocked-users')
, $secBlockedUsersTitle = $secBlockedUsers.children('.settings-section-title:first').children('h2:first')
, $pnlUnBlockedUsers = $('<div>').appendTo($secBlockedUsersTitle).css({
float: 'right'
})
, $lbFilterBlockedUsers = $('<label/>').appendTo($pnlUnBlockedUsers).css({
float: 'left'
})
, $tbFilterBlockedUsers = $('<input/>', {
'class': 'zg-form-text-input zg-mr15'
, placeholder: '用户名或昵称'
}).appendTo($pnlUnBlockedUsers).on('keyup', function(event){
var kw=this.value
, n=0
, $listBlockedUsers=$secBlockedUsers.find('.blocked-users > .item > .body > a').each(function(i,e){
var $a = $(e)
, href = e.getAttribute('href') || ''
, text = e.innerHTML
, notMatch = (href.indexOf(kw) < 0 && text.indexOf(kw) < 0)
if(!notMatch){
n++
}
$a.closest('.item').css('display', notMatch ? 'none' : '')
})
$lbFilterBlockedUsers.text([n?n+' ':'无','人匹配:'].join(''))
}).css({
float: 'left'
}).trigger('keyup')
, funcUnblock=function(){
if(all.length==0){return}
var e=all.shift()
$.post('/settings/unblockuser', $.param({
_xsrf: $('input[name=_xsrf]').val()
, uid: e.getAttribute('data-id')
})).done(function(result){
$(e).remove()
}).fail(function(result){
all.push(e)
}).always(function(result){
$lbFilterBlockedUsers.text([all.length?all.length+' ':'无','人匹配:'].join(''))
funcUnblock()
})
}
, h=$tbFilterBlockedUsers.outerHeight()
, $btUnBlockedUsers = $('<input/>', {
'class': 'zg-btn zg-btn-unfollow'
, type: 'button'
, value: '取消屏蔽'
}).appendTo($pnlUnBlockedUsers).on('click', function(event){
$('#section-blocked-users > .settings-item > .settings-item-content > .blocked-users > .item').each(function(i,e){
var $e = $(e)
if($e.is(':visible')){
all.push(e)
}
})
funcUnblock()
}).css({
float: 'left'
}).height(h)
$lbFilterBlockedUsers.css('line-height', h+'px')
}
var firstRun = parseInt(utils.getValue('izh_fr','1'));
function _FRshow(){
if(firstRun>0 && document.domain=='zhihu.com'){
var tboxleft=0;
var accitem1= $('#zh-top-inner div.top-nav-profile .zu-top-nav-userinfo');
if(accitem1.length>0){
tboxleft = accitem1.offset().left;
}
if(tboxleft>0){
$('<div>', { id: 'iZhihu_tbox', 'class': 't_frshow' }).appendTo('body.zhi').hide()
.append($('<div>', { 'class': 't_txtshow t_tbox' })
.append('感谢使用')
.append($('<b>').text('iZhihu'))
.append($('<br />'))
.append('您可通过菜单【iZhihu】对功能进行设置')
.append($('<br />'))
.append($('<s>')
.append($('<i>'))
)
);
$('#iZhihu_tbox').css('left',tboxleft-100).show().mouseenter(function(){
utils.setValue('izh_fr','0');
//_Menu();
$(this).remove();
});
}
}
}
setTimeout(function(){
_FRshow();
},1000);
console.log('iZhihu '+version+' started.');
//console.log(window.iZhihu);
//console.log((new Date()).getTime());
//});