二级目录框架及结构
This commit is contained in:
parent
5c795b92ee
commit
1685449381
|
@ -0,0 +1,3 @@
|
||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
|
@ -0,0 +1,3 @@
|
||||||
|
// Place all the styles related to the sub_document_comments controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
|
@ -84,35 +84,13 @@ class OrganizationsController < ApplicationController
|
||||||
|
|
||||||
@subfield_content = @organization.org_subfields.order("priority")
|
@subfield_content = @organization.org_subfields.order("priority")
|
||||||
@organization = Organization.find(params[:id])
|
@organization = Organization.find(params[:id])
|
||||||
# @org_subfield = OrgSubfield.find(params[:org_subfield_id])
|
shield_project_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Project'").map(&:shield_id)
|
||||||
# @org_subfield_ids = @org_subfield.org_document_comments.map(&:id) << 0
|
shield_course_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Course'").map(&:shield_id)
|
||||||
# @org_acts = OrgActivity.where("(org_act_type='OrgDocumentComment'and org_act_id in (#{@org_subfield_ids.join(",")})) || (container_type='OrgSubfield' and container_id=#{@org_subfield.id})").order('updated_at desc').page(params[:page] || 1).per(10)
|
project_ids = (@organization.projects.map(&:id)-shield_project_ids) << 0
|
||||||
|
course_ids = (@organization.courses.map(&:id)-shield_course_ids) << 0
|
||||||
shield_project_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Project'").map(&:shield_id)
|
course_types = "('Message','News','HomeworkCommon','Poll','Course')"
|
||||||
shield_course_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Course'").map(&:shield_id)
|
@project_acts = get_project_activities_org @organization, project_ids
|
||||||
project_ids = (@organization.projects.map(&:id)-shield_project_ids) << 0
|
@course_acts = get_course_activities_org @organization, course_ids
|
||||||
course_ids = (@organization.courses.map(&:id)-shield_course_ids) << 0
|
|
||||||
course_types = "('Message','News','HomeworkCommon','Poll','Course')"
|
|
||||||
@project_acts = get_project_activities_org @organization, project_ids
|
|
||||||
@course_acts = get_course_activities_org @organization, course_ids
|
|
||||||
#@org_acts = OrgActivity.where("container_id =? and container_type =?",@organization.id, 'Organization').order('updated_at desc')
|
|
||||||
#@project_acts = OrgActivity.where("(container_id =? and container_type =?) " +
|
|
||||||
# "or (container_type ='Project' and org_act_type in ('Issue','Message') and container_id in (#{project_ids.join(',')})) ",
|
|
||||||
# @organization.id, 'Organization').order('updated_at desc').limit(8)
|
|
||||||
|
|
||||||
#@course_acts = OrgActivity.where("(container_id =? and container_type =?) " +
|
|
||||||
# "or (container_type ='Course' and org_act_type in #{course_types} and container_id in (#{course_ids.join(',')}))",
|
|
||||||
# @organization.id, 'Organization').order('updated_at desc').limit(8)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 项目两种动态
|
|
||||||
#@project_acts = get_project_activities_org @organization
|
|
||||||
|
|
||||||
# 课程动态
|
|
||||||
#@project_acts_issues = get_project_activities_org @organization
|
|
||||||
#@course_acts = get_course_activities_org @organization
|
|
||||||
|
|
||||||
render :layout => 'base_org2'
|
render :layout => 'base_org2'
|
||||||
else
|
else
|
||||||
render_403
|
render_403
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
class SubDocumentCommentsController < ApplicationController
|
||||||
|
before_filter :find_subdomain_and_subfield, :only => [:new, :create, :show, :index]
|
||||||
|
before_filter :find_subfield_content, :only => [:show, :index]
|
||||||
|
helper :attachments,:organizations
|
||||||
|
layout 'base_sub_domain'
|
||||||
|
|
||||||
|
def new
|
||||||
|
@sub_document_comment = SubDocumentComment.new
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def create
|
||||||
|
@sub_document_comment = SubDocumentComment.new(:sub_domain_id => params[:sub_domain_id], :creator_id => User.current.id, :org_subfield_id => params[:org_subfield_id])
|
||||||
|
@sub_document_comment.title = params[:sub_document_comment][:title]
|
||||||
|
@sub_document_comment.content = params[:sub_document_comment][:content]
|
||||||
|
# @sub_document_comment.save_attachments(params[:attachments])
|
||||||
|
if params[:field_id]
|
||||||
|
@sub_document_comment.org_subfield_id = params[:field_id].to_i
|
||||||
|
end
|
||||||
|
if @sub_document_comment.save
|
||||||
|
flash.keep[:notice] = l(:notice_successful_create)
|
||||||
|
redirect_to org_subfield_sub_domain_sub_document_comments_path(:org_subfield_id => @org_subfield.id, :sub_domain_id => @subdomain.id)
|
||||||
|
# EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @sub_document_comment.id, :created_at => @sub_document_comment.updated_at)
|
||||||
|
# if params[:field_id]
|
||||||
|
# @org_subfield = OrgSubfield.find(params[:field_id])
|
||||||
|
# if @org_subfield.subfield_subdomain_dir.nil?
|
||||||
|
# redirect_to organization_path(@organization, :org_subfield_id => params[:field_id])
|
||||||
|
# else
|
||||||
|
# redirect_to show_org_subfield_organization_path(:id => @organization.id, :sub_dir_name => @org_subfield.subfield_subdomain_dir.name)
|
||||||
|
# end
|
||||||
|
# else
|
||||||
|
# redirect_to organization_org_document_comments_path(@organization)
|
||||||
|
# end
|
||||||
|
else
|
||||||
|
redirect_to new_org_document_comment_path(:organization_id => @organization.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@document = OrgDocumentComment.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization)
|
||||||
|
@documents = @subdomain.sub_document_comments.where("parent_id is null").order("created_at desc")
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {render :layout => 'base_org'}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
render_403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@org_document = OrgDocumentComment.find(params[:id])
|
||||||
|
@org_document.update_attributes(:title => params[:org_document_comment][:title], :content => params[:org_document_comment][:content])
|
||||||
|
Attachment.attach_files(@org_document, params[:attachments])
|
||||||
|
# @org_document.save_attachments(params[:attachments])
|
||||||
|
if @org_document.parent.nil?
|
||||||
|
act = OrgActivity.where("org_act_type='OrgDocumentComment' and org_act_id =?", @org_document.id).first
|
||||||
|
act.update_attributes(:updated_at => @org_document.updated_at)
|
||||||
|
EditorOfDocument.create(:editor_id => User.current.id, :org_document_comment_id => @org_document.id, :created_at => Time.now)
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {
|
||||||
|
if params[:flag].to_i == 0
|
||||||
|
redirect_to organization_org_document_comments_path(:organization_id => @org_document.organization.id)
|
||||||
|
else
|
||||||
|
if params[:flag].to_i == 1
|
||||||
|
redirect_to org_document_comment_path(@org_document.root.id, :organization_id => @org_document.organization.id)
|
||||||
|
else
|
||||||
|
redirect_to organization_path(@org_document.organization.id, :org_subfield_id => params[:org_subfield_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@org_document = OrgDocumentComment.find(params[:id])
|
||||||
|
@flag = params[:flag]
|
||||||
|
@organization = Organization.find(params[:organization_id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_reply
|
||||||
|
@document = OrgDocumentComment.find(params[:id]).root
|
||||||
|
@act = OrgActivity.find(params[:id])
|
||||||
|
@comment = OrgDocumentComment.new(:organization_id => @document.organization_id, :creator_id => User.current.id, :reply_id => params[:id])
|
||||||
|
@comment.content = params[:org_content]
|
||||||
|
@document.children << @comment
|
||||||
|
@document.save
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_reply_in_doc
|
||||||
|
@document = OrgDocumentComment.find(params[:id]).root
|
||||||
|
@comment = OrgDocumentComment.new(:organization_id => @document.organization_id, :creator_id => User.current.id, :reply_id => params[:id])
|
||||||
|
@comment.content = params[:org_comment][:org_content]
|
||||||
|
@document.children << @comment
|
||||||
|
@document.save
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@sub_document_comment = OrgDocumentComment.find(params[:id])
|
||||||
|
org = @sub_document_comment.organization
|
||||||
|
if @sub_document_comment.id == org.home_id
|
||||||
|
org.update_attributes(:home_id => nil)
|
||||||
|
end
|
||||||
|
if @sub_document_comment.destroy
|
||||||
|
end
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete_reply
|
||||||
|
@sub_document_comment = OrgDocumentComment.find(params[:id])
|
||||||
|
@document = @sub_document_comment.root
|
||||||
|
org = @sub_document_comment.organization
|
||||||
|
@sub_document_comment.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def quote
|
||||||
|
@org_comment = OrgDocumentComment.find(params[:id])
|
||||||
|
@subject = @org_comment.content
|
||||||
|
@subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
|
||||||
|
|
||||||
|
@content = "> #{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)}\n> "
|
||||||
|
@temp = OrgDocumentComment.new
|
||||||
|
#@course_id = params[:course_id]
|
||||||
|
@temp.content = "<blockquote>#{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)} <br/>#{@org_comment.content.html_safe}</blockquote>".html_safe
|
||||||
|
respond_to do | format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def reply
|
||||||
|
@document = OrgDocumentComment.find(params[:id]).root
|
||||||
|
@quote = params[:quote][:quote]
|
||||||
|
@org_document = OrgDocumentComment.new(:creator_id => User.current.id, :reply_id => params[:id])
|
||||||
|
|
||||||
|
# params[:blog_comment][:sticky] = params[:blog_comment][:sticky] || 0
|
||||||
|
# params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0
|
||||||
|
@org_document.title = params[:org_document_comment][:title]
|
||||||
|
@org_document.content = params[:org_document_comment][:content]
|
||||||
|
@org_document.content = @quote + @org_document.content
|
||||||
|
#@org_document.title = "RE: #{@article.title}" unless params[:blog_comment][:title]
|
||||||
|
@document.children << @org_document
|
||||||
|
# @user_activity_id = params[:user_activity_id]
|
||||||
|
# user_activity = UserActivity.where("act_type='BlogComment' and act_id =#{@article.id}").first
|
||||||
|
# if user_activity
|
||||||
|
# user_activity.updated_at = Time.now
|
||||||
|
# user_activity.save
|
||||||
|
# end
|
||||||
|
# attachments = Attachment.attach_files(@org_document, params[:attachments])
|
||||||
|
# render_attachment_warning_if_needed(@org_document)
|
||||||
|
#@article.save
|
||||||
|
# redirect_to user_blogs_path(:user_id=>params[:user_id])
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {
|
||||||
|
# if params[:course_id] #如果呆了course_id过来了,那么这是要跳到课程大纲去的
|
||||||
|
# redirect_to syllabus_course_path(:id=>params[:course_id])
|
||||||
|
# else
|
||||||
|
redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)
|
||||||
|
# end
|
||||||
|
|
||||||
|
}
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def find_subdomain_and_subfield
|
||||||
|
@subdomain = SubDomain.find(params[:sub_domain_id])
|
||||||
|
@org_subfield = OrgSubfield.find(params[:org_subfield_id])
|
||||||
|
@organization = @org_subfield.organization
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_subfield_content
|
||||||
|
@subfield_content = @organization.org_subfields.order("priority")
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,6 @@
|
||||||
class SubDomainsController < ApplicationController
|
class SubDomainsController < ApplicationController
|
||||||
layout 'base_org'
|
layout 'base_org'
|
||||||
|
before_filter :find_org_subfield_and_subdomain, :only => [:show, :index]
|
||||||
|
|
||||||
def create
|
def create
|
||||||
if SubDomain.where("org_subfield_id=#{params[:org_subfield_id]} and name=?",params[:name]).count == 0
|
if SubDomain.where("org_subfield_id=#{params[:org_subfield_id]} and name=?",params[:name]).count == 0
|
||||||
|
@ -22,7 +23,19 @@ class SubDomainsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
@subfield_content = @organization.org_subfields.order("priority")
|
||||||
@subdomain = SubDomain.find(params[:id])
|
@subdomain = SubDomain.find(params[:id])
|
||||||
render layout: 'base'
|
render layout: 'base_sub_domain'
|
||||||
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def find_org_subfield_and_subdomain
|
||||||
|
@subfield = OrgSubfield.find(params[:org_subfield_id])
|
||||||
|
@subdomain = SubDomain.find(params[:id])
|
||||||
|
@organization = @subfield.organization
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
module SubDocumentCommentsHelper
|
||||||
|
end
|
|
@ -0,0 +1,10 @@
|
||||||
|
class SubDocumentComment < ActiveRecord::Base
|
||||||
|
attr_accessible :content, :creator_id, :locked, :org_subfield_id, :parent_id, :reply_id, :sticky, :sub_domain_id, :title
|
||||||
|
|
||||||
|
include Redmine::SafeAttributes
|
||||||
|
include ApplicationHelper
|
||||||
|
belongs_to :sub_domain
|
||||||
|
belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id'
|
||||||
|
acts_as_tree :order => "#{SubDocumentComment.table_name}.sticky asc, #{SubDocumentComment.table_name}.created_at desc"
|
||||||
|
acts_as_attachable
|
||||||
|
end
|
|
@ -1,4 +1,5 @@
|
||||||
class SubDomain < ActiveRecord::Base
|
class SubDomain < ActiveRecord::Base
|
||||||
attr_accessible :field_type, :hide, :name, :org_subfield_id, :priority, :status
|
attr_accessible :field_type, :hide, :name, :org_subfield_id, :priority, :status
|
||||||
belongs_to :org_subfield, :foreign_key => :org_subfield_id
|
belongs_to :org_subfield, :foreign_key => :org_subfield_id
|
||||||
|
has_many :sub_document_comments
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title><%= h html_title %></title>
|
||||||
|
<meta name="description" content="<%= Redmine::Info.app_name %>" />
|
||||||
|
<meta name="keywords" content="issue,bug,tracker" />
|
||||||
|
<%= csrf_meta_tag %>
|
||||||
|
<%= favicon %>
|
||||||
|
<%= javascript_heads %>
|
||||||
|
<%= heads_for_theme %>
|
||||||
|
<%= stylesheet_link_tag 'org2','jquery/jquery-ui-1.9.2' %>
|
||||||
|
<%= javascript_include_tag 'cookie','project', 'organization','header','prettify','select_list_move','org'%>
|
||||||
|
<%= javascript_include_tag 'attachments' %>
|
||||||
|
<%#= call_hook :view_layouts_base_html_head %>
|
||||||
|
<!-- page specific tags -->
|
||||||
|
<%#= yield :header_tags -%>
|
||||||
|
<!-- MathJax的配置 -->
|
||||||
|
<script type="text/javascript"
|
||||||
|
src="/javascripts/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||||
|
</script>
|
||||||
|
<!-- 配置 : 在生成的公式图片上去掉Math定义的右键菜单,$$ $$ \( \) \[ \] 中的公式给予显示-->
|
||||||
|
<script type="text/x-mathjax-config">
|
||||||
|
MathJax.Hub.Config({
|
||||||
|
showMathMenu: false,
|
||||||
|
showMathMenuMSIE: false,
|
||||||
|
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="/javascripts/jquery-1.8.3.min.js"></script>
|
||||||
|
<script type="text/javascript" src="/javascripts/koala.min.1.5.js"></script><!--焦点图-->
|
||||||
|
|
||||||
|
<script src="/javascripts/scrollPic.js"></script><!--滚动-->
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
scrollPic();
|
||||||
|
});
|
||||||
|
function scrollPic() {
|
||||||
|
var scrollPic = new ScrollPic();
|
||||||
|
scrollPic.scrollContId = "scrollPic"; //内容容器ID
|
||||||
|
scrollPic.arrLeftId = "LeftArr";//左箭头ID
|
||||||
|
scrollPic.arrRightId = "RightArr"; //右箭头ID
|
||||||
|
|
||||||
|
scrollPic.frameWidth = 760;//显示框宽度
|
||||||
|
scrollPic.pageWidth = 760; //翻页宽度
|
||||||
|
|
||||||
|
scrollPic.speed = 10; //移动速度(单位毫秒,越小越快)
|
||||||
|
scrollPic.space = 10; //每次移动像素(单位px,越大越快)
|
||||||
|
scrollPic.autoPlay = true; //自动播放
|
||||||
|
scrollPic.autoPlayTime = 3; //自动播放间隔时间(秒)
|
||||||
|
|
||||||
|
scrollPic.initialize(); //初始化
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<!--add by huang-->
|
||||||
|
<script type="text/javascript">
|
||||||
|
function org_new_files_upload()
|
||||||
|
{
|
||||||
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'files/upload_org_new_files',:locals => {:org => @organization, :org_attachment_type => 0}) %>');
|
||||||
|
showModal('ajax-modal', '513px');
|
||||||
|
$('#ajax-modal').siblings().remove();
|
||||||
|
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 480px;'><img src='/images/bid/close.png' width='26px' height='26px' /></a>");
|
||||||
|
$('#ajax-modal').parent().css("top","40%").css("left","36%").css("border","3px solid #269ac9");
|
||||||
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
}
|
||||||
|
|
||||||
|
function org_new_files_banner_upload()
|
||||||
|
{
|
||||||
|
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'files/upload_org_new_files_banner',:locals => {:org => @organization, :org_attachment_type => 1}) %>');
|
||||||
|
showModal('ajax-modal', '513px');
|
||||||
|
$('#ajax-modal').siblings().remove();
|
||||||
|
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 480px;'><img src='/images/bid/close.png' width='26px' height='26px' /></a>");
|
||||||
|
$('#ajax-modal').parent().css("top","40%").css("left","36%").css("border","3px solid #269ac9");
|
||||||
|
$('#ajax-modal').parent().addClass("popbox_polls");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<body onload="prettyPrint();">
|
||||||
|
<!--内容开始-->
|
||||||
|
<header>
|
||||||
|
<div class="sn-header">
|
||||||
|
<%= render :partial => 'organizations/org_logined_header' %>
|
||||||
|
<div class="sn-row sn-bg-white">
|
||||||
|
<div class="sn-logo"> <img src="/images/sn_logo.jpg" width="367" height="63" alt="logo" class="sn-mt13" /> <a href="javascript:void(0);" class="sn-search-button sn-mt28"></a>
|
||||||
|
<input type="text" class="sn-search-input sn-mt28" placeholder="搜索" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--导航-->
|
||||||
|
<div class="sn-row sn-bg-blue">
|
||||||
|
<ul class="sn-nav">
|
||||||
|
<% @subfield_content.each do |field| %>
|
||||||
|
<% if is_default_field?(field) %>
|
||||||
|
<% case field.name %>
|
||||||
|
<% when 'activity' %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<%= link_to "首页", organization_path(@organization), :class => "sn-link-white" %>
|
||||||
|
</li>
|
||||||
|
<% when 'course' %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<a href="#course_<%= field.id %>" class="sn-link-white"> 课程动态</a>
|
||||||
|
</li>
|
||||||
|
<% when 'project' %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<a href="#project_<%= field.id %>" class="sn-link-white">项目动态</a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<% else %>
|
||||||
|
<% if field.field_type == "Post" && field.hide == 0 %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<a href="#message_<%= field.id %>" class="sn-link-white"><%= field.name %></a>
|
||||||
|
</li>
|
||||||
|
<% elsif field.field_type == "Resource" && field.hide == 0 %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<a href="#resource_<%= field.id %>" class="sn-link-white"><%= field.name %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% if User.current.admin_of_org?(@organization) %>
|
||||||
|
<li class="nav-element">
|
||||||
|
<a href="<%= setting_organization_path(@organization) %>" class="sn-link-white">配置</a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<%# 更新访问数,刷新的时候更新访问次数 %>
|
||||||
|
<% update_visiti_count @organization %>
|
||||||
|
<%# over %>
|
||||||
|
<!--内容开始-->
|
||||||
|
<div class="sn-content">
|
||||||
|
<div class="sn-content-left fl sn-mt15">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--右侧-->
|
||||||
|
<div class="sn-content-right fr sn-mt15">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<!--内容结束-->
|
||||||
|
<%= render_flash_messages %>
|
||||||
|
<%= yield %>
|
||||||
|
<%= call_hook :view_layouts_base_content %>
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<!--footer-->
|
||||||
|
<div class="sn-row sn-bg-grey2">
|
||||||
|
<div class="sn-footer">
|
||||||
|
<ul class="sn-footer-link">
|
||||||
|
<li class="sn-mr50"><a href="<%= about_us_path %>" class="sn-link-white sn-f18">关于我们</a></li>
|
||||||
|
<li class="sn-mr50"><a href="<%= agreement_path %>" class="sn-link-white sn-f18">服务协议</a></li>
|
||||||
|
<li class="sn-mr50"><a href="http://forge.trustie.net/forums/1/memos/1168" class="sn-link-white sn-f18">帮助中心</a></li>
|
||||||
|
<li><a href="<%= forums_path(:reorder_complex=>'desc')%>" class="sn-link-white sn-f18">在线报名</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="sn-contact">联系人:魏小姐 | 电 话:0731-84761282 | 传 真:0731-84761268 | 邮 箱:office@gnssopenlab.org</div>
|
||||||
|
<div class="sn-address">地 址:湖南省长沙市开福区东风路89号观园大厦23层<br />
|
||||||
|
卫星导航仿真与测试开放实验室</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<div id="ajax-indicator" style="display:none;">
|
||||||
|
<span><%= l(:label_loading) %></span>
|
||||||
|
</div>
|
||||||
|
<%#= call_hook :view_layouts_base_body_bottom %>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<style type="text/css">
|
||||||
|
input.is_public,input.is_public_checkbox{height:12px;}
|
||||||
|
input.is_public_checkbox{margin-left:4px;margin-right:4px;}
|
||||||
|
</style>
|
||||||
|
<div class="fl">
|
||||||
|
<span id="attachments_fields" xmlns="http://www.w3.org/1999/html">
|
||||||
|
<% if defined?(container) && container && container.saved_attachments %>
|
||||||
|
<% container.attachments.each_with_index do |attachment, i| %>
|
||||||
|
<span id="attachments_p<%= i %>" class="attachment">
|
||||||
|
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'upload_filename readonly', :readonly => 'readonly') %><%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style => "display: inline-block;") %><span class="ispublic-label"><%= l(:field_is_public) %>:</span>
|
||||||
|
<%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public, attachment.is_public == 1 ? true : false, :class => 'is_public') %>
|
||||||
|
<%= if attachment.id.nil?
|
||||||
|
#待补充代码
|
||||||
|
else
|
||||||
|
link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload')
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
|
||||||
|
|
||||||
|
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
||||||
|
</span>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
<% container.saved_attachments.each_with_index do |attachment, i| %>
|
||||||
|
<span id="attachments_p<%= i %>" class="attachment">
|
||||||
|
<%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly => 'readonly') %>
|
||||||
|
<%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style => "display: inline-block;") %>
|
||||||
|
<span class="ispublic-label"><%= l(:field_is_public) %>:</span>
|
||||||
|
<%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public, attachment.is_public == 1 ? true : false, :class => 'is_public') %>
|
||||||
|
<%= if attachment.id.nil?
|
||||||
|
#待补充代码
|
||||||
|
else
|
||||||
|
link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload')
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
<%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
|
||||||
|
|
||||||
|
<%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
|
||||||
|
</span>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<span class="add_attachment" style="font-weight:normal;">
|
||||||
|
<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
|
||||||
|
<!--%= link_to image_tag(),"javascript:void(0)", :onclick => "_file.click()"%-->
|
||||||
|
<%#= button_tag "文件浏览", :type=>"button", :onclick=>"$('#_file').click();",:onmouseover => 'this.focus()',:class => 'sub_btn' %>
|
||||||
|
<a href="javascript:void(0);" onclick="_file.click();" class="AnnexBtn fl mr15">上传附件</a>
|
||||||
|
<%= file_field_tag 'attachments[dummy][file]',
|
||||||
|
:id => '_file',
|
||||||
|
:class => 'file_selector',
|
||||||
|
:multiple => true,
|
||||||
|
:onchange => 'addInputFiles(this);',
|
||||||
|
:style => ie8? ? '' : 'display:none',
|
||||||
|
:data => {
|
||||||
|
:max_file_size => Setting.attachment_max_size.to_i.kilobytes,
|
||||||
|
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
|
||||||
|
:max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
|
||||||
|
:upload_path => uploads_path(:format => 'js'),
|
||||||
|
:description_placeholder => l(:label_optional_description),
|
||||||
|
:field_is_public => l(:field_is_public),
|
||||||
|
:are_you_sure => l(:text_are_you_sure),
|
||||||
|
:file_count => l(:label_file_count),
|
||||||
|
:lebel_file_uploding => l(:lebel_file_uploding),
|
||||||
|
:delete_all_files => l(:text_are_you_sure_all)
|
||||||
|
} %>
|
||||||
|
<span id="upload_file_count">
|
||||||
|
<%= l(:label_no_file_uploaded) %>
|
||||||
|
</span>
|
||||||
|
(<%= l(:label_max_size) %>:
|
||||||
|
<%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<% content_for :header_tags do %>
|
||||||
|
<%= javascript_include_tag 'attachments' %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
<%= content_for(:header_tags) do %>
|
||||||
|
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
|
||||||
|
<%= javascript_include_tag "des_kindEditor" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
init_des_data(150);
|
||||||
|
});
|
||||||
|
function check_org_title()
|
||||||
|
{
|
||||||
|
if($("#document_title").val().trim() == "")
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").html("<span class='c_red'>标题不能为空</span>").show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").hide();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function create_org_document()
|
||||||
|
{
|
||||||
|
if(check_org_title() == true)
|
||||||
|
{
|
||||||
|
org_document_description_editor.sync();
|
||||||
|
$('#new_sub_document_form').submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function cancel_create_org_document(){
|
||||||
|
$("#document_title").val("");
|
||||||
|
//org_document_description_editor.html("");
|
||||||
|
//org_document_description_editor.sync();
|
||||||
|
$('#sub_document_editor').hide();
|
||||||
|
$('#doc_title_hint').hide();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="resources" nhname="new_topic_form">
|
||||||
|
<%= form_tag org_subfield_sub_domain_sub_document_comments_path(:org_subfield_id => @org_subfield.id, :sub_domain_id => @subdomain.id), :id => 'new_sub_document_form' do |f| %>
|
||||||
|
<div>
|
||||||
|
<input class="postDetailInput fl" maxlength="250" name="sub_document_comment[title]" id="document_title" style="resize:none;" onfocus = "$('#sub_document_editor').show();" placeholder="请输入文章标题" />
|
||||||
|
</div>
|
||||||
|
<div id="doc_title_hint"></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div id="sub_document_editor" class="mt10" style="display: none">
|
||||||
|
<div>
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='description_textarea' name="sub_document_comment[content]"></textarea>
|
||||||
|
<%#= kindeditor_tag 'sub_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p id="homework_course_id_span" class="c_red mt5"></p>
|
||||||
|
<p id="e_tip" class="c_grey"></p>
|
||||||
|
<p id="e_tips" class="c_grey"></p>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="mt10">
|
||||||
|
<div class="fl" id="topic_attachments">
|
||||||
|
<%#= render :partial => 'sub_document_comments/attachment', :locals => {:container => nil} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="mt5">
|
||||||
|
<a href="javascript:void(0);" class="BlueCirBtnMini fr" id="new_topic_submit_btn">确定</a>
|
||||||
|
<span class="fr mr10 mt3">或</span>
|
||||||
|
<a href="javascript:void(0);" id="new_topic_cancel_btn" class="fr mr10 mt3">取消</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -0,0 +1,155 @@
|
||||||
|
<div class="resources mt10" id="organization_document_<%= document.id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(User.find(document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(document.creator_id) %>
|
||||||
|
<%= render :partial => 'users/show_detail_info', :locals => {:user => User.find(document.creator_id)} %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo">
|
||||||
|
<%= link_to User.find(document.creator_id), user_url_in_org(document.creator.id), :class => "newsBlue mr15" %>
|
||||||
|
TO <%= link_to document.sub_domain.name, organization_sub_domains_path(document.organization), :class => "newsBlue" %>
|
||||||
|
|
|
||||||
|
<span style="color:#269ac9;"><%= document.org_subfield_id.nil? ? "组织文章" :"#{OrgSubfield.find(document.org_subfield_id).name}" %></span>
|
||||||
|
<% if document.organization.home_id == document.id %>
|
||||||
|
<span class="red_homework_btn_cir ml5">已设为首页</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle postGrey"><%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id) %></div>
|
||||||
|
<div class="homepagePostDate fl">
|
||||||
|
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDate fl ml15">
|
||||||
|
更新时间:<%= format_time(OrgActivity.where("org_act_type='#{document.class}' and org_act_id =#{document.id}").first.updated_at) %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% unless document.content.blank? %>
|
||||||
|
<%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>document.id, :content=>document.content} %>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div id="intro_content_show_<%= document.id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
|
||||||
|
<div id="intro_content_hide_<%= document.id%>" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="mt10" style="font-weight:normal;">
|
||||||
|
<%= render :partial=>"attachments/activity_attach", :locals=>{:activity => document} %>
|
||||||
|
</div>
|
||||||
|
<!-- <%# if defined?(home_id) %>
|
||||||
|
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
||||||
|
<%# end %>-->
|
||||||
|
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(document.organization_id)) || User.current.id == document.creator_id %>
|
||||||
|
<div class="homepagePostSetting">
|
||||||
|
<ul>
|
||||||
|
<li class="homepagePostSettingIcon">
|
||||||
|
<ul class="homepagePostSettiongText">
|
||||||
|
<li>
|
||||||
|
<%= form_for('new_form', :url => {:controller => 'organizations', :action => 'set_homepage', :id => document.organization_id, :home_id => document.id, :show_homepage => 1}, :method => "put", :remote => true) do |f| %>
|
||||||
|
<a href="javascript:void(0);" class="postOptionLink" onclick="$(this).parent().submit();">设为首页</a>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "编辑文章", edit_org_document_comment_path(:id => document.id, :organization_id => document.organization_id, :flag => flag, :org_subfield_id => params[:org_subfield_id] ), :class => "postOptionLink" %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "删除文章", org_document_comment_path(:id => document.id, :organization_id => document.organization_id), :method => 'delete',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:remote => true, :class => 'postOptionLink' %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% comments_for_doc = document.children.reorder("created_at desc") %>
|
||||||
|
<% count = document.children.count() %>
|
||||||
|
|
||||||
|
<div class="homepagePostReply fl" style="background-color: #f1f1f1;" id="<%= document.id %>">
|
||||||
|
<div class="homepagePostReplyBanner">
|
||||||
|
<div class="homepagePostReplyBannerCount">回复
|
||||||
|
<sapn class="mr15"><%= count>0 ? "(#{count})" : "" %></sapn><span style="color: #cecece;">▪</span>
|
||||||
|
<span id="praise_count_<%=document.id %>">
|
||||||
|
<% if document.creator_id.to_i == User.current.id.to_i %>
|
||||||
|
<span class="ml15 likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(document) > 0 ? "(#{get_praise_num(document)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>document, :user_activity_id=>document.id,:type=>"activity"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<% if count > 3 %>
|
||||||
|
<div class="homepagePostReplyBannerMore">
|
||||||
|
<a id="reply_btn_<%= document.id %>" onclick="expand_reply('#reply_div_<%= document.id %> li','#reply_btn_<%=document.id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help">
|
||||||
|
展开更多
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyContainer" id="reply_div_<%= document.id %>" style="display:<%= count == 0 ? 'none' : 'block' %>">
|
||||||
|
<ul>
|
||||||
|
<% reply_id = 0 %>
|
||||||
|
<% comments_for_doc.each do |comment| %>
|
||||||
|
<% reply_id += 1 %>
|
||||||
|
<li style="display:<%= reply_id > 3 ? 'none' : '' %>">
|
||||||
|
<div class="homepagePostReplyPortrait"><%= link_to image_tag(url_to_avatar(User.find(comment.creator_id)), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_id) %></div>
|
||||||
|
<div class="homepagePostReplyDes">
|
||||||
|
<div class="homepagePostReplyPublisher">
|
||||||
|
<%= link_to User.find(comment.creator_id), user_url_in_org(comment.creator_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<%= format_activity_day(comment.created_at) %> <%= format_time(comment.created_at, false) %>
|
||||||
|
<span id="reply_praise_count_<%=comment.id %>">
|
||||||
|
<% if comment.creator_id.to_i == User.current.id.to_i %>
|
||||||
|
<span class="fr likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(comment) > 0 ? "(#{get_praise_num(comment)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<% unless comment.content.blank? %>
|
||||||
|
<div class="homepagePostReplyContent"><%= comment.content.html_safe %></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyContainer borderBottomNone minHeight48">
|
||||||
|
<div class="homepagePostReplyPortrait mr15 imageFuzzy" id="reply_image_<%= act.id %>">
|
||||||
|
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33", :alt => "用户头像"), user_url_in_org(User.current.id) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyInputContainer">
|
||||||
|
<div nhname='new_message_<%= act.id %>' style="display:none;">
|
||||||
|
<%= form_for('new_form', :url => add_reply_org_document_comment_path(:id => document.id, :act_id => act.id, :flag => flag), :method => "post", :remote => true) do |f| %>
|
||||||
|
<input type="hidden" name="org_activity_id" value="<%= act.id %>"/>
|
||||||
|
<div nhname='toolbar_container_<%= act.id %>'></div>
|
||||||
|
<textarea placeholder="有问题或建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= act.id %>' name="org_content"></textarea>
|
||||||
|
<a id="new_message_submit_btn_<%= act.id %>" href="javascript:void(0)" class="blue_n_btn fr" style="display:none;margin-top:6px;line-height:18px;">发送</a>
|
||||||
|
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p nhname='contentmsg_<%= act.id %>'></p>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function expand_reply(container, btnid) {
|
||||||
|
var target = $(container);
|
||||||
|
var btn = $(btnid);
|
||||||
|
if (btn.data('init') == '0') {
|
||||||
|
btn.data('init', 1);
|
||||||
|
btn.html('收起回复');
|
||||||
|
target.show();
|
||||||
|
} else {
|
||||||
|
btn.data('init', 0);
|
||||||
|
btn.html('展开更多');
|
||||||
|
target.hide();
|
||||||
|
target.eq(0).show();
|
||||||
|
target.eq(1).show();
|
||||||
|
target.eq(2).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,63 @@
|
||||||
|
<%= content_for(:header_tags) do %>
|
||||||
|
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
|
||||||
|
<%= javascript_include_tag "des_kindEditor" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
init_des_data(150);
|
||||||
|
});
|
||||||
|
function check_org_title()
|
||||||
|
{
|
||||||
|
if($("#document_title").val().trim() == "")
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").html("<span class='c_red'>标题不能为空</span>").show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").hide();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="homepageRightBanner mb5" style="margin-bottom:5px;">
|
||||||
|
<div class="NewsBannerName">编辑文章</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div>
|
||||||
|
<div class="resources" nhname="new_topic_form">
|
||||||
|
<%= form_tag url_for(:controller => 'org_document_comments',:action => 'update', :id => @org_document.id, :flag => @flag, :org_subfield_id => params[:org_subfield_id]),:method => 'put', :id => 'new_org_document_form' do |f| %>
|
||||||
|
<div>
|
||||||
|
<input class="postDetailInput fl mr15" style="margin-bottom:15px;" name="org_document_comment[title]" id="document_title" style="resize:none;" onfocus = "$('#org_document_editor').show();" onblur="check_org_title();" value="<%= @org_document.title %>" />
|
||||||
|
</div>
|
||||||
|
<div id="doc_title_hint"></div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div>
|
||||||
|
<div class="mt10">
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='description_textarea' name="org_document_comment[content]"><%=@org_document.content.html_safe %></textarea>
|
||||||
|
<%#= kindeditor_tag 'org_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<p id="homework_course_id_span" class="c_red mt5"></p>
|
||||||
|
<p id="e_tip" class="c_grey"></p>
|
||||||
|
<p id="e_tips" class="c_grey"></p>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<div class="mt10">
|
||||||
|
<div class="fl" id="topic_attachments">
|
||||||
|
<%= render :partial => 'org_document_comments/attachment', :locals => {:container => @org_document} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="mt5">
|
||||||
|
<a href="javascript:void(0);" class="BlueCirBtnMini fr" id="new_topic_submit_btn">确定</a>
|
||||||
|
<span class="fr mr10 mt3">或</span>
|
||||||
|
<a href="javascript:void(0);" id="new_topic_cancel_btn" onclick="location=document.referrer;" class="fr mr10 mt3">取消</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<%= content_for(:header_tags) do %>
|
||||||
|
<%= import_ke(enable_at: false, prettify: false, init_activity: true) %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<%= render :partial => 'new' %>
|
||||||
|
<% unless @documents.nil? %>
|
||||||
|
<% @documents.each do |document| %>
|
||||||
|
<!--<script>-->
|
||||||
|
<!--// $(function() {-->
|
||||||
|
<!--// sd_create_editor_from_data(<%#= OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first.id %>, null, "100%", "OrgActivity");-->
|
||||||
|
<!--// });-->
|
||||||
|
<!--</script>-->
|
||||||
|
<%= render :partial => 'organizations/show_org_document', :locals => {:document => document, :act => OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first, :flag => 0} %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
|
@ -0,0 +1,71 @@
|
||||||
|
<%= content_for(:header_tags) do %>
|
||||||
|
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
|
||||||
|
<%= javascript_include_tag "des_kindEditor" %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
init_des_data(150);
|
||||||
|
});
|
||||||
|
function check_org_title()
|
||||||
|
{
|
||||||
|
if($("#document_title").val().trim() == "")
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").html("<span class='c_red'>标题不能为空</span>").show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#doc_title_hint").hide();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function create_org_document()
|
||||||
|
{
|
||||||
|
if(check_org_title() == true)
|
||||||
|
{
|
||||||
|
org_document_description_editor.sync();
|
||||||
|
$('#new_sub_document_form').submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function cancel_create_org_document(){
|
||||||
|
location.href = document.referrer;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="homepageRightBanner" style="margin-top:<%= User.current.logged? ? '0px':'10px' %>; margin-bottom:10px;">
|
||||||
|
<div class="NewsBannerName"><%= OrgSubfield.try(:find, params[:field_id]).try(:name) %></div>
|
||||||
|
</div>
|
||||||
|
<div class="resources" nhname="new_topic_form" >
|
||||||
|
<%= form_tag org_subfield_sub_domain_sub_document_comment_path(:org_subfield_id => @org_subfield.id, :sub_domain_id => @subdomain.id), :id => 'new_sub_document_form' do |f| %>
|
||||||
|
<div>
|
||||||
|
<input class="postDetailInput fl mr15" name="sub_document_comment[title]" id="document_title" style="resize:none;" onfocus = "$('#sub_document_editor').show();" placeholder="请输入文章标题"></input>
|
||||||
|
</div>
|
||||||
|
<div id="doc_title_hint">
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="" >
|
||||||
|
<div class="mt10">
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='description_textarea' name="org_document_comment[content]"></textarea>
|
||||||
|
<%#= kindeditor_tag 'org_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p id="homework_course_id_span" class="c_red mt5"></p>
|
||||||
|
<p id="e_tip" class="c_grey"></p>
|
||||||
|
<p id="e_tips" class="c_grey"></p>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="mt10">
|
||||||
|
<div class="fl" id="topic_attachments">
|
||||||
|
<%#= render :partial => 'org_document_comments/attachment', :locals => {:container => nil} %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
|
||||||
|
<div class="mt5">
|
||||||
|
<a href="javascript:void(0);" class="BlueCirBtnMini fr" id="new_topic_submit_btn">确定</a>
|
||||||
|
<span class="fr mr10 mt3">或</span>
|
||||||
|
<a href="javascript:void(0);" onclick="cancel_create_org_document();" id="new_topic_cancel_btn" class="fr mr10 mt3">取消</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -0,0 +1,178 @@
|
||||||
|
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"create_kindeditor",'blog' %>
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
sd_create_editor_from_data(<%= @document.id%>,null,"100%", "<%=@document.class.to_s%>");
|
||||||
|
showNormalImage('message_description_<%= @document.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<div class="resources" id="organization_document_<%= @document.id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(@document.creator_id) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo">
|
||||||
|
<%= link_to User.find(@document.creator_id), user_url_in_org(@document.creator_id), :class => "newsBlue mr15" %>
|
||||||
|
TO <%= link_to @document.organization.name, organization_path(@document.organization), :class => "newsBlue" %>
|
||||||
|
|
|
||||||
|
<% if @document.organization.home_id == @document.id %>
|
||||||
|
<span style="color:#269ac9;">首页</span>
|
||||||
|
<% else %>
|
||||||
|
<span style="color:#269ac9;">组织文章</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle postGrey"><%= link_to @document.title, org_document_comment_path(:id => @document.id, :organization_id => @document.organization.id) %></div>
|
||||||
|
<div class="homepagePostDate">
|
||||||
|
发布时间:<%= format_activity_day(@document.created_at) %> <%= format_time(@document.created_at, false) %></div>
|
||||||
|
<% unless @document.content.blank? %>
|
||||||
|
<div class="homepagePostIntro" style="width:640px;" id="intro_content_<%= @document.id%>">
|
||||||
|
<%= @document.content.html_safe %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<div class=" fl">
|
||||||
|
<%= render :partial=>"attachments/activity_attach", :locals=>{:activity => @document} %>
|
||||||
|
<%#= link_to_attachments_course @document, :author => false %>
|
||||||
|
</div>
|
||||||
|
<!-- <%# if defined?(home_id) %>
|
||||||
|
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
||||||
|
<%# end %>-->
|
||||||
|
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(@document.organization_id) || User.current.id == @document.creator_id) %>
|
||||||
|
<div class="homepagePostSetting">
|
||||||
|
<ul>
|
||||||
|
<li class="homepagePostSettingIcon">
|
||||||
|
<ul class="homepagePostSettiongText">
|
||||||
|
<li>
|
||||||
|
<%= form_for('new_form', :url => {:controller => 'organizations', :action => 'set_homepage', :id => @document.organization_id, :home_id => @document.id}, :method => "put", :remote => true) do |f| %>
|
||||||
|
<a href="javascript:void(0);" class="postOptionLink" onclick="$(this).parent().submit();">设为首页</a>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :flag => 1), :class => "postOptionLink" %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "删除文章", org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :detail_page => 1), :method => 'delete',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:remote => true, :class => 'postOptionLink' %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% comments_for_doc = @document.children.reorder("created_at desc") %>
|
||||||
|
<% count = @document.children.count() %>
|
||||||
|
|
||||||
|
<div class="homepagePostReply fl" style="background-color: #f1f1f1;" id="<%= @document.id %>">
|
||||||
|
<%# if count > 0 %>
|
||||||
|
<div class="homepagePostReplyBanner">
|
||||||
|
<div class="homepagePostReplyBannerCount">回复
|
||||||
|
<sapn class="mr15"><%= count>0 ? "(#{count})" : "" %></sapn><span style="color: #cecece;">▪</span>
|
||||||
|
<span id="praise_count_<%=@document.id %>">
|
||||||
|
<% if @document.creator_id.to_i == User.current.id.to_i %>
|
||||||
|
<span class="ml15 likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(@document) > 0 ? "(#{get_praise_num(@document)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>@document, :user_activity_id=>@document.id,:type=>"activity"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="" id="reply_div_<%= @document.id %>">
|
||||||
|
<% comments_for_doc.each_with_index do |reply,i| %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
showNormalImage('reply_message_description_<%= reply.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% user = User.find(reply.creator_id) %>
|
||||||
|
<div class="homepagePostReplyContainer" onmouseover="$('#reply_edit_menu_<%= reply.id%>').show();" onmouseout="$('#reply_edit_menu_<%= reply.id %>').hide();">
|
||||||
|
<div class="homepagePostReplyPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(user), :width => 33,:height => 33), user_url_in_org(user.id) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyDes">
|
||||||
|
<%= link_to User.find(reply.creator_id).realname, user_url_in_org(reply.creator_id), :class => "newsBlue mr10 f14" %>
|
||||||
|
<div class="homepagePostReplyContent upload_img break_word" id="reply_message_description_<%= reply.id %>">
|
||||||
|
<%= reply.content.html_safe unless reply.content.nil? %>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: -7px; margin-bottom: 5px">
|
||||||
|
<%= format_time(reply.created_at) %>
|
||||||
|
<span id="reply_praise_count_<%=reply.id %>">
|
||||||
|
<% if reply.creator_id.to_i == User.current.id.to_i %>
|
||||||
|
<span class="fr likeButton" title="不能自己赞自己哦!"> <span class="likeText">赞</span><span class="likeNum"><%= get_praise_num(reply) > 0 ? "(#{get_praise_num(reply)})" : "" %></span></span>
|
||||||
|
<% else %>
|
||||||
|
<%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<div class="fr" id="reply_edit_menu_<%= reply.id%>" style="display: none">
|
||||||
|
<%= link_to(
|
||||||
|
l(:button_reply),
|
||||||
|
{:controller => 'org_document_comments',:action => 'quote',:user_id=>reply.creator_id, :id => reply.id},
|
||||||
|
:remote => true,
|
||||||
|
:method => 'get',
|
||||||
|
:class => 'fr newsBlue mr10',
|
||||||
|
:title => l(:button_reply)) if User.current.logged? %>
|
||||||
|
<%= link_to(
|
||||||
|
l(:button_delete),
|
||||||
|
{:controller => 'org_document_comments',:action => 'delete_reply', :id => reply.id},
|
||||||
|
:method => :delete,
|
||||||
|
:class => 'fr newsGrey mr10',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:title => l(:button_delete)
|
||||||
|
) if reply.creator_id == User.current.id %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p id="reply_message_<%= reply.id %>"></p>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<%# end %>
|
||||||
|
<% if User.current.logged?%>
|
||||||
|
<div class="talkWrapMsg" nhname="about_talk_reply">
|
||||||
|
<em class="talkWrapArrow"></em>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="talkConIpt ml5 mb10" id="reply<%= @document.id %>">
|
||||||
|
<%= form_for :org_comment, :url => {:action => 'add_reply_in_doc',:controller => 'org_document_comments', :id => @document.id}, :html => {:multipart => true, :id => 'message_form'} do |f| %>
|
||||||
|
<%= f.kindeditor :org_content,:width=>'99%',:height => '100px;',:editor_id=>'message_content_editor' %>
|
||||||
|
<%= link_to l(:button_cancel), "javascript:void(0)", :onclick => 'message_content_editor.html("");', :class => " grey_btn fr c_white mt10 mr5" %>
|
||||||
|
<%= link_to l(:button_reply), "javascript:void(0)", :onclick => "message_content_editor.sync();$('#message_form').submit();", :class => "blue_btn fr c_white mt10 mb10", :style => "margin-right: 5px;" %>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
$("#intro_content_<%= @document.id%> p,#intro_content_<%= @document.id%> span,#intro_content_<%= @document.id%> em").each(function(){
|
||||||
|
var postContent = $(this).html();
|
||||||
|
postContent = postContent.replace(/ /g," ");
|
||||||
|
postContent= postContent.replace(/ {2}/g," ");
|
||||||
|
postContent=postContent.replace(/ /g," ");
|
||||||
|
postContent=postContent.replace(/ /g," ");
|
||||||
|
$(this).html(postContent);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
function expand_reply(container, btnid) {
|
||||||
|
var target = $(container);
|
||||||
|
var btn = $(btnid);
|
||||||
|
if (btn.data('init') == '0') {
|
||||||
|
btn.data('init', 1);
|
||||||
|
btn.html('收起回复');
|
||||||
|
target.show();
|
||||||
|
} else {
|
||||||
|
btn.data('init', 0);
|
||||||
|
btn.html('展开更多');
|
||||||
|
target.hide();
|
||||||
|
target.eq(0).show();
|
||||||
|
target.eq(1).show();
|
||||||
|
target.eq(2).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1 @@
|
||||||
|
666666666666666
|
|
@ -119,6 +119,18 @@ RedmineApp::Application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :sub_domains, :only => [:index, :new, :create, :show] do
|
resources :sub_domains, :only => [:index, :new, :create, :show] do
|
||||||
|
resources :sub_document_comments, :only => [:index, :new, :create, :show] do
|
||||||
|
member do
|
||||||
|
post 'add_reply'
|
||||||
|
|
||||||
|
post 'reply'
|
||||||
|
|
||||||
|
end
|
||||||
|
collection do
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
collection do
|
collection do
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class CreateSubDocumentComments < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :sub_document_comments do |t|
|
||||||
|
t.text :content
|
||||||
|
t.text :title
|
||||||
|
t.integer :sub_domain_id
|
||||||
|
t.integer :creator_id
|
||||||
|
t.integer :parent_id
|
||||||
|
t.integer :reply_id
|
||||||
|
t.integer :locked
|
||||||
|
t.integer :sticky
|
||||||
|
t.integer :org_subfield_id
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
448
db/schema.rb
448
db/schema.rb
|
@ -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 => 20160427070237) do
|
ActiveRecord::Schema.define(:version => 20160428065243) 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
|
||||||
|
@ -52,6 +52,28 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
|
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
|
||||||
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
|
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
|
||||||
|
|
||||||
|
create_table "application_settings", :force => true do |t|
|
||||||
|
t.integer "default_projects_limit"
|
||||||
|
t.boolean "signup_enabled"
|
||||||
|
t.boolean "signin_enabled"
|
||||||
|
t.boolean "gravatar_enabled"
|
||||||
|
t.text "sign_in_text"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "home_page_url"
|
||||||
|
t.integer "default_branch_protection", :default => 2
|
||||||
|
t.boolean "twitter_sharing_enabled", :default => true
|
||||||
|
t.text "restricted_visibility_levels"
|
||||||
|
t.boolean "version_check_enabled", :default => true
|
||||||
|
t.integer "max_attachment_size", :default => 10, :null => false
|
||||||
|
t.integer "default_project_visibility"
|
||||||
|
t.integer "default_snippet_visibility"
|
||||||
|
t.text "restricted_signup_domains"
|
||||||
|
t.boolean "user_oauth_applications", :default => true
|
||||||
|
t.string "after_sign_out_path"
|
||||||
|
t.integer "session_expire_delay", :default => 10080, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "applied_projects", :force => true do |t|
|
create_table "applied_projects", :force => true do |t|
|
||||||
t.integer "project_id", :null => false
|
t.integer "project_id", :null => false
|
||||||
t.integer "user_id", :null => false
|
t.integer "user_id", :null => false
|
||||||
|
@ -133,6 +155,20 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.string "typeName", :limit => 50
|
t.string "typeName", :limit => 50
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "audit_events", :force => true do |t|
|
||||||
|
t.integer "author_id", :null => false
|
||||||
|
t.string "type", :null => false
|
||||||
|
t.integer "entity_id", :null => false
|
||||||
|
t.string "entity_type", :null => false
|
||||||
|
t.text "details"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id"
|
||||||
|
add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type"
|
||||||
|
add_index "audit_events", ["type"], :name => "index_audit_events_on_type"
|
||||||
|
|
||||||
create_table "auth_sources", :force => true do |t|
|
create_table "auth_sources", :force => true do |t|
|
||||||
t.string "type", :limit => 30, :default => "", :null => false
|
t.string "type", :limit => 30, :default => "", :null => false
|
||||||
t.string "name", :limit => 60, :default => "", :null => false
|
t.string "name", :limit => 60, :default => "", :null => false
|
||||||
|
@ -230,6 +266,17 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
|
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
|
||||||
add_index "boards", ["project_id"], :name => "boards_project_id"
|
add_index "boards", ["project_id"], :name => "boards_project_id"
|
||||||
|
|
||||||
|
create_table "broadcast_messages", :force => true do |t|
|
||||||
|
t.text "message", :null => false
|
||||||
|
t.datetime "starts_at"
|
||||||
|
t.datetime "ends_at"
|
||||||
|
t.integer "alert_type"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "color"
|
||||||
|
t.string "font"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "bug_to_osps", :force => true do |t|
|
create_table "bug_to_osps", :force => true do |t|
|
||||||
t.integer "osp_id"
|
t.integer "osp_id"
|
||||||
t.integer "relative_memo_id"
|
t.integer "relative_memo_id"
|
||||||
|
@ -516,6 +563,9 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "visits", :default => 0
|
t.integer "visits", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "courses", ["id"], :name => "id", :unique => true
|
||||||
|
add_index "courses", ["visits"], :name => "visits"
|
||||||
|
|
||||||
create_table "custom_fields", :force => true do |t|
|
create_table "custom_fields", :force => true do |t|
|
||||||
t.string "type", :limit => 30, :default => "", :null => false
|
t.string "type", :limit => 30, :default => "", :null => false
|
||||||
t.string "name", :limit => 30, :default => "", :null => false
|
t.string "name", :limit => 30, :default => "", :null => false
|
||||||
|
@ -577,6 +627,15 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
|
|
||||||
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
||||||
|
|
||||||
|
create_table "deploy_keys_projects", :force => true do |t|
|
||||||
|
t.integer "deploy_key_id", :null => false
|
||||||
|
t.integer "project_id", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id"
|
||||||
|
|
||||||
create_table "discuss_demos", :force => true do |t|
|
create_table "discuss_demos", :force => true do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
|
@ -626,6 +685,16 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "emails", :force => true do |t|
|
||||||
|
t.integer "user_id", :null => false
|
||||||
|
t.string "email", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true
|
||||||
|
add_index "emails", ["user_id"], :name => "index_emails_on_user_id"
|
||||||
|
|
||||||
create_table "enabled_modules", :force => true do |t|
|
create_table "enabled_modules", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
|
@ -648,6 +717,25 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
|
||||||
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
|
||||||
|
|
||||||
|
create_table "events", :force => true do |t|
|
||||||
|
t.string "target_type"
|
||||||
|
t.integer "target_id"
|
||||||
|
t.string "title"
|
||||||
|
t.text "data"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "action"
|
||||||
|
t.integer "author_id"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "events", ["action"], :name => "index_events_on_action"
|
||||||
|
add_index "events", ["author_id"], :name => "index_events_on_author_id"
|
||||||
|
add_index "events", ["created_at"], :name => "index_events_on_created_at"
|
||||||
|
add_index "events", ["project_id"], :name => "index_events_on_project_id"
|
||||||
|
add_index "events", ["target_id"], :name => "index_events_on_target_id"
|
||||||
|
add_index "events", ["target_type"], :name => "index_events_on_target_type"
|
||||||
|
|
||||||
create_table "exercise_answers", :force => true do |t|
|
create_table "exercise_answers", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "exercise_question_id"
|
t.integer "exercise_question_id"
|
||||||
|
@ -750,6 +838,15 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
|
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
|
||||||
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
|
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
|
||||||
|
|
||||||
|
create_table "forked_project_links", :force => true do |t|
|
||||||
|
t.integer "forked_to_project_id", :null => false
|
||||||
|
t.integer "forked_from_project_id", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true
|
||||||
|
|
||||||
create_table "forums", :force => true do |t|
|
create_table "forums", :force => true do |t|
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -878,6 +975,17 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "identities", :force => true do |t|
|
||||||
|
t.string "extern_uid"
|
||||||
|
t.string "provider"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id"
|
||||||
|
add_index "identities", ["user_id"], :name => "index_identities_on_user_id"
|
||||||
|
|
||||||
create_table "invite_lists", :force => true do |t|
|
create_table "invite_lists", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -1021,6 +1129,20 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "private", :default => 0
|
t.integer "private", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "keys", :force => true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.text "key"
|
||||||
|
t.string "title"
|
||||||
|
t.string "type"
|
||||||
|
t.string "fingerprint"
|
||||||
|
t.boolean "public", :default => false, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id"
|
||||||
|
add_index "keys", ["user_id"], :name => "index_keys_on_user_id"
|
||||||
|
|
||||||
create_table "kindeditor_assets", :force => true do |t|
|
create_table "kindeditor_assets", :force => true do |t|
|
||||||
t.string "asset"
|
t.string "asset"
|
||||||
t.integer "file_size"
|
t.integer "file_size"
|
||||||
|
@ -1032,6 +1154,27 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "owner_type", :default => 0
|
t.integer "owner_type", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "label_links", :force => true do |t|
|
||||||
|
t.integer "label_id"
|
||||||
|
t.integer "target_id"
|
||||||
|
t.string "target_type"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id"
|
||||||
|
add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type"
|
||||||
|
|
||||||
|
create_table "labels", :force => true do |t|
|
||||||
|
t.string "title"
|
||||||
|
t.string "color"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "labels", ["project_id"], :name => "index_labels_on_project_id"
|
||||||
|
|
||||||
create_table "member_roles", :force => true do |t|
|
create_table "member_roles", :force => true do |t|
|
||||||
t.integer "member_id", :null => false
|
t.integer "member_id", :null => false
|
||||||
t.integer "role_id", :null => false
|
t.integer "role_id", :null => false
|
||||||
|
@ -1082,6 +1225,47 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "viewed_count", :default => 0
|
t.integer "viewed_count", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "merge_request_diffs", :force => true do |t|
|
||||||
|
t.string "state"
|
||||||
|
t.text "st_commits", :limit => 2147483647
|
||||||
|
t.text "st_diffs", :limit => 2147483647
|
||||||
|
t.integer "merge_request_id", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true
|
||||||
|
|
||||||
|
create_table "merge_requests", :force => true do |t|
|
||||||
|
t.string "target_branch", :null => false
|
||||||
|
t.string "source_branch", :null => false
|
||||||
|
t.integer "source_project_id", :null => false
|
||||||
|
t.integer "author_id"
|
||||||
|
t.integer "assignee_id"
|
||||||
|
t.string "title"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "milestone_id"
|
||||||
|
t.string "state"
|
||||||
|
t.string "merge_status"
|
||||||
|
t.integer "target_project_id", :null => false
|
||||||
|
t.integer "iid"
|
||||||
|
t.text "description"
|
||||||
|
t.integer "position", :default => 0
|
||||||
|
t.datetime "locked_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id"
|
||||||
|
add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id"
|
||||||
|
add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id"
|
||||||
|
add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at"
|
||||||
|
add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id"
|
||||||
|
add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch"
|
||||||
|
add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id"
|
||||||
|
add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch"
|
||||||
|
add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true
|
||||||
|
add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title"
|
||||||
|
|
||||||
create_table "message_alls", :force => true do |t|
|
create_table "message_alls", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "message_id"
|
t.integer "message_id"
|
||||||
|
@ -1116,6 +1300,39 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
|
||||||
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
add_index "messages", ["parent_id"], :name => "messages_parent_id"
|
||||||
|
|
||||||
|
create_table "milestones", :force => true do |t|
|
||||||
|
t.string "title", :null => false
|
||||||
|
t.integer "project_id", :null => false
|
||||||
|
t.text "description"
|
||||||
|
t.date "due_date"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "state"
|
||||||
|
t.integer "iid"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id"
|
||||||
|
add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date"
|
||||||
|
add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true
|
||||||
|
add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id"
|
||||||
|
|
||||||
|
create_table "namespaces", :force => true do |t|
|
||||||
|
t.string "name", :null => false
|
||||||
|
t.string "path", :null => false
|
||||||
|
t.integer "owner_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "type"
|
||||||
|
t.string "description", :default => "", :null => false
|
||||||
|
t.string "avatar"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id"
|
||||||
|
add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true
|
||||||
|
add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id"
|
||||||
|
add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true
|
||||||
|
add_index "namespaces", ["type"], :name => "index_namespaces_on_type"
|
||||||
|
|
||||||
create_table "news", :force => true do |t|
|
create_table "news", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "title", :limit => 60, :default => "", :null => false
|
t.string "title", :limit => 60, :default => "", :null => false
|
||||||
|
@ -1141,6 +1358,31 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "notes", :force => true do |t|
|
||||||
|
t.text "note"
|
||||||
|
t.string "noteable_type"
|
||||||
|
t.integer "author_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.string "attachment"
|
||||||
|
t.string "line_code"
|
||||||
|
t.string "commit_id"
|
||||||
|
t.integer "noteable_id"
|
||||||
|
t.boolean "system", :default => false, :null => false
|
||||||
|
t.text "st_diff", :limit => 2147483647
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "notes", ["author_id"], :name => "index_notes_on_author_id"
|
||||||
|
add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id"
|
||||||
|
add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id"
|
||||||
|
add_index "notes", ["created_at"], :name => "index_notes_on_created_at"
|
||||||
|
add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type"
|
||||||
|
add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type"
|
||||||
|
add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type"
|
||||||
|
add_index "notes", ["project_id"], :name => "index_notes_on_project_id"
|
||||||
|
add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at"
|
||||||
|
|
||||||
create_table "notificationcomments", :force => true do |t|
|
create_table "notificationcomments", :force => true do |t|
|
||||||
t.string "notificationcommented_type"
|
t.string "notificationcommented_type"
|
||||||
t.integer "notificationcommented_id"
|
t.integer "notificationcommented_id"
|
||||||
|
@ -1150,6 +1392,49 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "oauth_access_grants", :force => true do |t|
|
||||||
|
t.integer "resource_owner_id", :null => false
|
||||||
|
t.integer "application_id", :null => false
|
||||||
|
t.string "token", :null => false
|
||||||
|
t.integer "expires_in", :null => false
|
||||||
|
t.text "redirect_uri", :null => false
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "revoked_at"
|
||||||
|
t.string "scopes"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true
|
||||||
|
|
||||||
|
create_table "oauth_access_tokens", :force => true do |t|
|
||||||
|
t.integer "resource_owner_id"
|
||||||
|
t.integer "application_id"
|
||||||
|
t.string "token", :null => false
|
||||||
|
t.string "refresh_token"
|
||||||
|
t.integer "expires_in"
|
||||||
|
t.datetime "revoked_at"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.string "scopes"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true
|
||||||
|
add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id"
|
||||||
|
add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true
|
||||||
|
|
||||||
|
create_table "oauth_applications", :force => true do |t|
|
||||||
|
t.string "name", :null => false
|
||||||
|
t.string "uid", :null => false
|
||||||
|
t.string "secret", :null => false
|
||||||
|
t.text "redirect_uri", :null => false
|
||||||
|
t.string "scopes", :default => "", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "owner_id"
|
||||||
|
t.string "owner_type"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type"
|
||||||
|
add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true
|
||||||
|
|
||||||
create_table "onclick_times", :force => true do |t|
|
create_table "onclick_times", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "onclick_time"
|
t.datetime "onclick_time"
|
||||||
|
@ -1305,6 +1590,23 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "show_mode", :default => 0
|
t.integer "show_mode", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "permissions", :force => true do |t|
|
||||||
|
t.string "controller", :limit => 30, :default => "", :null => false
|
||||||
|
t.string "action", :limit => 30, :default => "", :null => false
|
||||||
|
t.string "description", :limit => 60, :default => "", :null => false
|
||||||
|
t.boolean "is_public", :default => false, :null => false
|
||||||
|
t.integer "sort", :default => 0, :null => false
|
||||||
|
t.boolean "mail_option", :default => false, :null => false
|
||||||
|
t.boolean "mail_enabled", :default => false, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "permissions_roles", :id => false, :force => true do |t|
|
||||||
|
t.integer "permission_id", :default => 0, :null => false
|
||||||
|
t.integer "role_id", :default => 0, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
|
||||||
|
|
||||||
create_table "phone_app_versions", :force => true do |t|
|
create_table "phone_app_versions", :force => true do |t|
|
||||||
t.string "version"
|
t.string "version"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -1387,6 +1689,11 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "project_import_data", :force => true do |t|
|
||||||
|
t.integer "project_id"
|
||||||
|
t.text "data"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "project_infos", :force => true do |t|
|
create_table "project_infos", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
@ -1476,6 +1783,16 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
|
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
|
||||||
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
|
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
|
||||||
|
|
||||||
|
create_table "protected_branches", :force => true do |t|
|
||||||
|
t.integer "project_id", :null => false
|
||||||
|
t.string "name", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.boolean "developers_can_push", :default => false, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id"
|
||||||
|
|
||||||
create_table "queries", :force => true do |t|
|
create_table "queries", :force => true do |t|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
|
@ -1610,6 +1927,25 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.integer "is_teacher_score", :default => 0
|
t.integer "is_teacher_score", :default => 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "services", :force => true do |t|
|
||||||
|
t.string "type"
|
||||||
|
t.string "title"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.boolean "active", :default => false, :null => false
|
||||||
|
t.text "properties"
|
||||||
|
t.boolean "template", :default => false
|
||||||
|
t.boolean "push_events", :default => true
|
||||||
|
t.boolean "issues_events", :default => true
|
||||||
|
t.boolean "merge_requests_events", :default => true
|
||||||
|
t.boolean "tag_push_events", :default => true
|
||||||
|
t.boolean "note_events", :default => true, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id"
|
||||||
|
add_index "services", ["project_id"], :name => "index_services_on_project_id"
|
||||||
|
|
||||||
create_table "settings", :force => true do |t|
|
create_table "settings", :force => true do |t|
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
t.text "value"
|
t.text "value"
|
||||||
|
@ -1639,6 +1975,26 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "snippets", :force => true do |t|
|
||||||
|
t.string "title"
|
||||||
|
t.text "content", :limit => 2147483647
|
||||||
|
t.integer "author_id", :null => false
|
||||||
|
t.integer "project_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "file_name"
|
||||||
|
t.datetime "expires_at"
|
||||||
|
t.string "type"
|
||||||
|
t.integer "visibility_level", :default => 0, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id"
|
||||||
|
add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id"
|
||||||
|
add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at"
|
||||||
|
add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at"
|
||||||
|
add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id"
|
||||||
|
add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level"
|
||||||
|
|
||||||
create_table "softapplications", :force => true do |t|
|
create_table "softapplications", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
@ -1728,15 +2084,29 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "students_for_courses", ["course_id"], :name => "index_students_for_courses_on_course_id"
|
add_index "students_for_courses", ["course_id"], :name => "index_students_for_courses_on_course_id"
|
||||||
add_index "students_for_courses", ["student_id"], :name => "index_students_for_courses_on_student_id"
|
add_index "students_for_courses", ["student_id"], :name => "index_students_for_courses_on_student_id"
|
||||||
|
|
||||||
|
create_table "sub_document_comments", :force => true do |t|
|
||||||
|
t.text "content"
|
||||||
|
t.text "title"
|
||||||
|
t.integer "sub_domain_id"
|
||||||
|
t.integer "creator_id"
|
||||||
|
t.integer "parent_id"
|
||||||
|
t.integer "reply_id"
|
||||||
|
t.integer "locked"
|
||||||
|
t.integer "sticky"
|
||||||
|
t.integer "org_subfield_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "sub_domains", :force => true do |t|
|
create_table "sub_domains", :force => true do |t|
|
||||||
t.integer "org_subfield_id"
|
t.integer "org_subfield_id"
|
||||||
t.integer "priority", :default => 0
|
t.integer "priority"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "field_type"
|
t.string "field_type"
|
||||||
t.integer "hide", :default => 0
|
t.integer "hide"
|
||||||
t.integer "status", :default => 0
|
t.integer "status"
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "subfield_subdomain_dirs", :force => true do |t|
|
create_table "subfield_subdomain_dirs", :force => true do |t|
|
||||||
|
@ -1746,6 +2116,17 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "subscriptions", :force => true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.integer "subscribable_id"
|
||||||
|
t.string "subscribable_type"
|
||||||
|
t.boolean "subscribed"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true
|
||||||
|
|
||||||
create_table "system_messages", :force => true do |t|
|
create_table "system_messages", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.string "content"
|
t.string "content"
|
||||||
|
@ -1940,6 +2321,25 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
|
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
|
||||||
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
|
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
|
||||||
|
|
||||||
|
create_table "user_wechats", :force => true do |t|
|
||||||
|
t.integer "subscribe"
|
||||||
|
t.string "openid"
|
||||||
|
t.string "nickname"
|
||||||
|
t.integer "sex"
|
||||||
|
t.string "language"
|
||||||
|
t.string "city"
|
||||||
|
t.string "province"
|
||||||
|
t.string "country"
|
||||||
|
t.string "headimgurl"
|
||||||
|
t.string "subscribe_time"
|
||||||
|
t.string "unionid"
|
||||||
|
t.string "remark"
|
||||||
|
t.integer "groupid"
|
||||||
|
t.integer "user_id"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
t.datetime "updated_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "users", :force => true do |t|
|
create_table "users", :force => true do |t|
|
||||||
t.string "login", :default => "", :null => false
|
t.string "login", :default => "", :null => false
|
||||||
t.string "hashed_password", :limit => 40, :default => "", :null => false
|
t.string "hashed_password", :limit => 40, :default => "", :null => false
|
||||||
|
@ -1965,6 +2365,17 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
|
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
|
||||||
add_index "users", ["type"], :name => "index_users_on_type"
|
add_index "users", ["type"], :name => "index_users_on_type"
|
||||||
|
|
||||||
|
create_table "users_star_projects", :force => true do |t|
|
||||||
|
t.integer "project_id", :null => false
|
||||||
|
t.integer "user_id", :null => false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id"
|
||||||
|
add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true
|
||||||
|
add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id"
|
||||||
|
|
||||||
create_table "versions", :force => true do |t|
|
create_table "versions", :force => true do |t|
|
||||||
t.integer "project_id", :default => 0, :null => false
|
t.integer "project_id", :default => 0, :null => false
|
||||||
t.string "name", :default => "", :null => false
|
t.string "name", :default => "", :null => false
|
||||||
|
@ -2016,6 +2427,31 @@ ActiveRecord::Schema.define(:version => 20160427070237) do
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "web_hooks", :force => true do |t|
|
||||||
|
t.string "url"
|
||||||
|
t.integer "project_id"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "type", :default => "ProjectHook"
|
||||||
|
t.integer "service_id"
|
||||||
|
t.boolean "push_events", :default => true, :null => false
|
||||||
|
t.boolean "issues_events", :default => false, :null => false
|
||||||
|
t.boolean "merge_requests_events", :default => false, :null => false
|
||||||
|
t.boolean "tag_push_events", :default => false
|
||||||
|
t.boolean "note_events", :default => false, :null => false
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id"
|
||||||
|
add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id"
|
||||||
|
|
||||||
|
create_table "wechat_logs", :force => true do |t|
|
||||||
|
t.string "openid", :null => false
|
||||||
|
t.text "request_raw"
|
||||||
|
t.text "response_raw"
|
||||||
|
t.text "session_raw"
|
||||||
|
t.datetime "created_at", :null => false
|
||||||
|
end
|
||||||
|
|
||||||
create_table "wiki_content_versions", :force => true do |t|
|
create_table "wiki_content_versions", :force => true do |t|
|
||||||
t.integer "wiki_content_id", :null => false
|
t.integer "wiki_content_id", :null => false
|
||||||
t.integer "page_id", :null => false
|
t.integer "page_id", :null => false
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe SubDocumentCommentsController, :type => :controller do
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :sub_document_comment do
|
||||||
|
content "MyText"
|
||||||
|
title "MyText"
|
||||||
|
sub_domain_id 1
|
||||||
|
creator_id 1
|
||||||
|
parent_id 1
|
||||||
|
reply_id 1
|
||||||
|
locked 1
|
||||||
|
sticky 1
|
||||||
|
org_subfield_id 1
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe SubDocumentComment, :type => :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
Reference in New Issue