gbmobileutil.js 11.3 KB
// 发布接收Pub/sub模型
(function( $ ) {
	var o = $( {} );
	$.each({
		trigger: 'publish',
		on: 'subscribe',
		off: 'unsubscribe'
	}, function( key, val ) {
		jQuery[val] = function() {
			o[key].apply(o, arguments);
		};
	});
})( jQuery );

/*
 * 显示日期
 */		
function displaydate(date){
		var mnow = moment(),
			mdate = moment(date);

	if(mnow.diff(mdate, 'days')>=1){
		return mdate.format("YYYY年MM月D日 HH:mm:ss");
	}else{
		return mdate.fromNow();
	}
}

/*
 * 保持登录状态
 */	

window.setInterval("session_reload()", 300000);  //每隔30000秒(5分钟)刷新,保持session 
function session_reload(){
	$.ajax({url:global_contextPath + '/ajaxsessionreload.htm?rand='+Math.random(),type:'GET'});
};
 
/*
var isreload = 1;
function session_reload(){
	window.setTimeout("session_reload()", 300000);  //每隔30000秒(5分钟)刷新,保持session
	if(isreload===1){
		$.ajax({url:global_contextPath + '/ajaxsessionreload.htm?rand='+Math.random(),type:'GET'});
	} 
	isreload = 1;
};	
$(function(){
  	session_reload();
});
*/

/* ---------------------------------------------------------------------- */
/*    Replace URL in post content
/* ---------------------------------------------------------------------- */
function replacelinks(textlinks) {
    var exp = /(\b(https?|ftp):\/\/[-A-Z0-9+\u0026@#\/%?=~_|!:,.;]*[-A-Z0-9+\u0026@#\/%=~_|])/gi,
        lt = '\u003c',
        gt = '\u003e';
        return textlinks.replace(exp, lt + 'a target="_blank" class="biggest" href=\'$1\'' + gt + '$1' + lt + '/a' + gt);
}
	
//模板辅助方法:生成类别标签标示用来定义CSS
Handlebars.registerHelper('functionTagFlagClass', function(object) {
	var taglist = object.tags.split(','),
		functionflaglist = object.usertagfunctionflag.split(','),
		functionTagClass = 'gbshare';		
	
	for(var a=0;a<taglist.length;a++){
		if(functionflaglist[a]==='1'){
			if(taglist[a]==='#原创'){
				functionTagClass = 'gboriginal';
			}else if(taglist[a]==='#文章'){
				functionTagClass = 'gbarticle';
			}else if(taglist[a]==='#问答'){
				functionTagClass = 'gbquestion';
			}else if(taglist[a]==='#资源'){
				functionTagClass = 'gbfreebie';
			}else if(taglist[a]==='#调试'){
				functionTagClass = 'gbdebug';
			}
			break;
		}
	}
	
	return functionTagClass;
});		


//模板辅助方法:生成删除链接
Handlebars.registerHelper('ifCanDelete', function(object) {
	var controllbar = '';
	
	var taglist = object.tags.split(','),
		functionflaglist = object.usertagfunctionflag.split(','),
		whichedit='';		
	
	for(var a=0;a<taglist.length;a++){
		if(functionflaglist[a]==='1'){
			if(taglist[a]==='#原创'){
				whichedit = 'editpost';
			}else if(taglist[a]==='#文章'){
				whichedit = 'editpost';
			}else if(taglist[a]==='#链接'){
				whichedit = 'editlink';
			}else if(taglist[a]==='#问答'){
				whichedit = 'editquestion';
			}else if(taglist[a]==='#资源'){
				whichedit = 'editfreebie';
			}else if(taglist[a]==='#调试'){
				whichedit = 'editgbdebug';
			}
			break;
		}
	}
	
	if(object.uid==global_onlineuser.uid){
		controllbar = '<a style="cursor:pointer" rel="' + object.pid + '" class="postdelete iconbefore"><span class="ui-icon ui-icon-trash"></span>删除</a>';
	}
	
	if(object.uid==global_onlineuser.uid||global_onlineuser.roleid<0){
		controllbar = controllbar + '<a target="_blank" href="'+ global_contextPath + '/' + whichedit + '.htm?postid=' + object.pid + '" class="iconbefore"><span class="ui-icon ui-icon-pencil"></span>编辑</a>';
	}
	return controllbar;
});			

//模板辅助方法:生成页面关注按钮
Handlebars.registerHelper('ifCanFollow', function(object) {
	var button = '', taglist = object.tags.split(',');
			
	if(global_onlineuser.uid!==0&&object.uid!==global_onlineuser.uid){
		button = '<a title="用户标签"><span class="label label-default"><span class="glyphicon glyphicon-tags"></span>&nbsp;' + taglist.length + '</span></a>';
	}

	return button;
});

//模板辅助方法:生成时间戳
Handlebars.registerHelper('fromNow', function(creationdate) {
	var tmpcreationdate = moment(creationdate),
		now = moment();
	if(now.diff(tmpcreationdate, 'days')>=1){
		return tmpcreationdate.format("YYYY年MM月D日 HH:mm:ss");
	}else{
		return tmpcreationdate.fromNow();
	}
});

//模板辅助方法:生成标签列表
Handlebars.registerHelper('tagList', function(object) {
	var usertagidlist = object.usertagids.split(','),
		taglist = object.tags.split(','),
		usertagdarenlist = object.usertagdaren.split(','),
		functionflaglist = object.usertagfunctionflag.split(','),
		tagsstr = '',
		tmpavatar = object.avatar!==''?object.avatar:'avatar.jpg',
		selftagflag = 0;
	
	/* 添加标示来判断自己的标签 */	
	if(object.uid==global_onlineuser.uid){
		selftagflag = 1;
	}					
	
	for(var a=0;a<taglist.length;a++){
		if(taglist[a]!==null&&taglist[a]!==''){
			if(functionflaglist[a]!='1'){
				tagsstr += 
				'<a class="tagbtn btn btn-default" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />' + taglist[a] + '</a>';
			}
		}
	}
	return tagsstr;
});

Handlebars.registerHelper('roleClass', function(roleid) {
		if(roleid!==0){
			return 'daren';
		}else{
			return '';
		}
});		

Handlebars.registerHelper('demoLinks', function(object) {
    var demolinks = object.demourl.split('#'),
            demolinksstr = $('<div></div>');
           
        for(var a=0;a<demolinks.length;a++){
            if(demolinks[a]!==null&&demolinks[a]!==''){
                if(demolinks[a]!==null&&demolinks[a].lastIndexOf('zip')<0){
                	var zipfileandfilename = demolinks[a].substring(demolinks[a].lastIndexOf('uploads/')+8);
                	 filename = zipfileandfilename.substring(zipfileandfilename.indexOf('/')+1);
                	 filename = filename.replace(/\//g, "|");
            	 zipfile = zipfileandfilename.substring(0, zipfileandfilename.indexOf('/'));
            	
            	if(zipfile === ''){
             		demolinksstr.append('<a class="btn btn-sm btn-success" role="button" target="_blank" href="' + global_contextPath + '/demoviewer/' + object.pid + '/empty/' + filename + '.htm">在线演示'  + a + '</a>');
            	}else{
            		demolinksstr.append('<a class="btn btn-sm btn-success" role="button" target="_blank" href="' + global_contextPath + '/demoviewer/' + object.pid + '/' + zipfile + '/' + filename + '.htm">在线演示'  + a + '</a>');
            	}
            }
        }
    }

    return demolinksstr.html();
});

//模板辅助方法:获取domain
Handlebars.registerHelper('fetchDomainInUrl', function(url) {
	return fetch_domain_of_url(url);
});

//模板辅助方法:删除标签
Handlebars.registerHelper('stripTags', function(str) {
	var text = $('<div/>').append(str).text();
	if(text.length){
		text = "&nbsp;-&nbsp;" + text;
	}
	return text;
});

//模板辅助方法:删除标签并显示150字符
Handlebars.registerHelper('stripTagsAndOnly150Char', function(str) {
	var text = $('<div/>').append(str).text();

	if(text.length>150){
		text = text.substring(0,150) + '...';
	}

	return text;
});

//模板辅助方法:获取功能标签
Handlebars.registerHelper('functionTagName', function(object) {				
	var usertagidlist = object.usertagids.split(','),
		taglist = object.tags.split(','),
		usertagdarenlist = object.usertagdaren.split(','),
		functionflaglist = object.usertagfunctionflag.split(','),
		tagsstr = '',
		tmpavatar = object.avatar!==''?object.avatar:'avatar.jpg',
		selftagflag = 0;
	
	/* 添加标示来判断自己的标签 */	
	if(object.uid===global_onlineuser.uid){
		selftagflag = 1;
	}					
	
	for(var a=0;a<taglist.length;a++){
		if(functionflaglist[a]==='1'){
			if(taglist[a]==='#原创'){
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-thumbs-up"></span>' + taglist[a] 
				+ '</a>';
			}else if(taglist[a]==='#链接'){
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-link"></span>' + taglist[a] 
				+ '</a>';
			}else if(taglist[a]==='#问答'){
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-question-sign"></span>' + taglist[a] 
				+ '</a>';
			}else if(taglist[a]==='#资源'){
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-cloud-download"></span>' + taglist[a] 
				+ '</a>';
			}else if(taglist[a]==='#调试'){
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-wrench"></span>' + taglist[a] 
				+ '</a>';
			}else{
				tagsstr += 
				'<a class="tagbtn btn btn-primary" role="button" href="' + global_contextPath + '/mobileusertag/' + usertagidlist[a] + '.htm"><img class="hidden tagavatar ' + (usertagdarenlist[a]==='1'?'daren':'') + '" src="' + global_contextPath + '/networks/avatars/30x30' + tmpavatar + '" />'
				+ '<span class="glyphicon glyphicon-edit"></span>' + taglist[a] 
				+ '</a>';
			}
			break;
		}
	}

	return tagsstr;
});

/* ---------------------------------------------------------------------- */
/*    Truncation for string
/* ---------------------------------------------------------------------- */
String.prototype.trunc = 
      function(n){
          return this.substr(0,n-1)+(this.length>n?'...':'');
      };

Handlebars.registerHelper('shortenTextBy50', function(text) {
	return text.trunc(50);
});

Handlebars.registerHelper('shortenTextBy280', function(text) {
	return text.trunc(150);
});

Handlebars.registerHelper('gbtagsTitle', function(obj) {
	return obj.title[0];
});

Handlebars.registerHelper('gbtagShortenTextBy280', function(text) {
	return $('<div/>').append(text).text().trunc(150);
});
	
/*
 * 获取URL中的顶级域名
 */	
function fetch_domain_of_url(url) {
  var    a      = document.createElement('a');
         a.href = url;
  return a.hostname;
}