Merge branch 'develop' of 10.0.47.245:/home/trustie2 into develop

Conflicts:
	db/schema.rb
This commit is contained in:
xianbo 2014-05-21 11:09:22 +08:00
commit 4b063a2c69
22 changed files with 1700 additions and 38 deletions

View File

@ -57,7 +57,7 @@ class OpenSourceProjectsController < ApplicationController
@memo = RelativeMemo.new(:open_source_project => @open_source_project) @memo = RelativeMemo.new(:open_source_project => @open_source_project)
@topic_count = @open_source_project.topics.count @topic_count = @open_source_project.topics.count
@topic_pages = Paginator.new @topic_count, per_page_option, params['page'] @topic_pages = Paginator.new @topic_count, 10, params['page']
@memos = @open_source_project.topics. @memos = @open_source_project.topics.
reorder("#{RelativeMemo.table_name}.sticky DESC"). reorder("#{RelativeMemo.table_name}.sticky DESC").
includes(:last_reply). includes(:last_reply).
@ -74,10 +74,39 @@ class OpenSourceProjectsController < ApplicationController
end end
end end
def search
def search
end end
# added by yiang 暴力添加,请绕道
def showmemo
@open_source_project = OpenSourceProject.find(params[:id])
sort_init 'updated_at', 'desc'
sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
'replies' => "#{RelativeMemo.table_name}.replies_count",
'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
@memo = RelativeMemo.new(:open_source_project => @open_source_project)
@topic_count = @open_source_project.topics.count
@topic_pages = Paginator.new @topic_count, per_page_option, params['page']
@memos = @open_source_project.topics.
reorder("#{RelativeMemo.table_name}.sticky DESC").
includes(:last_reply).
limit(@topic_pages.per_page).
offset(@topic_pages.offset).
order(sort_clause).
all
respond_to do |format|
format.html {
render :layout => "base_opensource_p"
}
format.json { render json: @open_source_project }
end
end
# GET /open_source_projects/new # GET /open_source_projects/new
# GET /open_source_projects/new.json # GET /open_source_projects/new.json
def new def new

View File

@ -37,7 +37,7 @@ class RelativeMemosController < ApplicationController
def show def show
pre_count = REPLIES_PER_PAGE pre_count = REPLIES_PER_PAGE
@memo = @memo.root # 取出楼主防止输入帖子id让回复作为主贴显示 # @memo = @memo.root # 取出楼主防止输入帖子id让回复作为主贴显示
@memo.update_column(:viewed_count_local, (@memo.viewed_count_local.to_i + 1)) @memo.update_column(:viewed_count_local, (@memo.viewed_count_local.to_i + 1))
page = params[:page] page = params[:page]
@ -92,13 +92,14 @@ class RelativeMemosController < ApplicationController
def create def create
@memo = RelativeMemo.new(params[:relative_memo]) @memo = RelativeMemo.new(params[:relative_memo])
# @memo.url = "http://forge.trustie.net/open_source_projects" # @memo.url = "http://forge.trustie.net/open_source_projects"
@memo.osp_id = params[:open_source_project_id] # @memo.osp_id = params[:open_source_project_id]
@memo.author_id = User.current.id @memo.author_id = User.current.id
@memo.save_attachments(params[:attachments] || (params[:relative_memo] && params[:relative_memo][:uploads])) @memo.save_attachments(params[:attachments] || (params[:relative_memo] && params[:relative_memo][:uploads]))
respond_to do |format| respond_to do |format|
if @memo.save if @memo.save
RelativeMemoToOpenSourceProject.create(:osp_id => params[:open_source_project_id], :relative_memo_id => @memo.id)
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" } format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
format.json { render json: @memo, status: :created, location: @memo } format.json { render json: @memo, status: :created, location: @memo }
else else
@ -142,7 +143,7 @@ class RelativeMemosController < ApplicationController
def find_memo def find_memo
return unless find_osp return unless find_osp
@memo = @open_source_project.relative_memos.find(params[:id]) @memo = @open_source_project.topics.find(RelativeMemo.find(params[:id]).root.id)
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
render_404 render_404
nil nil

View File

@ -473,6 +473,14 @@ module ApplicationHelper
l(:label_added_time, :age => time_tag(created)).html_safe l(:label_added_time, :age => time_tag(created)).html_safe
end end
def user_url_and_time(user_name, user_url, created)
unless user_name.nil?
l(:label_added_time_by, :author => link_to(user_name, user_url), :age => time_tag(created)).html_safe
else
l(:label_added_time, :age => time_tag(created)).html_safe
end
end
#huang #huang
def betweentime(enddate) def betweentime(enddate)
ss=(DateTime.parse("#{enddate.to_date}")-DateTime.parse("#{DateTime.now.to_date}")).to_i ss=(DateTime.parse("#{enddate.to_date}")-DateTime.parse("#{DateTime.now.to_date}")).to_i

View File

@ -3,8 +3,10 @@ class OpenSourceProject < ActiveRecord::Base
include Redmine::SafeAttributes include Redmine::SafeAttributes
has_many :applies, :class_name => "ApplyProjectMaster", :as => :apply, :dependent => :delete_all has_many :applies, :class_name => "ApplyProjectMaster", :as => :apply, :dependent => :delete_all
has_many :topics, :class_name => 'RelativeMemo', :foreign_key => 'osp_id', :conditions => "#{RelativeMemo.table_name}.parent_id IS NULL", :order => "#{RelativeMemo.table_name}.created_at DESC", :dependent => :destroy has_many :relation_topics, :class_name => 'RelativeMemoToOpenSourceProject', :foreign_key => 'osp_id', :order => "#{RelativeMemo.table_name}.created_at DESC", :dependent => :destroy
has_many :relative_memos, :class_name => 'RelativeMemo', :foreign_key => 'osp_id', :dependent => :destroy # has_many :topics, :class_name => 'RelativeMemo', :foreign_key => 'osp_id', :conditions => "#{RelativeMemo.table_name}.parent_id IS NULL", :order => "#{RelativeMemo.table_name}.created_at DESC", :dependent => :destroy
has_many :topics, :through => :relation_topics, :class_name => 'RelativeMemo'
# has_many :relative_memos, :class_name => 'RelativeMemo', :foreign_key => 'osp_id', :dependent => :destroy
has_many :tags, :through => :project_tags, :class_name => 'Tag' has_many :tags, :through => :project_tags, :class_name => 'Tag'
has_many :project_tags, :class_name => 'ProjectTags' has_many :project_tags, :class_name => 'ProjectTags'
has_many :masters, :class_name => 'ApplyProjectMaster', :as => :apply, :dependent => :delete_all, :conditions => "#{ApplyProjectMaster.table_name}.status = 2" has_many :masters, :class_name => 'ApplyProjectMaster', :as => :apply, :dependent => :delete_all, :conditions => "#{ApplyProjectMaster.table_name}.status = 2"
@ -126,9 +128,14 @@ class OpenSourceProject < ActiveRecord::Base
def self.reset_counters!(id) def self.reset_counters!(id)
osp_id = id.to_i osp_id = id.to_i
update_all("topic_count = (SELECT COUNT(*) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id} AND parent_id IS NULL)," + # update_all("topic_count = (SELECT COUNT(*) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id} AND parent_id IS NULL)," +
" memo_count = (SELECT COUNT(*) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id} AND parent_id IS NOT NULL)," + # " memo_count = (SELECT COUNT(*) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id} AND parent_id IS NOT NULL)," +
" last_memo_id = (SELECT MAX(id) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id})", # " last_memo_id = (SELECT MAX(id) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id})",
# ["id = ?", osp_id])
update_all("topic_count = (SELECT COUNT(*) FROM #{RelativeMemoToOpenSourceProject.table_name} WHERE osp_id=#{osp_id})",
# +
# " memo_count = (SELECT COUNT(*) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id} AND parent_id IS NOT NULL)," +
# " last_memo_id = (SELECT MAX(id) FROM #{RelativeMemo.table_name} WHERE osp_id=#{osp_id})",
["id = ?", osp_id]) ["id = ?", osp_id])
end end
end end

View File

@ -7,12 +7,13 @@ class RelativeMemo < ActiveRecord::Base
has_many :tags, :through => :project_tags, :class_name => 'Tag' has_many :tags, :through => :project_tags, :class_name => 'Tag'
has_many :project_tags, :class_name => 'ProjectTags' has_many :project_tags, :class_name => 'ProjectTags'
has_many :relation_topics, :class_name => 'RelativeMemoToOpenSourceProject'
has_many :no_uses, :as => :no_use, :dependent => :delete_all has_many :no_uses, :as => :no_use, :dependent => :delete_all
acts_as_taggable acts_as_taggable
acts_as_attachable
validates_presence_of :osp_id, :subject validates_presence_of :subject
#validates :content, presence: true #validates :content, presence: true
# validates_length_of :subject, maximum: 50 # validates_length_of :subject, maximum: 50
#validates_length_of :content, maximum: 3072 #validates_length_of :content, maximum: 3072
@ -81,6 +82,11 @@ class RelativeMemo < ActiveRecord::Base
:conditions => ["#{NoUse.table_name}.user_id = ?", user_id] } :conditions => ["#{NoUse.table_name}.user_id = ?", user_id] }
} }
# 获取帖子的回复
def replies
memos = RelativeMemo.where("parent_id = ?", id)
end
def no_use_for?(user) def no_use_for?(user)
self.no_uses.each do |no_use| self.no_uses.each do |no_use|
if no_use.user_id == user.id if no_use.user_id == user.id

View File

@ -0,0 +1,14 @@
class RelativeMemoToOpenSourceProject < ActiveRecord::Base
# attr_accessible :title, :body
belongs_to :open_source_project, :foreign_key => "osp_id"
belongs_to :topic, :class_name => 'RelativeMemo', :foreign_key => 'relative_memo_id'
has_many :no_uses, :as => :no_use, :dependent => :delete_all
validates_presence_of :osp_id, :relative_memo_id
scope :no_use_for, lambda { |user_id|
{:include => :no_uses,
:conditions => ["#{NoUse.table_name}.user_id = ?", user_id] }
}
end

View File

@ -0,0 +1,77 @@
<!--added by yiang -->
<!--display the board-->
<div class="borad-topic-count" style="margin-top:10px">
<span>共有 <%= link_to memos.count %> 个贴子 </span
</div>
<div style="padding-top: 10px">
<% if memos.any? %>
<% memos.each do |topic| %>
<table class="content-text-list">
<tr>
<td colspan="2" valign="top" width="50" ><%= link_to image_tag(url_to_avatar(topic.author), :class => "avatar"), user_path(topic.author) if topic.author%>
<%= image_tag('../images/avatars/User/0', :class => "avatar") unless topic.author%> </td>
<td>
<table width="630px" border="0">
<tr>
<td valign="top" width="500px" class="<%= topic.sticky ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject), open_source_project_relative_memo_path(open_source_project, topic) %></td>
<td align="right" rowspan="3">
<table class="borad-count">
<tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.replies_count), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr>
<tr>
<td align="center">回帖</td>
</tr>
</table></td>
<td align="right" rowspan="3">
<table class="borad-count">
<tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr>
<tr>
<td align="center">关注</td>
</tr>
</table></td>
<td align="right" rowspan="3">
<table class="borad-count">
<tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr>
<tr>
<td align="center">浏览</td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="2" ><span class="font_description"> </span></td>
</tr>
<!-- <tr>
<td align="left" colspan="2" ><span class="font_lighter"><%#= authoring topic.created_at, topic.author %>
<br />
</span></td>
</tr> -->
<tr>
<td align="left" colspan="2" >帖子来源:<span class="font_lighter" style="color: #068d9c"><%=link_to 'OSChina', topic.url %>
</span></td>
<td align="left"><%= no_use_link(topic, User.current) %> </td>
</tr>
</table></td>
</tr>
</table>
<% end %>
<div class="pagination">
<%= pagination_links_full @topic_pages, @topic_count %>
</div>
<% else %>
<p class="nodata">
<%= l(:label_no_data) %>
</p>
<% end %>
</div>

View File

@ -1,7 +1,360 @@
<!-- added by fq --> <!-- added by fq -->
<!--modified by yiang -->
<!--display the board--> <!--display the board-->
<div class="borad-topic-count">
共有 <%= link_to memos.count %> 个贴子
</style>
<%= javascript_include_tag "ichart.1.2.min" %>
<%= stylesheet_link_tag "sec-analysis.css" %>
<%= stylesheet_link_tag "buglist-ichart.css" %>
<%= stylesheet_link_tag "buglist.css" %>
<div class="mask">
<div class="header2"></div>
<div class="colleft">
<div class="col1" style="margin-right:0px">
<h1></h1>
<div id='canvasDiv' style="margin-left:35px"></div>
</div>
<div class="col2" style="margin-left:0px">
<div style="margin-left:0px" > <span> <h1 style="fontsize:19px;color:orange;font-weight:900">项目安全态势 </h1></span><span style="margin-top: -30px; margin-right:70px;float: right; display: block;"><%= link_to "更多 >>", :controller => "open_source_projects",:action => "showmemo", :id => @open_source_project.id %></span></div>
<div class="fixed"></div>
<div class="li_list" style="margin-top:10px;margin-left:10px">
<ul style="list-style-type: square;">
<!-- <li><span class="li_time">>[DDoS漏洞]</span><a href="/vuldb/ssvid-62261" title="Cobbler 2.4.x - 2.6.x 本地文件包含">Cobbler 2.4.x - 2.6.x 本地文件包含</a></li> -->
<li><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62260" title="Ruby OpenSSL CA私钥伪造漏洞">Ruby OpenSSL CA私钥伪造漏洞</a></li>
<li><span class="li_time">>[远程溢出漏洞]</span><a href="/vuldb/ssvid-62259" title="Adobe Flash Player 整数堆栈下溢远程命令执行">Adobe Flash Player 远程命令执行</a></li>
<!-- <li><span class="li_time">14-05-07</span><a href="/vuldb/ssvid-62258" title="PHPDISK phpdisk_del_process.php SQL注入漏洞">PHPDISK phpdisk_del_process.php SQL注入漏洞</a></li> -->
<!-- <li><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62257" title="BEESCMS 3.4 order_save.php SQL注入漏洞">BEESCMS 3.4 order_save.php SQL注入漏洞</a></li> -->
<!-- <li ><span class="li_time">>[SQL注入漏洞]</span><a href="/vuldb/ssvid-62256" title="Apache/NGINX 下 PHP-FPM 或者 PHP-CGI 拒绝服务漏洞">Apache/NGINX 下 PHP-FPM </a></li> -->
<li><span class="li_time">>[SQL注入漏洞]</span><a href="/vuldb/ssvid-62250" title="AlienVault OSSIM SQL注入以及远程代码执行">AlienVault OSSIM SQL注入</a></li>
<li><span class="li_time">>[DDoS漏洞]</span><a href="/vuldb/ssvid-62248" title="Eucalyptus Web Services拒绝服务漏洞">Eucalyptus Web Services</a></li>
<li ><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62245" title="Watchguard Fireware XTM OpenSSL TLS心跳信息泄漏漏洞"> Fireware XTM OpenSSL TLS</a></li>
<li ><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62244" title="SAP Sybase SQL Anywhere OpenSSL TLS泄漏漏洞">Sybase SQL Anywhere OpenSSL TLS</a></li>
</ul>
</div>
</div>
</div>
</div>
<div style="clear:both; margin:0 0 10 0"></div>
<script type="text/javascript">
$(function(){
var flow=[];
for(var i=0;i<35;i++){
flow.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
// t.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
}
var data = [
{
name : 'commit',
value:flow,
color:'#0d8ecf',
line_width:2
}
];
var labels = ["","2010","2011","2012","2013","2014"];
var line = new iChart.LineBasic2D({
render : 'canvasDiv',
data: data,
align:'center',
// title : '安全态势分析 ',
title : {
text:'安全态势分析',
color:'#698389',
fontsize : 14,
textAlign:'left',
padding:'0 40',
font:'微软雅黑',
border:{
enable:true,
width:[0,0,2,0],
color:'#698389'
},
height:30
},
subtitle : '',
footnote : '',
width : 300, // 面板大小
height : 200,
shadow:true,
//shadow_color : '#20262f',
shadow_blur : 1,
shadow_offsetx : 0,
shadow_offsety : 2,
//background_color:null //'#383e46'设置透明背景
tip:{
enable:true,
shadow:true,
move_duration:400,
border:{
enable:true,
radius : 5,
width:2,
color:'#3f8695'
},
},
// legend : {
// enable : true,
// row:1,//设置在一行上显示与column配合使用
// column : 'max',
// valign:'top',
// sign:'bar',
// background_color:null,//设置透明背景
// offsetx:-80,//设置x轴偏移满足位置需要
// border : true
// },
crosshair:{
enable:true, //十字交叉线
line_color:'#62bce9'
},
sub_option : {
label:false, //是否显示数值
// hollow_inside:false,
smooth : true,//平滑曲线
point_size:2, // 焦点大小
// point_hollow : true,
border : {
width : 2,
radius : '5 5 0 0',//上圆角设置
color : '#ffffff'
}
},
coordinate:{
width:225, // 图表大小
//valid_width:330,
height:55,
axis:{
// color:'#9f9f9f',
color:'#dcdcdc',
width:[0,0,2,2]
},
grids:{
vertical:{
way:'share_alike',
value:1
// 改垂直线
}
},
scale:[{
position:'left',
start_scale:0,
scale_space:50,
end_scale:70,
scale_color:'#9f9f9f',
// label : {color:'#ffffff',fontsize:11},
},{
position:'bottom',
labels:labels
}]
}
});
//开始画图
/**
*自定义组件,画平均线。
*/
// line.plugin(new iChart.Custom({
// drawFn:function(){
// /**
// *计算平均值的高度(坐标Y值)
// *计算高度还不会! 会划线了!
// */
// // var avg = line.total/5,
// // coo = line.getCoordinate(),
// // x = coo.get('originx'),
// // W = coo.width,
// // S = coo.getScale('left'),
// // H = coo.height,
// // h = (avg - S.start) * H / S.distance,
// // y = line.y + H - h;
// line.target.line(28,97,400,97,2,'#b32c0d')
// .textAlign('start')
// .textBaseline('middle')
// .textFont('600 12px Verdana');
// }
// }));
line.draw();
});
//]]>
</script>
<!--我是分割线1===================================================================================================-->
<div class="mask" style="margin-top:30px">
<div class="header2"></div>
<div class="colleft">
<div class="col1" style="margin-right:0px">
<h1></h1>
<div id='canvasDiv2' style="margin-left:35px"></div>
</div>
<div class="col2" style="margin-left:0px">
<div style="margin-left:0px" > <span> <h1 style="fontsize:19px;color:#15bccf;font-weight:900">技术创新趋势 </h1></span><span style="margin-top: -30px; margin-right:70px;float: right; display: block;"><%= link_to "更多 >>", :controller => "open_source_projects",:action => "showmemo", :id => @open_source_project.id %>
</span></div>
<div class="fixed"></div>
<div class="li_list" style="margin-top:10px;margin-left:10px">
<ul style="list-style-type: square;">
<!-- <li><span class="li_time">>[DDoS漏洞]</span><a href="/vuldb/ssvid-62261" title="Cobbler 2.4.x - 2.6.x 本地文件包含">Cobbler 2.4.x - 2.6.x 本地文件包含</a></li> -->
<li><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62260" title="Ruby OpenSSL CA私钥伪造漏洞">Ruby OpenSSL CA私钥伪造漏洞</a></li>
<li><span class="li_time">>[远程溢出漏洞]</span><a href="/vuldb/ssvid-62259" title="Adobe Flash Player 整数堆栈下溢远程命令执行">Adobe Flash Player 远程命令执行</a></li>
<!-- <li><span class="li_time">14-05-07</span><a href="/vuldb/ssvid-62258" title="PHPDISK phpdisk_del_process.php SQL注入漏洞">PHPDISK phpdisk_del_process.php SQL注入漏洞</a></li> -->
<!-- <li><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62257" title="BEESCMS 3.4 order_save.php SQL注入漏洞">BEESCMS 3.4 order_save.php SQL注入漏洞</a></li> -->
<!-- <li ><span class="li_time">>[SQL注入漏洞]</span><a href="/vuldb/ssvid-62256" title="Apache/NGINX 下 PHP-FPM 或者 PHP-CGI 拒绝服务漏洞">Apache/NGINX 下 PHP-FPM </a></li> -->
<li><span class="li_time">>[SQL注入漏洞]</span><a href="/vuldb/ssvid-62250" title="AlienVault OSSIM SQL注入以及远程代码执行">AlienVault OSSIM SQL注入</a></li>
<li><span class="li_time">>[DDoS漏洞]</span><a href="/vuldb/ssvid-62248" title="Eucalyptus Web Services拒绝服务漏洞">Eucalyptus Web Services</a></li>
<li ><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62245" title="Watchguard Fireware XTM OpenSSL TLS心跳信息泄漏漏洞"> Fireware XTM OpenSSL TLS</a></li>
<li ><span class="li_time">>[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62244" title="SAP Sybase SQL Anywhere OpenSSL TLS泄漏漏洞">Sybase SQL Anywhere OpenSSL TLS</a></li>
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
var flow=[];
for(var i=0;i<35;i++){
flow.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
// t.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
}
var data = [
{
name : 'commit',
value:flow,
color:'#0d8ecf',
line_width:2
}
];
var labels = ["","2010","2011","2012","2013","2014"];
var line = new iChart.LineBasic2D({
render : 'canvasDiv2',
data: data,
align:'center',
// title : ' ',
title : {
text:'技术主题演化',
color:'#698389',
fontsize : 14,
textAlign:'left',
padding:'0 40',
font:'微软雅黑',
border:{
enable:true,
width:[0,0,2,0],
color:'#698389'
},
height:30
},
subtitle : '',
footnote : '',
width : 300, // 面板大小
height : 200,
shadow:true,
//shadow_color : '#20262f',
shadow_blur : 1,
shadow_offsetx : 0,
shadow_offsety : 2,
//background_color:null //'#383e46'设置透明背景
tip:{
enable:true,
shadow:true,
move_duration:400,
border:{
enable:true,
radius : 5,
width:2,
color:'#3f8695'
},
},
crosshair:{
enable:true, //十字交叉线
line_color:'#62bce9'
},
sub_option : {
label:false, //是否显示数值
// hollow_inside:false,
smooth : true,//平滑曲线
point_size:2, // 焦点大小
// point_hollow : true,
},
coordinate:{
width:225, // 图表大小
//valid_width:330,
height:55,
axis:{
// color:'#9f9f9f',
color:'#dcdcdc',
width:[0,0,2,2]
},
grids:{
vertical:{
way:'share_alike',
value:1
// 改垂直线
}
},
scale:[{
position:'left',
start_scale:0,
scale_space:50,
end_scale:70,
scale_color:'#9f9f9f',
// label : {color:'#ffffff',fontsize:11},
},{
position:'bottom',
labels:labels
}]
}
});
//开始画图
line.draw();
});
//]]>
</script>
<!--我是分割线2===================================================================================================-->
<div class="borad-topic-count" style="margin-top:10px">
<!-- 共有 <%= link_to memos.count %> 个贴子 -->
<span><h1 style="color:#7591cc;font-weight:900">全球热帖</h1></span>
<span style="margin-top: -30px; margin-right:70px;float: right; display: block;"><%= link_to "更多>>", :controller => "open_source_projects",:action => "showmemo", :id => @open_source_project.id %></span>
</div> </div>
<div style="padding-top: 10px"> <div style="padding-top: 10px">
<% if memos.any? %> <% if memos.any? %>
@ -13,20 +366,31 @@
<td> <td>
<table width="630px" border="0"> <table width="630px" border="0">
<tr> <tr>
<td valign="top" width="500px" class="<%= topic.sticky ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject), open_source_project_relative_memo_path(topic.open_source_project, topic) %></td> <td valign="top" width="500px" class="<%= topic.sticky ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject), open_source_project_relative_memo_path(open_source_project, topic) %></td>
<td align="right" rowspan="3"> <td align="right" rowspan="3">
<table class="borad-count"> <table class="borad-count">
<tr> <tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.replies_count), open_source_project_relative_memo_path(topic.open_source_project, topic) %></td> <td align="center" class="borad-count-digit"><%= link_to (topic.replies_count), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr> </tr>
<tr> <tr>
<td align="center">回</td> <td align="center">回</td>
</tr> </tr>
</table></td> </table></td>
<td align="right" rowspan="3"> <td align="right" rowspan="3">
<table class="borad-count"> <table class="borad-count">
<tr> <tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(topic.open_source_project, topic) %></td> <td align="center" class="borad-count-digit"><%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr>
<tr>
<td align="center">关注</td>
</tr>
</table></td>
<td align="right" rowspan="3">
<table class="borad-count">
<tr>
<td align="center" class="borad-count-digit"><%= link_to (topic.viewed_count_crawl+topic.viewed_count_local), open_source_project_relative_memo_path(open_source_project, topic) %></td>
</tr> </tr>
<tr> <tr>
<td align="center">浏览</td> <td align="center">浏览</td>
@ -36,25 +400,20 @@
<tr> <tr>
<td colspan="2" ><span class="font_description"> </span></td> <td colspan="2" ><span class="font_description"> </span></td>
</tr> </tr>
<tr> <!-- <tr>
<td align="left" colspan="2" ><span class="font_lighter"><%#= authoring topic.created_at, topic.author %> <td align="left" colspan="2" ><span class="font_lighter"><%#= authoring topic.created_at, topic.author %>
<br /> <br />
</span></td> </span></td>
</tr> </tr> -->
<tr> <tr>
<td align="left" colspan="2" ><span class="font_lighter">帖子来源:<%= link_to topic.url, topic.url%> </span></td> <td align="left" colspan="2" >帖子来源:<span class="font_lighter" style="color: #068d9c"><%=link_to 'OSChina', topic.url %>
</span></td>
<td align="left"><%= no_use_link(topic, User.current) %> </td> <td align="left"><%= no_use_link(topic, User.current) %> </td>
</tr> </tr>
<tr>
<td align="left" colspan="2"> <%= image_tag( "/images/sidebar/tags.png") %>
<%= render :partial => 'tags/tag_name', :locals => {:obj => topic,:object_flag => "9",:non_list_all => true }%> </td>
</tr>
</table></td> </table></td>
</tr> </tr>
</table> </table>
<% end %> <% end %>
<div class="pagination"> <div class="pagination">
<%= pagination_links_full @topic_pages, @topic_count %> <%= pagination_links_full @topic_pages, @topic_count %>

View File

@ -1,4 +1,4 @@
<div class="top-content"> <div class="top-content" >
<%= form_tag(:controller => 'open_source_projects', :action => "search", :method => :get) do %> <%= form_tag(:controller => 'open_source_projects', :action => "search", :method => :get) do %>
<table width="940px"> <table width="940px">
<tr> <tr>
@ -18,15 +18,16 @@
</table> </table>
<% end %> <% end %>
</div> </div>
<style type="text/css"> <style type="text/css">
.tb-navigation { .tb-navigation {
position: relative; position: relative;
z-index: 400; z-index: 400;
} }
blockquote, body, button, code, dd, div, dl, dt, fieldset, form, h1, h2, h3, h4, h5, h6, input, legend, li, ol, p, pre, td, textarea, th, ul { /*blockquote, body, button, code, dd, div, dl, dt, fieldset, form, h1, h2, h3, h4, h5, h6, input, legend, li, ol, p, pre, td, textarea, th, ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }*/
.navigation { .navigation {
color: #666; color: #666;
@ -128,9 +129,190 @@ li {
.nav-search-con{ .nav-search-con{
padding-top: 7px; padding-top: 7px;
} }
</style> </style>
<%= javascript_include_tag "ichart.1.2.min" %>
<%= stylesheet_link_tag "buglist-div-use.css" %>
<%= stylesheet_link_tag "buglist-ichart.css" %>
<%= stylesheet_link_tag "buglist.css" %>
<div class="mask">
<div class="header2"></div>
<div class="colleft">
<div class="col1" >
<h1>安全态势分析 </h1>
<div id='canvasDiv' style="border-style:none"></div>
</div>
<div class="col2">
<div> <span> <h1 style="fontsize:19px">软件安全漏洞 </h1></span><span style="margin-top: -30px; margin-right:70px;float: right; display: block;"><a href="#" hover="text-decoration: underline;" >More >></span></a></div>
<div class="fixed"></div>
<div class="li_list" style="margin-top:10px;margin-left:10px">
<ul style="list-style-type: square;">
<li><span class="li_time">[DDoS漏洞]</span><a href="/vuldb/ssvid-62261" title="Cobbler 2.4.x - 2.6.x 本地文件包含">Cobbler 2.4.x - 2.6.x 本地文件包含</a></li>
<li><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62260" title="Ruby OpenSSL CA私钥伪造漏洞">Ruby OpenSSL CA私钥伪造漏洞</a></li>
<li style="color: red"><span class="li_time">[远程溢出漏洞]</span><a href="/vuldb/ssvid-62259" title="Adobe Flash Player 整数堆栈下溢远程命令执行">Adobe Flash Player 整数堆栈下溢远程命令执行</a></li>
<!-- <li><span class="li_time">14-05-07</span><a href="/vuldb/ssvid-62258" title="PHPDISK phpdisk_del_process.php SQL注入漏洞">PHPDISK phpdisk_del_process.php SQL注入漏洞</a></li> -->
<!-- <li><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62257" title="BEESCMS 3.4 order_save.php SQL注入漏洞">BEESCMS 3.4 order_save.php SQL注入漏洞</a></li> -->
<li ><span class="li_time">[SQL注入漏洞]</span><a href="/vuldb/ssvid-62256" title="Apache/NGINX 下 PHP-FPM 或者 PHP-CGI 拒绝服务漏洞">Apache/NGINX 下 PHP-FPM 拒绝服务漏洞</a></li>
<li><span class="li_time">[SQL注入漏洞]</span><a href="/vuldb/ssvid-62250" title="AlienVault OSSIM SQL注入以及远程代码执行">AlienVault OSSIM SQL注入以及远程代码执行</a></li>
<li><span class="li_time">[DDoS漏洞]</span><a href="/vuldb/ssvid-62248" title="Eucalyptus Web Services拒绝服务漏洞">Eucalyptus Web Services拒绝服务漏洞</a></li>
<li ><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62245" title="Watchguard Fireware XTM OpenSSL TLS心跳信息泄漏漏洞">Watchguard Fireware XTM OpenSSL TLS心跳...</a></li>
<li style="color: red"><span class="li_time">[OpenSSL漏洞]</span><a href="/vuldb/ssvid-62244" title="SAP Sybase SQL Anywhere OpenSSL TLS泄漏漏洞">SAP Sybase SQL Anywhere OpenSSL TLS</a></li>
</ul>
</div>
</div>
</div>
</div>
<div style="clear:both; margin:0 0 10 0"></div>
<script type="text/javascript">
$(function(){
var flow=[];
for(var i=0;i<35;i++){
flow.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
// t.push(Math.floor(Math.random()*(30+((i%12)*5)))+10);
}
var data = [
{
name : 'commit',
value:flow,
color:'#0d8ecf',
line_width:2
}
];
var labels = ["","2010","2011","2012","2013","2014"];
var line = new iChart.LineBasic2D({
render : 'canvasDiv',
data: data,
align:'center',
title : '',
subtitle : '',
footnote : '',
width : 430, // 面板大小
height : 210,
shadow:true,
//shadow_color : '#20262f',
shadow_blur : 1,
shadow_offsetx : 0,
shadow_offsety : 2,
//background_color:null //'#383e46'设置透明背景
tip:{
enable:true,
shadow:true,
move_duration:400,
border:{
enable:true,
radius : 5,
width:2,
color:'#3f8695'
},
},
legend : {
enable : true,
row:1,//设置在一行上显示与column配合使用
column : 'max',
valign:'top',
sign:'bar',
background_color:null,//设置透明背景
offsetx:-80,//设置x轴偏移满足位置需要
border : true
},
crosshair:{
enable:true, //十字交叉线
line_color:'#62bce9'
},
sub_option : {
label:false, //是否显示数值
// hollow_inside:false,
smooth : true,//平滑曲线
point_size:2, // 焦点大小
// point_hollow : true,
},
coordinate:{
width:370, // 图表大小
//valid_width:330,
height:150,
axis:{
// color:'#9f9f9f',
color:'#dcdcdc',
width:[0,0,2,2]
},
grids:{
vertical:{
way:'share_alike',
value:1
// 改垂直线
}
},
scale:[{
position:'left',
start_scale:0,
scale_space:50,
end_scale:70,
scale_color:'#9f9f9f',
// label : {color:'#ffffff',fontsize:11},
},{
position:'bottom',
labels:labels
}]
}
});
//开始画图
/**
*自定义组件,画平均线。
*/
line.plugin(new iChart.Custom({
drawFn:function(){
/**
*计算平均值的高度(坐标Y值)
*计算高度还不会! 会划线了!
*/
// var avg = line.total/5,
// coo = line.getCoordinate(),
// x = coo.get('originx'),
// W = coo.width,
// S = coo.getScale('left'),
// H = coo.height,
// h = (avg - S.start) * H / S.distance,
// y = line.y + H - h;
line.target.line(28,97,400,97,2,'#b32c0d')
.textAlign('start')
.textBaseline('middle')
.textFont('600 12px Verdana');
}
}));
line.draw();
});
//]]>
</script>
<%#======================================================================box before%> <%#======================================================================box before%>
<div class="tb-navigation" data-spm="a230r.1.3"> <div class="tb-navigation" data-spm="a230r.1.3" style="margin-top:20px">
<div class="navigation"> <div class="navigation">
<div class="nav-switch"> <div class="nav-switch">
<a href="javascript:(function (){$('.nav-content').toggle();})();"> <a href="javascript:(function (){$('.nav-content').toggle();})();">

View File

@ -51,4 +51,4 @@
:title => l(:button_delete) :title => l(:button_delete)
) if @forum.destroyable_by?(User.current) %> ) if @forum.destroyable_by?(User.current) %>
</div> </div>
<%= render :partial => 'open_source_projects/show_topics', :locals => {:memos => @memos} %> <%= render :partial => 'open_source_projects/show_topics', :locals => {:memos => @memos, :open_source_project => @open_source_project} %>

View File

@ -0,0 +1,55 @@
<!-- added by fq -->
<div id="add-memo" class='lz' style="display: none; padding: 20px;">
<h3><%=l(:label_memo_new)%></h3>
<% if User.current.logged? %>
<%= labelled_form_for(@memo, :url => open_source_project_relative_memos_path(@open_source_project), :html => {:multipart => true} ) do |f| %>
<% if @memo.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
<ul>
<% @memo.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="actions" style="max-width:680px">
<p><%= f.text_field :subject, :required => true%></p>
<p style="max-width:680px"><%= f.text_area :content, :required => true, :id => 'editor02' %></p>
<script type="text/javascript">var ckeditor=CKEDITOR.replace('editor02');</script>
<br/>
<p>
<%#= l(:label_attachment_plural) %><br />
<%#= render :partial => 'attachments/form', :locals => {:container => @memo} %>
</p>
<%= f.submit :value => l(:label_memo_create) %>
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-memo").hide(); return false;' %>
</div>
<% end %>
<% end %>
</div>
<!--modified by huang-->
<% #= link_to '发布帖子', new_forum_memo_path(@forum), :class => 'icon icon-add' %>
<span>
<%= link_to l(:label_memo_new_from_forum), new_open_source_project_relative_memo_path(@open_source_project), :class => 'icon icon-add',
:onclick => 'showAndScrollTo("add-memo", "memo_subject"); return false;' if User.current.logged? %>
</span>
<div class="contextual-borad">
<%#= link_to(
image_tag('edit.png')+l(:label_forum_edit),
{:action => 'edit', :id => @forum},
:method => 'get',
:title => l(:button_edit)
) if @forum.editable_by?(User.current) %>
<%#= link_to(
image_tag('delete.png')+'删除讨论区',
{:action => 'destroy', :id => @forum},
:method => :delete,
:data => {:confirm => l(:text_are_you_sure)},
:title => l(:button_delete)
) if @forum.destroyable_by?(User.current) %>
</div>
<%= render :partial => 'open_source_projects/show_memo', :locals => {:memos => @memos, :open_source_project => @open_source_project} %>
</div>

View File

@ -62,7 +62,7 @@
<% if @memo.author %> <% if @memo.author %>
<%= authoring @memo.created_at, @memo.author.name %> <%= authoring @memo.created_at, @memo.author.name %>
<% else %> <% else %>
<%= added_time @memo.created_at %> <%= user_url_and_time @memo.username, @memo.userhomeurl, @memo.created_at %>
<% end %></div> <% end %></div>
<div class="tags"> <div class="tags">
<div id="tags"> <div id="tags">
@ -142,7 +142,7 @@
<% if reply.author %> <% if reply.author %>
<%= authoring reply.created_at, reply.author.name %> <%= authoring reply.created_at, reply.author.name %>
<% else %> <% else %>
<%= added_time reply.created_at %> <%= user_url_and_time reply.username, reply.userhomeurl, reply.created_at %>
<% end %></td> <% end %></td>
</tr> </tr>
</table> </table>

View File

@ -1,10 +1,10 @@
class CreateRelativeMemos < ActiveRecord::Migration class CreateRelativeMemos < ActiveRecord::Migration
def change def change
create_table :relative_memos do |t| create_table :relative_memos do |t|
t.integer :osp_id, :null => false t.integer :osp_id, :null => true
t.integer :parent_id, null: true t.integer :parent_id, null: true
t.string :subject, null: false t.string :subject, null: false
t.text :content, null: false t.mediumtext :content, null: false
t.integer :author_id t.integer :author_id
t.integer :replies_count, default: 0 t.integer :replies_count, default: 0
t.integer :last_reply_id t.integer :last_reply_id

View File

@ -0,0 +1,10 @@
class CreateRelativeMemoToOpenSourceProjects < ActiveRecord::Migration
def change
create_table :relative_memo_to_open_source_projects do |t|
t.integer :osp_id
t.integer :relative_memo_id
t.timestamps
end
end
end

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140519070751) do ActiveRecord::Schema.define(:version => 20140519074133) do
create_table "activities", :force => true do |t| create_table "activities", :force => true do |t|
t.integer "act_id", :null => false t.integer "act_id", :null => false
@ -23,6 +23,11 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id" add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "andoidcontests", :force => true do |t|
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "apply_project_masters", :force => true do |t| create_table "apply_project_masters", :force => true do |t|
t.integer "user_id" t.integer "user_id"
t.string "apply_type" t.string "apply_type"
@ -615,6 +620,14 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
create_table "projecting_softapplictions", :force => true do |t|
t.integer "user_id"
t.integer "softapplication_id"
t.integer "project_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "projects", :force => true do |t| create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false t.string "name", :default => "", :null => false
t.text "description" t.text "description"
@ -630,6 +643,7 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
t.boolean "inherit_members", :default => false, :null => false t.boolean "inherit_members", :default => false, :null => false
t.integer "project_type" t.integer "project_type"
t.boolean "hidden_repo", :default => false, :null => false t.boolean "hidden_repo", :default => false, :null => false
t.integer "user_id"
t.integer "attachmenttype", :default => 1 t.integer "attachmenttype", :default => 1
end end
@ -659,6 +673,13 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
add_index "queries", ["project_id"], :name => "index_queries_on_project_id" add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id" add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "relative_memo_to_open_source_projects", :force => true do |t|
t.integer "osp_id"
t.integer "relative_memo_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "relative_memos", :force => true do |t| create_table "relative_memos", :force => true do |t|
t.integer "osp_id", :null => false t.integer "osp_id", :null => false
t.integer "parent_id" t.integer "parent_id"
@ -675,6 +696,9 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
t.integer "viewed_count_crawl", :default => 0 t.integer "viewed_count_crawl", :default => 0
t.integer "viewed_count_local", :default => 0 t.integer "viewed_count_local", :default => 0
t.string "url" t.string "url"
t.string "username"
t.string "userhomeurl"
t.date "date_collected"
end end
create_table "repositories", :force => true do |t| create_table "repositories", :force => true do |t|
@ -763,6 +787,7 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
t.integer "softapplication_id" t.integer "softapplication_id"
t.integer "is_public" t.integer "is_public"
t.string "application_developers" t.string "application_developers"
t.string "deposit_project"
end end
create_table "students_for_courses", :force => true do |t| create_table "students_for_courses", :force => true do |t|

9
public/javascripts/ichart.1.2.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,41 @@
.mask{
position: relative;
overflow: hidden;
margin: 0px 0 0 0;
width: 970px;
}
.header2{
float: left;
width: 100%;
background-color: #f4f4f4
}
.colleft{
position: relative;
width: 100%;
right: 50%;
background-color: #000000
}
.col1{
position: relative;
overflow: hidden;
float: left;
width: 470px;
left: 100%;
}
.col2{
position: relative;
overflow: hidden;
float: left;
width: 470px;
left: 3%;
}
a:hover, a:active {
color: #c61a1a;
text-decoration: underline;
}

View File

@ -0,0 +1,74 @@
@CHARSET "utf-8";
/*body {
padding:0px;
margin:0px;
margin-top:10px;
text-align: left;
font-family:'微软雅黑',Trebuchet MS,Verdana,Helvetica,Arial,sans-serif;
}*/
.ichartjs_btn{
padding:2px 5px;
line-height:25px;
color:#0b2946;
cursor: pointer;
text-align:center;
font-size:12px;
/*border:1px solid #98adc1;*/
-webkit-box-shadow:0px 0px 2px #375073;
-moz-box-shadow:0px 0px 2px #375073;
box-shadow:0px 0px 2px #375073;
/*-moz-border-radius:5px;*/
/*-webkit-border-radius:5px;*/
/*-khtml-border-radius:5px;*/
/*border-radius:0px*/
}
.ichartjs_author{
position: absolute;
font-size:12px;
right: 20px;
top: 0px;
}
.ichartjs_author a{
color:#113659;
}
.ichartjs_info{
position:relative;
margin:10px;
padding:5px;
color:#1b4267;
}
.ichartjs_sm{
margin:10px 0px;
font-size: 13px;
font-weight: 60;
}
.ichartjs_details{
padding:0px;
text-indent:2em;
font-size: 12px;
line-height:20px;
}
#ichartjs_code{
display:none;
}
#ichartjs_result{
position: absolute;
left: 20px;
bottom: 20px;
padding:8px;
color:#fefefe;
font-size:20px;
font-weight:600;
background-color:#6d869f;
cursor: pointer;
text-align:center;
/*border:1px solid #6a869d;*/
-webkit-box-shadow:0px 0px 2px #375073;
-moz-box-shadow:0px 0px 2px #375073;
box-shadow:0px 0px 2px #375073;
/*-moz-border-radius:10px;*/
/*-webkit-border-radius:10px;*/
/*-khtml-border-radius:0px;*/
/*border-radius:10px*/
}

View File

@ -0,0 +1,706 @@
@charset utf-8;
a {
cursor:pointer;
}
a:link {
color:#105DB5;
text-decoration:none;
}
h3 {
font-size:16px;
}
button {
border:1px solid #ccc;
border-radius:4px;
font-size:14px;
font-weight:700;
margin:5px 0;
padding:5px 18px 6px;
}
pre {
white-space:0;
word-wrap:break-word;
}
/*#main {
text-align:left;
width:870px;
background:#FFF;
margin:auto;
}
#content {
background:#FFF;
width:94%;
float:left;
padding-top:45px;
margin:5px 25px;
}*/
.li_list {
clear:both;
padding:0 0 0 0px;
}
.li_more {
text-align:right;
clear:both;
margin:5px 0;
padding:0 0 1px;
}
.li_time {
padding:0 7px 0 0;
}
div.pages {
color:#AAA;
font-size:13px;
text-align:right;
margin:10px 0;
}
div.pages a,.thispage,.break {
margin:2px;
padding:0 4px;
}
div.pages .prev {
margin-right:5px;
}
div.pages .next {
margin-left:5px;
}
div.pages .thispage {
background:none repeat scroll 0 0 #4D5256;
color:#FFF;
}
.clearfix:after {
clear:both;
content:" ";
display:block;
height:0;
line-height:0;
visibility:hidden;
}
.searchform .searchinput {
background:none repeat scroll 0 0 #FFF;
border:medium none;
float:left;
font-family:Arial,sans-serif;
font-size:13px;
width:72px;
margin:0;
padding:0;
}
.searchform .searchinput:focus {
width:196px;
}
.article_title {
font-weight:700;
border-bottom:1px solid #CCC;
margin-bottom:5px;
padding:5px 0 10px;
}
.vuln {
font-weight:700;
border-bottom:medium none!important;
padding:3px 0;
}
.article {
padding:5px 0 5px 12px;
}
.at_hr {
font-weight:700;
border-left:7px solid #778087;
border-bottom:medium none!important;
margin:9px 0;
padding:5px;
}
.article_exp {
padding:0 0 0 20px;
}
.sh_reference {
padding:0 0 0 15px;
}
.sh_reference blockquote {
padding:5px 18px;
}
.Statement {
color:red;
}
.cell {
border-bottom:1px dashed #E0E0E0;
line-height:18px;
list-style:none;
padding:9px 0 9px 15px;
}
.fade {
color:#999;
font-size:14px;
font-weight:700;
vertical-align:middle;
}
.created {
color:#999;
display:block;
font-size:11px;
}
.ntitle {
font-size:22px;
font-weight:700;
border-bottom:1px dashed #ECECEC;
padding:5px 15px;
}
.nutime {
color:#999;
font-size:12px;
padding:5px 15px;
}
.notags {
font-size:11px;
text-align:right;
margin-top:-24px;
padding:5px 15px;
}
.notags a {
background:none repeat scroll 0 0 #778087;
border-radius:10px;
color:#FFF;
margin-bottom:5px;
padding:2px 10px;
}
.notags a:hover {
background:none repeat scroll 0 0 #4D5256;
color:white;
text-decoration:none;
}
.node_dir_list {
width:570px;
float:left;
overflow:hidden;
border-right:1px dashed #E2E2E2;
}
.node_dir_side {
float:right;
width:220px;
overflow:hidden;
margin:0;
padding:0 15px 0 10px;
}
.node_list ul {
clear:both;
padding:0 30px;
}
.node_list li {
clear:both;
height:38px;
list-style-type:square;
font-size:15px;
padding:3px;
}
.return_te {
text-align:right;
font-size:12px;
vertical-align:bottom;
margin-bottom:-15px;
padding-right:15px;
}
.editor {
width:600px;
overflow:hidden;
font-size:12px;
}
.editor .tools {
height:20px;
line-height:20px;
padding:0;
}
.editor .tools a {
margin-right:15px;
text-decoration:none;
overflow:hidden;
}
.editor .Container {
display:none;
position:absolute;
float:left;
z-index:1000;
width:330px;
height:95px;
border:1px solid #BBB;
background:#FFF;
overflow:hidden;
cursor:default;
padding:5px 0 10px 10px;
}
.editor .imgIframe {
border:0;
width:100%;
height:22px;
margin:0;
padding:0;
}
.editor .Button {
text-align:center;
margin:0;
padding:5px 0;
}
.editor #attinfoDiv {
padding-top:5px;
color:#000;
}
.Button input {
margin-right:5px;
font-size:12px;
}
.editor input {
margin-right:5px;
font-size:11px;
}
.na_list {
clear:both;
padding:15px 0 0 62px;
}
.return_Nadir {
font-weight:700;
font-size:20px;
padding:0 0 15px;
}
.return_Nav {
padding-left:10px;
align:left;
font-weight:700;
font-size:15px;
}
.return_Nav a {
padding:0 .5px;
}
.applists {
width:100%;
list-style-type:none;
float:left;
border-top:1px dashed #E0E0E0;
padding:40px 0 10px;
}
.applists ul {
list-style-type:none;
width:98%;
list-style-position:outside;
float:left;
margin:5px 5px 10px 25px;
padding:0;
}
.applists ul li {
width:25%;
display:inline;
float:left;
line-height:24px;
margin:0;
}
.return_top {
text-align:right;
font-size:10px;
vertical-align:bottom;
margin-top:-15px;
padding-right:30px;
}
.return_top a {
color:#999;
text-decoration:none;
}
.return_en {
vertical-align:top;
align:left;
font-weight:900;
font-size:22px;
color:#666;
}
.maintinfo {
width:820px;
background-color:#E9EEF2;
border-radius:5px;
float:left;
font-size:14px;
height:90px;
line-height:1.6;
position:relative;
color:#666;
border-style:none none inset;
margin:10px 0 15px;
}
.maintinfo strong {
float:left;
font-size:20px;
height:64px;
padding-top:28px;
text-align:center;
width:230px;
}
.maintinfo div {
padding:22px 0 18px;
}
.maintinfo b {
font-size:13px;
font-weight:400;
margin-right:15px;
}
.maintinfo em {
font-size:12px;
margin-right:15px;
}
.maintinfo span {
float:right;
margin-top:-15px;
font-size:10px;
padding-right:9px;
}
.maintinfo .blogo {
background:url(http://mit00.02753.com/sebug_flat_0da.png) no-repeat scroll 0 0 transparent;
display:block;
height:19px;
text-indent:-5000px;
width:52px;
float:right;
margin:-35px -58px 0 0;
}
.aside {
float:right;
font-size:11px;
width:280px;
}
.aside .group {
border-bottom:1px dashed #ECECEC;
clear:both;
margin-bottom:10px;
padding-bottom:10px;
}
.aside .group li {
float:left;
height:22px;
margin-right:1%;
overflow:hidden;
white-space:nowrap;
width:32.299999%;
}
.indexarticle {
float:left;
padding-right:5px;
width:530px;
}
.bug_index_list ul {
list-style:none;
margin-bottom:20px;
}
.bug_index_list li {
padding-left:10px;
position:relative;
line-height:26px;
}
.indexarticle .topitems {
clear:both;
margin-bottom:20px;
font-size:11px;
padding:10px 0 0 10px;
}
.indexarticle .topitems li {
float:left;
height:22px;
margin-right:1%;
overflow:hidden;
white-space:nowrap;
width:23%;
}
.indexseach {
text-align:center;
margin:auto;
padding:110px 0;
}
.lsbb {
background:#eee;
border:1px solid #999;
border-top-color:#ccc;
border-left-color:#ccc;
height:30px;
width:120px;
}
.lsb {
font:14px arial;
background-position:bottom;
border:none;
color:#000;
cursor:pointer;
height:30px;
vertical-align:top;
background:#f1f1f1;
margin:0;
}
.lsb:active {
background:#ccc;
}
.tsf-p {
width:480px;
margin:0 auto;
}
.lst-td {
border-bottom:1px solid #999;
padding-right:16px;
}
.lst {
-moz-box-sizing:content-box;
background:#fff;
border:1px solid #ccc;
border-bottom:none;
color:#4D5256;
font:20px arial;
float:left;
height:26px;
vertical-align:middle;
width:100%;
padding:2px 10px 2px 6px;
}
.com {
color:#800;
}
.lit {
color:#066;
}
.pun,.opn,.clo {
color:#440;
}
.fun {
color:#red;
}
.str,.atv {
color:#080;
}
.kwd,.tag {
color:#008;
}
.pln {
color:#000;
}
.prettyprint {
padding:10px 0 10px 20px;
}
ol.linenums {
margin:0 0 0 20px;
}
ol.linenums li {
color:#959595;
line-height:15px;
padding:0 5px;
}
.prettyprint-dark {
background-color:#1d1f21;
border:0;
padding:10px;
}
.prettyprint-dark.linenums li {
color:#444;
}
.prettyprint-dark.linenums li:hover {
background-color:#282a2e;
}
.prettyprint-dark.kwd,.prettyprint-dark.tag {
color:#006;
font-weight:700;
}
.prettyprint-dark.str,.prettyprint-dark.atv {
color:#060;
}
#slider1 {
width:805px;
height:285px;
position:relative;
overflow:hidden;
}
#slider1Content {
width:805px;
position:absolute;
top:0;
margin-left:0;
}
.slider1Image {
float:center;
position:relative;
display:none;
}
.slider1Image span {
position:absolute;
font:10px/15px Arial,sans-serif;
width:805px;
background-color:#E9EEF2;
filter:alpha(opacity=70);
-moz-opacity:.7;
-khtml-opacity:.7;
opacity:.7;
color:#000;
display:none;
padding:10px 13px;
}
.top {
top:0;
left:0;
}
.slider1Image span strong {
font-size:14px;
}
.chart_p {
font-size:11px;
line-height:18px;
}
#isad {
float:right;
background:url(http://mit00.02753.com/www/img/icon_ad.png) no-repeat scroll 0 0 transparent;
font-size:11px;
padding-left:20px;
line-height:11px;
}
*,div.pages .next a,div.pages .prev a {
margin:0;
padding:0;
}
a:hover,.created a:hover {
background-color:#105DB5;
color:#FFF;
text-decoration:none;
}
h1,h2 {
font-size:18px;
}
.fixed,.clear {
clear:both;
}
.li_list li,.na_list li {
clear:both;
height:18px;
list-style-type:square;
padding:2px;
}
div.pages .break,.created a {
color:#999;
}
.tomore,.at_sebug {
padding:5px 0;
}
.typ,.atn,.dec,.var,.prettyprint-dark.typ,.prettyprint-dark .atn,.prettyprint-dark .dec,.prettyprint-dark.var {
color:#606;
}

View File

@ -0,0 +1,41 @@
.mask{
position: relative;
overflow: hidden;
margin: 0px 0 0 0;
width: 690px;
}
.header2{
float: left;
width: 100%;
background-color: #f4f4f4
}
.colleft{
position: relative;
width: 100%;
right: 50%;
background-color: #000000
}
.col1{
position: relative;
overflow: hidden;
float: left;
width: 50%;
left: 100%;
}
.col2{
position: relative;
overflow: hidden;
float: left;
width: 50%;
left: 1%;
}
a:hover, a:active {
color: #c61a1a;
text-decoration: underline;
}

View File

@ -0,0 +1,11 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
# This model initially had no columns defined. If you add columns to the
# model remove the '{}' from the fixture names and add the columns immediately
# below each fixture, per the syntax in the comments below
#
one: {}
# column: value
#
two: {}
# column: value

View File

@ -0,0 +1,7 @@
require 'test_helper'
class RelativeMemoToOpenSourceProjectTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end