This commit is contained in:
144
GithubWidgetUser/GithubWidgetUser.css
Normal file
144
GithubWidgetUser/GithubWidgetUser.css
Normal file
@@ -0,0 +1,144 @@
|
||||
.github-widget-user {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
.github-widget-loading{
|
||||
line-height:100px;
|
||||
text-align:center;
|
||||
font-size:24px;
|
||||
color:#aaa;
|
||||
}
|
||||
.github-user-widget_body{
|
||||
max-width:300px;
|
||||
margin: auto;
|
||||
overflow:hidden;
|
||||
background: #fff;
|
||||
box-shadow:1px 2px 16px rgba(0,0,0,.2)
|
||||
}
|
||||
.gitUW_avatar{
|
||||
display: block;
|
||||
overflow:hidden;
|
||||
}
|
||||
.gitUW_avatar img{
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 100px;
|
||||
background: #333;
|
||||
-webkit-transition: 0.3s;
|
||||
-moz-transition: 0.3s;
|
||||
transition: 0.3s;
|
||||
}
|
||||
.gitUW_avatar:hover img{
|
||||
-webkit-transform:scale(1.3);
|
||||
-moz-transform:scale(1.3);
|
||||
transform:scale(1.3);
|
||||
}
|
||||
.gitUW_name{
|
||||
display: block;
|
||||
padding: 10px 10px 20px;
|
||||
border-bottom: 1px solid #eee;
|
||||
-webkit-transition: 0.4s;
|
||||
-moz-transition: 0.4s;
|
||||
transition: 0.4s;
|
||||
}
|
||||
.gitUW_name strong{
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
font-size: 26px;
|
||||
color: #333;
|
||||
line-height: 30px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.gitUW_name span{
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 20px;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
line-height: 24px;
|
||||
color: #666;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.gitUW_name:hover{
|
||||
background: #eee;
|
||||
}
|
||||
.gitUW_info{
|
||||
padding: 10px 0 20px;
|
||||
}
|
||||
.gitUW_info p{
|
||||
height:25px;
|
||||
padding-left: 10px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.gitUW_info p span,.gitUW_info p a{
|
||||
display:inline-block;
|
||||
vertical-align:text-top;
|
||||
height:25px;
|
||||
line-height:25px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.gitUW_info p a{
|
||||
color: #4183c4;
|
||||
text-decoration: none;
|
||||
}
|
||||
.gitUW_info p a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
.gitUW_info p span{
|
||||
color: #333;
|
||||
}
|
||||
.gitUW_count{
|
||||
height: 75px;
|
||||
background: #333;
|
||||
}
|
||||
.gitUW_count a{
|
||||
display:block;
|
||||
float:left;
|
||||
width: 33.33%;
|
||||
padding: 15px 0;
|
||||
text-align:center;
|
||||
-webkit-transition: 0.4s;
|
||||
-moz-transition: 0.4s;
|
||||
transition: 0.4s;
|
||||
}
|
||||
.gitUW_count a strong{
|
||||
display:block;
|
||||
line-height:30px;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
color:#4183c4
|
||||
}
|
||||
.gitUW_count a span{
|
||||
display:block;
|
||||
line-height:15px;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
}
|
||||
.gitUW_count a:hover{
|
||||
background: #444;
|
||||
}
|
||||
.gitUW_ico_company,.gitUW_ico_location,.gitUW_ico_email,.gitUW_ico_blog,.gitUW_ico_created_at{
|
||||
display:inline-block;
|
||||
vertical-align:text-top;
|
||||
width:25px;
|
||||
height:25px;
|
||||
background-image:url(' + imgbase64 + ');
|
||||
}
|
||||
.gitUW_ico_company{
|
||||
background-position:0 0;
|
||||
}
|
||||
.gitUW_ico_location{
|
||||
background-position:0 -25px;
|
||||
}
|
||||
.gitUW_ico_email{
|
||||
background-position:-25px 0;
|
||||
}
|
||||
.gitUW_ico_blog{
|
||||
background-position:-25px -25px;
|
||||
}
|
||||
.gitUW_ico_created_at{
|
||||
background-position:-50px 0;
|
||||
}
|
||||
86
GithubWidgetUser/Plugin.php
Normal file
86
GithubWidgetUser/Plugin.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
|
||||
/**
|
||||
* github名片
|
||||
*
|
||||
* @package GithubWidgetUser
|
||||
* @author hongweipeng
|
||||
* @version 0.2.0
|
||||
* @link https://www.hongweipeng.com
|
||||
*/
|
||||
class GithubWidgetUser_Plugin implements Typecho_Plugin_Interface
|
||||
{
|
||||
/**
|
||||
* 激活插件方法,如果激活失败,直接抛出异常
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @throws Typecho_Plugin_Exception
|
||||
*/
|
||||
public static function activate()
|
||||
{
|
||||
Typecho_Plugin::factory('Widget_Archive')->header = array(__CLASS__, 'header');
|
||||
Typecho_Plugin::factory('Widget_Archive')->footer = array(__CLASS__, 'footer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用插件方法,如果禁用失败,直接抛出异常
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
* @throws Typecho_Plugin_Exception
|
||||
*/
|
||||
public static function deactivate(){}
|
||||
|
||||
/**
|
||||
* 获取插件配置面板
|
||||
*
|
||||
* @access public
|
||||
* @param Typecho_Widget_Helper_Form $form 配置面板
|
||||
* @return void
|
||||
*/
|
||||
public static function config(Typecho_Widget_Helper_Form $form)
|
||||
{
|
||||
$jq_import = new Typecho_Widget_Helper_Form_Element_Radio('jq_import', array(
|
||||
0 => _t('不引入'),
|
||||
1 => _t('引入')
|
||||
), 1, _t('是否引入jQuery'), _t('此插件需要jQuery,如已有选择不引入避免引入多余jQuery'));
|
||||
$form->addInput($jq_import->addRule('enum', _t('必须选择一个模式'), array(0, 1)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 个人用户的配置面板
|
||||
*
|
||||
* @access public
|
||||
* @param Typecho_Widget_Helper_Form $form
|
||||
* @return void
|
||||
*/
|
||||
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
|
||||
|
||||
/**
|
||||
* 插件实现方法
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function render()
|
||||
{
|
||||
echo '<span class="message success">'
|
||||
. htmlspecialchars(Typecho_Widget::widget('Widget_Options')->plugin('HelloWorld')->word)
|
||||
. '</span>';
|
||||
}
|
||||
|
||||
public static function header() {
|
||||
$cssUrl = Helper::options()->pluginUrl . '/GithubWidgetUser/GithubWidgetUser.css';
|
||||
echo '<link rel="stylesheet" type="text/css" href="' . $cssUrl . '" />';
|
||||
}
|
||||
|
||||
public static function footer() {
|
||||
if (Helper::options()->plugin('GithubWidgetUser')->jq_import) {
|
||||
echo '<script src="//cdn.bootcss.com/jquery/2.1.4/jquery.min.js"></script>';
|
||||
}
|
||||
$jsUrl = Helper::options()->pluginUrl . '/GithubWidgetUser/jquery-github-user-widget.js';
|
||||
echo '<script type="text/javascript" src="'.$jsUrl.'"></script>';
|
||||
}
|
||||
}
|
||||
30
GithubWidgetUser/README.md
Normal file
30
GithubWidgetUser/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
## 起步
|
||||
组件来源[http://bh-lay.com/labs/github-widget-user][1],并在其中做了一些修改。
|
||||
|
||||
## 安装
|
||||
1. 下载
|
||||
2. 解压后把 `GithubWidgetUser` 文件夹上传到插件目录。
|
||||
3. 启用插件,默认引入了jQuery,若已引入设置不引入可避免多次import jQuery。
|
||||
|
||||
|
||||
<!--more-->
|
||||
|
||||
|
||||
## 使用
|
||||
#### 方式一、傻瓜式
|
||||
在文章中创建一个class为`github-widget-user`的dom,并在data属性上增加用户参数即可,如下面代码所示。
|
||||
```
|
||||
<div class="github-widget-user" data-user="github上的用户名"></div>
|
||||
```
|
||||
#### 方式二、自定义式
|
||||
若对应dom上有`data-user`参数,JS函数中可以省略用户名参数,两者有冲突时,以JS传入为优先。
|
||||
```
|
||||
$('.some_class').github_user_widget('github上的用户名');
|
||||
```
|
||||
## 效果
|
||||
|
||||
![github名片.png][3]
|
||||
|
||||
|
||||
[1]: http://bh-lay.com/labs/github-widget-user
|
||||
[3]: http://www.hongweipeng.com/usr/uploads/2015/12/3818505502.png
|
||||
92
GithubWidgetUser/jquery-github-user-widget.js
vendored
Normal file
92
GithubWidgetUser/jquery-github-user-widget.js
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* @author bh-lay
|
||||
*
|
||||
* @github https://github.com/bh-lay/github-widget-user
|
||||
* @modified 2014-11-5 16:0
|
||||
*/
|
||||
(function($){
|
||||
//图片
|
||||
var imgbase64 = 'data:image/png;base64,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';
|
||||
|
||||
//css
|
||||
var css_tpl = '<style type="text/css">.github-widget-loading{line-height:100px;text-align:center;font-size:24px;color:#aaa}.github-user-widget_body{max-width:300px;margin:auto;overflow:hidden;background:#fff;box-shadow:1px 2px 16px rgba(0,0,0,.2)}.gitUW_avatar{display:block;overflow:hidden}.gitUW_avatar img{display:block;width:100%;min-height:100px;background:#333;-webkit-transition:0.3s;-moz-transition:0.3s;transition:0.3s}.gitUW_avatar:hover img{-webkit-transform:scale(1.3);-moz-transform:scale(1.3);transform:scale(1.3)}.gitUW_name{display:block;padding:10px 10px 20px;border-bottom:1px solid #eee;-webkit-transition:0.4s;-moz-transition:0.4s;transition:0.4s}.gitUW_name strong{display:block;width:100%;overflow:hidden;font-size:26px;color:#333;line-height:30px;text-overflow:ellipsis}.gitUW_name span{display:block;width:100%;font-size:20px;font-style:normal;font-weight:300;line-height:24px;color:#666;text-overflow:ellipsis;overflow:hidden}.gitUW_name:hover{background:#eee}.gitUW_info{padding:10px 0 20px}.gitUW_info p{height:25px;padding-left:10px;text-overflow:ellipsis;overflow:hidden}.gitUW_info p span,.gitUW_info p a{display:inline-block;vertical-align:text-top;height:25px;line-height:25px;font-size:14px}.gitUW_info p a{color:#4183c4;text-decoration:none}.gitUW_info p a:hover{text-decoration:underline}.gitUW_info p span{color:#333}.gitUW_count{height:75px;background:#333}.gitUW_count a{display:block;float:left;width:33.33%;padding:15px 0;text-align:center;-webkit-transition:0.4s;-moz-transition:0.4s;transition:0.4s}.gitUW_count a strong{display:block;line-height:30px;font-size:28px;font-weight:bold;color:#4183c4}.gitUW_count a span{display:block;line-height:15px;font-size:12px;color:#999}.gitUW_count a:hover{background:#444}.gitUW_ico_company,.gitUW_ico_location,.gitUW_ico_email,.gitUW_ico_blog,.gitUW_ico_created_at{display:inline-block;vertical-align:text-top;width:25px;height:25px;background-image:url(' + imgbase64 + ')}.gitUW_ico_company{background-position:0 0}.gitUW_ico_location{background-position:0 -25px}.gitUW_ico_email{background-position:-25px 0}.gitUW_ico_blog{background-position:-25px -25px}.gitUW_ico_created_at{background-position:-50px 0}</style>';
|
||||
//模版
|
||||
var user_tpl = '<div class="github-user-widget_body"><a class="gitUW_avatar" href="<%=user.html_url%>" title="<%=user.name%>的github" target="_blank"><img src="<%=user.avatar_url %>" alt="<%=user.name%>" /></a><a class="gitUW_name" href="<%=user.html_url%>" title="<%=user.name%>的github" target="_blank"><strong><%=user.name%></strong><span><%=user.login%></span></a><div class="gitUW_info"><% if(user.company && user.company.length){%><p><i class="gitUW_ico_company"></i><span><%=user.company%></span></p><%}%><% if(user.location && user.location.length){%><p><i class="gitUW_ico_location"></i><span><%=user.location%></span></p><%}%><% if(user.email && user.email.length){%><p><i class="gitUW_ico_email"></i><a href="mailto:<%=user.email%>"><%=user.email%></a></p><%}%><% if(user.blog && user.blog.length){%><p><i class="gitUW_ico_blog"></i><a href="<%=user.blog%>" target="_blank"><%=user.blog%></a></p><%}%><% if(user.created_at.length){%><p><i class="gitUW_ico_created_at"></i><span><%=user.created_at%> 加入</span></p><%}%></div><div class="gitUW_count"><a href="<%=user.html_url%>/followers" target="_blank"><strong><%=user.followers%></strong><span>followers</span></a><a href="<%=user.html_url%>" target="_blank"><strong><%=user.public_repos%></strong><span>Repos</span></a><a href="<%=user.html_url%>/following" target="_blank"><strong><%=user.following%></strong><span>Following</span></a></div></div>';
|
||||
|
||||
//格式化时间
|
||||
function parseDate(input){
|
||||
var date = new Date(input);
|
||||
return date.getFullYear() + ' - ' + (date.getMonth() + 1) + ' - ' + date.getDate();
|
||||
}
|
||||
//渲染部分
|
||||
function render(str, data){
|
||||
if(!str || !data){
|
||||
return '';
|
||||
}
|
||||
return (new Function("obj",
|
||||
"var p=[];" +
|
||||
"with(obj){p.push('" +
|
||||
str.replace(/[\r\t\n]/g, " ")
|
||||
.split("<%").join("\t")
|
||||
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
|
||||
.replace(/\t=(.*?)%>/g, "',$1,'")
|
||||
.split("\t").join("');")
|
||||
.split("%>").join("p.push('")
|
||||
.split("\r").join("\\'")
|
||||
+ "');}return p.join('');"))(data);
|
||||
}
|
||||
|
||||
//获取用户信息
|
||||
function getUserInfo(user_name,callback){
|
||||
$.ajax({
|
||||
url: 'https://api.github.com/users/' + user_name,
|
||||
async: false,
|
||||
dataType: 'jsonp',
|
||||
success: function(results){
|
||||
if(results && results.meta && results.meta.status == 200){
|
||||
var user = results.data;
|
||||
user.created_at = parseDate(user.created_at);
|
||||
callback && callback(null,user);
|
||||
}else{
|
||||
callback && callback(404);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//创建widget
|
||||
function createWidget($dom,user_name){
|
||||
if(!user_name || user_name.length< 1){
|
||||
return
|
||||
}
|
||||
$dom.html('<div class="github-user-widget_body github-widget-loading">正在加载</div>');
|
||||
getUserInfo(user_name,function(err,user){
|
||||
var html;
|
||||
if(err){
|
||||
html = '<div class="github-user-widget_body github-widget-loading">加载失败</div>';
|
||||
}else{
|
||||
html = render(user_tpl,{
|
||||
'user' : user
|
||||
});
|
||||
}
|
||||
$dom.html(html);
|
||||
});
|
||||
}
|
||||
$.fn.github_user_widget = function(userName){
|
||||
$(this).each(function(){
|
||||
var $container = $(this);
|
||||
var user_name = userName || $container.data('user');
|
||||
createWidget($container,user_name);
|
||||
});
|
||||
};
|
||||
$(function(){
|
||||
//页面加入css
|
||||
$('head').append(css_tpl);
|
||||
//置空无用变量
|
||||
css_tpl = imgbase64 = null;
|
||||
//查找并生成默认的widget
|
||||
setTimeout(function(){
|
||||
$('.github-widget-user').github_user_widget();
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user