Merge branch 'szzh' of http://repository.trustie.net/xianbo/trustie2 into szzh
This commit is contained in:
commit
7d9b2c751b
|
@ -209,7 +209,12 @@ private
|
|||
end
|
||||
|
||||
def read_authorize
|
||||
@attachment.visible? ? true : deny_access
|
||||
if @attachment.container_type == "HomeworkAttach"
|
||||
true
|
||||
#User.current.allowed_to?(:view_homework_attaches, @attachment.project) ? true : deny_access
|
||||
else
|
||||
@attachment.visible? ? true : deny_access
|
||||
end
|
||||
end
|
||||
|
||||
def delete_authorize
|
||||
|
|
|
@ -33,12 +33,12 @@ class ProjectsController < ApplicationController
|
|||
menu_item l(:label_course_news), :only => :index
|
||||
|
||||
|
||||
before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise]
|
||||
before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches]
|
||||
# before_filter :authorize, :except => [:new_join, :new_homework, :homework, :statistics, :search, :watcherlist, :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :member, :focus, :file,
|
||||
# :statistics, :feedback, :course, :enterprise_course, :course_enterprise, :project_respond, :share,
|
||||
# :show_projects_score, :issue_score_index, :news_score_index, :file_score_index, :code_submit_score_index, :projects_topic_score_index]
|
||||
before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen]
|
||||
before_filter :authorize_global, :only => [:new, :create]
|
||||
before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen,:view_homework_attaches]
|
||||
before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches]
|
||||
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar]
|
||||
before_filter :file, :statistics, :watcherlist
|
||||
|
||||
|
|
|
@ -209,8 +209,6 @@ class UsersController < ApplicationController
|
|||
## 判断课程是否过期 [需封装]
|
||||
@memberships_doing = []
|
||||
@memberships_done = []
|
||||
@OwningCouses =[]
|
||||
@JoinCouses=[]
|
||||
now_time = Time.now.year
|
||||
@memberships.map { |e|
|
||||
end_time = e.project.course_extra.get_time.year
|
||||
|
@ -220,12 +218,6 @@ class UsersController < ApplicationController
|
|||
else
|
||||
@memberships_doing.push e
|
||||
end
|
||||
|
||||
if e.project.course_extra.tea_id == User.current.id
|
||||
@OwningCouses.push e
|
||||
else
|
||||
@JoinCouses.push e
|
||||
end
|
||||
}
|
||||
# respond_to do |format|
|
||||
# format.html
|
||||
|
|
|
@ -2,7 +2,7 @@ class Course < ActiveRecord::Base
|
|||
include Redmine::SafeAttributes
|
||||
|
||||
attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password
|
||||
belongs_to :project, :class_name => 'Project', :foreign_key => :extra # 定义一个project方法, 该方法通过extra来调用project表
|
||||
belongs_to :project, :class_name => 'Project', :foreign_key => :extra, primary_key: :identifier
|
||||
belongs_to :teacher, :class_name => 'User', :foreign_key => :tea_id # 定义一个方法teacher,该方法通过tea_id来调用User表
|
||||
belongs_to :school, :class_name => 'School', :foreign_key => :school_id #定义一个方法school,该方法通过school_id来调用School表
|
||||
has_many :bid
|
||||
|
|
|
@ -29,6 +29,13 @@ class HomeworkAttach < ActiveRecord::Base
|
|||
result
|
||||
end
|
||||
|
||||
def project
|
||||
work = HomeworkForCourse.find_by_bid_id(self.bid_id)
|
||||
if work
|
||||
work.project
|
||||
end
|
||||
end
|
||||
|
||||
def add_jours options
|
||||
jfm = self.journals_for_messages.build(options)
|
||||
jfm.save
|
||||
|
|
|
@ -18,6 +18,11 @@
|
|||
require "digest/sha1"
|
||||
|
||||
class User < Principal
|
||||
TEACHER = 0
|
||||
STUDENT = 1
|
||||
ENTERPRISE = 2
|
||||
DEVELOPER = 3
|
||||
|
||||
include Redmine::SafeAttributes
|
||||
|
||||
# Different ways of displaying/sorting users
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
<%= sort_header_tag('content_type', :caption => l(:attachment_sufix_browse), :default_order => 'desc', :scope => "col", :id => "vzebra-contenttype") %>
|
||||
<%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action") %>
|
||||
<%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children") %>
|
||||
<%= sort_header_tag('tags', :caption => l(:label_tag), :id => "vzebra-tag") %>
|
||||
<!-- <%= sort_header_tag('description', :caption => l(:field_description)) %> -->
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -52,14 +51,15 @@
|
|||
<%= link_to(image_tag('delete.png'), attachment_path(file),
|
||||
:data => {:confirm => l(:text_are_you_sure)}, :method => :delete) if delete_allowed %>
|
||||
</td>
|
||||
<td class='filename' style="font-size: 13px; ">
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='description' colspan="6">
|
||||
<div class="tags_area">
|
||||
<%# @preTags = %w|预设A 预设B 预设C 预设D 预设E 预设Z | %>
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %>
|
||||
<div class="tags_gradint"></div>
|
||||
</div>
|
||||
<div class="read-more hidden"><a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a>
|
||||
</div>
|
||||
<div class="read-more hidden"><a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a></div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
<%= sort_header_tag('content_type', :caption => l(:attachment_sufix_browse), :default_order => 'desc', :scope =>"col", :id=> "vzebra-contenttype")%>
|
||||
<%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action") %>
|
||||
<%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children") %>
|
||||
<%= sort_header_tag('tags', :caption => l(:label_tag), :id => "vzebra-tag") %>
|
||||
<!-- <%= sort_header_tag('description', :caption => l(:field_description)) %> -->
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -48,15 +47,17 @@
|
|||
<%= link_to(image_tag('delete.png'), attachment_path(file),
|
||||
:data => {:confirm => l(:text_are_you_sure)}, :method => :delete) if delete_allowed %>
|
||||
</td>
|
||||
<td class='filename' style="font-size: 13px; ">
|
||||
<div class="tags_area">
|
||||
<%# @preTags = %w|预设A 预设B 预设C 预设D 预设E 预设Z | %>
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %>
|
||||
<div class="tags_gradint"></div>
|
||||
</div>
|
||||
<div class="read-more hidden"><a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='description' colspan="6">
|
||||
<div class="tags_area">
|
||||
<%# @preTags = %w|预设A 预设B 预设C 预设D 预设E 预设Z | %>
|
||||
<%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %>
|
||||
<div class="tags_gradint"></div>
|
||||
</div>
|
||||
<div class="read-more hidden"><a href="javascript:void(0);" onclick="readmore(this);"> 更多 </a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
|
|
|
@ -1,146 +1,139 @@
|
|||
<%=render :partial => 'layouts/base_softapplication_top_content'%>
|
||||
<style>
|
||||
.softapplication-img .soft-application {
|
||||
float: left;
|
||||
width: 25%;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<%= render :partial => 'layouts/base_softapplication_top_content' %>
|
||||
|
||||
<p id="notice"><%= notice %></p>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="320" >
|
||||
</td>
|
||||
<td>
|
||||
<table width="100%" border="0">
|
||||
<tr style="font-size: 18px">
|
||||
<td colspan="2" valign="top"><strong><%= @softapplication.name %></strong></td>
|
||||
<td style="font-size: 15px; padding-left: 0px">
|
||||
<%= link_to '删除', softapplication_path(@softapplication), method: :delete, data: { confirm: '您确定要删除吗?' } if @softapplication.destroyable_by? User.current %>
|
||||
<%= link_to '编辑', edit_softapplication_path(@softapplication), method: :get if @softapplication.destroyable_by? User.current %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 570px; padding-left:40px; word-wrap: break-word; word-break: break-all">所属类别:<%= @softapplication.app_type_name %></td>
|
||||
<% contest = @softapplication.contests.first %>
|
||||
<td style="width: 240px; word-wrap: break-word; word-break: break-all">所属竞赛:<%= contest ? link_to(contest.name, show_attendingcontest_contest_path(contest)) : '尚未加入竞赛'%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">发布人员:<%= @softapplication.user.name %></td>
|
||||
<td>系统支持:<%= @softapplication.android_min_version_available %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">
|
||||
<span>作品下载:</span>
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="320">
|
||||
</td>
|
||||
<td>
|
||||
<table width="100%" border="0">
|
||||
<tr style="font-size: 18px">
|
||||
<td colspan="2" valign="top"><strong><%= @softapplication.name %></strong></td>
|
||||
<td style="font-size: 15px; padding-left: 0px">
|
||||
<%= link_to '删除', softapplication_path(@softapplication), method: :delete, data: {confirm: '您确定要删除吗?'} if @softapplication.destroyable_by? User.current %>
|
||||
<%= link_to '编辑', edit_softapplication_path(@softapplication), method: :get if @softapplication.destroyable_by? User.current %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 570px; padding-left:40px; word-wrap: break-word; word-break: break-all">所属类别:<%= @softapplication.app_type_name %></td>
|
||||
<% contest = @softapplication.contests.first %>
|
||||
<td style="width: 240px; word-wrap: break-word; word-break: break-all">所属竞赛:<%= contest ? link_to(contest.name, show_attendingcontest_contest_path(contest)) : '尚未加入竞赛' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">发布人员:<%= @softapplication.user.name %></td>
|
||||
<td>系统支持:<%= @softapplication.android_min_version_available %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">
|
||||
<span>作品下载:</span>
|
||||
<span>
|
||||
<% options = {:author => true, :deletable => @softapplication.user.eql?(User.current) } %><%= render :partial => 'attachments/app_link', :locals => {:attachments => @app_items, :options => options} %>
|
||||
<% options = {:author => true, :deletable => @softapplication.user.eql?(User.current)} %><%= render :partial => 'attachments/app_link', :locals => {:attachments => @app_items, :options => options} %>
|
||||
</span>
|
||||
</td>
|
||||
</td>
|
||||
|
||||
<td>开发人员:<%= @softapplication.application_developers %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %></td>
|
||||
<td>发布时间:<%=format_time @softapplication.created_at %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">
|
||||
<% unless @softapplication.deposit_project_url.nil? %>
|
||||
<%= textilizable ("托管项目网址: " + @softapplication.deposit_project_url) %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<td>开发人员:<%= @softapplication.application_developers %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %></td>
|
||||
<td>发布时间:<%= format_time @softapplication.created_at %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">
|
||||
<% unless @softapplication.deposit_project_url.nil? %>
|
||||
<%= textilizable ("托管项目网址: " + @softapplication.deposit_project_url) %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<strong><div style="font-size: 15px;">作品简介:</div></strong>
|
||||
<div style="padding-top: 5px"><%= @softapplication.description %></div>
|
||||
<strong>
|
||||
<div style="font-size: 15px;">作品简介:</div>
|
||||
</strong>
|
||||
|
||||
<div style="padding-top: 5px"><%= @softapplication.description %></div>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<div style="font-size: 15px;"><strong>作品得分:</strong></div>
|
||||
<!-- <div>打分总人数:<%= @softapplication.raters(:quality).count%></div> -->
|
||||
<div style="overflow: hidden">
|
||||
<div style="margin-left: 15%; float: left">
|
||||
<div style="padding-left: 45px; padding-bottom: 5px">得分比例</div>
|
||||
<div>
|
||||
<% 100.step(20,-20) do |star| %>
|
||||
<div data-kls="Softapplication" data-id="2" data-dimension="quality" data-average="3.25" class="rateable div_inline jDisabled" style="height: 20px; width: 115px; overflow: hidden; z-index: 1; position: relative;">
|
||||
<div class="jRatingColor" style="width: <%=star%>%;"></div>
|
||||
<div class="jRatingAverage" style="width: 0px; top: -20px;"></div>
|
||||
<div class="jStar" style="width: 115px; height: 20px; top: -40px; background: url("/images/seems_rateable/stars.png") repeat-x scroll 0% 0% transparent;">
|
||||
</div>
|
||||
</div>
|
||||
<%= @stars_status_map["star#{(star/20).to_s}".to_sym] %>
|
||||
<br>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px " align="center">
|
||||
<div>最终得分</div>
|
||||
<div style="padding-top: 1px; font-size: 15px; color: blue"><%=@softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s%>分</div>
|
||||
<div><%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %></div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px;" align="center">
|
||||
<div>打分总人数</div>
|
||||
<div style="padding-top: 1px; font-size: 25px; color: blue; alignment-baseline: "><strong><%= @softapplication.raters(:quality).count%></strong></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: 15px;"><strong>作品得分:</strong></div>
|
||||
<!-- <div>打分总人数:<%= @softapplication.raters(:quality).count %></div> -->
|
||||
<div style="overflow: hidden">
|
||||
<div style="margin-left: 15%; float: left">
|
||||
<div style="padding-left: 45px; padding-bottom: 5px">得分比例</div>
|
||||
<div>
|
||||
<% 100.step(20, -20) do |star| %>
|
||||
<div data-kls="Softapplication" data-id="2" data-dimension="quality" data-average="3.25" class="rateable div_inline jDisabled" style="height: 20px; width: 115px; overflow: hidden; z-index: 1; position: relative;">
|
||||
<div class="jRatingColor" style="width: <%=star%>%;"></div>
|
||||
<div class="jRatingAverage" style="width: 0px; top: -20px;"></div>
|
||||
<div class="jStar" style="width: 115px; height: 20px; top: -40px; background: url(/images/seems_rateable/stars.png) repeat-x scroll 0% 0% transparent;">
|
||||
</div>
|
||||
</div>
|
||||
<%= @stars_status_map["star#{(star/20).to_s}".to_sym] %>
|
||||
<br>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px " align="center">
|
||||
<div>最终得分</div>
|
||||
<div style="padding-top: 1px; font-size: 15px; color: blue"><%= @softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s %>
|
||||
分
|
||||
</div>
|
||||
<div><%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %></div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px;" align="center">
|
||||
<div>打分总人数</div>
|
||||
<div style="padding-top: 1px; font-size: 25px; color: blue;">
|
||||
<strong><%= @softapplication.raters(:quality).count %></strong></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<strong><div style="font-size: 15px">作品截图:</div></strong>
|
||||
<div class="softapplication-img" style="padding-top: 5px">
|
||||
<% @image_results.take(4).each do |attachment| %>
|
||||
<%= link_to_attachment_img attachment, :class => "soft-application", :download => "true" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div style='clear :left;'></div>
|
||||
<strong>
|
||||
<div style="font-size: 15px">作品截图:</div>
|
||||
</strong>
|
||||
|
||||
<div class="softapplication-img" >
|
||||
<ul>
|
||||
<% @image_results.take(4).each do |attachment| %>
|
||||
<li>
|
||||
<div class="title"><a href="#"><%= attachment.filename.to_s -%></a></div>
|
||||
<%= link_to_attachment_img attachment, :class => "soft-application", :download => "true"%>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<div style='clear :left;'></div>
|
||||
</div>
|
||||
|
||||
<div class="underline-contests_one"></div>
|
||||
<!-- <div style="margin-left: 22%;">
|
||||
<% 100.step(20,-20) do |star| %>
|
||||
<div data-kls="Softapplication" data-id="2" data-dimension="quality" data-average="3.25" class="rateable div_inline jDisabled" style="height: 20px; width: 115px; overflow: hidden; z-index: 1; position: relative;">
|
||||
<div class="jRatingColor" style="width: <%=star%>%;"></div>
|
||||
<div class="jRatingAverage" style="width: 0px; top: -20px;"></div>
|
||||
<div class="jStar" style="width: 115px; height: 20px; top: -40px; background: url("/images/seems_rateable/stars.png") repeat-x scroll 0% 0% transparent;">
|
||||
</div>
|
||||
</div>
|
||||
<%= @stars_status_map["star#{(star/20).to_s}".to_sym] %>
|
||||
<br>
|
||||
<% end %>
|
||||
</div> -->
|
||||
|
||||
<div style="height: 50px">
|
||||
<div style="font-size: 15px"><strong>作品评论:</strong></div>
|
||||
<div style="padding-left: 210px">评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %><span style="font-size: 11px">(您可以重新打分,打分结果以最后一次打分为主!)</span></div>
|
||||
|
||||
<div style="font-size: 15px"><strong>作品评论:</strong></div>
|
||||
<div style="padding-left: 210px">评分: <%= rating_for @softapplication, dimension: :quality, class: 'rateable div_inline' %>
|
||||
<span style="font-size: 11px">(您可以重新打分,打分结果以最后一次打分为主!)</span></div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--提示登录后对应用进行评价-->
|
||||
<div id="history">
|
||||
<%= render :partial => 'message_history', :locals => { :contest => @softapplication, :journals => @jour, :state => false} %>
|
||||
<%= render :partial => 'message_history', :locals => {:contest => @softapplication, :journals => @jour, :state => false} %>
|
||||
</div>
|
||||
|
||||
<!--分页-->
|
||||
<div class="pagination" style="float:left;">
|
||||
<ul>
|
||||
<%= pagination_links_full @feedback_pages %>
|
||||
</ul>
|
||||
<ul>
|
||||
<%= pagination_links_full @feedback_pages %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<%#= link_to '返回竞赛页面', show_softapplication_contest_path(@softapplication.contest) %>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<div class="user_course_list">
|
||||
<div class="menu">
|
||||
<%= link_to "#{l(:label_course_new)}", new_project_path(course: 1, project_type: 1), class: 'icon icon-add' if @user == User.current %>
|
||||
<ul>
|
||||
<li mode='doing' class="on">进行中</li>
|
||||
<li mode='end'>已完结</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="dyn_list_wrapper" mode='doing'>
|
||||
<div class='created_course'>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dyn_list_wrapper hidden" mode='end'>
|
||||
<div class="created_course ">
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,38 +1,16 @@
|
|||
<div class="content-title-top">
|
||||
<% if @memberships.empty? %>
|
||||
<% if @user != User.current %>
|
||||
<p class="font_description">
|
||||
<%= l(:label_project_course_un) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="font_description">
|
||||
<!--teacher could create the course directly-->
|
||||
<%= l(:label_project_course_unadd) %><%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p>
|
||||
<span><%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)</span>
|
||||
<%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' if @user == User.current %>
|
||||
</p>
|
||||
<p>
|
||||
<%= l(:label_created_course) %>
|
||||
<div> <%= render :partial => 'course_form', :locals => {:memberships => @OwningCouses}%>
|
||||
</div> </p>
|
||||
<div style="clear:both;"></div>
|
||||
<p> <%= l(:label_joined_course) %>
|
||||
<div> <%= render :partial => 'course_form', :locals => {:memberships => @JoinCouses}%>
|
||||
</div> </p>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<p>
|
||||
<%= link_to l(:label_course_done)+"("+@memberships_done.count.to_s+")", 'javascript:void(0);', :onclick => '$("#courses_history_block").slideToggle(400);' , style:"color:#666666" if User.current.logged? %>
|
||||
</p>
|
||||
|
||||
<div id="courses_history_block" class="courses_history hidden" >
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
<% if @memberships.empty? %>
|
||||
<% if @user != User.current %>
|
||||
<p class="font_description">
|
||||
<%= l(:label_project_course_un) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="font_description">
|
||||
<!--teacher could create the course directly-->
|
||||
<%= l(:label_project_course_unadd) %><%= link_to "#{l(:label_course_new)}", {:controller => 'projects', :action => 'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= render partial: 'course_list_have_entity' %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -11,23 +11,27 @@
|
|||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p>
|
||||
<span><%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)</span>
|
||||
<%= link_to"#{l(:label_course_view_student)}",{:controller=>'projects',:action=>'course', :course => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<div>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing}%>
|
||||
</div>
|
||||
<div class="user_course_list">
|
||||
<div class="menu">
|
||||
<%= link_to"#{l(:label_course_view_student)}",course_path(course: 1), :class => 'icon icon-add' %>
|
||||
<ul>
|
||||
<li mode='doing' class="on">进行中</li>
|
||||
<li mode='end'>已完结</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
<div class="dyn_list_wrapper" mode='doing'>
|
||||
<div class='created_course'>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<%= link_to l(:label_course_done)+"("+@memberships_done.count.to_s+")", 'javascript:void(0);', :onclick => '$("#courses_history_block").slideToggle(400); ', style:"color:#666666" if User.current.logged? %>
|
||||
</p>
|
||||
|
||||
<div id="courses_history_block" class="courses_history hidden" >
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
|
||||
</div>
|
||||
<div class="dyn_list_wrapper hidden" mode='end'>
|
||||
<div class="created_course ">
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -12,3 +12,22 @@
|
|||
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var $menu = $('.user_course_list .menu');
|
||||
var $li_tags = $menu.find('[mode]');
|
||||
var $dyn_list = $('.dyn_list_wrapper');
|
||||
|
||||
$menu.find('[mode]').each(function(index, el) {
|
||||
$(el).click(function() {
|
||||
mode = $(el).attr('mode');
|
||||
$menu.find('[mode]').removeClass( "on" );
|
||||
$( this ).addClass( "on" );
|
||||
var wrapper = $('[mode='+mode+']')
|
||||
$dyn_list.addClass( "hidden" );
|
||||
wrapper.removeClass('hidden')
|
||||
})
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -178,6 +178,11 @@ Redmine::AccessControl.map do |map|
|
|||
map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]}
|
||||
end
|
||||
|
||||
#作业模块权限
|
||||
map.project_module :bids do |map|
|
||||
map.permission :view_homework_attaches, {:bids => [:show, :show_project, :revision]}, :read => true
|
||||
end
|
||||
|
||||
map.project_module :boards do |map|
|
||||
map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
|
||||
map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
|
||||
|
|
|
@ -493,7 +493,6 @@ a.bids_user {
|
|||
}
|
||||
|
||||
.line{
|
||||
width: 905px;
|
||||
height: 1px;
|
||||
margin: 0px;
|
||||
background-color: #cacaca;
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
/* TODO: base/common/page 准备封装一些基本样式组合调用 参考YUI
|
||||
*******************************************************************************/
|
||||
span[id^=valid_user]{
|
||||
padding-left: 10px;
|
||||
span[id^=valid_user] {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.red{
|
||||
color: red;
|
||||
|
||||
.red {
|
||||
color: red;
|
||||
}
|
||||
.green{
|
||||
color: green;
|
||||
|
||||
.green {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.border_box {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
|
@ -218,7 +221,6 @@ body {
|
|||
border-style: solid;
|
||||
border-width: 1px;
|
||||
color: #222222;
|
||||
font-family: "Helvetica Neue";
|
||||
font-size: 1.2em;
|
||||
outline: medium none;
|
||||
padding: 8px;
|
||||
|
@ -1008,7 +1010,7 @@ div.issue {
|
|||
}
|
||||
|
||||
#ver-zebra1 td {
|
||||
padding: 8px ;
|
||||
padding: 8px;
|
||||
border-right: 1px solid #fff;
|
||||
border-left: 1px solid #fff;
|
||||
color: #669;
|
||||
|
@ -1134,9 +1136,153 @@ div.pagination {
|
|||
-o-transition: 1s width;
|
||||
transition: 1s width;
|
||||
}
|
||||
.all_browse_div table .description{
|
||||
border-bottom: 1px solid #efffff;
|
||||
|
||||
.all_browse_div table .description {
|
||||
border-bottom: 1px solid #efffff;
|
||||
}
|
||||
.all_browse_div table td{
|
||||
vertical-align: middle;
|
||||
|
||||
.all_browse_div table td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* softapplication show
|
||||
*******************************************************************************/
|
||||
.softapplication-img {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.softapplication-img {
|
||||
margin: 5px auto;
|
||||
width: 860px;
|
||||
max-height: 640px;
|
||||
overflow: hidden;
|
||||
box-shadow: 5px 5px 20px 5px #ccc;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.soft-application {
|
||||
width: 326px;
|
||||
height: 580px;
|
||||
}
|
||||
|
||||
.softapplication-img .title {
|
||||
width: 326px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.softapplication-img .title a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
padding: 20px;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.softapplication-img li {
|
||||
list-style-type: none;
|
||||
position: relative;
|
||||
float: left;
|
||||
width: 205px;
|
||||
-webkit-transition: all 0.5s;
|
||||
-moz-transition: all 0.5s;
|
||||
-ms-transition: all 0.5s;
|
||||
-o-transition: all 0.5s;
|
||||
transition: all 0.5s;
|
||||
box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.softapplication-img ul:hover li {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.softapplication-img ul li:hover {
|
||||
width: 326px;
|
||||
}
|
||||
|
||||
/* user_courses
|
||||
*******************************************************************************/
|
||||
.user_course_list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
margin-top: -15px;
|
||||
}
|
||||
|
||||
.user_course_list .menu{
|
||||
display: block;
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 2px 2px 0 0;
|
||||
position: relative;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
text-align: left;
|
||||
margin-left: -10px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.user_course_list .menu:after {
|
||||
content: ".";
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.user_course_list .menu ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: right;
|
||||
margin-right: 30px;
|
||||
}
|
||||
.user_course_list .menu ul {
|
||||
}
|
||||
|
||||
.user_course_list .menu li {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.user_course_list .menu li:hover {
|
||||
color: #00a1d6;
|
||||
}
|
||||
|
||||
.user_course_list .menu li.on {
|
||||
color: #00a1d6;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
.user_course_list .list_top {
|
||||
margin: 20px auto 0px;
|
||||
}
|
||||
|
||||
.user_course_list .created_course {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.user_course_list .created_course:after {
|
||||
content: ".";
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.user_course_list .created_course .field {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
color: rgb(213, 213, 213);
|
||||
top: 0;
|
||||
right: 5%;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue