diff --git a/Client.html b/Client.html index 5ba9775f1..fbb7cec52 100644 --- a/Client.html +++ b/Client.html @@ -1,4 +1,4 @@ - + @@ -8,15 +8,15 @@ Client <body> <hr /> - <h2>һͼƬ</h2> + <h2>这是一张图片</h2> <p>photo<a href="http://10.0.47.15:3000/shares/new?access_token='2d3dda45dsd'&comment='verygood'&title=davide&share_type=1&url=http://www.baidu.com"> Share A </a></p> <hr /> - <h2>һƵ</h2> + <h2>这是一段视频</h2> <p>Text<a href="http://10.0.47.15:3000/shares/new?access_token=2d3dda45dsd&comment=verygood&title=kaka&share_type=2&url=http://www.sina.com"> Share B </a></p> <hr /> - <h2>һƪ</h2> + <h2>这是一篇文章</h2> <p>Text<a href="http://10.0.47.15:3000/shares/new?access_token=2d3dda45dsd&comment=verygood&title=pepe&share_type=3&url=http://www.sina.com"> Share C </a></p> <hr /> diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index d6c90ccf4..51259bb5d 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -22,7 +22,6 @@ class AttachmentsController < ApplicationController before_filter :authorize_global, :only => :upload before_filter :login_without_softapplication, only: [:download] - accept_api_auth :show, :download, :upload def show @@ -125,7 +124,7 @@ class AttachmentsController < ApplicationController end respond_to do |format| - format.html { redirect_to_referer_or project_path(@project) } + format.html { redirect_to_referer_or forum_memo_path(@attachment.container.forum,@attachment.container) } format.js end end diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 01578eab3..2a0f97613 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -26,6 +26,13 @@ class HomeworkAttachController < ApplicationController #删除留言 def destroy @journal_destroyed = JournalsForMessage.delete_message(params[:object_id]) + #@homework = HomeworkAttach.find(params[:id]) + #@jours = @homework.journals_for_messages.order("created_on DESC") + #@limit = 10 + #@feedback_count = @jours.count + #@feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + #@offset ||= @feedback_pages.offset + #@jour = @jours[@offset, @limit] respond_to do |format| format.js end @@ -36,11 +43,11 @@ class HomeworkAttachController < ApplicationController @homework = HomeworkAttach.find(params[:jour_id]) @homework.addjours User.current.id, params[:new_form][:user_message],0 @jours = @homework.journals_for_messages.order("created_on DESC") - @limit = 10 - @feedback_count = @jours.count - @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] - @offset ||= @feedback_pages.offset - @jour = @jours[@offset, @limit] + #@limit = 10 + #@feedback_count = @jours.count + #@feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + #@offset ||= @feedback_pages.offset + #@jour = @jours[@offset, @limit] respond_to do |format| format.js end @@ -57,5 +64,27 @@ class HomeworkAttachController < ApplicationController #result = percent * 1.0 / stars_reates_count #result end + + #添加回复 + def add_jour_reply + parent_id = params[:reference_id] + author_id = User.current.id + reply_user_id = params[:reference_user_id] + reply_id = params[:reference_message_id] # 暂时不实现 + content = params[:user_notes] + options = {:user_id => author_id, + :m_parent_id => parent_id, + :m_reply_id => reply_id, + :reply_id => reply_user_id, + :notes => content, + :is_readed => false} + @jfm = JournalsForMessage.new(options) + @jfm.save + respond_to do |format| + format.js{ + @save_succ = true if @jfm.errors.empty? + } + end + end end diff --git a/app/controllers/homework_users_controller.rb b/app/controllers/homework_users_controller.rb new file mode 100644 index 000000000..cb55d965d --- /dev/null +++ b/app/controllers/homework_users_controller.rb @@ -0,0 +1,3 @@ +class HomeworkUsersController < ApplicationController + +end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 116ccd5d7..d9996e739 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -15,9 +15,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectsController < ApplicationController - # if @project.project_type == 1 - # layout 'base_projects'# by young layout :select_project_layout + menu_item :overview menu_item :roadmap, :only => :roadmap menu_item :settings, :only => :settings @@ -32,18 +31,7 @@ class ProjectsController < ApplicationController menu_item :feedback, :only => :feedback menu_item l(:label_course_file), :only => :index menu_item l(:label_course_news), :only => :index - # end - - # layout 'base_courses'# by young - # menu_item :overview - # menu_item l(:label_homework), :only => :homework - # menu_item :files, :only => :files -# - # layout 'base_courses' - # menu_item l(:label_homework), :only => homework - # menu_item l(:label_course_file), :only => files - # menu_item l(:label_settings), :only => settings before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise] # before_filter :authorize, :except => [:new_join, :new_homework, :homework, :statistics, :search, :watcherlist, :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :member, :focus, :file, @@ -52,11 +40,11 @@ class ProjectsController < ApplicationController before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen] before_filter :authorize_global, :only => [:new, :create] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar] - #by young - # before_filter :member, :file, :statistics, :watcherlist - # modified by fq before_filter :file, :statistics, :watcherlist - # + + # 除非项目内人员,不可查看成员, TODO: 完了写报表里去 + before_filter :memberAccess, only: :member + accept_rss_auth :index accept_api_auth :index, :show, :create, :update, :destroy @@ -89,27 +77,6 @@ class ProjectsController < ApplicationController ### added by william include ActsAsTaggableOn::TagsHelper - # Lists visible projects - # def index - # respond_to do |format| - # format.html { - # scope = Project - # unless params[:closed] - # scope = scope.active - # end - # @projects = scope.visible.order('lft').all - # } - # format.api { - # @offset, @limit = api_offset_and_limit - # @project_count = Project.visible.count - # @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all - # } - # format.atom { - # projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all - # render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") - # } - # end - # end def enterprise_course session[:enterprise_college] = 2 respond_to do |format| @@ -384,36 +351,6 @@ class ProjectsController < ApplicationController end #gcmend - # def search - # #modified by nie - # project_type = params[:project_type].to_i - # projects_all = (project_type.eql? Project::ProjectType_course) ? Project.course_entities : Project.project_entities - # @projects = projects_all.visible - # @projects = @projects.visible.like(params[:name]) if params[:name].present? - # @offset, @limit = api_offset_and_limit({:limit => 10}) - # @project_count = @projects.visible.count - # @project_pages = Paginator.new @project_count, @limit, params['page'] - # @offset ||= @project_pages.offset - # @projects = @projects.visible.offset(@offset).limit(@limit).all - # respond_to do |format| - # format.html { - # render :layout => 'base' - # scope = Project - # unless params[:closed] - # scope = scope.active - # end - # } - # format.api { - # # @offset, @limit = api_offset_and_limit - # # @project_count = Project.visible.count - # # @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all - # } - # format.atom { - # projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all - # render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") - # } - # end - # end # added by fq def new_join @@ -861,22 +798,7 @@ class ProjectsController < ApplicationController memberlist end - # def news - # if @project.project_type == 1 - # render :layout => 'base_courses' - # end - # end - def file - # if @project.project_type == 1 - # render :layout => 'base_courses' - # end - # @course_tag = params[:course] - # if @course_tag == '1' - # render :layout => 'base_courses' - # end - - # User.current end def statistics @@ -999,12 +921,8 @@ class ProjectsController < ApplicationController # end before_filter :toggleCourse, only: [:finishcourse, :restartcourse] - # TODO:#finishcourse and #restartcourse 没有设置权限,也就是说,任何人的调用都会关闭or重启课程。 # 最好通过用户与项目的权限解决这种事情。还没写 def finishcourse - #course_prefs = Course.find_by_extra(@project.identifier) - # setup_time = Time.parse(course_prefs.setup_time) - # end_time = Time.parse(course_prefs.endup_time) yesterday = Date.today.prev_day.to_time @course_prefs.endup_time = yesterday @@ -1016,7 +934,6 @@ class ProjectsController < ApplicationController end def restartcourse - #course_prefs = Course.find_by_extra(@project.identifier) day = Time.parse("3000-01-01") @course_prefs.endup_time = day @@ -1030,6 +947,14 @@ class ProjectsController < ApplicationController end private + + def memberAccess + # 是课程,则判断当前用户是否参加了课程 + return 0 if @project.project_type == Project::ProjectType_project + currentUser = User.current + render_403 unless currentUser.member_of?(@project) + end + def toggleCourse @course_prefs = Course.find_by_extra(@project.identifier) unless (@course_prefs.teacher == User.current || User.current.admin?) diff --git a/app/controllers/words_controller.rb b/app/controllers/words_controller.rb index c83c123fc..bfc1eacb4 100644 --- a/app/controllers/words_controller.rb +++ b/app/controllers/words_controller.rb @@ -193,7 +193,9 @@ class WordsController < ApplicationController elsif ( referer.match(/contests/) || referer.match(/contests/) ) #new added obj = Contest.find_by_id(obj_id) elsif ( referer.match(/softapplications/) || referer.match(/softapplications/) ) #new added - obj = Softapplication.find_by_id(obj_id) + obj = Softapplication.find_by_id(obj_id) + elsif ( referer.match(/homework_attach/) || referer.match(/homework_attach/) ) #new added + obj = HomeworkAttach.find_by_id(obj_id) else raise 'create reply obj unknow type.' end @@ -211,7 +213,9 @@ class WordsController < ApplicationController elsif obj.kind_of? Contest obj.add_jour(nil, nil, obj.id, options) #new added elsif obj.kind_of? Softapplication - obj.add_jour(nil, nil, obj.id, options) #new added + obj.add_jour(nil, nil, obj.id, options) #new added + elsif obj.kind_of? HomeworkAttach + obj.add_jour(nil, nil, obj.id, options) #new added else raise 'create reply obj unknow type.' end diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 35a907ecc..97cca617e 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -31,6 +31,31 @@ module CoursesHelper # searchStudent(project).count end + # garble count 混淆数量 + # alias projectCountOrigin projectCount + # def projectCount project + # count = projectCountOrigin project + # garble count + # end + + alias teacherCountOrigin teacherCount + def teacherCount project + count = teacherCountOrigin project + garble count + end + + alias studentCountOrigin studentCount + def studentCount project + count = studentCountOrigin project + garble count + end + + def garble count + count = count.round( 1-count.to_s.size ).to_i + return count.to_s if count.to_s.size.eql?(1) + count.to_s << '+' + end + # ===================================================================================== # return people list def searchTeacherAndAssistant project diff --git a/app/helpers/homework_users_helper.rb b/app/helpers/homework_users_helper.rb new file mode 100644 index 000000000..48a9a8e4f --- /dev/null +++ b/app/helpers/homework_users_helper.rb @@ -0,0 +1,2 @@ +module HomeworkUsersHelper +end diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb index e05f789a9..330010212 100644 --- a/app/helpers/welcome_helper.rb +++ b/app/helpers/welcome_helper.rb @@ -154,10 +154,11 @@ module WelcomeHelper sort_course_by_hot limit end - def find_all_new_hot_course limit = 9 + def find_all_new_hot_course limit = 9 ,school_id = 0 #sort_project_by_hot_rails 1, 'course_ac_para DESC', limit time_now = Time.new.strftime("%Y"); - Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ? and #{Project.table_name}.created_on like '%#{time_now}%'", 1).order("course_ac_para DESC").limit(limit).all + Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ? and #{Project.table_name}.created_on like '%#{time_now}%' and #{Project.table_name}.identifier not in + (select extra from courses where school_id = ?)", 1,school_id).order("course_ac_para DESC").limit(limit).all end def find_all_hot_bid diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb index d112ead50..e395e65e5 100644 --- a/app/models/homework_attach.rb +++ b/app/models/homework_attach.rb @@ -1,8 +1,12 @@ class HomeworkAttach < ActiveRecord::Base include Redmine::SafeAttributes + + #attr_accessible :name, :description, :state, :user_id, :bid_id + belongs_to :user belongs_to :bid has_many :journals_for_messages, :as => :jour, :dependent => :destroy + has_many :homework_users, :dependent => :destroy seems_rateable :allow_update => true, :dimensions => :quality safe_attributes "bid_id", @@ -24,4 +28,10 @@ class HomeworkAttach < ActiveRecord::Base result = percent * 1.0 / stars_reates.count result end + + def add_jours options + jfm = self.journals_for_messages.build(options) + jfm.save + jfm + end end diff --git a/app/models/homework_user.rb b/app/models/homework_user.rb new file mode 100644 index 000000000..da7e65afb --- /dev/null +++ b/app/models/homework_user.rb @@ -0,0 +1,6 @@ +class HomeworkUser < ActiveRecord::Base + attr_accessible :homework_attach_id, :user_id + + belongs_to :homework_attach + has_one :user +end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 575737401..7356b7373 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -74,7 +74,8 @@ class JournalsForMessage < ActiveRecord::Base def self.reference_message(user_id) @user = User.find(user_id) - message = JournalsForMessage.find_by_sql("select * from journals_for_messages where reply_id = #{@user.id} or (jour_type = 'Bid' and jour_id in (select id from bids where author_id = #{@user.id}))") + message = JournalsForMessage.find_by_sql("select * from journals_for_messages where reply_id = #{@user.id} + or (jour_type = 'Bid' and jour_id in (select id from bids where author_id = #{@user.id}))") message end diff --git a/app/models/user.rb b/app/models/user.rb index d16d790d2..840275794 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -68,6 +68,8 @@ class User < Principal ['none', :label_user_mail_option_none] ] + has_one :homework_user + has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} has_many :changesets, :dependent => :nullify diff --git a/app/views/bids/_homework_form.html.erb b/app/views/bids/_homework_form.html.erb index 6d9230a91..5aa3462fa 100644 --- a/app/views/bids/_homework_form.html.erb +++ b/app/views/bids/_homework_form.html.erb @@ -37,5 +37,5 @@ <p><%= hidden_field_tag 'course_id', @project_id %> </p> <fieldset><legend><%= l(:label_attachment_plural) %></legend> -<p><%= render :partial => 'attachments/form', :locals => {:container => @bid} %></p> +<div class="tabDiv"><%= render :partial => 'attachments/form', :locals => {:container => @bid} %></div> </fieldset> \ No newline at end of file diff --git a/app/views/contests/show_attendingcontest.html.erb b/app/views/contests/show_attendingcontest.html.erb index 8a00f12ae..d63c4f816 100644 --- a/app/views/contests/show_attendingcontest.html.erb +++ b/app/views/contests/show_attendingcontest.html.erb @@ -85,12 +85,12 @@ <!--点击新建参赛作品弹出框--> <div id="put-project-form" style="display: none; padding-left: 83px; width: 70%"> <%= form_for Softapplication.new, :remote=>true, :url => softapplications_path, :complete => '$("#put-bid-form").hide();' do |f| %> - <fieldset class="contes-new-box", style="padding-left: 36px"> + <fieldset style="padding-left: 36px" class="contes-new-box"> <tr style="width:700px; margin-left: -10px"> <span><%= l(:label_softapplication_name) %></span> <span class="contest-star"> * </span>: <td ><%= f.text_field :name, :required => true, :size => 60, :style => "width:400px;" %></td> - </tr></ br> + </tr><br/> <br /> <br /> @@ -98,7 +98,7 @@ <span><%= l(:label_softapplication_version_available) %></span> <span class="contest-star"> * </span>: <td style="width: 100px"><%= f.text_field :android_min_version_available, :required => true, :size => 60, :style => "width:400px;" %></td> - </tr></ br> + </tr><br/> <br /> <br /> @@ -107,7 +107,7 @@ <span class="contest-star"> * </span>: <td style="width: 100px"><%= f.text_field :app_type_name, :required => true, :size => 60, :style => "width:400px;" %></td> - </tr></ br> + </tr><br/> <br /> <br /> @@ -115,7 +115,7 @@ <span><%= l(:label_softapplication_description) %></span> <span class="contest-star"> * </span>: <td style="width: 100px"><%= f.text_field :description, :required => true, :size => 60, :style => "width:400px;" %></td> - </tr></ br> + </tr><br/> <br /> <br /> @@ -123,11 +123,11 @@ <span><%= l(:label_softapplication_developers) %></span> <span class="contest-star"> * </span>: <td style="width: 100px"><%= f.text_field :application_developers, :required => true, :size => 60, :style => "width:400px;" %></td> - </tr></ br> + </tr><br/> <br /> <br /> - <fieldset style="width: 500px", style="padding-top: 10px"> + <fieldset style="width: 500px; padding-top: 10px"> <legend> 上传应用软件包和应用截图 </legend> @@ -146,7 +146,7 @@ </fieldset> </fieldset></br> - <div class="align-center", style="padding-top: -3px; padding-bottom: 8px"> + <div class="align-center" style="padding-top: -3px; padding-bottom: 8px"> <%= submit_tag l(:button_create), :onclick => "cancel();" %> </div> <% end %> diff --git a/app/views/homework_attach/_add_jour_reply.html.erb b/app/views/homework_attach/_add_jour_reply.html.erb new file mode 100644 index 000000000..1e202e6a4 --- /dev/null +++ b/app/views/homework_attach/_add_jour_reply.html.erb @@ -0,0 +1,14 @@ + +<%= form_tag({:controller => 'homework_attach', :action => 'add_jour_reply'}, :remote => true) do %> +<%= text_area_tag 'user_notes', "", :class => 'noline', + :style => "resize: none;", :rows => 4, + :placeholder => l(:label_projects_feedback_respond_content), + :maxlength => 250 %> +<span style="float: left; margin-top: 1px; margin-right: 4px;"></span> +<%= hidden_field_tag 'reference_id', params[:reference_id], :value => journal.id %> +<%= hidden_field_tag 'reference_user_id', params[:reference_user_id], :value => m_reply_id.user.id %> +<%= hidden_field_tag 'reference_message_id', params[:reference_message_id], :value => m_reply_id.id %> +<%= submit_tag l(:button_projects_feedback_respond), + :name => nil , :class => "enterprise", :style => "float: right; margin-top: 1px; margin-right: 4px;"%> + +<% end %> \ No newline at end of file diff --git a/app/views/homework_attach/_jour_reply.html.erb b/app/views/homework_attach/_jour_reply.html.erb new file mode 100644 index 000000000..0dd56f442 --- /dev/null +++ b/app/views/homework_attach/_jour_reply.html.erb @@ -0,0 +1,6 @@ +<% id = "journal_reply_ul_" + journal.id.to_s%> +<ul class="messages-for-user-reply" id = '<%= id %>' > + <% journal.children.each do |reply|%> + <%= render :partial => "journal_reply_items", :locals => {:reply => reply, :journal => journal, :m_reply_id => reply} %> + <% end %> +</ul> \ No newline at end of file diff --git a/app/views/homework_attach/_journal_reply_items.html.erb b/app/views/homework_attach/_journal_reply_items.html.erb new file mode 100644 index 000000000..85f7fa304 --- /dev/null +++ b/app/views/homework_attach/_journal_reply_items.html.erb @@ -0,0 +1,34 @@ +<% reply_allow = JournalsForMessage.create_by_user? User.current %> +<% ids_r = 'reply_respond_form_'+ reply.id.to_s %> +<li id='word_li_<%=reply.id.to_s%>' onmouseover="$('#<%= ids_r %>').show()" onmouseout="$('#<%= ids_r %>').hide()"> + <span class="portrait"> + <%= image_tag url_to_avatar(reply.user), :class => "avatar-3" %> + </span> + <div class="message-body"> + <% id = 'project_respond_form_'+ reply.id.to_s %> + <p> + <span><%= link_to reply.user.name, user_path(reply.user) %>: </span> + <span class="message-notes"> <%= reply.notes %></span> + </p> + <p> + <span class="time"><%= format_time reply.created_on %></span> + <span style="display: none; margin-left: 4px;" id='<%=ids_r%>' > + <% if reply_allow %> + <%= link_to l(:label_projects_feedback_respond),'', + {:focus => 'project_respond', :onclick => "toggleAndSettingWordsVal($('##{id}'), $('##{id} textarea'), '#{l(:label_reply_plural)} #{m_reply_id.user.name}: '); return false;"} + %> + <% end %> + <% if @user == User.current || User.current.admin? || reply.user.id == User.current.id %> + <%= link_to(l(:label_newfeedback_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => reply, :user_id => reply.user}, + :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %> + <% end %> + </span> + </p> + </div> + <div id='<%=id %>' class="respond-form"> + <% if reply_allow %> + <%= render :partial => "add_jour_reply", :locals => {:journal => journal, :m_reply_id => m_reply_id} %> + <% end %> + </div> + <div style="clear: both;"></div> +</li> \ No newline at end of file diff --git a/app/views/homework_attach/_showjour.html.erb b/app/views/homework_attach/_showjour.html.erb index f810082c9..dbd7f2547 100644 --- a/app/views/homework_attach/_showjour.html.erb +++ b/app/views/homework_attach/_showjour.html.erb @@ -40,24 +40,33 @@ <% for journal in jour%> <li id='word_li_<%= journal.id.to_s %>' class="outer-message-for-user"> <span class="portrait"><%= image_tag(url_to_avatar(journal.user), :class => "avatar") %></span> - <span class="body"> - <span class="user"><%= link_to journal.user, user_path(journal.user)%></span> - <span class="font_lighter"><% label = l(:label_contest_requirement) %></span> - <div> <%= textilizable journal.notes%> </div> - <span class="font_lighter"><%= l(:label_bids_published) %> -  <%= time_tag(journal.created_on).html_safe %>  - <%= l(:label_bids_published_ago) %> + <span class="body"> + <span class="user"><%= link_to journal.user, user_path(journal.user)%></span> + <span class="font_lighter"><% label = l(:label_contest_requirement) %></span> + <div> <%= textilizable journal.notes%> </div> + <span class="font_lighter"><%= l(:label_bids_published) %> +  <%= time_tag(journal.created_on).html_safe %>  + <%= l(:label_bids_published_ago) %> + </span> + <% ids = 'project_respond_form_'+ journal.id.to_s%> + <span> + <%= link_to l(:label_projects_feedback_respond),'', + {:focus => 'project_respond', :onclick => "toggleAndSettingWordsVal($('##{ids}'), $('##{ids} textarea'), '#{l(:label_reply_plural)} #{journal.user.name}: '); $('##{ids} textarea') ;return false;"} + %> + <% if journal.user==User.current|| User.current.admin? %> + <%= link_to(l(:label_bid_respond_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => journal, :user_id => journal.user}, + :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %> + <% end %> + </span> </span> - <% ids = 'project_respond_form_'+ journal.id.to_s%> - <span> - - <% if journal.user==User.current|| User.current.admin? %> - <%= link_to(l(:label_bid_respond_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => journal, :user_id => journal.user}, - :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %> - <% end %> - </span> - </span> <div style="clear: both;"></div> + <div id='<%= ids %>' class="respond-form"> + <%= render :partial => 'add_jour_reply', :locals => {:journal => journal, :m_reply_id => journal} %> + </div> + <div style="clear: both;"></div> + <div> + <%= render :partial => "jour_reply", :locals => {:journal => journal } %> + </div> </li> <% end %> </ul> diff --git a/app/views/homework_attach/add_jour_reply.js.erb b/app/views/homework_attach/add_jour_reply.js.erb new file mode 100644 index 000000000..564229d81 --- /dev/null +++ b/app/views/homework_attach/add_jour_reply.js.erb @@ -0,0 +1,14 @@ +<% if @save_succ %> +var pre_append = $('<%= j( + render :partial => "journal_reply_items", + :locals => {:reply => @jfm, :journal => @jfm.parent, :m_reply_id => @jfm} + ) %>').hide(); +$('#journal_reply_ul_<%=@jfm.m_parent_id%>').append(pre_append); +pre_append.fadeIn(600); +var textarea = $('#project_respond_form_<%=@jfm.m_reply_id.to_s%> textarea'); +textarea.val(''); +$('#project_respond_form_<%=@jfm.m_reply_id.to_s%>').hide(); +setMaxLengthItem(pre_append.find('textarea')[0]); +<% else %> +alert("<%= l(:label_feedback_fail) %>"); +<% end %> \ No newline at end of file diff --git a/app/views/homework_attach/addjours.js.erb b/app/views/homework_attach/addjours.js.erb index e463237e5..e0f32581e 100644 --- a/app/views/homework_attach/addjours.js.erb +++ b/app/views/homework_attach/addjours.js.erb @@ -1,4 +1,4 @@ -$('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour =>@jour, :state => false} )) %>'); +$('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour =>@jours, :state => false} )) %>'); $('#pre_show').html('<%= escape_javascript(render(:partial => 'pre_show', :locals => {:content => nil})) %>'); $('#new_form_user_message').val(""); $('#new_form_reference_user_id').val(""); \ No newline at end of file diff --git a/app/views/homework_attach/destroy.js.erb b/app/views/homework_attach/destroy.js.erb index f3d9a7bef..22f7fc048 100644 --- a/app/views/homework_attach/destroy.js.erb +++ b/app/views/homework_attach/destroy.js.erb @@ -1,11 +1,8 @@ <% if @journal_destroyed.nil? %> alert('<%=l(:notice_failed_delete)%>'); -<% elsif (['Principal','Project', 'Bid', 'Contest', 'Softapplication','HomeworkAttach'].include? @journal_destroyed.jour_type)%> - var destroyedItem = $('#word_li_<%=@journal_destroyed.id%>') - destroyedItem.fadeOut(600,function(){ - destroyedItem.remove(); - }); <% else %> - $('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour => @jour, :state => false})) %>'); - $('#new_form_reference_user_id').val(""); + var destroyedItem = $('#word_li_<%=@journal_destroyed.id%>') + destroyedItem.fadeOut(600,function(){ + destroyedItem.remove(); + }); <% end %> diff --git a/app/views/layouts/_base_footer.html.erb b/app/views/layouts/_base_footer.html.erb index ee7bcecf0..baf438cb2 100644 --- a/app/views/layouts/_base_footer.html.erb +++ b/app/views/layouts/_base_footer.html.erb @@ -1,6 +1,6 @@ <!--add by huang--> <div class="clearfix"></div> -<div id="footer" style="margin-left:-5px;padding-top: 150px;clear: both;font-size: 12px;"> +<div id="footer" style="margin-left:-5px;padding-top: 20px;clear: both;font-size: 12px;"> <div style="border-top:solid 1px #C6E9F1;"></div> <div class="base_footer"> <div align="center"> diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index 41e0c2a12..bbdfbfe66 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -1,257 +1,270 @@ <% @nav_dispaly_course_label = 1 %> <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="utf-8"> - <title><%= h html_title %> - - - <%= csrf_meta_tag %> - <%= favicon %> - <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', 'nyan', :media => 'all' %> - <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> - <%= javascript_heads %> - <%= javascript_include_tag "jquery.leanModal.min" %> - <%= heads_for_theme %> - <%= call_hook :view_layouts_base_html_head %> - - <%= yield :header_tags -%> - - - -
-
-
- <%= render :partial => 'layouts/base_header'%> -
- -
- <% @project = Project.find_by_id(@project.id)%> - <% @course = Course.find_by_extra(@project.identifier)%> - - - - - - - - - - -
高校课程实践社区<%= l(:label_user_location) %> : - -
<%=link_to request.host()+"/course", :controller => 'projects', :action => 'course' %>

<%=link_to "主页", home_path %> > <%=link_to l(:label_course_practice), :controller => 'projects', :action => 'course' %> > <%=link_to @project.name, nil %>

-
- - - +
+
+
+
    +
  • + <%= link_to l(:label_course_overview), project_path(@project), :class => link_class(:overview) %> +
  • +
  • + <%= link_to l(:label_homework), homework_project_path(@project), :class => link_class(:homework), :project_type => 1 %> +
  • +
  • + <%= link_to l(:label_course_file), project_files_path(@project), :class => link_class(:files) %> +
  • +
  • + <%= link_to l(:label_course_news), {:controller => 'news', :action => 'index', :project_id => @project}, :class => link_class(:news) %> +
  • +
  • + <%= link_to l(:label_course_board), {:controller => 'boards', :action => 'index', :project_id => @project}, :class => link_class(:boards) %> +
  • +
  • + <%= link_to l(:label_course_feedback), project_feedback_path(@project), :class => link_class(:feedback) %> +
  • + + <% if User.current.logged? && (User.current.admin? || (!Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.roles&Role.where('id = ? or id = ?', 7, 9)).size >0)) %> -
    -
-
-
-
-
    -
  • - <%= link_to l(:label_course_overview), project_path(@project), :class => link_class(:overview) %> -
  • -
  • - <%= link_to l(:label_homework), homework_project_path(@project), :class => link_class(:homework) ,:project_type => 1 %> -
  • -
  • - <%= link_to l(:label_course_file), project_files_path(@project), :class => link_class(:files)%> -
  • -
  • - <%= link_to l(:label_course_news), {:controller => 'news', :action => 'index', :project_id => @project}, :class => link_class(:news) %> -
  • -
  • - <%= link_to l(:label_course_board), { :controller => 'boards', :action => 'index', :project_id => @project}, :class => link_class(:boards) %> -
  • -
  • - <%= link_to l(:label_course_feedback), project_feedback_path(@project), :class => link_class(:feedback)%> -
  • - - <% if User.current.logged? && (User.current.admin? || (!Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.roles&Role.where('id = ? or id = ?', 7, 9)).size >0))%> + <% end %> +
+
+ <%= render_flash_messages %> + <%= yield %> + <%= call_hook :view_layouts_base_content %> +
+ - <% end %> - -
- <%= render_flash_messages %> - <%= yield %> - <%= call_hook :view_layouts_base_content %> -
- - -
- - <%= render :partial => 'layouts/base_footer'%> -
- - -
- - <%= call_hook :view_layouts_base_body_bottom %> - + + +<%= render :partial => 'layouts/base_footer' %> + + + + + +<%= call_hook :view_layouts_base_body_bottom %> + \ No newline at end of file diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index 5c6f24524..99971e0f3 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -66,7 +66,7 @@ <%= link_to(l(:label_user_edit), my_account_path(@user)) if User.current %> <% end %> - + <% messages_count = @user.messages.count %> <% messages_score = messages_count * 0.05%> @@ -158,9 +158,12 @@ <%= l(:label_user_login) %>:<%= format_time(@user.last_login_on) %> + + <% unless @user.user_extensions.nil? %> diff --git a/app/views/mailer/journals_for_message_add.html.erb b/app/views/mailer/journals_for_message_add.html.erb index d6c0bc482..bd2a36440 100644 --- a/app/views/mailer/journals_for_message_add.html.erb +++ b/app/views/mailer/journals_for_message_add.html.erb @@ -1,4 +1,4 @@ -尊敬的用户,<%= @user %>(<%= @user.mail%>)给你留言了: +尊敬的用户,<%= @user %>给你留言了:
<%= @message %>

点击链接查看最新回复<%= link_to(@url, @url) %>

diff --git a/app/views/mailer/journals_for_message_add.text.erb b/app/views/mailer/journals_for_message_add.text.erb index ae405d06d..5eb47ef3b 100644 --- a/app/views/mailer/journals_for_message_add.text.erb +++ b/app/views/mailer/journals_for_message_add.text.erb @@ -1,3 +1,3 @@ -尊敬的用户,<%= @user %>(<%= @user.mail%>)给你留言了: +尊敬的用户,<%= @user %>给你留言了: <%= @message %> 点击链接查看最新回复<%= link_to(@url, @url) %> diff --git a/app/views/users/show_old.html.erb b/app/views/users/show_old.html.erb index 9ce6c160f..d2de97b05 100644 --- a/app/views/users/show_old.html.erb +++ b/app/views/users/show_old.html.erb @@ -6,7 +6,7 @@
-
+
<%= image_tag '/images/transparent.png', size: "75x75" %>
-
+
<%= l(:label_welcome_trustie) %><%= l(:label_welcome_trustie_contest) %> , <%= l(:label_welcome_trustie_contest_description) %>
@@ -241,7 +256,7 @@
- +<%= render partial: 'link_to_another' %> diff --git a/app/views/welcome/course.html.erb b/app/views/welcome/course.html.erb index eef2401f8..06269665e 100644 --- a/app/views/welcome/course.html.erb +++ b/app/views/welcome/course.html.erb @@ -5,8 +5,22 @@ $(function(){ $("#main").find("a").attr("target", "_blank"); + setCss(); }); + //设置div居中 + function setCss() + { + var mainBar = $('#main-content-bar')[0]; + var topHeight = mainBar.offsetHeight; + var welcomeLeft = $('#welcome_left')[0]; + var leftHeight = welcomeLeft.offsetHeight; + var searchbar = $('#search-bar')[0]; + var searchHeight = searchbar.offsetHeight; + welcomeLeft.style.marginTop = (topHeight - leftHeight)/2 + "px"; + searchbar.style.marginTop = (topHeight - searchHeight)/2 + "px"; + //alert((topHeight - leftHeight)/2 ); + } // 给主页用户弹新页面 $(document).ready(function($) { $("#loggedas").find("a").attr("target", "_blank"); @@ -19,13 +33,12 @@ <%= image_tag '/images/qrweixin.jpg', size: '150x150', alt: 'trustie', class: "weixin" %>
微信扫码
-
+
<%= image_tag(@logoLink, size:'75x75') %>
-
-
+
<% if params[:school_id].nil? and User.current.user_extensions.school.nil? %> <% else%> <% if params[:school_id] == "0" %> @@ -48,7 +61,7 @@ <% end %> <% end %>
- \ No newline at end of file +
+<%= render partial: 'link_to_another' %> \ No newline at end of file diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 0a69b1f78..fcdce62e8 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -4,8 +4,21 @@ $(function(){ $("#main").find("a").attr("target", "_blank"); + setCss(); }); - + //设置div居中 + function setCss() + { + var mainBar = $('#main-content-bar')[0]; + var topHeight = mainBar.offsetHeight; + var welcomeLeft = $('#welcome_left')[0]; + var leftHeight = welcomeLeft.offsetHeight; + var searchbar = $('#search-bar')[0]; + var searchHeight = searchbar.offsetHeight; + welcomeLeft.style.marginTop = (topHeight - leftHeight)/2 + "px"; + searchbar.style.marginTop = (topHeight - searchHeight)/2 + "px"; + //alert((topHeight - leftHeight)/2 ); + } // 给主页用户弹新页面 $(document).ready(function($) { $("#loggedas").find("a").attr("target", "_blank"); @@ -18,14 +31,14 @@ <%= link_to image_tag('/images/qrweixin.jpg', size: '150x150', alt: 'trustie', class: "weixin" ), home_path %>
微信扫码
-
+
<%= image_tag '/images/transparent.png', size: "75x75" %>
-
+
<%= l(:label_welcome_trustie) %><%= l(:label_welcome_trustie_project) %> , <%= l(:label_welcome_trustie_project_description) %>
-
+<%= render partial: 'link_to_another' %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 58e1475c2..14a750743 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -16,14 +16,21 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. RedmineApp::Application.routes.draw do + resources :homework_users + + resources :no_uses delete 'no_uses', :to => 'no_uses#delete' resources :apply_project_masters delete 'apply_project_masters', :to => 'apply_project_masters#delete' - resources :homework_attach - match 'homework_attach/addjours', :controller => 'homework_attach', :action => 'addjours', :via => [:get,:post] + resources :homework_attach do + collection do + match 'addjours', via: [:get, :post] + match 'add_jour_reply', via: [:get,:post] + end + end resources :open_source_projects do collection do match 'search', via: [:get, :post] diff --git a/db/migrate/20140519054846_create_homework_users.rb b/db/migrate/20140519054846_create_homework_users.rb new file mode 100644 index 000000000..46f033436 --- /dev/null +++ b/db/migrate/20140519054846_create_homework_users.rb @@ -0,0 +1,10 @@ +class CreateHomeworkUsers < ActiveRecord::Migration + def change + create_table :homework_users do |t| + t.string :homework_attach_id + t.string :user_id + + t.timestamps + end + end +end diff --git a/db/migrate/20140519070751_add_name_to_homework_attach.rb b/db/migrate/20140519070751_add_name_to_homework_attach.rb new file mode 100644 index 000000000..f819b51d2 --- /dev/null +++ b/db/migrate/20140519070751_add_name_to_homework_attach.rb @@ -0,0 +1,7 @@ +class AddNameToHomeworkAttach < ActiveRecord::Migration + def change + add_column :homework_attaches, :name, :string + add_column :homework_attaches, :description, :string + add_column :homework_attaches, :state, :int + end +end diff --git a/db/schema.rb b/db/schema.rb index 74310a946..4c60942a3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20140509020307) do +ActiveRecord::Schema.define(:version => 20140519070751) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,14 +52,11 @@ ActiveRecord::Schema.define(:version => 20140509020307) do add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" - create_table "attachmentstypes", :id => false, :force => true do |t| - t.integer "id", :null => false - t.integer "typeId" + create_table "attachmentstypes", :force => true do |t| + t.integer "typeId", :null => false t.string "typeName", :limit => 50 end - add_index "attachmentstypes", ["id"], :name => "id" - create_table "auth_sources", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false @@ -325,9 +322,12 @@ ActiveRecord::Schema.define(:version => 20140509020307) do create_table "homework_attaches", :force => true do |t| t.integer "bid_id" t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "reward" + t.string "name" + t.string "description" + t.integer "state" end create_table "homework_for_courses", :force => true do |t| @@ -335,6 +335,13 @@ ActiveRecord::Schema.define(:version => 20140509020307) do t.integer "bid_id" end + create_table "homework_users", :force => true do |t| + t.string "homework_attach_id" + t.string "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "issue_categories", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.string "name", :limit => 30, :default => "", :null => false diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 1a1c1b2ea..8e0a81cf6 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -1769,6 +1769,14 @@ p.pagination {margin-top:8px; font-size: 90%} clear:left; } +.tabular .tabDiv{ + margin: 0; + padding: 3px 0 3px 0; + padding-left: 100px; /* width of left column containing the label elements *//*by young*/ + /*min-height: 1.8em;*/ + clear:left; +} + html>body .tabular p {overflow:hidden;} .tabular label{ @@ -1830,7 +1838,7 @@ span.required {color: #bb0000;} .summary {font-style: italic;} #attachments_fields input.description {margin-left:4px; width:100px; } -#attachments_fields span {display:block; white-space:nowrap; font-family:'微软雅黑';} +#attachments_fields span .boldSpan{display:block; white-space:nowrap; font-family:'微软雅黑';} #attachments_fields input.filename {border:0; height:1.8em; width:150px; color:#555; background-color:inherit; background:url(../images/attachment.png) no-repeat 1px 50%; padding-left:18px;}/*Modified by young*/ #attachments_fields .ajax-waiting input.filename {background:url(../images/hourglass.png) no-repeat 0px 50%;} #attachments_fields .ajax-loading input.filename {background:url(../images/loading.gif) no-repeat 0px 50%;} diff --git a/public/stylesheets/welcome.css b/public/stylesheets/welcome.css index f7756e5b8..5ee72add5 100644 --- a/public/stylesheets/welcome.css +++ b/public/stylesheets/welcome.css @@ -3,6 +3,20 @@ */ /************************** 某部分开始 *****************************/ /************************** 某部分结束 *****************************/ + +/************************** 页脚 footer 开始 *****************************/ +.linkother{ + width: 460px; + margin: 70px auto -35px ; +} +.link_other_item{ + width: 150px; + text-align: center; + display: inline-block; + font-size: 14px; +} +/************************** 页脚 footer 结束 *****************************/ + .top_bar{ height: auto; } @@ -312,11 +326,11 @@ a.attachments_list_color { } .main-content-bar{ margin: 0; - margin-top: 35px; + margin-top: 12px; padding: 0; - margin-bottom: 35px; - width: 100%; - height: auto; + margin-bottom: 2px; + width: 100%; + height: 78; } .weixin-content{ diff --git a/test/fixtures/homework_users.yml b/test/fixtures/homework_users.yml new file mode 100644 index 000000000..bec69e598 --- /dev/null +++ b/test/fixtures/homework_users.yml @@ -0,0 +1,9 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html + +one: + homework_attach_id: MyString + user_id: MyString + +two: + homework_attach_id: MyString + user_id: MyString